From 2914f46773171f4fa13e276df1135bafef677801 Mon Sep 17 00:00:00 2001 From: Sean Liao Date: Wed, 5 Mar 2025 20:22:11 +0000 Subject: [PATCH 1/8] websocket: re-recommend gorilla/websocket Undoes CL 457356 now that it has new maintainers. Change-Id: I4e05c72d5dec98f7893e6bea38db19916fc03bbb Reviewed-on: https://go-review.googlesource.com/c/net/+/655195 LUCI-TryBot-Result: Go LUCI Reviewed-by: Ian Lance Taylor Reviewed-by: Damien Neil Auto-Submit: Damien Neil --- websocket/websocket.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/websocket/websocket.go b/websocket/websocket.go index ac76165ceb..3448d20395 100644 --- a/websocket/websocket.go +++ b/websocket/websocket.go @@ -6,9 +6,10 @@ // as specified in RFC 6455. // // This package currently lacks some features found in an alternative -// and more actively maintained WebSocket package: +// and more actively maintained WebSocket packages: // -// https://pkg.go.dev/github.com/coder/websocket +// - [github.com/gorilla/websocket] +// - [github.com/coder/websocket] package websocket // import "golang.org/x/net/websocket" import ( From 55989e24b972a90ab99308fdc7ea1fb58a96fef1 Mon Sep 17 00:00:00 2001 From: Sean Liao Date: Thu, 6 Mar 2025 22:55:17 +0000 Subject: [PATCH 2/8] http2/h2c: use ResponseController for hijacking connections Fixes golang/go#71999 Change-Id: I38b236e47bc5893c5a84ef33abbeab0828125bd2 Reviewed-on: https://go-review.googlesource.com/c/net/+/655615 Reviewed-by: Junyang Shao Reviewed-by: Damien Neil LUCI-TryBot-Result: Go LUCI --- http2/h2c/h2c.go | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/http2/h2c/h2c.go b/http2/h2c/h2c.go index 2d6bf861b9..19e94791df 100644 --- a/http2/h2c/h2c.go +++ b/http2/h2c/h2c.go @@ -132,11 +132,8 @@ func (s h2cHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // of the body, and reforward the client preface on the net.Conn this function // creates. func initH2CWithPriorKnowledge(w http.ResponseWriter) (net.Conn, error) { - hijacker, ok := w.(http.Hijacker) - if !ok { - return nil, errors.New("h2c: connection does not support Hijack") - } - conn, rw, err := hijacker.Hijack() + rc := http.NewResponseController(w) + conn, rw, err := rc.Hijack() if err != nil { return nil, err } @@ -163,10 +160,6 @@ func h2cUpgrade(w http.ResponseWriter, r *http.Request) (_ net.Conn, settings [] if err != nil { return nil, nil, err } - hijacker, ok := w.(http.Hijacker) - if !ok { - return nil, nil, errors.New("h2c: connection does not support Hijack") - } body, err := io.ReadAll(r.Body) if err != nil { @@ -174,7 +167,8 @@ func h2cUpgrade(w http.ResponseWriter, r *http.Request) (_ net.Conn, settings [] } r.Body = io.NopCloser(bytes.NewBuffer(body)) - conn, rw, err := hijacker.Hijack() + rc := http.NewResponseController(w) + conn, rw, err := rc.Hijack() if err != nil { return nil, nil, err } From 09731f9bf919b00b344c763894cd1920b3d96d90 Mon Sep 17 00:00:00 2001 From: Hubert Grochowski Date: Wed, 8 Jan 2025 14:39:34 +0000 Subject: [PATCH 3/8] http2: improve handling of lost PING in Server This addresses inconsistencies in handling lost PINGs between Server and Transport by: 1. Always logging a message for lost PINGs, regardless of verbose mode. 2. Invoking CountError with the conn_close_lost_ping error key. Fixes golang/go#69963 Change-Id: I58fee489f7896dbb80ccc50265452cd953f7ca6b GitHub-Last-Rev: ef74c9577a4005018c2303810947d2da4f5b4ca6 GitHub-Pull-Request: golang/net#229 Reviewed-on: https://go-review.googlesource.com/c/net/+/635555 Auto-Submit: Sean Liao LUCI-TryBot-Result: Go LUCI Reviewed-by: Sean Liao Reviewed-by: Damien Neil Reviewed-by: David Chase --- http2/server.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/http2/server.go b/http2/server.go index b640deb0e0..51fca38f61 100644 --- a/http2/server.go +++ b/http2/server.go @@ -1068,7 +1068,10 @@ func (sc *serverConn) serve(conf http2Config) { func (sc *serverConn) handlePingTimer(lastFrameReadTime time.Time) { if sc.pingSent { - sc.vlogf("timeout waiting for PING response") + sc.logf("timeout waiting for PING response") + if f := sc.countErrorFunc; f != nil { + f("conn_close_lost_ping") + } sc.conn.Close() return } From 312450e473eae9f9e6173ad895c80bc5ea2f79ad Mon Sep 17 00:00:00 2001 From: Pukki Date: Thu, 6 Mar 2025 15:22:12 -0300 Subject: [PATCH 4/8] html: ensure tag closes

and update tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change ensures that the tag correctly closes an open

tag when encountered during parsing. Changes: - Added to the list of elements that should close an open

tag in parse.go. - Updated the second list in parse.go to ensure consistency. - Updated html/atom/gen.go, table.go, and table_test.go accordingly. - Modified parse_test.go to use strings.Builder instead of bytes.Buffer. - Updated test error messages to follow Go’s conventions. - Fixed an accidental colon in the comment in parse.go. Change-Id: I5835da69f6bb0e14c483e55b7ae82915ae958dc1 Reviewed-on: https://go-review.googlesource.com/c/net/+/655457 Reviewed-by: Damien Neil Reviewed-by: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI Auto-Submit: Ian Lance Taylor --- html/atom/gen.go | 1 + html/atom/table.go | 1256 ++++++++++++++++++++------------------- html/atom/table_test.go | 1 + html/parse.go | 4 +- html/parse_test.go | 17 + 5 files changed, 650 insertions(+), 629 deletions(-) diff --git a/html/atom/gen.go b/html/atom/gen.go index 1e249d163c..42b84cbf10 100644 --- a/html/atom/gen.go +++ b/html/atom/gen.go @@ -540,6 +540,7 @@ var attributes = []string{ "scope", "scoped", "seamless", + "search", "selected", "shape", "size", diff --git a/html/atom/table.go b/html/atom/table.go index 2a938864cb..b460e6f722 100644 --- a/html/atom/table.go +++ b/html/atom/table.go @@ -11,23 +11,23 @@ const ( AcceptCharset Atom = 0x1a0e Accesskey Atom = 0x2c09 Acronym Atom = 0xaa07 - Action Atom = 0x27206 - Address Atom = 0x6f307 + Action Atom = 0x26506 + Address Atom = 0x6f107 Align Atom = 0xb105 - Allowfullscreen Atom = 0x2080f + Allowfullscreen Atom = 0x3280f Allowpaymentrequest Atom = 0xc113 Allowusermedia Atom = 0xdd0e Alt Atom = 0xf303 Annotation Atom = 0x1c90a AnnotationXml Atom = 0x1c90e - Applet Atom = 0x31906 - Area Atom = 0x35604 - Article Atom = 0x3fc07 + Applet Atom = 0x30806 + Area Atom = 0x35004 + Article Atom = 0x3f607 As Atom = 0x3c02 Aside Atom = 0x10705 Async Atom = 0xff05 Audio Atom = 0x11505 - Autocomplete Atom = 0x2780c + Autocomplete Atom = 0x26b0c Autofocus Atom = 0x12109 Autoplay Atom = 0x13c08 B Atom = 0x101 @@ -43,34 +43,34 @@ const ( Br Atom = 0x202 Button Atom = 0x19106 Canvas Atom = 0x10306 - Caption Atom = 0x23107 - Center Atom = 0x22006 - Challenge Atom = 0x29b09 + Caption Atom = 0x22407 + Center Atom = 0x21306 + Challenge Atom = 0x28e09 Charset Atom = 0x2107 - Checked Atom = 0x47907 + Checked Atom = 0x5b507 Cite Atom = 0x19c04 - Class Atom = 0x56405 - Code Atom = 0x5c504 + Class Atom = 0x55805 + Code Atom = 0x5ee04 Col Atom = 0x1ab03 Colgroup Atom = 0x1ab08 Color Atom = 0x1bf05 Cols Atom = 0x1c404 Colspan Atom = 0x1c407 Command Atom = 0x1d707 - Content Atom = 0x58b07 - Contenteditable Atom = 0x58b0f - Contextmenu Atom = 0x3800b + Content Atom = 0x57b07 + Contenteditable Atom = 0x57b0f + Contextmenu Atom = 0x37a0b Controls Atom = 0x1de08 - Coords Atom = 0x1ea06 - Crossorigin Atom = 0x1fb0b - Data Atom = 0x4a504 - Datalist Atom = 0x4a508 - Datetime Atom = 0x2b808 - Dd Atom = 0x2d702 + Coords Atom = 0x1f006 + Crossorigin Atom = 0x1fa0b + Data Atom = 0x49904 + Datalist Atom = 0x49908 + Datetime Atom = 0x2ab08 + Dd Atom = 0x2bf02 Default Atom = 0x10a07 - Defer Atom = 0x5c705 - Del Atom = 0x45203 - Desc Atom = 0x56104 + Defer Atom = 0x5f005 + Del Atom = 0x44c03 + Desc Atom = 0x55504 Details Atom = 0x7207 Dfn Atom = 0x8703 Dialog Atom = 0xbb06 @@ -78,106 +78,106 @@ const ( Dirname Atom = 0x9307 Disabled Atom = 0x16408 Div Atom = 0x16b03 - Dl Atom = 0x5e602 - Download Atom = 0x46308 + Dl Atom = 0x5d602 + Download Atom = 0x45d08 Draggable Atom = 0x17a09 - Dropzone Atom = 0x40508 - Dt Atom = 0x64b02 + Dropzone Atom = 0x3ff08 + Dt Atom = 0x64002 Em Atom = 0x6e02 Embed Atom = 0x6e05 - Enctype Atom = 0x28d07 - Face Atom = 0x21e04 - Fieldset Atom = 0x22608 - Figcaption Atom = 0x22e0a - Figure Atom = 0x24806 + Enctype Atom = 0x28007 + Face Atom = 0x21104 + Fieldset Atom = 0x21908 + Figcaption Atom = 0x2210a + Figure Atom = 0x23b06 Font Atom = 0x3f04 Footer Atom = 0xf606 - For Atom = 0x25403 - ForeignObject Atom = 0x2540d - Foreignobject Atom = 0x2610d - Form Atom = 0x26e04 - Formaction Atom = 0x26e0a - Formenctype Atom = 0x2890b - Formmethod Atom = 0x2a40a - Formnovalidate Atom = 0x2ae0e - Formtarget Atom = 0x2c00a + For Atom = 0x24703 + ForeignObject Atom = 0x2470d + Foreignobject Atom = 0x2540d + Form Atom = 0x26104 + Formaction Atom = 0x2610a + Formenctype Atom = 0x27c0b + Formmethod Atom = 0x2970a + Formnovalidate Atom = 0x2a10e + Formtarget Atom = 0x2b30a Frame Atom = 0x8b05 Frameset Atom = 0x8b08 H1 Atom = 0x15c02 - H2 Atom = 0x2de02 - H3 Atom = 0x30d02 - H4 Atom = 0x34502 - H5 Atom = 0x34f02 - H6 Atom = 0x64d02 - Head Atom = 0x33104 - Header Atom = 0x33106 - Headers Atom = 0x33107 + H2 Atom = 0x56102 + H3 Atom = 0x2cd02 + H4 Atom = 0x2fc02 + H5 Atom = 0x33f02 + H6 Atom = 0x34902 + Head Atom = 0x32004 + Header Atom = 0x32006 + Headers Atom = 0x32007 Height Atom = 0x5206 - Hgroup Atom = 0x2ca06 - Hidden Atom = 0x2d506 - High Atom = 0x2db04 + Hgroup Atom = 0x64206 + Hidden Atom = 0x2bd06 + High Atom = 0x2ca04 Hr Atom = 0x15702 - Href Atom = 0x2e004 - Hreflang Atom = 0x2e008 + Href Atom = 0x2cf04 + Hreflang Atom = 0x2cf08 Html Atom = 0x5604 - HttpEquiv Atom = 0x2e80a + HttpEquiv Atom = 0x2d70a I Atom = 0x601 - Icon Atom = 0x58a04 + Icon Atom = 0x57a04 Id Atom = 0x10902 - Iframe Atom = 0x2fc06 - Image Atom = 0x30205 - Img Atom = 0x30703 - Input Atom = 0x44b05 - Inputmode Atom = 0x44b09 - Ins Atom = 0x20403 - Integrity Atom = 0x23f09 + Iframe Atom = 0x2eb06 + Image Atom = 0x2f105 + Img Atom = 0x2f603 + Input Atom = 0x44505 + Inputmode Atom = 0x44509 + Ins Atom = 0x20303 + Integrity Atom = 0x23209 Is Atom = 0x16502 - Isindex Atom = 0x30f07 - Ismap Atom = 0x31605 - Itemid Atom = 0x38b06 + Isindex Atom = 0x2fe07 + Ismap Atom = 0x30505 + Itemid Atom = 0x38506 Itemprop Atom = 0x19d08 - Itemref Atom = 0x3cd07 - Itemscope Atom = 0x67109 - Itemtype Atom = 0x31f08 + Itemref Atom = 0x3c707 + Itemscope Atom = 0x66f09 + Itemtype Atom = 0x30e08 Kbd Atom = 0xb903 Keygen Atom = 0x3206 Keytype Atom = 0xd607 Kind Atom = 0x17704 Label Atom = 0x5905 - Lang Atom = 0x2e404 + Lang Atom = 0x2d304 Legend Atom = 0x18106 Li Atom = 0xb202 Link Atom = 0x17404 - List Atom = 0x4a904 - Listing Atom = 0x4a907 + List Atom = 0x49d04 + Listing Atom = 0x49d07 Loop Atom = 0x5d04 Low Atom = 0xc303 Main Atom = 0x1004 Malignmark Atom = 0xb00a - Manifest Atom = 0x6d708 - Map Atom = 0x31803 + Manifest Atom = 0x6d508 + Map Atom = 0x30703 Mark Atom = 0xb604 - Marquee Atom = 0x32707 - Math Atom = 0x32e04 - Max Atom = 0x33d03 - Maxlength Atom = 0x33d09 + Marquee Atom = 0x31607 + Math Atom = 0x31d04 + Max Atom = 0x33703 + Maxlength Atom = 0x33709 Media Atom = 0xe605 Mediagroup Atom = 0xe60a - Menu Atom = 0x38704 - Menuitem Atom = 0x38708 - Meta Atom = 0x4b804 + Menu Atom = 0x38104 + Menuitem Atom = 0x38108 + Meta Atom = 0x4ac04 Meter Atom = 0x9805 - Method Atom = 0x2a806 - Mglyph Atom = 0x30806 - Mi Atom = 0x34702 - Min Atom = 0x34703 - Minlength Atom = 0x34709 - Mn Atom = 0x2b102 + Method Atom = 0x29b06 + Mglyph Atom = 0x2f706 + Mi Atom = 0x34102 + Min Atom = 0x34103 + Minlength Atom = 0x34109 + Mn Atom = 0x2a402 Mo Atom = 0xa402 - Ms Atom = 0x67402 - Mtext Atom = 0x35105 - Multiple Atom = 0x35f08 - Muted Atom = 0x36705 + Ms Atom = 0x67202 + Mtext Atom = 0x34b05 + Multiple Atom = 0x35908 + Muted Atom = 0x36105 Name Atom = 0x9604 Nav Atom = 0x1303 Nobr Atom = 0x3704 @@ -185,101 +185,101 @@ const ( Noframes Atom = 0x8908 Nomodule Atom = 0xa208 Nonce Atom = 0x1a605 - Noscript Atom = 0x21608 - Novalidate Atom = 0x2b20a - Object Atom = 0x26806 + Noscript Atom = 0x2c208 + Novalidate Atom = 0x2a50a + Object Atom = 0x25b06 Ol Atom = 0x13702 Onabort Atom = 0x19507 - Onafterprint Atom = 0x2360c - Onautocomplete Atom = 0x2760e - Onautocompleteerror Atom = 0x27613 - Onauxclick Atom = 0x61f0a - Onbeforeprint Atom = 0x69e0d - Onbeforeunload Atom = 0x6e70e - Onblur Atom = 0x56d06 + Onafterprint Atom = 0x2290c + Onautocomplete Atom = 0x2690e + Onautocompleteerror Atom = 0x26913 + Onauxclick Atom = 0x6140a + Onbeforeprint Atom = 0x69c0d + Onbeforeunload Atom = 0x6e50e + Onblur Atom = 0x1ea06 Oncancel Atom = 0x11908 Oncanplay Atom = 0x14d09 Oncanplaythrough Atom = 0x14d10 - Onchange Atom = 0x41b08 - Onclick Atom = 0x2f507 - Onclose Atom = 0x36c07 - Oncontextmenu Atom = 0x37e0d - Oncopy Atom = 0x39106 - Oncuechange Atom = 0x3970b - Oncut Atom = 0x3a205 - Ondblclick Atom = 0x3a70a - Ondrag Atom = 0x3b106 - Ondragend Atom = 0x3b109 - Ondragenter Atom = 0x3ba0b - Ondragexit Atom = 0x3c50a - Ondragleave Atom = 0x3df0b - Ondragover Atom = 0x3ea0a - Ondragstart Atom = 0x3f40b - Ondrop Atom = 0x40306 - Ondurationchange Atom = 0x41310 - Onemptied Atom = 0x40a09 - Onended Atom = 0x42307 - Onerror Atom = 0x42a07 - Onfocus Atom = 0x43107 - Onhashchange Atom = 0x43d0c - Oninput Atom = 0x44907 - Oninvalid Atom = 0x45509 - Onkeydown Atom = 0x45e09 - Onkeypress Atom = 0x46b0a - Onkeyup Atom = 0x48007 - Onlanguagechange Atom = 0x48d10 - Onload Atom = 0x49d06 - Onloadeddata Atom = 0x49d0c - Onloadedmetadata Atom = 0x4b010 - Onloadend Atom = 0x4c609 - Onloadstart Atom = 0x4cf0b - Onmessage Atom = 0x4da09 - Onmessageerror Atom = 0x4da0e - Onmousedown Atom = 0x4e80b - Onmouseenter Atom = 0x4f30c - Onmouseleave Atom = 0x4ff0c - Onmousemove Atom = 0x50b0b - Onmouseout Atom = 0x5160a - Onmouseover Atom = 0x5230b - Onmouseup Atom = 0x52e09 - Onmousewheel Atom = 0x53c0c - Onoffline Atom = 0x54809 - Ononline Atom = 0x55108 - Onpagehide Atom = 0x5590a - Onpageshow Atom = 0x5730a - Onpaste Atom = 0x57f07 - Onpause Atom = 0x59a07 - Onplay Atom = 0x5a406 - Onplaying Atom = 0x5a409 - Onpopstate Atom = 0x5ad0a - Onprogress Atom = 0x5b70a - Onratechange Atom = 0x5cc0c - Onrejectionhandled Atom = 0x5d812 - Onreset Atom = 0x5ea07 - Onresize Atom = 0x5f108 - Onscroll Atom = 0x60008 - Onsecuritypolicyviolation Atom = 0x60819 - Onseeked Atom = 0x62908 - Onseeking Atom = 0x63109 - Onselect Atom = 0x63a08 - Onshow Atom = 0x64406 - Onsort Atom = 0x64f06 - Onstalled Atom = 0x65909 - Onstorage Atom = 0x66209 - Onsubmit Atom = 0x66b08 - Onsuspend Atom = 0x67b09 + Onchange Atom = 0x41508 + Onclick Atom = 0x2e407 + Onclose Atom = 0x36607 + Oncontextmenu Atom = 0x3780d + Oncopy Atom = 0x38b06 + Oncuechange Atom = 0x3910b + Oncut Atom = 0x39c05 + Ondblclick Atom = 0x3a10a + Ondrag Atom = 0x3ab06 + Ondragend Atom = 0x3ab09 + Ondragenter Atom = 0x3b40b + Ondragexit Atom = 0x3bf0a + Ondragleave Atom = 0x3d90b + Ondragover Atom = 0x3e40a + Ondragstart Atom = 0x3ee0b + Ondrop Atom = 0x3fd06 + Ondurationchange Atom = 0x40d10 + Onemptied Atom = 0x40409 + Onended Atom = 0x41d07 + Onerror Atom = 0x42407 + Onfocus Atom = 0x42b07 + Onhashchange Atom = 0x4370c + Oninput Atom = 0x44307 + Oninvalid Atom = 0x44f09 + Onkeydown Atom = 0x45809 + Onkeypress Atom = 0x4650a + Onkeyup Atom = 0x47407 + Onlanguagechange Atom = 0x48110 + Onload Atom = 0x49106 + Onloadeddata Atom = 0x4910c + Onloadedmetadata Atom = 0x4a410 + Onloadend Atom = 0x4ba09 + Onloadstart Atom = 0x4c30b + Onmessage Atom = 0x4ce09 + Onmessageerror Atom = 0x4ce0e + Onmousedown Atom = 0x4dc0b + Onmouseenter Atom = 0x4e70c + Onmouseleave Atom = 0x4f30c + Onmousemove Atom = 0x4ff0b + Onmouseout Atom = 0x50a0a + Onmouseover Atom = 0x5170b + Onmouseup Atom = 0x52209 + Onmousewheel Atom = 0x5300c + Onoffline Atom = 0x53c09 + Ononline Atom = 0x54508 + Onpagehide Atom = 0x54d0a + Onpageshow Atom = 0x5630a + Onpaste Atom = 0x56f07 + Onpause Atom = 0x58a07 + Onplay Atom = 0x59406 + Onplaying Atom = 0x59409 + Onpopstate Atom = 0x59d0a + Onprogress Atom = 0x5a70a + Onratechange Atom = 0x5bc0c + Onrejectionhandled Atom = 0x5c812 + Onreset Atom = 0x5da07 + Onresize Atom = 0x5e108 + Onscroll Atom = 0x5f508 + Onsecuritypolicyviolation Atom = 0x5fd19 + Onseeked Atom = 0x61e08 + Onseeking Atom = 0x62609 + Onselect Atom = 0x62f08 + Onshow Atom = 0x63906 + Onsort Atom = 0x64d06 + Onstalled Atom = 0x65709 + Onstorage Atom = 0x66009 + Onsubmit Atom = 0x66908 + Onsuspend Atom = 0x67909 Ontimeupdate Atom = 0x400c - Ontoggle Atom = 0x68408 - Onunhandledrejection Atom = 0x68c14 - Onunload Atom = 0x6ab08 - Onvolumechange Atom = 0x6b30e - Onwaiting Atom = 0x6c109 - Onwheel Atom = 0x6ca07 + Ontoggle Atom = 0x68208 + Onunhandledrejection Atom = 0x68a14 + Onunload Atom = 0x6a908 + Onvolumechange Atom = 0x6b10e + Onwaiting Atom = 0x6bf09 + Onwheel Atom = 0x6c807 Open Atom = 0x1a304 Optgroup Atom = 0x5f08 - Optimum Atom = 0x6d107 - Option Atom = 0x6e306 - Output Atom = 0x51d06 + Optimum Atom = 0x6cf07 + Option Atom = 0x6e106 + Output Atom = 0x51106 P Atom = 0xc01 Param Atom = 0xc05 Pattern Atom = 0x6607 @@ -288,466 +288,468 @@ const ( Placeholder Atom = 0x1310b Plaintext Atom = 0x1b209 Playsinline Atom = 0x1400b - Poster Atom = 0x2cf06 - Pre Atom = 0x47003 - Preload Atom = 0x48607 - Progress Atom = 0x5b908 - Prompt Atom = 0x53606 - Public Atom = 0x58606 + Poster Atom = 0x64706 + Pre Atom = 0x46a03 + Preload Atom = 0x47a07 + Progress Atom = 0x5a908 + Prompt Atom = 0x52a06 + Public Atom = 0x57606 Q Atom = 0xcf01 Radiogroup Atom = 0x30a Rb Atom = 0x3a02 - Readonly Atom = 0x35708 - Referrerpolicy Atom = 0x3d10e - Rel Atom = 0x48703 - Required Atom = 0x24c08 + Readonly Atom = 0x35108 + Referrerpolicy Atom = 0x3cb0e + Rel Atom = 0x47b03 + Required Atom = 0x23f08 Reversed Atom = 0x8008 Rows Atom = 0x9c04 Rowspan Atom = 0x9c07 - Rp Atom = 0x23c02 + Rp Atom = 0x22f02 Rt Atom = 0x19a02 Rtc Atom = 0x19a03 Ruby Atom = 0xfb04 S Atom = 0x2501 Samp Atom = 0x7804 Sandbox Atom = 0x12907 - Scope Atom = 0x67505 - Scoped Atom = 0x67506 - Script Atom = 0x21806 - Seamless Atom = 0x37108 - Section Atom = 0x56807 - Select Atom = 0x63c06 - Selected Atom = 0x63c08 - Shape Atom = 0x1e505 - Size Atom = 0x5f504 - Sizes Atom = 0x5f505 - Slot Atom = 0x1ef04 - Small Atom = 0x20605 - Sortable Atom = 0x65108 - Sorted Atom = 0x33706 - Source Atom = 0x37806 - Spacer Atom = 0x43706 + Scope Atom = 0x67305 + Scoped Atom = 0x67306 + Script Atom = 0x2c406 + Seamless Atom = 0x36b08 + Search Atom = 0x55c06 + Section Atom = 0x1e507 + Select Atom = 0x63106 + Selected Atom = 0x63108 + Shape Atom = 0x1f505 + Size Atom = 0x5e504 + Sizes Atom = 0x5e505 + Slot Atom = 0x20504 + Small Atom = 0x32605 + Sortable Atom = 0x64f08 + Sorted Atom = 0x37206 + Source Atom = 0x43106 + Spacer Atom = 0x46e06 Span Atom = 0x9f04 - Spellcheck Atom = 0x4740a - Src Atom = 0x5c003 - Srcdoc Atom = 0x5c006 - Srclang Atom = 0x5f907 - Srcset Atom = 0x6f906 - Start Atom = 0x3fa05 - Step Atom = 0x58304 + Spellcheck Atom = 0x5b00a + Src Atom = 0x5e903 + Srcdoc Atom = 0x5e906 + Srclang Atom = 0x6f707 + Srcset Atom = 0x6fe06 + Start Atom = 0x3f405 + Step Atom = 0x57304 Strike Atom = 0xd206 - Strong Atom = 0x6dd06 - Style Atom = 0x6ff05 - Sub Atom = 0x66d03 - Summary Atom = 0x70407 - Sup Atom = 0x70b03 - Svg Atom = 0x70e03 - System Atom = 0x71106 - Tabindex Atom = 0x4be08 - Table Atom = 0x59505 - Target Atom = 0x2c406 + Strong Atom = 0x6db06 + Style Atom = 0x70405 + Sub Atom = 0x66b03 + Summary Atom = 0x70907 + Sup Atom = 0x71003 + Svg Atom = 0x71303 + System Atom = 0x71606 + Tabindex Atom = 0x4b208 + Table Atom = 0x58505 + Target Atom = 0x2b706 Tbody Atom = 0x2705 Td Atom = 0x9202 - Template Atom = 0x71408 - Textarea Atom = 0x35208 + Template Atom = 0x71908 + Textarea Atom = 0x34c08 Tfoot Atom = 0xf505 Th Atom = 0x15602 - Thead Atom = 0x33005 + Thead Atom = 0x31f05 Time Atom = 0x4204 Title Atom = 0x11005 Tr Atom = 0xcc02 Track Atom = 0x1ba05 - Translate Atom = 0x1f209 + Translate Atom = 0x20809 Tt Atom = 0x6802 Type Atom = 0xd904 - Typemustmatch Atom = 0x2900d + Typemustmatch Atom = 0x2830d U Atom = 0xb01 Ul Atom = 0xa702 Updateviacache Atom = 0x460e - Usemap Atom = 0x59e06 + Usemap Atom = 0x58e06 Value Atom = 0x1505 Var Atom = 0x16d03 - Video Atom = 0x2f105 - Wbr Atom = 0x57c03 - Width Atom = 0x64905 - Workertype Atom = 0x71c0a - Wrap Atom = 0x72604 + Video Atom = 0x2e005 + Wbr Atom = 0x56c03 + Width Atom = 0x63e05 + Workertype Atom = 0x7210a + Wrap Atom = 0x72b04 Xmp Atom = 0x12f03 ) -const hash0 = 0x81cdf10e +const hash0 = 0x84f70e16 const maxAtomLen = 25 var table = [1 << 9]Atom{ - 0x1: 0xe60a, // mediagroup - 0x2: 0x2e404, // lang - 0x4: 0x2c09, // accesskey - 0x5: 0x8b08, // frameset - 0x7: 0x63a08, // onselect - 0x8: 0x71106, // system - 0xa: 0x64905, // width - 0xc: 0x2890b, // formenctype - 0xd: 0x13702, // ol - 0xe: 0x3970b, // oncuechange - 0x10: 0x14b03, // bdo - 0x11: 0x11505, // audio - 0x12: 0x17a09, // draggable - 0x14: 0x2f105, // video - 0x15: 0x2b102, // mn - 0x16: 0x38704, // menu - 0x17: 0x2cf06, // poster - 0x19: 0xf606, // footer - 0x1a: 0x2a806, // method - 0x1b: 0x2b808, // datetime - 0x1c: 0x19507, // onabort - 0x1d: 0x460e, // updateviacache - 0x1e: 0xff05, // async - 0x1f: 0x49d06, // onload - 0x21: 0x11908, // oncancel - 0x22: 0x62908, // onseeked - 0x23: 0x30205, // image - 0x24: 0x5d812, // onrejectionhandled - 0x26: 0x17404, // link - 0x27: 0x51d06, // output - 0x28: 0x33104, // head - 0x29: 0x4ff0c, // onmouseleave - 0x2a: 0x57f07, // onpaste - 0x2b: 0x5a409, // onplaying - 0x2c: 0x1c407, // colspan - 0x2f: 0x1bf05, // color - 0x30: 0x5f504, // size - 0x31: 0x2e80a, // http-equiv - 0x33: 0x601, // i - 0x34: 0x5590a, // onpagehide - 0x35: 0x68c14, // onunhandledrejection - 0x37: 0x42a07, // onerror - 0x3a: 0x3b08, // basefont - 0x3f: 0x1303, // nav - 0x40: 0x17704, // kind - 0x41: 0x35708, // readonly - 0x42: 0x30806, // mglyph - 0x44: 0xb202, // li - 0x46: 0x2d506, // hidden - 0x47: 0x70e03, // svg - 0x48: 0x58304, // step - 0x49: 0x23f09, // integrity - 0x4a: 0x58606, // public - 0x4c: 0x1ab03, // col - 0x4d: 0x1870a, // blockquote - 0x4e: 0x34f02, // h5 - 0x50: 0x5b908, // progress - 0x51: 0x5f505, // sizes - 0x52: 0x34502, // h4 - 0x56: 0x33005, // thead - 0x57: 0xd607, // keytype - 0x58: 0x5b70a, // onprogress - 0x59: 0x44b09, // inputmode - 0x5a: 0x3b109, // ondragend - 0x5d: 0x3a205, // oncut - 0x5e: 0x43706, // spacer - 0x5f: 0x1ab08, // colgroup - 0x62: 0x16502, // is - 0x65: 0x3c02, // as - 0x66: 0x54809, // onoffline - 0x67: 0x33706, // sorted - 0x69: 0x48d10, // onlanguagechange - 0x6c: 0x43d0c, // onhashchange - 0x6d: 0x9604, // name - 0x6e: 0xf505, // tfoot - 0x6f: 0x56104, // desc - 0x70: 0x33d03, // max - 0x72: 0x1ea06, // coords - 0x73: 0x30d02, // h3 - 0x74: 0x6e70e, // onbeforeunload - 0x75: 0x9c04, // rows - 0x76: 0x63c06, // select - 0x77: 0x9805, // meter - 0x78: 0x38b06, // itemid - 0x79: 0x53c0c, // onmousewheel - 0x7a: 0x5c006, // srcdoc - 0x7d: 0x1ba05, // track - 0x7f: 0x31f08, // itemtype - 0x82: 0xa402, // mo - 0x83: 0x41b08, // onchange - 0x84: 0x33107, // headers - 0x85: 0x5cc0c, // onratechange - 0x86: 0x60819, // onsecuritypolicyviolation - 0x88: 0x4a508, // datalist - 0x89: 0x4e80b, // onmousedown - 0x8a: 0x1ef04, // slot - 0x8b: 0x4b010, // onloadedmetadata - 0x8c: 0x1a06, // accept - 0x8d: 0x26806, // object - 0x91: 0x6b30e, // onvolumechange - 0x92: 0x2107, // charset - 0x93: 0x27613, // onautocompleteerror - 0x94: 0xc113, // allowpaymentrequest - 0x95: 0x2804, // body - 0x96: 0x10a07, // default - 0x97: 0x63c08, // selected - 0x98: 0x21e04, // face - 0x99: 0x1e505, // shape - 0x9b: 0x68408, // ontoggle - 0x9e: 0x64b02, // dt - 0x9f: 0xb604, // mark - 0xa1: 0xb01, // u - 0xa4: 0x6ab08, // onunload - 0xa5: 0x5d04, // loop - 0xa6: 0x16408, // disabled - 0xaa: 0x42307, // onended - 0xab: 0xb00a, // malignmark - 0xad: 0x67b09, // onsuspend - 0xae: 0x35105, // mtext - 0xaf: 0x64f06, // onsort - 0xb0: 0x19d08, // itemprop - 0xb3: 0x67109, // itemscope - 0xb4: 0x17305, // blink - 0xb6: 0x3b106, // ondrag - 0xb7: 0xa702, // ul - 0xb8: 0x26e04, // form - 0xb9: 0x12907, // sandbox - 0xba: 0x8b05, // frame - 0xbb: 0x1505, // value - 0xbc: 0x66209, // onstorage - 0xbf: 0xaa07, // acronym - 0xc0: 0x19a02, // rt - 0xc2: 0x202, // br - 0xc3: 0x22608, // fieldset - 0xc4: 0x2900d, // typemustmatch - 0xc5: 0xa208, // nomodule - 0xc6: 0x6c07, // noembed - 0xc7: 0x69e0d, // onbeforeprint - 0xc8: 0x19106, // button - 0xc9: 0x2f507, // onclick - 0xca: 0x70407, // summary - 0xcd: 0xfb04, // ruby - 0xce: 0x56405, // class - 0xcf: 0x3f40b, // ondragstart - 0xd0: 0x23107, // caption - 0xd4: 0xdd0e, // allowusermedia - 0xd5: 0x4cf0b, // onloadstart - 0xd9: 0x16b03, // div - 0xda: 0x4a904, // list - 0xdb: 0x32e04, // math - 0xdc: 0x44b05, // input - 0xdf: 0x3ea0a, // ondragover - 0xe0: 0x2de02, // h2 - 0xe2: 0x1b209, // plaintext - 0xe4: 0x4f30c, // onmouseenter - 0xe7: 0x47907, // checked - 0xe8: 0x47003, // pre - 0xea: 0x35f08, // multiple - 0xeb: 0xba03, // bdi - 0xec: 0x33d09, // maxlength - 0xed: 0xcf01, // q - 0xee: 0x61f0a, // onauxclick - 0xf0: 0x57c03, // wbr - 0xf2: 0x3b04, // base - 0xf3: 0x6e306, // option - 0xf5: 0x41310, // ondurationchange - 0xf7: 0x8908, // noframes - 0xf9: 0x40508, // dropzone - 0xfb: 0x67505, // scope - 0xfc: 0x8008, // reversed - 0xfd: 0x3ba0b, // ondragenter - 0xfe: 0x3fa05, // start - 0xff: 0x12f03, // xmp - 0x100: 0x5f907, // srclang - 0x101: 0x30703, // img - 0x104: 0x101, // b - 0x105: 0x25403, // for - 0x106: 0x10705, // aside - 0x107: 0x44907, // oninput - 0x108: 0x35604, // area - 0x109: 0x2a40a, // formmethod - 0x10a: 0x72604, // wrap - 0x10c: 0x23c02, // rp - 0x10d: 0x46b0a, // onkeypress - 0x10e: 0x6802, // tt - 0x110: 0x34702, // mi - 0x111: 0x36705, // muted - 0x112: 0xf303, // alt - 0x113: 0x5c504, // code - 0x114: 0x6e02, // em - 0x115: 0x3c50a, // ondragexit - 0x117: 0x9f04, // span - 0x119: 0x6d708, // manifest - 0x11a: 0x38708, // menuitem - 0x11b: 0x58b07, // content - 0x11d: 0x6c109, // onwaiting - 0x11f: 0x4c609, // onloadend - 0x121: 0x37e0d, // oncontextmenu - 0x123: 0x56d06, // onblur - 0x124: 0x3fc07, // article - 0x125: 0x9303, // dir - 0x126: 0xef04, // ping - 0x127: 0x24c08, // required - 0x128: 0x45509, // oninvalid - 0x129: 0xb105, // align - 0x12b: 0x58a04, // icon - 0x12c: 0x64d02, // h6 - 0x12d: 0x1c404, // cols - 0x12e: 0x22e0a, // figcaption - 0x12f: 0x45e09, // onkeydown - 0x130: 0x66b08, // onsubmit - 0x131: 0x14d09, // oncanplay - 0x132: 0x70b03, // sup - 0x133: 0xc01, // p - 0x135: 0x40a09, // onemptied - 0x136: 0x39106, // oncopy - 0x137: 0x19c04, // cite - 0x138: 0x3a70a, // ondblclick - 0x13a: 0x50b0b, // onmousemove - 0x13c: 0x66d03, // sub - 0x13d: 0x48703, // rel - 0x13e: 0x5f08, // optgroup - 0x142: 0x9c07, // rowspan - 0x143: 0x37806, // source - 0x144: 0x21608, // noscript - 0x145: 0x1a304, // open - 0x146: 0x20403, // ins - 0x147: 0x2540d, // foreignObject - 0x148: 0x5ad0a, // onpopstate - 0x14a: 0x28d07, // enctype - 0x14b: 0x2760e, // onautocomplete - 0x14c: 0x35208, // textarea - 0x14e: 0x2780c, // autocomplete - 0x14f: 0x15702, // hr - 0x150: 0x1de08, // controls - 0x151: 0x10902, // id - 0x153: 0x2360c, // onafterprint - 0x155: 0x2610d, // foreignobject - 0x156: 0x32707, // marquee - 0x157: 0x59a07, // onpause - 0x158: 0x5e602, // dl - 0x159: 0x5206, // height - 0x15a: 0x34703, // min - 0x15b: 0x9307, // dirname - 0x15c: 0x1f209, // translate - 0x15d: 0x5604, // html - 0x15e: 0x34709, // minlength - 0x15f: 0x48607, // preload - 0x160: 0x71408, // template - 0x161: 0x3df0b, // ondragleave - 0x162: 0x3a02, // rb - 0x164: 0x5c003, // src - 0x165: 0x6dd06, // strong - 0x167: 0x7804, // samp - 0x168: 0x6f307, // address - 0x169: 0x55108, // ononline - 0x16b: 0x1310b, // placeholder - 0x16c: 0x2c406, // target - 0x16d: 0x20605, // small - 0x16e: 0x6ca07, // onwheel - 0x16f: 0x1c90a, // annotation - 0x170: 0x4740a, // spellcheck - 0x171: 0x7207, // details - 0x172: 0x10306, // canvas - 0x173: 0x12109, // autofocus - 0x174: 0xc05, // param - 0x176: 0x46308, // download - 0x177: 0x45203, // del - 0x178: 0x36c07, // onclose - 0x179: 0xb903, // kbd - 0x17a: 0x31906, // applet - 0x17b: 0x2e004, // href - 0x17c: 0x5f108, // onresize - 0x17e: 0x49d0c, // onloadeddata - 0x180: 0xcc02, // tr - 0x181: 0x2c00a, // formtarget - 0x182: 0x11005, // title - 0x183: 0x6ff05, // style - 0x184: 0xd206, // strike - 0x185: 0x59e06, // usemap - 0x186: 0x2fc06, // iframe - 0x187: 0x1004, // main - 0x189: 0x7b07, // picture - 0x18c: 0x31605, // ismap - 0x18e: 0x4a504, // data - 0x18f: 0x5905, // label - 0x191: 0x3d10e, // referrerpolicy - 0x192: 0x15602, // th - 0x194: 0x53606, // prompt - 0x195: 0x56807, // section - 0x197: 0x6d107, // optimum - 0x198: 0x2db04, // high - 0x199: 0x15c02, // h1 - 0x19a: 0x65909, // onstalled - 0x19b: 0x16d03, // var - 0x19c: 0x4204, // time - 0x19e: 0x67402, // ms - 0x19f: 0x33106, // header - 0x1a0: 0x4da09, // onmessage - 0x1a1: 0x1a605, // nonce - 0x1a2: 0x26e0a, // formaction - 0x1a3: 0x22006, // center - 0x1a4: 0x3704, // nobr - 0x1a5: 0x59505, // table - 0x1a6: 0x4a907, // listing - 0x1a7: 0x18106, // legend - 0x1a9: 0x29b09, // challenge - 0x1aa: 0x24806, // figure - 0x1ab: 0xe605, // media - 0x1ae: 0xd904, // type - 0x1af: 0x3f04, // font - 0x1b0: 0x4da0e, // onmessageerror - 0x1b1: 0x37108, // seamless - 0x1b2: 0x8703, // dfn - 0x1b3: 0x5c705, // defer - 0x1b4: 0xc303, // low - 0x1b5: 0x19a03, // rtc - 0x1b6: 0x5230b, // onmouseover - 0x1b7: 0x2b20a, // novalidate - 0x1b8: 0x71c0a, // workertype - 0x1ba: 0x3cd07, // itemref - 0x1bd: 0x1, // a - 0x1be: 0x31803, // map - 0x1bf: 0x400c, // ontimeupdate - 0x1c0: 0x15e07, // bgsound - 0x1c1: 0x3206, // keygen - 0x1c2: 0x2705, // tbody - 0x1c5: 0x64406, // onshow - 0x1c7: 0x2501, // s - 0x1c8: 0x6607, // pattern - 0x1cc: 0x14d10, // oncanplaythrough - 0x1ce: 0x2d702, // dd - 0x1cf: 0x6f906, // srcset - 0x1d0: 0x17003, // big - 0x1d2: 0x65108, // sortable - 0x1d3: 0x48007, // onkeyup - 0x1d5: 0x5a406, // onplay - 0x1d7: 0x4b804, // meta - 0x1d8: 0x40306, // ondrop - 0x1da: 0x60008, // onscroll - 0x1db: 0x1fb0b, // crossorigin - 0x1dc: 0x5730a, // onpageshow - 0x1dd: 0x4, // abbr - 0x1de: 0x9202, // td - 0x1df: 0x58b0f, // contenteditable - 0x1e0: 0x27206, // action - 0x1e1: 0x1400b, // playsinline - 0x1e2: 0x43107, // onfocus - 0x1e3: 0x2e008, // hreflang - 0x1e5: 0x5160a, // onmouseout - 0x1e6: 0x5ea07, // onreset - 0x1e7: 0x13c08, // autoplay - 0x1e8: 0x63109, // onseeking - 0x1ea: 0x67506, // scoped - 0x1ec: 0x30a, // radiogroup - 0x1ee: 0x3800b, // contextmenu - 0x1ef: 0x52e09, // onmouseup - 0x1f1: 0x2ca06, // hgroup - 0x1f2: 0x2080f, // allowfullscreen - 0x1f3: 0x4be08, // tabindex - 0x1f6: 0x30f07, // isindex - 0x1f7: 0x1a0e, // accept-charset - 0x1f8: 0x2ae0e, // formnovalidate - 0x1fb: 0x1c90e, // annotation-xml - 0x1fc: 0x6e05, // embed - 0x1fd: 0x21806, // script - 0x1fe: 0xbb06, // dialog - 0x1ff: 0x1d707, // command + 0x1: 0x3ff08, // dropzone + 0x2: 0x3b08, // basefont + 0x3: 0x23209, // integrity + 0x4: 0x43106, // source + 0x5: 0x2c09, // accesskey + 0x6: 0x1a06, // accept + 0x7: 0x6c807, // onwheel + 0xb: 0x47407, // onkeyup + 0xc: 0x32007, // headers + 0xd: 0x67306, // scoped + 0xe: 0x67909, // onsuspend + 0xf: 0x8908, // noframes + 0x10: 0x1fa0b, // crossorigin + 0x11: 0x2e407, // onclick + 0x12: 0x3f405, // start + 0x13: 0x37a0b, // contextmenu + 0x14: 0x5e903, // src + 0x15: 0x1c404, // cols + 0x16: 0xbb06, // dialog + 0x17: 0x47a07, // preload + 0x18: 0x3c707, // itemref + 0x1b: 0x2f105, // image + 0x1d: 0x4ba09, // onloadend + 0x1e: 0x45d08, // download + 0x1f: 0x46a03, // pre + 0x23: 0x2970a, // formmethod + 0x24: 0x71303, // svg + 0x25: 0xcf01, // q + 0x26: 0x64002, // dt + 0x27: 0x1de08, // controls + 0x2a: 0x2804, // body + 0x2b: 0xd206, // strike + 0x2c: 0x3910b, // oncuechange + 0x2d: 0x4c30b, // onloadstart + 0x2e: 0x2fe07, // isindex + 0x2f: 0xb202, // li + 0x30: 0x1400b, // playsinline + 0x31: 0x34102, // mi + 0x32: 0x30806, // applet + 0x33: 0x4ce09, // onmessage + 0x35: 0x13702, // ol + 0x36: 0x1a304, // open + 0x39: 0x14d09, // oncanplay + 0x3a: 0x6bf09, // onwaiting + 0x3b: 0x11908, // oncancel + 0x3c: 0x6a908, // onunload + 0x3e: 0x53c09, // onoffline + 0x3f: 0x1a0e, // accept-charset + 0x40: 0x32004, // head + 0x42: 0x3ab09, // ondragend + 0x43: 0x1310b, // placeholder + 0x44: 0x2b30a, // formtarget + 0x45: 0x2540d, // foreignobject + 0x47: 0x400c, // ontimeupdate + 0x48: 0xdd0e, // allowusermedia + 0x4a: 0x69c0d, // onbeforeprint + 0x4b: 0x5604, // html + 0x4c: 0x9f04, // span + 0x4d: 0x64206, // hgroup + 0x4e: 0x16408, // disabled + 0x4f: 0x4204, // time + 0x51: 0x42b07, // onfocus + 0x53: 0xb00a, // malignmark + 0x55: 0x4650a, // onkeypress + 0x56: 0x55805, // class + 0x57: 0x1ab08, // colgroup + 0x58: 0x33709, // maxlength + 0x59: 0x5a908, // progress + 0x5b: 0x70405, // style + 0x5c: 0x2a10e, // formnovalidate + 0x5e: 0x38b06, // oncopy + 0x60: 0x26104, // form + 0x61: 0xf606, // footer + 0x64: 0x30a, // radiogroup + 0x66: 0xfb04, // ruby + 0x67: 0x4ff0b, // onmousemove + 0x68: 0x19d08, // itemprop + 0x69: 0x2d70a, // http-equiv + 0x6a: 0x15602, // th + 0x6c: 0x6e02, // em + 0x6d: 0x38108, // menuitem + 0x6e: 0x63106, // select + 0x6f: 0x48110, // onlanguagechange + 0x70: 0x31f05, // thead + 0x71: 0x15c02, // h1 + 0x72: 0x5e906, // srcdoc + 0x75: 0x9604, // name + 0x76: 0x19106, // button + 0x77: 0x55504, // desc + 0x78: 0x17704, // kind + 0x79: 0x1bf05, // color + 0x7c: 0x58e06, // usemap + 0x7d: 0x30e08, // itemtype + 0x7f: 0x6d508, // manifest + 0x81: 0x5300c, // onmousewheel + 0x82: 0x4dc0b, // onmousedown + 0x84: 0xc05, // param + 0x85: 0x2e005, // video + 0x86: 0x4910c, // onloadeddata + 0x87: 0x6f107, // address + 0x8c: 0xef04, // ping + 0x8d: 0x24703, // for + 0x8f: 0x62f08, // onselect + 0x90: 0x30703, // map + 0x92: 0xc01, // p + 0x93: 0x8008, // reversed + 0x94: 0x54d0a, // onpagehide + 0x95: 0x3206, // keygen + 0x96: 0x34109, // minlength + 0x97: 0x3e40a, // ondragover + 0x98: 0x42407, // onerror + 0x9a: 0x2107, // charset + 0x9b: 0x29b06, // method + 0x9c: 0x101, // b + 0x9d: 0x68208, // ontoggle + 0x9e: 0x2bd06, // hidden + 0xa0: 0x3f607, // article + 0xa2: 0x63906, // onshow + 0xa3: 0x64d06, // onsort + 0xa5: 0x57b0f, // contenteditable + 0xa6: 0x66908, // onsubmit + 0xa8: 0x44f09, // oninvalid + 0xaa: 0x202, // br + 0xab: 0x10902, // id + 0xac: 0x5d04, // loop + 0xad: 0x5630a, // onpageshow + 0xb0: 0x2cf04, // href + 0xb2: 0x2210a, // figcaption + 0xb3: 0x2690e, // onautocomplete + 0xb4: 0x49106, // onload + 0xb6: 0x9c04, // rows + 0xb7: 0x1a605, // nonce + 0xb8: 0x68a14, // onunhandledrejection + 0xbb: 0x21306, // center + 0xbc: 0x59406, // onplay + 0xbd: 0x33f02, // h5 + 0xbe: 0x49d07, // listing + 0xbf: 0x57606, // public + 0xc2: 0x23b06, // figure + 0xc3: 0x57a04, // icon + 0xc4: 0x1ab03, // col + 0xc5: 0x47b03, // rel + 0xc6: 0xe605, // media + 0xc7: 0x12109, // autofocus + 0xc8: 0x19a02, // rt + 0xca: 0x2d304, // lang + 0xcc: 0x49908, // datalist + 0xce: 0x2eb06, // iframe + 0xcf: 0x36105, // muted + 0xd0: 0x6140a, // onauxclick + 0xd2: 0x3c02, // as + 0xd6: 0x3fd06, // ondrop + 0xd7: 0x1c90a, // annotation + 0xd8: 0x21908, // fieldset + 0xdb: 0x2cf08, // hreflang + 0xdc: 0x4e70c, // onmouseenter + 0xdd: 0x2a402, // mn + 0xde: 0xe60a, // mediagroup + 0xdf: 0x9805, // meter + 0xe0: 0x56c03, // wbr + 0xe2: 0x63e05, // width + 0xe3: 0x2290c, // onafterprint + 0xe4: 0x30505, // ismap + 0xe5: 0x1505, // value + 0xe7: 0x1303, // nav + 0xe8: 0x54508, // ononline + 0xe9: 0xb604, // mark + 0xea: 0xc303, // low + 0xeb: 0x3ee0b, // ondragstart + 0xef: 0x12f03, // xmp + 0xf0: 0x22407, // caption + 0xf1: 0xd904, // type + 0xf2: 0x70907, // summary + 0xf3: 0x6802, // tt + 0xf4: 0x20809, // translate + 0xf5: 0x1870a, // blockquote + 0xf8: 0x15702, // hr + 0xfa: 0x2705, // tbody + 0xfc: 0x7b07, // picture + 0xfd: 0x5206, // height + 0xfe: 0x19c04, // cite + 0xff: 0x2501, // s + 0x101: 0xff05, // async + 0x102: 0x56f07, // onpaste + 0x103: 0x19507, // onabort + 0x104: 0x2b706, // target + 0x105: 0x14b03, // bdo + 0x106: 0x1f006, // coords + 0x107: 0x5e108, // onresize + 0x108: 0x71908, // template + 0x10a: 0x3a02, // rb + 0x10b: 0x2a50a, // novalidate + 0x10c: 0x460e, // updateviacache + 0x10d: 0x71003, // sup + 0x10e: 0x6c07, // noembed + 0x10f: 0x16b03, // div + 0x110: 0x6f707, // srclang + 0x111: 0x17a09, // draggable + 0x112: 0x67305, // scope + 0x113: 0x5905, // label + 0x114: 0x22f02, // rp + 0x115: 0x23f08, // required + 0x116: 0x3780d, // oncontextmenu + 0x117: 0x5e504, // size + 0x118: 0x5b00a, // spellcheck + 0x119: 0x3f04, // font + 0x11a: 0x9c07, // rowspan + 0x11b: 0x10a07, // default + 0x11d: 0x44307, // oninput + 0x11e: 0x38506, // itemid + 0x11f: 0x5ee04, // code + 0x120: 0xaa07, // acronym + 0x121: 0x3b04, // base + 0x125: 0x2470d, // foreignObject + 0x126: 0x2ca04, // high + 0x127: 0x3cb0e, // referrerpolicy + 0x128: 0x33703, // max + 0x129: 0x59d0a, // onpopstate + 0x12a: 0x2fc02, // h4 + 0x12b: 0x4ac04, // meta + 0x12c: 0x17305, // blink + 0x12e: 0x5f508, // onscroll + 0x12f: 0x59409, // onplaying + 0x130: 0xc113, // allowpaymentrequest + 0x131: 0x19a03, // rtc + 0x132: 0x72b04, // wrap + 0x134: 0x8b08, // frameset + 0x135: 0x32605, // small + 0x137: 0x32006, // header + 0x138: 0x40409, // onemptied + 0x139: 0x34902, // h6 + 0x13a: 0x35908, // multiple + 0x13c: 0x52a06, // prompt + 0x13f: 0x28e09, // challenge + 0x141: 0x4370c, // onhashchange + 0x142: 0x57b07, // content + 0x143: 0x1c90e, // annotation-xml + 0x144: 0x36607, // onclose + 0x145: 0x14d10, // oncanplaythrough + 0x148: 0x5170b, // onmouseover + 0x149: 0x64f08, // sortable + 0x14a: 0xa402, // mo + 0x14b: 0x2cd02, // h3 + 0x14c: 0x2c406, // script + 0x14d: 0x41d07, // onended + 0x14f: 0x64706, // poster + 0x150: 0x7210a, // workertype + 0x153: 0x1f505, // shape + 0x154: 0x4, // abbr + 0x155: 0x1, // a + 0x156: 0x2bf02, // dd + 0x157: 0x71606, // system + 0x158: 0x4ce0e, // onmessageerror + 0x159: 0x36b08, // seamless + 0x15a: 0x2610a, // formaction + 0x15b: 0x6e106, // option + 0x15c: 0x31d04, // math + 0x15d: 0x62609, // onseeking + 0x15e: 0x39c05, // oncut + 0x15f: 0x44c03, // del + 0x160: 0x11005, // title + 0x161: 0x11505, // audio + 0x162: 0x63108, // selected + 0x165: 0x3b40b, // ondragenter + 0x166: 0x46e06, // spacer + 0x167: 0x4a410, // onloadedmetadata + 0x168: 0x44505, // input + 0x16a: 0x58505, // table + 0x16b: 0x41508, // onchange + 0x16e: 0x5f005, // defer + 0x171: 0x50a0a, // onmouseout + 0x172: 0x20504, // slot + 0x175: 0x3704, // nobr + 0x177: 0x1d707, // command + 0x17a: 0x7207, // details + 0x17b: 0x38104, // menu + 0x17c: 0xb903, // kbd + 0x17d: 0x57304, // step + 0x17e: 0x20303, // ins + 0x17f: 0x13c08, // autoplay + 0x182: 0x34103, // min + 0x183: 0x17404, // link + 0x185: 0x40d10, // ondurationchange + 0x186: 0x9202, // td + 0x187: 0x8b05, // frame + 0x18a: 0x2ab08, // datetime + 0x18b: 0x44509, // inputmode + 0x18c: 0x35108, // readonly + 0x18d: 0x21104, // face + 0x18f: 0x5e505, // sizes + 0x191: 0x4b208, // tabindex + 0x192: 0x6db06, // strong + 0x193: 0xba03, // bdi + 0x194: 0x6fe06, // srcset + 0x196: 0x67202, // ms + 0x197: 0x5b507, // checked + 0x198: 0xb105, // align + 0x199: 0x1e507, // section + 0x19b: 0x6e05, // embed + 0x19d: 0x15e07, // bgsound + 0x1a2: 0x49d04, // list + 0x1a3: 0x61e08, // onseeked + 0x1a4: 0x66009, // onstorage + 0x1a5: 0x2f603, // img + 0x1a6: 0xf505, // tfoot + 0x1a9: 0x26913, // onautocompleteerror + 0x1aa: 0x5fd19, // onsecuritypolicyviolation + 0x1ad: 0x9303, // dir + 0x1ae: 0x9307, // dirname + 0x1b0: 0x5a70a, // onprogress + 0x1b2: 0x65709, // onstalled + 0x1b5: 0x66f09, // itemscope + 0x1b6: 0x49904, // data + 0x1b7: 0x3d90b, // ondragleave + 0x1b8: 0x56102, // h2 + 0x1b9: 0x2f706, // mglyph + 0x1ba: 0x16502, // is + 0x1bb: 0x6e50e, // onbeforeunload + 0x1bc: 0x2830d, // typemustmatch + 0x1bd: 0x3ab06, // ondrag + 0x1be: 0x5da07, // onreset + 0x1c0: 0x51106, // output + 0x1c1: 0x12907, // sandbox + 0x1c2: 0x1b209, // plaintext + 0x1c4: 0x34c08, // textarea + 0x1c7: 0xd607, // keytype + 0x1c8: 0x34b05, // mtext + 0x1c9: 0x6b10e, // onvolumechange + 0x1ca: 0x1ea06, // onblur + 0x1cb: 0x58a07, // onpause + 0x1cd: 0x5bc0c, // onratechange + 0x1ce: 0x10705, // aside + 0x1cf: 0x6cf07, // optimum + 0x1d1: 0x45809, // onkeydown + 0x1d2: 0x1c407, // colspan + 0x1d3: 0x1004, // main + 0x1d4: 0x66b03, // sub + 0x1d5: 0x25b06, // object + 0x1d6: 0x55c06, // search + 0x1d7: 0x37206, // sorted + 0x1d8: 0x17003, // big + 0x1d9: 0xb01, // u + 0x1db: 0x26b0c, // autocomplete + 0x1dc: 0xcc02, // tr + 0x1dd: 0xf303, // alt + 0x1df: 0x7804, // samp + 0x1e0: 0x5c812, // onrejectionhandled + 0x1e1: 0x4f30c, // onmouseleave + 0x1e2: 0x28007, // enctype + 0x1e3: 0xa208, // nomodule + 0x1e5: 0x3280f, // allowfullscreen + 0x1e6: 0x5f08, // optgroup + 0x1e8: 0x27c0b, // formenctype + 0x1e9: 0x18106, // legend + 0x1ea: 0x10306, // canvas + 0x1eb: 0x6607, // pattern + 0x1ec: 0x2c208, // noscript + 0x1ed: 0x601, // i + 0x1ee: 0x5d602, // dl + 0x1ef: 0xa702, // ul + 0x1f2: 0x52209, // onmouseup + 0x1f4: 0x1ba05, // track + 0x1f7: 0x3a10a, // ondblclick + 0x1f8: 0x3bf0a, // ondragexit + 0x1fa: 0x8703, // dfn + 0x1fc: 0x26506, // action + 0x1fd: 0x35004, // area + 0x1fe: 0x31607, // marquee + 0x1ff: 0x16d03, // var } const atomText = "abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobrb" + @@ -758,26 +760,26 @@ const atomText = "abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobrb" "dboxmplaceholderautoplaysinlinebdoncanplaythrough1bgsoundisa" + "bledivarbigblinkindraggablegendblockquotebuttonabortcitempro" + "penoncecolgrouplaintextrackcolorcolspannotation-xmlcommandco" + - "ntrolshapecoordslotranslatecrossoriginsmallowfullscreenoscri" + - "ptfacenterfieldsetfigcaptionafterprintegrityfigurequiredfore" + - "ignObjectforeignobjectformactionautocompleteerrorformenctype" + - "mustmatchallengeformmethodformnovalidatetimeformtargethgroup" + - "osterhiddenhigh2hreflanghttp-equivideonclickiframeimageimgly" + - "ph3isindexismappletitemtypemarqueematheadersortedmaxlength4m" + - "inlength5mtextareadonlymultiplemutedoncloseamlessourceoncont" + - "extmenuitemidoncopyoncuechangeoncutondblclickondragendondrag" + - "enterondragexitemreferrerpolicyondragleaveondragoverondragst" + - "articleondropzonemptiedondurationchangeonendedonerroronfocus" + - "paceronhashchangeoninputmodeloninvalidonkeydownloadonkeypres" + - "spellcheckedonkeyupreloadonlanguagechangeonloadeddatalisting" + - "onloadedmetadatabindexonloadendonloadstartonmessageerroronmo" + - "usedownonmouseenteronmouseleaveonmousemoveonmouseoutputonmou" + - "seoveronmouseupromptonmousewheelonofflineononlineonpagehides" + - "classectionbluronpageshowbronpastepublicontenteditableonpaus" + - "emaponplayingonpopstateonprogressrcdocodeferonratechangeonre" + - "jectionhandledonresetonresizesrclangonscrollonsecuritypolicy" + - "violationauxclickonseekedonseekingonselectedonshowidth6onsor" + - "tableonstalledonstorageonsubmitemscopedonsuspendontoggleonun" + - "handledrejectionbeforeprintonunloadonvolumechangeonwaitingon" + - "wheeloptimumanifestrongoptionbeforeunloaddressrcsetstylesumm" + - "arysupsvgsystemplateworkertypewrap" + "ntrolsectionblurcoordshapecrossoriginslotranslatefacenterfie" + + "ldsetfigcaptionafterprintegrityfigurequiredforeignObjectfore" + + "ignobjectformactionautocompleteerrorformenctypemustmatchalle" + + "ngeformmethodformnovalidatetimeformtargethiddenoscripthigh3h" + + "reflanghttp-equivideonclickiframeimageimglyph4isindexismappl" + + "etitemtypemarqueematheadersmallowfullscreenmaxlength5minleng" + + "th6mtextareadonlymultiplemutedoncloseamlessortedoncontextmen" + + "uitemidoncopyoncuechangeoncutondblclickondragendondragentero" + + "ndragexitemreferrerpolicyondragleaveondragoverondragstarticl" + + "eondropzonemptiedondurationchangeonendedonerroronfocusourceo" + + "nhashchangeoninputmodeloninvalidonkeydownloadonkeypresspacer" + + "onkeyupreloadonlanguagechangeonloadeddatalistingonloadedmeta" + + "databindexonloadendonloadstartonmessageerroronmousedownonmou" + + "seenteronmouseleaveonmousemoveonmouseoutputonmouseoveronmous" + + "eupromptonmousewheelonofflineononlineonpagehidesclassearch2o" + + "npageshowbronpastepublicontenteditableonpausemaponplayingonp" + + "opstateonprogresspellcheckedonratechangeonrejectionhandledon" + + "resetonresizesrcdocodeferonscrollonsecuritypolicyviolationau" + + "xclickonseekedonseekingonselectedonshowidthgrouposteronsorta" + + "bleonstalledonstorageonsubmitemscopedonsuspendontoggleonunha" + + "ndledrejectionbeforeprintonunloadonvolumechangeonwaitingonwh" + + "eeloptimumanifestrongoptionbeforeunloaddressrclangsrcsetstyl" + + "esummarysupsvgsystemplateworkertypewrap" diff --git a/html/atom/table_test.go b/html/atom/table_test.go index 8a30762ec2..f5c3cdb4fc 100644 --- a/html/atom/table_test.go +++ b/html/atom/table_test.go @@ -315,6 +315,7 @@ var testAtomList = []string{ "scoped", "script", "seamless", + "search", "section", "select", "selected", diff --git a/html/parse.go b/html/parse.go index 643c674e37..518ee4c94e 100644 --- a/html/parse.go +++ b/html/parse.go @@ -924,7 +924,7 @@ func inBodyIM(p *parser) bool { p.addElement() p.im = inFramesetIM return true - case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Main, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul: + case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Main, a.Menu, a.Nav, a.Ol, a.P, a.Search, a.Section, a.Summary, a.Ul: p.popUntil(buttonScope, a.P) p.addElement() case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6: @@ -1136,7 +1136,7 @@ func inBodyIM(p *parser) bool { return false } return true - case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Main, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul: + case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Main, a.Menu, a.Nav, a.Ol, a.Pre, a.Search, a.Section, a.Summary, a.Ul: p.popUntil(defaultScope, p.tok.DataAtom) case a.Form: if p.oe.contains(a.Template) { diff --git a/html/parse_test.go b/html/parse_test.go index 24b352e2ad..fea110a4b3 100644 --- a/html/parse_test.go +++ b/html/parse_test.go @@ -476,6 +476,23 @@ func TestParseFragmentForeignContentTemplates(t *testing.T) { } } +func TestSearchTagClosesP(t *testing.T) { + data := `

Unclosed paragraphSearch content` + node, err := Parse(strings.NewReader(data)) + if err != nil { + t.Fatalf("Error parsing HTML: %v", err) + } + + var builder strings.Builder + Render(&builder, node) + output := builder.String() + + expected := `

Unclosed paragraph

Search content` + if output != expected { + t.Errorf("Parse(%q) = %q, want %q", data, output, expected) + } +} + func BenchmarkParser(b *testing.B) { buf, err := os.ReadFile("testdata/go1.html") if err != nil { From 12150816f701c912a32a376754ab28dd3878833a Mon Sep 17 00:00:00 2001 From: Oleg Zaytsev Date: Mon, 10 Mar 2025 09:25:54 +0000 Subject: [PATCH 5/8] http2: improve error when server sends HTTP/1 If for some reason the server sends an HTTP/1.1 response starting with "HTTP/1.1 " (9 bytes), http2 transport interprets that as a valid frame header for an expected payload of ~4MB, and fails with non-descriptive messages like "unexpected EOF". This could happen, for example, if ALPN is misconfigured on the server's load balancer. This change attempts to improve that feedback by noting in the error messages whenever the frame header was exactly the "HTTP/1.1 " bytes. Change-Id: I7bf9ed2ee7f299b939b9004386f5bfa30a4e9032 GitHub-Last-Rev: d6e410daa3a1aa5d1c85ff99c929d27b81cf4783 GitHub-Pull-Request: golang/net#224 Reviewed-on: https://go-review.googlesource.com/c/net/+/623155 LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Auto-Submit: Sean Liao Reviewed-by: Damien Neil Reviewed-by: Sean Liao --- http2/frame.go | 11 +++++++++++ http2/transport_test.go | 42 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/http2/frame.go b/http2/frame.go index 81faec7e75..97bd8b06f7 100644 --- a/http2/frame.go +++ b/http2/frame.go @@ -225,6 +225,11 @@ var fhBytes = sync.Pool{ }, } +func invalidHTTP1LookingFrameHeader() FrameHeader { + fh, _ := readFrameHeader(make([]byte, frameHeaderLen), strings.NewReader("HTTP/1.1 ")) + return fh +} + // ReadFrameHeader reads 9 bytes from r and returns a FrameHeader. // Most users should use Framer.ReadFrame instead. func ReadFrameHeader(r io.Reader) (FrameHeader, error) { @@ -503,10 +508,16 @@ func (fr *Framer) ReadFrame() (Frame, error) { return nil, err } if fh.Length > fr.maxReadSize { + if fh == invalidHTTP1LookingFrameHeader() { + return nil, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", err) + } return nil, ErrFrameTooLarge } payload := fr.getReadBuf(fh.Length) if _, err := io.ReadFull(fr.r, payload); err != nil { + if fh == invalidHTTP1LookingFrameHeader() { + return nil, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", err) + } return nil, err } f, err := typeFrameParser(fh.Type)(fr.frameCache, fh, fr.countError, payload) diff --git a/http2/transport_test.go b/http2/transport_test.go index 1eeb76e06e..596499f3ea 100644 --- a/http2/transport_test.go +++ b/http2/transport_test.go @@ -272,6 +272,48 @@ func TestTransport(t *testing.T) { } } +func TestTransportFailureErrorForHTTP1Response(t *testing.T) { + const expectedHTTP1PayloadHint = "frame header looked like an HTTP/1.1 header" + + ts := httptest.NewServer(http.NewServeMux()) + t.Cleanup(ts.Close) + + for _, tc := range []struct { + name string + maxFrameSize uint32 + expectedErrorIs error + }{ + { + name: "with default max frame size", + maxFrameSize: 0, + }, + { + name: "with enough frame size to start reading", + maxFrameSize: invalidHTTP1LookingFrameHeader().Length + 1, + }, + } { + t.Run(tc.name, func(t *testing.T) { + tr := &Transport{ + DialTLSContext: func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) { + return net.Dial(network, addr) + }, + MaxReadFrameSize: tc.maxFrameSize, + AllowHTTP: true, + } + + req, err := http.NewRequest("GET", ts.URL, nil) + if err != nil { + t.Fatal(err) + } + + _, err = tr.RoundTrip(req) + if !strings.Contains(err.Error(), expectedHTTP1PayloadHint) { + t.Errorf("expected error to contain %q, got %v", expectedHTTP1PayloadHint, err) + } + }) + } +} + func testTransportReusesConns(t *testing.T, useClient, wantSame bool, modReq func(*http.Request)) { ts := newTestServer(t, func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, r.RemoteAddr) From 1f1fa29e0a46fffe18c43a9da8daa5a0b180dfa9 Mon Sep 17 00:00:00 2001 From: Sean Liao Date: Thu, 20 Mar 2025 00:07:43 +0000 Subject: [PATCH 6/8] publicsuffix: regenerate table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated to revision 2c960dac3d39ba521eb5db9da192968f5be0aded (2025-03-18T07:22:13Z). Last updated on 2023-08 xn--czrw28b.tw / 商業.tw was removed in https://github.com/publicsuffix/list/pull/2289 blogspot ccTLDs were removed in https://github.com/publicsuffix/list/pull/2327 Change-Id: I749d014ab667502d9a112e0be645413ec6a7a66e Reviewed-on: https://go-review.googlesource.com/c/net/+/659276 Reviewed-by: Damien Neil Reviewed-by: Cherry Mui LUCI-TryBot-Result: Go LUCI --- publicsuffix/data/children | Bin 2976 -> 3484 bytes publicsuffix/data/nodes | Bin 46610 -> 50500 bytes publicsuffix/data/text | 2 +- publicsuffix/example_test.go | 2 - publicsuffix/list.go | 2 +- publicsuffix/list_test.go | 34 +- publicsuffix/table.go | 12 +- publicsuffix/table_test.go | 4760 ++++++++++++++++++++++------------ 8 files changed, 3107 insertions(+), 1705 deletions(-) diff --git a/publicsuffix/data/children b/publicsuffix/data/children index 08261bffd196fd6942b4cebb5ff06e0ffe53808d..986a246a6c05ca5b49c1d9f3f7fc84cb6628b64e 100644 GIT binary patch literal 3484 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 diff --git a/publicsuffix/data/nodes b/publicsuffix/data/nodes index 1dae6ede8f292889cb4252aa473312fea1bac46a..38b8999600c8cb35fbceee1b938b5de72da1345f 100644 GIT binary patch literal 50500 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

IZ*i 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

kM-i?FIu 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 foo.org org is ICANN Managed // > foo.co.uk co.uk is ICANN Managed // > foo.dyndns.org dyndns.org is Privately Managed - // > foo.blogspot.co.uk blogspot.co.uk is Privately Managed // > cromulent cromulent is Unmanaged } diff --git a/publicsuffix/list.go b/publicsuffix/list.go index 56069d0429..047cb30eb1 100644 --- a/publicsuffix/list.go +++ b/publicsuffix/list.go @@ -77,7 +77,7 @@ func (list) String() string { // privately managed domain (and in practice, not a top level domain) or an // unmanaged top level domain (and not explicitly mentioned in the // publicsuffix.org list). For example, "foo.org" and "foo.co.uk" are ICANN -// domains, "foo.dyndns.org" and "foo.blogspot.co.uk" are private domains and +// domains, "foo.dyndns.org" is a private domain and // "cromulent" is an unmanaged top level domain. // // Use cases for distinguishing ICANN domains like "foo.com" from private diff --git a/publicsuffix/list_test.go b/publicsuffix/list_test.go index 090c431139..7a1bb0fe5c 100644 --- a/publicsuffix/list_test.go +++ b/publicsuffix/list_test.go @@ -63,12 +63,11 @@ func TestFind(t *testing.T) { func TestICANN(t *testing.T) { testCases := map[string]bool{ - "foo.org": true, - "foo.co.uk": true, - "foo.dyndns.org": false, - "foo.go.dyndns.org": false, - "foo.blogspot.co.uk": false, - "foo.intranet": false, + "foo.org": true, + "foo.co.uk": true, + "foo.dyndns.org": false, + "foo.go.dyndns.org": false, + "foo.intranet": false, } for domain, want := range testCases { _, got := PublicSuffix(domain) @@ -111,16 +110,12 @@ var publicSuffixTestCases = []struct { // net.ar // org.ar // tur.ar - // blogspot.com.ar (in the PRIVATE DOMAIN section). {"ar", "ar", true}, {"www.ar", "ar", true}, {"nic.ar", "ar", true}, {"www.nic.ar", "ar", true}, {"com.ar", "com.ar", true}, {"www.com.ar", "com.ar", true}, - {"blogspot.com.ar", "blogspot.com.ar", false}, // PRIVATE DOMAIN. - {"www.blogspot.com.ar", "blogspot.com.ar", false}, // PRIVATE DOMAIN. - {"www.xxx.yyy.zzz.blogspot.com.ar", "blogspot.com.ar", false}, // PRIVATE DOMAIN. {"logspot.com.ar", "com.ar", true}, {"zlogspot.com.ar", "com.ar", true}, {"zblogspot.com.ar", "com.ar", true}, @@ -170,20 +165,13 @@ var publicSuffixTestCases = []struct { // game.tw // ebiz.tw // club.tw - // 網路.tw (xn--zf0ao64a.tw) - // 組織.tw (xn--uc0atv.tw) - // 商業.tw (xn--czrw28b.tw) - // blogspot.tw + // 台灣.tw (xn--kpry57d.tw) {"tw", "tw", true}, {"aaa.tw", "tw", true}, {"www.aaa.tw", "tw", true}, {"xn--czrw28b.aaa.tw", "tw", true}, {"edu.tw", "edu.tw", true}, {"www.edu.tw", "edu.tw", true}, - {"xn--czrw28b.edu.tw", "edu.tw", true}, - {"xn--czrw28b.tw", "xn--czrw28b.tw", true}, - {"www.xn--czrw28b.tw", "xn--czrw28b.tw", true}, - {"xn--uc0atv.xn--czrw28b.tw", "xn--czrw28b.tw", true}, {"xn--kpry57d.tw", "tw", true}, // The .uk rules are: @@ -199,7 +187,6 @@ var publicSuffixTestCases = []struct { // plc.uk // police.uk // *.sch.uk - // blogspot.co.uk (in the PRIVATE DOMAIN section). {"uk", "uk", true}, {"aaa.uk", "uk", true}, {"www.aaa.uk", "uk", true}, @@ -210,9 +197,6 @@ var publicSuffixTestCases = []struct { {"www.sch.uk", "www.sch.uk", true}, {"co.uk", "co.uk", true}, {"www.co.uk", "co.uk", true}, - {"blogspot.co.uk", "blogspot.co.uk", false}, // PRIVATE DOMAIN. - {"blogspot.nic.uk", "uk", true}, - {"blogspot.sch.uk", "blogspot.sch.uk", true}, // The .рф rules are // рф (xn--p1ai) @@ -322,10 +306,10 @@ func TestNumICANNRules(t *testing.T) { // Check the last ICANN and first Private rules. If the underlying public // suffix list changes, we may need to update these hard-coded checks. if got, want := rules[numICANNRules-1], "zuerich"; got != want { - t.Errorf("last ICANN rule: got %q, wawnt %q", got, want) + t.Errorf("last ICANN rule: got %q, want %q", got, want) } - if got, want := rules[numICANNRules], "cc.ua"; got != want { - t.Errorf("first Private rule: got %q, wawnt %q", got, want) + if got, want := rules[numICANNRules], "co.krd"; got != want { + t.Errorf("first Private rule: got %q, want %q", got, want) } } diff --git a/publicsuffix/table.go b/publicsuffix/table.go index 78d400fa65..0fadf9527f 100644 --- a/publicsuffix/table.go +++ b/publicsuffix/table.go @@ -4,7 +4,7 @@ package publicsuffix import _ "embed" -const version = "publicsuffix.org's public_suffix_list.dat, git revision 63cbc63d470d7b52c35266aa96c4c98c96ec499c (2023-08-03T10:01:25Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision 2c960dac3d39ba521eb5db9da192968f5be0aded (2025-03-18T07:22:13Z)" const ( nodesBits = 40 @@ -26,7 +26,7 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1474 +const numTLD = 1454 // text is the combined text of all labels. // @@ -63,8 +63,8 @@ var nodes uint40String //go:embed data/children var children uint32String -// max children 743 (capacity 1023) -// max text offset 30876 (capacity 65535) +// max children 870 (capacity 1023) +// max text offset 31785 (capacity 65535) // max text length 31 (capacity 63) -// max hi 9322 (capacity 16383) -// max lo 9317 (capacity 16383) +// max hi 10100 (capacity 16383) +// max lo 10095 (capacity 16383) diff --git a/publicsuffix/table_test.go b/publicsuffix/table_test.go index a297b3b0dd..247e695a88 100644 --- a/publicsuffix/table_test.go +++ b/publicsuffix/table_test.go @@ -2,41 +2,39 @@ package publicsuffix -const numICANNRules = 6893 +const numICANNRules = 6871 var rules = [...]string{ "ac", "com.ac", "edu.ac", "gov.ac", - "net.ac", "mil.ac", + "net.ac", "org.ac", "ad", - "nom.ad", "ae", + "ac.ae", "co.ae", + "gov.ae", + "mil.ae", "net.ae", "org.ae", "sch.ae", - "ac.ae", - "gov.ae", - "mil.ae", "aero", + "airline.aero", + "airport.aero", "accident-investigation.aero", "accident-prevention.aero", "aerobatic.aero", "aeroclub.aero", "aerodrome.aero", "agents.aero", - "aircraft.aero", - "airline.aero", - "airport.aero", "air-surveillance.aero", - "airtraffic.aero", "air-traffic-control.aero", + "aircraft.aero", + "airtraffic.aero", "ambulance.aero", - "amusement.aero", "association.aero", "author.aero", "ballooning.aero", @@ -67,6 +65,7 @@ var rules = [...]string{ "express.aero", "federation.aero", "flight.aero", + "freight.aero", "fuel.aero", "gliding.aero", "government.aero", @@ -81,6 +80,7 @@ var rules = [...]string{ "logistics.aero", "magazine.aero", "maintenance.aero", + "marketplace.aero", "media.aero", "microlight.aero", "modelling.aero", @@ -103,6 +103,7 @@ var rules = [...]string{ "skydiving.aero", "software.aero", "student.aero", + "taxi.aero", "trader.aero", "trading.aero", "trainer.aero", @@ -110,21 +111,21 @@ var rules = [...]string{ "workinggroup.aero", "works.aero", "af", - "gov.af", "com.af", - "org.af", - "net.af", "edu.af", + "gov.af", + "net.af", + "org.af", "ag", + "co.ag", "com.ag", - "org.ag", "net.ag", - "co.ag", "nom.ag", + "org.ag", "ai", - "off.ai", "com.ai", "net.ai", + "off.ai", "org.ai", "al", "com.al", @@ -140,12 +141,15 @@ var rules = [...]string{ "net.am", "org.am", "ao", + "co.ao", "ed.ao", + "edu.ao", + "gov.ao", "gv.ao", + "it.ao", "og.ao", - "co.ao", + "org.ao", "pb.ao", - "it.ao", "aq", "ar", "bet.ar", @@ -164,6 +168,7 @@ var rules = [...]string{ "tur.ar", "arpa", "e164.arpa", + "home.arpa", "in-addr.arpa", "ip6.arpa", "iris.arpa", @@ -174,19 +179,18 @@ var rules = [...]string{ "asia", "at", "ac.at", + "sth.ac.at", "co.at", "gv.at", "or.at", - "sth.ac.at", "au", + "asn.au", "com.au", - "net.au", - "org.au", "edu.au", "gov.au", - "asn.au", "id.au", - "info.au", + "net.au", + "org.au", "conf.au", "oz.au", "act.au", @@ -216,18 +220,19 @@ var rules = [...]string{ "com.aw", "ax", "az", + "biz.az", + "co.az", "com.az", - "net.az", - "int.az", - "gov.az", - "org.az", "edu.az", + "gov.az", "info.az", - "pp.az", + "int.az", "mil.az", "name.az", + "net.az", + "org.az", + "pp.az", "pro.az", - "biz.az", "ba", "com.ba", "edu.ba", @@ -252,6 +257,16 @@ var rules = [...]string{ "bf", "gov.bf", "bg", + "0.bg", + "1.bg", + "2.bg", + "3.bg", + "4.bg", + "5.bg", + "6.bg", + "7.bg", + "8.bg", + "9.bg", "a.bg", "b.bg", "c.bg", @@ -278,22 +293,12 @@ var rules = [...]string{ "x.bg", "y.bg", "z.bg", - "0.bg", - "1.bg", - "2.bg", - "3.bg", - "4.bg", - "5.bg", - "6.bg", - "7.bg", - "8.bg", - "9.bg", "bh", "com.bh", "edu.bh", + "gov.bh", "net.bh", "org.bh", - "gov.bh", "bi", "co.bi", "com.bi", @@ -318,8 +323,8 @@ var rules = [...]string{ "net.bj", "org.bj", "ote.bj", - "resto.bj", "restaurant.bj", + "resto.bj", "tourism.bj", "univ.bj", "bm", @@ -339,9 +344,9 @@ var rules = [...]string{ "edu.bo", "gob.bo", "int.bo", - "org.bo", - "net.bo", "mil.bo", + "net.bo", + "org.bo", "tv.bo", "web.bo", "academia.bo", @@ -366,9 +371,9 @@ var rules = [...]string{ "nombre.bo", "noticias.bo", "patria.bo", + "plurinacional.bo", "politica.bo", "profesional.bo", - "plurinacional.bo", "pueblo.bo", "revista.bo", "salud.bo", @@ -393,6 +398,7 @@ var rules = [...]string{ "b.br", "barueri.br", "belem.br", + "bet.br", "bhz.br", "bib.br", "bio.br", @@ -479,6 +485,7 @@ var rules = [...]string{ "jor.br", "jus.br", "leg.br", + "leilao.br", "lel.br", "log.br", "londrina.br", @@ -547,10 +554,10 @@ var rules = [...]string{ "zlg.br", "bs", "com.bs", - "net.bs", - "org.bs", "edu.bs", "gov.bs", + "net.bs", + "org.bs", "bt", "com.bt", "edu.bt", @@ -559,7 +566,10 @@ var rules = [...]string{ "org.bt", "bv", "bw", + "ac.bw", "co.bw", + "gov.bw", + "net.bw", "org.bw", "by", "gov.by", @@ -567,11 +577,12 @@ var rules = [...]string{ "com.by", "of.by", "bz", + "co.bz", "com.bz", - "net.bz", - "org.bz", "edu.bz", "gov.bz", + "net.bz", + "org.bz", "ca", "ab.ca", "bc.ca", @@ -596,21 +607,19 @@ var rules = [...]string{ "cg", "ch", "ci", - "org.ci", - "or.ci", - "com.ci", + "ac.ci", + "xn--aroport-bya.ci", + "asso.ci", "co.ci", - "edu.ci", + "com.ci", "ed.ci", - "ac.ci", - "net.ci", + "edu.ci", "go.ci", - "asso.ci", - "xn--aroport-bya.ci", - "int.ci", - "presse.ci", - "md.ci", "gouv.ci", + "int.ci", + "net.ci", + "or.ci", + "org.ci", "*.ck", "!www.ck", "cl", @@ -628,30 +637,32 @@ var rules = [...]string{ "com.cn", "edu.cn", "gov.cn", + "mil.cn", "net.cn", "org.cn", - "mil.cn", "xn--55qx5d.cn", - "xn--io0a7i.cn", "xn--od0alg.cn", + "xn--io0a7i.cn", "ah.cn", "bj.cn", "cq.cn", "fj.cn", "gd.cn", "gs.cn", - "gz.cn", "gx.cn", + "gz.cn", "ha.cn", "hb.cn", "he.cn", "hi.cn", + "hk.cn", "hl.cn", "hn.cn", "jl.cn", "js.cn", "jx.cn", "ln.cn", + "mo.cn", "nm.cn", "nx.cn", "qh.cn", @@ -661,27 +672,19 @@ var rules = [...]string{ "sn.cn", "sx.cn", "tj.cn", + "tw.cn", "xj.cn", "xz.cn", "yn.cn", "zj.cn", - "hk.cn", - "mo.cn", - "tw.cn", "co", - "arts.co", "com.co", "edu.co", - "firm.co", "gov.co", - "info.co", - "int.co", "mil.co", "net.co", "nom.co", "org.co", - "rec.co", - "web.co", "com", "coop", "cr", @@ -695,16 +698,20 @@ var rules = [...]string{ "cu", "com.cu", "edu.cu", - "org.cu", - "net.cu", - "gov.cu", + "gob.cu", "inf.cu", + "nat.cu", + "net.cu", + "org.cu", "cv", "com.cv", "edu.cv", + "id.cv", "int.cv", + "net.cv", "nome.cv", "org.cv", + "publ.cv", "cw", "com.cw", "edu.cw", @@ -730,11 +737,12 @@ var rules = [...]string{ "dj", "dk", "dm", + "co.dm", "com.dm", - "net.dm", - "org.dm", "edu.dm", "gov.dm", + "net.dm", + "org.dm", "do", "art.do", "com.do", @@ -752,62 +760,67 @@ var rules = [...]string{ "com.dz", "edu.dz", "gov.dz", - "org.dz", "net.dz", + "org.dz", "pol.dz", "soc.dz", "tm.dz", "ec", "com.ec", - "info.ec", - "net.ec", + "edu.ec", "fin.ec", + "gob.ec", + "gov.ec", + "info.ec", "k12.ec", "med.ec", - "pro.ec", - "org.ec", - "edu.ec", - "gov.ec", - "gob.ec", "mil.ec", + "net.ec", + "org.ec", + "pro.ec", "edu", "ee", + "aip.ee", + "com.ee", "edu.ee", + "fie.ee", "gov.ee", - "riik.ee", "lib.ee", "med.ee", - "com.ee", - "pri.ee", - "aip.ee", "org.ee", - "fie.ee", + "pri.ee", + "riik.ee", "eg", + "ac.eg", "com.eg", "edu.eg", "eun.eg", "gov.eg", + "info.eg", + "me.eg", "mil.eg", "name.eg", "net.eg", "org.eg", "sci.eg", + "sport.eg", + "tv.eg", "*.er", "es", "com.es", + "edu.es", + "gob.es", "nom.es", "org.es", - "gob.es", - "edu.es", "et", + "biz.et", "com.et", - "gov.et", - "org.et", "edu.et", - "biz.et", - "name.et", + "gov.et", "info.et", + "name.et", "net.et", + "org.et", "eu", "fi", "aland.fi", @@ -823,11 +836,11 @@ var rules = [...]string{ "org.fj", "pro.fj", "*.fk", + "fm", "com.fm", "edu.fm", "net.fm", "org.fm", - "fm", "fo", "fr", "asso.fr", @@ -836,34 +849,23 @@ var rules = [...]string{ "nom.fr", "prd.fr", "tm.fr", - "aeroport.fr", - "avocat.fr", "avoues.fr", "cci.fr", - "chambagri.fr", - "chirurgiens-dentistes.fr", - "experts-comptables.fr", - "geometre-expert.fr", "greta.fr", "huissier-justice.fr", - "medecin.fr", - "notaires.fr", - "pharmacien.fr", - "port.fr", - "veterinaire.fr", "ga", "gb", + "gd", "edu.gd", "gov.gd", - "gd", "ge", "com.ge", "edu.ge", "gov.ge", - "org.ge", - "mil.ge", "net.ge", + "org.ge", "pvt.ge", + "school.ge", "gf", "gg", "co.gg", @@ -873,14 +875,14 @@ var rules = [...]string{ "com.gh", "edu.gh", "gov.gh", - "org.gh", "mil.gh", + "org.gh", "gi", "com.gi", - "ltd.gi", + "edu.gi", "gov.gi", + "ltd.gi", "mod.gi", - "edu.gi", "org.gi", "gl", "co.gl", @@ -894,23 +896,23 @@ var rules = [...]string{ "com.gn", "edu.gn", "gov.gn", - "org.gn", "net.gn", + "org.gn", "gov", "gp", + "asso.gp", "com.gp", - "net.gp", - "mobi.gp", "edu.gp", + "mobi.gp", + "net.gp", "org.gp", - "asso.gp", "gq", "gr", "com.gr", "edu.gr", + "gov.gr", "net.gr", "org.gr", - "gov.gr", "gs", "gt", "com.gt", @@ -944,81 +946,81 @@ var rules = [...]string{ "idv.hk", "net.hk", "org.hk", + "xn--ciqpn.hk", + "xn--gmqw5a.hk", "xn--55qx5d.hk", - "xn--wcvs22d.hk", - "xn--lcvr32d.hk", "xn--mxtq1m.hk", - "xn--gmqw5a.hk", - "xn--ciqpn.hk", + "xn--lcvr32d.hk", + "xn--wcvs22d.hk", "xn--gmq050i.hk", + "xn--uc0atv.hk", + "xn--uc0ay4a.hk", + "xn--od0alg.hk", "xn--zf0avx.hk", - "xn--io0a7i.hk", "xn--mk0axi.hk", - "xn--od0alg.hk", - "xn--od0aq3b.hk", "xn--tn0ag.hk", - "xn--uc0atv.hk", - "xn--uc0ay4a.hk", + "xn--od0aq3b.hk", + "xn--io0a7i.hk", "hm", "hn", "com.hn", "edu.hn", - "org.hn", - "net.hn", - "mil.hn", "gob.hn", + "mil.hn", + "net.hn", + "org.hn", "hr", - "iz.hr", + "com.hr", "from.hr", + "iz.hr", "name.hr", - "com.hr", "ht", + "adult.ht", + "art.ht", + "asso.ht", "com.ht", - "shop.ht", + "coop.ht", + "edu.ht", "firm.ht", + "gouv.ht", "info.ht", - "adult.ht", + "med.ht", "net.ht", - "pro.ht", "org.ht", - "med.ht", - "art.ht", - "coop.ht", + "perso.ht", "pol.ht", - "asso.ht", - "edu.ht", + "pro.ht", "rel.ht", - "gouv.ht", - "perso.ht", + "shop.ht", "hu", - "co.hu", - "info.hu", - "org.hu", - "priv.hu", - "sport.hu", - "tm.hu", "2000.hu", "agrar.hu", "bolt.hu", "casino.hu", "city.hu", + "co.hu", "erotica.hu", "erotika.hu", "film.hu", "forum.hu", "games.hu", "hotel.hu", + "info.hu", "ingatlan.hu", "jogasz.hu", "konyvelo.hu", "lakas.hu", "media.hu", "news.hu", + "org.hu", + "priv.hu", "reklam.hu", "sex.hu", "shop.hu", + "sport.hu", "suli.hu", "szex.hu", + "tm.hu", "tozsde.hu", "utazas.hu", "video.hu", @@ -1054,11 +1056,11 @@ var rules = [...]string{ "im", "ac.im", "co.im", - "com.im", "ltd.co.im", + "plc.co.im", + "com.im", "net.im", "org.im", - "plc.co.im", "tt.im", "tv.im", "in", @@ -1107,14 +1109,21 @@ var rules = [...]string{ "int", "eu.int", "io", + "co.io", "com.io", + "edu.io", + "gov.io", + "mil.io", + "net.io", + "nom.io", + "org.io", "iq", - "gov.iq", + "com.iq", "edu.iq", + "gov.iq", "mil.iq", - "com.iq", - "org.iq", "net.iq", + "org.iq", "ir", "ac.ir", "co.ir", @@ -1126,15 +1135,9 @@ var rules = [...]string{ "xn--mgba3a4f16a.ir", "xn--mgba3a4fra.ir", "is", - "net.is", - "com.is", - "edu.is", - "gov.is", - "org.is", - "int.is", "it", - "gov.it", "edu.it", + "gov.it", "abr.it", "abruzzo.it", "aosta-valley.it", @@ -1193,6 +1196,7 @@ var rules = [...]string{ "xn--trentin-sdtirol-7vb.it", "trentin-sued-tirol.it", "trentin-suedtirol.it", + "trentino.it", "trentino-a-adige.it", "trentino-aadige.it", "trentino-alto-adige.it", @@ -1205,7 +1209,6 @@ var rules = [...]string{ "xn--trentino-sdtirol-szb.it", "trentino-sued-tirol.it", "trentino-suedtirol.it", - "trentino.it", "trentinoa-adige.it", "trentinoaadige.it", "trentinoalto-adige.it", @@ -1276,10 +1279,10 @@ var rules = [...]string{ "av.it", "avellino.it", "ba.it", + "balsan.it", "balsan-sudtirol.it", "xn--balsan-sdtirol-nsb.it", "balsan-suedtirol.it", - "balsan.it", "bari.it", "barletta-trani-andria.it", "barlettatraniandria.it", @@ -1293,21 +1296,21 @@ var rules = [...]string{ "bn.it", "bo.it", "bologna.it", - "bolzano-altoadige.it", "bolzano.it", + "bolzano-altoadige.it", + "bozen.it", "bozen-sudtirol.it", "xn--bozen-sdtirol-2ob.it", "bozen-suedtirol.it", - "bozen.it", "br.it", "brescia.it", "brindisi.it", "bs.it", "bt.it", + "bulsan.it", "bulsan-sudtirol.it", "xn--bulsan-sdtirol-nsb.it", "bulsan-suedtirol.it", - "bulsan.it", "bz.it", "ca.it", "cagliari.it", @@ -1409,9 +1412,9 @@ var rules = [...]string{ "mn.it", "mo.it", "modena.it", + "monza.it", "monza-brianza.it", "monza-e-della-brianza.it", - "monza.it", "monzabrianza.it", "monzaebrianza.it", "monzaedellabrianza.it", @@ -1490,8 +1493,8 @@ var rules = [...]string{ "sp.it", "sr.it", "ss.it", - "suedtirol.it", "xn--sdtirol-n2a.it", + "suedtirol.it", "sv.it", "ta.it", "taranto.it", @@ -1545,14 +1548,20 @@ var rules = [...]string{ "org.je", "*.jm", "jo", + "agri.jo", + "ai.jo", "com.jo", - "org.jo", - "net.jo", "edu.jo", - "sch.jo", + "eng.jo", + "fm.jo", "gov.jo", "mil.jo", - "name.jo", + "net.jo", + "org.jo", + "per.jo", + "phd.jo", + "sch.jo", + "tv.jo", "jobs", "jp", "ac.jp", @@ -1611,26 +1620,14 @@ var rules = [...]string{ "yamagata.jp", "yamaguchi.jp", "yamanashi.jp", - "xn--4pvxs.jp", - "xn--vgu402c.jp", - "xn--c3s14m.jp", + "xn--ehqz56n.jp", + "xn--1lqs03n.jp", + "xn--qqqt11m.jp", "xn--f6qx53a.jp", - "xn--8pvr4u.jp", - "xn--uist22h.jp", "xn--djrs72d6uy.jp", "xn--mkru45i.jp", "xn--0trq7p7nn.jp", - "xn--8ltr62k.jp", - "xn--2m4a15e.jp", - "xn--efvn9s.jp", - "xn--32vp30h.jp", - "xn--4it797k.jp", - "xn--1lqs71d.jp", - "xn--5rtp49c.jp", "xn--5js045d.jp", - "xn--ehqz56n.jp", - "xn--1lqs03n.jp", - "xn--qqqt11m.jp", "xn--kbrq7o.jp", "xn--pssu33l.jp", "xn--ntsq17g.jp", @@ -1640,37 +1637,49 @@ var rules = [...]string{ "xn--6orx2r.jp", "xn--rht61e.jp", "xn--rht27z.jp", - "xn--djty4k.jp", "xn--nit225k.jp", "xn--rht3d.jp", + "xn--djty4k.jp", "xn--klty5x.jp", "xn--kltx9a.jp", "xn--kltp7d.jp", + "xn--c3s14m.jp", + "xn--vgu402c.jp", + "xn--efvn9s.jp", + "xn--1lqs71d.jp", + "xn--4pvxs.jp", "xn--uuwu58a.jp", "xn--zbx025d.jp", + "xn--8pvr4u.jp", + "xn--5rtp49c.jp", "xn--ntso0iqx3a.jp", "xn--elqq16h.jp", "xn--4it168d.jp", "xn--klt787d.jp", "xn--rny31h.jp", "xn--7t0a264c.jp", + "xn--uist22h.jp", + "xn--8ltr62k.jp", + "xn--2m4a15e.jp", + "xn--32vp30h.jp", + "xn--4it797k.jp", "xn--5rtq34k.jp", "xn--k7yn95e.jp", "xn--tor131o.jp", "xn--d5qv7z876c.jp", "*.kawasaki.jp", - "*.kitakyushu.jp", - "*.kobe.jp", - "*.nagoya.jp", - "*.sapporo.jp", - "*.sendai.jp", - "*.yokohama.jp", "!city.kawasaki.jp", + "*.kitakyushu.jp", "!city.kitakyushu.jp", + "*.kobe.jp", "!city.kobe.jp", + "*.nagoya.jp", "!city.nagoya.jp", + "*.sapporo.jp", "!city.sapporo.jp", + "*.sendai.jp", "!city.sendai.jp", + "*.yokohama.jp", "!city.yokohama.jp", "aisai.aichi.jp", "ama.aichi.jp", @@ -3356,44 +3365,44 @@ var rules = [...]string{ "or.ke", "sc.ke", "kg", - "org.kg", - "net.kg", "com.kg", "edu.kg", "gov.kg", "mil.kg", + "net.kg", + "org.kg", "*.kh", "ki", - "edu.ki", "biz.ki", - "net.ki", - "org.ki", + "com.ki", + "edu.ki", "gov.ki", "info.ki", - "com.ki", + "net.ki", + "org.ki", "km", - "org.km", - "nom.km", + "ass.km", + "com.km", + "edu.km", "gov.km", + "mil.km", + "nom.km", + "org.km", "prd.km", "tm.km", - "edu.km", - "mil.km", - "ass.km", - "com.km", - "coop.km", "asso.km", - "presse.km", + "coop.km", + "gouv.km", "medecin.km", "notaires.km", "pharmaciens.km", + "presse.km", "veterinaire.km", - "gouv.km", "kn", - "net.kn", - "org.kn", "edu.kn", "gov.kn", + "net.kn", + "org.kn", "kp", "com.kp", "edu.kp", @@ -3403,11 +3412,15 @@ var rules = [...]string{ "tra.kp", "kr", "ac.kr", + "ai.kr", "co.kr", "es.kr", "go.kr", "hs.kr", + "io.kr", + "it.kr", "kg.kr", + "me.kr", "mil.kr", "ms.kr", "ne.kr", @@ -3445,21 +3458,21 @@ var rules = [...]string{ "net.ky", "org.ky", "kz", - "org.kz", + "com.kz", "edu.kz", - "net.kz", "gov.kz", "mil.kz", - "com.kz", + "net.kz", + "org.kz", "la", - "int.la", - "net.la", - "info.la", + "com.la", "edu.la", "gov.la", - "per.la", - "com.la", + "info.la", + "int.la", + "net.la", "org.la", + "per.la", "lb", "com.lb", "edu.lb", @@ -3467,35 +3480,35 @@ var rules = [...]string{ "net.lb", "org.lb", "lc", - "com.lc", - "net.lc", "co.lc", - "org.lc", + "com.lc", "edu.lc", "gov.lc", + "net.lc", + "org.lc", "li", "lk", - "gov.lk", - "sch.lk", - "net.lk", - "int.lk", + "ac.lk", + "assn.lk", "com.lk", - "org.lk", "edu.lk", + "gov.lk", + "grp.lk", + "hotel.lk", + "int.lk", + "ltd.lk", + "net.lk", "ngo.lk", + "org.lk", + "sch.lk", "soc.lk", "web.lk", - "ltd.lk", - "assn.lk", - "grp.lk", - "hotel.lk", - "ac.lk", "lr", "com.lr", "edu.lr", "gov.lr", - "org.lr", "net.lr", + "org.lr", "ls", "ac.ls", "biz.ls", @@ -3510,84 +3523,89 @@ var rules = [...]string{ "gov.lt", "lu", "lv", + "asn.lv", "com.lv", + "conf.lv", "edu.lv", "gov.lv", - "org.lv", - "mil.lv", "id.lv", + "mil.lv", "net.lv", - "asn.lv", - "conf.lv", + "org.lv", "ly", "com.ly", - "net.ly", - "gov.ly", - "plc.ly", "edu.ly", - "sch.ly", + "gov.ly", + "id.ly", "med.ly", + "net.ly", "org.ly", - "id.ly", + "plc.ly", + "sch.ly", "ma", + "ac.ma", "co.ma", - "net.ma", "gov.ma", + "net.ma", "org.ma", - "ac.ma", "press.ma", "mc", - "tm.mc", "asso.mc", + "tm.mc", "md", "me", + "ac.me", "co.me", - "net.me", - "org.me", "edu.me", - "ac.me", "gov.me", "its.me", + "net.me", + "org.me", "priv.me", "mg", - "org.mg", - "nom.mg", - "gov.mg", - "prd.mg", - "tm.mg", + "co.mg", + "com.mg", "edu.mg", + "gov.mg", "mil.mg", - "com.mg", - "co.mg", + "nom.mg", + "org.mg", + "prd.mg", "mh", "mil", "mk", "com.mk", - "org.mk", - "net.mk", "edu.mk", "gov.mk", "inf.mk", "name.mk", + "net.mk", + "org.mk", "ml", + "ac.ml", + "art.ml", + "asso.ml", "com.ml", "edu.ml", "gouv.ml", "gov.ml", + "info.ml", + "inst.ml", "net.ml", "org.ml", + "pr.ml", "presse.ml", "*.mm", "mn", - "gov.mn", "edu.mn", + "gov.mn", "org.mn", "mo", "com.mo", - "net.mo", - "org.mo", "edu.mo", "gov.mo", + "net.mo", + "org.mo", "mobi", "mp", "mq", @@ -3605,13 +3623,13 @@ var rules = [...]string{ "net.mt", "org.mt", "mu", - "com.mu", - "net.mu", - "org.mu", - "gov.mu", "ac.mu", "co.mu", + "com.mu", + "gov.mu", + "net.mu", "or.mu", + "org.mu", "museum", "mv", "aero.mv", @@ -3637,15 +3655,14 @@ var rules = [...]string{ "edu.mw", "gov.mw", "int.mw", - "museum.mw", "net.mw", "org.mw", "mx", "com.mx", - "org.mx", - "gob.mx", "edu.mx", + "gob.mx", "net.mx", + "org.mx", "my", "biz.my", "com.my", @@ -3665,22 +3682,11 @@ var rules = [...]string{ "net.mz", "org.mz", "na", - "info.na", - "pro.na", - "name.na", - "school.na", - "or.na", - "dr.na", - "us.na", - "mx.na", - "ca.na", - "in.na", - "cc.na", - "tv.na", - "ws.na", - "mobi.na", + "alt.na", "co.na", "com.na", + "gov.na", + "net.na", "org.na", "name", "nc", @@ -3689,16 +3695,16 @@ var rules = [...]string{ "ne", "net", "nf", - "com.nf", - "net.nf", - "per.nf", - "rec.nf", - "web.nf", "arts.nf", + "com.nf", "firm.nf", "info.nf", + "net.nf", "other.nf", + "per.nf", + "rec.nf", "store.nf", + "web.nf", "ng", "com.ng", "edu.ng", @@ -3728,17 +3734,17 @@ var rules = [...]string{ "nl", "no", "fhs.no", - "vgs.no", - "fylkesbibl.no", "folkebibl.no", - "museum.no", + "fylkesbibl.no", "idrett.no", + "museum.no", "priv.no", - "mil.no", - "stat.no", + "vgs.no", "dep.no", - "kommune.no", "herad.no", + "kommune.no", + "mil.no", + "stat.no", "aa.no", "ah.no", "bu.no", @@ -3786,10 +3792,10 @@ var rules = [...]string{ "algard.no", "xn--lgrd-poac.no", "arna.no", - "brumunddal.no", - "bryne.no", "bronnoysund.no", "xn--brnnysund-m8ac.no", + "brumunddal.no", + "bryne.no", "drobak.no", "xn--drbak-wua.no", "egersund.no", @@ -3832,27 +3838,32 @@ var rules = [...]string{ "tananger.no", "tranby.no", "vossevangen.no", + "aarborte.no", + "aejrie.no", "afjord.no", "xn--fjord-lra.no", "agdenes.no", + "nes.akershus.no", + "aknoluokta.no", + "xn--koluokta-7ya57h.no", "al.no", "xn--l-1fa.no", + "alaheadju.no", + "xn--laheadju-7ya.no", "alesund.no", "xn--lesund-hua.no", "alstahaug.no", "alta.no", "xn--lt-liac.no", - "alaheadju.no", - "xn--laheadju-7ya.no", "alvdal.no", "amli.no", "xn--mli-tla.no", "amot.no", "xn--mot-tla.no", + "andasuolo.no", "andebu.no", "andoy.no", "xn--andy-ira.no", - "andasuolo.no", "ardal.no", "xn--rdal-poa.no", "aremark.no", @@ -3862,9 +3873,9 @@ var rules = [...]string{ "xn--seral-lra.no", "asker.no", "askim.no", - "askvoll.no", "askoy.no", "xn--asky-ira.no", + "askvoll.no", "asnes.no", "xn--snes-poa.no", "audnedaln.no", @@ -3877,27 +3888,37 @@ var rules = [...]string{ "austrheim.no", "averoy.no", "xn--avery-yua.no", - "balestrand.no", - "ballangen.no", + "badaddja.no", + "xn--bdddj-mrabd.no", + "xn--brum-voa.no", + "bahcavuotna.no", + "xn--bhcavuotna-s4a.no", + "bahccavuotna.no", + "xn--bhccavuotna-k7a.no", + "baidar.no", + "xn--bidr-5nac.no", + "bajddar.no", + "xn--bjddar-pta.no", "balat.no", "xn--blt-elab.no", + "balestrand.no", + "ballangen.no", "balsfjord.no", - "bahccavuotna.no", - "xn--bhccavuotna-k7a.no", "bamble.no", "bardu.no", + "barum.no", + "batsfjord.no", + "xn--btsfjord-9za.no", + "bearalvahki.no", + "xn--bearalvhki-y4a.no", "beardu.no", "beiarn.no", - "bajddar.no", - "xn--bjddar-pta.no", - "baidar.no", - "xn--bidr-5nac.no", "berg.no", "bergen.no", "berlevag.no", "xn--berlevg-jxa.no", - "bearalvahki.no", - "xn--bearalvhki-y4a.no", + "bievat.no", + "xn--bievt-0qa.no", "bindal.no", "birkenes.no", "bjarkoy.no", @@ -3906,36 +3927,32 @@ var rules = [...]string{ "bjugn.no", "bodo.no", "xn--bod-2na.no", - "badaddja.no", - "xn--bdddj-mrabd.no", - "budejju.no", "bokn.no", + "bomlo.no", + "xn--bmlo-gra.no", "bremanger.no", "bronnoy.no", "xn--brnny-wuac.no", + "budejju.no", + "nes.buskerud.no", "bygland.no", "bykle.no", - "barum.no", - "xn--brum-voa.no", - "bo.telemark.no", - "xn--b-5ga.telemark.no", - "bo.nordland.no", - "xn--b-5ga.nordland.no", - "bievat.no", - "xn--bievt-0qa.no", - "bomlo.no", - "xn--bmlo-gra.no", - "batsfjord.no", - "xn--btsfjord-9za.no", - "bahcavuotna.no", - "xn--bhcavuotna-s4a.no", + "cahcesuolo.no", + "xn--hcesuolo-7ya35b.no", + "davvenjarga.no", + "xn--davvenjrga-y4a.no", + "davvesiida.no", + "deatnu.no", + "dielddanuorri.no", + "divtasvuodna.no", + "divttasvuotna.no", + "donna.no", + "xn--dnna-gra.no", "dovre.no", "drammen.no", "drangedal.no", "dyroy.no", "xn--dyry-ira.no", - "donna.no", - "xn--dnna-gra.no", "eid.no", "eidfjord.no", "eidsberg.no", @@ -3947,14 +3964,12 @@ var rules = [...]string{ "engerdal.no", "etne.no", "etnedal.no", - "evenes.no", "evenassi.no", "xn--eveni-0qa01ga.no", + "evenes.no", "evje-og-hornnes.no", "farsund.no", "fauske.no", - "fuossko.no", - "fuoisku.no", "fedje.no", "fet.no", "finnoy.no", @@ -3962,33 +3977,40 @@ var rules = [...]string{ "fitjar.no", "fjaler.no", "fjell.no", + "fla.no", + "xn--fl-zia.no", "flakstad.no", "flatanger.no", "flekkefjord.no", "flesberg.no", "flora.no", - "fla.no", - "xn--fl-zia.no", "folldal.no", + "forde.no", + "xn--frde-gra.no", "forsand.no", "fosnes.no", + "xn--frna-woa.no", + "frana.no", "frei.no", "frogn.no", "froland.no", "frosta.no", - "frana.no", - "xn--frna-woa.no", "froya.no", "xn--frya-hra.no", + "fuoisku.no", + "fuossko.no", "fusa.no", "fyresdal.no", - "forde.no", - "xn--frde-gra.no", + "gaivuotna.no", + "xn--givuotna-8ya.no", + "galsa.no", + "xn--gls-elac.no", "gamvik.no", "gangaviika.no", "xn--ggaviika-8ya47h.no", "gaular.no", "gausdal.no", + "giehtavuoatna.no", "gildeskal.no", "xn--gildeskl-g0a.no", "giske.no", @@ -4006,38 +4028,37 @@ var rules = [...]string{ "gratangen.no", "grimstad.no", "grong.no", - "kraanghke.no", - "xn--kranghke-b0a.no", "grue.no", "gulen.no", + "guovdageaidnu.no", + "ha.no", + "xn--h-2fa.no", + "habmer.no", + "xn--hbmer-xqa.no", "hadsel.no", + "xn--hgebostad-g3a.no", + "hagebostad.no", "halden.no", "halsa.no", "hamar.no", "hamaroy.no", - "habmer.no", - "xn--hbmer-xqa.no", - "hapmir.no", - "xn--hpmir-xqa.no", - "hammerfest.no", "hammarfeasta.no", "xn--hmmrfeasta-s4ac.no", + "hammerfest.no", + "hapmir.no", + "xn--hpmir-xqa.no", "haram.no", "hareid.no", "harstad.no", "hasvik.no", - "aknoluokta.no", - "xn--koluokta-7ya57h.no", "hattfjelldal.no", - "aarborte.no", "haugesund.no", + "os.hedmark.no", + "valer.hedmark.no", + "xn--vler-qoa.hedmark.no", "hemne.no", "hemnes.no", "hemsedal.no", - "heroy.more-og-romsdal.no", - "xn--hery-ira.xn--mre-og-romsdal-qqb.no", - "heroy.nordland.no", - "xn--hery-ira.nordland.no", "hitra.no", "hjartdal.no", "hjelmeland.no", @@ -4049,96 +4070,95 @@ var rules = [...]string{ "holmestrand.no", "holtalen.no", "xn--holtlen-hxa.no", + "os.hordaland.no", "hornindal.no", "horten.no", - "hurdal.no", - "hurum.no", - "hvaler.no", - "hyllestad.no", - "hagebostad.no", - "xn--hgebostad-g3a.no", "hoyanger.no", "xn--hyanger-q1a.no", "hoylandet.no", "xn--hylandet-54a.no", - "ha.no", - "xn--h-2fa.no", + "hurdal.no", + "hurum.no", + "hvaler.no", + "hyllestad.no", "ibestad.no", "inderoy.no", "xn--indery-fya.no", "iveland.no", + "ivgu.no", "jevnaker.no", - "jondal.no", "jolster.no", "xn--jlster-bya.no", - "karasjok.no", + "jondal.no", + "kafjord.no", + "xn--kfjord-iua.no", "karasjohka.no", "xn--krjohka-hwab49j.no", + "karasjok.no", "karlsoy.no", - "galsa.no", - "xn--gls-elac.no", "karmoy.no", "xn--karmy-yua.no", "kautokeino.no", - "guovdageaidnu.no", - "klepp.no", "klabu.no", "xn--klbu-woa.no", + "klepp.no", "kongsberg.no", "kongsvinger.no", + "kraanghke.no", + "xn--kranghke-b0a.no", "kragero.no", "xn--krager-gya.no", "kristiansand.no", "kristiansund.no", "krodsherad.no", "xn--krdsherad-m8a.no", + "xn--kvfjord-nxa.no", + "xn--kvnangen-k0a.no", + "kvafjord.no", "kvalsund.no", - "rahkkeravju.no", - "xn--rhkkervju-01af.no", "kvam.no", + "kvanangen.no", "kvinesdal.no", "kvinnherad.no", "kviteseid.no", "kvitsoy.no", "xn--kvitsy-fya.no", - "kvafjord.no", - "xn--kvfjord-nxa.no", - "giehtavuoatna.no", - "kvanangen.no", - "xn--kvnangen-k0a.no", - "navuotna.no", - "xn--nvuotna-hwa.no", - "kafjord.no", - "xn--kfjord-iua.no", - "gaivuotna.no", - "xn--givuotna-8ya.no", + "laakesvuemie.no", + "xn--lrdal-sra.no", + "lahppi.no", + "xn--lhppi-xqa.no", + "lardal.no", "larvik.no", - "lavangen.no", "lavagis.no", - "loabat.no", - "xn--loabt-0qa.no", + "lavangen.no", + "leangaviika.no", + "xn--leagaviika-52b.no", "lebesby.no", - "davvesiida.no", "leikanger.no", "leirfjord.no", "leka.no", "leksvik.no", "lenvik.no", - "leangaviika.no", - "xn--leagaviika-52b.no", + "lerdal.no", "lesja.no", "levanger.no", "lier.no", "lierne.no", "lillehammer.no", "lillesand.no", - "lindesnes.no", "lindas.no", "xn--linds-pra.no", + "lindesnes.no", + "loabat.no", + "xn--loabt-0qa.no", + "lodingen.no", + "xn--ldingen-q1a.no", "lom.no", "loppa.no", - "lahppi.no", - "xn--lhppi-xqa.no", + "lorenskog.no", + "xn--lrenskog-54a.no", + "loten.no", + "xn--lten-gra.no", "lund.no", "lunner.no", "luroy.no", @@ -4146,25 +4166,19 @@ var rules = [...]string{ "luster.no", "lyngdal.no", "lyngen.no", - "ivgu.no", - "lardal.no", - "lerdal.no", - "xn--lrdal-sra.no", - "lodingen.no", - "xn--ldingen-q1a.no", - "lorenskog.no", - "xn--lrenskog-54a.no", - "loten.no", - "xn--lten-gra.no", + "malatvuopmi.no", + "xn--mlatvuopmi-s4a.no", + "malselv.no", + "xn--mlselv-iua.no", "malvik.no", - "masoy.no", - "xn--msy-ula0h.no", - "muosat.no", - "xn--muost-0qa.no", "mandal.no", "marker.no", "marnardal.no", "masfjorden.no", + "masoy.no", + "xn--msy-ula0h.no", + "matta-varjjat.no", + "xn--mtta-vrjjat-k7af.no", "meland.no", "meldal.no", "melhus.no", @@ -4172,39 +4186,39 @@ var rules = [...]string{ "xn--mely-ira.no", "meraker.no", "xn--merker-kua.no", - "moareke.no", - "xn--moreke-jua.no", "midsund.no", "midtre-gauldal.no", + "moareke.no", + "xn--moreke-jua.no", "modalen.no", "modum.no", "molde.no", + "heroy.more-og-romsdal.no", + "sande.more-og-romsdal.no", + "xn--hery-ira.xn--mre-og-romsdal-qqb.no", + "sande.xn--mre-og-romsdal-qqb.no", "moskenes.no", "moss.no", "mosvik.no", - "malselv.no", - "xn--mlselv-iua.no", - "malatvuopmi.no", - "xn--mlatvuopmi-s4a.no", + "muosat.no", + "xn--muost-0qa.no", + "naamesjevuemie.no", + "xn--nmesjevuemie-tcba.no", + "xn--nry-yla5g.no", "namdalseid.no", - "aejrie.no", "namsos.no", "namsskogan.no", - "naamesjevuemie.no", - "xn--nmesjevuemie-tcba.no", - "laakesvuemie.no", "nannestad.no", - "narvik.no", + "naroy.no", "narviika.no", + "narvik.no", "naustdal.no", + "navuotna.no", + "xn--nvuotna-hwa.no", "nedre-eiker.no", - "nes.akershus.no", - "nes.buskerud.no", "nesna.no", "nesodden.no", "nesseby.no", - "unjarga.no", - "xn--unjrga-rta.no", "nesset.no", "nissedal.no", "nittedal.no", @@ -4213,21 +4227,20 @@ var rules = [...]string{ "nord-odal.no", "norddal.no", "nordkapp.no", - "davvenjarga.no", - "xn--davvenjrga-y4a.no", + "bo.nordland.no", + "xn--b-5ga.nordland.no", + "heroy.nordland.no", + "xn--hery-ira.nordland.no", "nordre-land.no", "nordreisa.no", - "raisa.no", - "xn--risa-5na.no", "nore-og-uvdal.no", "notodden.no", - "naroy.no", - "xn--nry-yla5g.no", "notteroy.no", "xn--nttery-byae.no", "odda.no", "oksnes.no", "xn--ksnes-uua.no", + "omasvuotna.no", "oppdal.no", "oppegard.no", "xn--oppegrd-ixa.no", @@ -4238,11 +4251,11 @@ var rules = [...]string{ "xn--rskog-uua.no", "orsta.no", "xn--rsta-fra.no", - "os.hedmark.no", - "os.hordaland.no", "osen.no", "osteroy.no", "xn--ostery-fya.no", + "valer.ostfold.no", + "xn--vler-qoa.xn--stfold-9xa.no", "ostre-toten.no", "xn--stre-toten-zcb.no", "overhalla.no", @@ -4258,11 +4271,18 @@ var rules = [...]string{ "porsangu.no", "xn--porsgu-sta26f.no", "porsgrunn.no", - "radoy.no", + "rade.no", + "xn--rde-ula.no", + "radoy.no", "xn--rady-ira.no", + "xn--rlingen-mxa.no", + "rahkkeravju.no", + "xn--rhkkervju-01af.no", + "raisa.no", + "xn--risa-5na.no", "rakkestad.no", + "ralingen.no", "rana.no", - "ruovat.no", "randaberg.no", "rauma.no", "rendalen.no", @@ -4273,16 +4293,14 @@ var rules = [...]string{ "ringebu.no", "ringerike.no", "ringsaker.no", - "rissa.no", "risor.no", "xn--risr-ira.no", + "rissa.no", "roan.no", - "rollag.no", - "rygge.no", - "ralingen.no", - "xn--rlingen-mxa.no", "rodoy.no", "xn--rdy-0nab.no", + "rollag.no", + "romsa.no", "romskog.no", "xn--rmskog-bya.no", "roros.no", @@ -4293,18 +4311,14 @@ var rules = [...]string{ "xn--ryken-vua.no", "royrvik.no", "xn--ryrvik-bya.no", - "rade.no", - "xn--rde-ula.no", + "ruovat.no", + "rygge.no", "salangen.no", - "siellak.no", - "saltdal.no", "salat.no", - "xn--slt-elab.no", "xn--slat-5na.no", + "xn--slt-elab.no", + "saltdal.no", "samnanger.no", - "sande.more-og-romsdal.no", - "sande.xn--mre-og-romsdal-qqb.no", - "sande.vestfold.no", "sandefjord.no", "sandnes.no", "sandoy.no", @@ -4316,39 +4330,60 @@ var rules = [...]string{ "selbu.no", "selje.no", "seljord.no", + "siellak.no", "sigdal.no", "siljan.no", "sirdal.no", + "skanit.no", + "xn--sknit-yqa.no", + "skanland.no", + "xn--sknland-fxa.no", "skaun.no", "skedsmo.no", "ski.no", "skien.no", - "skiptvet.no", - "skjervoy.no", - "xn--skjervy-v1a.no", "skierva.no", "xn--skierv-uta.no", + "skiptvet.no", "skjak.no", "xn--skjk-soa.no", + "skjervoy.no", + "xn--skjervy-v1a.no", "skodje.no", - "skanland.no", - "xn--sknland-fxa.no", - "skanit.no", - "xn--sknit-yqa.no", "smola.no", "xn--smla-hra.no", - "snillfjord.no", + "snaase.no", + "xn--snase-nra.no", "snasa.no", "xn--snsa-roa.no", + "snillfjord.no", "snoasa.no", - "snaase.no", - "xn--snase-nra.no", "sogndal.no", + "sogne.no", + "xn--sgne-gra.no", "sokndal.no", "sola.no", "solund.no", + "somna.no", + "xn--smna-gra.no", + "sondre-land.no", + "xn--sndre-land-0cb.no", "songdalen.no", + "sor-aurdal.no", + "xn--sr-aurdal-l8a.no", + "sor-fron.no", + "xn--sr-fron-q1a.no", + "sor-odal.no", + "xn--sr-odal-q1a.no", + "sor-varanger.no", + "xn--sr-varanger-ggb.no", + "sorfold.no", + "xn--srfold-bya.no", + "sorreisa.no", + "xn--srreisa-q1a.no", "sortland.no", + "sorum.no", + "xn--srum-gra.no", "spydeberg.no", "stange.no", "stavanger.no", @@ -4361,7 +4396,6 @@ var rules = [...]string{ "stord.no", "stordal.no", "storfjord.no", - "omasvuotna.no", "strand.no", "stranda.no", "stryn.no", @@ -4373,72 +4407,55 @@ var rules = [...]string{ "sveio.no", "svelvik.no", "sykkylven.no", - "sogne.no", - "xn--sgne-gra.no", - "somna.no", - "xn--smna-gra.no", - "sondre-land.no", - "xn--sndre-land-0cb.no", - "sor-aurdal.no", - "xn--sr-aurdal-l8a.no", - "sor-fron.no", - "xn--sr-fron-q1a.no", - "sor-odal.no", - "xn--sr-odal-q1a.no", - "sor-varanger.no", - "xn--sr-varanger-ggb.no", - "matta-varjjat.no", - "xn--mtta-vrjjat-k7af.no", - "sorfold.no", - "xn--srfold-bya.no", - "sorreisa.no", - "xn--srreisa-q1a.no", - "sorum.no", - "xn--srum-gra.no", "tana.no", - "deatnu.no", + "bo.telemark.no", + "xn--b-5ga.telemark.no", "time.no", "tingvoll.no", "tinn.no", "tjeldsund.no", - "dielddanuorri.no", "tjome.no", "xn--tjme-hra.no", "tokke.no", "tolga.no", + "tonsberg.no", + "xn--tnsberg-q1a.no", "torsken.no", + "xn--trna-woa.no", + "trana.no", "tranoy.no", "xn--trany-yua.no", + "troandin.no", + "trogstad.no", + "xn--trgstad-r1a.no", + "tromsa.no", "tromso.no", "xn--troms-zua.no", - "tromsa.no", - "romsa.no", "trondheim.no", - "troandin.no", "trysil.no", - "trana.no", - "xn--trna-woa.no", - "trogstad.no", - "xn--trgstad-r1a.no", "tvedestrand.no", "tydal.no", "tynset.no", "tysfjord.no", - "divtasvuodna.no", - "divttasvuotna.no", "tysnes.no", - "tysvar.no", "xn--tysvr-vra.no", - "tonsberg.no", - "xn--tnsberg-q1a.no", + "tysvar.no", "ullensaker.no", "ullensvang.no", "ulvik.no", + "unjarga.no", + "xn--unjrga-rta.no", "utsira.no", + "vaapste.no", "vadso.no", "xn--vads-jra.no", - "cahcesuolo.no", - "xn--hcesuolo-7ya35b.no", + "xn--vry-yla5g.no", + "vaga.no", + "xn--vg-yiab.no", + "vagan.no", + "xn--vgan-qoa.no", + "vagsoy.no", + "xn--vgsy-qoa0j.no", "vaksdal.no", "valle.no", "vang.no", @@ -4447,8 +4464,8 @@ var rules = [...]string{ "xn--vard-jra.no", "varggat.no", "xn--vrggt-xqad.no", + "varoy.no", "vefsn.no", - "vaapste.no", "vega.no", "vegarshei.no", "xn--vegrshei-c0a.no", @@ -4456,6 +4473,7 @@ var rules = [...]string{ "verdal.no", "verran.no", "vestby.no", + "sande.vestfold.no", "vestnes.no", "vestre-slidre.no", "vestre-toten.no", @@ -4465,30 +4483,18 @@ var rules = [...]string{ "vik.no", "vikna.no", "vindafjord.no", + "voagat.no", "volda.no", "voss.no", - "varoy.no", - "xn--vry-yla5g.no", - "vagan.no", - "xn--vgan-qoa.no", - "voagat.no", - "vagsoy.no", - "xn--vgsy-qoa0j.no", - "vaga.no", - "xn--vg-yiab.no", - "valer.ostfold.no", - "xn--vler-qoa.xn--stfold-9xa.no", - "valer.hedmark.no", - "xn--vler-qoa.hedmark.no", "*.np", "nr", "biz.nr", - "info.nr", - "gov.nr", + "com.nr", "edu.nr", - "org.nr", + "gov.nr", + "info.nr", "net.nr", - "com.nr", + "org.nr", "nu", "nz", "ac.nz", @@ -4501,8 +4507,8 @@ var rules = [...]string{ "iwi.nz", "kiwi.nz", "maori.nz", - "mil.nz", "xn--mori-qsa.nz", + "mil.nz", "net.nz", "org.nz", "parliament.nz", @@ -4520,60 +4526,61 @@ var rules = [...]string{ "onion", "org", "pa", + "abo.pa", "ac.pa", - "gob.pa", "com.pa", - "org.pa", - "sld.pa", "edu.pa", - "net.pa", + "gob.pa", "ing.pa", - "abo.pa", "med.pa", + "net.pa", "nom.pa", + "org.pa", + "sld.pa", "pe", + "com.pe", "edu.pe", "gob.pe", - "nom.pe", "mil.pe", - "org.pe", - "com.pe", "net.pe", + "nom.pe", + "org.pe", "pf", "com.pf", - "org.pf", "edu.pf", + "org.pf", "*.pg", "ph", "com.ph", - "net.ph", - "org.ph", - "gov.ph", "edu.ph", - "ngo.ph", - "mil.ph", + "gov.ph", "i.ph", + "mil.ph", + "net.ph", + "ngo.ph", + "org.ph", "pk", + "ac.pk", + "biz.pk", "com.pk", - "net.pk", "edu.pk", - "org.pk", "fam.pk", - "biz.pk", - "web.pk", - "gov.pk", + "gkp.pk", "gob.pk", + "gog.pk", "gok.pk", - "gon.pk", "gop.pk", "gos.pk", - "info.pk", + "gov.pk", + "net.pk", + "org.pk", + "web.pk", "pl", "com.pl", "net.pl", "org.pl", - "aid.pl", "agro.pl", + "aid.pl", "atm.pl", "auto.pl", "biz.pl", @@ -4582,8 +4589,8 @@ var rules = [...]string{ "gsm.pl", "info.pl", "mail.pl", - "miasta.pl", "media.pl", + "miasta.pl", "mil.pl", "nieruchomosci.pl", "nom.pl", @@ -4684,11 +4691,11 @@ var rules = [...]string{ "jelenia-gora.pl", "jgora.pl", "kalisz.pl", - "kazimierz-dolny.pl", "karpacz.pl", "kartuzy.pl", "kaszuby.pl", "katowice.pl", + "kazimierz-dolny.pl", "kepno.pl", "ketrzyn.pl", "klodzko.pl", @@ -4731,8 +4738,8 @@ var rules = [...]string{ "podhale.pl", "podlasie.pl", "polkowice.pl", - "pomorze.pl", "pomorskie.pl", + "pomorze.pl", "prochowice.pl", "pruszkow.pl", "przeworsk.pl", @@ -4743,11 +4750,11 @@ var rules = [...]string{ "rzeszow.pl", "sanok.pl", "sejny.pl", + "skoczow.pl", "slask.pl", "slupsk.pl", "sosnowiec.pl", "stalowa-wola.pl", - "skoczow.pl", "starachowice.pl", "stargard.pl", "suwalki.pl", @@ -4779,26 +4786,26 @@ var rules = [...]string{ "zgorzelec.pl", "pm", "pn", - "gov.pn", "co.pn", - "org.pn", "edu.pn", + "gov.pn", "net.pn", + "org.pn", "post", "pr", + "biz.pr", "com.pr", - "net.pr", - "org.pr", - "gov.pr", "edu.pr", - "isla.pr", - "pro.pr", - "biz.pr", + "gov.pr", "info.pr", + "isla.pr", "name.pr", + "net.pr", + "org.pr", + "pro.pr", + "ac.pr", "est.pr", "prof.pr", - "ac.pr", "pro", "aaa.pro", "aca.pro", @@ -4812,29 +4819,24 @@ var rules = [...]string{ "med.pro", "recht.pro", "ps", + "com.ps", "edu.ps", "gov.ps", - "sec.ps", - "plo.ps", - "com.ps", - "org.ps", "net.ps", + "org.ps", + "plo.ps", + "sec.ps", "pt", - "net.pt", - "gov.pt", - "org.pt", + "com.pt", "edu.pt", + "gov.pt", "int.pt", - "publ.pt", - "com.pt", + "net.pt", "nome.pt", + "org.pt", + "publ.pt", "pw", - "co.pw", - "ne.pw", - "or.pw", - "ed.pw", - "go.pw", - "belau.pw", + "gov.pw", "py", "com.py", "coop.py", @@ -4855,7 +4857,6 @@ var rules = [...]string{ "re", "asso.re", "com.re", - "nom.re", "ro", "arts.ro", "com.ro", @@ -4886,12 +4887,12 @@ var rules = [...]string{ "org.rw", "sa", "com.sa", - "net.sa", - "org.sa", + "edu.sa", "gov.sa", "med.sa", + "net.sa", + "org.sa", "pub.sa", - "edu.sa", "sch.sa", "sb", "com.sb", @@ -4901,21 +4902,21 @@ var rules = [...]string{ "org.sb", "sc", "com.sc", + "edu.sc", "gov.sc", "net.sc", "org.sc", - "edu.sc", "sd", "com.sd", - "net.sd", - "org.sd", "edu.sd", - "med.sd", - "tv.sd", "gov.sd", "info.sd", - "se", - "a.se", + "med.sd", + "net.sd", + "org.sd", + "tv.sd", + "se", + "a.se", "ac.se", "b.se", "bd.se", @@ -4956,25 +4957,24 @@ var rules = [...]string{ "z.se", "sg", "com.sg", + "edu.sg", + "gov.sg", "net.sg", "org.sg", - "gov.sg", - "edu.sg", - "per.sg", "sh", "com.sh", - "net.sh", "gov.sh", - "org.sh", "mil.sh", + "net.sh", + "org.sh", "si", "sj", "sk", "sl", "com.sl", - "net.sl", "edu.sl", "gov.sl", + "net.sl", "org.sl", "sm", "sn", @@ -4995,6 +4995,7 @@ var rules = [...]string{ "sr", "ss", "biz.ss", + "co.ss", "com.ss", "edu.ss", "gov.ss", @@ -5024,15 +5025,15 @@ var rules = [...]string{ "sx", "gov.sx", "sy", + "com.sy", "edu.sy", "gov.sy", - "net.sy", "mil.sy", - "com.sy", + "net.sy", "org.sy", "sz", - "co.sz", "ac.sz", + "co.sz", "org.sz", "tc", "td", @@ -5067,14 +5068,14 @@ var rules = [...]string{ "tl", "gov.tl", "tm", - "com.tm", "co.tm", - "org.tm", - "net.tm", - "nom.tm", + "com.tm", + "edu.tm", "gov.tm", "mil.tm", - "edu.tm", + "net.tm", + "nom.tm", + "org.tm", "tn", "com.tn", "ens.tn", @@ -5091,11 +5092,11 @@ var rules = [...]string{ "tourism.tn", "to", "com.to", + "edu.to", "gov.to", + "mil.to", "net.to", "org.to", - "edu.to", - "mil.to", "tr", "av.tr", "bbs.tr", @@ -5107,9 +5108,9 @@ var rules = [...]string{ "gen.tr", "gov.tr", "info.tr", - "mil.tr", "k12.tr", "kep.tr", + "mil.tr", "name.tr", "net.tr", "org.tr", @@ -5121,38 +5122,29 @@ var rules = [...]string{ "nc.tr", "gov.nc.tr", "tt", + "biz.tt", "co.tt", "com.tt", - "org.tt", - "net.tt", - "biz.tt", + "edu.tt", + "gov.tt", "info.tt", - "pro.tt", - "int.tt", - "coop.tt", - "jobs.tt", - "mobi.tt", - "travel.tt", - "museum.tt", - "aero.tt", + "mil.tt", "name.tt", - "gov.tt", - "edu.tt", + "net.tt", + "org.tt", + "pro.tt", "tv", "tw", + "club.tw", + "com.tw", + "ebiz.tw", "edu.tw", + "game.tw", "gov.tw", + "idv.tw", "mil.tw", - "com.tw", "net.tw", "org.tw", - "idv.tw", - "game.tw", - "ebiz.tw", - "club.tw", - "xn--zf0ao64a.tw", - "xn--uc0atv.tw", - "xn--czrw28b.tw", "tz", "ac.tz", "co.tz", @@ -5209,6 +5201,7 @@ var rules = [...]string{ "lg.ua", "lt.ua", "lugansk.ua", + "luhansk.ua", "lutsk.ua", "lv.ua", "lviv.ua", @@ -5232,11 +5225,13 @@ var rules = [...]string{ "ternopil.ua", "uz.ua", "uzhgorod.ua", + "uzhhorod.ua", "vinnica.ua", "vinnytsia.ua", "vn.ua", "volyn.ua", "yalta.ua", + "zakarpattia.ua", "zaporizhzhe.ua", "zaporizhzhia.ua", "zhitomir.ua", @@ -5244,14 +5239,18 @@ var rules = [...]string{ "zp.ua", "zt.ua", "ug", - "co.ug", - "or.ug", "ac.ug", - "sc.ug", + "co.ug", + "com.ug", + "edu.ug", "go.ug", + "gov.ug", + "mil.ug", "ne.ug", - "com.ug", + "or.ug", "org.ug", + "sc.ug", + "us.ug", "uk", "ac.uk", "co.uk", @@ -5266,9 +5265,7 @@ var rules = [...]string{ "*.sch.uk", "us", "dni.us", - "fed.us", "isa.us", - "kids.us", "nsn.us", "ak.us", "al.us", @@ -5318,9 +5315,9 @@ var rules = [...]string{ "tn.us", "tx.us", "ut.us", + "va.us", "vi.us", "vt.us", - "va.us", "wa.us", "wi.us", "wv.us", @@ -5334,7 +5331,6 @@ var rules = [...]string{ "k12.co.us", "k12.ct.us", "k12.dc.us", - "k12.de.us", "k12.fl.us", "k12.ga.us", "k12.gu.us", @@ -5369,21 +5365,29 @@ var rules = [...]string{ "k12.tn.us", "k12.tx.us", "k12.ut.us", + "k12.va.us", "k12.vi.us", "k12.vt.us", - "k12.va.us", "k12.wa.us", "k12.wi.us", - "k12.wy.us", "cc.ak.us", + "lib.ak.us", "cc.al.us", + "lib.al.us", "cc.ar.us", + "lib.ar.us", "cc.as.us", + "lib.as.us", "cc.az.us", + "lib.az.us", "cc.ca.us", + "lib.ca.us", "cc.co.us", + "lib.co.us", "cc.ct.us", + "lib.ct.us", "cc.dc.us", + "lib.dc.us", "cc.de.us", "cc.fl.us", "cc.ga.us", @@ -5423,22 +5427,14 @@ var rules = [...]string{ "cc.tn.us", "cc.tx.us", "cc.ut.us", + "cc.va.us", "cc.vi.us", "cc.vt.us", - "cc.va.us", "cc.wa.us", "cc.wi.us", "cc.wv.us", "cc.wy.us", - "lib.ak.us", - "lib.al.us", - "lib.ar.us", - "lib.as.us", - "lib.az.us", - "lib.ca.us", - "lib.co.us", - "lib.ct.us", - "lib.dc.us", + "k12.wy.us", "lib.fl.us", "lib.ga.us", "lib.gu.us", @@ -5477,15 +5473,15 @@ var rules = [...]string{ "lib.tn.us", "lib.tx.us", "lib.ut.us", + "lib.va.us", "lib.vi.us", "lib.vt.us", - "lib.va.us", "lib.wa.us", "lib.wi.us", "lib.wy.us", - "pvt.k12.ma.us", "chtr.k12.ma.us", "paroch.k12.ma.us", + "pvt.k12.ma.us", "ann-arbor.mi.us", "cog.mi.us", "dst.mi.us", @@ -5509,11 +5505,11 @@ var rules = [...]string{ "va", "vc", "com.vc", - "net.vc", - "org.vc", + "edu.vc", "gov.vc", "mil.vc", - "edu.vc", + "net.vc", + "org.vc", "ve", "arts.ve", "bib.ve", @@ -5521,6 +5517,7 @@ var rules = [...]string{ "com.ve", "e12.ve", "edu.ve", + "emprende.ve", "firm.ve", "gob.ve", "gov.ve", @@ -5536,6 +5533,7 @@ var rules = [...]string{ "tec.ve", "web.ve", "vg", + "edu.vg", "vi", "co.vi", "com.vi", @@ -5629,10 +5627,10 @@ var rules = [...]string{ "wf", "ws", "com.ws", + "edu.ws", + "gov.ws", "net.ws", "org.ws", - "gov.ws", - "edu.ws", "yt", "xn--mgbaam7a8h", "xn--y9a3aq", @@ -5650,12 +5648,12 @@ var rules = [...]string{ "xn--node", "xn--qxam", "xn--j6w193g", + "xn--gmqw5a.xn--j6w193g", "xn--55qx5d.xn--j6w193g", - "xn--wcvs22d.xn--j6w193g", "xn--mxtq1m.xn--j6w193g", - "xn--gmqw5a.xn--j6w193g", - "xn--od0alg.xn--j6w193g", + "xn--wcvs22d.xn--j6w193g", "xn--uc0atv.xn--j6w193g", + "xn--od0alg.xn--j6w193g", "xn--2scrj9c", "xn--3hcrj9c", "xn--45br5cyl", @@ -5691,12 +5689,12 @@ var rules = [...]string{ "xn--mgbai9a5eva00b", "xn--ygbi2ammx", "xn--90a3ac", - "xn--o1ac.xn--90a3ac", - "xn--c1avg.xn--90a3ac", + "xn--80au.xn--90a3ac", "xn--90azh.xn--90a3ac", "xn--d1at.xn--90a3ac", + "xn--c1avg.xn--90a3ac", + "xn--o1ac.xn--90a3ac", "xn--o1ach.xn--90a3ac", - "xn--80au.xn--90a3ac", "xn--p1ai", "xn--wgbl6a", "xn--mgberp4a5d4ar", @@ -5709,11 +5707,11 @@ var rules = [...]string{ "xn--ogbpf8fl", "xn--mgbtf8fl", "xn--o3cw4h", - "xn--12c1fe0br.xn--o3cw4h", - "xn--12co0c3b4eva.xn--o3cw4h", - "xn--h3cuzk1di.xn--o3cw4h", "xn--o3cyx2a.xn--o3cw4h", + "xn--12co0c3b4eva.xn--o3cw4h", "xn--m3ch0j3a.xn--o3cw4h", + "xn--h3cuzk1di.xn--o3cw4h", + "xn--12c1fe0br.xn--o3cw4h", "xn--12cfi8ixb8l.xn--o3cw4h", "xn--pgbs0dh", "xn--kpry57d", @@ -5726,8 +5724,8 @@ var rules = [...]string{ "com.ye", "edu.ye", "gov.ye", - "net.ye", "mil.ye", + "net.ye", "org.ye", "ac.za", "agric.za", @@ -5834,14 +5832,12 @@ var rules = [...]string{ "author", "auto", "autos", - "avianca", "aws", "axa", "azure", "baby", "baidu", "banamex", - "bananarepublic", "band", "bank", "bar", @@ -5937,7 +5933,6 @@ var rules = [...]string{ "cba", "cbn", "cbre", - "cbs", "center", "ceo", "cern", @@ -5960,7 +5955,6 @@ var rules = [...]string{ "citi", "citic", "city", - "cityeats", "claims", "cleaning", "click", @@ -5975,7 +5969,6 @@ var rules = [...]string{ "coffee", "college", "cologne", - "comcast", "commbank", "community", "company", @@ -6006,7 +5999,6 @@ var rules = [...]string{ "cuisinella", "cymru", "cyou", - "dabur", "dad", "dance", "data", @@ -6072,7 +6064,6 @@ var rules = [...]string{ "erni", "esq", "estate", - "etisalat", "eurovision", "eus", "events", @@ -6128,7 +6119,6 @@ var rules = [...]string{ "fresenius", "frl", "frogans", - "frontdoor", "frontier", "ftr", "fujitsu", @@ -6182,7 +6172,6 @@ var rules = [...]string{ "gripe", "grocery", "group", - "guardian", "gucci", "guge", "guide", @@ -6276,13 +6265,11 @@ var rules = [...]string{ "kaufen", "kddi", "kerryhotels", - "kerrylogistics", "kerryproperties", "kfh", "kia", "kids", "kim", - "kinder", "kindle", "kitchen", "kiwi", @@ -6327,7 +6314,6 @@ var rules = [...]string{ "limo", "lincoln", "link", - "lipsy", "live", "living", "llc", @@ -6372,6 +6358,7 @@ var rules = [...]string{ "memorial", "men", "menu", + "merck", "merckmsd", "miami", "microsoft", @@ -6403,7 +6390,6 @@ var rules = [...]string{ "music", "nab", "nagoya", - "natura", "navy", "nba", "nec", @@ -6426,7 +6412,6 @@ var rules = [...]string{ "nissan", "nissay", "nokia", - "northwesternmutual", "norton", "now", "nowruz", @@ -6441,7 +6426,6 @@ var rules = [...]string{ "okinawa", "olayan", "olayangroup", - "oldnavy", "ollo", "omega", "one", @@ -6547,7 +6531,6 @@ var rules = [...]string{ "ril", "rio", "rip", - "rocher", "rocks", "rodeo", "rogers", @@ -6576,7 +6559,6 @@ var rules = [...]string{ "saxo", "sbi", "sbs", - "sca", "scb", "schaeffler", "schmidt", @@ -6601,7 +6583,6 @@ var rules = [...]string{ "sfr", "shangrila", "sharp", - "shaw", "shell", "shia", "shiksha", @@ -6610,7 +6591,6 @@ var rules = [...]string{ "shopping", "shouji", "show", - "showtime", "silk", "sina", "singles", @@ -6747,7 +6727,6 @@ var rules = [...]string{ "vivo", "vlaanderen", "vodka", - "volkswagen", "volvo", "vote", "voting", @@ -6765,6 +6744,7 @@ var rules = [...]string{ "webcam", "weber", "website", + "wed", "wedding", "weibo", "weir", @@ -6787,7 +6767,6 @@ var rules = [...]string{ "wtf", "xbox", "xerox", - "xfinity", "xihuan", "xin", "xn--11b4c3d", @@ -6848,7 +6827,6 @@ var rules = [...]string{ "xn--kput3i", "xn--mgba3a3ejt", "xn--mgba7c0bbn0a", - "xn--mgbaakc7dvf", "xn--mgbab2bd", "xn--mgbca7dzdo", "xn--mgbi4ecexp", @@ -6898,26 +6876,47 @@ var rules = [...]string{ "zip", "zone", "zuerich", + "co.krd", + "edu.krd", + "art.pl", + "gliwice.pl", + "krakow.pl", + "poznan.pl", + "wroc.pl", + "zakopane.pl", + "lib.de.us", + "12chars.dev", + "12chars.it", + "12chars.pro", "cc.ua", "inf.ua", "ltd.ua", "611.to", - "graphox.us", - "*.devcdnaccesso.com", + "a2hosted.com", + "cpserver.com", "*.on-acorn.io", "activetrail.biz", + "adaptable.app", + "myaddr.dev", + "myaddr.io", + "dyn.addr.tools", + "myaddr.tools", "adobeaemcloud.com", "*.dev.adobeaemcloud.com", + "aem.live", "hlx.live", "adobeaemcloud.net", + "aem.page", "hlx.page", "hlx3.page", "adobeio-static.net", "adobeioruntime.net", + "africa.com", "beep.pl", "airkitapps.com", "airkitapps-au.com", "airkitapps.eu", + "aiven.app", "aivencloud.com", "akadns.net", "akamai.net", @@ -6937,53 +6936,432 @@ var rules = [...]string{ "barsy.ca", "*.compute.estate", "*.alces.network", + "alibabacloudcs.com", "kasserver.com", "altervista.org", "alwaysdata.net", "myamaze.net", + "execute-api.cn-north-1.amazonaws.com.cn", + "execute-api.cn-northwest-1.amazonaws.com.cn", + "execute-api.af-south-1.amazonaws.com", + "execute-api.ap-east-1.amazonaws.com", + "execute-api.ap-northeast-1.amazonaws.com", + "execute-api.ap-northeast-2.amazonaws.com", + "execute-api.ap-northeast-3.amazonaws.com", + "execute-api.ap-south-1.amazonaws.com", + "execute-api.ap-south-2.amazonaws.com", + "execute-api.ap-southeast-1.amazonaws.com", + "execute-api.ap-southeast-2.amazonaws.com", + "execute-api.ap-southeast-3.amazonaws.com", + "execute-api.ap-southeast-4.amazonaws.com", + "execute-api.ap-southeast-5.amazonaws.com", + "execute-api.ca-central-1.amazonaws.com", + "execute-api.ca-west-1.amazonaws.com", + "execute-api.eu-central-1.amazonaws.com", + "execute-api.eu-central-2.amazonaws.com", + "execute-api.eu-north-1.amazonaws.com", + "execute-api.eu-south-1.amazonaws.com", + "execute-api.eu-south-2.amazonaws.com", + "execute-api.eu-west-1.amazonaws.com", + "execute-api.eu-west-2.amazonaws.com", + "execute-api.eu-west-3.amazonaws.com", + "execute-api.il-central-1.amazonaws.com", + "execute-api.me-central-1.amazonaws.com", + "execute-api.me-south-1.amazonaws.com", + "execute-api.sa-east-1.amazonaws.com", + "execute-api.us-east-1.amazonaws.com", + "execute-api.us-east-2.amazonaws.com", + "execute-api.us-gov-east-1.amazonaws.com", + "execute-api.us-gov-west-1.amazonaws.com", + "execute-api.us-west-1.amazonaws.com", + "execute-api.us-west-2.amazonaws.com", "cloudfront.net", + "auth.af-south-1.amazoncognito.com", + "auth.ap-east-1.amazoncognito.com", + "auth.ap-northeast-1.amazoncognito.com", + "auth.ap-northeast-2.amazoncognito.com", + "auth.ap-northeast-3.amazoncognito.com", + "auth.ap-south-1.amazoncognito.com", + "auth.ap-south-2.amazoncognito.com", + "auth.ap-southeast-1.amazoncognito.com", + "auth.ap-southeast-2.amazoncognito.com", + "auth.ap-southeast-3.amazoncognito.com", + "auth.ap-southeast-4.amazoncognito.com", + "auth.ca-central-1.amazoncognito.com", + "auth.ca-west-1.amazoncognito.com", + "auth.eu-central-1.amazoncognito.com", + "auth.eu-central-2.amazoncognito.com", + "auth.eu-north-1.amazoncognito.com", + "auth.eu-south-1.amazoncognito.com", + "auth.eu-south-2.amazoncognito.com", + "auth.eu-west-1.amazoncognito.com", + "auth.eu-west-2.amazoncognito.com", + "auth.eu-west-3.amazoncognito.com", + "auth.il-central-1.amazoncognito.com", + "auth.me-central-1.amazoncognito.com", + "auth.me-south-1.amazoncognito.com", + "auth.sa-east-1.amazoncognito.com", + "auth.us-east-1.amazoncognito.com", + "auth-fips.us-east-1.amazoncognito.com", + "auth.us-east-2.amazoncognito.com", + "auth-fips.us-east-2.amazoncognito.com", + "auth-fips.us-gov-west-1.amazoncognito.com", + "auth.us-west-1.amazoncognito.com", + "auth-fips.us-west-1.amazoncognito.com", + "auth.us-west-2.amazoncognito.com", + "auth-fips.us-west-2.amazoncognito.com", + "*.compute.amazonaws.com.cn", "*.compute.amazonaws.com", "*.compute-1.amazonaws.com", - "*.compute.amazonaws.com.cn", "us-east-1.amazonaws.com", + "emrappui-prod.cn-north-1.amazonaws.com.cn", + "emrnotebooks-prod.cn-north-1.amazonaws.com.cn", + "emrstudio-prod.cn-north-1.amazonaws.com.cn", + "emrappui-prod.cn-northwest-1.amazonaws.com.cn", + "emrnotebooks-prod.cn-northwest-1.amazonaws.com.cn", + "emrstudio-prod.cn-northwest-1.amazonaws.com.cn", + "emrappui-prod.af-south-1.amazonaws.com", + "emrnotebooks-prod.af-south-1.amazonaws.com", + "emrstudio-prod.af-south-1.amazonaws.com", + "emrappui-prod.ap-east-1.amazonaws.com", + "emrnotebooks-prod.ap-east-1.amazonaws.com", + "emrstudio-prod.ap-east-1.amazonaws.com", + "emrappui-prod.ap-northeast-1.amazonaws.com", + "emrnotebooks-prod.ap-northeast-1.amazonaws.com", + "emrstudio-prod.ap-northeast-1.amazonaws.com", + "emrappui-prod.ap-northeast-2.amazonaws.com", + "emrnotebooks-prod.ap-northeast-2.amazonaws.com", + "emrstudio-prod.ap-northeast-2.amazonaws.com", + "emrappui-prod.ap-northeast-3.amazonaws.com", + "emrnotebooks-prod.ap-northeast-3.amazonaws.com", + "emrstudio-prod.ap-northeast-3.amazonaws.com", + "emrappui-prod.ap-south-1.amazonaws.com", + "emrnotebooks-prod.ap-south-1.amazonaws.com", + "emrstudio-prod.ap-south-1.amazonaws.com", + "emrappui-prod.ap-south-2.amazonaws.com", + "emrnotebooks-prod.ap-south-2.amazonaws.com", + "emrstudio-prod.ap-south-2.amazonaws.com", + "emrappui-prod.ap-southeast-1.amazonaws.com", + "emrnotebooks-prod.ap-southeast-1.amazonaws.com", + "emrstudio-prod.ap-southeast-1.amazonaws.com", + "emrappui-prod.ap-southeast-2.amazonaws.com", + "emrnotebooks-prod.ap-southeast-2.amazonaws.com", + "emrstudio-prod.ap-southeast-2.amazonaws.com", + "emrappui-prod.ap-southeast-3.amazonaws.com", + "emrnotebooks-prod.ap-southeast-3.amazonaws.com", + "emrstudio-prod.ap-southeast-3.amazonaws.com", + "emrappui-prod.ap-southeast-4.amazonaws.com", + "emrnotebooks-prod.ap-southeast-4.amazonaws.com", + "emrstudio-prod.ap-southeast-4.amazonaws.com", + "emrappui-prod.ca-central-1.amazonaws.com", + "emrnotebooks-prod.ca-central-1.amazonaws.com", + "emrstudio-prod.ca-central-1.amazonaws.com", + "emrappui-prod.ca-west-1.amazonaws.com", + "emrnotebooks-prod.ca-west-1.amazonaws.com", + "emrstudio-prod.ca-west-1.amazonaws.com", + "emrappui-prod.eu-central-1.amazonaws.com", + "emrnotebooks-prod.eu-central-1.amazonaws.com", + "emrstudio-prod.eu-central-1.amazonaws.com", + "emrappui-prod.eu-central-2.amazonaws.com", + "emrnotebooks-prod.eu-central-2.amazonaws.com", + "emrstudio-prod.eu-central-2.amazonaws.com", + "emrappui-prod.eu-north-1.amazonaws.com", + "emrnotebooks-prod.eu-north-1.amazonaws.com", + "emrstudio-prod.eu-north-1.amazonaws.com", + "emrappui-prod.eu-south-1.amazonaws.com", + "emrnotebooks-prod.eu-south-1.amazonaws.com", + "emrstudio-prod.eu-south-1.amazonaws.com", + "emrappui-prod.eu-south-2.amazonaws.com", + "emrnotebooks-prod.eu-south-2.amazonaws.com", + "emrstudio-prod.eu-south-2.amazonaws.com", + "emrappui-prod.eu-west-1.amazonaws.com", + "emrnotebooks-prod.eu-west-1.amazonaws.com", + "emrstudio-prod.eu-west-1.amazonaws.com", + "emrappui-prod.eu-west-2.amazonaws.com", + "emrnotebooks-prod.eu-west-2.amazonaws.com", + "emrstudio-prod.eu-west-2.amazonaws.com", + "emrappui-prod.eu-west-3.amazonaws.com", + "emrnotebooks-prod.eu-west-3.amazonaws.com", + "emrstudio-prod.eu-west-3.amazonaws.com", + "emrappui-prod.il-central-1.amazonaws.com", + "emrnotebooks-prod.il-central-1.amazonaws.com", + "emrstudio-prod.il-central-1.amazonaws.com", + "emrappui-prod.me-central-1.amazonaws.com", + "emrnotebooks-prod.me-central-1.amazonaws.com", + "emrstudio-prod.me-central-1.amazonaws.com", + "emrappui-prod.me-south-1.amazonaws.com", + "emrnotebooks-prod.me-south-1.amazonaws.com", + "emrstudio-prod.me-south-1.amazonaws.com", + "emrappui-prod.sa-east-1.amazonaws.com", + "emrnotebooks-prod.sa-east-1.amazonaws.com", + "emrstudio-prod.sa-east-1.amazonaws.com", + "emrappui-prod.us-east-1.amazonaws.com", + "emrnotebooks-prod.us-east-1.amazonaws.com", + "emrstudio-prod.us-east-1.amazonaws.com", + "emrappui-prod.us-east-2.amazonaws.com", + "emrnotebooks-prod.us-east-2.amazonaws.com", + "emrstudio-prod.us-east-2.amazonaws.com", + "emrappui-prod.us-gov-east-1.amazonaws.com", + "emrnotebooks-prod.us-gov-east-1.amazonaws.com", + "emrstudio-prod.us-gov-east-1.amazonaws.com", + "emrappui-prod.us-gov-west-1.amazonaws.com", + "emrnotebooks-prod.us-gov-west-1.amazonaws.com", + "emrstudio-prod.us-gov-west-1.amazonaws.com", + "emrappui-prod.us-west-1.amazonaws.com", + "emrnotebooks-prod.us-west-1.amazonaws.com", + "emrstudio-prod.us-west-1.amazonaws.com", + "emrappui-prod.us-west-2.amazonaws.com", + "emrnotebooks-prod.us-west-2.amazonaws.com", + "emrstudio-prod.us-west-2.amazonaws.com", + "*.cn-north-1.airflow.amazonaws.com.cn", + "*.cn-northwest-1.airflow.amazonaws.com.cn", + "*.af-south-1.airflow.amazonaws.com", + "*.ap-east-1.airflow.amazonaws.com", + "*.ap-northeast-1.airflow.amazonaws.com", + "*.ap-northeast-2.airflow.amazonaws.com", + "*.ap-northeast-3.airflow.amazonaws.com", + "*.ap-south-1.airflow.amazonaws.com", + "*.ap-south-2.airflow.amazonaws.com", + "*.ap-southeast-1.airflow.amazonaws.com", + "*.ap-southeast-2.airflow.amazonaws.com", + "*.ap-southeast-3.airflow.amazonaws.com", + "*.ap-southeast-4.airflow.amazonaws.com", + "*.ca-central-1.airflow.amazonaws.com", + "*.ca-west-1.airflow.amazonaws.com", + "*.eu-central-1.airflow.amazonaws.com", + "*.eu-central-2.airflow.amazonaws.com", + "*.eu-north-1.airflow.amazonaws.com", + "*.eu-south-1.airflow.amazonaws.com", + "*.eu-south-2.airflow.amazonaws.com", + "*.eu-west-1.airflow.amazonaws.com", + "*.eu-west-2.airflow.amazonaws.com", + "*.eu-west-3.airflow.amazonaws.com", + "*.il-central-1.airflow.amazonaws.com", + "*.me-central-1.airflow.amazonaws.com", + "*.me-south-1.airflow.amazonaws.com", + "*.sa-east-1.airflow.amazonaws.com", + "*.us-east-1.airflow.amazonaws.com", + "*.us-east-2.airflow.amazonaws.com", + "*.us-west-1.airflow.amazonaws.com", + "*.us-west-2.airflow.amazonaws.com", + "s3.dualstack.cn-north-1.amazonaws.com.cn", + "s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn", + "s3-website.dualstack.cn-north-1.amazonaws.com.cn", "s3.cn-north-1.amazonaws.com.cn", + "s3-accesspoint.cn-north-1.amazonaws.com.cn", + "s3-deprecated.cn-north-1.amazonaws.com.cn", + "s3-object-lambda.cn-north-1.amazonaws.com.cn", + "s3-website.cn-north-1.amazonaws.com.cn", + "s3.dualstack.cn-northwest-1.amazonaws.com.cn", + "s3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn", + "s3.cn-northwest-1.amazonaws.com.cn", + "s3-accesspoint.cn-northwest-1.amazonaws.com.cn", + "s3-object-lambda.cn-northwest-1.amazonaws.com.cn", + "s3-website.cn-northwest-1.amazonaws.com.cn", + "s3.dualstack.af-south-1.amazonaws.com", + "s3-accesspoint.dualstack.af-south-1.amazonaws.com", + "s3-website.dualstack.af-south-1.amazonaws.com", + "s3.af-south-1.amazonaws.com", + "s3-accesspoint.af-south-1.amazonaws.com", + "s3-object-lambda.af-south-1.amazonaws.com", + "s3-website.af-south-1.amazonaws.com", + "s3.dualstack.ap-east-1.amazonaws.com", + "s3-accesspoint.dualstack.ap-east-1.amazonaws.com", + "s3.ap-east-1.amazonaws.com", + "s3-accesspoint.ap-east-1.amazonaws.com", + "s3-object-lambda.ap-east-1.amazonaws.com", + "s3-website.ap-east-1.amazonaws.com", "s3.dualstack.ap-northeast-1.amazonaws.com", + "s3-accesspoint.dualstack.ap-northeast-1.amazonaws.com", + "s3-website.dualstack.ap-northeast-1.amazonaws.com", + "s3.ap-northeast-1.amazonaws.com", + "s3-accesspoint.ap-northeast-1.amazonaws.com", + "s3-object-lambda.ap-northeast-1.amazonaws.com", + "s3-website.ap-northeast-1.amazonaws.com", "s3.dualstack.ap-northeast-2.amazonaws.com", + "s3-accesspoint.dualstack.ap-northeast-2.amazonaws.com", + "s3-website.dualstack.ap-northeast-2.amazonaws.com", "s3.ap-northeast-2.amazonaws.com", + "s3-accesspoint.ap-northeast-2.amazonaws.com", + "s3-object-lambda.ap-northeast-2.amazonaws.com", "s3-website.ap-northeast-2.amazonaws.com", + "s3.dualstack.ap-northeast-3.amazonaws.com", + "s3-accesspoint.dualstack.ap-northeast-3.amazonaws.com", + "s3-website.dualstack.ap-northeast-3.amazonaws.com", + "s3.ap-northeast-3.amazonaws.com", + "s3-accesspoint.ap-northeast-3.amazonaws.com", + "s3-object-lambda.ap-northeast-3.amazonaws.com", + "s3-website.ap-northeast-3.amazonaws.com", "s3.dualstack.ap-south-1.amazonaws.com", + "s3-accesspoint.dualstack.ap-south-1.amazonaws.com", + "s3-website.dualstack.ap-south-1.amazonaws.com", "s3.ap-south-1.amazonaws.com", + "s3-accesspoint.ap-south-1.amazonaws.com", + "s3-object-lambda.ap-south-1.amazonaws.com", "s3-website.ap-south-1.amazonaws.com", + "s3.dualstack.ap-south-2.amazonaws.com", + "s3-accesspoint.dualstack.ap-south-2.amazonaws.com", + "s3-website.dualstack.ap-south-2.amazonaws.com", + "s3.ap-south-2.amazonaws.com", + "s3-accesspoint.ap-south-2.amazonaws.com", + "s3-object-lambda.ap-south-2.amazonaws.com", + "s3-website.ap-south-2.amazonaws.com", "s3.dualstack.ap-southeast-1.amazonaws.com", + "s3-accesspoint.dualstack.ap-southeast-1.amazonaws.com", + "s3-website.dualstack.ap-southeast-1.amazonaws.com", + "s3.ap-southeast-1.amazonaws.com", + "s3-accesspoint.ap-southeast-1.amazonaws.com", + "s3-object-lambda.ap-southeast-1.amazonaws.com", + "s3-website.ap-southeast-1.amazonaws.com", "s3.dualstack.ap-southeast-2.amazonaws.com", + "s3-accesspoint.dualstack.ap-southeast-2.amazonaws.com", + "s3-website.dualstack.ap-southeast-2.amazonaws.com", + "s3.ap-southeast-2.amazonaws.com", + "s3-accesspoint.ap-southeast-2.amazonaws.com", + "s3-object-lambda.ap-southeast-2.amazonaws.com", + "s3-website.ap-southeast-2.amazonaws.com", + "s3.dualstack.ap-southeast-3.amazonaws.com", + "s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com", + "s3-website.dualstack.ap-southeast-3.amazonaws.com", + "s3.ap-southeast-3.amazonaws.com", + "s3-accesspoint.ap-southeast-3.amazonaws.com", + "s3-object-lambda.ap-southeast-3.amazonaws.com", + "s3-website.ap-southeast-3.amazonaws.com", + "s3.dualstack.ap-southeast-4.amazonaws.com", + "s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com", + "s3-website.dualstack.ap-southeast-4.amazonaws.com", + "s3.ap-southeast-4.amazonaws.com", + "s3-accesspoint.ap-southeast-4.amazonaws.com", + "s3-object-lambda.ap-southeast-4.amazonaws.com", + "s3-website.ap-southeast-4.amazonaws.com", + "s3.dualstack.ap-southeast-5.amazonaws.com", + "s3-accesspoint.dualstack.ap-southeast-5.amazonaws.com", + "s3-website.dualstack.ap-southeast-5.amazonaws.com", + "s3.ap-southeast-5.amazonaws.com", + "s3-accesspoint.ap-southeast-5.amazonaws.com", + "s3-deprecated.ap-southeast-5.amazonaws.com", + "s3-object-lambda.ap-southeast-5.amazonaws.com", + "s3-website.ap-southeast-5.amazonaws.com", "s3.dualstack.ca-central-1.amazonaws.com", + "s3-accesspoint.dualstack.ca-central-1.amazonaws.com", + "s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com", + "s3-fips.dualstack.ca-central-1.amazonaws.com", + "s3-website.dualstack.ca-central-1.amazonaws.com", "s3.ca-central-1.amazonaws.com", + "s3-accesspoint.ca-central-1.amazonaws.com", + "s3-accesspoint-fips.ca-central-1.amazonaws.com", + "s3-fips.ca-central-1.amazonaws.com", + "s3-object-lambda.ca-central-1.amazonaws.com", "s3-website.ca-central-1.amazonaws.com", + "s3.dualstack.ca-west-1.amazonaws.com", + "s3-accesspoint.dualstack.ca-west-1.amazonaws.com", + "s3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com", + "s3-fips.dualstack.ca-west-1.amazonaws.com", + "s3-website.dualstack.ca-west-1.amazonaws.com", + "s3.ca-west-1.amazonaws.com", + "s3-accesspoint.ca-west-1.amazonaws.com", + "s3-accesspoint-fips.ca-west-1.amazonaws.com", + "s3-fips.ca-west-1.amazonaws.com", + "s3-object-lambda.ca-west-1.amazonaws.com", + "s3-website.ca-west-1.amazonaws.com", "s3.dualstack.eu-central-1.amazonaws.com", + "s3-accesspoint.dualstack.eu-central-1.amazonaws.com", + "s3-website.dualstack.eu-central-1.amazonaws.com", "s3.eu-central-1.amazonaws.com", + "s3-accesspoint.eu-central-1.amazonaws.com", + "s3-object-lambda.eu-central-1.amazonaws.com", "s3-website.eu-central-1.amazonaws.com", + "s3.dualstack.eu-central-2.amazonaws.com", + "s3-accesspoint.dualstack.eu-central-2.amazonaws.com", + "s3-website.dualstack.eu-central-2.amazonaws.com", + "s3.eu-central-2.amazonaws.com", + "s3-accesspoint.eu-central-2.amazonaws.com", + "s3-object-lambda.eu-central-2.amazonaws.com", + "s3-website.eu-central-2.amazonaws.com", + "s3.dualstack.eu-north-1.amazonaws.com", + "s3-accesspoint.dualstack.eu-north-1.amazonaws.com", + "s3.eu-north-1.amazonaws.com", + "s3-accesspoint.eu-north-1.amazonaws.com", + "s3-object-lambda.eu-north-1.amazonaws.com", + "s3-website.eu-north-1.amazonaws.com", + "s3.dualstack.eu-south-1.amazonaws.com", + "s3-accesspoint.dualstack.eu-south-1.amazonaws.com", + "s3-website.dualstack.eu-south-1.amazonaws.com", + "s3.eu-south-1.amazonaws.com", + "s3-accesspoint.eu-south-1.amazonaws.com", + "s3-object-lambda.eu-south-1.amazonaws.com", + "s3-website.eu-south-1.amazonaws.com", + "s3.dualstack.eu-south-2.amazonaws.com", + "s3-accesspoint.dualstack.eu-south-2.amazonaws.com", + "s3-website.dualstack.eu-south-2.amazonaws.com", + "s3.eu-south-2.amazonaws.com", + "s3-accesspoint.eu-south-2.amazonaws.com", + "s3-object-lambda.eu-south-2.amazonaws.com", + "s3-website.eu-south-2.amazonaws.com", "s3.dualstack.eu-west-1.amazonaws.com", + "s3-accesspoint.dualstack.eu-west-1.amazonaws.com", + "s3-website.dualstack.eu-west-1.amazonaws.com", + "s3.eu-west-1.amazonaws.com", + "s3-accesspoint.eu-west-1.amazonaws.com", + "s3-deprecated.eu-west-1.amazonaws.com", + "s3-object-lambda.eu-west-1.amazonaws.com", + "s3-website.eu-west-1.amazonaws.com", "s3.dualstack.eu-west-2.amazonaws.com", + "s3-accesspoint.dualstack.eu-west-2.amazonaws.com", "s3.eu-west-2.amazonaws.com", + "s3-accesspoint.eu-west-2.amazonaws.com", + "s3-object-lambda.eu-west-2.amazonaws.com", "s3-website.eu-west-2.amazonaws.com", "s3.dualstack.eu-west-3.amazonaws.com", + "s3-accesspoint.dualstack.eu-west-3.amazonaws.com", + "s3-website.dualstack.eu-west-3.amazonaws.com", "s3.eu-west-3.amazonaws.com", + "s3-accesspoint.eu-west-3.amazonaws.com", + "s3-object-lambda.eu-west-3.amazonaws.com", "s3-website.eu-west-3.amazonaws.com", + "s3.dualstack.il-central-1.amazonaws.com", + "s3-accesspoint.dualstack.il-central-1.amazonaws.com", + "s3-website.dualstack.il-central-1.amazonaws.com", + "s3.il-central-1.amazonaws.com", + "s3-accesspoint.il-central-1.amazonaws.com", + "s3-object-lambda.il-central-1.amazonaws.com", + "s3-website.il-central-1.amazonaws.com", + "s3.dualstack.me-central-1.amazonaws.com", + "s3-accesspoint.dualstack.me-central-1.amazonaws.com", + "s3-website.dualstack.me-central-1.amazonaws.com", + "s3.me-central-1.amazonaws.com", + "s3-accesspoint.me-central-1.amazonaws.com", + "s3-object-lambda.me-central-1.amazonaws.com", + "s3-website.me-central-1.amazonaws.com", + "s3.dualstack.me-south-1.amazonaws.com", + "s3-accesspoint.dualstack.me-south-1.amazonaws.com", + "s3.me-south-1.amazonaws.com", + "s3-accesspoint.me-south-1.amazonaws.com", + "s3-object-lambda.me-south-1.amazonaws.com", + "s3-website.me-south-1.amazonaws.com", "s3.amazonaws.com", + "s3-1.amazonaws.com", + "s3-ap-east-1.amazonaws.com", "s3-ap-northeast-1.amazonaws.com", "s3-ap-northeast-2.amazonaws.com", + "s3-ap-northeast-3.amazonaws.com", "s3-ap-south-1.amazonaws.com", "s3-ap-southeast-1.amazonaws.com", "s3-ap-southeast-2.amazonaws.com", "s3-ca-central-1.amazonaws.com", "s3-eu-central-1.amazonaws.com", + "s3-eu-north-1.amazonaws.com", "s3-eu-west-1.amazonaws.com", "s3-eu-west-2.amazonaws.com", "s3-eu-west-3.amazonaws.com", "s3-external-1.amazonaws.com", + "s3-fips-us-gov-east-1.amazonaws.com", "s3-fips-us-gov-west-1.amazonaws.com", + "mrap.accesspoint.s3-global.amazonaws.com", + "s3-me-south-1.amazonaws.com", "s3-sa-east-1.amazonaws.com", "s3-us-east-2.amazonaws.com", + "s3-us-gov-east-1.amazonaws.com", "s3-us-gov-west-1.amazonaws.com", "s3-us-west-1.amazonaws.com", "s3-us-west-2.amazonaws.com", @@ -6993,18 +7371,181 @@ var rules = [...]string{ "s3-website-eu-west-1.amazonaws.com", "s3-website-sa-east-1.amazonaws.com", "s3-website-us-east-1.amazonaws.com", + "s3-website-us-gov-west-1.amazonaws.com", "s3-website-us-west-1.amazonaws.com", "s3-website-us-west-2.amazonaws.com", "s3.dualstack.sa-east-1.amazonaws.com", + "s3-accesspoint.dualstack.sa-east-1.amazonaws.com", + "s3-website.dualstack.sa-east-1.amazonaws.com", + "s3.sa-east-1.amazonaws.com", + "s3-accesspoint.sa-east-1.amazonaws.com", + "s3-object-lambda.sa-east-1.amazonaws.com", + "s3-website.sa-east-1.amazonaws.com", "s3.dualstack.us-east-1.amazonaws.com", + "s3-accesspoint.dualstack.us-east-1.amazonaws.com", + "s3-accesspoint-fips.dualstack.us-east-1.amazonaws.com", + "s3-fips.dualstack.us-east-1.amazonaws.com", + "s3-website.dualstack.us-east-1.amazonaws.com", + "s3.us-east-1.amazonaws.com", + "s3-accesspoint.us-east-1.amazonaws.com", + "s3-accesspoint-fips.us-east-1.amazonaws.com", + "s3-deprecated.us-east-1.amazonaws.com", + "s3-fips.us-east-1.amazonaws.com", + "s3-object-lambda.us-east-1.amazonaws.com", + "s3-website.us-east-1.amazonaws.com", "s3.dualstack.us-east-2.amazonaws.com", + "s3-accesspoint.dualstack.us-east-2.amazonaws.com", + "s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com", + "s3-fips.dualstack.us-east-2.amazonaws.com", + "s3-website.dualstack.us-east-2.amazonaws.com", "s3.us-east-2.amazonaws.com", + "s3-accesspoint.us-east-2.amazonaws.com", + "s3-accesspoint-fips.us-east-2.amazonaws.com", + "s3-deprecated.us-east-2.amazonaws.com", + "s3-fips.us-east-2.amazonaws.com", + "s3-object-lambda.us-east-2.amazonaws.com", "s3-website.us-east-2.amazonaws.com", + "s3.dualstack.us-gov-east-1.amazonaws.com", + "s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com", + "s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com", + "s3-fips.dualstack.us-gov-east-1.amazonaws.com", + "s3.us-gov-east-1.amazonaws.com", + "s3-accesspoint.us-gov-east-1.amazonaws.com", + "s3-accesspoint-fips.us-gov-east-1.amazonaws.com", + "s3-fips.us-gov-east-1.amazonaws.com", + "s3-object-lambda.us-gov-east-1.amazonaws.com", + "s3-website.us-gov-east-1.amazonaws.com", + "s3.dualstack.us-gov-west-1.amazonaws.com", + "s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com", + "s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com", + "s3-fips.dualstack.us-gov-west-1.amazonaws.com", + "s3.us-gov-west-1.amazonaws.com", + "s3-accesspoint.us-gov-west-1.amazonaws.com", + "s3-accesspoint-fips.us-gov-west-1.amazonaws.com", + "s3-fips.us-gov-west-1.amazonaws.com", + "s3-object-lambda.us-gov-west-1.amazonaws.com", + "s3-website.us-gov-west-1.amazonaws.com", + "s3.dualstack.us-west-1.amazonaws.com", + "s3-accesspoint.dualstack.us-west-1.amazonaws.com", + "s3-accesspoint-fips.dualstack.us-west-1.amazonaws.com", + "s3-fips.dualstack.us-west-1.amazonaws.com", + "s3-website.dualstack.us-west-1.amazonaws.com", + "s3.us-west-1.amazonaws.com", + "s3-accesspoint.us-west-1.amazonaws.com", + "s3-accesspoint-fips.us-west-1.amazonaws.com", + "s3-fips.us-west-1.amazonaws.com", + "s3-object-lambda.us-west-1.amazonaws.com", + "s3-website.us-west-1.amazonaws.com", + "s3.dualstack.us-west-2.amazonaws.com", + "s3-accesspoint.dualstack.us-west-2.amazonaws.com", + "s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com", + "s3-fips.dualstack.us-west-2.amazonaws.com", + "s3-website.dualstack.us-west-2.amazonaws.com", + "s3.us-west-2.amazonaws.com", + "s3-accesspoint.us-west-2.amazonaws.com", + "s3-accesspoint-fips.us-west-2.amazonaws.com", + "s3-deprecated.us-west-2.amazonaws.com", + "s3-fips.us-west-2.amazonaws.com", + "s3-object-lambda.us-west-2.amazonaws.com", + "s3-website.us-west-2.amazonaws.com", + "labeling.ap-northeast-1.sagemaker.aws", + "labeling.ap-northeast-2.sagemaker.aws", + "labeling.ap-south-1.sagemaker.aws", + "labeling.ap-southeast-1.sagemaker.aws", + "labeling.ap-southeast-2.sagemaker.aws", + "labeling.ca-central-1.sagemaker.aws", + "labeling.eu-central-1.sagemaker.aws", + "labeling.eu-west-1.sagemaker.aws", + "labeling.eu-west-2.sagemaker.aws", + "labeling.us-east-1.sagemaker.aws", + "labeling.us-east-2.sagemaker.aws", + "labeling.us-west-2.sagemaker.aws", + "notebook.af-south-1.sagemaker.aws", + "notebook.ap-east-1.sagemaker.aws", + "notebook.ap-northeast-1.sagemaker.aws", + "notebook.ap-northeast-2.sagemaker.aws", + "notebook.ap-northeast-3.sagemaker.aws", + "notebook.ap-south-1.sagemaker.aws", + "notebook.ap-south-2.sagemaker.aws", + "notebook.ap-southeast-1.sagemaker.aws", + "notebook.ap-southeast-2.sagemaker.aws", + "notebook.ap-southeast-3.sagemaker.aws", + "notebook.ap-southeast-4.sagemaker.aws", + "notebook.ca-central-1.sagemaker.aws", + "notebook-fips.ca-central-1.sagemaker.aws", + "notebook.ca-west-1.sagemaker.aws", + "notebook-fips.ca-west-1.sagemaker.aws", + "notebook.eu-central-1.sagemaker.aws", + "notebook.eu-central-2.sagemaker.aws", + "notebook.eu-north-1.sagemaker.aws", + "notebook.eu-south-1.sagemaker.aws", + "notebook.eu-south-2.sagemaker.aws", + "notebook.eu-west-1.sagemaker.aws", + "notebook.eu-west-2.sagemaker.aws", + "notebook.eu-west-3.sagemaker.aws", + "notebook.il-central-1.sagemaker.aws", + "notebook.me-central-1.sagemaker.aws", + "notebook.me-south-1.sagemaker.aws", + "notebook.sa-east-1.sagemaker.aws", + "notebook.us-east-1.sagemaker.aws", + "notebook-fips.us-east-1.sagemaker.aws", + "notebook.us-east-2.sagemaker.aws", + "notebook-fips.us-east-2.sagemaker.aws", + "notebook.us-gov-east-1.sagemaker.aws", + "notebook-fips.us-gov-east-1.sagemaker.aws", + "notebook.us-gov-west-1.sagemaker.aws", + "notebook-fips.us-gov-west-1.sagemaker.aws", + "notebook.us-west-1.sagemaker.aws", + "notebook-fips.us-west-1.sagemaker.aws", + "notebook.us-west-2.sagemaker.aws", + "notebook-fips.us-west-2.sagemaker.aws", + "notebook.cn-north-1.sagemaker.com.cn", + "notebook.cn-northwest-1.sagemaker.com.cn", + "studio.af-south-1.sagemaker.aws", + "studio.ap-east-1.sagemaker.aws", + "studio.ap-northeast-1.sagemaker.aws", + "studio.ap-northeast-2.sagemaker.aws", + "studio.ap-northeast-3.sagemaker.aws", + "studio.ap-south-1.sagemaker.aws", + "studio.ap-southeast-1.sagemaker.aws", + "studio.ap-southeast-2.sagemaker.aws", + "studio.ap-southeast-3.sagemaker.aws", + "studio.ca-central-1.sagemaker.aws", + "studio.eu-central-1.sagemaker.aws", + "studio.eu-central-2.sagemaker.aws", + "studio.eu-north-1.sagemaker.aws", + "studio.eu-south-1.sagemaker.aws", + "studio.eu-south-2.sagemaker.aws", + "studio.eu-west-1.sagemaker.aws", + "studio.eu-west-2.sagemaker.aws", + "studio.eu-west-3.sagemaker.aws", + "studio.il-central-1.sagemaker.aws", + "studio.me-central-1.sagemaker.aws", + "studio.me-south-1.sagemaker.aws", + "studio.sa-east-1.sagemaker.aws", + "studio.us-east-1.sagemaker.aws", + "studio.us-east-2.sagemaker.aws", + "studio.us-gov-east-1.sagemaker.aws", + "studio-fips.us-gov-east-1.sagemaker.aws", + "studio.us-gov-west-1.sagemaker.aws", + "studio-fips.us-gov-west-1.sagemaker.aws", + "studio.us-west-1.sagemaker.aws", + "studio.us-west-2.sagemaker.aws", + "studio.cn-north-1.sagemaker.com.cn", + "studio.cn-northwest-1.sagemaker.com.cn", + "*.experiments.sagemaker.aws", "analytics-gateway.ap-northeast-1.amazonaws.com", + "analytics-gateway.ap-northeast-2.amazonaws.com", + "analytics-gateway.ap-south-1.amazonaws.com", + "analytics-gateway.ap-southeast-1.amazonaws.com", + "analytics-gateway.ap-southeast-2.amazonaws.com", + "analytics-gateway.eu-central-1.amazonaws.com", "analytics-gateway.eu-west-1.amazonaws.com", "analytics-gateway.us-east-1.amazonaws.com", "analytics-gateway.us-east-2.amazonaws.com", "analytics-gateway.us-west-2.amazonaws.com", + "amplifyapp.com", + "*.awsapprunner.com", "webview-assets.aws-cloud9.af-south-1.amazonaws.com", "vfs.cloud9.af-south-1.amazonaws.com", "webview-assets.cloud9.af-south-1.amazonaws.com", @@ -7050,6 +7591,8 @@ var rules = [...]string{ "webview-assets.aws-cloud9.eu-west-3.amazonaws.com", "vfs.cloud9.eu-west-3.amazonaws.com", "webview-assets.cloud9.eu-west-3.amazonaws.com", + "webview-assets.aws-cloud9.il-central-1.amazonaws.com", + "vfs.cloud9.il-central-1.amazonaws.com", "webview-assets.aws-cloud9.me-south-1.amazonaws.com", "vfs.cloud9.me-south-1.amazonaws.com", "webview-assets.cloud9.me-south-1.amazonaws.com", @@ -7068,39 +7611,59 @@ var rules = [...]string{ "webview-assets.aws-cloud9.us-west-2.amazonaws.com", "vfs.cloud9.us-west-2.amazonaws.com", "webview-assets.cloud9.us-west-2.amazonaws.com", + "awsapps.com", "cn-north-1.eb.amazonaws.com.cn", "cn-northwest-1.eb.amazonaws.com.cn", "elasticbeanstalk.com", + "af-south-1.elasticbeanstalk.com", + "ap-east-1.elasticbeanstalk.com", "ap-northeast-1.elasticbeanstalk.com", "ap-northeast-2.elasticbeanstalk.com", "ap-northeast-3.elasticbeanstalk.com", "ap-south-1.elasticbeanstalk.com", "ap-southeast-1.elasticbeanstalk.com", "ap-southeast-2.elasticbeanstalk.com", + "ap-southeast-3.elasticbeanstalk.com", "ca-central-1.elasticbeanstalk.com", "eu-central-1.elasticbeanstalk.com", + "eu-north-1.elasticbeanstalk.com", + "eu-south-1.elasticbeanstalk.com", "eu-west-1.elasticbeanstalk.com", "eu-west-2.elasticbeanstalk.com", "eu-west-3.elasticbeanstalk.com", + "il-central-1.elasticbeanstalk.com", + "me-south-1.elasticbeanstalk.com", "sa-east-1.elasticbeanstalk.com", "us-east-1.elasticbeanstalk.com", "us-east-2.elasticbeanstalk.com", + "us-gov-east-1.elasticbeanstalk.com", "us-gov-west-1.elasticbeanstalk.com", "us-west-1.elasticbeanstalk.com", "us-west-2.elasticbeanstalk.com", "*.elb.amazonaws.com.cn", "*.elb.amazonaws.com", "awsglobalaccelerator.com", + "*.private.repost.aws", + "transfer-webapp.ap-northeast-1.on.aws", + "transfer-webapp.ap-southeast-1.on.aws", + "transfer-webapp.ap-southeast-2.on.aws", + "transfer-webapp.eu-central-1.on.aws", + "transfer-webapp.eu-north-1.on.aws", + "transfer-webapp.eu-west-1.on.aws", + "transfer-webapp.us-east-1.on.aws", + "transfer-webapp.us-east-2.on.aws", + "transfer-webapp.us-west-2.on.aws", "eero.online", "eero-stage.online", - "t3l3p0rt.net", - "tele.amune.org", "apigee.io", + "panel.dev", "siiites.com", "appspacehosted.com", "appspaceusercontent.com", "appudo.net", "on-aptible.com", + "f5.si", + "arvanedge.ir", "user.aseinet.ne.jp", "gv.vc", "d.gv.vc", @@ -7112,19 +7675,14 @@ var rules = [...]string{ "myasustor.com", "cdn.prod.atlassian-dev.net", "translated.page", - "autocode.dev", + "myfritz.link", "myfritz.net", "onavstack.net", "*.awdev.ca", "*.advisor.ws", "ecommerce-shop.pl", "b-data.io", - "backplaneapp.io", "balena-devices.com", - "rs.ba", - "*.banzai.cloud", - "app.banzaicloud.io", - "*.backyards.banzaicloud.io", "base.ec", "official.ec", "buyshop.jp", @@ -7137,11 +7695,12 @@ var rules = [...]string{ "base.shop", "beagleboard.io", "*.beget.app", - "betainabox.com", + "pages.gay", "bnr.la", "bitbucket.io", "blackbaudcdn.net", "of.je", + "square.site", "bluebite.io", "boomla.net", "boutir.com", @@ -7152,69 +7711,96 @@ var rules = [...]string{ "square7.de", "bplaced.net", "square7.net", + "brave.app", + "*.s.brave.app", + "brave.io", + "*.s.brave.io", + "shop.brendly.hr", "shop.brendly.rs", "browsersafetymark.io", + "radio.am", + "radio.fm", + "cdn.bubble.io", + "bubbleapps.io", "uk0.bigv.io", "dh.bytemark.co.uk", "vm.bytemark.co.uk", "cafjs.com", - "mycd.eu", "canva-apps.cn", + "*.my.canvasite.cn", "canva-apps.com", + "*.my.canva.site", "drr.ac", "uwu.ai", "carrd.co", "crd.co", "ju.mp", - "ae.org", + "api.gov.uk", + "cdn77-storage.com", + "rsc.contentproxy9.cz", + "r.cdn77.net", + "cdn77-ssl.net", + "c.cdn77.org", + "rsc.cdn77.org", + "ssl.origin.cdn77-secure.org", + "za.bz", "br.com", "cn.com", - "com.de", - "com.se", "de.com", "eu.com", - "gb.net", - "hu.net", - "jp.net", "jpn.com", "mex.com", "ru.com", "sa.com", - "se.net", "uk.com", - "uk.net", "us.com", - "za.bz", "za.com", - "ar.com", - "hu.com", - "kr.com", - "no.com", - "qc.com", - "uy.com", - "africa.com", - "gr.com", - "in.net", - "web.in", - "us.org", - "co.com", - "aus.basketball", - "nz.basketball", - "radio.am", - "radio.fm", - "c.la", - "certmgr.org", + "com.de", + "gb.net", + "hu.net", + "jp.net", + "se.net", + "uk.net", + "ae.org", + "com.se", "cx.ua", "discourse.group", "discourse.team", - "cleverapps.io", "clerk.app", "clerkstage.app", "*.lcl.dev", "*.lclstage.dev", "*.stg.dev", "*.stgstage.dev", + "cleverapps.cc", + "*.services.clever-cloud.com", + "cleverapps.io", + "cleverapps.tech", "clickrising.net", + "cloudns.asia", + "cloudns.be", + "cloud-ip.biz", + "cloudns.biz", + "cloudns.cc", + "cloudns.ch", + "cloudns.cl", + "cloudns.club", + "dnsabr.com", + "ip-ddns.com", + "cloudns.cx", + "cloudns.eu", + "cloudns.in", + "cloudns.info", + "ddns-ip.net", + "dns-cloud.net", + "dns-dynamic.net", + "cloudns.nz", + "cloudns.org", + "ip-dynamic.org", + "cloudns.ph", + "cloudns.pro", + "cloudns.pw", + "cloudns.us", "c66.me", "cloud66.ws", "cloud66.zone", @@ -7223,8 +7809,7 @@ var rules = [...]string{ "cloudaccess.host", "freesite.host", "cloudaccess.net", - "cloudcontrolled.com", - "cloudcontrolapp.com", + "cloudbeesusercontent.io", "*.cloudera.site", "cf-ipfs.com", "cloudflare-ipfs.com", @@ -7232,89 +7817,93 @@ var rules = [...]string{ "pages.dev", "r2.dev", "workers.dev", + "cloudflare.net", + "cdn.cloudflare.net", + "cdn.cloudflareanycast.net", + "cdn.cloudflarecn.net", + "cdn.cloudflareglobal.net", + "cust.cloudscale.ch", + "objects.lpg.cloudscale.ch", + "objects.rma.cloudscale.ch", "wnext.app", - "co.ca", - "*.otap.co", - "co.cz", - "c.cdn77.org", - "cdn77-ssl.net", - "r.cdn77.net", - "rsc.cdn77.org", - "ssl.origin.cdn77-secure.org", - "cloudns.asia", - "cloudns.biz", - "cloudns.club", - "cloudns.cc", - "cloudns.eu", - "cloudns.in", - "cloudns.info", - "cloudns.org", - "cloudns.pro", - "cloudns.pw", - "cloudns.us", "cnpy.gdn", + "*.otap.co", + "co.ca", + "co.com", "codeberg.page", + "csb.app", + "preview.csb.app", "co.nl", "co.no", + "devinapps.com", + "staging.devinapps.com", "webhosting.be", "hosting-cluster.nl", + "ctfcloud.net", + "convex.site", "ac.ru", "edu.ru", "gov.ru", "int.ru", "mil.ru", - "test.ru", "dyn.cosidns.de", - "dynamisches-dns.de", "dnsupdater.de", + "dynamisches-dns.de", "internet-dns.de", "l-o-g-i-n.de", "dynamic-dns.info", "feste-ip.net", "knx-server.net", "static-access.net", + "craft.me", "realm.cz", + "on.crisp.email", "*.cryptonomic.net", - "cupcake.is", - "curv.dev", - "*.customer-oci.com", - "*.oci.customer-oci.com", - "*.ocp.customer-oci.com", - "*.ocs.customer-oci.com", + "cfolks.pl", "cyon.link", "cyon.site", - "fnwk.site", - "folionetwork.site", - "platform0.app", - "daplie.me", - "localhost.daplie.me", - "dattolocal.com", - "dattorelay.com", - "dattoweb.com", - "mydatto.com", - "dattolocal.net", - "mydatto.net", "biz.dk", "co.dk", "firm.dk", "reg.dk", "store.dk", "dyndns.dappnode.io", - "*.dapps.earth", - "*.bzz.dapps.earth", "builtwithdark.com", + "darklang.io", "demo.datadetect.com", "instance.datadetect.com", "edgestack.me", - "ddns5.com", + "dattolocal.com", + "dattorelay.com", + "dattoweb.com", + "mydatto.com", + "dattolocal.net", + "mydatto.net", + "ddnss.de", + "dyn.ddnss.de", + "dyndns.ddnss.de", + "dyn-ip24.de", + "dyndns1.de", + "home-webserver.de", + "dyn.home-webserver.de", + "myhome-server.de", + "ddnss.org", "debian.net", + "definima.io", + "definima.net", "deno.dev", "deno-staging.dev", + "deno.net", "dedyn.io", "deta.app", "deta.dev", - "*.rss.my.id", - "*.diher.solutions", + "dfirma.pl", + "dkonto.pl", + "you2.pl", + "ondigitalocean.app", + "*.digitaloceanspaces.com", + "us.kg", + "dpdns.org", "discordsays.com", "discordsez.com", "jozi.biz", @@ -7324,14 +7913,31 @@ var rules = [...]string{ "drayddns.com", "shoparena.pl", "dreamhosters.com", + "durumis.com", "mydrobo.com", - "drud.io", - "drud.us", "duckdns.org", - "bip.sh", - "bitbridge.net", "dy.fi", "tunk.org", + "dyndns.biz", + "for-better.biz", + "for-more.biz", + "for-some.biz", + "for-the.biz", + "selfip.biz", + "webhop.biz", + "ftpaccess.cc", + "game-server.cc", + "myphotos.cc", + "scrapping.cc", + "blogdns.com", + "cechire.com", + "dnsalias.com", + "dnsdojo.com", + "doesntexist.com", + "dontexist.com", + "doomdns.com", + "dyn-o-saur.com", + "dynalias.com", "dyndns-at-home.com", "dyndns-at-work.com", "dyndns-blog.com", @@ -7346,64 +7952,14 @@ var rules = [...]string{ "dyndns-web.com", "dyndns-wiki.com", "dyndns-work.com", - "dyndns.biz", - "dyndns.info", - "dyndns.org", - "dyndns.tv", - "at-band-camp.net", - "ath.cx", - "barrel-of-knowledge.info", - "barrell-of-knowledge.info", - "better-than.tv", - "blogdns.com", - "blogdns.net", - "blogdns.org", - "blogsite.org", - "boldlygoingnowhere.org", - "broke-it.net", - "buyshouses.net", - "cechire.com", - "dnsalias.com", - "dnsalias.net", - "dnsalias.org", - "dnsdojo.com", - "dnsdojo.net", - "dnsdojo.org", - "does-it.net", - "doesntexist.com", - "doesntexist.org", - "dontexist.com", - "dontexist.net", - "dontexist.org", - "doomdns.com", - "doomdns.org", - "dvrdns.org", - "dyn-o-saur.com", - "dynalias.com", - "dynalias.net", - "dynalias.org", - "dynathome.net", - "dyndns.ws", - "endofinternet.net", - "endofinternet.org", - "endoftheinternet.org", "est-a-la-maison.com", "est-a-la-masion.com", "est-le-patron.com", "est-mon-blogueur.com", - "for-better.biz", - "for-more.biz", - "for-our.info", - "for-some.biz", - "for-the.biz", - "forgot.her.name", - "forgot.his.name", "from-ak.com", "from-al.com", "from-ar.com", - "from-az.net", "from-ca.com", - "from-co.net", "from-ct.com", "from-dc.com", "from-de.com", @@ -7416,10 +7972,8 @@ var rules = [...]string{ "from-in.com", "from-ks.com", "from-ky.com", - "from-la.net", "from-ma.com", "from-md.com", - "from-me.org", "from-mi.com", "from-mn.com", "from-mo.com", @@ -7432,7 +7986,6 @@ var rules = [...]string{ "from-nj.com", "from-nm.com", "from-nv.com", - "from-ny.net", "from-oh.com", "from-ok.com", "from-or.com", @@ -7450,45 +8003,18 @@ var rules = [...]string{ "from-wi.com", "from-wv.com", "from-wy.com", - "ftpaccess.cc", - "fuettertdasnetz.de", - "game-host.org", - "game-server.cc", "getmyip.com", - "gets-it.net", - "go.dyndns.org", "gotdns.com", - "gotdns.org", - "groks-the.info", - "groks-this.info", - "ham-radio-op.net", - "here-for-more.info", "hobby-site.com", - "hobby-site.org", - "home.dyndns.org", - "homedns.org", - "homeftp.net", - "homeftp.org", - "homeip.net", "homelinux.com", - "homelinux.net", - "homelinux.org", "homeunix.com", - "homeunix.net", - "homeunix.org", "iamallama.com", - "in-the-band.net", "is-a-anarchist.com", "is-a-blogger.com", "is-a-bookkeeper.com", - "is-a-bruinsfan.org", "is-a-bulls-fan.com", - "is-a-candidate.org", "is-a-caterer.com", - "is-a-celticsfan.org", "is-a-chef.com", - "is-a-chef.net", - "is-a-chef.org", "is-a-conservative.com", "is-a-cpa.com", "is-a-cubicle-slave.com", @@ -7497,31 +8023,25 @@ var rules = [...]string{ "is-a-doctor.com", "is-a-financialadvisor.com", "is-a-geek.com", - "is-a-geek.net", - "is-a-geek.org", "is-a-green.com", "is-a-guru.com", "is-a-hard-worker.com", "is-a-hunter.com", - "is-a-knight.org", "is-a-landscaper.com", "is-a-lawyer.com", "is-a-liberal.com", "is-a-libertarian.com", - "is-a-linux-user.org", "is-a-llama.com", "is-a-musician.com", "is-a-nascarfan.com", "is-a-nurse.com", "is-a-painter.com", - "is-a-patsfan.org", "is-a-personaltrainer.com", "is-a-photographer.com", "is-a-player.com", "is-a-republican.com", "is-a-rockstar.com", "is-a-socialist.com", - "is-a-soxfan.org", "is-a-student.com", "is-a-teacher.com", "is-a-techie.com", @@ -7533,98 +8053,150 @@ var rules = [...]string{ "is-an-artist.com", "is-an-engineer.com", "is-an-entertainer.com", - "is-by.us", "is-certified.com", - "is-found.org", "is-gone.com", "is-into-anime.com", "is-into-cars.com", "is-into-cartoons.com", "is-into-games.com", "is-leet.com", - "is-lost.org", "is-not-certified.com", - "is-saved.org", "is-slick.com", "is-uberleet.com", - "is-very-bad.org", - "is-very-evil.org", - "is-very-good.org", - "is-very-nice.org", - "is-very-sweet.org", "is-with-theband.com", "isa-geek.com", - "isa-geek.net", - "isa-geek.org", "isa-hockeynut.com", "issmarterthanyou.com", + "likes-pie.com", + "likescandy.com", + "neat-url.com", + "saves-the-whales.com", + "selfip.com", + "sells-for-less.com", + "sells-for-u.com", + "servebbs.com", + "simple-url.com", + "space-to-rent.com", + "teaches-yoga.com", + "writesthisblog.com", + "ath.cx", + "fuettertdasnetz.de", "isteingeek.de", "istmein.de", - "kicks-ass.net", - "kicks-ass.org", - "knowsitall.info", - "land-4-sale.us", "lebtimnetz.de", "leitungsen.de", - "likes-pie.com", - "likescandy.com", + "traeumtgerade.de", + "barrel-of-knowledge.info", + "barrell-of-knowledge.info", + "dyndns.info", + "for-our.info", + "groks-the.info", + "groks-this.info", + "here-for-more.info", + "knowsitall.info", + "selfip.info", + "webhop.info", + "forgot.her.name", + "forgot.his.name", + "at-band-camp.net", + "blogdns.net", + "broke-it.net", + "buyshouses.net", + "dnsalias.net", + "dnsdojo.net", + "does-it.net", + "dontexist.net", + "dynalias.net", + "dynathome.net", + "endofinternet.net", + "from-az.net", + "from-co.net", + "from-la.net", + "from-ny.net", + "gets-it.net", + "ham-radio-op.net", + "homeftp.net", + "homeip.net", + "homelinux.net", + "homeunix.net", + "in-the-band.net", + "is-a-chef.net", + "is-a-geek.net", + "isa-geek.net", + "kicks-ass.net", + "office-on-the.net", + "podzone.net", + "scrapper-site.net", + "selfip.net", + "sells-it.net", + "servebbs.net", + "serveftp.net", + "thruhere.net", + "webhop.net", "merseine.nu", "mine.nu", + "shacknet.nu", + "blogdns.org", + "blogsite.org", + "boldlygoingnowhere.org", + "dnsalias.org", + "dnsdojo.org", + "doesntexist.org", + "dontexist.org", + "doomdns.org", + "dvrdns.org", + "dynalias.org", + "dyndns.org", + "go.dyndns.org", + "home.dyndns.org", + "endofinternet.org", + "endoftheinternet.org", + "from-me.org", + "game-host.org", + "gotdns.org", + "hobby-site.org", + "homedns.org", + "homeftp.org", + "homelinux.org", + "homeunix.org", + "is-a-bruinsfan.org", + "is-a-candidate.org", + "is-a-celticsfan.org", + "is-a-chef.org", + "is-a-geek.org", + "is-a-knight.org", + "is-a-linux-user.org", + "is-a-patsfan.org", + "is-a-soxfan.org", + "is-found.org", + "is-lost.org", + "is-saved.org", + "is-very-bad.org", + "is-very-evil.org", + "is-very-good.org", + "is-very-nice.org", + "is-very-sweet.org", + "isa-geek.org", + "kicks-ass.org", "misconfused.org", - "mypets.ws", - "myphotos.cc", - "neat-url.com", - "office-on-the.net", - "on-the-web.tv", - "podzone.net", "podzone.org", "readmyblog.org", - "saves-the-whales.com", - "scrapper-site.net", - "scrapping.cc", - "selfip.biz", - "selfip.com", - "selfip.info", - "selfip.net", "selfip.org", - "sells-for-less.com", - "sells-for-u.com", - "sells-it.net", "sellsyourhome.org", - "servebbs.com", - "servebbs.net", "servebbs.org", - "serveftp.net", "serveftp.org", "servegame.org", - "shacknet.nu", - "simple-url.com", - "space-to-rent.com", "stuff-4-sale.org", - "stuff-4-sale.us", - "teaches-yoga.com", - "thruhere.net", - "traeumtgerade.de", - "webhop.biz", - "webhop.info", - "webhop.net", "webhop.org", + "better-than.tv", + "dyndns.tv", + "on-the-web.tv", "worse-than.tv", - "writesthisblog.com", - "ddnss.de", - "dyn.ddnss.de", - "dyndns.ddnss.de", - "dyndns1.de", - "dyn-ip24.de", - "home-webserver.de", - "dyn.home-webserver.de", - "myhome-server.de", - "ddnss.org", - "definima.net", - "definima.io", - "ondigitalocean.app", - "*.digitaloceanspaces.com", - "bci.dnstrace.pro", + "is-by.us", + "land-4-sale.us", + "stuff-4-sale.us", + "dyndns.ws", + "mypets.ws", "ddnsfree.com", "ddnsgeek.com", "giize.com", @@ -7641,11 +8213,18 @@ var rules = [...]string{ "mywire.org", "webredirect.org", "myddns.rocks", - "blogsite.xyz", "dynv6.net", "e4.cz", "easypanel.app", "easypanel.host", + "*.ewp.live", + "twmail.cc", + "twmail.net", + "twmail.org", + "mymailer.com.tw", + "url.tw", + "at.emf.camp", + "rt.ht", "elementor.cloud", "elementor.cool", "en-root.fr", @@ -7653,8 +8232,6 @@ var rules = [...]string{ "tuleap-partners.com", "encr.app", "encoreapi.com", - "onred.one", - "staging.onred.one", "eu.encoway.cloud", "eu.org", "al.eu.org", @@ -7690,7 +8267,6 @@ var rules = [...]string{ "lt.eu.org", "lu.eu.org", "lv.eu.org", - "mc.eu.org", "me.eu.org", "mk.eu.org", "mt.eu.org", @@ -7700,10 +8276,8 @@ var rules = [...]string{ "nl.eu.org", "no.eu.org", "nz.eu.org", - "paris.eu.org", "pl.eu.org", "pt.eu.org", - "q-a.eu.org", "ro.eu.org", "ru.eu.org", "se.eu.org", @@ -7721,13 +8295,11 @@ var rules = [...]string{ "us-2.evennode.com", "us-3.evennode.com", "us-4.evennode.com", - "twmail.cc", - "twmail.net", - "twmail.org", - "mymailer.com.tw", - "url.tw", + "relay.evervault.app", + "relay.evervault.dev", + "expo.app", + "staging.expo.app", "onfabrica.com", - "apps.fbsbx.com", "ru.net", "adygeya.ru", "bashkiria.ru", @@ -7805,8 +8377,6 @@ var rules = [...]string{ "edgecompute.app", "fastly-edge.com", "fastly-terrarium.com", - "fastlylb.net", - "map.fastlylb.net", "freetls.fastly.net", "map.fastly.net", "a.prod.fastly.net", @@ -7814,49 +8384,42 @@ var rules = [...]string{ "a.ssl.fastly.net", "b.ssl.fastly.net", "global.ssl.fastly.net", + "fastlylb.net", + "map.fastlylb.net", "*.user.fm", "fastvps-server.com", "fastvps.host", "myfast.host", "fastvps.site", "myfast.space", + "conn.uk", + "copro.uk", + "hosp.uk", "fedorainfracloud.org", "fedorapeople.org", "cloud.fedoraproject.org", "app.os.fedoraproject.org", "app.os.stg.fedoraproject.org", - "conn.uk", - "copro.uk", - "hosp.uk", "mydobiss.com", "fh-muenster.io", "filegear.me", - "filegear-au.me", - "filegear-de.me", - "filegear-gb.me", - "filegear-ie.me", - "filegear-jp.me", - "filegear-sg.me", "firebaseapp.com", - "fireweb.app", - "flap.id", - "onflashdrive.app", "fldrv.com", + "on-fleek.app", + "flutterflow.app", "fly.dev", - "edgeapp.net", "shw.io", - "flynnhosting.net", + "edgeapp.net", "forgeblocks.com", "id.forgerock.io", + "framer.ai", "framer.app", "framercanvas.com", "framer.media", "framer.photos", "framer.website", "framer.wiki", - "*.frusky.de", - "ravpage.co.il", - "0e.vc", + "*.0e.vc", "freebox-os.com", "freeboxos.com", "fbx-os.fr", @@ -7865,7 +8428,23 @@ var rules = [...]string{ "freeboxos.fr", "freedesktop.org", "freemyip.com", + "*.frusky.de", "wien.funkfeuer.at", + "daemon.asia", + "dix.asia", + "mydns.bz", + "0am.jp", + "0g0.jp", + "0j0.jp", + "0t0.jp", + "mydns.jp", + "pgw.jp", + "wjg.jp", + "keyword-on.net", + "live-on.net", + "server-on.net", + "mydns.tw", + "mydns.vc", "*.futurecms.at", "*.ex.futurecms.at", "*.in.futurecms.at", @@ -7874,6 +8453,9 @@ var rules = [...]string{ "*.ex.ortsinfo.at", "*.kunden.ortsinfo.at", "*.statics.cloud", + "aliases121.com", + "campaign.gov.uk", + "service.gov.uk", "independent-commission.uk", "independent-inquest.uk", "independent-inquiry.uk", @@ -7881,16 +8463,11 @@ var rules = [...]string{ "independent-review.uk", "public-inquiry.uk", "royal-commission.uk", - "campaign.gov.uk", - "service.gov.uk", - "api.gov.uk", "gehirn.ne.jp", "usercontent.jp", "gentapps.com", "gentlentapis.com", - "lab.ms", "cdn-edges.net", - "ghost.io", "gsj.bz", "githubusercontent.com", "githubpreview.dev", @@ -8009,23 +8586,19 @@ var rules = [...]string{ "whitesnow.jp", "zombie.jp", "heteml.net", - "cloudapps.digital", - "london.cloudapps.digital", - "pymnt.uk", - "homeoffice.gov.uk", - "ro.im", + "graphic.design", "goip.de", - "run.app", - "a.run.app", + "*.hosted.app", + "*.run.app", "web.app", "*.0emm.com", "appspot.com", "*.r.appspot.com", + "blogspot.com", "codespot.com", "googleapis.com", "googlecode.com", "pagespeedmobilizer.com", - "publishproxy.com", "withgoogle.com", "withyoutube.com", "*.gateway.dev", @@ -8033,126 +8606,71 @@ var rules = [...]string{ "translate.goog", "*.usercontent.goog", "cloudfunctions.net", - "blogspot.ae", - "blogspot.al", - "blogspot.am", - "blogspot.ba", - "blogspot.be", - "blogspot.bg", - "blogspot.bj", - "blogspot.ca", - "blogspot.cf", - "blogspot.ch", - "blogspot.cl", - "blogspot.co.at", - "blogspot.co.id", - "blogspot.co.il", - "blogspot.co.ke", - "blogspot.co.nz", - "blogspot.co.uk", - "blogspot.co.za", - "blogspot.com", - "blogspot.com.ar", - "blogspot.com.au", - "blogspot.com.br", - "blogspot.com.by", - "blogspot.com.co", - "blogspot.com.cy", - "blogspot.com.ee", - "blogspot.com.eg", - "blogspot.com.es", - "blogspot.com.mt", - "blogspot.com.ng", - "blogspot.com.tr", - "blogspot.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.mr", - "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", "goupile.fr", + "pymnt.uk", + "cloudapps.digital", + "london.cloudapps.digital", "gov.nl", - "awsmppl.com", + "grafana-dev.net", + "grayjayleagues.com", "xn--gnstigbestellen-zvb.de", "xn--gnstigliefern-wob.de", - "fin.ci", - "free.hr", - "caa.li", - "ua.rs", - "conf.se", - "hs.zone", - "hs.run", + "xn--hkkinen-5wa.fi", + "hrsn.dev", "hashbang.sh", "hasura.app", "hasura-app.io", + "hatenablog.com", + "hatenadiary.com", + "hateblo.jp", + "hatenablog.jp", + "hatenadiary.jp", + "hatenadiary.org", "pages.it.hs-heilbronn.de", + "pages-research.it.hs-heilbronn.de", + "heiyu.space", + "helioho.st", + "heliohost.us", "hepforge.org", "herokuapp.com", - "herokussl.com", + "heyflow.page", + "heyflow.site", "ravendb.cloud", "ravendb.community", - "ravendb.me", "development.run", "ravendb.run", "homesklep.pl", - "secaas.hk", + "*.kin.one", + "*.id.pub", + "*.kin.pub", "hoplix.shop", "orx.biz", "biz.gl", + "biz.ng", + "co.biz.ng", + "dl.biz.ng", + "go.biz.ng", + "lg.biz.ng", + "on.biz.ng", "col.ng", "firm.ng", "gen.ng", "ltd.ng", "ngo.ng", - "edu.scot", - "sch.so", + "plc.ng", "ie.ua", "hostyhosting.io", - "xn--hkkinen-5wa.fi", + "hf.space", + "static.hf.space", + "hypernode.io", + "iobb.net", + "co.cz", "*.moonscale.io", "moonscale.net", + "gr.com", "iki.fi", "ibxos.it", "iliadboxos.it", - "impertrixcdn.com", - "impertrix.com", "smushcdn.com", "wphostedmail.com", "wpmucdn.com", @@ -8163,11 +8681,12 @@ var rules = [...]string{ "in-brb.de", "in-butter.de", "in-dsl.de", - "in-dsl.net", - "in-dsl.org", "in-vpn.de", + "in-dsl.net", "in-vpn.net", + "in-dsl.org", "in-vpn.org", + "oninferno.net", "biz.at", "info.at", "info.cx", @@ -8200,18 +8719,33 @@ var rules = [...]string{ "to.leg.br", "pixolino.com", "na4u.ru", + "botdash.app", + "botdash.dev", + "botdash.gg", + "botdash.net", + "botda.sh", + "botdash.xyz", + "apps-1and1.com", + "live-website.com", + "apps-1and1.net", + "websitebuilder.online", + "app-ionos.space", "iopsys.se", + "*.inbrowser.dev", + "*.dweb.link", + "*.inbrowser.link", "ipifony.net", + "ir.md", + "is-a-good.dev", + "is-a.dev", "iservschule.de", "mein-iserv.de", "schulplattform.de", "schulserver.de", "test-iserv.de", "iserv.dev", - "iobb.net", "mel.cloudlets.com.au", "cloud.interhostsolutions.be", - "mycloud.by", "alp1.ae.flow.ch", "appengine.flow.ch", "es-1.axarnet.cloud", @@ -8233,7 +8767,6 @@ var rules = [...]string{ "ch.trendhosting.cloud", "de.trendhosting.cloud", "jele.club", - "amscompute.com", "dopaas.com", "paas.hosted-by-previder.com", "rag-cloud.hosteur.com", @@ -8241,10 +8774,8 @@ var rules = [...]string{ "jcloud.ik-server.com", "jcloud-ver-jpc.ik-server.com", "demo.jelastic.com", - "kilatiron.com", "paas.massivegrid.com", "jed.wafaicloud.com", - "lon.wafaicloud.com", "ryd.wafaicloud.com", "j.scaleforce.com.cy", "jelastic.dogado.eu", @@ -8256,18 +8787,14 @@ var rules = [...]string{ "paas.beebyte.io", "sekd1.beebyteapp.io", "jele.io", - "cloud-fr1.unispace.io", "jc.neen.it", - "cloud.jelastic.open.tim.it", "jcloud.kz", - "upaas.kazteleport.kz", "cloudjiffy.net", "fra1-de.cloudjiffy.net", "west1-us.cloudjiffy.net", "jls-sto1.elastx.net", "jls-sto2.elastx.net", "jls-sto3.elastx.net", - "faststacks.net", "fr-1.paas.massivegrid.net", "lon-1.paas.massivegrid.net", "lon-2.paas.massivegrid.net", @@ -8277,11 +8804,9 @@ var rules = [...]string{ "jelastic.saveincloud.net", "nordeste-idc.saveincloud.net", "j.scaleforce.net", - "jelastic.tsukaeru.net", "sdscloud.pl", "unicloud.pl", "mircloud.ru", - "jelastic.regruhosting.ru", "enscaled.sg", "jele.site", "jelastic.team", @@ -8295,32 +8820,35 @@ var rules = [...]string{ "*.spectrum.myjino.ru", "*.vps.myjino.ru", "jotelulu.cloud", - "*.triton.zone", + "webadorsite.com", + "jouwweb.site", "*.cns.joyent.com", + "*.triton.zone", "js.org", "kaas.gg", "khplay.nl", - "ktistory.com", "kapsi.fi", + "ezproxy.kuleuven.be", + "kuleuven.cloud", "keymachine.de", "kinghost.net", "uni5.net", "knightpoint.systems", "koobin.events", - "oya.to", - "kuleuven.cloud", - "ezproxy.kuleuven.be", - "co.krd", - "edu.krd", - "krellian.net", "webthings.io", + "krellian.net", + "oya.to", + "laravel.cloud", "git-repos.de", "lcube-server.de", "svn-repos.de", "leadpages.co", "lpages.co", "lpusercontent.com", - "lelux.site", + "liara.run", + "iran.liara.run", + "libp2p.direct", + "runcontainers.dev", "co.business", "co.education", "co.events", @@ -8328,23 +8856,35 @@ var rules = [...]string{ "co.network", "co.place", "co.technology", - "app.lmpm.com", - "linkyard.cloud", "linkyard-cloud.ch", + "linkyard.cloud", "members.linode.com", "*.nodebalancer.linode.com", "*.linodeobjects.com", "ip.linodeusercontent.com", "we.bs", + "filegear-sg.me", + "ggff.net", "*.user.localcert.dev", - "localzone.xyz", + "localcert.net", + "localhostcert.net", + "localtonet.com", + "*.localto.net", + "lodz.pl", + "pabianice.pl", + "plock.pl", + "sieradz.pl", + "skierniewice.pl", + "zgierz.pl", "loginline.app", "loginline.dev", "loginline.io", "loginline.services", "loginline.site", - "servers.run", "lohmus.me", + "servers.run", + "lovable.app", + "lovableproject.com", "krasnik.pl", "leczna.pl", "lubartow.pl", @@ -8355,18 +8895,19 @@ var rules = [...]string{ "lug.org.uk", "lugs.org.uk", "barsy.bg", - "barsy.co.uk", - "barsyonline.co.uk", + "barsy.club", "barsycenter.com", "barsyonline.com", - "barsy.club", "barsy.de", + "barsy.dev", "barsy.eu", + "barsy.gr", "barsy.in", "barsy.info", "barsy.io", "barsy.me", "barsy.menu", + "barsyonline.menu", "barsy.mobi", "barsy.net", "barsy.online", @@ -8374,27 +8915,37 @@ var rules = [...]string{ "barsy.pro", "barsy.pub", "barsy.ro", + "barsy.rs", "barsy.shop", + "barsyonline.shop", "barsy.site", + "barsy.store", "barsy.support", "barsy.uk", + "barsy.co.uk", + "barsyonline.co.uk", "*.magentosite.cloud", + "hb.cldmail.ru", + "matlab.cloud", + "modelscape.com", + "mwcloudnonprod.com", + "polyspace.com", "mayfirst.info", "mayfirst.org", - "hb.cldmail.ru", - "cn.vu", "mazeplay.com", - "mcpe.me", "mcdir.me", "mcdir.ru", - "mcpre.ru", "vps.mcdir.ru", + "mcpre.ru", "mediatech.by", "mediatech.dev", "hra.health", + "medusajs.app", "miniserver.com", "memset.net", "messerli.app", + "atmeta.com", + "apps.fbsbx.com", "*.cloud.metacentrum.cz", "custom.metacentrum.cz", "flt.cloud.muni.cz", @@ -8403,29 +8954,47 @@ var rules = [...]string{ "eu.meteorapp.com", "co.pl", "*.azurecontainer.io", - "azurewebsites.net", + "azure-api.net", "azure-mobile.net", - "cloudapp.net", + "azureedge.net", + "azurefd.net", "azurestaticapps.net", "1.azurestaticapps.net", "2.azurestaticapps.net", "3.azurestaticapps.net", + "4.azurestaticapps.net", + "5.azurestaticapps.net", + "6.azurestaticapps.net", + "7.azurestaticapps.net", "centralus.azurestaticapps.net", "eastasia.azurestaticapps.net", "eastus2.azurestaticapps.net", "westeurope.azurestaticapps.net", "westus2.azurestaticapps.net", + "azurewebsites.net", + "cloudapp.net", + "trafficmanager.net", + "blob.core.windows.net", + "servicebus.windows.net", + "routingthecloud.com", + "sn.mynetname.net", + "routingthecloud.net", + "routingthecloud.org", "csx.cc", - "mintere.site", - "forte.id", - "mozilla-iot.org", + "mydbserver.com", + "webspaceconfig.de", + "mittwald.info", + "mittwaldserver.info", + "typo3server.info", + "project.space", + "modx.dev", "bmoattachments.org", "net.ru", "org.ru", "pp.ru", "hostedpi.com", - "customer.mythic-beasts.com", "caracal.mythic-beasts.com", + "customer.mythic-beasts.com", "fentiger.mythic-beasts.com", "lynx.mythic-beasts.com", "ocelot.mythic-beasts.com", @@ -8438,8 +9007,14 @@ var rules = [...]string{ "cust.retrosnub.co.uk", "ui.nabu.casa", "cloud.nospamproxy.com", + "o365.cloud.nospamproxy.com", + "netlib.re", + "netfy.app", "netlify.app", "4u.com", + "nfshost.com", + "ipfs.nftstorage.link", + "ngo.us", "ngrok.app", "ngrok-free.app", "ngrok.dev", @@ -8453,206 +9028,207 @@ var rules = [...]string{ "sa.ngrok.io", "us.ngrok.io", "ngrok.pizza", + "ngrok.pro", + "torun.pl", "nh-serv.co.uk", - "nfshost.com", - "*.developer.app", - "noop.app", - "*.northflank.app", - "*.build.run", - "*.code.run", - "*.database.run", - "*.migration.run", - "noticeable.news", - "dnsking.ch", - "mypi.co", - "n4t.co", - "001www.com", - "ddnslive.com", - "myiphost.com", - "forumz.info", - "16-b.it", - "32-b.it", - "64-b.it", - "soundcast.me", - "tcp4.me", - "dnsup.net", - "hicam.net", - "now-dns.net", - "ownip.net", - "vpndns.net", - "dynserv.org", - "now-dns.org", - "x443.pw", - "now-dns.top", - "ntdll.top", - "freeddns.us", - "crafting.xyz", - "zapto.xyz", - "nsupdate.info", - "nerdpol.ovh", + "nimsite.uk", + "mmafan.biz", + "myftp.biz", + "no-ip.biz", + "no-ip.ca", + "fantasyleague.cc", + "gotdns.ch", + "3utilities.com", "blogsyte.com", - "brasilia.me", - "cable-modem.org", "ciscofreak.com", - "collegefan.org", - "couchpotatofries.org", "damnserver.com", - "ddns.me", + "ddnsking.com", "ditchyourip.com", - "dnsfor.me", "dnsiskinky.com", - "dvrcam.info", "dynns.com", - "eating-organic.net", - "fantasyleague.cc", "geekgalaxy.com", - "golffan.us", "health-carereform.com", "homesecuritymac.com", "homesecuritypc.com", - "hopto.me", - "ilovecollege.info", - "loginto.me", - "mlbfan.org", - "mmafan.biz", "myactivedirectory.com", - "mydissent.net", - "myeffect.net", - "mymediapc.net", - "mypsx.net", "mysecuritycamera.com", - "mysecuritycamera.net", - "mysecuritycamera.org", + "myvnc.com", "net-freaks.com", - "nflfan.org", - "nhlfan.net", - "no-ip.ca", - "no-ip.co.uk", - "no-ip.net", - "noip.us", "onthewifi.com", - "pgafan.net", "point2this.com", - "pointto.us", - "privatizehealthinsurance.net", "quicksytes.com", - "read-books.org", "securitytactics.com", + "servebeer.com", + "servecounterstrike.com", "serveexchange.com", + "serveftp.com", + "servegame.com", + "servehalflife.com", + "servehttp.com", "servehumour.com", + "serveirc.com", + "servemp3.com", "servep2p.com", + "servepics.com", + "servequake.com", "servesarcasm.com", "stufftoread.com", - "ufcfan.org", "unusualperson.com", "workisboring.com", - "3utilities.com", - "bounceme.net", - "ddns.net", - "ddnsking.com", - "gotdns.ch", - "hopto.org", - "myftp.biz", - "myftp.org", - "myvnc.com", - "no-ip.biz", + "dvrcam.info", + "ilovecollege.info", "no-ip.info", - "no-ip.org", + "brasilia.me", + "ddns.me", + "dnsfor.me", + "hopto.me", + "loginto.me", "noip.me", + "webhop.me", + "bounceme.net", + "ddns.net", + "eating-organic.net", + "mydissent.net", + "myeffect.net", + "mymediapc.net", + "mypsx.net", + "mysecuritycamera.net", + "nhlfan.net", + "no-ip.net", + "pgafan.net", + "privatizehealthinsurance.net", "redirectme.net", - "servebeer.com", "serveblog.net", - "servecounterstrike.com", - "serveftp.com", - "servegame.com", - "servehalflife.com", - "servehttp.com", - "serveirc.com", "serveminecraft.net", - "servemp3.com", - "servepics.com", - "servequake.com", "sytes.net", - "webhop.me", + "cable-modem.org", + "collegefan.org", + "couchpotatofries.org", + "hopto.org", + "mlbfan.org", + "myftp.org", + "mysecuritycamera.org", + "nflfan.org", + "no-ip.org", + "read-books.org", + "ufcfan.org", "zapto.org", + "no-ip.co.uk", + "golffan.us", + "noip.us", + "pointto.us", "stage.nodeart.io", - "pcloud.host", + "*.developer.app", + "noop.app", + "*.northflank.app", + "*.build.run", + "*.code.run", + "*.database.run", + "*.migration.run", + "noticeable.news", + "notion.site", + "dnsking.ch", + "mypi.co", + "myiphost.com", + "forumz.info", + "soundcast.me", + "tcp4.me", + "dnsup.net", + "hicam.net", + "now-dns.net", + "ownip.net", + "vpndns.net", + "dynserv.org", + "now-dns.org", + "x443.pw", + "ntdll.top", + "freeddns.us", + "nsupdate.info", + "nerdpol.ovh", "nyc.mn", + "prvcy.page", + "obl.ong", + "observablehq.cloud", "static.observableusercontent.com", - "cya.gg", "omg.lol", "cloudycluster.net", "omniwe.site", - "123hjemmeside.dk", - "123hjemmeside.no", - "123homepage.it", - "123kotisivu.fi", - "123minsida.se", - "123miweb.es", - "123paginaweb.pt", - "123sait.ru", - "123siteweb.fr", "123webseite.at", - "123webseite.de", "123website.be", + "simplesite.com.br", "123website.ch", + "simplesite.com", + "123webseite.de", + "123hjemmeside.dk", + "123miweb.es", + "123kotisivu.fi", + "123siteweb.fr", + "simplesite.gr", + "123homepage.it", "123website.lu", "123website.nl", + "123hjemmeside.no", "service.one", - "simplesite.com", - "simplesite.com.br", - "simplesite.gr", "simplesite.pl", - "nid.io", + "123paginaweb.pt", + "123minsida.se", + "is-a-fullstack.dev", + "is-cool.dev", + "is-not-a.dev", + "localplayer.dev", + "is-local.org", "opensocial.site", "opencraft.hosting", + "16-b.it", + "32-b.it", + "64-b.it", "orsites.com", "operaunite.com", + "*.customer-oci.com", + "*.oci.customer-oci.com", + "*.ocp.customer-oci.com", + "*.ocs.customer-oci.com", + "*.oraclecloudapps.com", + "*.oraclegovcloudapps.com", + "*.oraclegovcloudapps.uk", "tech.orange", + "can.re", "authgear-staging.com", "authgearapps.com", "skygearapp.com", "outsystemscloud.com", - "*.webpaas.ovh.net", "*.hosting.ovh.net", + "*.webpaas.ovh.net", "ownprovider.com", "own.pm", "*.owo.codes", "ox.rs", "oy.lc", "pgfog.com", - "pagefrontapp.com", "pagexl.com", - "*.paywhirl.com", - "bar0.net", - "bar1.net", - "bar2.net", - "rdv.to", - "art.pl", - "gliwice.pl", - "krakow.pl", - "poznan.pl", - "wroc.pl", - "zakopane.pl", - "pantheonsite.io", "gotpantheon.com", + "pantheonsite.io", + "*.paywhirl.com", + "*.xmit.co", + "xmit.dev", + "madethis.site", + "srv.us", + "gh.srv.us", + "gl.srv.us", + "lk3.ru", "mypep.link", "perspecta.cloud", - "lk3.ru", "on-web.fr", - "bc.platform.sh", + "*.upsun.app", + "upsunapp.com", "ent.platform.sh", "eu.platform.sh", "us.platform.sh", "*.platformsh.site", "*.tst.site", - "platter-app.com", "platter-app.dev", "platterp.us", - "pdns.page", - "plesk.page", - "pleskns.com", - "dyn53.io", + "pley.games", "onporter.run", "co.bn", "postman-echo.com", @@ -8662,55 +9238,102 @@ var rules = [...]string{ "prequalifyme.today", "xen.prgmr.com", "priv.at", - "prvcy.page", - "*.dweb.link", + "c01.kr", + "eliv-dns.kr", "protonet.io", + "sub.psl.hrsn.dev", + "*.wc.psl.hrsn.dev", + "!ignored.wc.psl.hrsn.dev", + "*.sub.wc.psl.hrsn.dev", + "!ignored.sub.wc.psl.hrsn.dev", "chirurgiens-dentistes-en-france.fr", "byen.site", "pubtls.org", "pythonanywhere.com", "eu.pythonanywhere.com", - "qoto.io", - "qualifioapp.com", - "ladesk.com", - "qbuser.com", - "cloudsite.builders", - "instances.spawn.cc", - "instantcloud.cn", - "ras.ru", "qa2.com", "qcx.io", "*.sys.qcx.io", - "dev-myqnapcloud.com", + "myqnapcloud.cn", "alpha-myqnapcloud.com", + "dev-myqnapcloud.com", + "mycloudnas.com", + "mynascloud.com", "myqnapcloud.com", + "qoto.io", + "qualifioapp.com", + "ladesk.com", + "qbuser.com", "*.quipelements.com", "vapor.cloud", "vaporcloud.io", "rackmaze.com", "rackmaze.net", - "g.vbrplsbx.io", - "*.on-k3s.io", + "cloudsite.builders", + "myradweb.net", + "servername.us", + "web.in", + "in.net", + "myrdbx.io", + "site.rb-hosting.io", "*.on-rancher.cloud", + "*.on-k3s.io", "*.on-rio.io", + "ravpage.co.il", + "readthedocs-hosted.com", "readthedocs.io", "rhcloud.com", - "app.render.com", + "instances.spawn.cc", "onrender.com", + "app.render.com", + "replit.app", + "id.replit.app", "firewalledreplit.co", "id.firewalledreplit.co", "repl.co", "id.repl.co", + "replit.dev", + "archer.replit.dev", + "bones.replit.dev", + "canary.replit.dev", + "global.replit.dev", + "hacker.replit.dev", + "id.replit.dev", + "janeway.replit.dev", + "kim.replit.dev", + "kira.replit.dev", + "kirk.replit.dev", + "odo.replit.dev", + "paris.replit.dev", + "picard.replit.dev", + "pike.replit.dev", + "prerelease.replit.dev", + "reed.replit.dev", + "riker.replit.dev", + "sisko.replit.dev", + "spock.replit.dev", + "staging.replit.dev", + "sulu.replit.dev", + "tarpit.replit.dev", + "teams.replit.dev", + "tucker.replit.dev", + "wesley.replit.dev", + "worf.replit.dev", "repl.run", "resindevice.io", "devices.resinstaging.io", "hzc.io", - "wellbeingzone.eu", - "wellbeingzone.co.uk", "adimo.co.uk", "itcouldbewor.se", + "aus.basketball", + "nz.basketball", + "subsc-pay.com", + "subsc-pay.net", "git-pages.rit.edu", "rocky.page", + "rub.de", + "ruhr-uni-bochum.de", + "io.noc.ruhr-uni-bochum.de", "xn--90amc.xn--p1acf", "xn--j1aef.xn--p1acf", "xn--j1ael8b.xn--p1acf", @@ -8721,6 +9344,8 @@ var rules = [...]string{ "xn--h1aliz.xn--p1acf", "xn--90a1af.xn--p1acf", "xn--41a.xn--p1acf", + "ras.ru", + "nyat.app", "180r.com", "dojin.com", "sakuratan.com", @@ -8771,12 +9396,22 @@ var rules = [...]string{ "*.builder.code.com", "*.dev-builder.code.com", "*.stg-builder.code.com", + "*.001.test.code-builder-stg.platform.salesforce.com", + "*.d.crm.dev", + "*.w.crm.dev", + "*.wa.crm.dev", + "*.wb.crm.dev", + "*.wc.crm.dev", + "*.wd.crm.dev", + "*.we.crm.dev", + "*.wf.crm.dev", "sandcats.io", - "logoip.de", "logoip.com", + "logoip.de", "fr-par-1.baremetal.scw.cloud", "fr-par-2.baremetal.scw.cloud", "nl-ams-1.baremetal.scw.cloud", + "cockpit.fr-par.scw.cloud", "fnc.fr-par.scw.cloud", "functions.fnc.fr-par.scw.cloud", "k8s.fr-par.scw.cloud", @@ -8787,11 +9422,13 @@ var rules = [...]string{ "priv.instances.scw.cloud", "pub.instances.scw.cloud", "k8s.scw.cloud", + "cockpit.nl-ams.scw.cloud", "k8s.nl-ams.scw.cloud", "nodes.k8s.nl-ams.scw.cloud", "s3.nl-ams.scw.cloud", "s3-website.nl-ams.scw.cloud", "whm.nl-ams.scw.cloud", + "cockpit.pl-waw.scw.cloud", "k8s.pl-waw.scw.cloud", "nodes.k8s.pl-waw.scw.cloud", "s3.pl-waw.scw.cloud", @@ -8803,6 +9440,7 @@ var rules = [...]string{ "gov.scot", "service.gov.scot", "scrysec.com", + "client.scrypted.io", "firewall-gateway.com", "firewall-gateway.de", "my-gateway.de", @@ -8815,18 +9453,18 @@ var rules = [...]string{ "spdns.org", "seidat.net", "sellfy.store", - "senseering.net", "minisite.ms", - "magnet.page", + "senseering.net", + "servebolt.cloud", "biz.ua", "co.ua", "pp.ua", - "shiftcrypto.dev", - "shiftcrypto.io", - "shiftedit.io", + "as.sh.cn", + "sheezy.games", "myshopblocks.com", "myshopify.com", "shopitsite.com", + "shopware.shop", "shopware.store", "mo-siemens.io", "1kapp.com", @@ -8835,32 +9473,29 @@ var rules = [...]string{ "sinaapp.com", "vipsinaapp.com", "siteleaf.net", - "bounty-full.com", - "alpha.bounty-full.com", - "beta.bounty-full.com", "small-web.org", + "aeroport.fr", + "avocat.fr", + "chambagri.fr", + "chirurgiens-dentistes.fr", + "experts-comptables.fr", + "medecin.fr", + "notaires.fr", + "pharmacien.fr", + "port.fr", + "veterinaire.fr", "vp4.me", - "snowflake.app", - "privatelink.snowflake.app", + "*.snowflake.app", + "*.privatelink.snowflake.app", "streamlit.app", "streamlitapp.com", "try-snowplow.com", - "srht.site", - "stackhero-network.com", - "musician.io", - "novecore.site", - "static.land", - "dev.static.land", - "sites.static.land", - "storebase.store", - "vps-host.net", - "atl.jelastic.vps-host.net", - "njs.jelastic.vps-host.net", - "ric.jelastic.vps-host.net", + "mafelo.net", "playstation-cloud.com", + "srht.site", "apps.lair.io", "*.stolos.io", - "spacekit.io", + "ind.mom", "customer.speedpartner.de", "myspreadshop.at", "myspreadshop.com.au", @@ -8881,19 +9516,47 @@ var rules = [...]string{ "myspreadshop.pl", "myspreadshop.se", "myspreadshop.co.uk", + "w-corp-staticblitz.com", + "w-credentialless-staticblitz.com", + "w-staticblitz.com", + "stackhero-network.com", + "runs.onstackit.cloud", + "stackit.gg", + "stackit.rocks", + "stackit.run", + "stackit.zone", + "musician.io", + "novecore.site", "api.stdlib.com", + "feedback.ac", + "forms.ac", + "assessments.cx", + "calculators.cx", + "funnels.cx", + "paynow.cx", + "quizzes.cx", + "researched.cx", + "tests.cx", + "surveys.so", + "storebase.store", "storipress.app", "storj.farm", - "utwente.io", + "strapiapp.com", + "media.strapiapp.com", + "vps-host.net", + "atl.jelastic.vps-host.net", + "njs.jelastic.vps-host.net", + "ric.jelastic.vps-host.net", + "streak-link.com", + "streaklinks.com", + "streakusercontent.com", "soc.srcf.net", "user.srcf.net", + "utwente.io", "temp-dns.com", "supabase.co", "supabase.in", "supabase.net", - "su.paba.se", - "*.s5y.io", - "*.sensiosite.cloud", "syncloud.it", "dscloud.biz", "direct.quickconnect.cn", @@ -8909,19 +9572,22 @@ var rules = [...]string{ "familyds.net", "dsmynas.org", "familyds.org", - "vpnplus.to", "direct.quickconnect.to", - "tabitorder.co.il", - "mytabit.co.il", + "vpnplus.to", "mytabit.com", + "mytabit.co.il", + "tabitorder.co.il", "taifun-dns.de", - "beta.tailscale.net", "ts.net", + "*.c.ts.net", "gda.pl", "gdansk.pl", "gdynia.pl", "med.pl", "sopot.pl", + "taveusercontent.com", + "p.tawk.email", + "p.tawkto.email", "site.tb-hosting.com", "edugit.io", "s3.teckids.org", @@ -8933,11 +9599,11 @@ var rules = [...]string{ "reservd.com", "thingdustdata.com", "cust.dev.thingdust.io", + "reservd.dev.thingdust.io", "cust.disrec.thingdust.io", + "reservd.disrec.thingdust.io", "cust.prod.thingdust.io", "cust.testing.thingdust.io", - "reservd.dev.thingdust.io", - "reservd.disrec.thingdust.io", "reservd.testing.thingdust.io", "tickets.io", "arvo.network", @@ -8945,7 +9611,6 @@ var rules = [...]string{ "tlon.network", "torproject.net", "pages.torproject.net", - "bloxcms.com", "townnews-staging.com", "12hp.at", "2ix.at", @@ -8968,12 +9633,10 @@ var rules = [...]string{ "lima.zone", "*.transurl.be", "*.transurl.eu", - "*.transurl.nl", "site.transip.me", + "*.transurl.nl", "tuxfamily.org", "dd-dns.de", - "diskstation.eu", - "diskstation.org", "dray-dns.de", "draydns.de", "dyn-vpn.de", @@ -8984,90 +9647,74 @@ var rules = [...]string{ "syno-ds.de", "synology-diskstation.de", "synology-ds.de", + "diskstation.eu", + "diskstation.org", "typedream.app", "pro.typeform.com", - "uber.space", "*.uberspace.de", + "uber.space", "hk.com", - "hk.org", - "ltd.hk", "inc.hk", + "ltd.hk", + "hk.org", "it.com", + "unison-services.cloud", + "virtual-user.de", + "virtualuser.de", + "obj.ag", "name.pm", "sch.tf", "biz.wf", "sch.wf", "org.yt", - "virtualuser.de", - "virtual-user.de", - "upli.io", + "rs.ba", + "bielsko.pl", "urown.cloud", "dnsupdate.info", - "lib.de.us", - "2038.io", + "us.org", + "v.ua", + "express.val.run", + "web.val.run", "vercel.app", + "v0.build", "vercel.dev", + "vusercontent.net", "now.sh", - "router.management", + "2038.io", "v-info.info", + "deus-canvas.com", "voorloper.cloud", - "neko.am", - "nyaa.am", - "be.ax", - "cat.ax", - "es.ax", - "eu.ax", - "gg.ax", - "mc.ax", - "us.ax", - "xy.ax", - "nl.ci", - "xx.gl", - "app.gp", - "blog.gt", - "de.gt", - "to.gt", - "be.gy", - "cc.hn", - "blog.kg", - "io.kg", - "jp.kg", - "tv.kg", - "uk.kg", - "us.kg", - "de.ls", - "at.md", - "de.md", - "jp.md", - "to.md", - "indie.porn", - "vxl.sh", - "ch.tc", - "me.tc", - "we.tc", - "nyan.to", - "at.vg", - "blog.vu", - "dev.vu", - "me.vu", - "v.ua", "*.vultrobjects.com", "wafflecell.com", + "webflow.io", + "webflowtest.io", "*.webhare.dev", - "reserve-online.net", - "reserve-online.com", "bookonline.app", "hotelwithflight.com", - "wedeploy.io", - "wedeploy.me", - "wedeploy.sh", + "reserve-online.com", + "reserve-online.net", + "cprapid.com", + "pleskns.com", + "wp2.host", + "pdns.page", + "plesk.page", + "cpanel.site", + "wpsquared.site", + "*.wadl.top", "remotewd.com", + "box.ca", "pages.wiardweb.com", - "wmflabs.org", "toolforge.org", "wmcloud.org", + "wmflabs.org", + "wdh.app", "panel.gg", "daemon.panel.gg", + "wixsite.com", + "wixstudio.com", + "editorx.io", + "wixstudio.io", + "wix.run", "messwithdns.com", "woltlab-demo.com", "myforum.community", @@ -9080,8 +9727,6 @@ var rules = [...]string{ "weeklylottery.org.uk", "wpenginepowered.com", "js.wpenginepowered.com", - "wixsite.com", - "editorx.io", "half.host", "xnbay.com", "u2.xnbay.com", @@ -9094,22 +9739,19 @@ var rules = [...]string{ "website.yandexcloud.net", "official.academy", "yolasite.com", - "ybo.faith", - "yombo.me", - "homelink.one", - "ybo.party", - "ybo.review", - "ybo.science", - "ybo.trade", "ynh.fr", "nohost.me", "noho.st", "za.net", "za.org", + "zap.cloud", + "zeabur.app", + "*.zerops.app", "bss.design", "basicserver.io", "virtualserver.io", "enterprisecloud.nu", + "zone.id", } var nodeLabels = [...]string{ @@ -9199,7 +9841,6 @@ var nodeLabels = [...]string{ "author", "auto", "autos", - "avianca", "aw", "aws", "ax", @@ -9210,7 +9851,6 @@ var nodeLabels = [...]string{ "baby", "baidu", "banamex", - "bananarepublic", "band", "bank", "bar", @@ -9327,7 +9967,6 @@ var nodeLabels = [...]string{ "cba", "cbn", "cbre", - "cbs", "cc", "cd", "center", @@ -9356,7 +9995,6 @@ var nodeLabels = [...]string{ "citi", "citic", "city", - "cityeats", "ck", "cl", "claims", @@ -9377,7 +10015,6 @@ var nodeLabels = [...]string{ "college", "cologne", "com", - "comcast", "commbank", "community", "company", @@ -9416,7 +10053,6 @@ var nodeLabels = [...]string{ "cymru", "cyou", "cz", - "dabur", "dad", "dance", "data", @@ -9495,7 +10131,6 @@ var nodeLabels = [...]string{ "esq", "estate", "et", - "etisalat", "eu", "eurovision", "eus", @@ -9558,7 +10193,6 @@ var nodeLabels = [...]string{ "fresenius", "frl", "frogans", - "frontdoor", "frontier", "ftr", "fujitsu", @@ -9630,7 +10264,6 @@ var nodeLabels = [...]string{ "gs", "gt", "gu", - "guardian", "gucci", "guge", "guide", @@ -9750,7 +10383,6 @@ var nodeLabels = [...]string{ "kddi", "ke", "kerryhotels", - "kerrylogistics", "kerryproperties", "kfh", "kg", @@ -9759,7 +10391,6 @@ var nodeLabels = [...]string{ "kia", "kids", "kim", - "kinder", "kindle", "kitchen", "kiwi", @@ -9815,7 +10446,6 @@ var nodeLabels = [...]string{ "limo", "lincoln", "link", - "lipsy", "live", "living", "lk", @@ -9871,6 +10501,7 @@ var nodeLabels = [...]string{ "memorial", "men", "menu", + "merck", "merckmsd", "mg", "mh", @@ -9925,7 +10556,6 @@ var nodeLabels = [...]string{ "nab", "nagoya", "name", - "natura", "navy", "nba", "nc", @@ -9956,7 +10586,6 @@ var nodeLabels = [...]string{ "nl", "no", "nokia", - "northwesternmutual", "norton", "now", "nowruz", @@ -9975,7 +10604,6 @@ var nodeLabels = [...]string{ "okinawa", "olayan", "olayangroup", - "oldnavy", "ollo", "om", "omega", @@ -10103,7 +10731,6 @@ var nodeLabels = [...]string{ "rio", "rip", "ro", - "rocher", "rocks", "rodeo", "rogers", @@ -10138,7 +10765,6 @@ var nodeLabels = [...]string{ "sbi", "sbs", "sc", - "sca", "scb", "schaeffler", "schmidt", @@ -10167,7 +10793,6 @@ var nodeLabels = [...]string{ "sh", "shangrila", "sharp", - "shaw", "shell", "shia", "shiksha", @@ -10176,7 +10801,6 @@ var nodeLabels = [...]string{ "shopping", "shouji", "show", - "showtime", "si", "silk", "sina", @@ -10357,7 +10981,6 @@ var nodeLabels = [...]string{ "vlaanderen", "vn", "vodka", - "volkswagen", "volvo", "vote", "voting", @@ -10376,6 +10999,7 @@ var nodeLabels = [...]string{ "webcam", "weber", "website", + "wed", "wedding", "weibo", "weir", @@ -10400,7 +11024,6 @@ var nodeLabels = [...]string{ "wtf", "xbox", "xerox", - "xfinity", "xihuan", "xin", "xn--11b4c3d", @@ -10493,7 +11116,6 @@ var nodeLabels = [...]string{ "xn--mgba3a4f16a", "xn--mgba3a4fra", "xn--mgba7c0bbn0a", - "xn--mgbaakc7dvf", "xn--mgbaam7a8h", "xn--mgbab2bd", "xn--mgbah1a3hjkrd", @@ -10590,14 +11212,14 @@ var nodeLabels = [...]string{ "com", "drr", "edu", + "feedback", + "forms", "gov", "mil", "net", "org", "official", - "nom", "ac", - "blogspot", "co", "gov", "mil", @@ -10617,7 +11239,6 @@ var nodeLabels = [...]string{ "airport", "airtraffic", "ambulance", - "amusement", "association", "author", "ballooning", @@ -10648,6 +11269,7 @@ var nodeLabels = [...]string{ "express", "federation", "flight", + "freight", "fuel", "gliding", "government", @@ -10662,6 +11284,7 @@ var nodeLabels = [...]string{ "logistics", "magazine", "maintenance", + "marketplace", "media", "microlight", "modelling", @@ -10684,6 +11307,7 @@ var nodeLabels = [...]string{ "skydiving", "software", "student", + "taxi", "trader", "trading", "trainer", @@ -10699,66 +11323,87 @@ var nodeLabels = [...]string{ "com", "net", "nom", + "obj", "org", "com", + "framer", "net", "off", "org", "uwu", - "blogspot", "com", "edu", "gov", "mil", "net", "org", - "blogspot", "co", "com", "commune", - "neko", "net", - "nyaa", "org", "radio", "co", "ed", + "edu", + "gov", "gv", "it", "og", + "org", "pb", + "adaptable", + "aiven", "beget", "bookonline", + "botdash", + "brave", "clerk", "clerkstage", + "csb", "deta", "developer", "easypanel", "edgecompute", "encr", - "fireweb", + "evervault", + "expo", + "flutterflow", "framer", "hasura", + "hosted", "loginline", + "lovable", + "medusajs", "messerli", + "netfy", "netlify", "ngrok", "ngrok-free", "noop", "northflank", + "nyat", + "on-fleek", "ondigitalocean", - "onflashdrive", - "platform0", + "replit", "run", "snowflake", "storipress", "streamlit", "telebit", "typedream", + "upsun", "vercel", + "wdh", "web", "wnext", - "a", + "zeabur", + "zerops", + "s", + "preview", + "relay", + "staging", + "id", "privatelink", "bet", "com", @@ -10774,8 +11419,8 @@ var nodeLabels = [...]string{ "org", "senasa", "tur", - "blogspot", "e164", + "home", "in-addr", "ip6", "iris", @@ -10783,6 +11428,8 @@ var nodeLabels = [...]string{ "urn", "gov", "cloudns", + "daemon", + "dix", "123webseite", "12hp", "2ix", @@ -10802,7 +11449,6 @@ var nodeLabels = [...]string{ "ortsinfo", "priv", "sth", - "blogspot", "wien", "ex", "in", @@ -10815,7 +11461,6 @@ var nodeLabels = [...]string{ "edu", "gov", "id", - "info", "net", "nsw", "nt", @@ -10826,7 +11471,6 @@ var nodeLabels = [...]string{ "tas", "vic", "wa", - "blogspot", "cloudlets", "myspreadshop", "mel", @@ -10846,15 +11490,143 @@ var nodeLabels = [...]string{ "vic", "wa", "com", - "be", - "cat", - "es", - "eu", - "gg", - "mc", - "us", - "xy", + "on", + "repost", + "sagemaker", + "ap-northeast-1", + "ap-southeast-1", + "ap-southeast-2", + "eu-central-1", + "eu-north-1", + "eu-west-1", + "us-east-1", + "us-east-2", + "us-west-2", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "transfer-webapp", + "private", + "af-south-1", + "ap-east-1", + "ap-northeast-1", + "ap-northeast-2", + "ap-northeast-3", + "ap-south-1", + "ap-south-2", + "ap-southeast-1", + "ap-southeast-2", + "ap-southeast-3", + "ap-southeast-4", + "ca-central-1", + "ca-west-1", + "eu-central-1", + "eu-central-2", + "eu-north-1", + "eu-south-1", + "eu-south-2", + "eu-west-1", + "eu-west-2", + "eu-west-3", + "experiments", + "il-central-1", + "me-central-1", + "me-south-1", + "sa-east-1", + "us-east-1", + "us-east-2", + "us-gov-east-1", + "us-gov-west-1", + "us-west-1", + "us-west-2", + "notebook", + "studio", + "notebook", + "studio", + "labeling", + "notebook", + "studio", + "labeling", + "notebook", + "studio", + "notebook", + "studio", + "labeling", + "notebook", + "studio", + "notebook", + "labeling", + "notebook", + "studio", + "labeling", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "labeling", + "notebook", + "notebook-fips", + "studio", + "notebook", + "notebook-fips", + "labeling", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "labeling", + "notebook", + "studio", + "labeling", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "notebook", + "studio", + "labeling", + "notebook", + "notebook-fips", + "studio", + "labeling", + "notebook", + "notebook-fips", + "studio", + "notebook", + "notebook-fips", + "studio", + "studio-fips", + "notebook", + "notebook-fips", + "studio", + "studio-fips", + "notebook", + "notebook-fips", + "studio", + "labeling", + "notebook", + "notebook-fips", + "studio", "biz", + "co", "com", "edu", "gov", @@ -10866,7 +11638,6 @@ var nodeLabels = [...]string{ "org", "pp", "pro", - "blogspot", "com", "edu", "gov", @@ -10888,7 +11659,7 @@ var nodeLabels = [...]string{ "tv", "123website", "ac", - "blogspot", + "cloudns", "interhostsolutions", "kuleuven", "myspreadshop", @@ -10910,7 +11681,6 @@ var nodeLabels = [...]string{ "a", "b", "barsy", - "blogspot", "c", "d", "e", @@ -10946,6 +11716,7 @@ var nodeLabels = [...]string{ "or", "org", "activetrail", + "cloud-ip", "cloudns", "dscloud", "dyndns", @@ -10965,7 +11736,6 @@ var nodeLabels = [...]string{ "architectes", "assur", "avocats", - "blogspot", "co", "com", "eco", @@ -11049,6 +11819,7 @@ var nodeLabels = [...]string{ "b", "barueri", "belem", + "bet", "bhz", "bib", "bio", @@ -11108,6 +11879,7 @@ var nodeLabels = [...]string{ "jor", "jus", "leg", + "leilao", "lel", "log", "londrina", @@ -11174,7 +11946,6 @@ var nodeLabels = [...]string{ "vlog", "wiki", "zlg", - "blogspot", "simplesite", "ac", "al", @@ -11241,21 +12012,25 @@ var nodeLabels = [...]string{ "gov", "net", "org", + "v0", "cloudsite", "co", + "ac", "co", + "gov", + "net", "org", "com", "gov", "mediatech", "mil", - "mycloud", "of", - "blogspot", + "co", "com", "edu", "gov", "gsj", + "mydns", "net", "org", "za", @@ -11263,7 +12038,7 @@ var nodeLabels = [...]string{ "awdev", "barsy", "bc", - "blogspot", + "box", "co", "gc", "mb", @@ -11280,8 +12055,11 @@ var nodeLabels = [...]string{ "qc", "sk", "yk", + "emf", + "at", "nabu", "ui", + "cleverapps", "cloudns", "csx", "fantasyleague", @@ -11293,12 +12071,12 @@ var nodeLabels = [...]string{ "twmail", "instances", "gov", - "blogspot", "123website", "12hp", "2ix", "4lima", - "blogspot", + "cloudns", + "cloudscale", "dnsking", "firenet", "flow", @@ -11307,6 +12085,11 @@ var nodeLabels = [...]string{ "linkyard-cloud", "myspreadshop", "square7", + "cust", + "lpg", + "rma", + "objects", + "objects", "svc", "ae", "appengine", @@ -11317,25 +12100,20 @@ var nodeLabels = [...]string{ "com", "ed", "edu", - "fin", "go", "gouv", "int", - "md", "net", - "nl", "or", "org", - "presse", "xn--aroport-bya", "www", - "blogspot", + "cloudns", "co", "gob", "gov", "mil", "axarnet", - "banzai", "diadem", "elementor", "encoway", @@ -11345,22 +12123,28 @@ var nodeLabels = [...]string{ "jotelulu", "keliweb", "kuleuven", + "laravel", "linkyard", "magentosite", + "matlab", + "observablehq", "on-rancher", + "onstackit", "oxa", "perspecta", "primetel", "ravendb", "reclaim", "scw", - "sensiosite", + "servebolt", "statics", "trafficplex", "trendhosting", + "unison-services", "urown", "vapor", "voorloper", + "zap", "es-1", "eu", "vip", @@ -11369,6 +12153,7 @@ var nodeLabels = [...]string{ "eur", "it1", "cs", + "runs", "tn", "uk", "uk", @@ -11386,6 +12171,7 @@ var nodeLabels = [...]string{ "fr-par-1", "fr-par-2", "nl-ams-1", + "cockpit", "fnc", "k8s", "s3", @@ -11395,11 +12181,13 @@ var nodeLabels = [...]string{ "nodes", "priv", "pub", + "cockpit", "k8s", "s3", "s3-website", "whm", "nodes", + "cockpit", "k8s", "s3", "s3-website", @@ -11417,6 +12205,7 @@ var nodeLabels = [...]string{ "ah", "bj", "canva-apps", + "canvasite", "com", "cq", "edu", @@ -11433,13 +12222,13 @@ var nodeLabels = [...]string{ "hk", "hl", "hn", - "instantcloud", "jl", "js", "jx", "ln", "mil", "mo", + "myqnapcloud", "net", "nm", "nx", @@ -11460,109 +12249,142 @@ var nodeLabels = [...]string{ "xz", "yn", "zj", + "my", "amazonaws", + "sagemaker", + "airflow", "cn-north-1", + "cn-northwest-1", "compute", "eb", "elb", + "cn-north-1", + "cn-northwest-1", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-deprecated", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "s3", + "s3-accesspoint", "cn-north-1", "cn-northwest-1", + "cn-north-1", + "cn-northwest-1", + "notebook", + "studio", + "notebook", + "studio", "direct", - "arts", + "as", "carrd", "com", "crd", "edu", "firewalledreplit", - "firm", "gov", - "info", - "int", "leadpages", "lpages", "mil", "mypi", - "n4t", "net", "nom", "org", "otap", - "rec", "repl", "supabase", - "web", - "blogspot", + "xmit", "id", "id", "owo", - "001www", "0emm", "180r", "1kapp", "3utilities", "4u", + "a2hosted", "adobeaemcloud", "africa", "airkitapps", "airkitapps-au", "aivencloud", + "aliases121", + "alibabacloudcs", "alpha-myqnapcloud", "amazonaws", - "amscompute", + "amazoncognito", + "amplifyapp", "appchizi", "applinzi", + "apps-1and1", "appspacehosted", "appspaceusercontent", "appspot", - "ar", + "atmeta", "authgear-staging", "authgearapps", + "awsapprunner", + "awsapps", "awsglobalaccelerator", - "awsmppl", "balena-devices", "barsycenter", "barsyonline", - "betainabox", "blogdns", "blogspot", "blogsyte", - "bloxcms", - "bounty-full", "boutir", "bplaced", "br", "builtwithdark", "cafjs", "canva-apps", + "cdn77-storage", "cechire", "cf-ipfs", "ciscofreak", - "cloudcontrolapp", - "cloudcontrolled", + "clever-cloud", "cloudflare-ipfs", "cn", "co", "code", "codespot", + "cprapid", + "cpserver", "customer-oci", "damnserver", "datadetect", "dattolocal", "dattorelay", "dattoweb", - "ddns5", "ddnsfree", "ddnsgeek", "ddnsking", - "ddnslive", "de", + "deus-canvas", "dev-myqnapcloud", - "devcdnaccesso", + "devinapps", "digitaloceanspaces", "discordsays", "discordsez", "ditchyourip", + "dnsabr", "dnsalias", "dnsdojo", "dnsiskinky", @@ -11574,6 +12396,7 @@ var nodeLabels = [...]string{ "drayddns", "dreamhosters", "dsmynas", + "durumis", "dyn-o-saur", "dynalias", "dyndns-at-home", @@ -11671,9 +12494,11 @@ var nodeLabels = [...]string{ "gotdns", "gotpantheon", "gr", + "grayjayleagues", + "hatenablog", + "hatenadiary", "health-carereform", "herokuapp", - "herokussl", "hk", "hobby-site", "homelinux", @@ -11684,11 +12509,9 @@ var nodeLabels = [...]string{ "hostedpi", "hosteur", "hotelwithflight", - "hu", "iamallama", "ik-server", - "impertrix", - "impertrixcdn", + "ip-ddns", "is-a-anarchist", "is-a-blogger", "is-a-bookkeeper", @@ -11753,19 +12576,18 @@ var nodeLabels = [...]string{ "joyent", "jpn", "kasserver", - "kilatiron", "kozow", - "kr", - "ktistory", "ladesk", "likes-pie", "likescandy", "linode", "linodeobjects", "linodeusercontent", - "lmpm", + "live-website", + "localtonet", "logoip", "loseyourip", + "lovableproject", "lpusercontent", "massivegrid", "mazeplay", @@ -11773,12 +12595,17 @@ var nodeLabels = [...]string{ "meteorapp", "mex", "miniserver", + "modelscape", + "mwcloudnonprod", "myactivedirectory", "myasustor", + "mycloudnas", "mydatto", + "mydbserver", "mydobiss", "mydrobo", "myiphost", + "mynascloud", "myqnapcloud", "mysecuritycamera", "myshopblocks", @@ -11791,7 +12618,6 @@ var nodeLabels = [...]string{ "neat-url", "net-freaks", "nfshost", - "no", "nospamproxy", "observableusercontent", "on-aptible", @@ -11800,39 +12626,41 @@ var nodeLabels = [...]string{ "onthewifi", "ooguy", "operaunite", + "oraclecloudapps", + "oraclegovcloudapps", "orsites", "outsystemscloud", "ownprovider", - "pagefrontapp", "pagespeedmobilizer", "pagexl", "paywhirl", "pgfog", "pixolino", - "platter-app", "playstation-cloud", "pleskns", "point2this", + "polyspace", "postman-echo", "prgmr", - "publishproxy", "pythonanywhere", "qa2", "qbuser", - "qc", "qualifioapp", "quicksytes", "quipelements", "rackmaze", + "readthedocs-hosted", "remotewd", "render", "reservd", "reserve-online", "rhcloud", + "routingthecloud", "ru", "sa", "sakuratan", "sakuraweb", + "salesforce", "saves-the-whales", "scrysec", "securitytactics", @@ -11864,8 +12692,14 @@ var nodeLabels = [...]string{ "space-to-rent", "stackhero-network", "stdlib", + "strapiapp", + "streak-link", + "streaklinks", + "streakusercontent", "streamlitapp", "stufftoread", + "subsc-pay", + "taveusercontent", "tb-hosting", "teaches-yoga", "temp-dns", @@ -11878,16 +12712,21 @@ var nodeLabels = [...]string{ "typeform", "uk", "unusualperson", + "upsunapp", "us", - "uy", "vipsinaapp", "vultrobjects", + "w-corp-staticblitz", + "w-credentialless-staticblitz", + "w-staticblitz", "wafaicloud", "wafflecell", + "webadorsite", "wiardweb", "withgoogle", "withyoutube", "wixsite", + "wixstudio", "woltlab-demo", "workisboring", "wpdevcloud", @@ -11901,39 +12740,57 @@ var nodeLabels = [...]string{ "za", "dev", "af-south-1", + "airflow", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", + "ap-south-2", "ap-southeast-1", "ap-southeast-2", + "ap-southeast-3", + "ap-southeast-4", + "ap-southeast-5", "ca-central-1", + "ca-west-1", "compute", "compute-1", "elb", "eu-central-1", + "eu-central-2", "eu-north-1", "eu-south-1", + "eu-south-2", "eu-west-1", "eu-west-2", "eu-west-3", + "il-central-1", + "me-central-1", "me-south-1", "s3", + "s3-1", + "s3-ap-east-1", "s3-ap-northeast-1", "s3-ap-northeast-2", + "s3-ap-northeast-3", "s3-ap-south-1", "s3-ap-southeast-1", "s3-ap-southeast-2", "s3-ca-central-1", "s3-eu-central-1", + "s3-eu-north-1", "s3-eu-west-1", "s3-eu-west-2", "s3-eu-west-3", "s3-external-1", + "s3-fips-us-gov-east-1", "s3-fips-us-gov-west-1", + "s3-global", + "s3-me-south-1", "s3-sa-east-1", "s3-us-east-2", + "s3-us-gov-east-1", "s3-us-gov-west-1", "s3-us-west-1", "s3-us-west-2", @@ -11943,166 +12800,644 @@ var nodeLabels = [...]string{ "s3-website-eu-west-1", "s3-website-sa-east-1", "s3-website-us-east-1", + "s3-website-us-gov-west-1", "s3-website-us-west-1", "s3-website-us-west-2", "sa-east-1", "us-east-1", "us-east-2", + "us-gov-east-1", + "us-gov-west-1", "us-west-1", "us-west-2", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", + "s3-website", + "af-south-1", + "ap-east-1", + "ap-northeast-1", + "ap-northeast-2", + "ap-northeast-3", + "ap-south-1", + "ap-south-2", + "ap-southeast-1", + "ap-southeast-2", + "ap-southeast-3", + "ap-southeast-4", + "ca-central-1", + "ca-west-1", + "eu-central-1", + "eu-central-2", + "eu-north-1", + "eu-south-1", + "eu-south-2", + "eu-west-1", + "eu-west-2", + "eu-west-3", + "il-central-1", + "me-central-1", + "me-south-1", + "sa-east-1", + "us-east-1", + "us-east-2", + "us-west-1", + "us-west-2", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", + "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", + "s3-website", + "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", + "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", + "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "execute-api", + "s3", + "s3-accesspoint", + "s3-deprecated", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-website", + "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-deprecated", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", + "aws-cloud9", + "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "webview-assets", + "vfs", + "s3", + "s3-accesspoint", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-website", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", + "accesspoint", + "mrap", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-website", "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-deprecated", + "s3-fips", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-website", "analytics-gateway", "aws-cloud9", "cloud9", "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-deprecated", + "s3-fips", + "s3-object-lambda", "s3-website", "webview-assets", "vfs", "webview-assets", "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-website", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-object-lambda", + "s3-website", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-website", "analytics-gateway", "aws-cloud9", "cloud9", + "dualstack", + "emrappui-prod", + "emrnotebooks-prod", + "emrstudio-prod", + "execute-api", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-deprecated", + "s3-fips", + "s3-object-lambda", + "s3-website", "webview-assets", "vfs", "webview-assets", + "s3", + "s3-accesspoint", + "s3-accesspoint-fips", + "s3-fips", + "s3-website", + "af-south-1", + "ap-east-1", + "ap-northeast-1", + "ap-northeast-2", + "ap-northeast-3", + "ap-south-1", + "ap-south-2", + "ap-southeast-1", + "ap-southeast-2", + "ap-southeast-3", + "ap-southeast-4", + "ca-central-1", + "ca-west-1", + "eu-central-1", + "eu-central-2", + "eu-north-1", + "eu-south-1", + "eu-south-2", + "eu-west-1", + "eu-west-2", + "eu-west-3", + "il-central-1", + "me-central-1", + "me-south-1", + "sa-east-1", + "us-east-1", + "us-east-2", + "us-gov-west-1", + "us-west-1", + "us-west-2", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth", + "auth-fips", + "auth", + "auth-fips", + "auth-fips", + "auth", + "auth-fips", + "auth", + "auth-fips", "r", - "alpha", - "beta", + "services", "builder", "dev-builder", "stg-builder", @@ -12111,20 +13446,29 @@ var nodeLabels = [...]string{ "ocs", "demo", "instance", + "staging", + "af-south-1", + "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", + "ap-southeast-3", "ca-central-1", "eu-central-1", + "eu-north-1", + "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", + "il-central-1", + "me-south-1", "sa-east-1", "us-east-1", "us-east-2", + "us-gov-east-1", "us-gov-west-1", "us-west-1", "us-west-2", @@ -12147,7 +13491,6 @@ var nodeLabels = [...]string{ "members", "nodebalancer", "ip", - "app", "paas", "eu", "caracal", @@ -12162,15 +13505,20 @@ var nodeLabels = [...]string{ "x", "yali", "cloud", + "o365", "static", "xen", "eu", "app", + "platform", + "code-builder-stg", + "test", + "001", "api", + "media", "site", "pro", "jed", - "lon", "ryd", "pages", "js", @@ -12190,23 +13538,34 @@ var nodeLabels = [...]string{ "sa", "com", "edu", - "gov", + "gob", "inf", + "nat", "net", "org", - "blogspot", "com", "edu", + "id", "int", + "net", "nome", "org", + "publ", "com", "edu", "net", "org", + "assessments", "ath", + "calculators", + "cloudns", + "funnels", "gov", "info", + "paynow", + "quizzes", + "researched", + "tests", "ac", "biz", "com", @@ -12219,15 +13578,15 @@ var nodeLabels = [...]string{ "press", "pro", "tm", - "blogspot", "scaleforce", "j", - "blogspot", "co", + "contentproxy9", "e4", "metacentrum", "muni", "realm", + "rsc", "cloud", "custom", "cloud", @@ -12238,7 +13597,6 @@ var nodeLabels = [...]string{ "2ix", "4lima", "barsy", - "blogspot", "bplaced", "com", "community-pro", @@ -12287,6 +13645,8 @@ var nodeLabels = [...]string{ "my-wan", "myhome-server", "myspreadshop", + "rub", + "ruhr-uni-bochum", "schulplattform", "schulserver", "spdns", @@ -12302,6 +13662,7 @@ var nodeLabels = [...]string{ "uberspace", "virtual-user", "virtualuser", + "webspaceconfig", "xn--gnstigbestellen-zvb", "xn--gnstigliefern-wob", "dyn", @@ -12310,44 +13671,106 @@ var nodeLabels = [...]string{ "dyn", "it", "pages", + "pages-research", + "noc", + "io", "customer", "bss", - "autocode", - "curv", + "graphic", + "12chars", + "barsy", + "botdash", + "crm", "deno", "deno-staging", "deta", + "evervault", "fly", "gateway", "githubpreview", + "hrsn", + "inbrowser", + "is-a", + "is-a-fullstack", + "is-a-good", + "is-cool", + "is-not-a", "iserv", "lcl", "lclstage", "localcert", + "localplayer", "loginline", "mediatech", + "modx", + "myaddr", "ngrok", "ngrok-free", "pages", + "panel", "platter-app", "r2", - "shiftcrypto", + "replit", + "runcontainers", "stg", "stgstage", "vercel", "webhare", "workers", + "xmit", + "d", + "w", + "wa", + "wb", + "wc", + "wd", + "we", + "wf", + "relay", + "psl", + "sub", + "wc", + "ignored", + "sub", + "ignored", "user", + "archer", + "bones", + "canary", + "global", + "hacker", + "id", + "janeway", + "kim", + "kira", + "kirk", + "odo", + "paris", + "picard", + "pike", + "prerelease", + "reed", + "riker", + "sisko", + "spock", + "staging", + "sulu", + "tarpit", + "teams", + "tucker", + "wesley", + "worf", "cloudapps", "london", + "libp2p", "123hjemmeside", "biz", - "blogspot", "co", "firm", "myspreadshop", "reg", "store", + "co", "com", "edu", "gov", @@ -12373,8 +13796,6 @@ var nodeLabels = [...]string{ "pol", "soc", "tm", - "dapps", - "bzz", "base", "com", "edu", @@ -12402,17 +13823,26 @@ var nodeLabels = [...]string{ "org", "pri", "riik", - "blogspot", + "ac", "com", "edu", "eun", "gov", + "info", + "me", "mil", "name", "net", "org", "sci", - "blogspot", + "sport", + "tv", + "crisp", + "tawk", + "tawkto", + "on", + "p", + "p", "123miweb", "com", "edu", @@ -12420,7 +13850,6 @@ var nodeLabels = [...]string{ "myspreadshop", "nom", "org", - "blogspot", "compute", "biz", "com", @@ -12435,20 +13864,16 @@ var nodeLabels = [...]string{ "cloudns", "diskstation", "dogado", - "mycd", "spdns", "transurl", - "wellbeingzone", "jelastic", "party", "user", "co", "koobin", - "ybo", "storj", "123kotisivu", "aland", - "blogspot", "cloudplatform", "datacenter", "dy", @@ -12481,7 +13906,6 @@ var nodeLabels = [...]string{ "asso", "avocat", "avoues", - "blogspot", "cci", "chambagri", "chirurgiens-dentistes", @@ -12494,7 +13918,6 @@ var nodeLabels = [...]string{ "fbxos", "freebox-os", "freeboxos", - "geometre-expert", "goupile", "gouv", "greta", @@ -12510,22 +13933,26 @@ var nodeLabels = [...]string{ "tm", "veterinaire", "ynh", + "pley", + "sheezy", + "pages", "edu", "gov", "cnpy", "com", "edu", "gov", - "mil", "net", "org", "pvt", + "school", + "botdash", "co", - "cya", "kaas", "net", "org", "panel", + "stackit", "daemon", "com", "edu", @@ -12544,7 +13971,6 @@ var nodeLabels = [...]string{ "edu", "net", "org", - "xx", "ac", "com", "edu", @@ -12554,14 +13980,13 @@ var nodeLabels = [...]string{ "cloud", "translate", "usercontent", - "app", "asso", "com", "edu", "mobi", "net", "org", - "blogspot", + "barsy", "com", "edu", "gov", @@ -12569,16 +13994,13 @@ var nodeLabels = [...]string{ "org", "simplesite", "discourse", - "blog", "com", - "de", "edu", "gob", "ind", "mil", "net", "org", - "to", "com", "edu", "gov", @@ -12587,7 +14009,6 @@ var nodeLabels = [...]string{ "net", "org", "web", - "be", "co", "com", "edu", @@ -12595,7 +14016,6 @@ var nodeLabels = [...]string{ "net", "org", "hra", - "blogspot", "com", "edu", "gov", @@ -12604,7 +14024,6 @@ var nodeLabels = [...]string{ "ltd", "net", "org", - "secaas", "xn--55qx5d", "xn--ciqpn", "xn--gmq050i", @@ -12620,7 +14039,6 @@ var nodeLabels = [...]string{ "xn--uc0ay4a", "xn--wcvs22d", "xn--zf0avx", - "cc", "com", "edu", "gob", @@ -12635,16 +14053,16 @@ var nodeLabels = [...]string{ "jele", "mircloud", "myfast", - "pcloud", "tempurl", + "wp2", "wpmudev", "opencraft", - "blogspot", + "brendly", "com", - "free", "from", "iz", "name", + "shop", "adult", "art", "asso", @@ -12661,10 +14079,10 @@ var nodeLabels = [...]string{ "pol", "pro", "rel", + "rt", "shop", "2000", "agrar", - "blogspot", "bolt", "casino", "city", @@ -12698,8 +14116,6 @@ var nodeLabels = [...]string{ "biz", "co", "desa", - "flap", - "forte", "go", "mil", "my", @@ -12708,9 +14124,7 @@ var nodeLabels = [...]string{ "ponpes", "sch", "web", - "blogspot", - "rss", - "blogspot", + "zone", "gov", "myspreadshop", "ac", @@ -12721,7 +14135,6 @@ var nodeLabels = [...]string{ "muni", "net", "org", - "blogspot", "mytabit", "ravpage", "tabitorder", @@ -12730,7 +14143,6 @@ var nodeLabels = [...]string{ "com", "net", "org", - "ro", "tt", "tv", "ltd", @@ -12743,7 +14155,6 @@ var nodeLabels = [...]string{ "barsy", "bihar", "biz", - "blogspot", "business", "ca", "cloudns", @@ -12797,9 +14208,12 @@ var nodeLabels = [...]string{ "ilovecollege", "knowsitall", "mayfirst", + "mittwald", + "mittwaldserver", "no-ip", "nsupdate", "selfip", + "typo3server", "v-info", "webhop", "eu", @@ -12807,8 +14221,6 @@ var nodeLabels = [...]string{ "apigee", "azurecontainer", "b-data", - "backplaneapp", - "banzaicloud", "barsy", "basicserver", "beagleboard", @@ -12818,68 +14230,76 @@ var nodeLabels = [...]string{ "bitbucket", "bluebite", "boxfuse", + "brave", "browsersafetymark", + "bubble", + "bubbleapps", "cleverapps", + "cloudbeesusercontent", + "co", "com", "dappnode", + "darklang", "dedyn", "definima", - "drud", - "dyn53", "editorx", + "edu", "edugit", "fh-muenster", "forgerock", - "ghost", "github", "gitlab", + "gov", "hasura-app", "hostyhosting", + "hypernode", "hzc", "jele", "lair", "loginline", "lolipop", + "mil", "mo-siemens", "moonscale", "musician", + "myaddr", + "myrdbx", + "net", "ngrok", - "nid", "nodeart", + "nom", "on-acorn", "on-k3s", "on-rio", + "org", "pantheonsite", "protonet", "pstmn", "qcx", "qoto", + "rb-hosting", "readthedocs", "resindevice", "resinstaging", - "s5y", "sandcats", - "shiftcrypto", - "shiftedit", + "scrypted", "shw", - "spacekit", "stolos", "telebit", "thingdust", "tickets", - "unispace", - "upli", "utwente", "vaporcloud", - "vbrplsbx", "virtualserver", + "webflow", + "webflowtest", "webthings", - "wedeploy", - "app", - "backyards", + "wixstudio", "paas", "sekd1", "uk0", + "s", + "cdn", "dyndns", "id", "apps", @@ -12893,7 +14313,9 @@ var nodeLabels = [...]string{ "stage", "mock", "sys", + "site", "devices", + "client", "dev", "disrec", "prod", @@ -12905,8 +14327,6 @@ var nodeLabels = [...]string{ "cust", "cust", "reservd", - "cloud-fr1", - "g", "com", "edu", "gov", @@ -12914,6 +14334,7 @@ var nodeLabels = [...]string{ "net", "org", "ac", + "arvanedge", "co", "gov", "id", @@ -12922,15 +14343,8 @@ var nodeLabels = [...]string{ "sch", "xn--mgba3a4f16a", "xn--mgba3a4fra", - "blogspot", - "com", - "cupcake", - "edu", - "gov", - "int", - "net", - "org", "123homepage", + "12chars", "16-b", "32-b", "64-b", @@ -12980,7 +14394,6 @@ var nodeLabels = [...]string{ "bi", "biella", "bl", - "blogspot", "bn", "bo", "bologna", @@ -13235,7 +14648,6 @@ var nodeLabels = [...]string{ "tempioolbia", "teramo", "terni", - "tim", "tn", "to", "torino", @@ -13348,21 +14760,28 @@ var nodeLabels = [...]string{ "xn--valleaoste-e7a", "xn--valledaoste-ebb", "jc", - "open", - "jelastic", - "cloud", "co", "net", "of", "org", + "agri", + "ai", "com", "edu", + "eng", + "fm", "gov", "mil", - "name", "net", "org", + "per", + "phd", "sch", + "tv", + "0am", + "0g0", + "0j0", + "0t0", "2-d", "ac", "ad", @@ -13375,7 +14794,6 @@ var nodeLabels = [...]string{ "backdrop", "bambina", "bitter", - "blogspot", "blush", "bona", "boo", @@ -13432,6 +14850,9 @@ var nodeLabels = [...]string{ "hacca", "halfmoon", "handcrafted", + "hateblo", + "hatenablog", + "hatenadiary", "heavy", "her", "hiho", @@ -13479,6 +14900,7 @@ var nodeLabels = [...]string{ "mond", "mongolian", "moo", + "mydns", "nagano", "nagasaki", "nagoya", @@ -13505,6 +14927,7 @@ var nodeLabels = [...]string{ "penne", "pepper", "perma", + "pgw", "pigboat", "pinoko", "punyu", @@ -13559,6 +14982,7 @@ var nodeLabels = [...]string{ "weblike", "websozai", "whitesnow", + "wjg", "xii", "xn--0trq7p7nn", "xn--1ctwo", @@ -15318,18 +16742,12 @@ var nodeLabels = [...]string{ "ne", "or", "sc", - "blogspot", - "blog", "com", "edu", "gov", - "io", - "jp", "mil", "net", "org", - "tv", - "uk", "us", "biz", "com", @@ -15366,13 +16784,15 @@ var nodeLabels = [...]string{ "rep", "tra", "ac", - "blogspot", + "ai", "busan", + "c01", "chungbuk", "chungnam", "co", "daegu", "daejeon", + "eliv-dns", "es", "gangwon", "go", @@ -15382,10 +16802,13 @@ var nodeLabels = [...]string{ "gyeongnam", "hs", "incheon", + "io", + "it", "jeju", "jeonbuk", "jeonnam", "kg", + "me", "mil", "ms", "ne", @@ -15412,13 +16835,10 @@ var nodeLabels = [...]string{ "edu", "gov", "jcloud", - "kazteleport", "mil", "net", "org", - "upaas", "bnr", - "c", "com", "edu", "gov", @@ -15427,9 +16847,6 @@ var nodeLabels = [...]string{ "net", "org", "per", - "static", - "dev", - "sites", "com", "edu", "gov", @@ -15442,11 +16859,15 @@ var nodeLabels = [...]string{ "net", "org", "oy", - "blogspot", - "caa", "cyon", "dweb", + "inbrowser", + "myfritz", "mypep", + "nftstorage", + "ipfs", + "aem", + "ewp", "hlx", "ac", "assn", @@ -15472,17 +16893,14 @@ var nodeLabels = [...]string{ "ac", "biz", "co", - "de", "edu", "gov", "info", "net", "org", "sc", - "blogspot", "gov", "123website", - "blogspot", "asn", "com", "conf", @@ -15507,20 +16925,15 @@ var nodeLabels = [...]string{ "net", "org", "press", - "router", "asso", "tm", - "at", - "blogspot", - "de", - "jp", - "to", + "ir", "ac", "barsy", "brasilia", "c66", "co", - "daplie", + "craft", "ddns", "diskstation", "dnsfor", @@ -15528,11 +16941,6 @@ var nodeLabels = [...]string{ "edgestack", "edu", "filegear", - "filegear-au", - "filegear-de", - "filegear-gb", - "filegear-ie", - "filegear-jp", "filegear-sg", "glitch", "gov", @@ -15542,26 +16950,22 @@ var nodeLabels = [...]string{ "loginto", "lohmus", "mcdir", - "mcpe", "myds", "net", "nohost", "noip", "org", "priv", - "ravendb", "soundcast", "synology", "tcp4", "transip", "vp4", "webhop", - "wedeploy", - "yombo", - "localhost", "site", "framer", "barsy", + "barsyonline", "co", "com", "edu", @@ -15570,8 +16974,6 @@ var nodeLabels = [...]string{ "nom", "org", "prd", - "tm", - "blogspot", "com", "edu", "gov", @@ -15579,12 +16981,18 @@ var nodeLabels = [...]string{ "name", "net", "org", + "ac", + "art", + "asso", "com", "edu", "gouv", "gov", + "info", + "inst", "net", "org", + "pr", "presse", "edu", "gov", @@ -15597,13 +17005,12 @@ var nodeLabels = [...]string{ "org", "barsy", "dscloud", + "ind", "ju", - "blogspot", "gov", "com", "edu", "gov", - "lab", "minisite", "net", "org", @@ -15611,7 +17018,6 @@ var nodeLabels = [...]string{ "edu", "net", "org", - "blogspot", "ac", "co", "com", @@ -15641,17 +17047,14 @@ var nodeLabels = [...]string{ "edu", "gov", "int", - "museum", "net", "org", - "blogspot", "com", "edu", "gob", "net", "org", "biz", - "blogspot", "com", "edu", "gov", @@ -15667,23 +17070,12 @@ var nodeLabels = [...]string{ "mil", "net", "org", - "ca", - "cc", + "alt", "co", "com", - "dr", - "in", - "info", - "mobi", - "mx", - "name", - "or", + "gov", + "net", "org", - "pro", - "school", - "tv", - "us", - "ws", "her", "his", "forgot", @@ -15705,20 +17097,21 @@ var nodeLabels = [...]string{ "akamaized", "akamaized-staging", "alwaysdata", + "apps-1and1", "appudo", "at-band-camp", "atlassian-dev", + "azure-api", "azure-mobile", + "azureedge", + "azurefd", "azurestaticapps", "azurewebsites", - "bar0", - "bar1", - "bar2", "barsy", - "bitbridge", "blackbaudcdn", "blogdns", "boomla", + "botdash", "bounceme", "bplaced", "broke-it", @@ -15731,16 +17124,25 @@ var nodeLabels = [...]string{ "clickrising", "cloudaccess", "cloudapp", + "cloudflare", + "cloudflareanycast", + "cloudflarecn", + "cloudflareglobal", "cloudfront", "cloudfunctions", "cloudjiffy", "cloudycluster", "community-pro", "cryptonomic", + "ctfcloud", "dattolocal", "ddns", + "ddns-ip", "debian", "definima", + "deno", + "dns-cloud", + "dns-dynamic", "dnsalias", "dnsdojo", "dnsup", @@ -15762,16 +17164,16 @@ var nodeLabels = [...]string{ "familyds", "fastly", "fastlylb", - "faststacks", "feste-ip", "firewall-gateway", - "flynnhosting", "from-az", "from-co", "from-la", "from-ny", "gb", "gets-it", + "ggff", + "grafana-dev", "ham-radio-op", "heteml", "hicam", @@ -15790,10 +17192,16 @@ var nodeLabels = [...]string{ "is-a-geek", "isa-geek", "jp", + "keyword-on", "kicks-ass", "kinghost", "knx-server", "krellian", + "live-on", + "localcert", + "localhostcert", + "localto", + "mafelo", "massivegrid", "meinforum", "memset", @@ -15804,7 +17212,9 @@ var nodeLabels = [...]string{ "myeffect", "myfritz", "mymediapc", + "mynetname", "mypsx", + "myradweb", "mysecuritycamera", "myspreadshop", "nhlfan", @@ -15812,6 +17222,7 @@ var nodeLabels = [...]string{ "now-dns", "office-on-the", "onavstack", + "oninferno", "ovh", "ownip", "pgafan", @@ -15820,6 +17231,7 @@ var nodeLabels = [...]string{ "rackmaze", "redirectme", "reserve-online", + "routingthecloud", "ru", "saveincloud", "scaleforce", @@ -15834,26 +17246,28 @@ var nodeLabels = [...]string{ "serveblog", "serveftp", "serveminecraft", + "server-on", "shopselect", "siteleaf", "square7", "squares", "srcf", "static-access", + "subsc-pay", "supabase", "sytes", - "t3l3p0rt", - "tailscale", "thruhere", "torproject", + "trafficmanager", "ts", - "tsukaeru", "twmail", "uk", "uni5", "vpndns", "vps-host", + "vusercontent", "webhop", + "windows", "yandexcloud", "za", "prod", @@ -15861,6 +17275,10 @@ var nodeLabels = [...]string{ "1", "2", "3", + "4", + "5", + "6", + "7", "centralus", "eastasia", "eastus2", @@ -15868,6 +17286,10 @@ var nodeLabels = [...]string{ "westus2", "r", "u", + "cdn", + "cdn", + "cdn", + "cdn", "fra1-de", "west1-us", "jls-sto1", @@ -15890,6 +17312,7 @@ var nodeLabels = [...]string{ "ny-1", "ny-2", "sg-1", + "sn", "hosting", "webpaas", "jelastic", @@ -15897,13 +17320,15 @@ var nodeLabels = [...]string{ "j", "soc", "user", - "beta", "pages", - "jelastic", + "c", "jelastic", "atl", "njs", "ric", + "core", + "servicebus", + "blob", "storage", "website", "alces", @@ -15922,6 +17347,7 @@ var nodeLabels = [...]string{ "rec", "store", "web", + "biz", "col", "com", "edu", @@ -15936,8 +17362,13 @@ var nodeLabels = [...]string{ "net", "ngo", "org", + "plc", "sch", - "blogspot", + "co", + "dl", + "go", + "lg", + "on", "ac", "biz", "co", @@ -15953,7 +17384,6 @@ var nodeLabels = [...]string{ "org", "web", "123website", - "blogspot", "cistron", "co", "demon", @@ -16027,7 +17457,6 @@ var nodeLabels = [...]string{ "bjarkoy", "bjerkreim", "bjugn", - "blogspot", "bodo", "bokn", "bomlo", @@ -16742,6 +18171,7 @@ var nodeLabels = [...]string{ "mine", "shacknet", "ac", + "cloudns", "co", "cri", "geek", @@ -16757,7 +18187,6 @@ var nodeLabels = [...]string{ "parliament", "school", "xn--mori-qsa", - "blogspot", "co", "com", "edu", @@ -16767,18 +18196,17 @@ var nodeLabels = [...]string{ "net", "org", "pro", - "homelink", - "onred", + "kin", "service", - "staging", + "obl", "barsy", "eero", "eero-stage", + "websitebuilder", "tech", "accesscam", "ae", "altervista", - "amune", "barsy", "blogdns", "blogsite", @@ -16788,7 +18216,6 @@ var nodeLabels = [...]string{ "camdvr", "cdn77", "cdn77-secure", - "certmgr", "cloudns", "collegefan", "couchpotatofries", @@ -16799,6 +18226,7 @@ var nodeLabels = [...]string{ "doesntexist", "dontexist", "doomdns", + "dpdns", "dsmynas", "duckdns", "dvrdns", @@ -16817,6 +18245,7 @@ var nodeLabels = [...]string{ "from-me", "game-host", "gotdns", + "hatenadiary", "hepforge", "hk", "hobby-site", @@ -16828,6 +18257,7 @@ var nodeLabels = [...]string{ "httpbin", "in-dsl", "in-vpn", + "ip-dynamic", "is-a-bruinsfan", "is-a-candidate", "is-a-celticsfan", @@ -16838,6 +18268,7 @@ var nodeLabels = [...]string{ "is-a-patsfan", "is-a-soxfan", "is-found", + "is-local", "is-lost", "is-saved", "is-very-bad", @@ -16852,7 +18283,6 @@ var nodeLabels = [...]string{ "mayfirst", "misconfused", "mlbfan", - "mozilla-iot", "my-firewall", "myfirewall", "myftp", @@ -16868,6 +18298,7 @@ var nodeLabels = [...]string{ "pubtls", "read-books", "readmyblog", + "routingthecloud", "selfip", "sellsyourhome", "servebbs", @@ -16890,7 +18321,6 @@ var nodeLabels = [...]string{ "wmflabs", "za", "zapto", - "tele", "c", "rsc", "origin", @@ -16930,7 +18360,6 @@ var nodeLabels = [...]string{ "lt", "lu", "lv", - "mc", "me", "mk", "mt", @@ -16940,10 +18369,8 @@ var nodeLabels = [...]string{ "nl", "no", "nz", - "paris", "pl", "pt", - "q-a", "ro", "ru", "se", @@ -16971,17 +18398,16 @@ var nodeLabels = [...]string{ "nom", "org", "sld", + "aem", "codeberg", + "heyflow", "hlx", "hlx3", - "magnet", "pdns", "plesk", "prvcy", "rocky", "translated", - "ybo", - "blogspot", "com", "edu", "gob", @@ -16992,6 +18418,7 @@ var nodeLabels = [...]string{ "com", "edu", "org", + "cloudns", "com", "edu", "gov", @@ -17003,17 +18430,18 @@ var nodeLabels = [...]string{ "framer", "1337", "ngrok", + "ac", "biz", "com", "edu", "fam", + "gkp", "gob", + "gog", "gok", - "gon", "gop", "gos", "gov", - "info", "net", "org", "web", @@ -17030,16 +18458,20 @@ var nodeLabels = [...]string{ "bialowieza", "bialystok", "bielawa", + "bielsko", "bieszczady", "biz", "boleslawiec", "bydgoszcz", "bytom", + "cfolks", "cieszyn", "co", "com", "czeladz", "czest", + "dfirma", + "dkonto", "dlugoleka", "ecommerce-shop", "edu", @@ -17084,6 +18516,7 @@ var nodeLabels = [...]string{ "legnica", "lezajsk", "limanowa", + "lodz", "lomza", "lowicz", "lubartow", @@ -17120,9 +18553,11 @@ var nodeLabels = [...]string{ "ostroleka", "ostrowiec", "ostrowwlkp", + "pabianice", "pc", "pila", "pisz", + "plock", "podhale", "podlasie", "polkowice", @@ -17148,7 +18583,9 @@ var nodeLabels = [...]string{ "sex", "shop", "shoparena", + "sieradz", "simplesite", + "skierniewice", "sklep", "skoczow", "slask", @@ -17171,6 +18608,7 @@ var nodeLabels = [...]string{ "tarnobrzeg", "tgory", "tm", + "torun", "tourism", "travel", "turek", @@ -17190,10 +18628,12 @@ var nodeLabels = [...]string{ "wolomin", "wroc", "wroclaw", + "you2", "zachpomor", "zagan", "zakopane", "zarow", + "zgierz", "zgora", "zgorzelec", "ap", @@ -17259,7 +18699,6 @@ var nodeLabels = [...]string{ "gov", "net", "org", - "indie", "ac", "biz", "com", @@ -17273,6 +18712,7 @@ var nodeLabels = [...]string{ "org", "pro", "prof", + "12chars", "aaa", "aca", "acct", @@ -17281,13 +18721,12 @@ var nodeLabels = [...]string{ "barsy", "cloudns", "cpa", - "dnstrace", "eng", "jur", "law", "med", + "ngrok", "recht", - "bci", "com", "edu", "gov", @@ -17296,7 +18735,6 @@ var nodeLabels = [...]string{ "plo", "sec", "123paginaweb", - "blogspot", "com", "edu", "gov", @@ -17306,13 +18744,10 @@ var nodeLabels = [...]string{ "org", "publ", "barsy", - "belau", + "id", + "kin", "cloudns", - "co", - "ed", - "go", - "ne", - "or", + "gov", "x443", "com", "coop", @@ -17321,7 +18756,6 @@ var nodeLabels = [...]string{ "mil", "net", "org", - "blogspot", "com", "edu", "gov", @@ -17331,14 +18765,12 @@ var nodeLabels = [...]string{ "org", "sch", "asso", - "blogspot", + "can", "com", - "nom", - "ybo", + "netlib", "clan", "arts", "barsy", - "blogspot", "co", "com", "firm", @@ -17353,9 +18785,10 @@ var nodeLabels = [...]string{ "www", "lima-city", "myddns", + "stackit", "webspace", "ac", - "blogspot", + "barsy", "brendly", "co", "edu", @@ -17363,14 +18796,11 @@ var nodeLabels = [...]string{ "in", "org", "ox", - "ua", "shop", - "123sait", "ac", "adygeya", "bashkiria", "bir", - "blogspot", "cbg", "cldmail", "com", @@ -17400,9 +18830,7 @@ var nodeLabels = [...]string{ "pp", "pyatigorsk", "ras", - "regruhosting", "spb", - "test", "vladikavkaz", "vladimir", "hb", @@ -17411,17 +18839,22 @@ var nodeLabels = [...]string{ "landing", "spectrum", "vps", - "jelastic", "build", "code", "database", "development", - "hs", + "liara", "migration", "onporter", "ravendb", "repl", "servers", + "stackit", + "val", + "wix", + "iran", + "express", + "web", "ac", "co", "coop", @@ -17447,8 +18880,6 @@ var nodeLabels = [...]string{ "gov", "net", "org", - "ybo", - "edu", "gov", "service", "com", @@ -17464,11 +18895,9 @@ var nodeLabels = [...]string{ "ac", "b", "bd", - "blogspot", "brand", "c", "com", - "conf", "d", "e", "f", @@ -17493,7 +18922,6 @@ var nodeLabels = [...]string{ "o", "org", "p", - "paba", "parti", "pp", "press", @@ -17506,17 +18934,14 @@ var nodeLabels = [...]string{ "x", "y", "z", - "su", "loginline", - "blogspot", "com", "edu", "enscaled", "gov", "net", "org", - "per", - "bip", + "botda", "com", "gov", "hashbang", @@ -17525,43 +18950,46 @@ var nodeLabels = [...]string{ "now", "org", "platform", - "vxl", - "wedeploy", - "bc", "ent", "eu", "us", "barsy", + "barsyonline", "base", "hoplix", - "blogspot", + "shopware", + "f5", "gitapp", "gitpage", "barsy", "byen", + "canva", "cloudera", + "convex", + "cpanel", "cyon", "fastvps", - "fnwk", - "folionetwork", + "heyflow", "jele", - "lelux", + "jouwweb", "loginline", - "mintere", + "madethis", + "notion", "novecore", "omniwe", "opensocial", "platformsh", + "square", "srht", "tst", - "blogspot", + "wpsquared", + "my", "com", "edu", "gov", "net", "org", "art", - "blogspot", "com", "edu", "gouv", @@ -17574,12 +19002,17 @@ var nodeLabels = [...]string{ "me", "net", "org", - "sch", - "diher", + "surveys", + "app-ionos", + "heiyu", + "hf", "myfast", + "project", "uber", "xs4all", + "static", "biz", + "co", "com", "edu", "gov", @@ -17592,6 +19025,7 @@ var nodeLabels = [...]string{ "consulado", "edu", "embaixada", + "helioho", "kirara", "mil", "net", @@ -17600,6 +19034,7 @@ var nodeLabels = [...]string{ "principe", "saotome", "store", + "barsy", "sellfy", "shopware", "storebase", @@ -17672,12 +19107,9 @@ var nodeLabels = [...]string{ "ac", "co", "org", - "ch", - "me", - "we", - "blogspot", "discourse", "jelastic", + "cleverapps", "co", "sch", "ac", @@ -17733,17 +19165,18 @@ var nodeLabels = [...]string{ "gov", "mil", "net", - "nyan", "org", "oya", "quickconnect", - "rdv", "vpnplus", "x0", "direct", "prequalifyme", - "now-dns", + "addr", + "myaddr", + "dyn", "ntdll", + "wadl", "av", "bbs", "bel", @@ -17766,33 +19199,24 @@ var nodeLabels = [...]string{ "tsk", "tv", "web", - "blogspot", "gov", - "ybo", - "aero", "biz", "co", "com", - "coop", "edu", "gov", "info", - "int", - "jobs", - "mobi", - "museum", + "mil", "name", "net", "org", "pro", - "travel", "better-than", "dyndns", "from", "on-the-web", "sakura", "worse-than", - "blogspot", "club", "com", "ebiz", @@ -17801,12 +19225,10 @@ var nodeLabels = [...]string{ "gov", "idv", "mil", + "mydns", "net", "org", "url", - "xn--czrw28b", - "xn--uc0atv", - "xn--zf0ao64a", "mymailer", "ac", "co", @@ -17867,6 +19289,7 @@ var nodeLabels = [...]string{ "lt", "ltd", "lugansk", + "luhansk", "lutsk", "lv", "lviv", @@ -17893,12 +19316,14 @@ var nodeLabels = [...]string{ "ternopil", "uz", "uzhgorod", + "uzhhorod", "v", "vinnica", "vinnytsia", "vn", "volyn", "yalta", + "zakarpattia", "zaporizhzhe", "zaporizhzhia", "zhitomir", @@ -17906,14 +19331,17 @@ var nodeLabels = [...]string{ "zp", "zt", "ac", - "blogspot", "co", "com", + "edu", "go", + "gov", + "mil", "ne", "or", "org", "sc", + "us", "ac", "barsy", "co", @@ -17930,6 +19358,8 @@ var nodeLabels = [...]string{ "me", "net", "nhs", + "nimsite", + "oraclegovcloudapps", "org", "plc", "police", @@ -17940,21 +19370,18 @@ var nodeLabels = [...]string{ "adimo", "barsy", "barsyonline", - "blogspot", "bytemark", "layershift", "myspreadshop", "nh-serv", "no-ip", "retrosnub", - "wellbeingzone", "dh", "vm", "j", "cust", "api", "campaign", - "homeoffice", "service", "affinitylottery", "glug", @@ -17974,15 +19401,13 @@ var nodeLabels = [...]string{ "dc", "de", "dni", - "drud", "enscaled", - "fed", "fl", "freeddns", "ga", "golffan", - "graphox", "gu", + "heliohost", "hi", "ia", "id", @@ -17990,7 +19415,6 @@ var nodeLabels = [...]string{ "in", "is-by", "isa", - "kids", "ks", "ky", "la", @@ -18007,6 +19431,7 @@ var nodeLabels = [...]string{ "nc", "nd", "ne", + "ngo", "nh", "nj", "nm", @@ -18024,6 +19449,8 @@ var nodeLabels = [...]string{ "ri", "sc", "sd", + "servername", + "srv", "stuff-4-sale", "tn", "tx", @@ -18063,7 +19490,6 @@ var nodeLabels = [...]string{ "k12", "lib", "cc", - "k12", "lib", "phx", "cc", @@ -18178,6 +19604,8 @@ var nodeLabels = [...]string{ "lib", "cc", "lib", + "gh", + "gl", "cc", "k12", "lib", @@ -18212,7 +19640,6 @@ var nodeLabels = [...]string{ "mil", "net", "org", - "blogspot", "co", "com", "net", @@ -18223,6 +19650,7 @@ var nodeLabels = [...]string{ "gov", "gv", "mil", + "mydns", "net", "org", "d", @@ -18232,6 +19660,7 @@ var nodeLabels = [...]string{ "com", "e12", "edu", + "emprende", "firm", "gob", "gov", @@ -18246,7 +19675,7 @@ var nodeLabels = [...]string{ "store", "tec", "web", - "at", + "edu", "co", "com", "k12", @@ -18266,7 +19695,6 @@ var nodeLabels = [...]string{ "binhphuoc", "binhthuan", "biz", - "blogspot", "camau", "cantho", "caobang", @@ -18331,12 +19759,8 @@ var nodeLabels = [...]string{ "vinhlong", "vinhphuc", "yenbai", - "blog", - "cn", "com", - "dev", "edu", - "me", "net", "org", "framer", @@ -18384,11 +19808,8 @@ var nodeLabels = [...]string{ "xn--j1adp", "xn--j1aef", "xn--j1ael8b", - "blogsite", - "crafting", - "localzone", + "botdash", "telebit", - "zapto", "com", "edu", "gov", @@ -18414,7 +19835,6 @@ var nodeLabels = [...]string{ "school", "tm", "web", - "blogspot", "ac", "biz", "co", @@ -18427,8 +19847,8 @@ var nodeLabels = [...]string{ "org", "sch", "cloud66", - "hs", "lima", + "stackit", "triton", "ac", "co", From ebed060e8f30f20235f74808c22125fd86b15edd Mon Sep 17 00:00:00 2001 From: Chressie Himpel Date: Tue, 25 Mar 2025 14:43:42 +0100 Subject: [PATCH 7/8] internal/http3: fix build of tests with GOEXPERIMENT=nosynctest The tests in qpack_decode_test.go require synctest helpers from http3_test.go, but that file has a goexperiment.synctest build constraint. To make builds work when GOEXPERIMENT=nosynctest is specified the synctest helpers are refactored into http3_synctest_test.go (with the same build constraint) and the non-synctest related functionality is kept in http3_test.go. Change-Id: Iae339dc1895f27e7ac5ba985e204f4868c229a4d Reviewed-on: https://go-review.googlesource.com/c/net/+/660535 LUCI-TryBot-Result: Go LUCI Reviewed-by: Damien Neil --- internal/http3/http3_synctest_test.go | 48 +++++++++++++++++++++++++++ internal/http3/http3_test.go | 40 +--------------------- internal/http3/qpack_decode_test.go | 2 +- 3 files changed, 50 insertions(+), 40 deletions(-) create mode 100644 internal/http3/http3_synctest_test.go diff --git a/internal/http3/http3_synctest_test.go b/internal/http3/http3_synctest_test.go new file mode 100644 index 0000000000..ad26c6de09 --- /dev/null +++ b/internal/http3/http3_synctest_test.go @@ -0,0 +1,48 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.24 && goexperiment.synctest + +package http3 + +import ( + "slices" + "testing" + "testing/synctest" +) + +// runSynctest runs f in a synctest.Run bubble. +// It arranges for t.Cleanup functions to run within the bubble. +func runSynctest(t *testing.T, f func(t testing.TB)) { + synctest.Run(func() { + ct := &cleanupT{T: t} + defer ct.done() + f(ct) + }) +} + +// runSynctestSubtest runs f in a subtest in a synctest.Run bubble. +func runSynctestSubtest(t *testing.T, name string, f func(t testing.TB)) { + t.Run(name, func(t *testing.T) { + runSynctest(t, f) + }) +} + +// cleanupT wraps a testing.T and adds its own Cleanup method. +// Used to execute cleanup functions within a synctest bubble. +type cleanupT struct { + *testing.T + cleanups []func() +} + +// Cleanup replaces T.Cleanup. +func (t *cleanupT) Cleanup(f func()) { + t.cleanups = append(t.cleanups, f) +} + +func (t *cleanupT) done() { + for _, f := range slices.Backward(t.cleanups) { + f() + } +} diff --git a/internal/http3/http3_test.go b/internal/http3/http3_test.go index f490ad3f03..f6fb2e9b34 100644 --- a/internal/http3/http3_test.go +++ b/internal/http3/http3_test.go @@ -2,17 +2,14 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.24 && goexperiment.synctest +//go:build go1.24 package http3 import ( "encoding/hex" "os" - "slices" "strings" - "testing" - "testing/synctest" ) func init() { @@ -25,41 +22,6 @@ func init() { os.Setenv("GODEBUG", os.Getenv("GODEBUG")+",asynctimerchan=0") } -// runSynctest runs f in a synctest.Run bubble. -// It arranges for t.Cleanup functions to run within the bubble. -func runSynctest(t *testing.T, f func(t testing.TB)) { - synctest.Run(func() { - ct := &cleanupT{T: t} - defer ct.done() - f(ct) - }) -} - -// runSynctestSubtest runs f in a subtest in a synctest.Run bubble. -func runSynctestSubtest(t *testing.T, name string, f func(t testing.TB)) { - t.Run(name, func(t *testing.T) { - runSynctest(t, f) - }) -} - -// cleanupT wraps a testing.T and adds its own Cleanup method. -// Used to execute cleanup functions within a synctest bubble. -type cleanupT struct { - *testing.T - cleanups []func() -} - -// Cleanup replaces T.Cleanup. -func (t *cleanupT) Cleanup(f func()) { - t.cleanups = append(t.cleanups, f) -} - -func (t *cleanupT) done() { - for _, f := range slices.Backward(t.cleanups) { - f() - } -} - func unhex(s string) []byte { b, err := hex.DecodeString(strings.Map(func(c rune) rune { switch c { diff --git a/internal/http3/qpack_decode_test.go b/internal/http3/qpack_decode_test.go index 1b779aa782..3b9a995fa0 100644 --- a/internal/http3/qpack_decode_test.go +++ b/internal/http3/qpack_decode_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.24 +//go:build go1.24 && goexperiment.synctest package http3 From e1fcd82abba34df74614020343be8eb1fe85f0d9 Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Mon, 24 Feb 2025 11:18:31 -0800 Subject: [PATCH 8/8] html: properly handle trailing solidus in unquoted attribute value in foreign content The parser properly treats tags like

as

, but the tokenizer emits the SelfClosingTagToken token incorrectly. When the parser is used to parse foreign content, this results in an incorrect DOM. Thanks to Sean Ng (https://ensy.zip) for reporting this issue. Fixes golang/go#73070 Fixes CVE-2025-22872 Change-Id: I65c18df6d6244bf943b61e6c7a87895929e78f4f Reviewed-on: https://go-review.googlesource.com/c/net/+/661256 Reviewed-by: Neal Patel Reviewed-by: Roland Shoemaker LUCI-TryBot-Result: Go LUCI Auto-Submit: Gopher Robot --- html/token.go | 18 ++++++++++++++++-- html/token_test.go | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/html/token.go b/html/token.go index 3c57880d69..6598c1f7b3 100644 --- a/html/token.go +++ b/html/token.go @@ -839,8 +839,22 @@ func (z *Tokenizer) readStartTag() TokenType { if raw { z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end])) } - // Look for a self-closing token like "
". - if z.err == nil && z.buf[z.raw.end-2] == '/' { + // Look for a self-closing token (e.g.
). + // + // Originally, we did this by just checking that the last character of the + // tag (ignoring the closing bracket) was a solidus (/) character, but this + // is not always accurate. + // + // We need to be careful that we don't misinterpret a non-self-closing tag + // as self-closing, as can happen if the tag contains unquoted attribute + // values (i.e.

). + // + // To avoid this, we check that the last non-bracket character of the tag + // (z.raw.end-2) isn't the same character as the last non-quote character of + // the last attribute of the tag (z.pendingAttr[1].end-1), if the tag has + // attributes. + nAttrs := len(z.attr) + if z.err == nil && z.buf[z.raw.end-2] == '/' && (nAttrs == 0 || z.raw.end-2 != z.attr[nAttrs-1][1].end-1) { return SelfClosingTagToken } return StartTagToken diff --git a/html/token_test.go b/html/token_test.go index a36d112d74..44773f1712 100644 --- a/html/token_test.go +++ b/html/token_test.go @@ -616,6 +616,16 @@ var tokenTests = []tokenTest{ `

`, `

`, }, + { + "slash at end of unquoted attribute value", + `

`, + `

`, + }, + { + "self-closing tag with attribute", + `

`, + `

`, + }, } func TestTokenizer(t *testing.T) { @@ -815,6 +825,14 @@ func TestReaderEdgeCases(t *testing.T) { } } +func TestSelfClosingTagValueConfusion(t *testing.T) { + z := NewTokenizer(strings.NewReader(`

`)) + tok := z.Next() + if tok != StartTagToken { + t.Fatalf("unexpected token type: got %s, want %s", tok, StartTagToken) + } +} + // zeroOneByteReader is like a strings.Reader that alternates between // returning 0 bytes and 1 byte at a time. type zeroOneByteReader struct {