diff --git a/.example/os/gres/gres.go b/.example/os/gres/gres.go index 8365a13b1..0c1e5b38a 100644 --- a/.example/os/gres/gres.go +++ b/.example/os/gres/gres.go @@ -8,5 +8,5 @@ import ( func main() { gres.Dump() - g.Dump(gres.Scan("/", "*")) + g.Dump(gres.Scan("/r", "*", true)) } diff --git a/.example/os/gres/testdata/testdata.go b/.example/os/gres/testdata/testdata.go index 246ce7cd7..d814a8e8c 100644 --- a/.example/os/gres/testdata/testdata.go +++ b/.example/os/gres/testdata/testdata.go @@ -3,7 +3,7 @@ package testdata import "github.com/gogf/gf/os/gres" func init() { - if err := gres.Add([]byte{80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 147, 110, 10, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 47, 100, 105, 114, 49, 85, 84, 5, 0, 1, 38, 204, 78, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 147, 110, 10, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 47, 100, 105, 114, 49, 47, 116, 101, 115, 116, 49, 85, 84, 5, 0, 1, 38, 204, 78, 93, 116, 101, 115, 116, 49, 32, 99, 111, 110, 116, 101, 110, 116, 10, 80, 75, 7, 8, 130, 50, 74, 209, 14, 0, 0, 0, 14, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 154, 110, 10, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 47, 100, 105, 114, 50, 85, 84, 5, 0, 1, 53, 204, 78, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 154, 110, 10, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 47, 100, 105, 114, 50, 47, 116, 101, 115, 116, 50, 85, 84, 5, 0, 1, 53, 204, 78, 93, 116, 101, 115, 116, 50, 32, 99, 111, 110, 116, 101, 110, 116, 10, 80, 75, 7, 8, 129, 137, 125, 58, 14, 0, 0, 0, 14, 0, 0, 0, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 147, 110, 10, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 255, 65, 0, 0, 0, 0, 47, 100, 105, 114, 49, 85, 84, 5, 0, 1, 38, 204, 78, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 147, 110, 10, 79, 130, 50, 74, 209, 14, 0, 0, 0, 14, 0, 0, 0, 11, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 129, 60, 0, 0, 0, 47, 100, 105, 114, 49, 47, 116, 101, 115, 116, 49, 85, 84, 5, 0, 1, 38, 204, 78, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 154, 110, 10, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 255, 65, 140, 0, 0, 0, 47, 100, 105, 114, 50, 85, 84, 5, 0, 1, 53, 204, 78, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 154, 110, 10, 79, 129, 137, 125, 58, 14, 0, 0, 0, 14, 0, 0, 0, 11, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 129, 200, 0, 0, 0, 47, 100, 105, 114, 50, 47, 116, 101, 115, 116, 50, 85, 84, 5, 0, 1, 53, 204, 78, 93, 80, 75, 5, 6, 0, 0, 0, 0, 4, 0, 4, 0, 252, 0, 0, 0, 24, 1, 0, 0, 0, 0}); err != nil { + if err := gres.Add([]byte{80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 72, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 9, 0, 47, 46, 68, 83, 95, 83, 116, 111, 114, 101, 85, 84, 5, 0, 1, 40, 176, 82, 93, 0, 0, 0, 1, 66, 117, 100, 49, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, 24, 0, 0, 0, 16, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 16, 0, 98, 119, 115, 112, 98, 108, 111, 98, 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, 128, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 128, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 1, 0, 128, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 114, 0, 111, 0, 111, 0, 116, 98, 119, 115, 112, 98, 108, 111, 98, 0, 0, 0, 201, 98, 112, 108, 105, 115, 116, 48, 48, 215, 1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 8, 10, 13, 10, 93, 83, 104, 111, 119, 83, 116, 97, 116, 117, 115, 66, 97, 114, 91, 83, 104, 111, 119, 80, 97, 116, 104, 98, 97, 114, 91, 83, 104, 111, 119, 84, 111, 111, 108, 98, 97, 114, 91, 83, 104, 111, 119, 84, 97, 98, 86, 105, 101, 119, 95, 16, 20, 67, 111, 110, 116, 97, 105, 110, 101, 114, 83, 104, 111, 119, 83, 105, 100, 101, 98, 97, 114, 92, 87, 105, 110, 100, 111, 119, 66, 111, 117, 110, 100, 115, 91, 83, 104, 111, 119, 83, 105, 100, 101, 98, 97, 114, 8, 8, 9, 8, 9, 95, 16, 24, 123, 123, 49, 52, 49, 44, 32, 53, 51, 125, 44, 32, 123, 49, 49, 55, 51, 44, 32, 56, 50, 51, 125, 125, 9, 8, 23, 37, 49, 61, 73, 96, 109, 121, 122, 123, 124, 125, 126, 153, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 4, 0, 114, 0, 111, 0, 111, 0, 116, 108, 115, 118, 67, 98, 108, 111, 98, 0, 0, 2, 151, 98, 112, 108, 105, 115, 116, 48, 48, 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 25, 73, 74, 10, 76, 88, 105, 99, 111, 110, 83, 105, 122, 101, 95, 16, 15, 115, 104, 111, 119, 73, 99, 111, 110, 80, 114, 101, 118, 105, 101, 119, 87, 99, 111, 108, 117, 109, 110, 115, 95, 16, 17, 99, 97, 108, 99, 117, 108, 97, 116, 101, 65, 108, 108, 83, 105, 122, 101, 115, 88, 116, 101, 120, 116, 83, 105, 122, 101, 90, 115, 111, 114, 116, 67, 111, 108, 117, 109, 110, 95, 16, 16, 117, 115, 101, 82, 101, 108, 97, 116, 105, 118, 101, 68, 97, 116, 101, 115, 95, 16, 18, 118, 105, 101, 119, 79, 112, 116, 105, 111, 110, 115, 86, 101, 114, 115, 105, 111, 110, 35, 64, 48, 0, 0, 0, 0, 0, 0, 9, 171, 12, 21, 29, 34, 38, 43, 48, 53, 58, 63, 68, 212, 13, 14, 15, 16, 10, 18, 10, 20, 87, 118, 105, 115, 105, 98, 108, 101, 85, 119, 105, 100, 116, 104, 89, 97, 115, 99, 101, 110, 100, 105, 110, 103, 90, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 9, 17, 2, 67, 9, 84, 110, 97, 109, 101, 212, 22, 23, 24, 16, 25, 26, 25, 28, 87, 118, 105, 115, 105, 98, 108, 101, 85, 119, 105, 100, 116, 104, 89, 97, 115, 99, 101, 110, 100, 105, 110, 103, 8, 16, 35, 8, 88, 117, 98, 105, 113, 117, 105, 116, 121, 212, 16, 14, 15, 13, 30, 31, 25, 10, 92, 100, 97, 116, 101, 77, 111, 100, 105, 102, 105, 101, 100, 16, 181, 8, 9, 212, 16, 14, 15, 13, 35, 31, 25, 25, 91, 100, 97, 116, 101, 67, 114, 101, 97, 116, 101, 100, 8, 8, 212, 13, 14, 15, 16, 10, 40, 25, 42, 9, 16, 97, 8, 84, 115, 105, 122, 101, 212, 13, 14, 15, 16, 10, 45, 10, 47, 9, 16, 115, 9, 84, 107, 105, 110, 100, 212, 13, 14, 15, 16, 25, 50, 10, 52, 8, 16, 100, 9, 85, 108, 97, 98, 101, 108, 212, 13, 14, 15, 16, 25, 55, 10, 57, 8, 16, 75, 9, 87, 118, 101, 114, 115, 105, 111, 110, 212, 13, 14, 15, 16, 25, 60, 10, 62, 8, 17, 1, 44, 9, 88, 99, 111, 109, 109, 101, 110, 116, 115, 212, 16, 14, 15, 13, 64, 65, 25, 25, 94, 100, 97, 116, 101, 76, 97, 115, 116, 79, 112, 101, 110, 101, 100, 16, 200, 8, 8, 212, 16, 23, 24, 22, 69, 31, 25, 25, 89, 100, 97, 116, 101, 65, 100, 100, 101, 100, 8, 8, 8, 35, 64, 40, 0, 0, 0, 0, 0, 0, 84, 110, 97, 109, 101, 9, 16, 1, 0, 8, 0, 25, 0, 34, 0, 52, 0, 60, 0, 80, 0, 89, 0, 100, 0, 119, 0, 140, 0, 149, 0, 150, 0, 162, 0, 171, 0, 179, 0, 185, 0, 195, 0, 206, 0, 207, 0, 210, 0, 211, 0, 216, 0, 225, 0, 233, 0, 239, 0, 249, 0, 250, 0, 252, 0, 253, 1, 6, 1, 15, 1, 28, 1, 30, 1, 31, 1, 32, 1, 41, 1, 53, 1, 54, 1, 55, 1, 64, 1, 65, 1, 67, 1, 68, 1, 73, 1, 82, 1, 83, 1, 85, 1, 86, 1, 91, 1, 100, 1, 101, 1, 103, 1, 104, 1, 110, 1, 119, 1, 120, 1, 122, 1, 123, 1, 131, 1, 140, 1, 141, 1, 144, 1, 145, 1, 154, 1, 163, 1, 178, 1, 180, 1, 181, 1, 182, 1, 191, 1, 201, 1, 202, 1, 203, 1, 204, 1, 213, 1, 218, 1, 219, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 221, 0, 0, 0, 4, 0, 114, 0, 111, 0, 111, 0, 116, 108, 115, 118, 112, 98, 108, 111, 98, 0, 0, 2, 94, 98, 112, 108, 105, 115, 116, 48, 48, 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 29, 70, 71, 10, 68, 88, 105, 99, 111, 110, 83, 105, 122, 101, 95, 16, 15, 115, 104, 111, 119, 73, 99, 111, 110, 80, 114, 101, 118, 105, 101, 119, 87, 99, 111, 108, 117, 109, 110, 115, 95, 16, 17, 99, 97, 108, 99, 117, 108, 97, 116, 101, 65, 108, 108, 83, 105, 122, 101, 115, 88, 116, 101, 120, 116, 83, 105, 122, 101, 90, 115, 111, 114, 116, 67, 111, 108, 117, 109, 110, 95, 16, 16, 117, 115, 101, 82, 101, 108, 97, 116, 105, 118, 101, 68, 97, 116, 101, 115, 95, 16, 18, 118, 105, 101, 119, 79, 112, 116, 105, 111, 110, 115, 86, 101, 114, 115, 105, 111, 110, 35, 64, 48, 0, 0, 0, 0, 0, 0, 9, 217, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 30, 35, 40, 45, 50, 55, 60, 65, 88, 99, 111, 109, 109, 101, 110, 116, 115, 94, 100, 97, 116, 101, 76, 97, 115, 116, 79, 112, 101, 110, 101, 100, 91, 100, 97, 116, 101, 67, 114, 101, 97, 116, 101, 100, 84, 115, 105, 122, 101, 85, 108, 97, 98, 101, 108, 84, 107, 105, 110, 100, 87, 118, 101, 114, 115, 105, 111, 110, 84, 110, 97, 109, 101, 92, 100, 97, 116, 101, 77, 111, 100, 105, 102, 105, 101, 100, 212, 22, 23, 24, 25, 26, 27, 10, 29, 85, 105, 110, 100, 101, 120, 85, 119, 105, 100, 116, 104, 89, 97, 115, 99, 101, 110, 100, 105, 110, 103, 87, 118, 105, 115, 105, 98, 108, 101, 16, 7, 17, 1, 44, 9, 8, 212, 25, 23, 24, 22, 29, 32, 29, 34, 8, 16, 200, 8, 16, 8, 212, 25, 23, 24, 22, 29, 37, 29, 39, 8, 16, 181, 8, 16, 2, 212, 22, 23, 24, 25, 41, 42, 29, 10, 16, 3, 16, 97, 8, 9, 212, 22, 23, 24, 25, 46, 47, 10, 29, 16, 5, 16, 100, 9, 8, 212, 22, 23, 24, 25, 51, 52, 10, 10, 16, 4, 16, 115, 9, 9, 212, 22, 23, 24, 25, 56, 57, 10, 29, 16, 6, 16, 75, 9, 8, 212, 22, 23, 24, 25, 61, 62, 10, 10, 16, 0, 17, 2, 67, 9, 9, 212, 25, 23, 24, 22, 10, 37, 29, 68, 9, 8, 16, 1, 8, 35, 64, 40, 0, 0, 0, 0, 0, 0, 84, 110, 97, 109, 101, 9, 0, 8, 0, 25, 0, 34, 0, 52, 0, 60, 0, 80, 0, 89, 0, 100, 0, 119, 0, 140, 0, 149, 0, 150, 0, 169, 0, 178, 0, 193, 0, 205, 0, 210, 0, 216, 0, 221, 0, 229, 0, 234, 0, 247, 1, 0, 1, 6, 1, 12, 1, 22, 1, 30, 1, 32, 1, 35, 1, 36, 1, 37, 1, 46, 1, 47, 1, 49, 1, 50, 1, 52, 1, 61, 1, 62, 1, 64, 1, 65, 1, 67, 1, 76, 1, 78, 1, 80, 1, 81, 1, 82, 1, 91, 1, 93, 1, 95, 1, 96, 1, 97, 1, 106, 1, 108, 1, 110, 1, 111, 1, 112, 1, 121, 1, 123, 1, 125, 1, 126, 1, 127, 1, 136, 1, 138, 1, 141, 1, 142, 1, 143, 1, 152, 1, 153, 1, 154, 1, 156, 1, 157, 1, 166, 1, 171, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 172, 0, 0, 0, 4, 0, 114, 0, 111, 0, 111, 0, 116, 118, 83, 114, 110, 108, 111, 110, 103, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 24, 11, 0, 0, 0, 69, 0, 0, 16, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 68, 83, 68, 66, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 128, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 128, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 1, 0, 128, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 42, 29, 10, 16, 3, 16, 97, 8, 9, 212, 22, 23, 24, 25, 46, 47, 10, 29, 16, 5, 16, 100, 9, 8, 212, 22, 23, 24, 25, 51, 52, 10, 10, 16, 4, 16, 115, 9, 9, 212, 22, 23, 24, 25, 56, 57, 10, 29, 16, 6, 16, 75, 9, 8, 212, 22, 23, 24, 25, 61, 62, 10, 10, 16, 0, 17, 2, 67, 9, 9, 212, 25, 23, 24, 22, 10, 37, 29, 68, 9, 8, 16, 1, 8, 35, 64, 40, 0, 0, 0, 0, 0, 0, 84, 110, 97, 109, 101, 9, 0, 8, 0, 25, 0, 34, 0, 52, 0, 60, 0, 80, 0, 89, 0, 100, 0, 119, 0, 140, 0, 149, 0, 150, 0, 169, 0, 178, 0, 193, 0, 205, 0, 210, 0, 216, 0, 221, 0, 229, 0, 234, 0, 247, 1, 0, 1, 6, 1, 12, 1, 22, 1, 30, 1, 32, 1, 35, 1, 36, 1, 37, 1, 46, 1, 47, 1, 49, 1, 50, 1, 52, 1, 61, 1, 62, 1, 64, 1, 65, 1, 67, 1, 76, 1, 78, 1, 80, 1, 81, 1, 82, 1, 91, 1, 93, 1, 95, 1, 96, 1, 97, 1, 106, 1, 108, 1, 110, 1, 111, 1, 112, 1, 121, 1, 123, 1, 125, 1, 126, 1, 127, 1, 136, 1, 138, 1, 141, 1, 142, 1, 143, 1, 152, 1, 153, 1, 154, 1, 156, 1, 157, 1, 166, 1, 171, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 172, 0, 0, 0, 4, 0, 114, 0, 111, 0, 111, 0, 116, 118, 83, 114, 110, 108, 111, 110, 103, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 7, 8, 238, 129, 54, 134, 4, 32, 0, 0, 4, 32, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 47, 100, 105, 114, 49, 85, 84, 5, 0, 1, 175, 148, 82, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 47, 100, 105, 114, 49, 47, 116, 101, 115, 116, 49, 85, 84, 5, 0, 1, 175, 148, 82, 93, 116, 101, 115, 116, 49, 32, 99, 111, 110, 116, 101, 110, 116, 10, 80, 75, 7, 8, 130, 50, 74, 209, 14, 0, 0, 0, 14, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 47, 100, 105, 114, 50, 85, 84, 5, 0, 1, 175, 148, 82, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 47, 100, 105, 114, 50, 47, 116, 101, 115, 116, 50, 85, 84, 5, 0, 1, 175, 148, 82, 93, 116, 101, 115, 116, 50, 32, 99, 111, 110, 116, 101, 110, 116, 10, 80, 75, 7, 8, 129, 137, 125, 58, 14, 0, 0, 0, 14, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 142, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 47, 114, 111, 111, 116, 85, 84, 5, 0, 1, 172, 176, 82, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 76, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 9, 0, 47, 114, 111, 111, 116, 47, 46, 68, 83, 95, 83, 116, 111, 114, 101, 85, 84, 5, 0, 1, 49, 176, 82, 93, 0, 0, 0, 1, 66, 117, 100, 49, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, 128, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 128, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 1, 0, 128, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 16, 11, 0, 0, 0, 69, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 68, 83, 68, 66, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 128, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 128, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 1, 0, 128, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 7, 8, 106, 0, 136, 109, 4, 24, 0, 0, 4, 24, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 132, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 47, 114, 111, 111, 116, 47, 99, 115, 115, 85, 84, 5, 0, 1, 152, 176, 82, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 132, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 9, 0, 47, 114, 111, 111, 116, 47, 99, 115, 115, 47, 115, 116, 121, 108, 101, 46, 99, 115, 115, 85, 84, 5, 0, 1, 152, 176, 82, 93, 42, 32, 123, 10, 32, 32, 32, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 51, 50, 112, 120, 59, 10, 32, 32, 32, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 10, 125, 80, 75, 7, 8, 42, 222, 98, 234, 50, 0, 0, 0, 50, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 74, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 47, 114, 111, 111, 116, 47, 105, 109, 97, 103, 101, 85, 84, 5, 0, 1, 44, 176, 82, 93, 80, 75, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 36, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 9, 0, 47, 114, 111, 111, 116, 47, 105, 109, 97, 103, 101, 47, 108, 111, 103, 111, 46, 112, 110, 103, 85, 84, 5, 0, 1, 228, 175, 82, 93, 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 50, 0, 0, 0, 50, 8, 6, 0, 0, 0, 30, 63, 136, 177, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0, 154, 156, 24, 0, 0, 2, 174, 105, 84, 88, 116, 88, 77, 76, 58, 99, 111, 109, 46, 97, 100, 111, 98, 101, 46, 120, 109, 112, 0, 0, 0, 0, 0, 60, 120, 58, 120, 109, 112, 109, 101, 116, 97, 32, 120, 109, 108, 110, 115, 58, 120, 61, 34, 97, 100, 111, 98, 101, 58, 110, 115, 58, 109, 101, 116, 97, 47, 34, 32, 120, 58, 120, 109, 112, 116, 107, 61, 34, 88, 77, 80, 32, 67, 111, 114, 101, 32, 53, 46, 52, 46, 48, 34, 62, 10, 32, 32, 32, 60, 114, 100, 102, 58, 82, 68, 70, 32, 120, 109, 108, 110, 115, 58, 114, 100, 102, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 49, 57, 57, 57, 47, 48, 50, 47, 50, 50, 45, 114, 100, 102, 45, 115, 121, 110, 116, 97, 120, 45, 110, 115, 35, 34, 62, 10, 32, 32, 32, 32, 32, 32, 60, 114, 100, 102, 58, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 32, 114, 100, 102, 58, 97, 98, 111, 117, 116, 61, 34, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 120, 109, 108, 110, 115, 58, 120, 109, 112, 61, 34, 104, 116, 116, 112, 58, 47, 47, 110, 115, 46, 97, 100, 111, 98, 101, 46, 99, 111, 109, 47, 120, 97, 112, 47, 49, 46, 48, 47, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 120, 109, 108, 110, 115, 58, 100, 99, 61, 34, 104, 116, 116, 112, 58, 47, 47, 112, 117, 114, 108, 46, 111, 114, 103, 47, 100, 99, 47, 101, 108, 101, 109, 101, 110, 116, 115, 47, 49, 46, 49, 47, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 120, 109, 108, 110, 115, 58, 116, 105, 102, 102, 61, 34, 104, 116, 116, 112, 58, 47, 47, 110, 115, 46, 97, 100, 111, 98, 101, 46, 99, 111, 109, 47, 116, 105, 102, 102, 47, 49, 46, 48, 47, 34, 62, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 60, 120, 109, 112, 58, 67, 114, 101, 97, 116, 101, 68, 97, 116, 101, 62, 50, 48, 49, 57, 45, 48, 53, 45, 48, 54, 84, 49, 50, 58, 51, 50, 58, 49, 53, 90, 60, 47, 120, 109, 112, 58, 67, 114, 101, 97, 116, 101, 68, 97, 116, 101, 62, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 60, 120, 109, 112, 58, 67, 114, 101, 97, 116, 111, 114, 84, 111, 111, 108, 62, 65, 100, 111, 98, 101, 32, 70, 105, 114, 101, 119, 111, 114, 107, 115, 32, 67, 83, 52, 60, 47, 120, 109, 112, 58, 67, 114, 101, 97, 116, 111, 114, 84, 111, 111, 108, 62, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 60, 120, 109, 112, 58, 77, 111, 100, 105, 102, 121, 68, 97, 116, 101, 62, 50, 48, 49, 57, 45, 48, 53, 45, 48, 54, 84, 49, 53, 58, 53, 54, 58, 51, 56, 90, 60, 47, 120, 109, 112, 58, 77, 111, 100, 105, 102, 121, 68, 97, 116, 101, 62, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 60, 100, 99, 58, 102, 111, 114, 109, 97, 116, 62, 105, 109, 97, 103, 101, 47, 112, 110, 103, 60, 47, 100, 99, 58, 102, 111, 114, 109, 97, 116, 62, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 60, 116, 105, 102, 102, 58, 79, 114, 105, 101, 110, 116, 97, 116, 105, 111, 110, 62, 49, 60, 47, 116, 105, 102, 102, 58, 79, 114, 105, 101, 110, 116, 97, 116, 105, 111, 110, 62, 10, 32, 32, 32, 32, 32, 32, 60, 47, 114, 100, 102, 58, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 62, 10, 32, 32, 32, 60, 47, 114, 100, 102, 58, 82, 68, 70, 62, 10, 60, 47, 120, 58, 120, 109, 112, 109, 101, 116, 97, 62, 10, 240, 91, 212, 3, 0, 0, 10, 127, 73, 68, 65, 84, 104, 5, 237, 88, 91, 111, 84, 215, 25, 93, 103, 110, 103, 110, 182, 199, 6, 204, 197, 24, 39, 24, 227, 16, 18, 5, 66, 83, 4, 42, 130, 144, 168, 85, 83, 210, 70, 74, 85, 34, 66, 85, 41, 85, 212, 180, 79, 125, 232, 99, 171, 62, 20, 84, 169, 15, 81, 251, 7, 218, 190, 71, 109, 138, 130, 34, 133, 18, 32, 225, 106, 162, 38, 33, 142, 12, 118, 77, 76, 32, 181, 185, 4, 99, 123, 108, 207, 229, 204, 153, 233, 90, 251, 204, 57, 30, 12, 38, 78, 99, 75, 41, 242, 150, 246, 204, 153, 125, 89, 223, 183, 190, 219, 222, 103, 172, 63, 156, 24, 172, 224, 62, 104, 161, 251, 128, 131, 161, 176, 64, 228, 235, 230, 201, 5, 143, 44, 120, 100, 158, 44, 176, 16, 90, 243, 100, 216, 255, 25, 246, 190, 241, 72, 100, 182, 38, 176, 184, 80, 189, 182, 233, 74, 48, 23, 215, 2, 31, 215, 255, 246, 101, 124, 25, 252, 47, 36, 226, 19, 112, 136, 170, 238, 41, 110, 145, 84, 5, 33, 78, 70, 217, 195, 148, 92, 246, 165, 127, 137, 111, 31, 187, 84, 197, 46, 7, 166, 34, 54, 113, 98, 194, 102, 159, 13, 246, 61, 137, 72, 144, 75, 33, 5, 246, 134, 112, 5, 109, 209, 50, 210, 17, 79, 92, 177, 108, 225, 86, 41, 132, 155, 78, 8, 19, 156, 143, 83, 178, 132, 243, 113, 86, 77, 107, 101, 24, 97, 215, 133, 42, 88, 30, 43, 35, 67, 236, 40, 39, 52, 62, 74, 220, 171, 78, 24, 19, 100, 145, 224, 152, 116, 185, 23, 246, 140, 68, 36, 40, 111, 64, 42, 216, 84, 231, 160, 53, 81, 66, 130, 130, 52, 174, 38, 208, 18, 201, 140, 147, 204, 192, 100, 4, 23, 114, 81, 20, 57, 104, 207, 194, 130, 82, 42, 71, 236, 134, 72, 5, 79, 164, 28, 172, 136, 151, 144, 12, 151, 141, 245, 133, 173, 38, 3, 102, 75, 97, 244, 79, 68, 113, 158, 248, 218, 19, 169, 98, 235, 121, 122, 187, 43, 145, 16, 213, 156, 164, 146, 43, 104, 165, 205, 153, 60, 26, 233, 9, 1, 151, 43, 150, 249, 54, 32, 68, 179, 216, 51, 49, 23, 143, 179, 139, 232, 169, 145, 56, 70, 74, 150, 241, 206, 76, 225, 32, 37, 68, 98, 117, 220, 197, 55, 26, 10, 198, 195, 6, 155, 170, 58, 53, 155, 132, 221, 16, 229, 154, 140, 139, 229, 118, 4, 167, 70, 109, 26, 214, 50, 161, 44, 35, 78, 111, 190, 129, 131, 113, 13, 228, 184, 97, 37, 73, 236, 88, 148, 67, 134, 36, 10, 252, 237, 146, 132, 154, 4, 152, 206, 103, 1, 202, 43, 14, 123, 179, 237, 98, 39, 215, 55, 210, 202, 242, 140, 183, 90, 59, 166, 154, 135, 13, 172, 77, 184, 248, 86, 83, 14, 73, 122, 216, 199, 22, 86, 128, 93, 221, 236, 99, 175, 76, 150, 240, 84, 83, 158, 6, 170, 64, 249, 52, 19, 118, 32, 73, 11, 164, 132, 242, 97, 75, 99, 30, 49, 110, 84, 46, 40, 169, 37, 164, 92, 46, 223, 214, 181, 222, 23, 46, 133, 234, 169, 216, 102, 90, 89, 77, 138, 213, 54, 31, 91, 68, 31, 111, 200, 155, 125, 50, 128, 143, 141, 74, 229, 54, 236, 10, 127, 7, 216, 174, 133, 69, 52, 212, 86, 98, 11, 119, 58, 182, 228, 220, 225, 17, 49, 222, 84, 95, 68, 29, 149, 242, 5, 9, 84, 61, 22, 139, 33, 145, 72, 32, 153, 76, 34, 30, 183, 205, 152, 198, 13, 16, 53, 21, 233, 102, 198, 123, 59, 187, 242, 107, 58, 184, 146, 248, 97, 230, 68, 146, 100, 100, 109, 145, 80, 243, 148, 182, 2, 236, 68, 60, 142, 72, 36, 130, 10, 13, 167, 166, 117, 69, 146, 105, 97, 248, 174, 79, 58, 38, 52, 21, 254, 181, 45, 200, 17, 97, 22, 184, 79, 33, 181, 130, 27, 28, 134, 146, 44, 226, 11, 17, 240, 208, 208, 16, 6, 6, 46, 33, 159, 207, 99, 205, 154, 118, 180, 181, 181, 193, 113, 156, 96, 141, 160, 133, 211, 194, 248, 239, 203, 81, 145, 26, 73, 202, 131, 20, 61, 188, 212, 46, 153, 60, 211, 58, 53, 225, 135, 195, 97, 227, 141, 15, 207, 157, 195, 224, 224, 32, 26, 51, 25, 116, 118, 118, 34, 195, 239, 98, 177, 72, 61, 188, 213, 162, 181, 134, 134, 248, 55, 177, 75, 212, 79, 165, 217, 151, 113, 155, 209, 180, 240, 65, 146, 136, 90, 116, 51, 87, 232, 172, 208, 137, 17, 10, 133, 112, 228, 200, 81, 124, 115, 203, 86, 236, 222, 179, 7, 99, 217, 49, 156, 56, 121, 18, 199, 222, 121, 135, 150, 211, 41, 226, 53, 137, 19, 176, 188, 105, 19, 217, 179, 167, 71, 78, 158, 206, 208, 19, 9, 134, 173, 138, 134, 111, 36, 97, 75, 217, 127, 28, 56, 128, 203, 151, 47, 163, 175, 175, 15, 207, 255, 104, 55, 126, 250, 242, 203, 232, 191, 120, 209, 68, 129, 66, 90, 235, 93, 122, 177, 142, 57, 187, 138, 134, 154, 158, 135, 1, 17, 41, 174, 122, 189, 136, 21, 72, 10, 104, 99, 153, 131, 49, 59, 134, 222, 222, 94, 252, 228, 165, 151, 140, 182, 191, 223, 191, 15, 63, 222, 187, 23, 123, 95, 124, 17, 7, 15, 30, 196, 133, 222, 62, 134, 89, 220, 88, 84, 238, 80, 164, 69, 105, 249, 24, 141, 81, 141, 58, 13, 27, 204, 4, 199, 195, 28, 247, 155, 188, 97, 219, 54, 222, 62, 114, 4, 227, 217, 113, 236, 165, 145, 126, 254, 202, 43, 248, 254, 174, 239, 161, 235, 236, 123, 216, 183, 111, 63, 70, 70, 70, 16, 141, 70, 141, 231, 180, 79, 10, 47, 165, 142, 106, 83, 72, 213, 48, 150, 32, 77, 165, 89, 203, 19, 236, 34, 165, 85, 114, 169, 172, 113, 250, 204, 25, 14, 144, 100, 166, 1, 103, 206, 116, 225, 252, 249, 243, 248, 148, 214, 251, 219, 107, 175, 161, 187, 187, 219, 204, 9, 195, 71, 214, 179, 122, 173, 32, 77, 203, 56, 126, 243, 67, 42, 151, 203, 225, 173, 183, 14, 97, 224, 211, 75, 184, 56, 48, 128, 30, 98, 159, 237, 234, 194, 67, 107, 59, 112, 152, 4, 123, 122, 122, 188, 124, 145, 85, 184, 95, 152, 242, 184, 110, 20, 181, 248, 65, 142, 72, 121, 255, 74, 160, 128, 210, 50, 159, 72, 54, 155, 53, 242, 23, 47, 89, 130, 3, 111, 188, 129, 147, 199, 223, 69, 166, 177, 201, 156, 192, 202, 17, 145, 245, 181, 148, 178, 138, 95, 37, 182, 239, 110, 9, 20, 162, 138, 129, 135, 109, 224, 12, 190, 194, 74, 24, 127, 254, 203, 95, 241, 206, 177, 99, 36, 115, 201, 76, 10, 95, 45, 75, 79, 5, 141, 64, 132, 54, 167, 191, 136, 40, 239, 124, 227, 248, 178, 106, 215, 122, 207, 85, 111, 40, 201, 59, 58, 58, 204, 88, 58, 157, 70, 71, 123, 59, 98, 12, 165, 100, 42, 101, 198, 90, 91, 91, 77, 14, 201, 194, 106, 82, 56, 199, 10, 83, 168, 230, 129, 25, 228, 135, 78, 229, 172, 198, 85, 173, 170, 182, 148, 1, 84, 5, 215, 210, 250, 106, 169, 84, 26, 171, 90, 90, 140, 55, 124, 5, 219, 218, 86, 5, 97, 101, 192, 185, 78, 162, 60, 105, 102, 155, 249, 8, 60, 162, 18, 167, 131, 80, 214, 180, 173, 178, 177, 156, 60, 226, 186, 172, 223, 91, 182, 96, 215, 51, 207, 224, 224, 155, 111, 6, 59, 7, 175, 94, 195, 158, 23, 118, 99, 227, 134, 13, 198, 162, 126, 101, 209, 130, 155, 197, 176, 57, 184, 252, 235, 138, 132, 170, 194, 140, 145, 200, 24, 239, 80, 169, 184, 110, 10, 94, 216, 42, 254, 159, 251, 193, 115, 120, 245, 143, 127, 194, 71, 31, 127, 28, 224, 235, 225, 183, 191, 249, 53, 218, 105, 184, 160, 114, 17, 72, 4, 101, 12, 37, 187, 188, 226, 55, 67, 68, 130, 100, 49, 9, 210, 221, 41, 105, 235, 224, 211, 38, 18, 43, 149, 76, 25, 220, 191, 239, 119, 216, 186, 117, 11, 78, 159, 62, 109, 200, 109, 219, 182, 13, 207, 238, 218, 133, 52, 61, 227, 112, 141, 36, 200, 189, 10, 159, 203, 249, 176, 193, 19, 174, 223, 52, 167, 80, 184, 194, 210, 185, 140, 231, 140, 154, 95, 177, 86, 175, 126, 16, 199, 143, 29, 197, 223, 95, 127, 29, 253, 253, 253, 104, 104, 200, 96, 199, 142, 237, 216, 177, 125, 187, 89, 35, 99, 74, 151, 106, 154, 220, 97, 40, 97, 89, 254, 63, 141, 114, 247, 4, 149, 120, 44, 85, 194, 38, 222, 175, 116, 24, 138, 189, 154, 194, 70, 33, 38, 176, 241, 241, 113, 227, 214, 58, 134, 153, 198, 69, 84, 227, 202, 49, 155, 85, 105, 96, 50, 138, 163, 183, 108, 83, 1, 53, 239, 147, 9, 20, 33, 230, 119, 23, 231, 204, 61, 170, 246, 192, 213, 97, 43, 44, 37, 191, 100, 37, 147, 9, 122, 186, 100, 242, 207, 236, 165, 30, 82, 71, 114, 222, 254, 60, 129, 27, 52, 184, 114, 218, 199, 15, 114, 68, 151, 243, 56, 39, 122, 121, 211, 28, 102, 104, 168, 132, 106, 147, 154, 128, 36, 68, 73, 169, 83, 61, 197, 174, 231, 90, 18, 186, 206, 140, 17, 252, 253, 177, 152, 87, 81, 170, 5, 32, 20, 10, 7, 57, 20, 98, 17, 214, 161, 123, 142, 107, 132, 173, 82, 172, 111, 225, 23, 10, 188, 126, 144, 184, 240, 21, 110, 133, 124, 49, 32, 33, 29, 56, 101, 116, 186, 194, 91, 246, 16, 195, 179, 150, 132, 230, 3, 34, 230, 7, 137, 168, 218, 188, 199, 155, 166, 226, 208, 39, 195, 33, 35, 76, 2, 229, 102, 117, 207, 62, 158, 187, 69, 66, 9, 126, 134, 158, 24, 231, 148, 121, 217, 178, 227, 36, 16, 134, 235, 120, 10, 69, 99, 54, 172, 72, 140, 198, 42, 99, 128, 161, 247, 193, 104, 156, 152, 12, 233, 170, 193, 44, 30, 140, 34, 34, 108, 115, 0, 50, 105, 141, 39, 40, 92, 100, 109, 30, 164, 55, 11, 97, 252, 43, 27, 53, 175, 10, 210, 183, 182, 5, 201, 174, 65, 41, 172, 27, 230, 80, 49, 132, 227, 195, 9, 108, 229, 197, 49, 197, 115, 69, 5, 192, 247, 142, 71, 64, 196, 104, 5, 90, 84, 150, 184, 81, 136, 224, 236, 72, 204, 184, 59, 26, 141, 240, 4, 46, 227, 218, 133, 115, 232, 57, 113, 8, 35, 215, 62, 131, 157, 76, 163, 229, 161, 199, 208, 249, 196, 118, 196, 23, 45, 69, 172, 228, 160, 123, 60, 204, 251, 88, 2, 27, 235, 167, 174, 242, 174, 64, 165, 4, 155, 60, 160, 88, 146, 215, 84, 40, 174, 147, 252, 241, 91, 113, 207, 192, 83, 203, 204, 90, 125, 220, 70, 68, 3, 10, 49, 157, 240, 159, 21, 66, 248, 39, 99, 113, 67, 93, 17, 203, 153, 156, 178, 186, 26, 49, 140, 44, 17, 203, 210, 197, 202, 137, 158, 137, 8, 28, 43, 204, 53, 101, 44, 29, 189, 130, 236, 133, 46, 188, 250, 203, 95, 152, 245, 181, 123, 190, 253, 228, 78, 188, 240, 179, 95, 97, 164, 229, 81, 84, 162, 49, 244, 79, 150, 112, 163, 152, 192, 35, 105, 190, 92, 241, 106, 164, 151, 43, 113, 145, 12, 53, 221, 48, 114, 46, 101, 240, 229, 234, 35, 118, 93, 115, 228, 109, 141, 251, 107, 180, 78, 237, 14, 34, 26, 212, 66, 145, 81, 21, 59, 194, 112, 105, 102, 204, 46, 227, 101, 82, 175, 185, 242, 128, 94, 112, 134, 73, 98, 136, 185, 52, 201, 80, 178, 105, 178, 100, 185, 136, 150, 129, 119, 209, 60, 214, 141, 179, 61, 231, 5, 131, 117, 235, 30, 134, 195, 3, 79, 218, 185, 86, 4, 135, 142, 30, 193, 15, 55, 52, 97, 221, 163, 59, 209, 215, 250, 36, 172, 84, 19, 38, 152, 123, 199, 25, 202, 153, 113, 201, 112, 205, 251, 143, 226, 95, 33, 62, 66, 25, 131, 148, 49, 74, 50, 113, 122, 70, 36, 100, 206, 233, 36, 36, 235, 174, 68, 52, 33, 50, 218, 168, 126, 147, 73, 124, 141, 160, 106, 2, 209, 233, 172, 42, 167, 185, 20, 99, 215, 9, 69, 208, 60, 248, 1, 50, 215, 78, 161, 144, 94, 129, 229, 171, 58, 241, 244, 230, 13, 56, 220, 245, 161, 217, 227, 127, 236, 254, 206, 118, 212, 47, 239, 68, 100, 116, 0, 15, 20, 243, 232, 95, 247, 60, 92, 230, 77, 170, 82, 54, 111, 164, 189, 186, 49, 231, 124, 25, 222, 183, 145, 161, 60, 50, 114, 125, 164, 59, 191, 131, 242, 123, 231, 212, 212, 136, 148, 87, 87, 171, 181, 136, 138, 171, 72, 169, 119, 244, 29, 68, 98, 236, 19, 184, 225, 4, 9, 86, 80, 96, 233, 28, 186, 121, 11, 19, 147, 121, 94, 211, 67, 104, 72, 37, 177, 164, 177, 30, 17, 94, 217, 157, 10, 171, 98, 113, 24, 67, 171, 159, 197, 224, 178, 71, 16, 45, 121, 94, 187, 187, 12, 79, 166, 39, 125, 230, 207, 25, 61, 82, 187, 69, 202, 171, 251, 109, 234, 153, 162, 153, 149, 101, 42, 87, 72, 44, 65, 250, 243, 247, 81, 78, 196, 249, 210, 68, 111, 49, 220, 30, 88, 218, 4, 75, 89, 171, 192, 87, 5, 227, 163, 222, 203, 67, 224, 217, 227, 230, 188, 185, 42, 168, 48, 167, 112, 111, 127, 246, 229, 222, 235, 123, 86, 68, 238, 5, 160, 185, 16, 67, 99, 112, 197, 70, 68, 156, 9, 164, 135, 187, 249, 102, 71, 79, 69, 147, 176, 226, 236, 97, 94, 193, 93, 158, 65, 185, 44, 42, 197, 73, 83, 210, 221, 112, 28, 195, 43, 159, 198, 245, 197, 29, 8, 115, 174, 150, 192, 23, 201, 154, 105, 254, 171, 19, 161, 181, 45, 150, 91, 39, 98, 99, 160, 125, 39, 226, 139, 215, 99, 189, 157, 197, 170, 230, 20, 172, 168, 206, 18, 30, 131, 156, 47, 51, 39, 134, 254, 115, 21, 159, 176, 236, 78, 102, 90, 145, 77, 122, 222, 178, 104, 4, 227, 177, 153, 52, 156, 229, 248, 87, 39, 34, 65, 36, 19, 42, 187, 60, 87, 44, 92, 175, 231, 237, 53, 227, 32, 145, 206, 161, 160, 43, 24, 237, 29, 226, 225, 102, 243, 128, 204, 172, 89, 140, 65, 150, 116, 133, 91, 164, 236, 120, 241, 163, 176, 155, 131, 54, 55, 68, 164, 136, 81, 136, 185, 225, 22, 145, 203, 59, 8, 241, 79, 130, 168, 41, 214, 94, 5, 12, 211, 242, 110, 145, 127, 194, 241, 223, 67, 29, 112, 21, 173, 159, 27, 14, 198, 12, 115, 71, 132, 112, 170, 94, 17, 86, 233, 171, 78, 4, 151, 39, 99, 60, 32, 89, 223, 89, 193, 164, 115, 137, 149, 170, 123, 60, 198, 243, 196, 251, 211, 192, 72, 159, 195, 143, 57, 38, 226, 157, 59, 250, 79, 248, 240, 112, 220, 88, 94, 175, 7, 50, 188, 222, 31, 212, 116, 46, 204, 69, 114, 123, 104, 83, 159, 115, 74, 196, 135, 213, 75, 154, 94, 170, 164, 176, 14, 50, 61, 248, 132, 230, 131, 132, 68, 204, 11, 145, 170, 238, 250, 242, 210, 64, 46, 97, 155, 47, 18, 194, 246, 238, 29, 122, 250, 63, 111, 11, 68, 190, 110, 14, 92, 240, 200, 130, 71, 230, 201, 2, 247, 77, 104, 253, 23, 249, 35, 174, 63, 129, 132, 9, 199, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130, 80, 75, 7, 8, 108, 239, 160, 128, 148, 13, 0, 0, 148, 13, 0, 0, 80, 75, 3, 4, 20, 0, 8, 0, 0, 0, 142, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 9, 0, 47, 114, 111, 111, 116, 47, 105, 110, 100, 101, 120, 46, 104, 116, 109, 108, 85, 84, 5, 0, 1, 172, 176, 82, 93, 60, 104, 116, 109, 108, 62, 10, 9, 60, 104, 101, 97, 100, 62, 10, 9, 9, 60, 108, 105, 110, 107, 32, 114, 101, 108, 61, 34, 115, 116, 121, 108, 101, 115, 104, 101, 101, 116, 34, 32, 104, 114, 101, 102, 61, 34, 47, 99, 115, 115, 47, 115, 116, 121, 108, 101, 46, 99, 115, 115, 34, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 47, 99, 115, 115, 34, 32, 47, 62, 10, 9, 60, 47, 104, 101, 97, 100, 62, 10, 9, 60, 98, 111, 100, 121, 62, 10, 9, 60, 100, 105, 118, 62, 60, 105, 109, 103, 32, 115, 114, 99, 61, 34, 105, 109, 97, 103, 101, 47, 108, 111, 103, 111, 46, 112, 110, 103, 34, 62, 60, 47, 100, 105, 118, 62, 10, 9, 84, 104, 105, 115, 32, 105, 115, 32, 116, 104, 101, 32, 105, 110, 100, 101, 120, 32, 102, 114, 111, 109, 32, 103, 114, 101, 115, 46, 10, 9, 60, 47, 98, 111, 100, 121, 62, 10, 60, 47, 104, 116, 109, 108, 62, 80, 75, 7, 8, 149, 169, 95, 143, 183, 0, 0, 0, 183, 0, 0, 0, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 72, 101, 13, 79, 238, 129, 54, 134, 4, 32, 0, 0, 4, 32, 0, 0, 10, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 0, 0, 0, 0, 47, 46, 68, 83, 95, 83, 116, 111, 114, 101, 85, 84, 5, 0, 1, 40, 176, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 237, 65, 69, 32, 0, 0, 47, 100, 105, 114, 49, 85, 84, 5, 0, 1, 175, 148, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 130, 50, 74, 209, 14, 0, 0, 0, 14, 0, 0, 0, 11, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 129, 32, 0, 0, 47, 100, 105, 114, 49, 47, 116, 101, 115, 116, 49, 85, 84, 5, 0, 1, 175, 148, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 237, 65, 209, 32, 0, 0, 47, 100, 105, 114, 50, 85, 84, 5, 0, 1, 175, 148, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 161, 85, 13, 79, 129, 137, 125, 58, 14, 0, 0, 0, 14, 0, 0, 0, 11, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 13, 33, 0, 0, 47, 100, 105, 114, 50, 47, 116, 101, 115, 116, 50, 85, 84, 5, 0, 1, 175, 148, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 142, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 237, 65, 93, 33, 0, 0, 47, 114, 111, 111, 116, 85, 84, 5, 0, 1, 172, 176, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 76, 101, 13, 79, 106, 0, 136, 109, 4, 24, 0, 0, 4, 24, 0, 0, 15, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 153, 33, 0, 0, 47, 114, 111, 111, 116, 47, 46, 68, 83, 95, 83, 116, 111, 114, 101, 85, 84, 5, 0, 1, 49, 176, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 132, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 237, 65, 227, 57, 0, 0, 47, 114, 111, 111, 116, 47, 99, 115, 115, 85, 84, 5, 0, 1, 152, 176, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 132, 101, 13, 79, 42, 222, 98, 234, 50, 0, 0, 0, 50, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 35, 58, 0, 0, 47, 114, 111, 111, 116, 47, 99, 115, 115, 47, 115, 116, 121, 108, 101, 46, 99, 115, 115, 85, 84, 5, 0, 1, 152, 176, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 74, 101, 13, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 0, 237, 65, 159, 58, 0, 0, 47, 114, 111, 111, 116, 47, 105, 109, 97, 103, 101, 85, 84, 5, 0, 1, 44, 176, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 36, 101, 13, 79, 108, 239, 160, 128, 148, 13, 0, 0, 148, 13, 0, 0, 20, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 225, 58, 0, 0, 47, 114, 111, 111, 116, 47, 105, 109, 97, 103, 101, 47, 108, 111, 103, 111, 46, 112, 110, 103, 85, 84, 5, 0, 1, 228, 175, 82, 93, 80, 75, 1, 2, 20, 3, 20, 0, 8, 0, 0, 0, 142, 101, 13, 79, 149, 169, 95, 143, 183, 0, 0, 0, 183, 0, 0, 0, 16, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 129, 192, 72, 0, 0, 47, 114, 111, 111, 116, 47, 105, 110, 100, 101, 120, 46, 104, 116, 109, 108, 85, 84, 5, 0, 1, 172, 176, 82, 93, 80, 75, 5, 6, 0, 0, 0, 0, 12, 0, 12, 0, 29, 3, 0, 0, 190, 73, 0, 0, 0, 0}); err != nil { panic(err) } } diff --git a/container/gtree/gtree_avltree.go b/container/gtree/gtree_avltree.go index 38203a006..eb287f873 100644 --- a/container/gtree/gtree_avltree.go +++ b/container/gtree/gtree_avltree.go @@ -80,28 +80,28 @@ func (tree *AVLTree) Sets(data map[interface{}]interface{}) { func (tree *AVLTree) Search(key interface{}) (value interface{}, found bool) { tree.mu.RLock() defer tree.mu.RUnlock() - if n := tree.doSearch(key); n != nil { - return n.Value, true + if node, found := tree.doSearch(key); found { + return node.Value, true } return nil, false } // doSearch searches the tree with given . // Second return parameter is true if key was found, otherwise false. -func (tree *AVLTree) doSearch(key interface{}) *AVLTreeNode { - n := tree.root - for n != nil { - cmp := tree.comparator(key, n.Key) +func (tree *AVLTree) doSearch(key interface{}) (node *AVLTreeNode, found bool) { + node = tree.root + for node != nil { + cmp := tree.comparator(key, node.Key) switch { case cmp == 0: - return n + return node, true case cmp < 0: - n = n.children[0] + node = node.children[0] case cmp > 0: - n = n.children[1] + node = node.children[1] } } - return nil + return nil, false } // Get searches the node in the tree by and returns its value or nil if key is not found in tree. @@ -122,8 +122,8 @@ func (tree *AVLTree) Get(key interface{}) (value interface{}) { func (tree *AVLTree) doSetWithLockCheck(key interface{}, value interface{}) interface{} { tree.mu.Lock() defer tree.mu.Unlock() - if n := tree.doSearch(key); n != nil { - return n.Value + if node, found := tree.doSearch(key); found { + return node.Value } if f, ok := value.(func() interface{}); ok { value = f() @@ -451,7 +451,8 @@ func (tree *AVLTree) IteratorAsc(f func(key, value interface{}) bool) { func (tree *AVLTree) IteratorAscFrom(key interface{}, f func(key, value interface{}) bool) { tree.mu.RLock() defer tree.mu.RUnlock() - tree.doIteratorAsc(tree.doSearch(key), f) + node, _ := tree.doSearch(key) + tree.doIteratorAsc(node, f) } func (tree *AVLTree) doIteratorAsc(node *AVLTreeNode, f func(key, value interface{}) bool) { @@ -474,7 +475,8 @@ func (tree *AVLTree) IteratorDesc(f func(key, value interface{}) bool) { func (tree *AVLTree) IteratorDescFrom(key interface{}, f func(key, value interface{}) bool) { tree.mu.RLock() defer tree.mu.RUnlock() - tree.doIteratorDesc(tree.doSearch(key), f) + node, _ := tree.doSearch(key) + tree.doIteratorDesc(node, f) } func (tree *AVLTree) doIteratorDesc(node *AVLTreeNode, f func(key, value interface{}) bool) { diff --git a/container/gtree/gtree_redblacktree.go b/container/gtree/gtree_redblacktree.go index fd9322363..17a46b71e 100644 --- a/container/gtree/gtree_redblacktree.go +++ b/container/gtree/gtree_redblacktree.go @@ -142,7 +142,7 @@ func (tree *RedBlackTree) Get(key interface{}) (value interface{}) { func (tree *RedBlackTree) doSetWithLockCheck(key interface{}, value interface{}) interface{} { tree.mu.Lock() defer tree.mu.Unlock() - if node := tree.doSearch(key); node != nil { + if node, found := tree.doSearch(key); found { return node.Value } if f, ok := value.(func() interface{}); ok { @@ -253,8 +253,8 @@ func (tree *RedBlackTree) Contains(key interface{}) bool { // doRemove removes the node from the tree by without mutex. func (tree *RedBlackTree) doRemove(key interface{}) (value interface{}) { child := (*RedBlackTreeNode)(nil) - node := tree.doSearch(key) - if node == nil { + node, found := tree.doSearch(key) + if !found { return } value = node.Value @@ -472,7 +472,8 @@ func (tree *RedBlackTree) IteratorAsc(f func(key, value interface{}) bool) { func (tree *RedBlackTree) IteratorAscFrom(key interface{}, f func(key, value interface{}) bool) { tree.mu.RLock() defer tree.mu.RUnlock() - tree.doIteratorAsc(tree.doSearch(key), f) + node, _ := tree.doSearch(key) + tree.doIteratorAsc(node, f) } func (tree *RedBlackTree) doIteratorAsc(node *RedBlackTreeNode, f func(key, value interface{}) bool) { @@ -512,7 +513,8 @@ func (tree *RedBlackTree) IteratorDesc(f func(key, value interface{}) bool) { func (tree *RedBlackTree) IteratorDescFrom(key interface{}, f func(key, value interface{}) bool) { tree.mu.RLock() defer tree.mu.RUnlock() - tree.doIteratorDesc(tree.doSearch(key), f) + node, _ := tree.doSearch(key) + tree.doIteratorDesc(node, f) } func (tree *RedBlackTree) doIteratorDesc(node *RedBlackTreeNode, f func(key, value interface{}) bool) { @@ -570,8 +572,8 @@ func (tree *RedBlackTree) Print() { func (tree *RedBlackTree) Search(key interface{}) (value interface{}, found bool) { tree.mu.RLock() defer tree.mu.RUnlock() - node := tree.doSearch(key) - if node != nil { + node, found := tree.doSearch(key) + if found { return node.Value, true } return nil, false @@ -629,20 +631,20 @@ func (tree *RedBlackTree) output(node *RedBlackTreeNode, prefix string, isTail b // doSearch searches the tree with given without mutex. // It returns the node if found or otherwise nil. -func (tree *RedBlackTree) doSearch(key interface{}) *RedBlackTreeNode { - node := tree.root +func (tree *RedBlackTree) doSearch(key interface{}) (node *RedBlackTreeNode, found bool) { + node = tree.root for node != nil { compare := tree.comparator(key, node.Key) switch { case compare == 0: - return node + return node, true case compare < 0: node = node.left case compare > 0: node = node.right } } - return nil + return node, false } func (node *RedBlackTreeNode) grandparent() *RedBlackTreeNode { diff --git a/os/gres/gres.go b/os/gres/gres.go index 4d47b187e..552bc25b6 100644 --- a/os/gres/gres.go +++ b/os/gres/gres.go @@ -20,21 +20,45 @@ func init() { ) var ( + // Default resource object. defaultResource = New() ) +// Add unpacks and adds the into the default resource object. +// The unnecessary parameter indicates the prefix +// for each file storing into current resource object. func Add(content []byte, prefix ...string) error { return defaultResource.Add(content, prefix...) } +// Load loads, unpacks and adds the data from into the default resource object. +// The unnecessary parameter indicates the prefix +// for each file storing into current resource object. func Load(path string, prefix ...string) error { return defaultResource.Load(path, prefix...) } +// Get returns the file with given path. +func Get(path string) *File { + return defaultResource.Get(path) +} + +// Contains checks whether the exists in the default resource object. +func Contains(path string) bool { + return defaultResource.Contains(path) +} + +// Scan returns the files under the given path, the parameter should be a folder type. +// +// The pattern parameter supports multiple file name patterns, +// using the ',' symbol to separate multiple patterns. +// +// It scans directory recursively if given parameter is true. func Scan(path string, pattern string, recursive ...bool) []*File { return defaultResource.Scan(path, pattern, recursive...) } +// Dump prints the files of the default resource object. func Dump() { defaultResource.Dump() } diff --git a/os/gres/gres_file.go b/os/gres/gres_file.go index bb2767c6b..55eb40ee8 100644 --- a/os/gres/gres_file.go +++ b/os/gres/gres_file.go @@ -9,6 +9,7 @@ package gres import ( "archive/zip" "bytes" + "encoding/json" "io" "os" ) @@ -46,3 +47,13 @@ func (f *File) Content() ([]byte, error) { func (f *File) FileInfo() os.FileInfo { return f.zipFile.FileInfo() } + +// MarshalJSON implements the interface MarshalJSON for json.Marshal. +func (f *File) MarshalJSON() ([]byte, error) { + info := f.FileInfo() + return json.Marshal(map[string]interface{}{ + "name": f.Name(), + "size": info.Size(), + "time": info.ModTime(), + }) +} diff --git a/os/gres/gres_func.go b/os/gres/gres_func.go index 3be8d04fa..20566f3ac 100644 --- a/os/gres/gres_func.go +++ b/os/gres/gres_func.go @@ -16,6 +16,9 @@ import ( "github.com/gogf/gf/os/gfile" ) +// Pack packs the path specified by into bytes. +// The unnecessary parameter indicates the prefix for each file +// packed into the result bytes. func Pack(srcPath string, keyPrefix ...string) ([]byte, error) { buffer := bytes.NewBuffer(nil) err := gcompress.ZipPathWriter(srcPath, buffer, keyPrefix...) @@ -25,6 +28,9 @@ func Pack(srcPath string, keyPrefix ...string) ([]byte, error) { return buffer.Bytes(), nil } +// PackToFile packs the path specified by to target file . +// The unnecessary parameter indicates the prefix for each file +// packed into the result bytes. func PackToFile(srcPath, dstPath string, keyPrefix ...string) error { data, err := Pack(srcPath, keyPrefix...) if err != nil { @@ -33,6 +39,11 @@ func PackToFile(srcPath, dstPath string, keyPrefix ...string) error { return gfile.PutBytes(dstPath, data) } +// PackToGoFile packs the path specified by to target go file +// with given package name . +// +// The unnecessary parameter indicates the prefix for each file +// packed into the result bytes. func PackToGoFile(srcPath, goFilePath, pkgName string, keyPrefix ...string) error { data, err := Pack(srcPath, keyPrefix...) if err != nil { @@ -43,6 +54,7 @@ func PackToGoFile(srcPath, goFilePath, pkgName string, keyPrefix ...string) erro ) } +// Unpack unpacks the content specified by to []*File. func Unpack(path string) ([]*File, error) { realPath, err := gfile.Search(path) if err != nil { @@ -51,6 +63,7 @@ func Unpack(path string) ([]*File, error) { return UnpackContent(gfile.GetBytes(realPath)) } +// UnpackContent unpacks the content to []*File. func UnpackContent(content []byte) ([]*File, error) { reader, err := zip.NewReader(bytes.NewReader(content), int64(len(content))) if err != nil { diff --git a/os/gres/gres_resource.go b/os/gres/gres_resource.go index 05470e0d7..211569eb6 100644 --- a/os/gres/gres_resource.go +++ b/os/gres/gres_resource.go @@ -23,6 +23,7 @@ const ( gDEFAULT_TREE_M = 100 ) +// New creates and returns a new resource object. func New() *Resource { return &Resource{ tree: gtree.NewBTree(gDEFAULT_TREE_M, func(v1, v2 interface{}) int { @@ -31,6 +32,9 @@ func New() *Resource { } } +// Add unpacks and adds the into current resource object. +// The unnecessary parameter indicates the prefix +// for each file storing into current resource object. func (r *Resource) Add(content []byte, prefix ...string) error { files, err := UnpackContent(content) if err != nil { @@ -46,6 +50,9 @@ func (r *Resource) Add(content []byte, prefix ...string) error { return nil } +// Load loads, unpacks and adds the data from into current resource object. +// The unnecessary parameter indicates the prefix +// for each file storing into current resource object. func (r *Resource) Load(path string, prefix ...string) error { realPath, err := gfile.Search(path) if err != nil { @@ -54,6 +61,7 @@ func (r *Resource) Load(path string, prefix ...string) error { return r.Add(gfile.GetBytes(realPath), prefix...) } +// Get returns the file with given path. func (r *Resource) Get(path string) *File { result := r.tree.Get(path) if result != nil { @@ -62,6 +70,17 @@ func (r *Resource) Get(path string) *File { return nil } +// Contains checks whether the exists in current resource object. +func (r *Resource) Contains(path string) bool { + return r.Get(path) != nil +} + +// Scan returns the files under the given path, the parameter should be a folder type. +// +// The pattern parameter supports multiple file name patterns, +// using the ',' symbol to separate multiple patterns. +// +// It scans directory recursively if given parameter is true. func (r *Resource) Scan(path string, pattern string, recursive ...bool) []*File { if path != "/" { path = strings.TrimRight(path, "/\\") @@ -80,7 +99,7 @@ func (r *Resource) Scan(path string, pattern string, recursive ...bool) []*File } if len(recursive) == 0 || !recursive[0] { if strings.IndexByte(name[length:], '/') != -1 { - return false + return true } } for _, p := range patterns { @@ -94,10 +113,11 @@ func (r *Resource) Scan(path string, pattern string, recursive ...bool) []*File return files } +// Dump prints the files of current resource object. func (r *Resource) Dump() { r.tree.Iterator(func(key, value interface{}) bool { fmt.Printf("%7s %s\n", gfile.FormatSize(value.(*File).FileInfo().Size()), key) return true }) - fmt.Printf("TOTAL %d FILES", r.tree.Size()) + fmt.Printf("TOTAL FILES: %d\n", r.tree.Size()) } diff --git a/os/gres/gres_test.go b/os/gres/gres_test.go index 108864d2b..aad5db6e2 100644 --- a/os/gres/gres_test.go +++ b/os/gres/gres_test.go @@ -7,11 +7,12 @@ package gres_test import ( + "testing" + "github.com/gogf/gf/debug/gdebug" "github.com/gogf/gf/os/gfile" "github.com/gogf/gf/os/gres" "github.com/gogf/gf/test/gtest" - "testing" ) func Test_Export(t *testing.T) { @@ -19,7 +20,7 @@ func Test_Export(t *testing.T) { srcPath := gfile.Dir(gdebug.CallerFilePath()) + "/testdata/files" goFilePath := gfile.Dir(gdebug.CallerFilePath()) + "/testdata/testdata.go" pkgName := "testdata" - err := gres.Export(srcPath, goFilePath, pkgName) + err := gres.PackToGoFile(srcPath, goFilePath, pkgName) gtest.Assert(err, nil) }) } diff --git a/os/gres/testdata/files/root/css/style.css b/os/gres/testdata/files/root/css/style.css new file mode 100644 index 000000000..9b27f1a86 --- /dev/null +++ b/os/gres/testdata/files/root/css/style.css @@ -0,0 +1,4 @@ +* { + font-size: 32px; + text-align: center; +} \ No newline at end of file diff --git a/os/gres/testdata/files/root/image/logo.png b/os/gres/testdata/files/root/image/logo.png new file mode 100644 index 000000000..2d3c20ba6 Binary files /dev/null and b/os/gres/testdata/files/root/image/logo.png differ diff --git a/os/gres/testdata/files/root/index.html b/os/gres/testdata/files/root/index.html new file mode 100644 index 000000000..0a715cc18 --- /dev/null +++ b/os/gres/testdata/files/root/index.html @@ -0,0 +1,9 @@ + + + + + +
+ This is the index from gres. + + \ No newline at end of file diff --git a/os/gres/testdata/testdata.go b/os/gres/testdata/testdata.go index 002d6f20d..e849e4ed3 100644 --- a/os/gres/testdata/testdata.go +++ b/os/gres/testdata/testdata.go @@ -3,7 +3,7 @@ package testdata import "github.com/gogf/gf/os/gres" func init() { - if err := gres.Add([]byte{80,75,3,4,20,0,8,0,0,0,147,110,10,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,47,100,105,114,49,85,84,5,0,1,38,204,78,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,147,110,10,79,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,0,47,100,105,114,49,47,116,101,115,116,49,85,84,5,0,1,38,204,78,93,116,101,115,116,49,32,99,111,110,116,101,110,116,10,80,75,7,8,130,50,74,209,14,0,0,0,14,0,0,0,80,75,3,4,20,0,8,0,0,0,154,110,10,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,47,100,105,114,50,85,84,5,0,1,53,204,78,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,154,110,10,79,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,0,47,100,105,114,50,47,116,101,115,116,50,85,84,5,0,1,53,204,78,93,116,101,115,116,50,32,99,111,110,116,101,110,116,10,80,75,7,8,129,137,125,58,14,0,0,0,14,0,0,0,80,75,1,2,20,3,20,0,8,0,0,0,147,110,10,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,0,0,0,0,0,0,16,0,255,65,0,0,0,0,47,100,105,114,49,85,84,5,0,1,38,204,78,93,80,75,1,2,20,3,20,0,8,0,0,0,147,110,10,79,130,50,74,209,14,0,0,0,14,0,0,0,11,0,9,0,0,0,0,0,0,0,0,0,182,129,60,0,0,0,47,100,105,114,49,47,116,101,115,116,49,85,84,5,0,1,38,204,78,93,80,75,1,2,20,3,20,0,8,0,0,0,154,110,10,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,0,0,0,0,0,0,16,0,255,65,140,0,0,0,47,100,105,114,50,85,84,5,0,1,53,204,78,93,80,75,1,2,20,3,20,0,8,0,0,0,154,110,10,79,129,137,125,58,14,0,0,0,14,0,0,0,11,0,9,0,0,0,0,0,0,0,0,0,182,129,200,0,0,0,47,100,105,114,50,47,116,101,115,116,50,85,84,5,0,1,53,204,78,93,80,75,5,6,0,0,0,0,4,0,4,0,252,0,0,0,24,1,0,0,0,0}); err != nil { + if err := gres.Add([]byte{80,75,3,4,20,0,8,0,0,0,72,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,10,0,9,0,47,46,68,83,95,83,116,111,114,101,85,84,5,0,1,40,176,82,93,0,0,0,1,66,117,100,49,0,0,24,0,0,0,8,0,0,0,24,0,0,0,16,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,1,0,0,16,0,98,119,115,112,98,108,111,98,0,0,0,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,0,0,0,1,0,0,0,64,0,0,0,1,0,0,0,128,0,0,0,1,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,1,0,0,4,0,0,0,0,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,32,0,0,0,0,1,0,0,64,0,0,0,0,1,0,0,128,0,0,0,0,1,0,1,0,0,0,0,0,1,0,2,0,0,0,0,0,1,0,4,0,0,0,0,0,1,0,8,0,0,0,0,0,1,0,16,0,0,0,0,0,1,0,32,0,0,0,0,0,1,0,64,0,0,0,0,0,1,0,128,0,0,0,0,0,1,1,0,0,0,0,0,0,1,2,0,0,0,0,0,0,1,4,0,0,0,0,0,0,1,8,0,0,0,0,0,0,1,16,0,0,0,0,0,0,1,32,0,0,0,0,0,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,114,0,111,0,111,0,116,98,119,115,112,98,108,111,98,0,0,0,201,98,112,108,105,115,116,48,48,215,1,2,3,4,5,6,7,8,8,10,8,10,13,10,93,83,104,111,119,83,116,97,116,117,115,66,97,114,91,83,104,111,119,80,97,116,104,98,97,114,91,83,104,111,119,84,111,111,108,98,97,114,91,83,104,111,119,84,97,98,86,105,101,119,95,16,20,67,111,110,116,97,105,110,101,114,83,104,111,119,83,105,100,101,98,97,114,92,87,105,110,100,111,119,66,111,117,110,100,115,91,83,104,111,119,83,105,100,101,98,97,114,8,8,9,8,9,95,16,24,123,123,49,52,49,44,32,53,51,125,44,32,123,49,49,55,51,44,32,56,50,51,125,125,9,8,23,37,49,61,73,96,109,121,122,123,124,125,126,153,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,0,0,0,4,0,114,0,111,0,111,0,116,108,115,118,67,98,108,111,98,0,0,2,151,98,112,108,105,115,116,48,48,216,1,2,3,4,5,6,7,8,9,10,11,25,73,74,10,76,88,105,99,111,110,83,105,122,101,95,16,15,115,104,111,119,73,99,111,110,80,114,101,118,105,101,119,87,99,111,108,117,109,110,115,95,16,17,99,97,108,99,117,108,97,116,101,65,108,108,83,105,122,101,115,88,116,101,120,116,83,105,122,101,90,115,111,114,116,67,111,108,117,109,110,95,16,16,117,115,101,82,101,108,97,116,105,118,101,68,97,116,101,115,95,16,18,118,105,101,119,79,112,116,105,111,110,115,86,101,114,115,105,111,110,35,64,48,0,0,0,0,0,0,9,171,12,21,29,34,38,43,48,53,58,63,68,212,13,14,15,16,10,18,10,20,87,118,105,115,105,98,108,101,85,119,105,100,116,104,89,97,115,99,101,110,100,105,110,103,90,105,100,101,110,116,105,102,105,101,114,9,17,2,67,9,84,110,97,109,101,212,22,23,24,16,25,26,25,28,87,118,105,115,105,98,108,101,85,119,105,100,116,104,89,97,115,99,101,110,100,105,110,103,8,16,35,8,88,117,98,105,113,117,105,116,121,212,16,14,15,13,30,31,25,10,92,100,97,116,101,77,111,100,105,102,105,101,100,16,181,8,9,212,16,14,15,13,35,31,25,25,91,100,97,116,101,67,114,101,97,116,101,100,8,8,212,13,14,15,16,10,40,25,42,9,16,97,8,84,115,105,122,101,212,13,14,15,16,10,45,10,47,9,16,115,9,84,107,105,110,100,212,13,14,15,16,25,50,10,52,8,16,100,9,85,108,97,98,101,108,212,13,14,15,16,25,55,10,57,8,16,75,9,87,118,101,114,115,105,111,110,212,13,14,15,16,25,60,10,62,8,17,1,44,9,88,99,111,109,109,101,110,116,115,212,16,14,15,13,64,65,25,25,94,100,97,116,101,76,97,115,116,79,112,101,110,101,100,16,200,8,8,212,16,23,24,22,69,31,25,25,89,100,97,116,101,65,100,100,101,100,8,8,8,35,64,40,0,0,0,0,0,0,84,110,97,109,101,9,16,1,0,8,0,25,0,34,0,52,0,60,0,80,0,89,0,100,0,119,0,140,0,149,0,150,0,162,0,171,0,179,0,185,0,195,0,206,0,207,0,210,0,211,0,216,0,225,0,233,0,239,0,249,0,250,0,252,0,253,1,6,1,15,1,28,1,30,1,31,1,32,1,41,1,53,1,54,1,55,1,64,1,65,1,67,1,68,1,73,1,82,1,83,1,85,1,86,1,91,1,100,1,101,1,103,1,104,1,110,1,119,1,120,1,122,1,123,1,131,1,140,1,141,1,144,1,145,1,154,1,163,1,178,1,180,1,181,1,182,1,191,1,201,1,202,1,203,1,204,1,213,1,218,1,219,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,221,0,0,0,4,0,114,0,111,0,111,0,116,108,115,118,112,98,108,111,98,0,0,2,94,98,112,108,105,115,116,48,48,216,1,2,3,4,5,6,7,8,9,10,11,29,70,71,10,68,88,105,99,111,110,83,105,122,101,95,16,15,115,104,111,119,73,99,111,110,80,114,101,118,105,101,119,87,99,111,108,117,109,110,115,95,16,17,99,97,108,99,117,108,97,116,101,65,108,108,83,105,122,101,115,88,116,101,120,116,83,105,122,101,90,115,111,114,116,67,111,108,117,109,110,95,16,16,117,115,101,82,101,108,97,116,105,118,101,68,97,116,101,115,95,16,18,118,105,101,119,79,112,116,105,111,110,115,86,101,114,115,105,111,110,35,64,48,0,0,0,0,0,0,9,217,12,13,14,15,16,17,18,19,20,21,30,35,40,45,50,55,60,65,88,99,111,109,109,101,110,116,115,94,100,97,116,101,76,97,115,116,79,112,101,110,101,100,91,100,97,116,101,67,114,101,97,116,101,100,84,115,105,122,101,85,108,97,98,101,108,84,107,105,110,100,87,118,101,114,115,105,111,110,84,110,97,109,101,92,100,97,116,101,77,111,100,105,102,105,101,100,212,22,23,24,25,26,27,10,29,85,105,110,100,101,120,85,119,105,100,116,104,89,97,115,99,101,110,100,105,110,103,87,118,105,115,105,98,108,101,16,7,17,1,44,9,8,212,25,23,24,22,29,32,29,34,8,16,200,8,16,8,212,25,23,24,22,29,37,29,39,8,16,181,8,16,2,212,22,23,24,25,41,42,29,10,16,3,16,97,8,9,212,22,23,24,25,46,47,10,29,16,5,16,100,9,8,212,22,23,24,25,51,52,10,10,16,4,16,115,9,9,212,22,23,24,25,56,57,10,29,16,6,16,75,9,8,212,22,23,24,25,61,62,10,10,16,0,17,2,67,9,9,212,25,23,24,22,10,37,29,68,9,8,16,1,8,35,64,40,0,0,0,0,0,0,84,110,97,109,101,9,0,8,0,25,0,34,0,52,0,60,0,80,0,89,0,100,0,119,0,140,0,149,0,150,0,169,0,178,0,193,0,205,0,210,0,216,0,221,0,229,0,234,0,247,1,0,1,6,1,12,1,22,1,30,1,32,1,35,1,36,1,37,1,46,1,47,1,49,1,50,1,52,1,61,1,62,1,64,1,65,1,67,1,76,1,78,1,80,1,81,1,82,1,91,1,93,1,95,1,96,1,97,1,106,1,108,1,110,1,111,1,112,1,121,1,123,1,125,1,126,1,127,1,136,1,138,1,141,1,142,1,143,1,152,1,153,1,154,1,156,1,157,1,166,1,171,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,172,0,0,0,4,0,114,0,111,0,111,0,116,118,83,114,110,108,111,110,103,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,24,11,0,0,0,69,0,0,16,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,68,83,68,66,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,32,0,0,0,96,0,0,0,0,0,0,0,1,0,0,0,128,0,0,0,1,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,1,0,0,4,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,0,1,0,0,32,0,0,0,0,1,0,0,64,0,0,0,0,1,0,0,128,0,0,0,0,1,0,1,0,0,0,0,0,1,0,2,0,0,0,0,0,1,0,4,0,0,0,0,0,1,0,8,0,0,0,0,0,1,0,16,0,0,0,0,0,1,0,32,0,0,0,0,0,1,0,64,0,0,0,0,0,1,0,128,0,0,0,0,0,1,1,0,0,0,0,0,0,1,2,0,0,0,0,0,0,1,4,0,0,0,0,0,0,1,8,0,0,0,0,0,0,1,16,0,0,0,0,0,0,1,32,0,0,0,0,0,0,1,64,0,0,0,0,0,0,0,42,29,10,16,3,16,97,8,9,212,22,23,24,25,46,47,10,29,16,5,16,100,9,8,212,22,23,24,25,51,52,10,10,16,4,16,115,9,9,212,22,23,24,25,56,57,10,29,16,6,16,75,9,8,212,22,23,24,25,61,62,10,10,16,0,17,2,67,9,9,212,25,23,24,22,10,37,29,68,9,8,16,1,8,35,64,40,0,0,0,0,0,0,84,110,97,109,101,9,0,8,0,25,0,34,0,52,0,60,0,80,0,89,0,100,0,119,0,140,0,149,0,150,0,169,0,178,0,193,0,205,0,210,0,216,0,221,0,229,0,234,0,247,1,0,1,6,1,12,1,22,1,30,1,32,1,35,1,36,1,37,1,46,1,47,1,49,1,50,1,52,1,61,1,62,1,64,1,65,1,67,1,76,1,78,1,80,1,81,1,82,1,91,1,93,1,95,1,96,1,97,1,106,1,108,1,110,1,111,1,112,1,121,1,123,1,125,1,126,1,127,1,136,1,138,1,141,1,142,1,143,1,152,1,153,1,154,1,156,1,157,1,166,1,171,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,172,0,0,0,4,0,114,0,111,0,111,0,116,118,83,114,110,108,111,110,103,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,75,7,8,238,129,54,134,4,32,0,0,4,32,0,0,80,75,3,4,20,0,8,0,0,0,161,85,13,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,47,100,105,114,49,85,84,5,0,1,175,148,82,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,161,85,13,79,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,0,47,100,105,114,49,47,116,101,115,116,49,85,84,5,0,1,175,148,82,93,116,101,115,116,49,32,99,111,110,116,101,110,116,10,80,75,7,8,130,50,74,209,14,0,0,0,14,0,0,0,80,75,3,4,20,0,8,0,0,0,161,85,13,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,47,100,105,114,50,85,84,5,0,1,175,148,82,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,161,85,13,79,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,0,47,100,105,114,50,47,116,101,115,116,50,85,84,5,0,1,175,148,82,93,116,101,115,116,50,32,99,111,110,116,101,110,116,10,80,75,7,8,129,137,125,58,14,0,0,0,14,0,0,0,80,75,3,4,20,0,8,0,0,0,142,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,47,114,111,111,116,85,84,5,0,1,172,176,82,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,76,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,15,0,9,0,47,114,111,111,116,47,46,68,83,95,83,116,111,114,101,85,84,5,0,1,49,176,82,93,0,0,0,1,66,117,100,49,0,0,16,0,0,0,8,0,0,0,16,0,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,0,0,0,1,0,0,0,64,0,0,0,1,0,0,0,128,0,0,0,1,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,1,0,0,4,0,0,0,0,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,32,0,0,0,0,1,0,0,64,0,0,0,0,1,0,0,128,0,0,0,0,1,0,1,0,0,0,0,0,1,0,2,0,0,0,0,0,1,0,4,0,0,0,0,0,1,0,8,0,0,0,0,0,1,0,16,0,0,0,0,0,1,0,32,0,0,0,0,0,1,0,64,0,0,0,0,0,1,0,128,0,0,0,0,0,1,1,0,0,0,0,0,0,1,2,0,0,0,0,0,0,1,4,0,0,0,0,0,0,1,8,0,0,0,0,0,0,1,16,0,0,0,0,0,0,1,32,0,0,0,0,0,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,16,11,0,0,0,69,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,68,83,68,66,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,96,0,0,0,0,0,0,0,1,0,0,0,128,0,0,0,1,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,1,0,0,4,0,0,0,0,2,0,0,8,0,0,0,24,0,0,0,0,0,0,0,0,1,0,0,32,0,0,0,0,1,0,0,64,0,0,0,0,1,0,0,128,0,0,0,0,1,0,1,0,0,0,0,0,1,0,2,0,0,0,0,0,1,0,4,0,0,0,0,0,1,0,8,0,0,0,0,0,1,0,16,0,0,0,0,0,1,0,32,0,0,0,0,0,1,0,64,0,0,0,0,0,1,0,128,0,0,0,0,0,1,1,0,0,0,0,0,0,1,2,0,0,0,0,0,0,1,4,0,0,0,0,0,0,1,8,0,0,0,0,0,0,1,16,0,0,0,0,0,0,1,32,0,0,0,0,0,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,75,7,8,106,0,136,109,4,24,0,0,4,24,0,0,80,75,3,4,20,0,8,0,0,0,132,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,47,114,111,111,116,47,99,115,115,85,84,5,0,1,152,176,82,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,132,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,19,0,9,0,47,114,111,111,116,47,99,115,115,47,115,116,121,108,101,46,99,115,115,85,84,5,0,1,152,176,82,93,42,32,123,10,32,32,32,32,102,111,110,116,45,115,105,122,101,58,32,51,50,112,120,59,10,32,32,32,32,116,101,120,116,45,97,108,105,103,110,58,32,99,101,110,116,101,114,59,10,125,80,75,7,8,42,222,98,234,50,0,0,0,50,0,0,0,80,75,3,4,20,0,8,0,0,0,74,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,0,47,114,111,111,116,47,105,109,97,103,101,85,84,5,0,1,44,176,82,93,80,75,7,8,0,0,0,0,0,0,0,0,0,0,0,0,80,75,3,4,20,0,8,0,0,0,36,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,20,0,9,0,47,114,111,111,116,47,105,109,97,103,101,47,108,111,103,111,46,112,110,103,85,84,5,0,1,228,175,82,93,137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,50,0,0,0,50,8,6,0,0,0,30,63,136,177,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,2,174,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,88,77,80,32,67,111,114,101,32,53,46,52,46,48,34,62,10,32,32,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114,100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57,57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,10,32,32,32,32,32,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,32,114,100,102,58,97,98,111,117,116,61,34,34,10,32,32,32,32,32,32,32,32,32,32,32,32,120,109,108,110,115,58,120,109,112,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,34,10,32,32,32,32,32,32,32,32,32,32,32,32,120,109,108,110,115,58,100,99,61,34,104,116,116,112,58,47,47,112,117,114,108,46,111,114,103,47,100,99,47,101,108,101,109,101,110,116,115,47,49,46,49,47,34,10,32,32,32,32,32,32,32,32,32,32,32,32,120,109,108,110,115,58,116,105,102,102,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,116,105,102,102,47,49,46,48,47,34,62,10,32,32,32,32,32,32,32,32,32,60,120,109,112,58,67,114,101,97,116,101,68,97,116,101,62,50,48,49,57,45,48,53,45,48,54,84,49,50,58,51,50,58,49,53,90,60,47,120,109,112,58,67,114,101,97,116,101,68,97,116,101,62,10,32,32,32,32,32,32,32,32,32,60,120,109,112,58,67,114,101,97,116,111,114,84,111,111,108,62,65,100,111,98,101,32,70,105,114,101,119,111,114,107,115,32,67,83,52,60,47,120,109,112,58,67,114,101,97,116,111,114,84,111,111,108,62,10,32,32,32,32,32,32,32,32,32,60,120,109,112,58,77,111,100,105,102,121,68,97,116,101,62,50,48,49,57,45,48,53,45,48,54,84,49,53,58,53,54,58,51,56,90,60,47,120,109,112,58,77,111,100,105,102,121,68,97,116,101,62,10,32,32,32,32,32,32,32,32,32,60,100,99,58,102,111,114,109,97,116,62,105,109,97,103,101,47,112,110,103,60,47,100,99,58,102,111,114,109,97,116,62,10,32,32,32,32,32,32,32,32,32,60,116,105,102,102,58,79,114,105,101,110,116,97,116,105,111,110,62,49,60,47,116,105,102,102,58,79,114,105,101,110,116,97,116,105,111,110,62,10,32,32,32,32,32,32,60,47,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,62,10,32,32,32,60,47,114,100,102,58,82,68,70,62,10,60,47,120,58,120,109,112,109,101,116,97,62,10,240,91,212,3,0,0,10,127,73,68,65,84,104,5,237,88,91,111,84,215,25,93,103,110,103,110,182,199,6,204,197,24,39,24,227,16,18,5,66,83,4,42,130,144,168,85,83,210,70,74,85,34,66,85,41,85,212,180,79,125,232,99,171,62,20,84,169,15,81,251,7,218,190,71,109,138,130,34,133,18,32,225,106,162,38,33,142,12,118,77,76,32,181,185,4,99,123,108,207,229,204,153,233,90,251,204,57,30,12,38,78,99,75,41,242,150,246,204,153,125,89,223,183,190,219,222,103,172,63,156,24,172,224,62,104,161,251,128,131,161,176,64,228,235,230,201,5,143,44,120,100,158,44,176,16,90,243,100,216,255,25,246,190,241,72,100,182,38,176,184,80,189,182,233,74,48,23,215,2,31,215,255,246,101,124,25,252,47,36,226,19,112,136,170,238,41,110,145,84,5,33,78,70,217,195,148,92,246,165,127,137,111,31,187,84,197,46,7,166,34,54,113,98,194,102,159,13,246,61,137,72,144,75,33,5,246,134,112,5,109,209,50,210,17,79,92,177,108,225,86,41,132,155,78,8,19,156,143,83,178,132,243,113,86,77,107,101,24,97,215,133,42,88,30,43,35,67,236,40,39,52,62,74,220,171,78,24,19,100,145,224,152,116,185,23,246,140,68,36,40,111,64,42,216,84,231,160,53,81,66,130,130,52,174,38,208,18,201,140,147,204,192,100,4,23,114,81,20,57,104,207,194,130,82,42,71,236,134,72,5,79,164,28,172,136,151,144,12,151,141,245,133,173,38,3,102,75,97,244,79,68,113,158,248,218,19,169,98,235,121,122,187,43,145,16,213,156,164,146,43,104,165,205,153,60,26,233,9,1,151,43,150,249,54,32,68,179,216,51,49,23,143,179,139,232,169,145,56,70,74,150,241,206,76,225,32,37,68,98,117,220,197,55,26,10,198,195,6,155,170,58,53,155,132,221,16,229,154,140,139,229,118,4,167,70,109,26,214,50,161,44,35,78,111,190,129,131,113,13,228,184,97,37,73,236,88,148,67,134,36,10,252,237,146,132,154,4,152,206,103,1,202,43,14,123,179,237,98,39,215,55,210,202,242,140,183,90,59,166,154,135,13,172,77,184,248,86,83,14,73,122,216,199,22,86,128,93,221,236,99,175,76,150,240,84,83,158,6,170,64,249,52,19,118,32,73,11,164,132,242,97,75,99,30,49,110,84,46,40,169,37,164,92,46,223,214,181,222,23,46,133,234,169,216,102,90,89,77,138,213,54,31,91,68,31,111,200,155,125,50,128,143,141,74,229,54,236,10,127,7,216,174,133,69,52,212,86,98,11,119,58,182,228,220,225,17,49,222,84,95,68,29,149,242,5,9,84,61,22,139,33,145,72,32,153,76,34,30,183,205,152,198,13,16,53,21,233,102,198,123,59,187,242,107,58,184,146,248,97,230,68,146,100,100,109,145,80,243,148,182,2,236,68,60,142,72,36,130,10,13,167,166,117,69,146,105,97,248,174,79,58,38,52,21,254,181,45,200,17,97,22,184,79,33,181,130,27,28,134,146,44,226,11,17,240,208,208,16,6,6,46,33,159,207,99,205,154,118,180,181,181,193,113,156,96,141,160,133,211,194,248,239,203,81,145,26,73,202,131,20,61,188,212,46,153,60,211,58,53,225,135,195,97,227,141,15,207,157,195,224,224,32,26,51,25,116,118,118,34,195,239,98,177,72,61,188,213,162,181,134,134,248,55,177,75,212,79,165,217,151,113,155,209,180,240,65,146,136,90,116,51,87,232,172,208,137,17,10,133,112,228,200,81,124,115,203,86,236,222,179,7,99,217,49,156,56,121,18,199,222,121,135,150,211,41,226,53,137,19,176,188,105,19,217,179,167,71,78,158,206,208,19,9,134,173,138,134,111,36,97,75,217,127,28,56,128,203,151,47,163,175,175,15,207,255,104,55,126,250,242,203,232,191,120,209,68,129,66,90,235,93,122,177,142,57,187,138,134,154,158,135,1,17,41,174,122,189,136,21,72,10,104,99,153,131,49,59,134,222,222,94,252,228,165,151,140,182,191,223,191,15,63,222,187,23,123,95,124,17,7,15,30,196,133,222,62,134,89,220,88,84,238,80,164,69,105,249,24,141,81,141,58,13,27,204,4,199,195,28,247,155,188,97,219,54,222,62,114,4,227,217,113,236,165,145,126,254,202,43,248,254,174,239,161,235,236,123,216,183,111,63,70,70,70,16,141,70,141,231,180,79,10,47,165,142,106,83,72,213,48,150,32,77,165,89,203,19,236,34,165,85,114,169,172,113,250,204,25,14,144,100,166,1,103,206,116,225,252,249,243,248,148,214,251,219,107,175,161,187,187,219,204,9,195,71,214,179,122,173,32,77,203,56,126,243,67,42,151,203,225,173,183,14,97,224,211,75,184,56,48,128,30,98,159,237,234,194,67,107,59,112,152,4,123,122,122,188,124,145,85,184,95,152,242,184,110,20,181,248,65,142,72,121,255,74,160,128,210,50,159,72,54,155,53,242,23,47,89,130,3,111,188,129,147,199,223,69,166,177,201,156,192,202,17,145,245,181,148,178,138,95,37,182,239,110,9,20,162,138,129,135,109,224,12,190,194,74,24,127,254,203,95,241,206,177,99,36,115,201,76,10,95,45,75,79,5,141,64,132,54,167,191,136,40,239,124,227,248,178,106,215,122,207,85,111,40,201,59,58,58,204,88,58,157,70,71,123,59,98,12,165,100,42,101,198,90,91,91,77,14,201,194,106,82,56,199,10,83,168,230,129,25,228,135,78,229,172,198,85,173,170,182,148,1,84,5,215,210,250,106,169,84,26,171,90,90,140,55,124,5,219,218,86,5,97,101,192,185,78,162,60,105,102,155,249,8,60,162,18,167,131,80,214,180,173,178,177,156,60,226,186,172,223,91,182,96,215,51,207,224,224,155,111,6,59,7,175,94,195,158,23,118,99,227,134,13,198,162,126,101,209,130,155,197,176,57,184,252,235,138,132,170,194,140,145,200,24,239,80,169,184,110,10,94,216,42,254,159,251,193,115,120,245,143,127,194,71,31,127,28,224,235,225,183,191,249,53,218,105,184,160,114,17,72,4,101,12,37,187,188,226,55,67,68,130,100,49,9,210,221,41,105,235,224,211,38,18,43,149,76,25,220,191,239,119,216,186,117,11,78,159,62,109,200,109,219,182,13,207,238,218,133,52,61,227,112,141,36,200,189,10,159,203,249,176,193,19,174,223,52,167,80,184,194,210,185,140,231,140,154,95,177,86,175,126,16,199,143,29,197,223,95,127,29,253,253,253,104,104,200,96,199,142,237,216,177,125,187,89,35,99,74,151,106,154,220,97,40,97,89,254,63,141,114,247,4,149,120,44,85,194,38,222,175,116,24,138,189,154,194,70,33,38,176,241,241,113,227,214,58,134,153,198,69,84,227,202,49,155,85,105,96,50,138,163,183,108,83,1,53,239,147,9,20,33,230,119,23,231,204,61,170,246,192,213,97,43,44,37,191,100,37,147,9,122,186,100,242,207,236,165,30,82,71,114,222,254,60,129,27,52,184,114,218,199,15,114,68,151,243,56,39,122,121,211,28,102,104,168,132,106,147,154,128,36,68,73,169,83,61,197,174,231,90,18,186,206,140,17,252,253,177,152,87,81,170,5,32,20,10,7,57,20,98,17,214,161,123,142,107,132,173,82,172,111,225,23,10,188,126,144,184,240,21,110,133,124,49,32,33,29,56,101,116,186,194,91,246,16,195,179,150,132,230,3,34,230,7,137,168,218,188,199,155,166,226,208,39,195,33,35,76,2,229,102,117,207,62,158,187,69,66,9,126,134,158,24,231,148,121,217,178,227,36,16,134,235,120,10,69,99,54,172,72,140,198,42,99,128,161,247,193,104,156,152,12,233,170,193,44,30,140,34,34,108,115,0,50,105,141,39,40,92,100,109,30,164,55,11,97,252,43,27,53,175,10,210,183,182,5,201,174,65,41,172,27,230,80,49,132,227,195,9,108,229,197,49,197,115,69,5,192,247,142,71,64,196,104,5,90,84,150,184,81,136,224,236,72,204,184,59,26,141,240,4,46,227,218,133,115,232,57,113,8,35,215,62,131,157,76,163,229,161,199,208,249,196,118,196,23,45,69,172,228,160,123,60,204,251,88,2,27,235,167,174,242,174,64,165,4,155,60,160,88,146,215,84,40,174,147,252,241,91,113,207,192,83,203,204,90,125,220,70,68,3,10,49,157,240,159,21,66,248,39,99,113,67,93,17,203,153,156,178,186,26,49,140,44,17,203,210,197,202,137,158,137,8,28,43,204,53,101,44,29,189,130,236,133,46,188,250,203,95,152,245,181,123,190,253,228,78,188,240,179,95,97,164,229,81,84,162,49,244,79,150,112,163,152,192,35,105,190,92,241,106,164,151,43,113,145,12,53,221,48,114,46,101,240,229,234,35,118,93,115,228,109,141,251,107,180,78,237,14,34,26,212,66,145,81,21,59,194,112,105,102,204,46,227,101,82,175,185,242,128,94,112,134,73,98,136,185,52,201,80,178,105,178,100,185,136,150,129,119,209,60,214,141,179,61,231,5,131,117,235,30,134,195,3,79,218,185,86,4,135,142,30,193,15,55,52,97,221,163,59,209,215,250,36,172,84,19,38,152,123,199,25,202,153,113,201,112,205,251,143,226,95,33,62,66,25,131,148,49,74,50,113,122,70,36,100,206,233,36,36,235,174,68,52,33,50,218,168,126,147,73,124,141,160,106,2,209,233,172,42,167,185,20,99,215,9,69,208,60,248,1,50,215,78,161,144,94,129,229,171,58,241,244,230,13,56,220,245,161,217,227,127,236,254,206,118,212,47,239,68,100,116,0,15,20,243,232,95,247,60,92,230,77,170,82,54,111,164,189,186,49,231,124,25,222,183,145,161,60,50,114,125,164,59,191,131,242,123,231,212,212,136,148,87,87,171,181,136,138,171,72,169,119,244,29,68,98,236,19,184,225,4,9,86,80,96,233,28,186,121,11,19,147,121,94,211,67,104,72,37,177,164,177,30,17,94,217,157,10,171,98,113,24,67,171,159,197,224,178,71,16,45,121,94,187,187,12,79,166,39,125,230,207,25,61,82,187,69,202,171,251,109,234,153,162,153,149,101,42,87,72,44,65,250,243,247,81,78,196,249,210,68,111,49,220,30,88,218,4,75,89,171,192,87,5,227,163,222,203,67,224,217,227,230,188,185,42,168,48,167,112,111,127,246,229,222,235,123,86,68,238,5,160,185,16,67,99,112,197,70,68,156,9,164,135,187,249,102,71,79,69,147,176,226,236,97,94,193,93,158,65,185,44,42,197,73,83,210,221,112,28,195,43,159,198,245,197,29,8,115,174,150,192,23,201,154,105,254,171,19,161,181,45,150,91,39,98,99,160,125,39,226,139,215,99,189,157,197,170,230,20,172,168,206,18,30,131,156,47,51,39,134,254,115,21,159,176,236,78,102,90,145,77,122,222,178,104,4,227,177,153,52,156,229,248,87,39,34,65,36,19,42,187,60,87,44,92,175,231,237,53,227,32,145,206,161,160,43,24,237,29,226,225,102,243,128,204,172,89,140,65,150,116,133,91,164,236,120,241,163,176,155,131,54,55,68,164,136,81,136,185,225,22,145,203,59,8,241,79,130,168,41,214,94,5,12,211,242,110,145,127,194,241,223,67,29,112,21,173,159,27,14,198,12,115,71,132,112,170,94,17,86,233,171,78,4,151,39,99,60,32,89,223,89,193,164,115,137,149,170,123,60,198,243,196,251,211,192,72,159,195,143,57,38,226,157,59,250,79,248,240,112,220,88,94,175,7,50,188,222,31,212,116,46,204,69,114,123,104,83,159,115,74,196,135,213,75,154,94,170,164,176,14,50,61,248,132,230,131,132,68,204,11,145,170,238,250,242,210,64,46,97,155,47,18,194,246,238,29,122,250,63,111,11,68,190,110,14,92,240,200,130,71,230,201,2,247,77,104,253,23,249,35,174,63,129,132,9,199,0,0,0,0,73,69,78,68,174,66,96,130,80,75,7,8,108,239,160,128,148,13,0,0,148,13,0,0,80,75,3,4,20,0,8,0,0,0,142,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,16,0,9,0,47,114,111,111,116,47,105,110,100,101,120,46,104,116,109,108,85,84,5,0,1,172,176,82,93,60,104,116,109,108,62,10,9,60,104,101,97,100,62,10,9,9,60,108,105,110,107,32,114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,104,114,101,102,61,34,47,99,115,115,47,115,116,121,108,101,46,99,115,115,34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,9,60,47,104,101,97,100,62,10,9,60,98,111,100,121,62,10,9,60,100,105,118,62,60,105,109,103,32,115,114,99,61,34,105,109,97,103,101,47,108,111,103,111,46,112,110,103,34,62,60,47,100,105,118,62,10,9,84,104,105,115,32,105,115,32,116,104,101,32,105,110,100,101,120,32,102,114,111,109,32,103,114,101,115,46,10,9,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,80,75,7,8,149,169,95,143,183,0,0,0,183,0,0,0,80,75,1,2,20,3,20,0,8,0,0,0,72,101,13,79,238,129,54,134,4,32,0,0,4,32,0,0,10,0,9,0,0,0,0,0,0,0,0,0,164,129,0,0,0,0,47,46,68,83,95,83,116,111,114,101,85,84,5,0,1,40,176,82,93,80,75,1,2,20,3,20,0,8,0,0,0,161,85,13,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,0,0,0,0,0,0,16,0,237,65,69,32,0,0,47,100,105,114,49,85,84,5,0,1,175,148,82,93,80,75,1,2,20,3,20,0,8,0,0,0,161,85,13,79,130,50,74,209,14,0,0,0,14,0,0,0,11,0,9,0,0,0,0,0,0,0,0,0,164,129,129,32,0,0,47,100,105,114,49,47,116,101,115,116,49,85,84,5,0,1,175,148,82,93,80,75,1,2,20,3,20,0,8,0,0,0,161,85,13,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,0,0,0,0,0,0,16,0,237,65,209,32,0,0,47,100,105,114,50,85,84,5,0,1,175,148,82,93,80,75,1,2,20,3,20,0,8,0,0,0,161,85,13,79,129,137,125,58,14,0,0,0,14,0,0,0,11,0,9,0,0,0,0,0,0,0,0,0,164,129,13,33,0,0,47,100,105,114,50,47,116,101,115,116,50,85,84,5,0,1,175,148,82,93,80,75,1,2,20,3,20,0,8,0,0,0,142,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,5,0,9,0,0,0,0,0,0,0,16,0,237,65,93,33,0,0,47,114,111,111,116,85,84,5,0,1,172,176,82,93,80,75,1,2,20,3,20,0,8,0,0,0,76,101,13,79,106,0,136,109,4,24,0,0,4,24,0,0,15,0,9,0,0,0,0,0,0,0,0,0,164,129,153,33,0,0,47,114,111,111,116,47,46,68,83,95,83,116,111,114,101,85,84,5,0,1,49,176,82,93,80,75,1,2,20,3,20,0,8,0,0,0,132,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,0,0,0,0,16,0,237,65,227,57,0,0,47,114,111,111,116,47,99,115,115,85,84,5,0,1,152,176,82,93,80,75,1,2,20,3,20,0,8,0,0,0,132,101,13,79,42,222,98,234,50,0,0,0,50,0,0,0,19,0,9,0,0,0,0,0,0,0,0,0,164,129,35,58,0,0,47,114,111,111,116,47,99,115,115,47,115,116,121,108,101,46,99,115,115,85,84,5,0,1,152,176,82,93,80,75,1,2,20,3,20,0,8,0,0,0,74,101,13,79,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,0,0,0,0,0,0,0,16,0,237,65,159,58,0,0,47,114,111,111,116,47,105,109,97,103,101,85,84,5,0,1,44,176,82,93,80,75,1,2,20,3,20,0,8,0,0,0,36,101,13,79,108,239,160,128,148,13,0,0,148,13,0,0,20,0,9,0,0,0,0,0,0,0,0,0,164,129,225,58,0,0,47,114,111,111,116,47,105,109,97,103,101,47,108,111,103,111,46,112,110,103,85,84,5,0,1,228,175,82,93,80,75,1,2,20,3,20,0,8,0,0,0,142,101,13,79,149,169,95,143,183,0,0,0,183,0,0,0,16,0,9,0,0,0,0,0,0,0,0,0,164,129,192,72,0,0,47,114,111,111,116,47,105,110,100,101,120,46,104,116,109,108,85,84,5,0,1,172,176,82,93,80,75,5,6,0,0,0,0,12,0,12,0,29,3,0,0,190,73,0,0,0,0}); err != nil { panic(err) } }