godoc/redirect: improve Rietveld CL heuristic

Go's CL numbers as assigned by Gerrit have started to collide with the
lower numbers in the sparse set of CL numbers as returned by our old
code review system (Rietveld).

The old heuristic no longer works now that Gerrit CL numbers have
reached 150000.

Instead, include a map of the low Rietveld CL numbers where we might
overlap and bump the threshold heuristic up.

Updates golang/go#28836

Change-Id: Ice719ab807ce3922b885a800ac873cdbf165a8f7
Reviewed-on: https://go-review.googlesource.com/c/150057
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/godoc/redirect/redirect.go b/godoc/redirect/redirect.go
index 3bec533..8208518 100644
--- a/godoc/redirect/redirect.go
+++ b/godoc/redirect/redirect.go
@@ -115,7 +115,7 @@
 	"/tour":  "http://tour.golang.org",
 	"/wiki":  "https://github.com/golang/go/wiki",
 
-	"/doc/articles/c_go_cgo.html": "/blog/c-go-cgo",
+	"/doc/articles/c_go_cgo.html":                    "/blog/c-go-cgo",
 	"/doc/articles/concurrency_patterns.html":        "/blog/go-concurrency-patterns-timing-out-and",
 	"/doc/articles/defer_panic_recover.html":         "/blog/defer-panic-and-recover",
 	"/doc/articles/error_handling.html":              "/blog/error-handling-and-go",
@@ -191,9 +191,13 @@
 		return
 	}
 	target := ""
-	// the first CL in rietveld is about 152046, so only treat the id as
-	// a rietveld CL if it is larger than 150000.
-	if n, err := strconv.Atoi(id); err == nil && n > 150000 {
+
+	if n, err := strconv.Atoi(id); err == nil && isRietveldCL(n) {
+		// TODO: Issue 28836: if this Rietveld CL happens to
+		// also be a Gerrit CL, render a disambiguation HTML
+		// page with two links instead. We'll need to make an
+		// RPC (to maintner?) to figure that out. For now just
+		// redirect to rietveld.
 		target = "https://codereview.appspot.com/" + id
 	} else {
 		target = "https://go-review.googlesource.com/" + id
diff --git a/godoc/redirect/redirect_test.go b/godoc/redirect/redirect_test.go
index a242f4f..804bfb0 100644
--- a/godoc/redirect/redirect_test.go
+++ b/godoc/redirect/redirect_test.go
@@ -62,6 +62,15 @@
 		"/cl/1/":         {302, "https://go-review.googlesource.com/1"},
 		"/cl/267120043":  {302, "https://codereview.appspot.com/267120043"},
 		"/cl/267120043/": {302, "https://codereview.appspot.com/267120043"},
+
+		// Verify that we're using the Rietveld CL table:
+		"/cl/152046": {302, "https://codereview.appspot.com/152046"},
+		"/cl/152047": {302, "https://go-review.googlesource.com/152047"},
+		"/cl/152048": {302, "https://codereview.appspot.com/152048"},
+
+		// And verify we're using the the "bigEnoughAssumeRietveld" value:
+		"/cl/299999": {302, "https://go-review.googlesource.com/299999"},
+		"/cl/300000": {302, "https://codereview.appspot.com/300000"},
 	}
 
 	mux := http.NewServeMux()
diff --git a/godoc/redirect/rietveld.go b/godoc/redirect/rietveld.go
new file mode 100644
index 0000000..81b1094
--- /dev/null
+++ b/godoc/redirect/rietveld.go
@@ -0,0 +1,1093 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package redirect
+
+// bigEnoughAssumeRietveld is the value where CLs equal or great are
+// assumed to be on Rietveld. By including this threshold we shrink
+// the size of the table below. When Go amasses 150,000 more CLs, we'll
+// need to bump this number and regenerate the list below.
+const bigEnoughAssumeRietveld = 300000
+
+// isRietveldCL reports whether cl was a Rietveld CL number.
+func isRietveldCL(cl int) bool {
+	return cl >= bigEnoughAssumeRietveld || lowRietveldCL[cl]
+}
+
+// lowRietveldCLs are the old CL numbers assigned by Rietveld code
+// review system as used by Go prior to Gerrit which are less than
+// bigEnoughAssumeRietveld.
+//
+// This list of numbers is registered with the /cl/NNNN redirect
+// handler to disambiguate which code review system a particular
+// number corresponds to. In some rare cases there may be duplicates,
+// in which case we might render an HTML choice for the user.
+//
+// To re-generate this list, run:
+//
+// $ cd $GOROOT
+// $ git log 7d7c6a9..94151eb | grep "^    https://golang.org/cl/" | perl -ne 's,^\s+https://golang.org/cl/(\d+).*$,$1,; chomp; print "$_: true,\n" if $_ < 300000' | sort -n | uniq
+//
+// Note that we ignore the x/* repos because we didn't start using
+// "subrepos" until the Rietveld CLs numbers were already 4,000,000+,
+// well above bigEnoughAssumeRietveld.
+var lowRietveldCL = map[int]bool{
+	152046: true,
+	152048: true,
+	152049: true,
+	152050: true,
+	152051: true,
+	152052: true,
+	152055: true,
+	152056: true,
+	152057: true,
+	152072: true,
+	152073: true,
+	152075: true,
+	152076: true,
+	152077: true,
+	152078: true,
+	152079: true,
+	152080: true,
+	152082: true,
+	152084: true,
+	152085: true,
+	152086: true,
+	152088: true,
+	152089: true,
+	152091: true,
+	152098: true,
+	152101: true,
+	152102: true,
+	152105: true,
+	152106: true,
+	152107: true,
+	152108: true,
+	152109: true,
+	152110: true,
+	152114: true,
+	152117: true,
+	152118: true,
+	152120: true,
+	152123: true,
+	152124: true,
+	152128: true,
+	152130: true,
+	152131: true,
+	152138: true,
+	152141: true,
+	152142: true,
+	153048: true,
+	153049: true,
+	153050: true,
+	153051: true,
+	153055: true,
+	153056: true,
+	153057: true,
+	154043: true,
+	154044: true,
+	154045: true,
+	154049: true,
+	154055: true,
+	154057: true,
+	154058: true,
+	154059: true,
+	154061: true,
+	154064: true,
+	154065: true,
+	154067: true,
+	154068: true,
+	154069: true,
+	154071: true,
+	154072: true,
+	154073: true,
+	154076: true,
+	154079: true,
+	154096: true,
+	154097: true,
+	154099: true,
+	154100: true,
+	154101: true,
+	154102: true,
+	154108: true,
+	154118: true,
+	154121: true,
+	154122: true,
+	154123: true,
+	154125: true,
+	154126: true,
+	154128: true,
+	154136: true,
+	154138: true,
+	154139: true,
+	154140: true,
+	154141: true,
+	154142: true,
+	154143: true,
+	154144: true,
+	154145: true,
+	154146: true,
+	154152: true,
+	154153: true,
+	154156: true,
+	154159: true,
+	154161: true,
+	154166: true,
+	154167: true,
+	154169: true,
+	154171: true,
+	154172: true,
+	154173: true,
+	154174: true,
+	154175: true,
+	154176: true,
+	154177: true,
+	154178: true,
+	154179: true,
+	154180: true,
+	155041: true,
+	155042: true,
+	155045: true,
+	155047: true,
+	155048: true,
+	155049: true,
+	155050: true,
+	155054: true,
+	155055: true,
+	155056: true,
+	155057: true,
+	155058: true,
+	155059: true,
+	155061: true,
+	155062: true,
+	155063: true,
+	155065: true,
+	155067: true,
+	155069: true,
+	155072: true,
+	155074: true,
+	155075: true,
+	155077: true,
+	155078: true,
+	155079: true,
+	156041: true,
+	156044: true,
+	156045: true,
+	156046: true,
+	156047: true,
+	156051: true,
+	156052: true,
+	156054: true,
+	156055: true,
+	156056: true,
+	156058: true,
+	156059: true,
+	156060: true,
+	156061: true,
+	156062: true,
+	156063: true,
+	156066: true,
+	156067: true,
+	156070: true,
+	156071: true,
+	156073: true,
+	156075: true,
+	156077: true,
+	156079: true,
+	156080: true,
+	156081: true,
+	156083: true,
+	156084: true,
+	156085: true,
+	156086: true,
+	156089: true,
+	156091: true,
+	156092: true,
+	156093: true,
+	156094: true,
+	156097: true,
+	156099: true,
+	156100: true,
+	156102: true,
+	156103: true,
+	156104: true,
+	156106: true,
+	156107: true,
+	156108: true,
+	156109: true,
+	156110: true,
+	156113: true,
+	156115: true,
+	156116: true,
+	157041: true,
+	157042: true,
+	157043: true,
+	157044: true,
+	157046: true,
+	157053: true,
+	157055: true,
+	157056: true,
+	157058: true,
+	157060: true,
+	157061: true,
+	157062: true,
+	157065: true,
+	157066: true,
+	157067: true,
+	157068: true,
+	157069: true,
+	157071: true,
+	157072: true,
+	157073: true,
+	157074: true,
+	157075: true,
+	157076: true,
+	157077: true,
+	157082: true,
+	157084: true,
+	157085: true,
+	157087: true,
+	157088: true,
+	157091: true,
+	157095: true,
+	157096: true,
+	157099: true,
+	157100: true,
+	157101: true,
+	157102: true,
+	157103: true,
+	157104: true,
+	157106: true,
+	157110: true,
+	157111: true,
+	157112: true,
+	157114: true,
+	157116: true,
+	157119: true,
+	157140: true,
+	157142: true,
+	157143: true,
+	157144: true,
+	157146: true,
+	157147: true,
+	157149: true,
+	157151: true,
+	157152: true,
+	157153: true,
+	157154: true,
+	157156: true,
+	157157: true,
+	157158: true,
+	157159: true,
+	157160: true,
+	157162: true,
+	157166: true,
+	157167: true,
+	157168: true,
+	157170: true,
+	158041: true,
+	159044: true,
+	159049: true,
+	159050: true,
+	159051: true,
+	160043: true,
+	160044: true,
+	160045: true,
+	160046: true,
+	160047: true,
+	160054: true,
+	160056: true,
+	160057: true,
+	160059: true,
+	160060: true,
+	160061: true,
+	160064: true,
+	160065: true,
+	160069: true,
+	160070: true,
+	161049: true,
+	161050: true,
+	161056: true,
+	161058: true,
+	161060: true,
+	161061: true,
+	161069: true,
+	161070: true,
+	161073: true,
+	161075: true,
+	162041: true,
+	162044: true,
+	162046: true,
+	162053: true,
+	162054: true,
+	162055: true,
+	162056: true,
+	162057: true,
+	162058: true,
+	162059: true,
+	162061: true,
+	162062: true,
+	163042: true,
+	163044: true,
+	163049: true,
+	163050: true,
+	163051: true,
+	163052: true,
+	163053: true,
+	163055: true,
+	163058: true,
+	163061: true,
+	163062: true,
+	163064: true,
+	163067: true,
+	163068: true,
+	163069: true,
+	163070: true,
+	163071: true,
+	163072: true,
+	163082: true,
+	163083: true,
+	163085: true,
+	163088: true,
+	163091: true,
+	163092: true,
+	163097: true,
+	163098: true,
+	164043: true,
+	164047: true,
+	164049: true,
+	164052: true,
+	164053: true,
+	164056: true,
+	164059: true,
+	164060: true,
+	164062: true,
+	164068: true,
+	164069: true,
+	164071: true,
+	164073: true,
+	164074: true,
+	164075: true,
+	164078: true,
+	164079: true,
+	164081: true,
+	164082: true,
+	164083: true,
+	164085: true,
+	164086: true,
+	164088: true,
+	164090: true,
+	164091: true,
+	164092: true,
+	164093: true,
+	164094: true,
+	164095: true,
+	165042: true,
+	165044: true,
+	165045: true,
+	165048: true,
+	165049: true,
+	165050: true,
+	165051: true,
+	165055: true,
+	165057: true,
+	165058: true,
+	165059: true,
+	165061: true,
+	165062: true,
+	165063: true,
+	165064: true,
+	165065: true,
+	165068: true,
+	165070: true,
+	165076: true,
+	165078: true,
+	165080: true,
+	165083: true,
+	165086: true,
+	165097: true,
+	165100: true,
+	165101: true,
+	166041: true,
+	166043: true,
+	166044: true,
+	166047: true,
+	166049: true,
+	166052: true,
+	166053: true,
+	166055: true,
+	166058: true,
+	166059: true,
+	166060: true,
+	166064: true,
+	166066: true,
+	166067: true,
+	166068: true,
+	166070: true,
+	166071: true,
+	166072: true,
+	166073: true,
+	166074: true,
+	166076: true,
+	166077: true,
+	166078: true,
+	166080: true,
+	167043: true,
+	167044: true,
+	167047: true,
+	167050: true,
+	167055: true,
+	167057: true,
+	167058: true,
+	168041: true,
+	168045: true,
+	170042: true,
+	170043: true,
+	170044: true,
+	170046: true,
+	170047: true,
+	170048: true,
+	170049: true,
+	171044: true,
+	171046: true,
+	171047: true,
+	171048: true,
+	171051: true,
+	172041: true,
+	172042: true,
+	172043: true,
+	172045: true,
+	172049: true,
+	173041: true,
+	173044: true,
+	173045: true,
+	174042: true,
+	174047: true,
+	174048: true,
+	174050: true,
+	174051: true,
+	174052: true,
+	174053: true,
+	174063: true,
+	174064: true,
+	174072: true,
+	174076: true,
+	174077: true,
+	174078: true,
+	174082: true,
+	174083: true,
+	174087: true,
+	175045: true,
+	175046: true,
+	175047: true,
+	175048: true,
+	176056: true,
+	176057: true,
+	176058: true,
+	176061: true,
+	176062: true,
+	176063: true,
+	176064: true,
+	176066: true,
+	176067: true,
+	176070: true,
+	176071: true,
+	176076: true,
+	178043: true,
+	178044: true,
+	178046: true,
+	178048: true,
+	179047: true,
+	179055: true,
+	179061: true,
+	179062: true,
+	179063: true,
+	179067: true,
+	179069: true,
+	179070: true,
+	179072: true,
+	179079: true,
+	179088: true,
+	179095: true,
+	179096: true,
+	179097: true,
+	179099: true,
+	179105: true,
+	179106: true,
+	179108: true,
+	179118: true,
+	179120: true,
+	179125: true,
+	179126: true,
+	179128: true,
+	179129: true,
+	179130: true,
+	180044: true,
+	180045: true,
+	180046: true,
+	180047: true,
+	180048: true,
+	180049: true,
+	180050: true,
+	180052: true,
+	180053: true,
+	180054: true,
+	180055: true,
+	180056: true,
+	180057: true,
+	180059: true,
+	180061: true,
+	180064: true,
+	180065: true,
+	180068: true,
+	180069: true,
+	180070: true,
+	180074: true,
+	180075: true,
+	180081: true,
+	180082: true,
+	180085: true,
+	180092: true,
+	180099: true,
+	180105: true,
+	180108: true,
+	180112: true,
+	180118: true,
+	181041: true,
+	181043: true,
+	181044: true,
+	181045: true,
+	181049: true,
+	181050: true,
+	181055: true,
+	181057: true,
+	181058: true,
+	181059: true,
+	181063: true,
+	181071: true,
+	181073: true,
+	181075: true,
+	181077: true,
+	181080: true,
+	181083: true,
+	181084: true,
+	181085: true,
+	181086: true,
+	181087: true,
+	181089: true,
+	181097: true,
+	181099: true,
+	181102: true,
+	181111: true,
+	181130: true,
+	181135: true,
+	181137: true,
+	181138: true,
+	181139: true,
+	181151: true,
+	181152: true,
+	181153: true,
+	181155: true,
+	181156: true,
+	181157: true,
+	181158: true,
+	181160: true,
+	181161: true,
+	181163: true,
+	181164: true,
+	181171: true,
+	181179: true,
+	181183: true,
+	181184: true,
+	181186: true,
+	182041: true,
+	182043: true,
+	182044: true,
+	183042: true,
+	183043: true,
+	183044: true,
+	183047: true,
+	183049: true,
+	183065: true,
+	183066: true,
+	183073: true,
+	183074: true,
+	183075: true,
+	183083: true,
+	183084: true,
+	183087: true,
+	183088: true,
+	183090: true,
+	183095: true,
+	183104: true,
+	183107: true,
+	183109: true,
+	183111: true,
+	183112: true,
+	183113: true,
+	183116: true,
+	183123: true,
+	183124: true,
+	183125: true,
+	183126: true,
+	183132: true,
+	183133: true,
+	183135: true,
+	183136: true,
+	183137: true,
+	183138: true,
+	183139: true,
+	183140: true,
+	183141: true,
+	183142: true,
+	183153: true,
+	183155: true,
+	183156: true,
+	183157: true,
+	183160: true,
+	184043: true,
+	184055: true,
+	184058: true,
+	184059: true,
+	184068: true,
+	184069: true,
+	184079: true,
+	184080: true,
+	184081: true,
+	185043: true,
+	185045: true,
+	186042: true,
+	186043: true,
+	186073: true,
+	186076: true,
+	186077: true,
+	186078: true,
+	186079: true,
+	186081: true,
+	186095: true,
+	186108: true,
+	186113: true,
+	186115: true,
+	186116: true,
+	186118: true,
+	186119: true,
+	186132: true,
+	186137: true,
+	186138: true,
+	186139: true,
+	186143: true,
+	186144: true,
+	186145: true,
+	186146: true,
+	186147: true,
+	186148: true,
+	186159: true,
+	186160: true,
+	186161: true,
+	186165: true,
+	186169: true,
+	186173: true,
+	186180: true,
+	186210: true,
+	186211: true,
+	186212: true,
+	186213: true,
+	186214: true,
+	186215: true,
+	186216: true,
+	186228: true,
+	186229: true,
+	186230: true,
+	186232: true,
+	186234: true,
+	186255: true,
+	186263: true,
+	186276: true,
+	186279: true,
+	186282: true,
+	186283: true,
+	188043: true,
+	189042: true,
+	189057: true,
+	189059: true,
+	189062: true,
+	189078: true,
+	189080: true,
+	189083: true,
+	189088: true,
+	189093: true,
+	189095: true,
+	189096: true,
+	189098: true,
+	189100: true,
+	190041: true,
+	190042: true,
+	190043: true,
+	190044: true,
+	190059: true,
+	190062: true,
+	190068: true,
+	190074: true,
+	190076: true,
+	190077: true,
+	190079: true,
+	190085: true,
+	190088: true,
+	190103: true,
+	190104: true,
+	193055: true,
+	193066: true,
+	193067: true,
+	193070: true,
+	193075: true,
+	193079: true,
+	193080: true,
+	193081: true,
+	193091: true,
+	193092: true,
+	193095: true,
+	193101: true,
+	193104: true,
+	194043: true,
+	194045: true,
+	194046: true,
+	194050: true,
+	194051: true,
+	194052: true,
+	194053: true,
+	194064: true,
+	194066: true,
+	194069: true,
+	194071: true,
+	194072: true,
+	194073: true,
+	194074: true,
+	194076: true,
+	194077: true,
+	194078: true,
+	194082: true,
+	194084: true,
+	194085: true,
+	194090: true,
+	194091: true,
+	194092: true,
+	194094: true,
+	194097: true,
+	194098: true,
+	194099: true,
+	194100: true,
+	194114: true,
+	194116: true,
+	194118: true,
+	194119: true,
+	194120: true,
+	194121: true,
+	194122: true,
+	194126: true,
+	194129: true,
+	194131: true,
+	194132: true,
+	194133: true,
+	194134: true,
+	194146: true,
+	194151: true,
+	194156: true,
+	194157: true,
+	194159: true,
+	194161: true,
+	194165: true,
+	195041: true,
+	195044: true,
+	195050: true,
+	195051: true,
+	195052: true,
+	195068: true,
+	195075: true,
+	195076: true,
+	195079: true,
+	195080: true,
+	195081: true,
+	196042: true,
+	196044: true,
+	196050: true,
+	196051: true,
+	196055: true,
+	196056: true,
+	196061: true,
+	196063: true,
+	196065: true,
+	196070: true,
+	196071: true,
+	196075: true,
+	196077: true,
+	196079: true,
+	196087: true,
+	196088: true,
+	196090: true,
+	196091: true,
+	197041: true,
+	197042: true,
+	197043: true,
+	197044: true,
+	198044: true,
+	198045: true,
+	198046: true,
+	198048: true,
+	198049: true,
+	198050: true,
+	198053: true,
+	198057: true,
+	198058: true,
+	198066: true,
+	198071: true,
+	198074: true,
+	198081: true,
+	198084: true,
+	198085: true,
+	198102: true,
+	199042: true,
+	199044: true,
+	199045: true,
+	199046: true,
+	199047: true,
+	199052: true,
+	199054: true,
+	199057: true,
+	199066: true,
+	199070: true,
+	199082: true,
+	199091: true,
+	199094: true,
+	199096: true,
+	201041: true,
+	201042: true,
+	201043: true,
+	201047: true,
+	201048: true,
+	201049: true,
+	201058: true,
+	201061: true,
+	201064: true,
+	201065: true,
+	201068: true,
+	202042: true,
+	202043: true,
+	202044: true,
+	202051: true,
+	202054: true,
+	202055: true,
+	203043: true,
+	203050: true,
+	203051: true,
+	203053: true,
+	203060: true,
+	203062: true,
+	204042: true,
+	204044: true,
+	204048: true,
+	204052: true,
+	204053: true,
+	204061: true,
+	204062: true,
+	204064: true,
+	204065: true,
+	204067: true,
+	204068: true,
+	204069: true,
+	205042: true,
+	205044: true,
+	206043: true,
+	206044: true,
+	206047: true,
+	206050: true,
+	206051: true,
+	206052: true,
+	206053: true,
+	206054: true,
+	206055: true,
+	206058: true,
+	206059: true,
+	206060: true,
+	206067: true,
+	206069: true,
+	206077: true,
+	206078: true,
+	206079: true,
+	206084: true,
+	206089: true,
+	206101: true,
+	206107: true,
+	206109: true,
+	207043: true,
+	207044: true,
+	207049: true,
+	207050: true,
+	207051: true,
+	207052: true,
+	207053: true,
+	207054: true,
+	207055: true,
+	207061: true,
+	207062: true,
+	207069: true,
+	207071: true,
+	207085: true,
+	207086: true,
+	207087: true,
+	207088: true,
+	207095: true,
+	207096: true,
+	207102: true,
+	207103: true,
+	207106: true,
+	207108: true,
+	207110: true,
+	207111: true,
+	207112: true,
+	209041: true,
+	209042: true,
+	209043: true,
+	209044: true,
+	210042: true,
+	210043: true,
+	210044: true,
+	210047: true,
+	211041: true,
+	212041: true,
+	212045: true,
+	212046: true,
+	212047: true,
+	213041: true,
+	213042: true,
+	214042: true,
+	214046: true,
+	214049: true,
+	214050: true,
+	215042: true,
+	215048: true,
+	215050: true,
+	216043: true,
+	216046: true,
+	216047: true,
+	216052: true,
+	216053: true,
+	216054: true,
+	216059: true,
+	216068: true,
+	217041: true,
+	217044: true,
+	217047: true,
+	217048: true,
+	217049: true,
+	217056: true,
+	217058: true,
+	217059: true,
+	217060: true,
+	217061: true,
+	217064: true,
+	217066: true,
+	217069: true,
+	217071: true,
+	217085: true,
+	217086: true,
+	217088: true,
+	217093: true,
+	217094: true,
+	217108: true,
+	217109: true,
+	217111: true,
+	217115: true,
+	217116: true,
+	218042: true,
+	218044: true,
+	218046: true,
+	218050: true,
+	218060: true,
+	218061: true,
+	218063: true,
+	218064: true,
+	218065: true,
+	218070: true,
+	218071: true,
+	218072: true,
+	218074: true,
+	218076: true,
+	222041: true,
+	223041: true,
+	223043: true,
+	223044: true,
+	223050: true,
+	223052: true,
+	223054: true,
+	223058: true,
+	223059: true,
+	223061: true,
+	223068: true,
+	223069: true,
+	223070: true,
+	223071: true,
+	223073: true,
+	223075: true,
+	223076: true,
+	223083: true,
+	223087: true,
+	223094: true,
+	223096: true,
+	223101: true,
+	223106: true,
+	223108: true,
+	224041: true,
+	224042: true,
+	224043: true,
+	224045: true,
+	224051: true,
+	224053: true,
+	224057: true,
+	224060: true,
+	224061: true,
+	224062: true,
+	224063: true,
+	224068: true,
+	224069: true,
+	224081: true,
+	224084: true,
+	224087: true,
+	224090: true,
+	224096: true,
+	224105: true,
+	225042: true,
+	227041: true,
+	229045: true,
+	229046: true,
+	229048: true,
+	229049: true,
+	229050: true,
+	231042: true,
+	236041: true,
+	237041: true,
+	238041: true,
+	238042: true,
+	240041: true,
+	240042: true,
+	240043: true,
+	241041: true,
+	243041: true,
+	244041: true,
+	245041: true,
+	247041: true,
+	250041: true,
+	252041: true,
+	253041: true,
+	253045: true,
+	254043: true,
+	255042: true,
+	255043: true,
+	257041: true,
+	257042: true,
+	258041: true,
+	261041: true,
+	264041: true,
+	294042: true,
+	296042: true,
+}