Enable comparison of arrays of different precision types.
GLSL allows an array of `lowp float` to be compared against `highp
float` seamlessly because the types are considered to be the same. SkSL,
however, treats these as different types, so we need to coerce the types
to allow this comparison to work.
In other words, these comparisons can cause an array to be implicitly
casted. The expression `myHalf2Array == float[2](a, b)` should be
allowed when narrowing conversions are enabled. To allow this to work,
we need a dedicated IR node representing this type coercion.
We now allow implicit coercion of array types when the array's component
types would be implicitly coercible, and have a new IR node representing
that implicit conversion.
This CL fixes array comparisons, but array assignment needs additional
fixes. It currently results in:
"type mismatch: '=' cannot operate on (types)".
Bug: skia:12248
Change-Id: I99062486c081f748f65be4b36a3a52e95b559812
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436571
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
diff --git a/gn/sksl.gni b/gn/sksl.gni
index 7f64d3c..9c3a15b 100644
--- a/gn/sksl.gni
+++ b/gn/sksl.gni
@@ -107,6 +107,8 @@
"$_src/sksl/ir/SkSLConstructor.h",
"$_src/sksl/ir/SkSLConstructorArray.cpp",
"$_src/sksl/ir/SkSLConstructorArray.h",
+ "$_src/sksl/ir/SkSLConstructorArrayCast.cpp",
+ "$_src/sksl/ir/SkSLConstructorArrayCast.h",
"$_src/sksl/ir/SkSLConstructorCompound.cpp",
"$_src/sksl/ir/SkSLConstructorCompound.h",
"$_src/sksl/ir/SkSLConstructorCompoundCast.cpp",
diff --git a/resources/sksl/runtime/PrecisionQualifiers.rts b/resources/sksl/runtime/PrecisionQualifiers.rts
index 5b22a2c..18b77f0 100644
--- a/resources/sksl/runtime/PrecisionQualifiers.rts
+++ b/resources/sksl/runtime/PrecisionQualifiers.rts
@@ -51,7 +51,7 @@
vec4 main(vec2 coords) {
highp vec4 zero = vec4(0);
mediump vec4 one = vec4(1);
- lowp vec4 green = colorGreen;
+ lowp vec4 green = colorGreen;
green = green * one + zero;
highp vec4 red = colorRed;
diff --git a/resources/sksl/shared/ArrayNarrowingConversions.sksl b/resources/sksl/shared/ArrayNarrowingConversions.sksl
index b0e9a36..6a54ca9 100644
--- a/resources/sksl/shared/ArrayNarrowingConversions.sksl
+++ b/resources/sksl/shared/ArrayNarrowingConversions.sksl
@@ -5,9 +5,15 @@
half4 main(float2 coords) {
int i2[2] = int[2](1, 2);
short s2[2] = short[2](1, 2);
-
float f2[2] = float[2](1, 2);
half h2[2] = half[2](1, 2);
- return (i2 == s2 && f2 == h2) ? colorGreen : colorRed;
+ const int ci2[2] = int[2](1, 2);
+ const short cs2[2] = short[2](1, 2);
+ const float cf2[2] = float[2](1, 2);
+ const half ch2[2] = half[2](1, 2);
+
+ return (i2 == s2 && f2 == h2 && ci2 == cs2 && cf2 == ch2 && i2 == cs2 && h2 == cf2)
+ ? colorGreen
+ : colorRed;
}
diff --git a/src/sksl/SkSLAnalysis.cpp b/src/sksl/SkSLAnalysis.cpp
index 8653da7..aa8d115 100644
--- a/src/sksl/SkSLAnalysis.cpp
+++ b/src/sksl/SkSLAnalysis.cpp
@@ -904,6 +904,7 @@
return left.as<BoolLiteral>().value() == right.as<BoolLiteral>().value();
case Expression::Kind::kConstructorArray:
+ case Expression::Kind::kConstructorArrayCast:
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorCompoundCast:
case Expression::Kind::kConstructorDiagonalMatrix:
@@ -1184,6 +1185,7 @@
// ... expressions composed of both of the above
case Expression::Kind::kBinary:
case Expression::Kind::kConstructorArray:
+ case Expression::Kind::kConstructorArrayCast:
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorCompoundCast:
case Expression::Kind::kConstructorDiagonalMatrix:
@@ -1315,6 +1317,7 @@
(b.right() && this->visitExpressionPtr(b.right()));
}
case Expression::Kind::kConstructorArray:
+ case Expression::Kind::kConstructorArrayCast:
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorCompoundCast:
case Expression::Kind::kConstructorDiagonalMatrix:
diff --git a/src/sksl/SkSLDehydrator.cpp b/src/sksl/SkSLDehydrator.cpp
index 522571c..f99f396 100644
--- a/src/sksl/SkSLDehydrator.cpp
+++ b/src/sksl/SkSLDehydrator.cpp
@@ -17,6 +17,7 @@
#include "src/sksl/ir/SkSLBreakStatement.h"
#include "src/sksl/ir/SkSLConstructor.h"
#include "src/sksl/ir/SkSLConstructorArray.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLConstructorCompound.h"
#include "src/sksl/ir/SkSLConstructorCompoundCast.h"
#include "src/sksl/ir/SkSLConstructorDiagonalMatrix.h"
@@ -286,6 +287,12 @@
this->writeExpressionSpan(e->as<ConstructorArray>().argumentSpan());
break;
+ case Expression::Kind::kConstructorArrayCast:
+ this->writeCommand(Rehydrator::kConstructorArrayCast_Command);
+ this->write(e->type());
+ this->writeExpressionSpan(e->as<ConstructorArrayCast>().argumentSpan());
+ break;
+
case Expression::Kind::kConstructorCompound:
this->writeCommand(Rehydrator::kConstructorCompound_Command);
this->write(e->type());
diff --git a/src/sksl/SkSLInliner.cpp b/src/sksl/SkSLInliner.cpp
index d4cdf66..a5fe246 100644
--- a/src/sksl/SkSLInliner.cpp
+++ b/src/sksl/SkSLInliner.cpp
@@ -18,6 +18,7 @@
#include "src/sksl/ir/SkSLBreakStatement.h"
#include "src/sksl/ir/SkSLConstructor.h"
#include "src/sksl/ir/SkSLConstructorArray.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLConstructorCompound.h"
#include "src/sksl/ir/SkSLConstructorCompoundCast.h"
#include "src/sksl/ir/SkSLConstructorDiagonalMatrix.h"
@@ -316,6 +317,12 @@
*ctor.type().clone(symbolTableForExpression),
argList(ctor.arguments()));
}
+ case Expression::Kind::kConstructorArrayCast: {
+ const ConstructorArrayCast& ctor = expression.as<ConstructorArrayCast>();
+ return ConstructorArrayCast::Make(*fContext, offset,
+ *ctor.type().clone(symbolTableForExpression),
+ expr(ctor.argument()));
+ }
case Expression::Kind::kConstructorCompound: {
const ConstructorCompound& ctor = expression.as<ConstructorCompound>();
return ConstructorCompound::Make(*fContext, offset,
@@ -952,6 +959,7 @@
break;
}
case Expression::Kind::kConstructorArray:
+ case Expression::Kind::kConstructorArrayCast:
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorCompoundCast:
case Expression::Kind::kConstructorDiagonalMatrix:
diff --git a/src/sksl/SkSLRehydrator.h b/src/sksl/SkSLRehydrator.h
index cbc30df..7dae939 100644
--- a/src/sksl/SkSLRehydrator.h
+++ b/src/sksl/SkSLRehydrator.h
@@ -52,6 +52,7 @@
kBuiltinLayout_Command,
// (All constructors) Type type, uint8 argCount, Expression[] arguments
kConstructorArray_Command,
+ kConstructorArrayCast_Command,
kConstructorCompound_Command,
kConstructorCompoundCast_Command,
kConstructorDiagonalMatrix_Command,
diff --git a/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp b/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp
index ddbfa62..155029b 100644
--- a/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp
@@ -10,6 +10,7 @@
#include <memory>
#include "src/sksl/SkSLCompiler.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLExpressionStatement.h"
#include "src/sksl/ir/SkSLExtension.h"
#include "src/sksl/ir/SkSLIndexExpression.h"
@@ -163,6 +164,9 @@
this->writeConstructorDiagonalMatrix(expr.as<ConstructorDiagonalMatrix>(),
parentPrecedence);
break;
+ case Expression::Kind::kConstructorArrayCast:
+ this->writeExpression(*expr.as<ConstructorArrayCast>().argument(), parentPrecedence);
+ break;
case Expression::Kind::kConstructorArray:
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorMatrixResize:
diff --git a/src/sksl/codegen/SkSLMetalCodeGenerator.cpp b/src/sksl/codegen/SkSLMetalCodeGenerator.cpp
index c6d24e0..6584457 100644
--- a/src/sksl/codegen/SkSLMetalCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLMetalCodeGenerator.cpp
@@ -11,6 +11,7 @@
#include "src/sksl/SkSLCompiler.h"
#include "src/sksl/SkSLMemoryLayout.h"
#include "src/sksl/ir/SkSLConstructorArray.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLConstructorCompoundCast.h"
#include "src/sksl/ir/SkSLConstructorDiagonalMatrix.h"
#include "src/sksl/ir/SkSLConstructorMatrixResize.h"
@@ -125,6 +126,9 @@
case Expression::Kind::kConstructorStruct:
this->writeAnyConstructor(expr.asAnyConstructor(), "{", "}", parentPrecedence);
break;
+ case Expression::Kind::kConstructorArrayCast:
+ this->writeExpression(*expr.as<ConstructorArrayCast>().argument(), parentPrecedence);
+ break;
case Expression::Kind::kConstructorCompound:
this->writeConstructorCompound(expr.as<ConstructorCompound>(), parentPrecedence);
break;
@@ -1338,8 +1342,8 @@
auto [iter, wasInserted] = fHelpers.insert("ArrayEquality []");
if (wasInserted) {
fExtraFunctions.writeText(R"(
-template <typename T, size_t N>
-bool operator==(thread const array<T, N>& left, thread const array<T, N>& right) {
+template <typename T1, typename T2, size_t N>
+bool operator==(thread const array<T1, N>& left, thread const array<T2, N>& right) {
for (size_t index = 0; index < N; ++index) {
if (!(left[index] == right[index])) {
return false;
@@ -1348,8 +1352,8 @@
return true;
}
-template <typename T, size_t N>
-bool operator!=(thread const array<T, N>& left, thread const array<T, N>& right) {
+template <typename T1, typename T2, size_t N>
+bool operator!=(thread const array<T1, N>& left, thread const array<T2, N>& right) {
return !(left == right);
}
)");
@@ -2403,6 +2407,7 @@
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorCompoundCast:
case Expression::Kind::kConstructorArray:
+ case Expression::Kind::kConstructorArrayCast:
case Expression::Kind::kConstructorDiagonalMatrix:
case Expression::Kind::kConstructorScalarCast:
case Expression::Kind::kConstructorSplat:
diff --git a/src/sksl/codegen/SkSLPipelineStageCodeGenerator.cpp b/src/sksl/codegen/SkSLPipelineStageCodeGenerator.cpp
index 3c1b2c2..69ca39f 100644
--- a/src/sksl/codegen/SkSLPipelineStageCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLPipelineStageCodeGenerator.cpp
@@ -14,6 +14,7 @@
#include "src/sksl/SkSLStringStream.h"
#include "src/sksl/ir/SkSLBinaryExpression.h"
#include "src/sksl/ir/SkSLConstructor.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLDoStatement.h"
#include "src/sksl/ir/SkSLExpressionStatement.h"
#include "src/sksl/ir/SkSLFieldAccess.h"
@@ -438,6 +439,9 @@
case Expression::Kind::kIntLiteral:
this->write(expr.description());
break;
+ case Expression::Kind::kConstructorArrayCast:
+ this->writeExpression(*expr.as<ConstructorArrayCast>().argument(), parentPrecedence);
+ break;
case Expression::Kind::kConstructorArray:
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorCompoundCast:
diff --git a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
index 2a0a5ce..161689a 100644
--- a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
@@ -14,6 +14,7 @@
#include "src/sksl/SkSLOperators.h"
#include "src/sksl/dsl/priv/DSLWriter.h"
#include "src/sksl/ir/SkSLBlock.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLExpressionStatement.h"
#include "src/sksl/ir/SkSLExtension.h"
#include "src/sksl/ir/SkSLField.h"
@@ -721,6 +722,8 @@
return this->writeBinaryExpression(expr.as<BinaryExpression>(), out);
case Expression::Kind::kBoolLiteral:
return this->writeBoolLiteral(expr.as<BoolLiteral>());
+ case Expression::Kind::kConstructorArrayCast:
+ return this->writeExpression(*expr.as<ConstructorArrayCast>().argument(), out);
case Expression::Kind::kConstructorArray:
case Expression::Kind::kConstructorStruct:
return this->writeCompositeConstructor(expr.asAnyConstructor(), out);
diff --git a/src/sksl/codegen/SkSLVMCodeGenerator.cpp b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
index c2a5ea2..b9e2333 100644
--- a/src/sksl/codegen/SkSLVMCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
@@ -19,6 +19,7 @@
#include "src/sksl/ir/SkSLBreakStatement.h"
#include "src/sksl/ir/SkSLConstructor.h"
#include "src/sksl/ir/SkSLConstructorArray.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLConstructorDiagonalMatrix.h"
#include "src/sksl/ir/SkSLConstructorMatrixResize.h"
#include "src/sksl/ir/SkSLConstructorSplat.h"
@@ -1339,6 +1340,8 @@
case Expression::Kind::kConstructorCompound:
case Expression::Kind::kConstructorStruct:
return this->writeAggregationConstructor(e.asAnyConstructor());
+ case Expression::Kind::kConstructorArrayCast:
+ return this->writeExpression(*e.as<ConstructorArrayCast>().argument());
case Expression::Kind::kConstructorDiagonalMatrix:
return this->writeConstructorDiagonalMatrix(e.as<ConstructorDiagonalMatrix>());
case Expression::Kind::kConstructorMatrixResize:
diff --git a/src/sksl/generated/sksl_frag.dehydrated.sksl b/src/sksl/generated/sksl_frag.dehydrated.sksl
index 250873c..86fa55b 100644
--- a/src/sksl/generated/sksl_frag.dehydrated.sksl
+++ b/src/sksl/generated/sksl_frag.dehydrated.sksl
@@ -7,52 +7,52 @@
5,104,97,108,102,52,
12,115,107,95,70,114,97,103,67,111,108,111,114,
16,115,107,95,76,97,115,116,70,114,97,103,67,111,108,111,114,
-47,5,0,
-51,1,0,
-35,
-34,0,2,0,0,255,255,255,255,255,15,0,255,255,255,255,2,2,0,
-48,2,0,15,0,0,
-51,3,0,
-35,
-34,0,2,0,0,255,255,255,255,255,17,0,255,255,255,255,2,22,0,
-48,4,0,35,0,0,
-51,5,0,
-35,
-34,0,2,0,0,255,255,255,255,255,15,39,255,255,255,255,4,40,0,
-48,6,0,65,0,0,
-51,7,0,
-35,
-34,144,2,0,0,0,255,255,0,255,17,39,255,255,255,255,4,71,0,
-45,6,0,0,
-51,8,0,
-35,
-34,0,2,0,0,255,255,255,255,255,24,39,255,255,255,255,0,84,0,
-45,6,0,0,5,0,
+48,5,0,
+52,1,0,
+36,
+35,0,2,0,0,255,255,255,255,255,15,0,255,255,255,255,2,2,0,
+49,2,0,15,0,0,
+52,3,0,
+36,
+35,0,2,0,0,255,255,255,255,255,17,0,255,255,255,255,2,22,0,
+49,4,0,35,0,0,
+52,5,0,
+36,
+35,0,2,0,0,255,255,255,255,255,15,39,255,255,255,255,4,40,0,
+49,6,0,65,0,0,
+52,7,0,
+36,
+35,144,2,0,0,0,255,255,0,255,17,39,255,255,255,255,4,71,0,
+46,6,0,0,
+52,8,0,
+36,
+35,0,2,0,0,255,255,255,255,255,24,39,255,255,255,255,0,84,0,
+46,6,0,0,5,0,
2,0,
1,0,
3,0,
0,0,
4,0,
-19,
-53,
-52,1,0,
-45,2,0,0,
-55,
-53,
-52,3,0,
-45,4,0,0,
-55,
-53,
-52,5,0,
-45,6,0,0,
-55,
-53,
-52,7,0,
-45,6,0,0,
-55,
-53,
-52,8,0,
-45,6,0,0,
-55,
-20,};
+20,
+54,
+53,1,0,
+46,2,0,0,
+56,
+54,
+53,3,0,
+46,4,0,0,
+56,
+54,
+53,5,0,
+46,6,0,0,
+56,
+54,
+53,7,0,
+46,6,0,0,
+56,
+54,
+53,8,0,
+46,6,0,0,
+56,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_frag_LENGTH = sizeof(SKSL_INCLUDE_sksl_frag);
diff --git a/src/sksl/generated/sksl_geom.dehydrated.sksl b/src/sksl/generated/sksl_geom.dehydrated.sksl
index 19c3445..6aab91b 100644
--- a/src/sksl/generated/sksl_geom.dehydrated.sksl
+++ b/src/sksl/generated/sksl_geom.dehydrated.sksl
@@ -13,54 +13,54 @@
10,69,109,105,116,86,101,114,116,101,120,
12,69,110,100,80,114,105,109,105,116,105,118,101,
0,
-47,12,0,
-42,1,0,2,0,2,
-35,
-34,0,2,0,0,255,255,255,255,255,0,0,255,255,255,255,0,15,0,
-48,2,0,27,0,
-35,
-34,0,2,0,0,255,255,255,255,255,1,0,255,255,255,255,0,34,0,
-48,3,0,47,0,
-51,4,0,
-35,
-34,0,2,0,0,255,255,255,255,255,18,39,255,255,255,255,2,53,0,
+48,12,0,
+43,1,0,2,0,2,
+36,
+35,0,2,0,0,255,255,255,255,255,0,0,255,255,255,255,0,15,0,
+49,2,0,27,0,
+36,
+35,0,2,0,0,255,255,255,255,255,1,0,255,255,255,255,0,34,0,
+49,3,0,47,0,
+52,4,0,
+36,
+35,0,2,0,0,255,255,255,255,255,18,39,255,255,255,255,2,53,0,
0,5,0,
-45,1,0,255,0,
-42,6,0,2,0,2,
-35,
-34,0,2,0,0,255,255,255,255,255,0,0,255,255,255,255,0,15,0,
-45,2,0,
-35,
-34,0,2,0,0,255,255,255,255,255,1,0,255,255,255,255,0,34,0,
-45,3,0,
-51,7,0,
-35,
-34,0,2,0,0,255,255,255,255,255,23,39,255,255,255,255,4,2,0,
-45,6,0,0,
-22,7,0,0,
-22,7,0,1,
-51,8,0,
-16,59,0,
-48,9,0,66,0,3,
-28,10,0,
-35,
-15,64,70,0,1,8,0,
-48,11,0,87,0,
-51,12,0,
-16,59,0,
-45,9,0,3,
-28,13,0,
-35,
-15,64,92,0,1,12,0,
-45,11,0,
-28,14,0,
-35,
-15,64,111,0,0,
-45,11,0,
-28,15,0,
-35,
-15,64,122,0,0,
-45,11,0,7,0,
+46,1,0,255,0,
+43,6,0,2,0,2,
+36,
+35,0,2,0,0,255,255,255,255,255,0,0,255,255,255,255,0,15,0,
+46,2,0,
+36,
+35,0,2,0,0,255,255,255,255,255,1,0,255,255,255,255,0,34,0,
+46,3,0,
+52,7,0,
+36,
+35,0,2,0,0,255,255,255,255,255,23,39,255,255,255,255,4,2,0,
+46,6,0,0,
+23,7,0,0,
+23,7,0,1,
+52,8,0,
+17,59,0,
+49,9,0,66,0,3,
+29,10,0,
+36,
+16,64,70,0,1,8,0,
+49,11,0,87,0,
+52,12,0,
+17,59,0,
+46,9,0,3,
+29,13,0,
+36,
+16,64,92,0,1,12,0,
+46,11,0,
+29,14,0,
+36,
+16,64,111,0,0,
+46,11,0,
+29,15,0,
+36,
+16,64,122,0,0,
+46,11,0,7,0,
7,0,
10,0,
11,0,
@@ -68,10 +68,10 @@
5,0,
4,0,
1,0,
-19,
-32,
-45,4,0,2,0,53,0,255,
-32,
-45,7,0,2,0,135,0,0,
-20,};
+20,
+33,
+46,4,0,2,0,53,0,255,
+33,
+46,7,0,2,0,135,0,0,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_geom_LENGTH = sizeof(SKSL_INCLUDE_sksl_geom);
diff --git a/src/sksl/generated/sksl_gpu.dehydrated.sksl b/src/sksl/generated/sksl_gpu.dehydrated.sksl
index ef9cd26..ae4987d 100644
--- a/src/sksl/generated/sksl_gpu.dehydrated.sksl
+++ b/src/sksl/generated/sksl_gpu.dehydrated.sksl
@@ -244,3477 +244,3477 @@
3,115,100,97,
3,100,115,97,
25,98,117,105,108,116,105,110,68,101,116,101,114,109,105,110,97,110,116,83,117,112,112,111,114,116,
-47,229,3,
-51,1,0,
-16,2,0,
-48,2,0,10,0,3,
-28,3,0,
-16,19,0,1,1,0,
-45,2,0,
-51,4,0,
-16,19,0,
-45,2,0,3,
-28,5,0,
-16,2,0,1,4,0,
-45,2,0,
-51,6,0,
-16,27,0,
-45,2,0,3,
-28,7,0,
-16,33,0,1,6,0,
-45,2,0,
-51,8,0,
-16,27,0,
-45,2,0,3,
-28,9,0,
-16,37,0,1,8,0,
-45,2,0,
-51,10,0,
-16,27,0,
-45,2,0,3,
-28,11,0,
-16,41,0,1,10,0,
-45,2,0,
-51,12,0,
-16,45,0,
-45,2,0,3,
-28,13,0,
-16,47,0,1,12,0,
-45,2,0,
-51,14,0,
-16,45,0,
-45,2,0,3,
-28,15,0,
-16,52,0,1,14,0,
-45,2,0,
-51,16,0,
-16,57,0,
-45,2,0,3,
-51,17,0,
-16,45,0,
-45,2,0,3,
-28,18,0,
-16,59,0,2,16,0,17,0,
-45,2,0,
-51,19,0,
-16,64,0,
-45,2,0,3,
-50,20,0,2,
-45,18,0,
-28,21,0,
-16,59,0,1,19,0,
-45,2,0,
-45,21,0,
-51,22,0,
-16,45,0,
-45,2,0,3,
-28,23,0,
-16,73,0,1,22,0,
-45,2,0,
-51,24,0,
-16,45,0,
-45,2,0,3,
-28,25,0,
-16,78,0,1,24,0,
-45,2,0,
-51,26,0,
-16,45,0,
-45,2,0,3,
-28,27,0,
-16,83,0,1,26,0,
-45,2,0,
-51,28,0,
-16,45,0,
-45,2,0,3,
-28,29,0,
-16,88,0,1,28,0,
-45,2,0,
-51,30,0,
-16,45,0,
-45,2,0,3,
-28,31,0,
-16,94,0,1,30,0,
-45,2,0,
-51,32,0,
-16,45,0,
-45,2,0,3,
-28,33,0,
-16,100,0,1,32,0,
-45,2,0,
-51,34,0,
-16,45,0,
-45,2,0,3,
-51,35,0,
-16,57,0,
-45,2,0,3,
-28,36,0,
-16,106,0,2,34,0,35,0,
-45,2,0,
-51,37,0,
-16,45,0,
-45,2,0,3,
-28,38,0,
-16,110,0,1,37,0,
-45,2,0,
-51,39,0,
-16,45,0,
-45,2,0,3,
-28,40,0,
-16,114,0,1,39,0,
-45,2,0,
-51,41,0,
-16,45,0,
-45,2,0,3,
-28,42,0,
-16,118,0,1,41,0,
-45,2,0,
-51,43,0,
-16,45,0,
-45,2,0,3,
-28,44,0,
-16,123,0,1,43,0,
-45,2,0,
-51,45,0,
-16,45,0,
-45,2,0,3,
-28,46,0,
-16,128,0,1,45,0,
-45,2,0,
-51,47,0,
-16,2,0,
-48,48,0,133,0,3,
-50,49,0,2,
-45,3,0,
-28,50,0,
-16,19,0,1,47,0,
-45,48,0,
-45,50,0,
-51,51,0,
-16,19,0,
-45,48,0,3,
-50,52,0,2,
-45,5,0,
-28,53,0,
-16,2,0,1,51,0,
-45,48,0,
-45,53,0,
-51,54,0,
-16,27,0,
-45,48,0,3,
-50,55,0,2,
-45,7,0,
-28,56,0,
-16,33,0,1,54,0,
-45,48,0,
-45,56,0,
-51,57,0,
-16,27,0,
-45,48,0,3,
-50,58,0,2,
-45,9,0,
-28,59,0,
-16,37,0,1,57,0,
-45,48,0,
-45,59,0,
-51,60,0,
-16,27,0,
-45,48,0,3,
-50,61,0,2,
-45,11,0,
-28,62,0,
-16,41,0,1,60,0,
-45,48,0,
-45,62,0,
-51,63,0,
-16,45,0,
-45,48,0,3,
-50,64,0,2,
-45,13,0,
-28,65,0,
-16,47,0,1,63,0,
-45,48,0,
-45,65,0,
-51,66,0,
-16,45,0,
-45,48,0,3,
-50,67,0,2,
-45,15,0,
-28,68,0,
-16,52,0,1,66,0,
-45,48,0,
-45,68,0,
-51,69,0,
-16,57,0,
-45,48,0,3,
-51,70,0,
-16,45,0,
-45,48,0,3,
-50,71,0,3,
-45,18,0,
-45,21,0,
-28,72,0,
-16,59,0,2,69,0,70,0,
-45,48,0,
-45,72,0,
-51,73,0,
-16,64,0,
-45,48,0,3,
-50,74,0,4,
-45,18,0,
-45,21,0,
-45,72,0,
-28,75,0,
-16,59,0,1,73,0,
-45,48,0,
-45,75,0,
-51,76,0,
-16,45,0,
-45,48,0,3,
-50,77,0,2,
-45,23,0,
-28,78,0,
-16,73,0,1,76,0,
-45,48,0,
-45,78,0,
-51,79,0,
-16,45,0,
-45,48,0,3,
-50,80,0,2,
-45,25,0,
-28,81,0,
-16,78,0,1,79,0,
-45,48,0,
-45,81,0,
-51,82,0,
-16,45,0,
-45,48,0,3,
-50,83,0,2,
-45,27,0,
-28,84,0,
-16,83,0,1,82,0,
-45,48,0,
-45,84,0,
-51,85,0,
-16,45,0,
-45,48,0,3,
-50,86,0,2,
-45,29,0,
-28,87,0,
-16,88,0,1,85,0,
-45,48,0,
-45,87,0,
-51,88,0,
-16,45,0,
-45,48,0,3,
-50,89,0,2,
-45,31,0,
-28,90,0,
-16,94,0,1,88,0,
-45,48,0,
-45,90,0,
-51,91,0,
-16,45,0,
-45,48,0,3,
-50,92,0,2,
-45,33,0,
-28,93,0,
-16,100,0,1,91,0,
-45,48,0,
-45,93,0,
-51,94,0,
-16,45,0,
-45,48,0,3,
-51,95,0,
-16,57,0,
-45,48,0,3,
-50,96,0,2,
-45,36,0,
-28,97,0,
-16,106,0,2,94,0,95,0,
-45,48,0,
-45,97,0,
-51,98,0,
-16,45,0,
-45,48,0,3,
-50,99,0,2,
-45,38,0,
-28,100,0,
-16,110,0,1,98,0,
-45,48,0,
-45,100,0,
-51,101,0,
-16,45,0,
-45,48,0,3,
-50,102,0,2,
-45,40,0,
-28,103,0,
-16,114,0,1,101,0,
-45,48,0,
-45,103,0,
-51,104,0,
-16,45,0,
-45,48,0,3,
-50,105,0,2,
-45,42,0,
-28,106,0,
-16,118,0,1,104,0,
-45,48,0,
-45,106,0,
-51,107,0,
-16,45,0,
-45,48,0,3,
-50,108,0,2,
-45,44,0,
-28,109,0,
-16,123,0,1,107,0,
-45,48,0,
-45,109,0,
-51,110,0,
-16,45,0,
-45,48,0,3,
-50,111,0,2,
-45,46,0,
-28,112,0,
-16,128,0,1,110,0,
-45,48,0,
-45,112,0,
-51,113,0,
-16,45,0,
-45,2,0,3,
-28,114,0,
-16,143,0,1,113,0,
-45,2,0,
-51,115,0,
-16,45,0,
-45,48,0,3,
-50,116,0,2,
-45,114,0,
-28,117,0,
-16,143,0,1,115,0,
-45,48,0,
-45,117,0,
-51,118,0,
-16,45,0,
-45,2,0,3,
-28,119,0,
-16,155,0,1,118,0,
-45,2,0,
-51,120,0,
-16,45,0,
-45,48,0,3,
-50,121,0,2,
-45,119,0,
-28,122,0,
-16,155,0,1,120,0,
-45,48,0,
-45,122,0,
-51,123,0,
-16,45,0,
-48,124,0,159,0,3,
-50,125,0,3,
-45,119,0,
-45,122,0,
-28,126,0,
-16,155,0,1,123,0,
-45,124,0,
-45,126,0,
-51,127,0,
-16,45,0,
-45,2,0,3,
-28,128,0,
-16,169,0,1,127,0,
-45,2,0,
-51,129,0,
-16,45,0,
-45,48,0,3,
-50,130,0,2,
-45,128,0,
-28,131,0,
-16,169,0,1,129,0,
-45,48,0,
-45,131,0,
-51,132,0,
-16,45,0,
-45,124,0,3,
-50,133,0,3,
-45,128,0,
-45,131,0,
-28,134,0,
-16,169,0,1,132,0,
-45,124,0,
-45,134,0,
-51,135,0,
-16,45,0,
-45,2,0,3,
-28,136,0,
-16,174,0,1,135,0,
-45,2,0,
-51,137,0,
-16,45,0,
-45,48,0,3,
-50,138,0,2,
-45,136,0,
-28,139,0,
-16,174,0,1,137,0,
-45,48,0,
-45,139,0,
-51,140,0,
-16,45,0,
-45,2,0,3,
-28,141,0,
-16,180,0,1,140,0,
-45,2,0,
-51,142,0,
-16,45,0,
-45,48,0,3,
-50,143,0,2,
-45,141,0,
-28,144,0,
-16,180,0,1,142,0,
-45,48,0,
-45,144,0,
-51,145,0,
-16,45,0,
-45,2,0,3,
-28,146,0,
-16,186,0,1,145,0,
-45,2,0,
-51,147,0,
-16,45,0,
-45,48,0,3,
-50,148,0,2,
-45,146,0,
-28,149,0,
-16,186,0,1,147,0,
-45,48,0,
-45,149,0,
-51,150,0,
-16,45,0,
-45,2,0,3,
-28,151,0,
-16,192,0,1,150,0,
-45,2,0,
-51,152,0,
-16,45,0,
-45,48,0,3,
-50,153,0,2,
-45,151,0,
-28,154,0,
-16,192,0,1,152,0,
-45,48,0,
-45,154,0,
-51,155,0,
-16,45,0,
-45,2,0,3,
-28,156,0,
-16,202,0,1,155,0,
-45,2,0,
-51,157,0,
-16,45,0,
-45,48,0,3,
-50,158,0,2,
-45,156,0,
-28,159,0,
-16,202,0,1,157,0,
-45,48,0,
-45,159,0,
-51,160,0,
-16,45,0,
-45,2,0,3,
-28,161,0,
-16,207,0,1,160,0,
-45,2,0,
-51,162,0,
-16,45,0,
-45,48,0,3,
-50,163,0,2,
-45,161,0,
-28,164,0,
-16,207,0,1,162,0,
-45,48,0,
-45,164,0,
-51,165,0,
-16,45,0,
-45,2,0,3,
-51,166,0,
-16,57,0,
-48,167,0,213,0,3,
-28,168,0,
-16,219,0,2,165,0,166,0,
-45,2,0,
-51,169,0,
-16,45,0,
-45,2,0,3,
-51,170,0,
-16,57,0,
-45,2,0,3,
-50,171,0,2,
-45,168,0,
-28,172,0,
-16,219,0,2,169,0,170,0,
-45,2,0,
-45,172,0,
-51,173,0,
-16,45,0,
-45,48,0,3,
-51,174,0,
-16,57,0,
-48,175,0,223,0,3,
-50,176,0,3,
-45,168,0,
-45,172,0,
-28,177,0,
-16,219,0,2,173,0,174,0,
-45,48,0,
-45,177,0,
-51,178,0,
-16,45,0,
-45,48,0,3,
-51,179,0,
-16,57,0,
-45,48,0,3,
-50,180,0,4,
-45,168,0,
-45,172,0,
-45,177,0,
-28,181,0,
-16,219,0,2,178,0,179,0,
-45,48,0,
-45,181,0,
-51,182,0,
-16,45,0,
-45,2,0,3,
-51,183,0,
-35,
-15,4,228,0,
-45,2,0,3,
-28,184,0,
-16,230,0,2,182,0,183,0,
-45,2,0,
-51,185,0,
-16,45,0,
-45,48,0,3,
-51,186,0,
-35,
-15,4,228,0,
-45,48,0,3,
-50,187,0,2,
-45,184,0,
-28,188,0,
-16,230,0,2,185,0,186,0,
-45,48,0,
-45,188,0,
-51,189,0,
-16,45,0,
-45,2,0,3,
-51,190,0,
-16,57,0,
-45,2,0,3,
-28,191,0,
-16,235,0,2,189,0,190,0,
-45,2,0,
-51,192,0,
-16,45,0,
-45,2,0,3,
-51,193,0,
-16,57,0,
-45,167,0,3,
-50,194,0,2,
-45,191,0,
-28,195,0,
-16,235,0,2,192,0,193,0,
-45,2,0,
-45,195,0,
-51,196,0,
-16,45,0,
-45,48,0,3,
-51,197,0,
-16,57,0,
-45,48,0,3,
-50,198,0,3,
-45,191,0,
-45,195,0,
-28,199,0,
-16,235,0,2,196,0,197,0,
-45,48,0,
-45,199,0,
-51,200,0,
-16,45,0,
-45,48,0,3,
-51,201,0,
-16,57,0,
-45,175,0,3,
-50,202,0,4,
-45,191,0,
-45,195,0,
-45,199,0,
-28,203,0,
-16,235,0,2,200,0,201,0,
-45,48,0,
-45,203,0,
-51,204,0,
-16,45,0,
-45,124,0,3,
-51,205,0,
-16,57,0,
-45,124,0,3,
-50,206,0,5,
-45,191,0,
-45,195,0,
-45,199,0,
-45,203,0,
-28,207,0,
-16,235,0,2,204,0,205,0,
-45,124,0,
-45,207,0,
-51,208,0,
-16,45,0,
-45,124,0,3,
-51,209,0,
-16,57,0,
-48,210,0,239,0,3,
-50,211,0,6,
-45,191,0,
-45,195,0,
-45,199,0,
-45,203,0,
-45,207,0,
-28,212,0,
-16,235,0,2,208,0,209,0,
-45,124,0,
-45,212,0,
-51,213,0,
-16,45,0,
-45,2,0,3,
-51,214,0,
-16,57,0,
-45,2,0,3,
-28,215,0,
-16,243,0,2,213,0,214,0,
-45,2,0,
-51,216,0,
-16,45,0,
-45,2,0,3,
-51,217,0,
-16,57,0,
-45,167,0,3,
-50,218,0,2,
-45,215,0,
-28,219,0,
-16,243,0,2,216,0,217,0,
-45,2,0,
-45,219,0,
-51,220,0,
-16,45,0,
-45,48,0,3,
-51,221,0,
-16,57,0,
-45,48,0,3,
-50,222,0,3,
-45,215,0,
-45,219,0,
-28,223,0,
-16,243,0,2,220,0,221,0,
-45,48,0,
-45,223,0,
-51,224,0,
-16,45,0,
-45,48,0,3,
-51,225,0,
-16,57,0,
-45,175,0,3,
-50,226,0,4,
-45,215,0,
-45,219,0,
-45,223,0,
-28,227,0,
-16,243,0,2,224,0,225,0,
-45,48,0,
-45,227,0,
-51,228,0,
-16,45,0,
-45,124,0,3,
-51,229,0,
-16,57,0,
-45,124,0,3,
-50,230,0,5,
-45,215,0,
-45,219,0,
-45,223,0,
-45,227,0,
-28,231,0,
-16,243,0,2,228,0,229,0,
-45,124,0,
-45,231,0,
-51,232,0,
-16,45,0,
-45,124,0,3,
-51,233,0,
-16,57,0,
-45,210,0,3,
-50,234,0,6,
-45,215,0,
-45,219,0,
-45,223,0,
-45,227,0,
-45,231,0,
-28,235,0,
-16,243,0,2,232,0,233,0,
-45,124,0,
-45,235,0,
-51,236,0,
-16,45,0,
-45,2,0,3,
-51,237,0,
-16,247,0,
-45,2,0,3,
-51,238,0,
-16,254,0,
-45,2,0,3,
-28,239,0,
-16,5,1,3,236,0,237,0,238,0,
-45,2,0,
-51,240,0,
-16,45,0,
-45,2,0,3,
-51,241,0,
-16,247,0,
-45,167,0,3,
-51,242,0,
-16,254,0,
-45,167,0,3,
-50,243,0,2,
-45,239,0,
-28,244,0,
-16,5,1,3,240,0,241,0,242,0,
-45,2,0,
-45,244,0,
-51,245,0,
-16,45,0,
-45,48,0,3,
-51,246,0,
-16,247,0,
-45,48,0,3,
-51,247,0,
-16,254,0,
-45,48,0,3,
-50,248,0,3,
-45,239,0,
-45,244,0,
-28,249,0,
-16,5,1,3,245,0,246,0,247,0,
-45,48,0,
-45,249,0,
-51,250,0,
-16,45,0,
-45,48,0,3,
-51,251,0,
-16,247,0,
-45,175,0,3,
-51,252,0,
-16,254,0,
-45,175,0,3,
-50,253,0,4,
-45,239,0,
-45,244,0,
-45,249,0,
-28,254,0,
-16,5,1,3,250,0,251,0,252,0,
-45,48,0,
-45,254,0,
-51,255,0,
-16,45,0,
-45,124,0,3,
-51,0,1,
-16,247,0,
-45,124,0,3,
-51,1,1,
-16,254,0,
-45,124,0,3,
-50,2,1,5,
-45,239,0,
-45,244,0,
-45,249,0,
-45,254,0,
-28,3,1,
-16,5,1,3,255,0,0,1,1,1,
-45,124,0,
-45,3,1,
-51,4,1,
-16,45,0,
-45,124,0,3,
-51,5,1,
-16,247,0,
-45,210,0,3,
-51,6,1,
-16,254,0,
-45,210,0,3,
-50,7,1,6,
-45,239,0,
-45,244,0,
-45,249,0,
-45,254,0,
-45,3,1,
-28,8,1,
-16,5,1,3,4,1,5,1,6,1,
-45,124,0,
-45,8,1,
-51,9,1,
-16,45,0,
-45,2,0,3,
-28,10,1,
-16,11,1,1,9,1,
-45,2,0,
-51,11,1,
-16,45,0,
-45,48,0,3,
-50,12,1,2,
-45,10,1,
-28,13,1,
-16,11,1,1,11,1,
-45,48,0,
-45,13,1,
-51,14,1,
-16,45,0,
-45,2,0,3,
-51,15,1,
-16,57,0,
-45,2,0,3,
-51,16,1,
-16,20,1,
-45,2,0,3,
-28,17,1,
-16,22,1,3,14,1,15,1,16,1,
-45,2,0,
-51,18,1,
-16,45,0,
-45,2,0,3,
-51,19,1,
-16,57,0,
-45,2,0,3,
-51,20,1,
-16,20,1,
-45,167,0,3,
-50,21,1,2,
-45,17,1,
-28,22,1,
-16,22,1,3,18,1,19,1,20,1,
-45,2,0,
-45,22,1,
-51,23,1,
-16,45,0,
-45,48,0,3,
-51,24,1,
-16,57,0,
-45,48,0,3,
-51,25,1,
-16,20,1,
-45,48,0,3,
-50,26,1,3,
-45,17,1,
-45,22,1,
-28,27,1,
-16,22,1,3,23,1,24,1,25,1,
-45,48,0,
-45,27,1,
-51,28,1,
-16,45,0,
-45,48,0,3,
-51,29,1,
-16,57,0,
-45,48,0,3,
-51,30,1,
-16,20,1,
-45,175,0,3,
-50,31,1,4,
-45,17,1,
-45,22,1,
-45,27,1,
-28,32,1,
-16,22,1,3,28,1,29,1,30,1,
-45,48,0,
-45,32,1,
-51,33,1,
-16,45,0,
-45,2,0,3,
-51,34,1,
-16,57,0,
-45,2,0,3,
-51,35,1,
-16,20,1,
-48,36,1,26,1,3,
-50,37,1,5,
-45,17,1,
-45,22,1,
-45,27,1,
-45,32,1,
-28,38,1,
-16,22,1,3,33,1,34,1,35,1,
-45,2,0,
-45,38,1,
-51,39,1,
-16,45,0,
-45,48,0,3,
-51,40,1,
-16,57,0,
-45,48,0,3,
-51,41,1,
-16,20,1,
-45,36,1,3,
-50,42,1,6,
-45,17,1,
-45,22,1,
-45,27,1,
-45,32,1,
-45,38,1,
-28,43,1,
-16,22,1,3,39,1,40,1,41,1,
-45,48,0,
-45,43,1,
-51,44,1,
-16,45,0,
-45,124,0,3,
-51,45,1,
-16,57,0,
-45,124,0,3,
-51,46,1,
-16,20,1,
-45,36,1,3,
-50,47,1,7,
-45,17,1,
-45,22,1,
-45,27,1,
-45,32,1,
-45,38,1,
-45,43,1,
-28,48,1,
-16,22,1,3,44,1,45,1,46,1,
-45,124,0,
-45,48,1,
-51,49,1,
-16,45,0,
-45,36,1,3,
-51,50,1,
-16,57,0,
-45,36,1,3,
-51,51,1,
-16,20,1,
-45,36,1,3,
-50,52,1,8,
-45,17,1,
-45,22,1,
-45,27,1,
-45,32,1,
-45,38,1,
-45,43,1,
-45,48,1,
-28,53,1,
-16,22,1,3,49,1,50,1,51,1,
-45,36,1,
-45,53,1,
-51,54,1,
-16,36,1,
-45,2,0,3,
-51,55,1,
-16,45,0,
-45,2,0,3,
-28,56,1,
-16,41,1,2,54,1,55,1,
-45,2,0,
-51,57,1,
-16,36,1,
-45,167,0,3,
-51,58,1,
-16,45,0,
-45,2,0,3,
-50,59,1,2,
-45,56,1,
-28,60,1,
-16,41,1,2,57,1,58,1,
-45,2,0,
-45,60,1,
-51,61,1,
-16,36,1,
-45,48,0,3,
-51,62,1,
-16,45,0,
-45,48,0,3,
-50,63,1,3,
-45,56,1,
-45,60,1,
-28,64,1,
-16,41,1,2,61,1,62,1,
-45,48,0,
-45,64,1,
-51,65,1,
-16,36,1,
-45,175,0,3,
-51,66,1,
-16,45,0,
-45,48,0,3,
-50,67,1,4,
-45,56,1,
-45,60,1,
-45,64,1,
-28,68,1,
-16,41,1,2,65,1,66,1,
-45,48,0,
-45,68,1,
-51,69,1,
-16,46,1,
-45,2,0,3,
-51,70,1,
-16,52,1,
-45,2,0,3,
-51,71,1,
-16,45,0,
-45,2,0,3,
-28,72,1,
-16,58,1,3,69,1,70,1,71,1,
-45,2,0,
-51,73,1,
-16,46,1,
-45,167,0,3,
-51,74,1,
-16,52,1,
-45,167,0,3,
-51,75,1,
-16,45,0,
-45,2,0,3,
-50,76,1,2,
-45,72,1,
-28,77,1,
-16,58,1,3,73,1,74,1,75,1,
-45,2,0,
-45,77,1,
-51,78,1,
-16,46,1,
-45,48,0,3,
-51,79,1,
-16,52,1,
-45,48,0,3,
-51,80,1,
-16,45,0,
-45,48,0,3,
-50,81,1,3,
-45,72,1,
-45,77,1,
-28,82,1,
-16,58,1,3,78,1,79,1,80,1,
-45,48,0,
-45,82,1,
-51,83,1,
-16,46,1,
-45,175,0,3,
-51,84,1,
-16,52,1,
-45,175,0,3,
-51,85,1,
-16,45,0,
-45,48,0,3,
-50,86,1,4,
-45,72,1,
-45,77,1,
-45,82,1,
-28,87,1,
-16,58,1,3,83,1,84,1,85,1,
-45,48,0,
-45,87,1,
-51,88,1,
-16,45,0,
-45,2,0,3,
-28,89,1,
-16,69,1,1,88,1,
-45,36,1,
-51,90,1,
-16,45,0,
-45,2,0,3,
-28,91,1,
-16,75,1,1,90,1,
-45,36,1,
-51,92,1,
-16,81,1,
-45,2,0,3,
-28,93,1,
-16,87,1,1,92,1,
-45,124,0,
-51,94,1,
-16,81,1,
-45,2,0,3,
-28,95,1,
-16,102,1,1,94,1,
-48,96,1,118,1,
-51,97,1,
-16,81,1,
-45,124,0,3,
-28,98,1,
-16,128,1,1,97,1,
-45,2,0,
-51,99,1,
-16,81,1,
-45,96,1,3,
-28,100,1,
-16,143,1,1,99,1,
-45,2,0,
-51,101,1,
-16,20,1,
-45,2,0,3,
-51,102,1,
-16,159,1,
-45,2,0,3,
-51,103,1,
-16,161,1,
-45,2,0,3,
-28,104,1,
-16,163,1,3,101,1,102,1,103,1,
-45,2,0,
-51,105,1,
-16,20,1,
-45,48,0,3,
-51,106,1,
-16,159,1,
-45,48,0,3,
-51,107,1,
-16,161,1,
-45,48,0,3,
-50,108,1,2,
-45,104,1,
-28,109,1,
-16,163,1,3,105,1,106,1,107,1,
-45,48,0,
-45,109,1,
-51,110,1,
-16,45,0,
-45,2,0,3,
-51,111,1,
-35,
-15,4,110,0,
-45,124,0,3,
-28,112,1,
-35,
-15,64,167,1,2,110,1,111,1,
-45,2,0,
-51,113,1,
-16,45,0,
-45,48,0,3,
-51,114,1,
-35,
-15,4,110,0,
-45,124,0,3,
-50,115,1,2,
-45,112,1,
-28,116,1,
-35,
-15,64,167,1,2,113,1,114,1,
-45,48,0,
-45,116,1,
-51,117,1,
-16,45,0,
-45,2,0,3,
-51,118,1,
-35,
-15,2,110,0,
-45,124,0,3,
-28,119,1,
-16,173,1,2,117,1,118,1,
-45,2,0,
-51,120,1,
-16,45,0,
-45,48,0,3,
-51,121,1,
-35,
-15,2,110,0,
-45,124,0,3,
-50,122,1,2,
-45,119,1,
-28,123,1,
-16,173,1,2,120,1,121,1,
-45,48,0,
-45,123,1,
-51,124,1,
-16,179,1,
-48,125,1,181,1,3,
-28,126,1,
-16,188,1,1,124,1,
-48,127,1,202,1,
-51,128,1,
-16,179,1,
-45,125,1,3,
-28,129,1,
-16,207,1,1,128,1,
-45,127,1,
-51,130,1,
-16,179,1,
-48,131,1,221,1,3,
-28,132,1,
-16,228,1,1,130,1,
-45,127,1,
-51,133,1,
-16,179,1,
-45,131,1,3,
-28,134,1,
-16,241,1,1,133,1,
-45,127,1,
-51,135,1,
-16,254,1,
-45,127,1,3,
-28,136,1,
-16,0,2,1,135,1,
-45,125,1,
-51,137,1,
-16,254,1,
-45,127,1,3,
-28,138,1,
-16,16,2,1,137,1,
-45,125,1,
-51,139,1,
-16,254,1,
-45,127,1,3,
-28,140,1,
-16,32,2,1,139,1,
-45,131,1,
-51,141,1,
-16,254,1,
-45,127,1,3,
-28,142,1,
-16,47,2,1,141,1,
-45,131,1,
-51,143,1,
-16,179,1,
-45,125,1,3,
-28,144,1,
-16,62,2,1,143,1,
-45,127,1,
-51,145,1,
-16,179,1,
-45,127,1,3,
-28,146,1,
-16,75,2,1,145,1,
-45,125,1,
-51,147,1,
-16,45,0,
-45,2,0,3,
-28,148,1,
-16,90,2,1,147,1,
-45,167,0,
-51,149,1,
-16,45,0,
-45,48,0,3,
-50,150,1,2,
-45,148,1,
-28,151,1,
-16,90,2,1,149,1,
-45,175,0,
-45,151,1,
-51,152,1,
-16,97,2,
-45,2,0,3,
-51,153,1,
-16,100,2,
-45,2,0,3,
-28,154,1,
-16,103,2,2,152,1,153,1,
-45,167,0,
-51,155,1,
-16,97,2,
-45,48,0,3,
-51,156,1,
-16,100,2,
-45,48,0,3,
-50,157,1,2,
-45,154,1,
-28,158,1,
-16,103,2,2,155,1,156,1,
-45,175,0,
-45,158,1,
-51,159,1,
-16,45,0,
-45,2,0,3,
-51,160,1,
-16,57,0,
-45,2,0,3,
-28,161,1,
-16,112,2,2,159,1,160,1,
-45,167,0,
-51,162,1,
-16,45,0,
-45,48,0,3,
-51,163,1,
-16,57,0,
-45,48,0,3,
-50,164,1,2,
-45,161,1,
-28,165,1,
-16,112,2,2,162,1,163,1,
-45,175,0,
-45,165,1,
-51,166,1,
-16,45,0,
-48,167,1,116,2,3,
-51,168,1,
-16,57,0,
-45,167,1,3,
-28,169,1,
-16,123,2,2,166,1,168,1,
-45,167,1,
-51,170,1,
-16,45,0,
-48,171,1,129,2,3,
-51,172,1,
-16,57,0,
-45,171,1,3,
-50,173,1,2,
-45,169,1,
-28,174,1,
-16,123,2,2,170,1,172,1,
-45,171,1,
-45,174,1,
-51,175,1,
-16,45,0,
-45,2,0,3,
-28,176,1,
-16,135,2,1,175,1,
-45,2,0,
-51,177,1,
-16,45,0,
-45,48,0,3,
-50,178,1,2,
-45,176,1,
-28,179,1,
-16,135,2,1,177,1,
-45,48,0,
-45,179,1,
-51,180,1,
-16,145,2,
-45,2,0,3,
-51,181,1,
-16,147,2,
-45,2,0,3,
-51,182,1,
-16,149,2,
-45,2,0,3,
-28,183,1,
-16,154,2,3,180,1,181,1,182,1,
-45,2,0,
-51,184,1,
-16,145,2,
-45,48,0,3,
-51,185,1,
-16,147,2,
-45,48,0,3,
-51,186,1,
-16,149,2,
-45,48,0,3,
-50,187,1,2,
-45,183,1,
-28,188,1,
-16,154,2,3,184,1,185,1,186,1,
-45,48,0,
-45,188,1,
-51,189,1,
-16,147,2,
-45,2,0,3,
-51,190,1,
-16,145,2,
-45,2,0,3,
-28,191,1,
-16,166,2,2,189,1,190,1,
-45,2,0,
-51,192,1,
-16,147,2,
-45,48,0,3,
-51,193,1,
-16,145,2,
-45,48,0,3,
-50,194,1,2,
-45,191,1,
-28,195,1,
-16,166,2,2,192,1,193,1,
-45,48,0,
-45,195,1,
-51,196,1,
-16,147,2,
-45,2,0,3,
-51,197,1,
-16,145,2,
-45,2,0,3,
-51,198,1,
-16,174,2,
-45,167,0,3,
-28,199,1,
-16,178,2,3,196,1,197,1,198,1,
-45,2,0,
-51,200,1,
-16,147,2,
-45,48,0,3,
-51,201,1,
-16,145,2,
-45,48,0,3,
-51,202,1,
-16,174,2,
-45,175,0,3,
-50,203,1,2,
-45,199,1,
-28,204,1,
-16,178,2,3,200,1,201,1,202,1,
-45,48,0,
-45,204,1,
-51,205,1,
-16,45,0,
-48,206,1,186,2,3,
-51,207,1,
-16,57,0,
-45,206,1,3,
-28,208,1,
-16,191,2,2,205,1,207,1,
-45,206,1,
-51,209,1,
-16,45,0,
-48,210,1,206,2,3,
-51,211,1,
-16,57,0,
-45,210,1,3,
-50,212,1,2,
-45,208,1,
-28,213,1,
-16,191,2,2,209,1,211,1,
-45,210,1,
-45,213,1,
-51,214,1,
-16,161,1,
-45,125,1,3,
-51,215,1,
-16,212,2,
-45,125,1,3,
-28,216,1,
-16,214,2,2,214,1,215,1,
-48,217,1,227,2,
-51,218,1,
-16,161,1,
-45,167,1,3,
-51,219,1,
-16,212,2,
-45,167,1,3,
-50,220,1,2,
-45,216,1,
-28,221,1,
-16,214,2,2,218,1,219,1,
-48,222,1,236,2,
-45,221,1,
-51,223,1,
-16,161,1,
-45,131,1,3,
-51,224,1,
-16,212,2,
-45,131,1,3,
-50,225,1,3,
-45,216,1,
-45,221,1,
-28,226,1,
-16,214,2,2,223,1,224,1,
-48,227,1,245,2,
-45,226,1,
-51,228,1,
-16,161,1,
-45,167,1,3,
-51,229,1,
-16,212,2,
-45,125,1,3,
-50,230,1,4,
-45,216,1,
-45,221,1,
-45,226,1,
-28,231,1,
-16,214,2,2,228,1,229,1,
-48,232,1,254,2,
-45,231,1,
-51,233,1,
-16,161,1,
-45,125,1,3,
-51,234,1,
-16,212,2,
-45,167,1,3,
-50,235,1,5,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-28,236,1,
-16,214,2,2,233,1,234,1,
-48,237,1,7,3,
-45,236,1,
-51,238,1,
-16,161,1,
-45,131,1,3,
-51,239,1,
-16,212,2,
-45,125,1,3,
-50,240,1,6,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-28,241,1,
-16,214,2,2,238,1,239,1,
-48,242,1,16,3,
-45,241,1,
-51,243,1,
-16,161,1,
-45,125,1,3,
-51,244,1,
-16,212,2,
-45,131,1,3,
-50,245,1,7,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-28,246,1,
-16,214,2,2,243,1,244,1,
-48,247,1,25,3,
-45,246,1,
-51,248,1,
-16,161,1,
-45,131,1,3,
-51,249,1,
-16,212,2,
-45,167,1,3,
-50,250,1,8,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-28,251,1,
-16,214,2,2,248,1,249,1,
-48,252,1,34,3,
-45,251,1,
-51,253,1,
-16,161,1,
-45,167,1,3,
-51,254,1,
-16,212,2,
-45,131,1,3,
-50,255,1,9,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-28,0,2,
-16,214,2,2,253,1,254,1,
-48,1,2,43,3,
-45,0,2,
-51,2,2,
-16,161,1,
-48,3,2,52,3,3,
-51,4,2,
-16,212,2,
-45,3,2,3,
-50,5,2,10,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-28,6,2,
-16,214,2,2,2,2,4,2,
-48,7,2,58,3,
-45,6,2,
-51,8,2,
-16,161,1,
-45,171,1,3,
-51,9,2,
-16,212,2,
-45,171,1,3,
-50,10,2,11,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-28,11,2,
-16,214,2,2,8,2,9,2,
-48,12,2,66,3,
-45,11,2,
-51,13,2,
-16,161,1,
-48,14,2,74,3,3,
-51,15,2,
-16,212,2,
-45,14,2,3,
-50,16,2,12,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-28,17,2,
-16,214,2,2,13,2,15,2,
-48,18,2,80,3,
-45,17,2,
-51,19,2,
-16,161,1,
-45,171,1,3,
-51,20,2,
-16,212,2,
-45,3,2,3,
-50,21,2,13,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-45,17,2,
-28,22,2,
-16,214,2,2,19,2,20,2,
-48,23,2,88,3,
-45,22,2,
-51,24,2,
-16,161,1,
-45,3,2,3,
-51,25,2,
-16,212,2,
-45,171,1,3,
-50,26,2,14,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-45,17,2,
-45,22,2,
-28,27,2,
-16,214,2,2,24,2,25,2,
-48,28,2,96,3,
-45,27,2,
-51,29,2,
-16,161,1,
-45,14,2,3,
-51,30,2,
-16,212,2,
-45,3,2,3,
-50,31,2,15,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-45,17,2,
-45,22,2,
-45,27,2,
-28,32,2,
-16,214,2,2,29,2,30,2,
-48,33,2,104,3,
-45,32,2,
-51,34,2,
-16,161,1,
-45,3,2,3,
-51,35,2,
-16,212,2,
-45,14,2,3,
-50,36,2,16,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-45,17,2,
-45,22,2,
-45,27,2,
-45,32,2,
-28,37,2,
-16,214,2,2,34,2,35,2,
-48,38,2,112,3,
-45,37,2,
-51,39,2,
-16,161,1,
-45,14,2,3,
-51,40,2,
-16,212,2,
-45,171,1,3,
-50,41,2,17,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-45,17,2,
-45,22,2,
-45,27,2,
-45,32,2,
-45,37,2,
-28,42,2,
-16,214,2,2,39,2,40,2,
-48,43,2,120,3,
-45,42,2,
-51,44,2,
-16,161,1,
-45,171,1,3,
-51,45,2,
-16,212,2,
-45,14,2,3,
-50,46,2,18,
-45,216,1,
-45,221,1,
-45,226,1,
-45,231,1,
-45,236,1,
-45,241,1,
-45,246,1,
-45,251,1,
-45,0,2,
-45,6,2,
-45,11,2,
-45,17,2,
-45,22,2,
-45,27,2,
-45,32,2,
-45,37,2,
-45,42,2,
-28,47,2,
-16,214,2,2,44,2,45,2,
-48,48,2,128,3,
-45,47,2,
-51,49,2,
-16,136,3,
-45,217,1,3,
-28,50,2,
-16,138,3,1,49,2,
-45,217,1,
-51,51,2,
-16,136,3,
-45,222,1,3,
-50,52,2,2,
-45,50,2,
-28,53,2,
-16,138,3,1,51,2,
-45,222,1,
-45,53,2,
-51,54,2,
-16,136,3,
-45,227,1,3,
-50,55,2,3,
-45,50,2,
-45,53,2,
-28,56,2,
-16,138,3,1,54,2,
-45,227,1,
-45,56,2,
-51,57,2,
-16,136,3,
-45,237,1,3,
-50,58,2,4,
-45,50,2,
-45,53,2,
-45,56,2,
-28,59,2,
-16,138,3,1,57,2,
-45,232,1,
-45,59,2,
-51,60,2,
-16,136,3,
-45,232,1,3,
-50,61,2,5,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-28,62,2,
-16,138,3,1,60,2,
-45,237,1,
-45,62,2,
-51,63,2,
-16,136,3,
-45,247,1,3,
-50,64,2,6,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-28,65,2,
-16,138,3,1,63,2,
-45,242,1,
-45,65,2,
-51,66,2,
-16,136,3,
-45,242,1,3,
-50,67,2,7,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-28,68,2,
-16,138,3,1,66,2,
-45,247,1,
-45,68,2,
-51,69,2,
-16,136,3,
-45,1,2,3,
-50,70,2,8,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-28,71,2,
-16,138,3,1,69,2,
-45,252,1,
-45,71,2,
-51,72,2,
-16,136,3,
-45,252,1,3,
-50,73,2,9,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-28,74,2,
-16,138,3,1,72,2,
-45,1,2,
-45,74,2,
-51,75,2,
-16,136,3,
-45,7,2,3,
-50,76,2,10,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-28,77,2,
-16,138,3,1,75,2,
-45,7,2,
-45,77,2,
-51,78,2,
-16,136,3,
-45,12,2,3,
-50,79,2,11,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-28,80,2,
-16,138,3,1,78,2,
-45,12,2,
-45,80,2,
-51,81,2,
-16,136,3,
-45,18,2,3,
-50,82,2,12,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-28,83,2,
-16,138,3,1,81,2,
-45,18,2,
-45,83,2,
-51,84,2,
-16,136,3,
-45,28,2,3,
-50,85,2,13,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-45,83,2,
-28,86,2,
-16,138,3,1,84,2,
-45,23,2,
-45,86,2,
-51,87,2,
-16,136,3,
-45,23,2,3,
-50,88,2,14,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-45,83,2,
-45,86,2,
-28,89,2,
-16,138,3,1,87,2,
-45,28,2,
-45,89,2,
-51,90,2,
-16,136,3,
-45,38,2,3,
-50,91,2,15,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-45,83,2,
-45,86,2,
-45,89,2,
-28,92,2,
-16,138,3,1,90,2,
-45,33,2,
-45,92,2,
-51,93,2,
-16,136,3,
-45,33,2,3,
-50,94,2,16,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-45,83,2,
-45,86,2,
-45,89,2,
-45,92,2,
-28,95,2,
-16,138,3,1,93,2,
-45,38,2,
-45,95,2,
-51,96,2,
-16,136,3,
-45,48,2,3,
-50,97,2,17,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-45,83,2,
-45,86,2,
-45,89,2,
-45,92,2,
-45,95,2,
-28,98,2,
-16,138,3,1,96,2,
-45,43,2,
-45,98,2,
-51,99,2,
-16,136,3,
-45,43,2,3,
-50,100,2,18,
-45,50,2,
-45,53,2,
-45,56,2,
-45,59,2,
-45,62,2,
-45,65,2,
-45,68,2,
-45,71,2,
-45,74,2,
-45,77,2,
-45,80,2,
-45,83,2,
-45,86,2,
-45,89,2,
-45,92,2,
-45,95,2,
-45,98,2,
-28,101,2,
-16,138,3,1,99,2,
-45,48,2,
-45,101,2,
-51,102,2,
-16,136,3,
-48,103,2,148,3,3,
-28,104,2,
-16,159,3,1,102,2,
-45,167,0,
-51,105,2,
-16,136,3,
-48,106,2,171,3,3,
-50,107,2,2,
-45,104,2,
-28,108,2,
-16,159,3,1,105,2,
-45,175,0,
-45,108,2,
-51,109,2,
-16,136,3,
-45,103,2,3,
-28,110,2,
-16,183,3,1,109,2,
-45,103,2,
-51,111,2,
-16,136,3,
-45,106,2,3,
-50,112,2,2,
-45,110,2,
-28,113,2,
-16,183,3,1,111,2,
-45,106,2,
-45,113,2,
-51,114,2,
-16,45,0,
-48,115,2,191,3,3,
-51,116,2,
-16,57,0,
-45,115,2,3,
-28,117,2,
-16,196,3,2,114,2,116,2,
-48,118,2,205,3,
-51,119,2,
-16,45,0,
-48,120,2,211,3,3,
-51,121,2,
-16,57,0,
-45,120,2,3,
-50,122,2,2,
-45,117,2,
-28,123,2,
-16,196,3,2,119,2,121,2,
-45,118,2,
-45,123,2,
-51,124,2,
-16,45,0,
-48,125,2,217,3,3,
-51,126,2,
-16,57,0,
-45,125,2,3,
-50,127,2,3,
-45,117,2,
-45,123,2,
-28,128,2,
-16,196,3,2,124,2,126,2,
-45,118,2,
-45,128,2,
-51,129,2,
-16,45,0,
-48,130,2,223,3,3,
-51,131,2,
-16,57,0,
-45,130,2,3,
-50,132,2,4,
-45,117,2,
-45,123,2,
-45,128,2,
-28,133,2,
-16,196,3,2,129,2,131,2,
-45,118,2,
-45,133,2,
-51,134,2,
-16,45,0,
-48,135,2,229,3,3,
-51,136,2,
-16,57,0,
-45,135,2,3,
-50,137,2,5,
-45,117,2,
-45,123,2,
-45,128,2,
-45,133,2,
-28,138,2,
-16,196,3,2,134,2,136,2,
-45,118,2,
-45,138,2,
-51,139,2,
-16,45,0,
-48,140,2,236,3,3,
-51,141,2,
-16,57,0,
-45,140,2,3,
-50,142,2,6,
-45,117,2,
-45,123,2,
-45,128,2,
-45,133,2,
-45,138,2,
-28,143,2,
-16,196,3,2,139,2,141,2,
-45,118,2,
-45,143,2,
-51,144,2,
-16,45,0,
-45,115,2,3,
-51,145,2,
-16,57,0,
-45,115,2,3,
-28,146,2,
-16,242,3,2,144,2,145,2,
-45,118,2,
-51,147,2,
-16,45,0,
-45,120,2,3,
-51,148,2,
-16,57,0,
-45,120,2,3,
-50,149,2,2,
-45,146,2,
-28,150,2,
-16,242,3,2,147,2,148,2,
-45,118,2,
-45,150,2,
-51,151,2,
-16,45,0,
-45,125,2,3,
-51,152,2,
-16,57,0,
-45,125,2,3,
-50,153,2,3,
-45,146,2,
-45,150,2,
-28,154,2,
-16,242,3,2,151,2,152,2,
-45,118,2,
-45,154,2,
-51,155,2,
-16,45,0,
-45,140,2,3,
-51,156,2,
-16,57,0,
-45,140,2,3,
-50,157,2,4,
-45,146,2,
-45,150,2,
-45,154,2,
-28,158,2,
-16,242,3,2,155,2,156,2,
-45,118,2,
-45,158,2,
-51,159,2,
-16,45,0,
-45,130,2,3,
-51,160,2,
-16,57,0,
-45,130,2,3,
-50,161,2,5,
-45,146,2,
-45,150,2,
-45,154,2,
-45,158,2,
-28,162,2,
-16,242,3,2,159,2,160,2,
-45,118,2,
-45,162,2,
-51,163,2,
-16,45,0,
-45,135,2,3,
-51,164,2,
-16,57,0,
-45,135,2,3,
-50,165,2,6,
-45,146,2,
-45,150,2,
-45,154,2,
-45,158,2,
-45,162,2,
-28,166,2,
-16,242,3,2,163,2,164,2,
-45,118,2,
-45,166,2,
-51,167,2,
-16,45,0,
-45,115,2,3,
-51,168,2,
-16,57,0,
-45,115,2,3,
-28,169,2,
-16,0,4,2,167,2,168,2,
-45,118,2,
-51,170,2,
-16,45,0,
-45,120,2,3,
-51,171,2,
-16,57,0,
-45,120,2,3,
-50,172,2,2,
-45,169,2,
-28,173,2,
-16,0,4,2,170,2,171,2,
-45,118,2,
-45,173,2,
-51,174,2,
-16,45,0,
-45,125,2,3,
-51,175,2,
-16,57,0,
-45,125,2,3,
-50,176,2,3,
-45,169,2,
-45,173,2,
-28,177,2,
-16,0,4,2,174,2,175,2,
-45,118,2,
-45,177,2,
-51,178,2,
-16,45,0,
-45,140,2,3,
-51,179,2,
-16,57,0,
-45,140,2,3,
-50,180,2,4,
-45,169,2,
-45,173,2,
-45,177,2,
-28,181,2,
-16,0,4,2,178,2,179,2,
-45,118,2,
-45,181,2,
-51,182,2,
-16,45,0,
-45,130,2,3,
-51,183,2,
-16,57,0,
-45,130,2,3,
-50,184,2,5,
-45,169,2,
-45,173,2,
-45,177,2,
-45,181,2,
-28,185,2,
-16,0,4,2,182,2,183,2,
-45,118,2,
-45,185,2,
-51,186,2,
-16,45,0,
-45,135,2,3,
-51,187,2,
-16,57,0,
-45,135,2,3,
-50,188,2,6,
-45,169,2,
-45,173,2,
-45,177,2,
-45,181,2,
-45,185,2,
-28,189,2,
-16,0,4,2,186,2,187,2,
-45,118,2,
-45,189,2,
-51,190,2,
-16,45,0,
-45,115,2,3,
-51,191,2,
-16,57,0,
-45,115,2,3,
-28,192,2,
-16,12,4,2,190,2,191,2,
-45,118,2,
-51,193,2,
-16,45,0,
-45,120,2,3,
-51,194,2,
-16,57,0,
-45,120,2,3,
-50,195,2,2,
-45,192,2,
-28,196,2,
-16,12,4,2,193,2,194,2,
-45,118,2,
-45,196,2,
-51,197,2,
-16,45,0,
-45,125,2,3,
-51,198,2,
-16,57,0,
-45,125,2,3,
-50,199,2,3,
-45,192,2,
-45,196,2,
-28,200,2,
-16,12,4,2,197,2,198,2,
-45,118,2,
-45,200,2,
-51,201,2,
-16,45,0,
-45,140,2,3,
-51,202,2,
-16,57,0,
-45,140,2,3,
-50,203,2,4,
-45,192,2,
-45,196,2,
-45,200,2,
-28,204,2,
-16,12,4,2,201,2,202,2,
-45,118,2,
-45,204,2,
-51,205,2,
-16,45,0,
-45,130,2,3,
-51,206,2,
-16,57,0,
-45,130,2,3,
-50,207,2,5,
-45,192,2,
-45,196,2,
-45,200,2,
-45,204,2,
-28,208,2,
-16,12,4,2,205,2,206,2,
-45,118,2,
-45,208,2,
-51,209,2,
-16,45,0,
-45,135,2,3,
-51,210,2,
-16,57,0,
-45,135,2,3,
-50,211,2,6,
-45,192,2,
-45,196,2,
-45,200,2,
-45,204,2,
-45,208,2,
-28,212,2,
-16,12,4,2,209,2,210,2,
-45,118,2,
-45,212,2,
-51,213,2,
-16,45,0,
-45,115,2,3,
-51,214,2,
-16,57,0,
-45,115,2,3,
-28,215,2,
-16,29,4,2,213,2,214,2,
-45,118,2,
-51,216,2,
-16,45,0,
-45,120,2,3,
-51,217,2,
-16,57,0,
-45,120,2,3,
-50,218,2,2,
-45,215,2,
-28,219,2,
-16,29,4,2,216,2,217,2,
-45,118,2,
-45,219,2,
-51,220,2,
-16,45,0,
-45,125,2,3,
-51,221,2,
-16,57,0,
-45,125,2,3,
-50,222,2,3,
-45,215,2,
-45,219,2,
-28,223,2,
-16,29,4,2,220,2,221,2,
-45,118,2,
-45,223,2,
-51,224,2,
-16,45,0,
-45,140,2,3,
-51,225,2,
-16,57,0,
-45,140,2,3,
-50,226,2,4,
-45,215,2,
-45,219,2,
-45,223,2,
-28,227,2,
-16,29,4,2,224,2,225,2,
-45,118,2,
-45,227,2,
-51,228,2,
-16,45,0,
-45,130,2,3,
-51,229,2,
-16,57,0,
-45,130,2,3,
-50,230,2,5,
-45,215,2,
-45,219,2,
-45,223,2,
-45,227,2,
-28,231,2,
-16,29,4,2,228,2,229,2,
-45,118,2,
-45,231,2,
-51,232,2,
-16,45,0,
-45,135,2,3,
-51,233,2,
-16,57,0,
-45,135,2,3,
-50,234,2,6,
-45,215,2,
-45,219,2,
-45,223,2,
-45,227,2,
-45,231,2,
-28,235,2,
-16,29,4,2,232,2,233,2,
-45,118,2,
-45,235,2,
-51,236,2,
-16,45,0,
-45,118,2,3,
-51,237,2,
-16,57,0,
-45,118,2,3,
-50,238,2,7,
-45,215,2,
-45,219,2,
-45,223,2,
-45,227,2,
-45,231,2,
-45,235,2,
-28,239,2,
-16,29,4,2,236,2,237,2,
-45,118,2,
-45,239,2,
-51,240,2,
-16,45,0,
-45,115,2,3,
-51,241,2,
-16,57,0,
-45,115,2,3,
-28,242,2,
-16,35,4,2,240,2,241,2,
-45,118,2,
-51,243,2,
-16,45,0,
-45,120,2,3,
-51,244,2,
-16,57,0,
-45,120,2,3,
-50,245,2,2,
-45,242,2,
-28,246,2,
-16,35,4,2,243,2,244,2,
-45,118,2,
-45,246,2,
-51,247,2,
-16,45,0,
-45,125,2,3,
-51,248,2,
-16,57,0,
-45,125,2,3,
-50,249,2,3,
-45,242,2,
-45,246,2,
-28,250,2,
-16,35,4,2,247,2,248,2,
-45,118,2,
-45,250,2,
-51,251,2,
-16,45,0,
-45,140,2,3,
-51,252,2,
-16,57,0,
-45,140,2,3,
-50,253,2,4,
-45,242,2,
-45,246,2,
-45,250,2,
-28,254,2,
-16,35,4,2,251,2,252,2,
-45,118,2,
-45,254,2,
-51,255,2,
-16,45,0,
-45,130,2,3,
-51,0,3,
-16,57,0,
-45,130,2,3,
-50,1,3,5,
-45,242,2,
-45,246,2,
-45,250,2,
-45,254,2,
-28,2,3,
-16,35,4,2,255,2,0,3,
-45,118,2,
-45,2,3,
-51,3,3,
-16,45,0,
-45,135,2,3,
-51,4,3,
-16,57,0,
-45,135,2,3,
-50,5,3,6,
-45,242,2,
-45,246,2,
-45,250,2,
-45,254,2,
-45,2,3,
-28,6,3,
-16,35,4,2,3,3,4,3,
-45,118,2,
-45,6,3,
-51,7,3,
-16,45,0,
-45,118,2,3,
-51,8,3,
-16,57,0,
-45,118,2,3,
-50,9,3,7,
-45,242,2,
-45,246,2,
-45,250,2,
-45,254,2,
-45,2,3,
-45,6,3,
-28,10,3,
-16,35,4,2,7,3,8,3,
-45,118,2,
-45,10,3,
-51,11,3,
-16,45,0,
-45,118,2,3,
-28,12,3,
-16,44,4,1,11,3,
-48,13,3,48,4,
-51,14,3,
-16,45,0,
-45,118,2,3,
-28,15,3,
-16,53,4,1,14,3,
-45,13,3,
-51,16,3,
-16,45,0,
-45,118,2,3,
-28,17,3,
-16,57,4,1,16,3,
-45,118,2,
-51,18,3,
-16,81,1,
-45,124,0,3,
-28,19,3,
-16,61,4,1,18,3,
-45,124,0,
-51,20,3,
-16,81,1,
-45,96,1,3,
-50,21,3,2,
-45,19,3,
-28,22,3,
-16,61,4,1,20,3,
-45,124,0,
-45,22,3,
-51,23,3,
-16,81,1,
-45,124,0,3,
-28,24,3,
-16,70,4,1,23,3,
-45,124,0,
-51,25,3,
-16,81,1,
-45,96,1,3,
-50,26,3,2,
-45,24,3,
-28,27,3,
-16,70,4,1,25,3,
-45,124,0,
-45,27,3,
-51,28,3,
-16,81,1,
-45,124,0,3,
-28,29,3,
-16,78,4,1,28,3,
-45,124,0,
-51,30,3,
-16,81,1,
-45,96,1,3,
-50,31,3,2,
-45,29,3,
-28,32,3,
-16,78,4,1,30,3,
-45,124,0,
-45,32,3,
-51,33,3,
-16,86,4,
-48,34,3,94,4,3,
-51,35,3,
-16,104,4,
-48,36,3,106,4,3,
-28,37,3,
-16,114,4,2,33,3,35,3,
-48,38,3,128,4,
-51,39,3,
-16,104,4,
-48,40,3,138,4,3,
-28,41,3,
-16,152,4,1,39,3,
-48,42,3,164,4,
-51,43,3,
-16,104,4,
-48,44,3,169,4,3,
-51,45,3,
-16,179,4,
-45,167,0,3,
-28,46,3,
-16,181,4,2,43,3,45,3,
-45,14,2,
-51,47,3,
-16,104,4,
-45,44,3,3,
-51,48,3,
-16,179,4,
-45,167,0,3,
-51,49,3,
-16,188,4,
-45,167,0,3,
-50,50,3,2,
-45,46,3,
-28,51,3,
-16,181,4,3,47,3,48,3,49,3,
-45,14,2,
-45,51,3,
-51,52,3,
-16,104,4,
-45,38,3,3,
-51,53,3,
-16,179,4,
-45,125,1,3,
-50,54,3,3,
-45,46,3,
-45,51,3,
-28,55,3,
-16,181,4,2,52,3,53,3,
-45,14,2,
-45,55,3,
-51,56,3,
-16,104,4,
-48,57,3,193,4,3,
-51,58,3,
-16,179,4,
-45,125,1,3,
-50,59,3,4,
-45,46,3,
-45,51,3,
-45,55,3,
-28,60,3,
-16,181,4,2,56,3,58,3,
-48,61,3,204,4,
-45,60,3,
-51,62,3,
-16,104,4,
-48,63,3,209,4,3,
-51,64,3,
-16,179,4,
-45,125,1,3,
-51,65,3,
-16,188,4,
-45,167,0,3,
-50,66,3,5,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-28,67,3,
-16,181,4,3,62,3,64,3,65,3,
-45,14,2,
-45,67,3,
-51,68,3,
-16,104,4,
-45,63,3,3,
-51,69,3,
-16,179,4,
-45,125,1,3,
-50,70,3,6,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-28,71,3,
-16,181,4,2,68,3,69,3,
-45,14,2,
-45,71,3,
-51,72,3,
-16,104,4,
-45,40,3,3,
-51,73,3,
-16,179,4,
-45,125,1,3,
-50,74,3,7,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-45,71,3,
-28,75,3,
-16,181,4,2,72,3,73,3,
-45,14,2,
-45,75,3,
-51,76,3,
-16,104,4,
-45,40,3,3,
-51,77,3,
-16,179,4,
-45,167,1,3,
-50,78,3,8,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-45,71,3,
-45,75,3,
-28,79,3,
-16,181,4,2,76,3,77,3,
-45,14,2,
-45,79,3,
-51,80,3,
-16,228,4,
-48,81,3,236,4,3,
-28,82,3,
-16,249,4,1,80,3,
-45,14,2,
-51,83,3,
-16,228,4,
-48,84,3,5,5,3,
-51,85,3,
-16,181,4,
-45,210,0,3,
-50,86,3,2,
-45,82,3,
-28,87,3,
-16,249,4,2,83,3,85,3,
-45,14,2,
-45,87,3,
-51,88,3,
-16,104,4,
-45,44,3,3,
-51,89,3,
-16,179,4,
-45,125,1,3,
-50,90,3,9,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-45,71,3,
-45,75,3,
-45,79,3,
-28,91,3,
-16,181,4,2,88,3,89,3,
-45,14,2,
-45,91,3,
-51,92,3,
-16,104,4,
-45,44,3,3,
-51,93,3,
-16,179,4,
-45,125,1,3,
-51,94,3,
-16,188,4,
-45,167,0,3,
-50,95,3,10,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-45,71,3,
-45,75,3,
-45,79,3,
-45,91,3,
-28,96,3,
-16,181,4,3,92,3,93,3,94,3,
-45,14,2,
-45,96,3,
-51,97,3,
-16,104,4,
-45,38,3,3,
-51,98,3,
-16,179,4,
-45,167,1,3,
-50,99,3,11,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-45,71,3,
-45,75,3,
-45,79,3,
-45,91,3,
-45,96,3,
-28,100,3,
-16,181,4,2,97,3,98,3,
-45,14,2,
-45,100,3,
-51,101,3,
-16,104,4,
-45,38,3,3,
-51,102,3,
-16,179,4,
-45,167,1,3,
-51,103,3,
-16,188,4,
-45,167,0,3,
-50,104,3,12,
-45,46,3,
-45,51,3,
-45,55,3,
-45,60,3,
-45,67,3,
-45,71,3,
-45,75,3,
-45,79,3,
-45,91,3,
-45,96,3,
-45,100,3,
-28,105,3,
-16,181,4,3,101,3,102,3,103,3,
-45,14,2,
-45,105,3,
-51,106,3,
-16,254,1,
-45,2,0,3,
-28,107,3,
-16,20,5,1,106,3,
-45,2,0,
-51,108,3,
-16,254,1,
-45,2,0,3,
-28,109,3,
-16,25,5,1,108,3,
-45,2,0,
-51,110,3,
-16,254,1,
-45,48,0,3,
-50,111,3,2,
-45,107,3,
-28,112,3,
-16,20,5,1,110,3,
-45,48,0,
-45,112,3,
-51,113,3,
-16,254,1,
-45,48,0,3,
-50,114,3,2,
-45,109,3,
-28,115,3,
-16,25,5,1,113,3,
-45,48,0,
-45,115,3,
-51,116,3,
-16,254,1,
-45,2,0,3,
-28,117,3,
-16,30,5,1,116,3,
-45,2,0,
-51,118,3,
-16,254,1,
-45,48,0,3,
-50,119,3,2,
-45,117,3,
-28,120,3,
-16,30,5,1,118,3,
-45,48,0,
-45,120,3,
-51,121,3,
-16,37,5,
-45,167,0,3,
-51,122,3,
-16,181,4,
-45,210,0,3,
-28,123,3,
-16,49,5,2,121,3,122,3,
-45,167,0,
-51,124,3,
-16,37,5,
-45,125,1,3,
-51,125,3,
-16,181,4,
-45,210,0,3,
-50,126,3,2,
-45,123,3,
-28,127,3,
-16,49,5,2,124,3,125,3,
-45,125,1,
-45,127,3,
-51,128,3,
-16,37,5,
-45,167,1,3,
-51,129,3,
-16,181,4,
-45,210,0,3,
-50,130,3,3,
-45,123,3,
-45,127,3,
-28,131,3,
-16,49,5,2,128,3,129,3,
-45,167,1,
-45,131,3,
-51,132,3,
-16,37,5,
-45,131,1,3,
-51,133,3,
-16,181,4,
-45,210,0,3,
-50,134,3,4,
-45,123,3,
-45,127,3,
-45,131,3,
-28,135,3,
-16,49,5,2,132,3,133,3,
-45,131,1,
-45,135,3,
-51,136,3,
-16,37,5,
-45,167,0,3,
-51,137,3,
-16,69,5,
-45,125,1,3,
-28,138,3,
-16,76,5,2,136,3,137,3,
-45,167,0,
-51,139,3,
-16,37,5,
-45,125,1,3,
-51,140,3,
-16,69,5,
-45,125,1,3,
-50,141,3,2,
-45,138,3,
-28,142,3,
-16,76,5,2,139,3,140,3,
-45,125,1,
-45,142,3,
-51,143,3,
-16,37,5,
-45,167,1,3,
-51,144,3,
-16,69,5,
-45,125,1,3,
-50,145,3,3,
-45,138,3,
-45,142,3,
-28,146,3,
-16,76,5,2,143,3,144,3,
-45,167,1,
-45,146,3,
-51,147,3,
-16,37,5,
-45,131,1,3,
-51,148,3,
-16,69,5,
-45,125,1,3,
-50,149,3,4,
-45,138,3,
-45,142,3,
-45,146,3,
-28,150,3,
-16,76,5,2,147,3,148,3,
-45,131,1,
-45,150,3,
-51,151,3,
-16,96,5,
-45,14,2,3,
-51,152,3,
-16,100,5,
-45,14,2,3,
-28,153,3,
-16,104,5,2,151,3,152,3,
-45,14,2,
-51,154,3,
-16,96,5,
-45,14,2,3,
-51,155,3,
-16,100,5,
-45,14,2,3,
-28,156,3,
-16,116,5,2,154,3,155,3,
-45,14,2,
-51,157,3,
-16,96,5,
-45,14,2,3,
-51,158,3,
-16,100,5,
-45,14,2,3,
-28,159,3,
-16,126,5,2,157,3,158,3,
-45,14,2,
-51,160,3,
-16,96,5,
-45,14,2,3,
-51,161,3,
-16,100,5,
-45,14,2,3,
-28,162,3,
-16,136,5,2,160,3,161,3,
-45,14,2,
-51,163,3,
-16,96,5,
-45,14,2,3,
-51,164,3,
-16,100,5,
-45,14,2,3,
-28,165,3,
-16,151,5,2,163,3,164,3,
-45,14,2,
-51,166,3,
-16,96,5,
-45,14,2,3,
-51,167,3,
-16,100,5,
-45,14,2,3,
-28,168,3,
-16,166,5,2,166,3,167,3,
-45,14,2,
-51,169,3,
-16,96,5,
-45,14,2,3,
-51,170,3,
-16,100,5,
-45,14,2,3,
-28,171,3,
-16,179,5,2,169,3,170,3,
-45,14,2,
-51,172,3,
-16,96,5,
-45,14,2,3,
-51,173,3,
-16,100,5,
-45,14,2,3,
-28,174,3,
-16,192,5,2,172,3,173,3,
-45,14,2,
-51,175,3,
-16,96,5,
-45,14,2,3,
-51,176,3,
-16,100,5,
-45,14,2,3,
-28,177,3,
-16,206,5,2,175,3,176,3,
-45,14,2,
-51,178,3,
-16,96,5,
-45,14,2,3,
-51,179,3,
-16,100,5,
-45,14,2,3,
-28,180,3,
-16,220,5,2,178,3,179,3,
-45,14,2,
-51,181,3,
-16,96,5,
-45,14,2,3,
-51,182,3,
-16,100,5,
-45,14,2,3,
-28,183,3,
-16,235,5,2,181,3,182,3,
-45,14,2,
-51,184,3,
-16,96,5,
-45,14,2,3,
-51,185,3,
-16,100,5,
-45,14,2,3,
-28,186,3,
-16,250,5,2,184,3,185,3,
-45,14,2,
-51,187,3,
-16,96,5,
-45,14,2,3,
-51,188,3,
-16,100,5,
-45,14,2,3,
-28,189,3,
-16,4,6,2,187,3,188,3,
-45,14,2,
-51,190,3,
-16,96,5,
-45,14,2,3,
-51,191,3,
-16,100,5,
-45,14,2,3,
-28,192,3,
-16,15,6,2,190,3,191,3,
-45,14,2,
-51,193,3,
-16,96,5,
-45,14,2,3,
-51,194,3,
-16,100,5,
-45,14,2,3,
-28,195,3,
-16,30,6,2,193,3,194,3,
-45,14,2,
-51,196,3,
-16,104,4,
-45,3,2,3,
-51,197,3,
-16,43,6,
-45,3,2,3,
-28,198,3,
-16,45,6,2,196,3,197,3,
-45,175,0,
-51,199,3,
-16,96,5,
-45,14,2,3,
-51,200,3,
-16,100,5,
-45,14,2,3,
-28,201,3,
-16,70,6,2,199,3,200,3,
-45,14,2,
-51,202,3,
-16,96,5,
-45,14,2,3,
-51,203,3,
-16,100,5,
-45,14,2,3,
-28,204,3,
-16,84,6,2,202,3,203,3,
-45,14,2,
-51,205,3,
-16,96,5,
-45,14,2,3,
-51,206,3,
-16,100,5,
-45,14,2,3,
-28,207,3,
-16,97,6,2,205,3,206,3,
-45,14,2,
-51,208,3,
-16,111,6,
-45,175,0,3,
-51,209,3,
-16,43,6,
-45,175,0,3,
-28,210,3,
-16,113,6,2,208,3,209,3,
-45,175,0,
-51,211,3,
-16,111,6,
-45,171,1,3,
-51,212,3,
-16,43,6,
-45,175,0,3,
-50,213,3,2,
-45,210,3,
-28,214,3,
-16,113,6,2,211,3,212,3,
-45,171,1,
-45,214,3,
-51,215,3,
-16,104,4,
-45,3,2,3,
-51,216,3,
-16,43,6,
-45,3,2,3,
-28,217,3,
-16,129,6,2,215,3,216,3,
-45,175,0,
-51,218,3,
-16,96,5,
-45,14,2,3,
-51,219,3,
-16,100,5,
-45,14,2,3,
-28,220,3,
-16,152,6,2,218,3,219,3,
-45,14,2,
-51,221,3,
-16,104,4,
-45,3,2,3,
-51,222,3,
-16,43,6,
-45,3,2,3,
-28,223,3,
-16,170,6,2,221,3,222,3,
-45,175,0,
-51,224,3,
-16,96,5,
-45,14,2,3,
-51,225,3,
-16,100,5,
-45,14,2,3,
-28,226,3,
-16,192,6,2,224,3,225,3,
-45,14,2,
-51,227,3,
-16,96,5,
-45,14,2,3,
-51,228,3,
-16,100,5,
-45,14,2,3,
-28,229,3,
-16,209,6,2,227,3,228,3,
-45,14,2,
-51,230,3,
-16,104,4,
-45,3,2,3,
-51,231,3,
-16,43,6,
-45,3,2,3,
-28,232,3,
-16,226,6,2,230,3,231,3,
-45,175,0,
-51,233,3,
-16,96,5,
-45,14,2,3,
-51,234,3,
-16,100,5,
-45,14,2,3,
-28,235,3,
-16,248,6,2,233,3,234,3,
-45,14,2,
-51,236,3,
-16,96,5,
-45,14,2,3,
-51,237,3,
-16,100,5,
-45,14,2,3,
-28,238,3,
-16,9,7,2,236,3,237,3,
-45,14,2,
-51,239,3,
-16,96,5,
-45,14,2,3,
-51,240,3,
-16,100,5,
-45,14,2,3,
-28,241,3,
-16,26,7,2,239,3,240,3,
-45,14,2,
-51,242,3,
-16,96,5,
-45,14,2,3,
-51,243,3,
-16,100,5,
-45,14,2,3,
-28,244,3,
-16,42,7,2,242,3,243,3,
-45,14,2,
-51,245,3,
-16,57,7,
-45,171,1,3,
-28,246,3,
-16,63,7,1,245,3,
-45,175,0,
-51,247,3,
-16,86,7,
-45,171,1,3,
-51,248,3,
-16,98,7,
-45,175,0,3,
-51,249,3,
-16,104,7,
-45,171,1,3,
-28,250,3,
-16,113,7,3,247,3,248,3,249,3,
-45,171,1,
-51,251,3,
-16,57,7,
-45,171,1,3,
-28,252,3,
-16,140,7,1,251,3,
-45,175,0,
-51,253,3,
-16,164,7,
-45,171,1,3,
-51,254,3,
-16,174,7,
-45,175,0,3,
-28,255,3,
-16,178,7,2,253,3,254,3,
-45,171,1,
-51,0,4,
-16,213,7,
-45,171,1,3,
-51,1,4,
-16,225,7,
-45,171,1,3,
-28,2,4,
-16,234,7,2,0,4,1,4,
-45,171,1,
-51,3,4,
-16,96,5,
-45,14,2,3,
-51,4,4,
-16,100,5,
-45,14,2,3,
-28,5,4,
-16,6,8,2,3,4,4,4,
-45,14,2,
-51,6,4,
-16,96,5,
-45,14,2,3,
-51,7,4,
-16,100,5,
-45,14,2,3,
-28,8,4,
-16,16,8,2,6,4,7,4,
-45,14,2,
-51,9,4,
-16,96,5,
-45,14,2,3,
-51,10,4,
-16,100,5,
-45,14,2,3,
-28,11,4,
-16,33,8,2,9,4,10,4,
-45,14,2,
-51,12,4,
-16,96,5,
-45,14,2,3,
-51,13,4,
-16,100,5,
-45,14,2,3,
-28,14,4,
-16,45,8,2,12,4,13,4,
-45,14,2,
-51,15,4,
-16,57,7,
-45,14,2,3,
-28,16,4,
-16,62,8,1,15,4,
-45,14,2,
-51,17,4,
-16,57,7,
-45,131,1,3,
-50,18,4,2,
-45,16,4,
-28,19,4,
-16,62,8,1,17,4,
-45,131,1,
-45,19,4,
-51,20,4,
-16,254,1,
-45,167,1,3,
-28,21,4,
-16,71,8,1,20,4,
-45,125,1,
-51,22,4,
-16,20,1,
-45,125,1,3,
-51,23,4,
-16,159,1,
-45,125,1,3,
-50,24,4,3,
-45,169,1,
-45,174,1,
-28,25,4,
-16,123,2,2,22,4,23,4,
-45,167,0,
-45,25,4,
-51,26,4,
-16,20,1,
-45,3,2,3,
-51,27,4,
-16,159,1,
-45,3,2,3,
-50,28,4,4,
-45,169,1,
-45,174,1,
-45,25,4,
-28,29,4,
-16,123,2,2,26,4,27,4,
-45,175,0,
-45,29,4,132,0,
+48,229,3,
+52,1,0,
+17,2,0,
+49,2,0,10,0,3,
+29,3,0,
+17,19,0,1,1,0,
+46,2,0,
+52,4,0,
+17,19,0,
+46,2,0,3,
+29,5,0,
+17,2,0,1,4,0,
+46,2,0,
+52,6,0,
+17,27,0,
+46,2,0,3,
+29,7,0,
+17,33,0,1,6,0,
+46,2,0,
+52,8,0,
+17,27,0,
+46,2,0,3,
+29,9,0,
+17,37,0,1,8,0,
+46,2,0,
+52,10,0,
+17,27,0,
+46,2,0,3,
+29,11,0,
+17,41,0,1,10,0,
+46,2,0,
+52,12,0,
+17,45,0,
+46,2,0,3,
+29,13,0,
+17,47,0,1,12,0,
+46,2,0,
+52,14,0,
+17,45,0,
+46,2,0,3,
+29,15,0,
+17,52,0,1,14,0,
+46,2,0,
+52,16,0,
+17,57,0,
+46,2,0,3,
+52,17,0,
+17,45,0,
+46,2,0,3,
+29,18,0,
+17,59,0,2,16,0,17,0,
+46,2,0,
+52,19,0,
+17,64,0,
+46,2,0,3,
+51,20,0,2,
+46,18,0,
+29,21,0,
+17,59,0,1,19,0,
+46,2,0,
+46,21,0,
+52,22,0,
+17,45,0,
+46,2,0,3,
+29,23,0,
+17,73,0,1,22,0,
+46,2,0,
+52,24,0,
+17,45,0,
+46,2,0,3,
+29,25,0,
+17,78,0,1,24,0,
+46,2,0,
+52,26,0,
+17,45,0,
+46,2,0,3,
+29,27,0,
+17,83,0,1,26,0,
+46,2,0,
+52,28,0,
+17,45,0,
+46,2,0,3,
+29,29,0,
+17,88,0,1,28,0,
+46,2,0,
+52,30,0,
+17,45,0,
+46,2,0,3,
+29,31,0,
+17,94,0,1,30,0,
+46,2,0,
+52,32,0,
+17,45,0,
+46,2,0,3,
+29,33,0,
+17,100,0,1,32,0,
+46,2,0,
+52,34,0,
+17,45,0,
+46,2,0,3,
+52,35,0,
+17,57,0,
+46,2,0,3,
+29,36,0,
+17,106,0,2,34,0,35,0,
+46,2,0,
+52,37,0,
+17,45,0,
+46,2,0,3,
+29,38,0,
+17,110,0,1,37,0,
+46,2,0,
+52,39,0,
+17,45,0,
+46,2,0,3,
+29,40,0,
+17,114,0,1,39,0,
+46,2,0,
+52,41,0,
+17,45,0,
+46,2,0,3,
+29,42,0,
+17,118,0,1,41,0,
+46,2,0,
+52,43,0,
+17,45,0,
+46,2,0,3,
+29,44,0,
+17,123,0,1,43,0,
+46,2,0,
+52,45,0,
+17,45,0,
+46,2,0,3,
+29,46,0,
+17,128,0,1,45,0,
+46,2,0,
+52,47,0,
+17,2,0,
+49,48,0,133,0,3,
+51,49,0,2,
+46,3,0,
+29,50,0,
+17,19,0,1,47,0,
+46,48,0,
+46,50,0,
+52,51,0,
+17,19,0,
+46,48,0,3,
+51,52,0,2,
+46,5,0,
+29,53,0,
+17,2,0,1,51,0,
+46,48,0,
+46,53,0,
+52,54,0,
+17,27,0,
+46,48,0,3,
+51,55,0,2,
+46,7,0,
+29,56,0,
+17,33,0,1,54,0,
+46,48,0,
+46,56,0,
+52,57,0,
+17,27,0,
+46,48,0,3,
+51,58,0,2,
+46,9,0,
+29,59,0,
+17,37,0,1,57,0,
+46,48,0,
+46,59,0,
+52,60,0,
+17,27,0,
+46,48,0,3,
+51,61,0,2,
+46,11,0,
+29,62,0,
+17,41,0,1,60,0,
+46,48,0,
+46,62,0,
+52,63,0,
+17,45,0,
+46,48,0,3,
+51,64,0,2,
+46,13,0,
+29,65,0,
+17,47,0,1,63,0,
+46,48,0,
+46,65,0,
+52,66,0,
+17,45,0,
+46,48,0,3,
+51,67,0,2,
+46,15,0,
+29,68,0,
+17,52,0,1,66,0,
+46,48,0,
+46,68,0,
+52,69,0,
+17,57,0,
+46,48,0,3,
+52,70,0,
+17,45,0,
+46,48,0,3,
+51,71,0,3,
+46,18,0,
+46,21,0,
+29,72,0,
+17,59,0,2,69,0,70,0,
+46,48,0,
+46,72,0,
+52,73,0,
+17,64,0,
+46,48,0,3,
+51,74,0,4,
+46,18,0,
+46,21,0,
+46,72,0,
+29,75,0,
+17,59,0,1,73,0,
+46,48,0,
+46,75,0,
+52,76,0,
+17,45,0,
+46,48,0,3,
+51,77,0,2,
+46,23,0,
+29,78,0,
+17,73,0,1,76,0,
+46,48,0,
+46,78,0,
+52,79,0,
+17,45,0,
+46,48,0,3,
+51,80,0,2,
+46,25,0,
+29,81,0,
+17,78,0,1,79,0,
+46,48,0,
+46,81,0,
+52,82,0,
+17,45,0,
+46,48,0,3,
+51,83,0,2,
+46,27,0,
+29,84,0,
+17,83,0,1,82,0,
+46,48,0,
+46,84,0,
+52,85,0,
+17,45,0,
+46,48,0,3,
+51,86,0,2,
+46,29,0,
+29,87,0,
+17,88,0,1,85,0,
+46,48,0,
+46,87,0,
+52,88,0,
+17,45,0,
+46,48,0,3,
+51,89,0,2,
+46,31,0,
+29,90,0,
+17,94,0,1,88,0,
+46,48,0,
+46,90,0,
+52,91,0,
+17,45,0,
+46,48,0,3,
+51,92,0,2,
+46,33,0,
+29,93,0,
+17,100,0,1,91,0,
+46,48,0,
+46,93,0,
+52,94,0,
+17,45,0,
+46,48,0,3,
+52,95,0,
+17,57,0,
+46,48,0,3,
+51,96,0,2,
+46,36,0,
+29,97,0,
+17,106,0,2,94,0,95,0,
+46,48,0,
+46,97,0,
+52,98,0,
+17,45,0,
+46,48,0,3,
+51,99,0,2,
+46,38,0,
+29,100,0,
+17,110,0,1,98,0,
+46,48,0,
+46,100,0,
+52,101,0,
+17,45,0,
+46,48,0,3,
+51,102,0,2,
+46,40,0,
+29,103,0,
+17,114,0,1,101,0,
+46,48,0,
+46,103,0,
+52,104,0,
+17,45,0,
+46,48,0,3,
+51,105,0,2,
+46,42,0,
+29,106,0,
+17,118,0,1,104,0,
+46,48,0,
+46,106,0,
+52,107,0,
+17,45,0,
+46,48,0,3,
+51,108,0,2,
+46,44,0,
+29,109,0,
+17,123,0,1,107,0,
+46,48,0,
+46,109,0,
+52,110,0,
+17,45,0,
+46,48,0,3,
+51,111,0,2,
+46,46,0,
+29,112,0,
+17,128,0,1,110,0,
+46,48,0,
+46,112,0,
+52,113,0,
+17,45,0,
+46,2,0,3,
+29,114,0,
+17,143,0,1,113,0,
+46,2,0,
+52,115,0,
+17,45,0,
+46,48,0,3,
+51,116,0,2,
+46,114,0,
+29,117,0,
+17,143,0,1,115,0,
+46,48,0,
+46,117,0,
+52,118,0,
+17,45,0,
+46,2,0,3,
+29,119,0,
+17,155,0,1,118,0,
+46,2,0,
+52,120,0,
+17,45,0,
+46,48,0,3,
+51,121,0,2,
+46,119,0,
+29,122,0,
+17,155,0,1,120,0,
+46,48,0,
+46,122,0,
+52,123,0,
+17,45,0,
+49,124,0,159,0,3,
+51,125,0,3,
+46,119,0,
+46,122,0,
+29,126,0,
+17,155,0,1,123,0,
+46,124,0,
+46,126,0,
+52,127,0,
+17,45,0,
+46,2,0,3,
+29,128,0,
+17,169,0,1,127,0,
+46,2,0,
+52,129,0,
+17,45,0,
+46,48,0,3,
+51,130,0,2,
+46,128,0,
+29,131,0,
+17,169,0,1,129,0,
+46,48,0,
+46,131,0,
+52,132,0,
+17,45,0,
+46,124,0,3,
+51,133,0,3,
+46,128,0,
+46,131,0,
+29,134,0,
+17,169,0,1,132,0,
+46,124,0,
+46,134,0,
+52,135,0,
+17,45,0,
+46,2,0,3,
+29,136,0,
+17,174,0,1,135,0,
+46,2,0,
+52,137,0,
+17,45,0,
+46,48,0,3,
+51,138,0,2,
+46,136,0,
+29,139,0,
+17,174,0,1,137,0,
+46,48,0,
+46,139,0,
+52,140,0,
+17,45,0,
+46,2,0,3,
+29,141,0,
+17,180,0,1,140,0,
+46,2,0,
+52,142,0,
+17,45,0,
+46,48,0,3,
+51,143,0,2,
+46,141,0,
+29,144,0,
+17,180,0,1,142,0,
+46,48,0,
+46,144,0,
+52,145,0,
+17,45,0,
+46,2,0,3,
+29,146,0,
+17,186,0,1,145,0,
+46,2,0,
+52,147,0,
+17,45,0,
+46,48,0,3,
+51,148,0,2,
+46,146,0,
+29,149,0,
+17,186,0,1,147,0,
+46,48,0,
+46,149,0,
+52,150,0,
+17,45,0,
+46,2,0,3,
+29,151,0,
+17,192,0,1,150,0,
+46,2,0,
+52,152,0,
+17,45,0,
+46,48,0,3,
+51,153,0,2,
+46,151,0,
+29,154,0,
+17,192,0,1,152,0,
+46,48,0,
+46,154,0,
+52,155,0,
+17,45,0,
+46,2,0,3,
+29,156,0,
+17,202,0,1,155,0,
+46,2,0,
+52,157,0,
+17,45,0,
+46,48,0,3,
+51,158,0,2,
+46,156,0,
+29,159,0,
+17,202,0,1,157,0,
+46,48,0,
+46,159,0,
+52,160,0,
+17,45,0,
+46,2,0,3,
+29,161,0,
+17,207,0,1,160,0,
+46,2,0,
+52,162,0,
+17,45,0,
+46,48,0,3,
+51,163,0,2,
+46,161,0,
+29,164,0,
+17,207,0,1,162,0,
+46,48,0,
+46,164,0,
+52,165,0,
+17,45,0,
+46,2,0,3,
+52,166,0,
+17,57,0,
+49,167,0,213,0,3,
+29,168,0,
+17,219,0,2,165,0,166,0,
+46,2,0,
+52,169,0,
+17,45,0,
+46,2,0,3,
+52,170,0,
+17,57,0,
+46,2,0,3,
+51,171,0,2,
+46,168,0,
+29,172,0,
+17,219,0,2,169,0,170,0,
+46,2,0,
+46,172,0,
+52,173,0,
+17,45,0,
+46,48,0,3,
+52,174,0,
+17,57,0,
+49,175,0,223,0,3,
+51,176,0,3,
+46,168,0,
+46,172,0,
+29,177,0,
+17,219,0,2,173,0,174,0,
+46,48,0,
+46,177,0,
+52,178,0,
+17,45,0,
+46,48,0,3,
+52,179,0,
+17,57,0,
+46,48,0,3,
+51,180,0,4,
+46,168,0,
+46,172,0,
+46,177,0,
+29,181,0,
+17,219,0,2,178,0,179,0,
+46,48,0,
+46,181,0,
+52,182,0,
+17,45,0,
+46,2,0,3,
+52,183,0,
+36,
+16,4,228,0,
+46,2,0,3,
+29,184,0,
+17,230,0,2,182,0,183,0,
+46,2,0,
+52,185,0,
+17,45,0,
+46,48,0,3,
+52,186,0,
+36,
+16,4,228,0,
+46,48,0,3,
+51,187,0,2,
+46,184,0,
+29,188,0,
+17,230,0,2,185,0,186,0,
+46,48,0,
+46,188,0,
+52,189,0,
+17,45,0,
+46,2,0,3,
+52,190,0,
+17,57,0,
+46,2,0,3,
+29,191,0,
+17,235,0,2,189,0,190,0,
+46,2,0,
+52,192,0,
+17,45,0,
+46,2,0,3,
+52,193,0,
+17,57,0,
+46,167,0,3,
+51,194,0,2,
+46,191,0,
+29,195,0,
+17,235,0,2,192,0,193,0,
+46,2,0,
+46,195,0,
+52,196,0,
+17,45,0,
+46,48,0,3,
+52,197,0,
+17,57,0,
+46,48,0,3,
+51,198,0,3,
+46,191,0,
+46,195,0,
+29,199,0,
+17,235,0,2,196,0,197,0,
+46,48,0,
+46,199,0,
+52,200,0,
+17,45,0,
+46,48,0,3,
+52,201,0,
+17,57,0,
+46,175,0,3,
+51,202,0,4,
+46,191,0,
+46,195,0,
+46,199,0,
+29,203,0,
+17,235,0,2,200,0,201,0,
+46,48,0,
+46,203,0,
+52,204,0,
+17,45,0,
+46,124,0,3,
+52,205,0,
+17,57,0,
+46,124,0,3,
+51,206,0,5,
+46,191,0,
+46,195,0,
+46,199,0,
+46,203,0,
+29,207,0,
+17,235,0,2,204,0,205,0,
+46,124,0,
+46,207,0,
+52,208,0,
+17,45,0,
+46,124,0,3,
+52,209,0,
+17,57,0,
+49,210,0,239,0,3,
+51,211,0,6,
+46,191,0,
+46,195,0,
+46,199,0,
+46,203,0,
+46,207,0,
+29,212,0,
+17,235,0,2,208,0,209,0,
+46,124,0,
+46,212,0,
+52,213,0,
+17,45,0,
+46,2,0,3,
+52,214,0,
+17,57,0,
+46,2,0,3,
+29,215,0,
+17,243,0,2,213,0,214,0,
+46,2,0,
+52,216,0,
+17,45,0,
+46,2,0,3,
+52,217,0,
+17,57,0,
+46,167,0,3,
+51,218,0,2,
+46,215,0,
+29,219,0,
+17,243,0,2,216,0,217,0,
+46,2,0,
+46,219,0,
+52,220,0,
+17,45,0,
+46,48,0,3,
+52,221,0,
+17,57,0,
+46,48,0,3,
+51,222,0,3,
+46,215,0,
+46,219,0,
+29,223,0,
+17,243,0,2,220,0,221,0,
+46,48,0,
+46,223,0,
+52,224,0,
+17,45,0,
+46,48,0,3,
+52,225,0,
+17,57,0,
+46,175,0,3,
+51,226,0,4,
+46,215,0,
+46,219,0,
+46,223,0,
+29,227,0,
+17,243,0,2,224,0,225,0,
+46,48,0,
+46,227,0,
+52,228,0,
+17,45,0,
+46,124,0,3,
+52,229,0,
+17,57,0,
+46,124,0,3,
+51,230,0,5,
+46,215,0,
+46,219,0,
+46,223,0,
+46,227,0,
+29,231,0,
+17,243,0,2,228,0,229,0,
+46,124,0,
+46,231,0,
+52,232,0,
+17,45,0,
+46,124,0,3,
+52,233,0,
+17,57,0,
+46,210,0,3,
+51,234,0,6,
+46,215,0,
+46,219,0,
+46,223,0,
+46,227,0,
+46,231,0,
+29,235,0,
+17,243,0,2,232,0,233,0,
+46,124,0,
+46,235,0,
+52,236,0,
+17,45,0,
+46,2,0,3,
+52,237,0,
+17,247,0,
+46,2,0,3,
+52,238,0,
+17,254,0,
+46,2,0,3,
+29,239,0,
+17,5,1,3,236,0,237,0,238,0,
+46,2,0,
+52,240,0,
+17,45,0,
+46,2,0,3,
+52,241,0,
+17,247,0,
+46,167,0,3,
+52,242,0,
+17,254,0,
+46,167,0,3,
+51,243,0,2,
+46,239,0,
+29,244,0,
+17,5,1,3,240,0,241,0,242,0,
+46,2,0,
+46,244,0,
+52,245,0,
+17,45,0,
+46,48,0,3,
+52,246,0,
+17,247,0,
+46,48,0,3,
+52,247,0,
+17,254,0,
+46,48,0,3,
+51,248,0,3,
+46,239,0,
+46,244,0,
+29,249,0,
+17,5,1,3,245,0,246,0,247,0,
+46,48,0,
+46,249,0,
+52,250,0,
+17,45,0,
+46,48,0,3,
+52,251,0,
+17,247,0,
+46,175,0,3,
+52,252,0,
+17,254,0,
+46,175,0,3,
+51,253,0,4,
+46,239,0,
+46,244,0,
+46,249,0,
+29,254,0,
+17,5,1,3,250,0,251,0,252,0,
+46,48,0,
+46,254,0,
+52,255,0,
+17,45,0,
+46,124,0,3,
+52,0,1,
+17,247,0,
+46,124,0,3,
+52,1,1,
+17,254,0,
+46,124,0,3,
+51,2,1,5,
+46,239,0,
+46,244,0,
+46,249,0,
+46,254,0,
+29,3,1,
+17,5,1,3,255,0,0,1,1,1,
+46,124,0,
+46,3,1,
+52,4,1,
+17,45,0,
+46,124,0,3,
+52,5,1,
+17,247,0,
+46,210,0,3,
+52,6,1,
+17,254,0,
+46,210,0,3,
+51,7,1,6,
+46,239,0,
+46,244,0,
+46,249,0,
+46,254,0,
+46,3,1,
+29,8,1,
+17,5,1,3,4,1,5,1,6,1,
+46,124,0,
+46,8,1,
+52,9,1,
+17,45,0,
+46,2,0,3,
+29,10,1,
+17,11,1,1,9,1,
+46,2,0,
+52,11,1,
+17,45,0,
+46,48,0,3,
+51,12,1,2,
+46,10,1,
+29,13,1,
+17,11,1,1,11,1,
+46,48,0,
+46,13,1,
+52,14,1,
+17,45,0,
+46,2,0,3,
+52,15,1,
+17,57,0,
+46,2,0,3,
+52,16,1,
+17,20,1,
+46,2,0,3,
+29,17,1,
+17,22,1,3,14,1,15,1,16,1,
+46,2,0,
+52,18,1,
+17,45,0,
+46,2,0,3,
+52,19,1,
+17,57,0,
+46,2,0,3,
+52,20,1,
+17,20,1,
+46,167,0,3,
+51,21,1,2,
+46,17,1,
+29,22,1,
+17,22,1,3,18,1,19,1,20,1,
+46,2,0,
+46,22,1,
+52,23,1,
+17,45,0,
+46,48,0,3,
+52,24,1,
+17,57,0,
+46,48,0,3,
+52,25,1,
+17,20,1,
+46,48,0,3,
+51,26,1,3,
+46,17,1,
+46,22,1,
+29,27,1,
+17,22,1,3,23,1,24,1,25,1,
+46,48,0,
+46,27,1,
+52,28,1,
+17,45,0,
+46,48,0,3,
+52,29,1,
+17,57,0,
+46,48,0,3,
+52,30,1,
+17,20,1,
+46,175,0,3,
+51,31,1,4,
+46,17,1,
+46,22,1,
+46,27,1,
+29,32,1,
+17,22,1,3,28,1,29,1,30,1,
+46,48,0,
+46,32,1,
+52,33,1,
+17,45,0,
+46,2,0,3,
+52,34,1,
+17,57,0,
+46,2,0,3,
+52,35,1,
+17,20,1,
+49,36,1,26,1,3,
+51,37,1,5,
+46,17,1,
+46,22,1,
+46,27,1,
+46,32,1,
+29,38,1,
+17,22,1,3,33,1,34,1,35,1,
+46,2,0,
+46,38,1,
+52,39,1,
+17,45,0,
+46,48,0,3,
+52,40,1,
+17,57,0,
+46,48,0,3,
+52,41,1,
+17,20,1,
+46,36,1,3,
+51,42,1,6,
+46,17,1,
+46,22,1,
+46,27,1,
+46,32,1,
+46,38,1,
+29,43,1,
+17,22,1,3,39,1,40,1,41,1,
+46,48,0,
+46,43,1,
+52,44,1,
+17,45,0,
+46,124,0,3,
+52,45,1,
+17,57,0,
+46,124,0,3,
+52,46,1,
+17,20,1,
+46,36,1,3,
+51,47,1,7,
+46,17,1,
+46,22,1,
+46,27,1,
+46,32,1,
+46,38,1,
+46,43,1,
+29,48,1,
+17,22,1,3,44,1,45,1,46,1,
+46,124,0,
+46,48,1,
+52,49,1,
+17,45,0,
+46,36,1,3,
+52,50,1,
+17,57,0,
+46,36,1,3,
+52,51,1,
+17,20,1,
+46,36,1,3,
+51,52,1,8,
+46,17,1,
+46,22,1,
+46,27,1,
+46,32,1,
+46,38,1,
+46,43,1,
+46,48,1,
+29,53,1,
+17,22,1,3,49,1,50,1,51,1,
+46,36,1,
+46,53,1,
+52,54,1,
+17,36,1,
+46,2,0,3,
+52,55,1,
+17,45,0,
+46,2,0,3,
+29,56,1,
+17,41,1,2,54,1,55,1,
+46,2,0,
+52,57,1,
+17,36,1,
+46,167,0,3,
+52,58,1,
+17,45,0,
+46,2,0,3,
+51,59,1,2,
+46,56,1,
+29,60,1,
+17,41,1,2,57,1,58,1,
+46,2,0,
+46,60,1,
+52,61,1,
+17,36,1,
+46,48,0,3,
+52,62,1,
+17,45,0,
+46,48,0,3,
+51,63,1,3,
+46,56,1,
+46,60,1,
+29,64,1,
+17,41,1,2,61,1,62,1,
+46,48,0,
+46,64,1,
+52,65,1,
+17,36,1,
+46,175,0,3,
+52,66,1,
+17,45,0,
+46,48,0,3,
+51,67,1,4,
+46,56,1,
+46,60,1,
+46,64,1,
+29,68,1,
+17,41,1,2,65,1,66,1,
+46,48,0,
+46,68,1,
+52,69,1,
+17,46,1,
+46,2,0,3,
+52,70,1,
+17,52,1,
+46,2,0,3,
+52,71,1,
+17,45,0,
+46,2,0,3,
+29,72,1,
+17,58,1,3,69,1,70,1,71,1,
+46,2,0,
+52,73,1,
+17,46,1,
+46,167,0,3,
+52,74,1,
+17,52,1,
+46,167,0,3,
+52,75,1,
+17,45,0,
+46,2,0,3,
+51,76,1,2,
+46,72,1,
+29,77,1,
+17,58,1,3,73,1,74,1,75,1,
+46,2,0,
+46,77,1,
+52,78,1,
+17,46,1,
+46,48,0,3,
+52,79,1,
+17,52,1,
+46,48,0,3,
+52,80,1,
+17,45,0,
+46,48,0,3,
+51,81,1,3,
+46,72,1,
+46,77,1,
+29,82,1,
+17,58,1,3,78,1,79,1,80,1,
+46,48,0,
+46,82,1,
+52,83,1,
+17,46,1,
+46,175,0,3,
+52,84,1,
+17,52,1,
+46,175,0,3,
+52,85,1,
+17,45,0,
+46,48,0,3,
+51,86,1,4,
+46,72,1,
+46,77,1,
+46,82,1,
+29,87,1,
+17,58,1,3,83,1,84,1,85,1,
+46,48,0,
+46,87,1,
+52,88,1,
+17,45,0,
+46,2,0,3,
+29,89,1,
+17,69,1,1,88,1,
+46,36,1,
+52,90,1,
+17,45,0,
+46,2,0,3,
+29,91,1,
+17,75,1,1,90,1,
+46,36,1,
+52,92,1,
+17,81,1,
+46,2,0,3,
+29,93,1,
+17,87,1,1,92,1,
+46,124,0,
+52,94,1,
+17,81,1,
+46,2,0,3,
+29,95,1,
+17,102,1,1,94,1,
+49,96,1,118,1,
+52,97,1,
+17,81,1,
+46,124,0,3,
+29,98,1,
+17,128,1,1,97,1,
+46,2,0,
+52,99,1,
+17,81,1,
+46,96,1,3,
+29,100,1,
+17,143,1,1,99,1,
+46,2,0,
+52,101,1,
+17,20,1,
+46,2,0,3,
+52,102,1,
+17,159,1,
+46,2,0,3,
+52,103,1,
+17,161,1,
+46,2,0,3,
+29,104,1,
+17,163,1,3,101,1,102,1,103,1,
+46,2,0,
+52,105,1,
+17,20,1,
+46,48,0,3,
+52,106,1,
+17,159,1,
+46,48,0,3,
+52,107,1,
+17,161,1,
+46,48,0,3,
+51,108,1,2,
+46,104,1,
+29,109,1,
+17,163,1,3,105,1,106,1,107,1,
+46,48,0,
+46,109,1,
+52,110,1,
+17,45,0,
+46,2,0,3,
+52,111,1,
+36,
+16,4,110,0,
+46,124,0,3,
+29,112,1,
+36,
+16,64,167,1,2,110,1,111,1,
+46,2,0,
+52,113,1,
+17,45,0,
+46,48,0,3,
+52,114,1,
+36,
+16,4,110,0,
+46,124,0,3,
+51,115,1,2,
+46,112,1,
+29,116,1,
+36,
+16,64,167,1,2,113,1,114,1,
+46,48,0,
+46,116,1,
+52,117,1,
+17,45,0,
+46,2,0,3,
+52,118,1,
+36,
+16,2,110,0,
+46,124,0,3,
+29,119,1,
+17,173,1,2,117,1,118,1,
+46,2,0,
+52,120,1,
+17,45,0,
+46,48,0,3,
+52,121,1,
+36,
+16,2,110,0,
+46,124,0,3,
+51,122,1,2,
+46,119,1,
+29,123,1,
+17,173,1,2,120,1,121,1,
+46,48,0,
+46,123,1,
+52,124,1,
+17,179,1,
+49,125,1,181,1,3,
+29,126,1,
+17,188,1,1,124,1,
+49,127,1,202,1,
+52,128,1,
+17,179,1,
+46,125,1,3,
+29,129,1,
+17,207,1,1,128,1,
+46,127,1,
+52,130,1,
+17,179,1,
+49,131,1,221,1,3,
+29,132,1,
+17,228,1,1,130,1,
+46,127,1,
+52,133,1,
+17,179,1,
+46,131,1,3,
+29,134,1,
+17,241,1,1,133,1,
+46,127,1,
+52,135,1,
+17,254,1,
+46,127,1,3,
+29,136,1,
+17,0,2,1,135,1,
+46,125,1,
+52,137,1,
+17,254,1,
+46,127,1,3,
+29,138,1,
+17,16,2,1,137,1,
+46,125,1,
+52,139,1,
+17,254,1,
+46,127,1,3,
+29,140,1,
+17,32,2,1,139,1,
+46,131,1,
+52,141,1,
+17,254,1,
+46,127,1,3,
+29,142,1,
+17,47,2,1,141,1,
+46,131,1,
+52,143,1,
+17,179,1,
+46,125,1,3,
+29,144,1,
+17,62,2,1,143,1,
+46,127,1,
+52,145,1,
+17,179,1,
+46,127,1,3,
+29,146,1,
+17,75,2,1,145,1,
+46,125,1,
+52,147,1,
+17,45,0,
+46,2,0,3,
+29,148,1,
+17,90,2,1,147,1,
+46,167,0,
+52,149,1,
+17,45,0,
+46,48,0,3,
+51,150,1,2,
+46,148,1,
+29,151,1,
+17,90,2,1,149,1,
+46,175,0,
+46,151,1,
+52,152,1,
+17,97,2,
+46,2,0,3,
+52,153,1,
+17,100,2,
+46,2,0,3,
+29,154,1,
+17,103,2,2,152,1,153,1,
+46,167,0,
+52,155,1,
+17,97,2,
+46,48,0,3,
+52,156,1,
+17,100,2,
+46,48,0,3,
+51,157,1,2,
+46,154,1,
+29,158,1,
+17,103,2,2,155,1,156,1,
+46,175,0,
+46,158,1,
+52,159,1,
+17,45,0,
+46,2,0,3,
+52,160,1,
+17,57,0,
+46,2,0,3,
+29,161,1,
+17,112,2,2,159,1,160,1,
+46,167,0,
+52,162,1,
+17,45,0,
+46,48,0,3,
+52,163,1,
+17,57,0,
+46,48,0,3,
+51,164,1,2,
+46,161,1,
+29,165,1,
+17,112,2,2,162,1,163,1,
+46,175,0,
+46,165,1,
+52,166,1,
+17,45,0,
+49,167,1,116,2,3,
+52,168,1,
+17,57,0,
+46,167,1,3,
+29,169,1,
+17,123,2,2,166,1,168,1,
+46,167,1,
+52,170,1,
+17,45,0,
+49,171,1,129,2,3,
+52,172,1,
+17,57,0,
+46,171,1,3,
+51,173,1,2,
+46,169,1,
+29,174,1,
+17,123,2,2,170,1,172,1,
+46,171,1,
+46,174,1,
+52,175,1,
+17,45,0,
+46,2,0,3,
+29,176,1,
+17,135,2,1,175,1,
+46,2,0,
+52,177,1,
+17,45,0,
+46,48,0,3,
+51,178,1,2,
+46,176,1,
+29,179,1,
+17,135,2,1,177,1,
+46,48,0,
+46,179,1,
+52,180,1,
+17,145,2,
+46,2,0,3,
+52,181,1,
+17,147,2,
+46,2,0,3,
+52,182,1,
+17,149,2,
+46,2,0,3,
+29,183,1,
+17,154,2,3,180,1,181,1,182,1,
+46,2,0,
+52,184,1,
+17,145,2,
+46,48,0,3,
+52,185,1,
+17,147,2,
+46,48,0,3,
+52,186,1,
+17,149,2,
+46,48,0,3,
+51,187,1,2,
+46,183,1,
+29,188,1,
+17,154,2,3,184,1,185,1,186,1,
+46,48,0,
+46,188,1,
+52,189,1,
+17,147,2,
+46,2,0,3,
+52,190,1,
+17,145,2,
+46,2,0,3,
+29,191,1,
+17,166,2,2,189,1,190,1,
+46,2,0,
+52,192,1,
+17,147,2,
+46,48,0,3,
+52,193,1,
+17,145,2,
+46,48,0,3,
+51,194,1,2,
+46,191,1,
+29,195,1,
+17,166,2,2,192,1,193,1,
+46,48,0,
+46,195,1,
+52,196,1,
+17,147,2,
+46,2,0,3,
+52,197,1,
+17,145,2,
+46,2,0,3,
+52,198,1,
+17,174,2,
+46,167,0,3,
+29,199,1,
+17,178,2,3,196,1,197,1,198,1,
+46,2,0,
+52,200,1,
+17,147,2,
+46,48,0,3,
+52,201,1,
+17,145,2,
+46,48,0,3,
+52,202,1,
+17,174,2,
+46,175,0,3,
+51,203,1,2,
+46,199,1,
+29,204,1,
+17,178,2,3,200,1,201,1,202,1,
+46,48,0,
+46,204,1,
+52,205,1,
+17,45,0,
+49,206,1,186,2,3,
+52,207,1,
+17,57,0,
+46,206,1,3,
+29,208,1,
+17,191,2,2,205,1,207,1,
+46,206,1,
+52,209,1,
+17,45,0,
+49,210,1,206,2,3,
+52,211,1,
+17,57,0,
+46,210,1,3,
+51,212,1,2,
+46,208,1,
+29,213,1,
+17,191,2,2,209,1,211,1,
+46,210,1,
+46,213,1,
+52,214,1,
+17,161,1,
+46,125,1,3,
+52,215,1,
+17,212,2,
+46,125,1,3,
+29,216,1,
+17,214,2,2,214,1,215,1,
+49,217,1,227,2,
+52,218,1,
+17,161,1,
+46,167,1,3,
+52,219,1,
+17,212,2,
+46,167,1,3,
+51,220,1,2,
+46,216,1,
+29,221,1,
+17,214,2,2,218,1,219,1,
+49,222,1,236,2,
+46,221,1,
+52,223,1,
+17,161,1,
+46,131,1,3,
+52,224,1,
+17,212,2,
+46,131,1,3,
+51,225,1,3,
+46,216,1,
+46,221,1,
+29,226,1,
+17,214,2,2,223,1,224,1,
+49,227,1,245,2,
+46,226,1,
+52,228,1,
+17,161,1,
+46,167,1,3,
+52,229,1,
+17,212,2,
+46,125,1,3,
+51,230,1,4,
+46,216,1,
+46,221,1,
+46,226,1,
+29,231,1,
+17,214,2,2,228,1,229,1,
+49,232,1,254,2,
+46,231,1,
+52,233,1,
+17,161,1,
+46,125,1,3,
+52,234,1,
+17,212,2,
+46,167,1,3,
+51,235,1,5,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+29,236,1,
+17,214,2,2,233,1,234,1,
+49,237,1,7,3,
+46,236,1,
+52,238,1,
+17,161,1,
+46,131,1,3,
+52,239,1,
+17,212,2,
+46,125,1,3,
+51,240,1,6,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+29,241,1,
+17,214,2,2,238,1,239,1,
+49,242,1,16,3,
+46,241,1,
+52,243,1,
+17,161,1,
+46,125,1,3,
+52,244,1,
+17,212,2,
+46,131,1,3,
+51,245,1,7,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+29,246,1,
+17,214,2,2,243,1,244,1,
+49,247,1,25,3,
+46,246,1,
+52,248,1,
+17,161,1,
+46,131,1,3,
+52,249,1,
+17,212,2,
+46,167,1,3,
+51,250,1,8,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+29,251,1,
+17,214,2,2,248,1,249,1,
+49,252,1,34,3,
+46,251,1,
+52,253,1,
+17,161,1,
+46,167,1,3,
+52,254,1,
+17,212,2,
+46,131,1,3,
+51,255,1,9,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+29,0,2,
+17,214,2,2,253,1,254,1,
+49,1,2,43,3,
+46,0,2,
+52,2,2,
+17,161,1,
+49,3,2,52,3,3,
+52,4,2,
+17,212,2,
+46,3,2,3,
+51,5,2,10,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+29,6,2,
+17,214,2,2,2,2,4,2,
+49,7,2,58,3,
+46,6,2,
+52,8,2,
+17,161,1,
+46,171,1,3,
+52,9,2,
+17,212,2,
+46,171,1,3,
+51,10,2,11,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+29,11,2,
+17,214,2,2,8,2,9,2,
+49,12,2,66,3,
+46,11,2,
+52,13,2,
+17,161,1,
+49,14,2,74,3,3,
+52,15,2,
+17,212,2,
+46,14,2,3,
+51,16,2,12,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+29,17,2,
+17,214,2,2,13,2,15,2,
+49,18,2,80,3,
+46,17,2,
+52,19,2,
+17,161,1,
+46,171,1,3,
+52,20,2,
+17,212,2,
+46,3,2,3,
+51,21,2,13,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+46,17,2,
+29,22,2,
+17,214,2,2,19,2,20,2,
+49,23,2,88,3,
+46,22,2,
+52,24,2,
+17,161,1,
+46,3,2,3,
+52,25,2,
+17,212,2,
+46,171,1,3,
+51,26,2,14,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+46,17,2,
+46,22,2,
+29,27,2,
+17,214,2,2,24,2,25,2,
+49,28,2,96,3,
+46,27,2,
+52,29,2,
+17,161,1,
+46,14,2,3,
+52,30,2,
+17,212,2,
+46,3,2,3,
+51,31,2,15,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+46,17,2,
+46,22,2,
+46,27,2,
+29,32,2,
+17,214,2,2,29,2,30,2,
+49,33,2,104,3,
+46,32,2,
+52,34,2,
+17,161,1,
+46,3,2,3,
+52,35,2,
+17,212,2,
+46,14,2,3,
+51,36,2,16,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+46,17,2,
+46,22,2,
+46,27,2,
+46,32,2,
+29,37,2,
+17,214,2,2,34,2,35,2,
+49,38,2,112,3,
+46,37,2,
+52,39,2,
+17,161,1,
+46,14,2,3,
+52,40,2,
+17,212,2,
+46,171,1,3,
+51,41,2,17,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+46,17,2,
+46,22,2,
+46,27,2,
+46,32,2,
+46,37,2,
+29,42,2,
+17,214,2,2,39,2,40,2,
+49,43,2,120,3,
+46,42,2,
+52,44,2,
+17,161,1,
+46,171,1,3,
+52,45,2,
+17,212,2,
+46,14,2,3,
+51,46,2,18,
+46,216,1,
+46,221,1,
+46,226,1,
+46,231,1,
+46,236,1,
+46,241,1,
+46,246,1,
+46,251,1,
+46,0,2,
+46,6,2,
+46,11,2,
+46,17,2,
+46,22,2,
+46,27,2,
+46,32,2,
+46,37,2,
+46,42,2,
+29,47,2,
+17,214,2,2,44,2,45,2,
+49,48,2,128,3,
+46,47,2,
+52,49,2,
+17,136,3,
+46,217,1,3,
+29,50,2,
+17,138,3,1,49,2,
+46,217,1,
+52,51,2,
+17,136,3,
+46,222,1,3,
+51,52,2,2,
+46,50,2,
+29,53,2,
+17,138,3,1,51,2,
+46,222,1,
+46,53,2,
+52,54,2,
+17,136,3,
+46,227,1,3,
+51,55,2,3,
+46,50,2,
+46,53,2,
+29,56,2,
+17,138,3,1,54,2,
+46,227,1,
+46,56,2,
+52,57,2,
+17,136,3,
+46,237,1,3,
+51,58,2,4,
+46,50,2,
+46,53,2,
+46,56,2,
+29,59,2,
+17,138,3,1,57,2,
+46,232,1,
+46,59,2,
+52,60,2,
+17,136,3,
+46,232,1,3,
+51,61,2,5,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+29,62,2,
+17,138,3,1,60,2,
+46,237,1,
+46,62,2,
+52,63,2,
+17,136,3,
+46,247,1,3,
+51,64,2,6,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+29,65,2,
+17,138,3,1,63,2,
+46,242,1,
+46,65,2,
+52,66,2,
+17,136,3,
+46,242,1,3,
+51,67,2,7,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+29,68,2,
+17,138,3,1,66,2,
+46,247,1,
+46,68,2,
+52,69,2,
+17,136,3,
+46,1,2,3,
+51,70,2,8,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+29,71,2,
+17,138,3,1,69,2,
+46,252,1,
+46,71,2,
+52,72,2,
+17,136,3,
+46,252,1,3,
+51,73,2,9,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+29,74,2,
+17,138,3,1,72,2,
+46,1,2,
+46,74,2,
+52,75,2,
+17,136,3,
+46,7,2,3,
+51,76,2,10,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+29,77,2,
+17,138,3,1,75,2,
+46,7,2,
+46,77,2,
+52,78,2,
+17,136,3,
+46,12,2,3,
+51,79,2,11,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+29,80,2,
+17,138,3,1,78,2,
+46,12,2,
+46,80,2,
+52,81,2,
+17,136,3,
+46,18,2,3,
+51,82,2,12,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+29,83,2,
+17,138,3,1,81,2,
+46,18,2,
+46,83,2,
+52,84,2,
+17,136,3,
+46,28,2,3,
+51,85,2,13,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+46,83,2,
+29,86,2,
+17,138,3,1,84,2,
+46,23,2,
+46,86,2,
+52,87,2,
+17,136,3,
+46,23,2,3,
+51,88,2,14,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+46,83,2,
+46,86,2,
+29,89,2,
+17,138,3,1,87,2,
+46,28,2,
+46,89,2,
+52,90,2,
+17,136,3,
+46,38,2,3,
+51,91,2,15,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+46,83,2,
+46,86,2,
+46,89,2,
+29,92,2,
+17,138,3,1,90,2,
+46,33,2,
+46,92,2,
+52,93,2,
+17,136,3,
+46,33,2,3,
+51,94,2,16,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+46,83,2,
+46,86,2,
+46,89,2,
+46,92,2,
+29,95,2,
+17,138,3,1,93,2,
+46,38,2,
+46,95,2,
+52,96,2,
+17,136,3,
+46,48,2,3,
+51,97,2,17,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+46,83,2,
+46,86,2,
+46,89,2,
+46,92,2,
+46,95,2,
+29,98,2,
+17,138,3,1,96,2,
+46,43,2,
+46,98,2,
+52,99,2,
+17,136,3,
+46,43,2,3,
+51,100,2,18,
+46,50,2,
+46,53,2,
+46,56,2,
+46,59,2,
+46,62,2,
+46,65,2,
+46,68,2,
+46,71,2,
+46,74,2,
+46,77,2,
+46,80,2,
+46,83,2,
+46,86,2,
+46,89,2,
+46,92,2,
+46,95,2,
+46,98,2,
+29,101,2,
+17,138,3,1,99,2,
+46,48,2,
+46,101,2,
+52,102,2,
+17,136,3,
+49,103,2,148,3,3,
+29,104,2,
+17,159,3,1,102,2,
+46,167,0,
+52,105,2,
+17,136,3,
+49,106,2,171,3,3,
+51,107,2,2,
+46,104,2,
+29,108,2,
+17,159,3,1,105,2,
+46,175,0,
+46,108,2,
+52,109,2,
+17,136,3,
+46,103,2,3,
+29,110,2,
+17,183,3,1,109,2,
+46,103,2,
+52,111,2,
+17,136,3,
+46,106,2,3,
+51,112,2,2,
+46,110,2,
+29,113,2,
+17,183,3,1,111,2,
+46,106,2,
+46,113,2,
+52,114,2,
+17,45,0,
+49,115,2,191,3,3,
+52,116,2,
+17,57,0,
+46,115,2,3,
+29,117,2,
+17,196,3,2,114,2,116,2,
+49,118,2,205,3,
+52,119,2,
+17,45,0,
+49,120,2,211,3,3,
+52,121,2,
+17,57,0,
+46,120,2,3,
+51,122,2,2,
+46,117,2,
+29,123,2,
+17,196,3,2,119,2,121,2,
+46,118,2,
+46,123,2,
+52,124,2,
+17,45,0,
+49,125,2,217,3,3,
+52,126,2,
+17,57,0,
+46,125,2,3,
+51,127,2,3,
+46,117,2,
+46,123,2,
+29,128,2,
+17,196,3,2,124,2,126,2,
+46,118,2,
+46,128,2,
+52,129,2,
+17,45,0,
+49,130,2,223,3,3,
+52,131,2,
+17,57,0,
+46,130,2,3,
+51,132,2,4,
+46,117,2,
+46,123,2,
+46,128,2,
+29,133,2,
+17,196,3,2,129,2,131,2,
+46,118,2,
+46,133,2,
+52,134,2,
+17,45,0,
+49,135,2,229,3,3,
+52,136,2,
+17,57,0,
+46,135,2,3,
+51,137,2,5,
+46,117,2,
+46,123,2,
+46,128,2,
+46,133,2,
+29,138,2,
+17,196,3,2,134,2,136,2,
+46,118,2,
+46,138,2,
+52,139,2,
+17,45,0,
+49,140,2,236,3,3,
+52,141,2,
+17,57,0,
+46,140,2,3,
+51,142,2,6,
+46,117,2,
+46,123,2,
+46,128,2,
+46,133,2,
+46,138,2,
+29,143,2,
+17,196,3,2,139,2,141,2,
+46,118,2,
+46,143,2,
+52,144,2,
+17,45,0,
+46,115,2,3,
+52,145,2,
+17,57,0,
+46,115,2,3,
+29,146,2,
+17,242,3,2,144,2,145,2,
+46,118,2,
+52,147,2,
+17,45,0,
+46,120,2,3,
+52,148,2,
+17,57,0,
+46,120,2,3,
+51,149,2,2,
+46,146,2,
+29,150,2,
+17,242,3,2,147,2,148,2,
+46,118,2,
+46,150,2,
+52,151,2,
+17,45,0,
+46,125,2,3,
+52,152,2,
+17,57,0,
+46,125,2,3,
+51,153,2,3,
+46,146,2,
+46,150,2,
+29,154,2,
+17,242,3,2,151,2,152,2,
+46,118,2,
+46,154,2,
+52,155,2,
+17,45,0,
+46,140,2,3,
+52,156,2,
+17,57,0,
+46,140,2,3,
+51,157,2,4,
+46,146,2,
+46,150,2,
+46,154,2,
+29,158,2,
+17,242,3,2,155,2,156,2,
+46,118,2,
+46,158,2,
+52,159,2,
+17,45,0,
+46,130,2,3,
+52,160,2,
+17,57,0,
+46,130,2,3,
+51,161,2,5,
+46,146,2,
+46,150,2,
+46,154,2,
+46,158,2,
+29,162,2,
+17,242,3,2,159,2,160,2,
+46,118,2,
+46,162,2,
+52,163,2,
+17,45,0,
+46,135,2,3,
+52,164,2,
+17,57,0,
+46,135,2,3,
+51,165,2,6,
+46,146,2,
+46,150,2,
+46,154,2,
+46,158,2,
+46,162,2,
+29,166,2,
+17,242,3,2,163,2,164,2,
+46,118,2,
+46,166,2,
+52,167,2,
+17,45,0,
+46,115,2,3,
+52,168,2,
+17,57,0,
+46,115,2,3,
+29,169,2,
+17,0,4,2,167,2,168,2,
+46,118,2,
+52,170,2,
+17,45,0,
+46,120,2,3,
+52,171,2,
+17,57,0,
+46,120,2,3,
+51,172,2,2,
+46,169,2,
+29,173,2,
+17,0,4,2,170,2,171,2,
+46,118,2,
+46,173,2,
+52,174,2,
+17,45,0,
+46,125,2,3,
+52,175,2,
+17,57,0,
+46,125,2,3,
+51,176,2,3,
+46,169,2,
+46,173,2,
+29,177,2,
+17,0,4,2,174,2,175,2,
+46,118,2,
+46,177,2,
+52,178,2,
+17,45,0,
+46,140,2,3,
+52,179,2,
+17,57,0,
+46,140,2,3,
+51,180,2,4,
+46,169,2,
+46,173,2,
+46,177,2,
+29,181,2,
+17,0,4,2,178,2,179,2,
+46,118,2,
+46,181,2,
+52,182,2,
+17,45,0,
+46,130,2,3,
+52,183,2,
+17,57,0,
+46,130,2,3,
+51,184,2,5,
+46,169,2,
+46,173,2,
+46,177,2,
+46,181,2,
+29,185,2,
+17,0,4,2,182,2,183,2,
+46,118,2,
+46,185,2,
+52,186,2,
+17,45,0,
+46,135,2,3,
+52,187,2,
+17,57,0,
+46,135,2,3,
+51,188,2,6,
+46,169,2,
+46,173,2,
+46,177,2,
+46,181,2,
+46,185,2,
+29,189,2,
+17,0,4,2,186,2,187,2,
+46,118,2,
+46,189,2,
+52,190,2,
+17,45,0,
+46,115,2,3,
+52,191,2,
+17,57,0,
+46,115,2,3,
+29,192,2,
+17,12,4,2,190,2,191,2,
+46,118,2,
+52,193,2,
+17,45,0,
+46,120,2,3,
+52,194,2,
+17,57,0,
+46,120,2,3,
+51,195,2,2,
+46,192,2,
+29,196,2,
+17,12,4,2,193,2,194,2,
+46,118,2,
+46,196,2,
+52,197,2,
+17,45,0,
+46,125,2,3,
+52,198,2,
+17,57,0,
+46,125,2,3,
+51,199,2,3,
+46,192,2,
+46,196,2,
+29,200,2,
+17,12,4,2,197,2,198,2,
+46,118,2,
+46,200,2,
+52,201,2,
+17,45,0,
+46,140,2,3,
+52,202,2,
+17,57,0,
+46,140,2,3,
+51,203,2,4,
+46,192,2,
+46,196,2,
+46,200,2,
+29,204,2,
+17,12,4,2,201,2,202,2,
+46,118,2,
+46,204,2,
+52,205,2,
+17,45,0,
+46,130,2,3,
+52,206,2,
+17,57,0,
+46,130,2,3,
+51,207,2,5,
+46,192,2,
+46,196,2,
+46,200,2,
+46,204,2,
+29,208,2,
+17,12,4,2,205,2,206,2,
+46,118,2,
+46,208,2,
+52,209,2,
+17,45,0,
+46,135,2,3,
+52,210,2,
+17,57,0,
+46,135,2,3,
+51,211,2,6,
+46,192,2,
+46,196,2,
+46,200,2,
+46,204,2,
+46,208,2,
+29,212,2,
+17,12,4,2,209,2,210,2,
+46,118,2,
+46,212,2,
+52,213,2,
+17,45,0,
+46,115,2,3,
+52,214,2,
+17,57,0,
+46,115,2,3,
+29,215,2,
+17,29,4,2,213,2,214,2,
+46,118,2,
+52,216,2,
+17,45,0,
+46,120,2,3,
+52,217,2,
+17,57,0,
+46,120,2,3,
+51,218,2,2,
+46,215,2,
+29,219,2,
+17,29,4,2,216,2,217,2,
+46,118,2,
+46,219,2,
+52,220,2,
+17,45,0,
+46,125,2,3,
+52,221,2,
+17,57,0,
+46,125,2,3,
+51,222,2,3,
+46,215,2,
+46,219,2,
+29,223,2,
+17,29,4,2,220,2,221,2,
+46,118,2,
+46,223,2,
+52,224,2,
+17,45,0,
+46,140,2,3,
+52,225,2,
+17,57,0,
+46,140,2,3,
+51,226,2,4,
+46,215,2,
+46,219,2,
+46,223,2,
+29,227,2,
+17,29,4,2,224,2,225,2,
+46,118,2,
+46,227,2,
+52,228,2,
+17,45,0,
+46,130,2,3,
+52,229,2,
+17,57,0,
+46,130,2,3,
+51,230,2,5,
+46,215,2,
+46,219,2,
+46,223,2,
+46,227,2,
+29,231,2,
+17,29,4,2,228,2,229,2,
+46,118,2,
+46,231,2,
+52,232,2,
+17,45,0,
+46,135,2,3,
+52,233,2,
+17,57,0,
+46,135,2,3,
+51,234,2,6,
+46,215,2,
+46,219,2,
+46,223,2,
+46,227,2,
+46,231,2,
+29,235,2,
+17,29,4,2,232,2,233,2,
+46,118,2,
+46,235,2,
+52,236,2,
+17,45,0,
+46,118,2,3,
+52,237,2,
+17,57,0,
+46,118,2,3,
+51,238,2,7,
+46,215,2,
+46,219,2,
+46,223,2,
+46,227,2,
+46,231,2,
+46,235,2,
+29,239,2,
+17,29,4,2,236,2,237,2,
+46,118,2,
+46,239,2,
+52,240,2,
+17,45,0,
+46,115,2,3,
+52,241,2,
+17,57,0,
+46,115,2,3,
+29,242,2,
+17,35,4,2,240,2,241,2,
+46,118,2,
+52,243,2,
+17,45,0,
+46,120,2,3,
+52,244,2,
+17,57,0,
+46,120,2,3,
+51,245,2,2,
+46,242,2,
+29,246,2,
+17,35,4,2,243,2,244,2,
+46,118,2,
+46,246,2,
+52,247,2,
+17,45,0,
+46,125,2,3,
+52,248,2,
+17,57,0,
+46,125,2,3,
+51,249,2,3,
+46,242,2,
+46,246,2,
+29,250,2,
+17,35,4,2,247,2,248,2,
+46,118,2,
+46,250,2,
+52,251,2,
+17,45,0,
+46,140,2,3,
+52,252,2,
+17,57,0,
+46,140,2,3,
+51,253,2,4,
+46,242,2,
+46,246,2,
+46,250,2,
+29,254,2,
+17,35,4,2,251,2,252,2,
+46,118,2,
+46,254,2,
+52,255,2,
+17,45,0,
+46,130,2,3,
+52,0,3,
+17,57,0,
+46,130,2,3,
+51,1,3,5,
+46,242,2,
+46,246,2,
+46,250,2,
+46,254,2,
+29,2,3,
+17,35,4,2,255,2,0,3,
+46,118,2,
+46,2,3,
+52,3,3,
+17,45,0,
+46,135,2,3,
+52,4,3,
+17,57,0,
+46,135,2,3,
+51,5,3,6,
+46,242,2,
+46,246,2,
+46,250,2,
+46,254,2,
+46,2,3,
+29,6,3,
+17,35,4,2,3,3,4,3,
+46,118,2,
+46,6,3,
+52,7,3,
+17,45,0,
+46,118,2,3,
+52,8,3,
+17,57,0,
+46,118,2,3,
+51,9,3,7,
+46,242,2,
+46,246,2,
+46,250,2,
+46,254,2,
+46,2,3,
+46,6,3,
+29,10,3,
+17,35,4,2,7,3,8,3,
+46,118,2,
+46,10,3,
+52,11,3,
+17,45,0,
+46,118,2,3,
+29,12,3,
+17,44,4,1,11,3,
+49,13,3,48,4,
+52,14,3,
+17,45,0,
+46,118,2,3,
+29,15,3,
+17,53,4,1,14,3,
+46,13,3,
+52,16,3,
+17,45,0,
+46,118,2,3,
+29,17,3,
+17,57,4,1,16,3,
+46,118,2,
+52,18,3,
+17,81,1,
+46,124,0,3,
+29,19,3,
+17,61,4,1,18,3,
+46,124,0,
+52,20,3,
+17,81,1,
+46,96,1,3,
+51,21,3,2,
+46,19,3,
+29,22,3,
+17,61,4,1,20,3,
+46,124,0,
+46,22,3,
+52,23,3,
+17,81,1,
+46,124,0,3,
+29,24,3,
+17,70,4,1,23,3,
+46,124,0,
+52,25,3,
+17,81,1,
+46,96,1,3,
+51,26,3,2,
+46,24,3,
+29,27,3,
+17,70,4,1,25,3,
+46,124,0,
+46,27,3,
+52,28,3,
+17,81,1,
+46,124,0,3,
+29,29,3,
+17,78,4,1,28,3,
+46,124,0,
+52,30,3,
+17,81,1,
+46,96,1,3,
+51,31,3,2,
+46,29,3,
+29,32,3,
+17,78,4,1,30,3,
+46,124,0,
+46,32,3,
+52,33,3,
+17,86,4,
+49,34,3,94,4,3,
+52,35,3,
+17,104,4,
+49,36,3,106,4,3,
+29,37,3,
+17,114,4,2,33,3,35,3,
+49,38,3,128,4,
+52,39,3,
+17,104,4,
+49,40,3,138,4,3,
+29,41,3,
+17,152,4,1,39,3,
+49,42,3,164,4,
+52,43,3,
+17,104,4,
+49,44,3,169,4,3,
+52,45,3,
+17,179,4,
+46,167,0,3,
+29,46,3,
+17,181,4,2,43,3,45,3,
+46,14,2,
+52,47,3,
+17,104,4,
+46,44,3,3,
+52,48,3,
+17,179,4,
+46,167,0,3,
+52,49,3,
+17,188,4,
+46,167,0,3,
+51,50,3,2,
+46,46,3,
+29,51,3,
+17,181,4,3,47,3,48,3,49,3,
+46,14,2,
+46,51,3,
+52,52,3,
+17,104,4,
+46,38,3,3,
+52,53,3,
+17,179,4,
+46,125,1,3,
+51,54,3,3,
+46,46,3,
+46,51,3,
+29,55,3,
+17,181,4,2,52,3,53,3,
+46,14,2,
+46,55,3,
+52,56,3,
+17,104,4,
+49,57,3,193,4,3,
+52,58,3,
+17,179,4,
+46,125,1,3,
+51,59,3,4,
+46,46,3,
+46,51,3,
+46,55,3,
+29,60,3,
+17,181,4,2,56,3,58,3,
+49,61,3,204,4,
+46,60,3,
+52,62,3,
+17,104,4,
+49,63,3,209,4,3,
+52,64,3,
+17,179,4,
+46,125,1,3,
+52,65,3,
+17,188,4,
+46,167,0,3,
+51,66,3,5,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+29,67,3,
+17,181,4,3,62,3,64,3,65,3,
+46,14,2,
+46,67,3,
+52,68,3,
+17,104,4,
+46,63,3,3,
+52,69,3,
+17,179,4,
+46,125,1,3,
+51,70,3,6,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+29,71,3,
+17,181,4,2,68,3,69,3,
+46,14,2,
+46,71,3,
+52,72,3,
+17,104,4,
+46,40,3,3,
+52,73,3,
+17,179,4,
+46,125,1,3,
+51,74,3,7,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+46,71,3,
+29,75,3,
+17,181,4,2,72,3,73,3,
+46,14,2,
+46,75,3,
+52,76,3,
+17,104,4,
+46,40,3,3,
+52,77,3,
+17,179,4,
+46,167,1,3,
+51,78,3,8,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+46,71,3,
+46,75,3,
+29,79,3,
+17,181,4,2,76,3,77,3,
+46,14,2,
+46,79,3,
+52,80,3,
+17,228,4,
+49,81,3,236,4,3,
+29,82,3,
+17,249,4,1,80,3,
+46,14,2,
+52,83,3,
+17,228,4,
+49,84,3,5,5,3,
+52,85,3,
+17,181,4,
+46,210,0,3,
+51,86,3,2,
+46,82,3,
+29,87,3,
+17,249,4,2,83,3,85,3,
+46,14,2,
+46,87,3,
+52,88,3,
+17,104,4,
+46,44,3,3,
+52,89,3,
+17,179,4,
+46,125,1,3,
+51,90,3,9,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+46,71,3,
+46,75,3,
+46,79,3,
+29,91,3,
+17,181,4,2,88,3,89,3,
+46,14,2,
+46,91,3,
+52,92,3,
+17,104,4,
+46,44,3,3,
+52,93,3,
+17,179,4,
+46,125,1,3,
+52,94,3,
+17,188,4,
+46,167,0,3,
+51,95,3,10,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+46,71,3,
+46,75,3,
+46,79,3,
+46,91,3,
+29,96,3,
+17,181,4,3,92,3,93,3,94,3,
+46,14,2,
+46,96,3,
+52,97,3,
+17,104,4,
+46,38,3,3,
+52,98,3,
+17,179,4,
+46,167,1,3,
+51,99,3,11,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+46,71,3,
+46,75,3,
+46,79,3,
+46,91,3,
+46,96,3,
+29,100,3,
+17,181,4,2,97,3,98,3,
+46,14,2,
+46,100,3,
+52,101,3,
+17,104,4,
+46,38,3,3,
+52,102,3,
+17,179,4,
+46,167,1,3,
+52,103,3,
+17,188,4,
+46,167,0,3,
+51,104,3,12,
+46,46,3,
+46,51,3,
+46,55,3,
+46,60,3,
+46,67,3,
+46,71,3,
+46,75,3,
+46,79,3,
+46,91,3,
+46,96,3,
+46,100,3,
+29,105,3,
+17,181,4,3,101,3,102,3,103,3,
+46,14,2,
+46,105,3,
+52,106,3,
+17,254,1,
+46,2,0,3,
+29,107,3,
+17,20,5,1,106,3,
+46,2,0,
+52,108,3,
+17,254,1,
+46,2,0,3,
+29,109,3,
+17,25,5,1,108,3,
+46,2,0,
+52,110,3,
+17,254,1,
+46,48,0,3,
+51,111,3,2,
+46,107,3,
+29,112,3,
+17,20,5,1,110,3,
+46,48,0,
+46,112,3,
+52,113,3,
+17,254,1,
+46,48,0,3,
+51,114,3,2,
+46,109,3,
+29,115,3,
+17,25,5,1,113,3,
+46,48,0,
+46,115,3,
+52,116,3,
+17,254,1,
+46,2,0,3,
+29,117,3,
+17,30,5,1,116,3,
+46,2,0,
+52,118,3,
+17,254,1,
+46,48,0,3,
+51,119,3,2,
+46,117,3,
+29,120,3,
+17,30,5,1,118,3,
+46,48,0,
+46,120,3,
+52,121,3,
+17,37,5,
+46,167,0,3,
+52,122,3,
+17,181,4,
+46,210,0,3,
+29,123,3,
+17,49,5,2,121,3,122,3,
+46,167,0,
+52,124,3,
+17,37,5,
+46,125,1,3,
+52,125,3,
+17,181,4,
+46,210,0,3,
+51,126,3,2,
+46,123,3,
+29,127,3,
+17,49,5,2,124,3,125,3,
+46,125,1,
+46,127,3,
+52,128,3,
+17,37,5,
+46,167,1,3,
+52,129,3,
+17,181,4,
+46,210,0,3,
+51,130,3,3,
+46,123,3,
+46,127,3,
+29,131,3,
+17,49,5,2,128,3,129,3,
+46,167,1,
+46,131,3,
+52,132,3,
+17,37,5,
+46,131,1,3,
+52,133,3,
+17,181,4,
+46,210,0,3,
+51,134,3,4,
+46,123,3,
+46,127,3,
+46,131,3,
+29,135,3,
+17,49,5,2,132,3,133,3,
+46,131,1,
+46,135,3,
+52,136,3,
+17,37,5,
+46,167,0,3,
+52,137,3,
+17,69,5,
+46,125,1,3,
+29,138,3,
+17,76,5,2,136,3,137,3,
+46,167,0,
+52,139,3,
+17,37,5,
+46,125,1,3,
+52,140,3,
+17,69,5,
+46,125,1,3,
+51,141,3,2,
+46,138,3,
+29,142,3,
+17,76,5,2,139,3,140,3,
+46,125,1,
+46,142,3,
+52,143,3,
+17,37,5,
+46,167,1,3,
+52,144,3,
+17,69,5,
+46,125,1,3,
+51,145,3,3,
+46,138,3,
+46,142,3,
+29,146,3,
+17,76,5,2,143,3,144,3,
+46,167,1,
+46,146,3,
+52,147,3,
+17,37,5,
+46,131,1,3,
+52,148,3,
+17,69,5,
+46,125,1,3,
+51,149,3,4,
+46,138,3,
+46,142,3,
+46,146,3,
+29,150,3,
+17,76,5,2,147,3,148,3,
+46,131,1,
+46,150,3,
+52,151,3,
+17,96,5,
+46,14,2,3,
+52,152,3,
+17,100,5,
+46,14,2,3,
+29,153,3,
+17,104,5,2,151,3,152,3,
+46,14,2,
+52,154,3,
+17,96,5,
+46,14,2,3,
+52,155,3,
+17,100,5,
+46,14,2,3,
+29,156,3,
+17,116,5,2,154,3,155,3,
+46,14,2,
+52,157,3,
+17,96,5,
+46,14,2,3,
+52,158,3,
+17,100,5,
+46,14,2,3,
+29,159,3,
+17,126,5,2,157,3,158,3,
+46,14,2,
+52,160,3,
+17,96,5,
+46,14,2,3,
+52,161,3,
+17,100,5,
+46,14,2,3,
+29,162,3,
+17,136,5,2,160,3,161,3,
+46,14,2,
+52,163,3,
+17,96,5,
+46,14,2,3,
+52,164,3,
+17,100,5,
+46,14,2,3,
+29,165,3,
+17,151,5,2,163,3,164,3,
+46,14,2,
+52,166,3,
+17,96,5,
+46,14,2,3,
+52,167,3,
+17,100,5,
+46,14,2,3,
+29,168,3,
+17,166,5,2,166,3,167,3,
+46,14,2,
+52,169,3,
+17,96,5,
+46,14,2,3,
+52,170,3,
+17,100,5,
+46,14,2,3,
+29,171,3,
+17,179,5,2,169,3,170,3,
+46,14,2,
+52,172,3,
+17,96,5,
+46,14,2,3,
+52,173,3,
+17,100,5,
+46,14,2,3,
+29,174,3,
+17,192,5,2,172,3,173,3,
+46,14,2,
+52,175,3,
+17,96,5,
+46,14,2,3,
+52,176,3,
+17,100,5,
+46,14,2,3,
+29,177,3,
+17,206,5,2,175,3,176,3,
+46,14,2,
+52,178,3,
+17,96,5,
+46,14,2,3,
+52,179,3,
+17,100,5,
+46,14,2,3,
+29,180,3,
+17,220,5,2,178,3,179,3,
+46,14,2,
+52,181,3,
+17,96,5,
+46,14,2,3,
+52,182,3,
+17,100,5,
+46,14,2,3,
+29,183,3,
+17,235,5,2,181,3,182,3,
+46,14,2,
+52,184,3,
+17,96,5,
+46,14,2,3,
+52,185,3,
+17,100,5,
+46,14,2,3,
+29,186,3,
+17,250,5,2,184,3,185,3,
+46,14,2,
+52,187,3,
+17,96,5,
+46,14,2,3,
+52,188,3,
+17,100,5,
+46,14,2,3,
+29,189,3,
+17,4,6,2,187,3,188,3,
+46,14,2,
+52,190,3,
+17,96,5,
+46,14,2,3,
+52,191,3,
+17,100,5,
+46,14,2,3,
+29,192,3,
+17,15,6,2,190,3,191,3,
+46,14,2,
+52,193,3,
+17,96,5,
+46,14,2,3,
+52,194,3,
+17,100,5,
+46,14,2,3,
+29,195,3,
+17,30,6,2,193,3,194,3,
+46,14,2,
+52,196,3,
+17,104,4,
+46,3,2,3,
+52,197,3,
+17,43,6,
+46,3,2,3,
+29,198,3,
+17,45,6,2,196,3,197,3,
+46,175,0,
+52,199,3,
+17,96,5,
+46,14,2,3,
+52,200,3,
+17,100,5,
+46,14,2,3,
+29,201,3,
+17,70,6,2,199,3,200,3,
+46,14,2,
+52,202,3,
+17,96,5,
+46,14,2,3,
+52,203,3,
+17,100,5,
+46,14,2,3,
+29,204,3,
+17,84,6,2,202,3,203,3,
+46,14,2,
+52,205,3,
+17,96,5,
+46,14,2,3,
+52,206,3,
+17,100,5,
+46,14,2,3,
+29,207,3,
+17,97,6,2,205,3,206,3,
+46,14,2,
+52,208,3,
+17,111,6,
+46,175,0,3,
+52,209,3,
+17,43,6,
+46,175,0,3,
+29,210,3,
+17,113,6,2,208,3,209,3,
+46,175,0,
+52,211,3,
+17,111,6,
+46,171,1,3,
+52,212,3,
+17,43,6,
+46,175,0,3,
+51,213,3,2,
+46,210,3,
+29,214,3,
+17,113,6,2,211,3,212,3,
+46,171,1,
+46,214,3,
+52,215,3,
+17,104,4,
+46,3,2,3,
+52,216,3,
+17,43,6,
+46,3,2,3,
+29,217,3,
+17,129,6,2,215,3,216,3,
+46,175,0,
+52,218,3,
+17,96,5,
+46,14,2,3,
+52,219,3,
+17,100,5,
+46,14,2,3,
+29,220,3,
+17,152,6,2,218,3,219,3,
+46,14,2,
+52,221,3,
+17,104,4,
+46,3,2,3,
+52,222,3,
+17,43,6,
+46,3,2,3,
+29,223,3,
+17,170,6,2,221,3,222,3,
+46,175,0,
+52,224,3,
+17,96,5,
+46,14,2,3,
+52,225,3,
+17,100,5,
+46,14,2,3,
+29,226,3,
+17,192,6,2,224,3,225,3,
+46,14,2,
+52,227,3,
+17,96,5,
+46,14,2,3,
+52,228,3,
+17,100,5,
+46,14,2,3,
+29,229,3,
+17,209,6,2,227,3,228,3,
+46,14,2,
+52,230,3,
+17,104,4,
+46,3,2,3,
+52,231,3,
+17,43,6,
+46,3,2,3,
+29,232,3,
+17,226,6,2,230,3,231,3,
+46,175,0,
+52,233,3,
+17,96,5,
+46,14,2,3,
+52,234,3,
+17,100,5,
+46,14,2,3,
+29,235,3,
+17,248,6,2,233,3,234,3,
+46,14,2,
+52,236,3,
+17,96,5,
+46,14,2,3,
+52,237,3,
+17,100,5,
+46,14,2,3,
+29,238,3,
+17,9,7,2,236,3,237,3,
+46,14,2,
+52,239,3,
+17,96,5,
+46,14,2,3,
+52,240,3,
+17,100,5,
+46,14,2,3,
+29,241,3,
+17,26,7,2,239,3,240,3,
+46,14,2,
+52,242,3,
+17,96,5,
+46,14,2,3,
+52,243,3,
+17,100,5,
+46,14,2,3,
+29,244,3,
+17,42,7,2,242,3,243,3,
+46,14,2,
+52,245,3,
+17,57,7,
+46,171,1,3,
+29,246,3,
+17,63,7,1,245,3,
+46,175,0,
+52,247,3,
+17,86,7,
+46,171,1,3,
+52,248,3,
+17,98,7,
+46,175,0,3,
+52,249,3,
+17,104,7,
+46,171,1,3,
+29,250,3,
+17,113,7,3,247,3,248,3,249,3,
+46,171,1,
+52,251,3,
+17,57,7,
+46,171,1,3,
+29,252,3,
+17,140,7,1,251,3,
+46,175,0,
+52,253,3,
+17,164,7,
+46,171,1,3,
+52,254,3,
+17,174,7,
+46,175,0,3,
+29,255,3,
+17,178,7,2,253,3,254,3,
+46,171,1,
+52,0,4,
+17,213,7,
+46,171,1,3,
+52,1,4,
+17,225,7,
+46,171,1,3,
+29,2,4,
+17,234,7,2,0,4,1,4,
+46,171,1,
+52,3,4,
+17,96,5,
+46,14,2,3,
+52,4,4,
+17,100,5,
+46,14,2,3,
+29,5,4,
+17,6,8,2,3,4,4,4,
+46,14,2,
+52,6,4,
+17,96,5,
+46,14,2,3,
+52,7,4,
+17,100,5,
+46,14,2,3,
+29,8,4,
+17,16,8,2,6,4,7,4,
+46,14,2,
+52,9,4,
+17,96,5,
+46,14,2,3,
+52,10,4,
+17,100,5,
+46,14,2,3,
+29,11,4,
+17,33,8,2,9,4,10,4,
+46,14,2,
+52,12,4,
+17,96,5,
+46,14,2,3,
+52,13,4,
+17,100,5,
+46,14,2,3,
+29,14,4,
+17,45,8,2,12,4,13,4,
+46,14,2,
+52,15,4,
+17,57,7,
+46,14,2,3,
+29,16,4,
+17,62,8,1,15,4,
+46,14,2,
+52,17,4,
+17,57,7,
+46,131,1,3,
+51,18,4,2,
+46,16,4,
+29,19,4,
+17,62,8,1,17,4,
+46,131,1,
+46,19,4,
+52,20,4,
+17,254,1,
+46,167,1,3,
+29,21,4,
+17,71,8,1,20,4,
+46,125,1,
+52,22,4,
+17,20,1,
+46,125,1,3,
+52,23,4,
+17,159,1,
+46,125,1,3,
+51,24,4,3,
+46,169,1,
+46,174,1,
+29,25,4,
+17,123,2,2,22,4,23,4,
+46,167,0,
+46,25,4,
+52,26,4,
+17,20,1,
+46,3,2,3,
+52,27,4,
+17,159,1,
+46,3,2,3,
+51,28,4,4,
+46,169,1,
+46,174,1,
+46,25,4,
+29,29,4,
+17,123,2,2,26,4,27,4,
+46,175,0,
+46,29,4,132,0,
189,3,
195,3,
141,3,
@@ -3847,1665 +3847,1665 @@
124,1,
128,1,
217,3,
-19,
-27,153,3,
+20,
+28,153,3,
2,
-47,0,0,0,0,1,
-39,
-12,
-45,14,2,1,
-24,
-45,175,0,0,0,0,0,1,0,
-27,156,3,
+48,0,0,0,0,1,
+40,
+13,
+46,14,2,1,
+25,
+46,175,0,0,0,0,0,1,0,
+28,156,3,
2,
-47,0,0,0,0,1,
-39,
-54,154,3,0,1,0,
-27,159,3,
+48,0,0,0,0,1,
+40,
+55,154,3,0,1,0,
+28,159,3,
2,
-47,0,0,0,0,1,
-39,
-54,158,3,0,1,0,
-27,162,3,
+48,0,0,0,0,1,
+40,
+55,158,3,0,1,0,
+28,162,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-54,160,3,0,46,
+55,160,3,0,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,160,3,0,1,3,48,
-54,161,3,0,1,0,
-27,165,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,160,3,0,1,3,48,
+55,161,3,0,1,0,
+28,165,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,164,3,0,1,3,48,
-54,163,3,0,46,
-54,164,3,0,1,0,
-27,168,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,164,3,0,1,3,48,
+55,163,3,0,46,
+55,164,3,0,1,0,
+28,168,3,
2,
-47,0,0,0,0,1,
-39,
-49,
-40,76,8,
-49,
+48,0,0,0,0,1,
+40,
+50,
+41,76,8,
+50,
1,
-54,166,3,0,64,
-12,
-45,14,2,1,
-24,
-45,175,0,0,0,0,0,
-12,
-45,14,2,1,
-24,
-45,175,0,0,0,0,0,
+55,166,3,0,64,
+13,
+46,14,2,1,
+25,
+46,175,0,0,0,0,0,
+13,
+46,14,2,1,
+25,
+46,175,0,0,0,0,0,
1,
-54,166,3,0,48,
-44,
-54,167,3,0,1,3,
+55,166,3,0,48,
+45,
+55,167,3,0,1,3,
1,
-54,166,3,0,48,
-44,
-54,167,3,0,1,3,1,0,
-27,171,3,
+55,166,3,0,48,
+45,
+55,167,3,0,1,3,1,0,
+28,171,3,
2,
-47,0,0,0,0,1,
-39,
-26,
-45,14,2,168,3,2,
-54,170,3,0,
-54,169,3,0,1,1,168,3,
-27,174,3,
+48,0,0,0,0,1,
+40,
+27,
+46,14,2,168,3,2,
+55,170,3,0,
+55,169,3,0,1,1,168,3,
+28,174,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,173,3,0,1,3,48,
-54,172,3,0,1,0,
-27,177,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,173,3,0,1,3,48,
+55,172,3,0,1,0,
+28,177,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,175,3,0,1,3,48,
-54,176,3,0,1,0,
-27,180,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,175,3,0,1,3,48,
+55,176,3,0,1,0,
+28,180,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
-44,
-54,179,3,0,1,3,48,
-54,178,3,0,46,
+45,
+55,179,3,0,1,3,48,
+55,178,3,0,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,178,3,0,1,3,48,
-54,179,3,0,1,0,
-27,183,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,178,3,0,1,3,48,
+55,179,3,0,1,0,
+28,183,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,182,3,0,1,3,48,
-54,181,3,0,46,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,182,3,0,1,3,48,
+55,181,3,0,46,
1,
-44,
-54,181,3,0,1,3,48,
-54,182,3,0,1,0,
-27,186,3,
+45,
+55,181,3,0,1,3,48,
+55,182,3,0,1,0,
+28,186,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,185,3,0,1,3,48,
-54,184,3,0,46,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,185,3,0,1,3,48,
+55,184,3,0,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,184,3,0,1,3,48,
-54,185,3,0,1,0,
-27,189,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,184,3,0,1,3,48,
+55,185,3,0,1,0,
+28,189,3,
2,
-47,0,0,0,0,1,
-39,
-26,
-45,14,2,203,0,2,
+48,0,0,0,0,1,
+40,
+27,
+46,14,2,203,0,2,
1,
-54,187,3,0,46,
-54,188,3,0,
-24,
-45,175,0,0,0,128,63,1,0,
-27,192,3,
+55,187,3,0,46,
+55,188,3,0,
+25,
+46,175,0,0,0,128,63,1,0,
+28,192,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-54,190,3,0,48,
-54,191,3,0,1,0,
-27,195,3,
+55,190,3,0,48,
+55,191,3,0,1,0,
+28,195,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-54,193,3,0,46,
+55,193,3,0,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-54,193,3,0,48,
-54,194,3,0,1,0,
-27,198,3,
+25,
+46,175,0,0,0,128,63,47,
+55,193,3,0,48,
+55,194,3,0,1,0,
+28,198,3,
2,
-47,0,0,0,0,1,
-39,
-49,
+48,0,0,0,0,1,
+40,
+50,
1,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,197,3,0,1,0,69,
-44,
-54,197,3,0,1,1,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,197,3,0,1,0,69,
+45,
+55,197,3,0,1,1,
1,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,196,3,0,1,0,48,
-44,
-54,197,3,0,1,0,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,196,3,0,1,0,48,
+45,
+55,197,3,0,1,0,
1,
1,
-44,
-54,196,3,0,1,1,48,
-44,
-54,197,3,0,1,1,47,
+45,
+55,196,3,0,1,1,48,
+45,
+55,197,3,0,1,1,47,
1,
1,
-24,
-45,175,0,0,0,0,64,48,
+25,
+46,175,0,0,0,0,64,48,
1,
-44,
-54,197,3,0,1,1,47,
-44,
-54,197,3,0,1,0,48,
+45,
+55,197,3,0,1,1,47,
+45,
+55,197,3,0,1,0,48,
1,
-44,
-54,196,3,0,1,1,47,
-44,
-54,196,3,0,1,0,1,0,
-27,201,3,
+45,
+55,196,3,0,1,1,47,
+45,
+55,196,3,0,1,0,1,0,
+28,201,3,
2,
-47,1,0,
-51,30,4,
-16,114,8,
-45,14,2,2,1,0,
-0,0,3,
+48,1,0,
52,30,4,
-45,14,2,0,
-7,
-45,14,2,4,
-26,
-45,175,0,198,3,2,
-44,
-54,199,3,0,2,0,3,
-44,
-54,200,3,0,2,0,3,
-26,
-45,175,0,198,3,2,
-44,
-54,199,3,0,2,1,3,
-44,
-54,200,3,0,2,1,3,
-26,
-45,175,0,198,3,2,
-44,
-54,199,3,0,2,2,3,
-44,
-54,200,3,0,2,2,3,
-1,
-44,
-54,199,3,0,1,3,46,
-1,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,199,3,0,1,3,48,
-44,
-54,200,3,0,1,3,
-21,
-1,
-44,
-54,30,4,2,3,0,1,2,70,
-1,
-1,
-44,
-54,200,3,0,3,0,1,2,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,199,3,0,1,3,46,
-1,
-44,
-54,199,3,0,3,0,1,2,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,200,3,0,1,3,
-39,
-54,30,4,0,1,1,198,3,
-27,204,3,
-2,
-47,1,0,
-51,31,4,
-16,114,8,
-45,14,2,2,1,0,
+17,114,8,
+46,14,2,2,1,0,
0,0,3,
+53,30,4,
+46,14,2,0,
+8,
+46,14,2,4,
+27,
+46,175,0,198,3,2,
+45,
+55,199,3,0,2,0,3,
+45,
+55,200,3,0,2,0,3,
+27,
+46,175,0,198,3,2,
+45,
+55,199,3,0,2,1,3,
+45,
+55,200,3,0,2,1,3,
+27,
+46,175,0,198,3,2,
+45,
+55,199,3,0,2,2,3,
+45,
+55,200,3,0,2,2,3,
+1,
+45,
+55,199,3,0,1,3,46,
+1,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,199,3,0,1,3,48,
+45,
+55,200,3,0,1,3,
+22,
+1,
+45,
+55,30,4,2,3,0,1,2,70,
+1,
+1,
+45,
+55,200,3,0,3,0,1,2,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,199,3,0,1,3,46,
+1,
+45,
+55,199,3,0,3,0,1,2,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,200,3,0,1,3,
+40,
+55,30,4,0,1,1,198,3,
+28,204,3,
+2,
+48,1,0,
52,31,4,
-45,14,2,0,
-26,
-45,14,2,162,3,2,
-54,202,3,0,
-54,203,3,0,
-21,
-1,
-44,
-54,31,4,1,3,0,1,2,63,
-26,
-45,171,1,199,0,2,
-44,
-54,31,4,0,3,0,1,2,
-1,
-1,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,203,3,0,1,3,48,
-44,
-54,202,3,0,3,0,1,2,46,
-44,
-54,203,3,0,3,0,1,2,
-39,
-54,31,4,0,1,1,162,3,
-27,207,3,
-2,
-47,1,0,
-51,32,4,
-16,114,8,
-45,14,2,2,1,0,
+17,114,8,
+46,14,2,2,1,0,
0,0,3,
+53,31,4,
+46,14,2,0,
+27,
+46,14,2,162,3,2,
+55,202,3,0,
+55,203,3,0,
+22,
+1,
+45,
+55,31,4,1,3,0,1,2,63,
+27,
+46,171,1,199,0,2,
+45,
+55,31,4,0,3,0,1,2,
+1,
+1,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,203,3,0,1,3,48,
+45,
+55,202,3,0,3,0,1,2,46,
+45,
+55,203,3,0,3,0,1,2,
+40,
+55,31,4,0,1,1,162,3,
+28,207,3,
+2,
+48,1,0,
52,32,4,
-45,14,2,0,
-26,
-45,14,2,162,3,2,
-54,205,3,0,
-54,206,3,0,
-21,
+17,114,8,
+46,14,2,2,1,0,
+0,0,3,
+53,32,4,
+46,14,2,0,
+27,
+46,14,2,162,3,2,
+55,205,3,0,
+55,206,3,0,
+22,
1,
-44,
-54,32,4,1,3,0,1,2,63,
-26,
-45,171,1,223,0,2,
-44,
-54,32,4,0,3,0,1,2,
+45,
+55,32,4,1,3,0,1,2,63,
+27,
+46,171,1,223,0,2,
+45,
+55,32,4,0,3,0,1,2,
1,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,206,3,0,1,3,48,
-44,
-54,205,3,0,3,0,1,2,46,
-44,
-54,206,3,0,3,0,1,2,
-39,
-54,32,4,0,1,1,162,3,
-27,210,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,206,3,0,1,3,48,
+45,
+55,205,3,0,3,0,1,2,46,
+45,
+55,206,3,0,3,0,1,2,
+40,
+55,32,4,0,1,1,162,3,
+28,210,3,
2,
-47,0,0,0,0,1,
-39,
-49,
-40,121,8,
+48,0,0,0,0,1,
+40,
+50,
+41,121,8,
1,
-54,208,3,0,49,
+55,208,3,0,49,
1,
-54,209,3,0,46,
-24,
-45,175,0,119,204,43,50,
+55,209,3,0,46,
+25,
+46,175,0,119,204,43,50,
1,
-54,208,3,0,49,
-54,209,3,0,1,0,
-27,214,3,
+55,208,3,0,49,
+55,209,3,0,1,0,
+28,214,3,
2,
-47,0,0,0,0,1,
-39,
-49,
-40,121,8,
+48,0,0,0,0,1,
+40,
+50,
+41,121,8,
1,
-54,211,3,0,49,
+55,211,3,0,49,
1,
-54,212,3,0,46,
-24,
-45,175,0,119,204,43,50,
+55,212,3,0,46,
+25,
+46,175,0,119,204,43,50,
1,
-54,211,3,0,49,
-54,212,3,0,1,0,
-27,217,3,
+55,211,3,0,49,
+55,212,3,0,1,0,
+28,217,3,
2,
-47,0,0,0,0,1,
-29,0,
+48,0,0,0,0,1,
+30,0,
1,
-44,
-54,216,3,0,1,0,64,
-24,
-45,175,0,0,0,0,0,
+45,
+55,216,3,0,1,0,64,
+25,
+46,175,0,0,0,0,0,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-44,
-54,215,3,0,1,0,48,
+45,
+55,215,3,0,1,0,48,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,216,3,0,1,1,1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,216,3,0,1,1,1,
2,
-47,1,0,
-51,33,4,
-16,165,8,
-45,175,0,2,1,0,
-0,0,2,
+48,1,0,
52,33,4,
-45,175,0,0,
-1,
-44,
-54,215,3,0,1,1,47,
-44,
-54,215,3,0,1,0,
-29,0,
-1,
-54,33,4,0,64,
-24,
-45,175,0,0,0,0,0,
-2,
-47,0,0,0,0,1,
-39,
-1,
-1,
-1,
-44,
-54,215,3,0,1,1,48,
-44,
-54,216,3,0,1,1,46,
-1,
-44,
-54,215,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,216,3,0,1,1,46,
-1,
-44,
-54,216,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,215,3,0,1,1,1,
-2,
-47,0,0,0,0,2,
-21,
-1,
-54,33,4,1,63,
-26,
-45,175,0,199,0,2,
-44,
-54,216,3,0,1,1,
-26,
-45,175,0,210,3,2,
-1,
-44,
-54,216,3,0,1,0,48,
-44,
-54,215,3,0,1,1,
-54,33,4,0,
-39,
-1,
-1,
-1,
-54,33,4,0,48,
-44,
-54,215,3,0,1,1,46,
-1,
-44,
-54,215,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,216,3,0,1,1,46,
-1,
-44,
-54,216,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,215,3,0,1,1,1,1,1,1,210,3,
-27,220,3,
-2,
-47,0,0,0,0,1,
-39,
-7,
-45,14,2,4,
-26,
-45,175,0,217,3,2,
-44,
-54,218,3,0,2,0,3,
-44,
-54,219,3,0,2,0,3,
-26,
-45,175,0,217,3,2,
-44,
-54,218,3,0,2,1,3,
-44,
-54,219,3,0,2,1,3,
-26,
-45,175,0,217,3,2,
-44,
-54,218,3,0,2,2,3,
-44,
-54,219,3,0,2,2,3,
-1,
-44,
-54,218,3,0,1,3,46,
-1,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,218,3,0,1,3,48,
-44,
-54,219,3,0,1,3,1,1,217,3,
-27,223,3,
-2,
-47,0,0,0,0,1,
-29,0,
-1,
-44,
-54,222,3,0,1,1,64,
-44,
-54,222,3,0,1,0,
-2,
-47,0,0,0,0,1,
-39,
-1,
-1,
-1,
-44,
-54,221,3,0,1,1,48,
-44,
-54,222,3,0,1,1,46,
-1,
-44,
-54,221,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,222,3,0,1,1,46,
-1,
-44,
-54,222,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,221,3,0,1,1,1,
-29,0,
-1,
-44,
-54,221,3,0,1,0,64,
-24,
-45,175,0,0,0,0,0,
-2,
-47,0,0,0,0,1,
-39,
-1,
-44,
-54,222,3,0,1,0,48,
-1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,221,3,0,1,1,1,
-2,
-47,1,0,
-51,34,4,
-16,165,8,
-45,175,0,2,1,0,
+17,165,8,
+46,175,0,2,1,0,
0,0,2,
+53,33,4,
+46,175,0,0,
+1,
+45,
+55,215,3,0,1,1,47,
+45,
+55,215,3,0,1,0,
+30,0,
+1,
+55,33,4,0,64,
+25,
+46,175,0,0,0,0,0,
+2,
+48,0,0,0,0,1,
+40,
+1,
+1,
+1,
+45,
+55,215,3,0,1,1,48,
+45,
+55,216,3,0,1,1,46,
+1,
+45,
+55,215,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,216,3,0,1,1,46,
+1,
+45,
+55,216,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,215,3,0,1,1,1,
+2,
+48,0,0,0,0,2,
+22,
+1,
+55,33,4,1,63,
+27,
+46,175,0,199,0,2,
+45,
+55,216,3,0,1,1,
+27,
+46,175,0,210,3,2,
+1,
+45,
+55,216,3,0,1,0,48,
+45,
+55,215,3,0,1,1,
+55,33,4,0,
+40,
+1,
+1,
+1,
+55,33,4,0,48,
+45,
+55,215,3,0,1,1,46,
+1,
+45,
+55,215,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,216,3,0,1,1,46,
+1,
+45,
+55,216,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,215,3,0,1,1,1,1,1,1,210,3,
+28,220,3,
+2,
+48,0,0,0,0,1,
+40,
+8,
+46,14,2,4,
+27,
+46,175,0,217,3,2,
+45,
+55,218,3,0,2,0,3,
+45,
+55,219,3,0,2,0,3,
+27,
+46,175,0,217,3,2,
+45,
+55,218,3,0,2,1,3,
+45,
+55,219,3,0,2,1,3,
+27,
+46,175,0,217,3,2,
+45,
+55,218,3,0,2,2,3,
+45,
+55,219,3,0,2,2,3,
+1,
+45,
+55,218,3,0,1,3,46,
+1,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,218,3,0,1,3,48,
+45,
+55,219,3,0,1,3,1,1,217,3,
+28,223,3,
+2,
+48,0,0,0,0,1,
+30,0,
+1,
+45,
+55,222,3,0,1,1,64,
+45,
+55,222,3,0,1,0,
+2,
+48,0,0,0,0,1,
+40,
+1,
+1,
+1,
+45,
+55,221,3,0,1,1,48,
+45,
+55,222,3,0,1,1,46,
+1,
+45,
+55,221,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,222,3,0,1,1,46,
+1,
+45,
+55,222,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,221,3,0,1,1,1,
+30,0,
+1,
+45,
+55,221,3,0,1,0,64,
+25,
+46,175,0,0,0,0,0,
+2,
+48,0,0,0,0,1,
+40,
+1,
+45,
+55,222,3,0,1,0,48,
+1,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,221,3,0,1,1,1,
+2,
+48,1,0,
52,34,4,
-45,175,0,0,
-26,
-45,175,0,223,0,2,
-24,
-45,175,0,0,0,0,0,
+17,165,8,
+46,175,0,2,1,0,
+0,0,2,
+53,34,4,
+46,175,0,0,
+27,
+46,175,0,223,0,2,
+25,
+46,175,0,0,0,0,0,
1,
-44,
-54,222,3,0,1,1,47,
-26,
-45,175,0,210,3,2,
+45,
+55,222,3,0,1,1,47,
+27,
+46,175,0,210,3,2,
1,
1,
-44,
-54,222,3,0,1,1,47,
-44,
-54,222,3,0,1,0,48,
-44,
-54,221,3,0,1,1,
-44,
-54,221,3,0,1,0,
-39,
+45,
+55,222,3,0,1,1,47,
+45,
+55,222,3,0,1,0,48,
+45,
+55,221,3,0,1,1,
+45,
+55,221,3,0,1,0,
+40,
1,
1,
1,
-54,34,4,0,48,
-44,
-54,221,3,0,1,1,46,
+55,34,4,0,48,
+45,
+55,221,3,0,1,1,46,
1,
-44,
-54,221,3,0,1,0,48,
+45,
+55,221,3,0,1,0,48,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,222,3,0,1,1,46,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,222,3,0,1,1,46,
1,
-44,
-54,222,3,0,1,0,48,
+45,
+55,222,3,0,1,0,48,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,221,3,0,1,1,1,1,1,210,3,
-27,226,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,221,3,0,1,1,1,1,1,210,3,
+28,226,3,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,14,2,4,
-26,
-45,175,0,223,3,2,
-44,
-54,224,3,0,2,0,3,
-44,
-54,225,3,0,2,0,3,
-26,
-45,175,0,223,3,2,
-44,
-54,224,3,0,2,1,3,
-44,
-54,225,3,0,2,1,3,
-26,
-45,175,0,223,3,2,
-44,
-54,224,3,0,2,2,3,
-44,
-54,225,3,0,2,2,3,
+48,0,0,0,0,1,
+40,
+8,
+46,14,2,4,
+27,
+46,175,0,223,3,2,
+45,
+55,224,3,0,2,0,3,
+45,
+55,225,3,0,2,0,3,
+27,
+46,175,0,223,3,2,
+45,
+55,224,3,0,2,1,3,
+45,
+55,225,3,0,2,1,3,
+27,
+46,175,0,223,3,2,
+45,
+55,224,3,0,2,2,3,
+45,
+55,225,3,0,2,2,3,
1,
-44,
-54,224,3,0,1,3,46,
+45,
+55,224,3,0,1,3,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,224,3,0,1,3,48,
-44,
-54,225,3,0,1,3,1,1,223,3,
-27,229,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,224,3,0,1,3,48,
+45,
+55,225,3,0,1,3,1,1,223,3,
+28,229,3,
2,
-47,0,0,0,0,1,
-39,
-26,
-45,14,2,201,3,2,
-54,228,3,0,
-54,227,3,0,1,1,201,3,
-27,232,3,
+48,0,0,0,0,1,
+40,
+27,
+46,14,2,201,3,2,
+55,228,3,0,
+55,227,3,0,1,1,201,3,
+28,232,3,
2,
-47,0,0,0,0,1,
-29,0,
+48,0,0,0,0,1,
+30,0,
1,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,69,
-44,
-54,230,3,0,1,1,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,69,
+45,
+55,230,3,0,1,1,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
-26,
-45,175,0,210,3,2,
+27,
+46,175,0,210,3,2,
1,
1,
-44,
-54,231,3,0,1,0,48,
-44,
-54,231,3,0,1,0,48,
+45,
+55,231,3,0,1,0,48,
+45,
+55,231,3,0,1,0,48,
1,
-44,
-54,230,3,0,1,1,47,
+45,
+55,230,3,0,1,1,47,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,
-44,
-54,231,3,0,1,1,46,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,
+45,
+55,231,3,0,1,1,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,231,3,0,1,1,48,
-44,
-54,230,3,0,1,0,46,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,231,3,0,1,1,48,
+45,
+55,230,3,0,1,0,46,
1,
-44,
-54,231,3,0,1,0,48,
+45,
+55,231,3,0,1,0,48,
1,
1,
-38,47,
-44,
-54,230,3,0,1,1,46,
+39,47,
+45,
+55,230,3,0,1,1,46,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,46,
-24,
-45,175,0,0,0,128,63,1,
-29,0,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,46,
+25,
+46,175,0,0,0,128,63,1,
+30,0,
1,
1,
-24,
-45,175,0,0,0,128,64,48,
-44,
-54,231,3,0,1,0,69,
-44,
-54,231,3,0,1,1,
+25,
+46,175,0,0,0,128,64,48,
+45,
+55,231,3,0,1,0,69,
+45,
+55,231,3,0,1,1,
2,
-47,4,0,
-51,35,4,
-16,171,8,
-45,175,0,2,
-51,36,4,
-16,176,8,
-45,175,0,2,
-51,37,4,
-16,181,8,
-45,175,0,2,
-51,38,4,
-16,187,8,
-45,175,0,2,4,0,
+48,4,0,
+52,35,4,
+17,171,8,
+46,175,0,2,
+52,36,4,
+17,176,8,
+46,175,0,2,
+52,37,4,
+17,181,8,
+46,175,0,2,
+52,38,4,
+17,187,8,
+46,175,0,2,4,0,
1,0,
0,0,
3,0,
2,0,5,
-52,35,4,
-45,175,0,0,
+53,35,4,
+46,175,0,0,
1,
-44,
-54,231,3,0,1,0,48,
-44,
-54,231,3,0,1,0,
-52,36,4,
-45,175,0,0,
+45,
+55,231,3,0,1,0,48,
+45,
+55,231,3,0,1,0,
+53,36,4,
+46,175,0,0,
1,
-54,35,4,0,48,
-44,
-54,231,3,0,1,0,
-52,37,4,
-45,175,0,0,
+55,35,4,0,48,
+45,
+55,231,3,0,1,0,
+53,37,4,
+46,175,0,0,
1,
-44,
-54,231,3,0,1,1,48,
-44,
-54,231,3,0,1,1,
-52,38,4,
-45,175,0,0,
+45,
+55,231,3,0,1,1,48,
+45,
+55,231,3,0,1,1,
+53,38,4,
+46,175,0,0,
1,
-54,37,4,0,48,
-44,
-54,231,3,0,1,1,
-39,
-26,
-45,175,0,210,3,2,
+55,37,4,0,48,
+45,
+55,231,3,0,1,1,
+40,
+27,
+46,175,0,210,3,2,
1,
1,
1,
1,
-54,37,4,0,48,
+55,37,4,0,48,
1,
-44,
-54,230,3,0,1,0,47,
+45,
+55,230,3,0,1,0,47,
1,
-44,
-54,231,3,0,1,0,48,
+45,
+55,231,3,0,1,0,48,
1,
1,
1,
-24,
-45,175,0,0,0,64,64,48,
-44,
-54,230,3,0,1,1,47,
+25,
+46,175,0,0,0,64,64,48,
+45,
+55,230,3,0,1,1,47,
1,
-24,
-45,175,0,0,0,192,64,48,
-44,
-54,230,3,0,1,0,47,
-24,
-45,175,0,0,0,128,63,46,
+25,
+46,175,0,0,0,192,64,48,
+45,
+55,230,3,0,1,0,47,
+25,
+46,175,0,0,0,128,63,46,
1,
1,
1,
-24,
-45,175,0,0,0,64,65,48,
-44,
-54,231,3,0,1,1,48,
-54,35,4,0,48,
+25,
+46,175,0,0,0,64,65,48,
+45,
+55,231,3,0,1,1,48,
+55,35,4,0,48,
1,
-44,
-54,230,3,0,1,1,47,
+45,
+55,230,3,0,1,1,47,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,47,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,47,
1,
1,
-24,
-45,175,0,0,0,128,65,48,
-54,36,4,0,48,
+25,
+46,175,0,0,0,128,65,48,
+55,36,4,0,48,
1,
-44,
-54,230,3,0,1,1,47,
+45,
+55,230,3,0,1,1,47,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,47,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,47,
1,
-54,38,4,0,48,
-44,
-54,230,3,0,1,0,
-54,37,4,0,1,
+55,38,4,0,48,
+45,
+55,230,3,0,1,0,
+55,37,4,0,1,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
1,
1,
1,
-44,
-54,231,3,0,1,0,48,
+45,
+55,231,3,0,1,0,48,
1,
1,
-44,
-54,230,3,0,1,1,47,
+45,
+55,230,3,0,1,1,47,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,46,
-24,
-45,175,0,0,0,128,63,46,
-44,
-54,230,3,0,1,0,47,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,46,
+25,
+46,175,0,0,0,128,63,46,
+45,
+55,230,3,0,1,0,47,
1,
-26,
-45,175,0,112,0,1,
+27,
+46,175,0,112,0,1,
1,
-44,
-54,231,3,0,1,1,48,
-44,
-54,231,3,0,1,0,48,
+45,
+55,231,3,0,1,1,48,
+45,
+55,231,3,0,1,0,48,
1,
-44,
-54,230,3,0,1,1,47,
+45,
+55,230,3,0,1,1,47,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,230,3,0,1,0,47,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,230,3,0,1,0,47,
1,
-44,
-54,231,3,0,1,1,48,
-44,
-54,230,3,0,1,0,1,1,1,210,3,
-27,235,3,
+45,
+55,231,3,0,1,1,48,
+45,
+55,230,3,0,1,0,1,1,1,210,3,
+28,235,3,
2,
-47,0,0,0,0,1,
-39,
-49,
+48,0,0,0,0,1,
+40,
+50,
1,
-44,
-54,234,3,0,1,3,64,
-24,
-45,175,0,0,0,0,0,
-54,233,3,0,
-7,
-45,14,2,4,
-26,
-45,175,0,232,3,2,
-44,
-54,233,3,0,2,0,3,
-44,
-54,234,3,0,2,0,3,
-26,
-45,175,0,232,3,2,
-44,
-54,233,3,0,2,1,3,
-44,
-54,234,3,0,2,1,3,
-26,
-45,175,0,232,3,2,
-44,
-54,233,3,0,2,2,3,
-44,
-54,234,3,0,2,2,3,
+45,
+55,234,3,0,1,3,64,
+25,
+46,175,0,0,0,0,0,
+55,233,3,0,
+8,
+46,14,2,4,
+27,
+46,175,0,232,3,2,
+45,
+55,233,3,0,2,0,3,
+45,
+55,234,3,0,2,0,3,
+27,
+46,175,0,232,3,2,
+45,
+55,233,3,0,2,1,3,
+45,
+55,234,3,0,2,1,3,
+27,
+46,175,0,232,3,2,
+45,
+55,233,3,0,2,2,3,
+45,
+55,234,3,0,2,2,3,
1,
-44,
-54,233,3,0,1,3,46,
+45,
+55,233,3,0,1,3,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,233,3,0,1,3,48,
-44,
-54,234,3,0,1,3,1,1,232,3,
-27,238,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,233,3,0,1,3,48,
+45,
+55,234,3,0,1,3,1,1,232,3,
+28,238,3,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,14,2,2,
+48,0,0,0,0,1,
+40,
+8,
+46,14,2,2,
1,
1,
-44,
-54,236,3,0,3,0,1,2,46,
-44,
-54,237,3,0,3,0,1,2,47,
+45,
+55,236,3,0,3,0,1,2,46,
+45,
+55,237,3,0,3,0,1,2,47,
1,
-24,
-45,175,0,0,0,0,64,48,
-26,
-45,171,1,199,0,2,
+25,
+46,175,0,0,0,0,64,48,
+27,
+46,171,1,199,0,2,
1,
-44,
-54,236,3,0,3,0,1,2,48,
-44,
-54,237,3,0,1,3,
+45,
+55,236,3,0,3,0,1,2,48,
+45,
+55,237,3,0,1,3,
1,
-44,
-54,237,3,0,3,0,1,2,48,
-44,
-54,236,3,0,1,3,
+45,
+55,237,3,0,3,0,1,2,48,
+45,
+55,236,3,0,1,3,
1,
-44,
-54,236,3,0,1,3,46,
+45,
+55,236,3,0,1,3,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,236,3,0,1,3,48,
-44,
-54,237,3,0,1,3,1,0,
-27,241,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,236,3,0,1,3,48,
+45,
+55,237,3,0,1,3,1,0,
+28,241,3,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,14,2,2,
+48,0,0,0,0,1,
+40,
+8,
+46,14,2,2,
1,
1,
-44,
-54,240,3,0,3,0,1,2,46,
-44,
-54,239,3,0,3,0,1,2,47,
+45,
+55,240,3,0,3,0,1,2,46,
+45,
+55,239,3,0,3,0,1,2,47,
1,
1,
-24,
-45,175,0,0,0,0,64,48,
-44,
-54,240,3,0,3,0,1,2,48,
-44,
-54,239,3,0,3,0,1,2,
+25,
+46,175,0,0,0,0,64,48,
+45,
+55,240,3,0,3,0,1,2,48,
+45,
+55,239,3,0,3,0,1,2,
1,
-44,
-54,239,3,0,1,3,46,
+45,
+55,239,3,0,1,3,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,239,3,0,1,3,48,
-44,
-54,240,3,0,1,3,1,0,
-27,244,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,239,3,0,1,3,48,
+45,
+55,240,3,0,1,3,1,0,
+28,244,3,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,14,2,2,
+48,0,0,0,0,1,
+40,
+8,
+46,14,2,2,
1,
1,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,242,3,0,1,3,48,
-44,
-54,243,3,0,3,0,1,2,46,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,242,3,0,1,3,48,
+45,
+55,243,3,0,3,0,1,2,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,243,3,0,1,3,48,
-44,
-54,242,3,0,3,0,1,2,46,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,243,3,0,1,3,48,
+45,
+55,242,3,0,3,0,1,2,46,
1,
-44,
-54,242,3,0,3,0,1,2,48,
-44,
-54,243,3,0,3,0,1,2,
+45,
+55,242,3,0,3,0,1,2,48,
+45,
+55,243,3,0,3,0,1,2,
1,
-44,
-54,242,3,0,1,3,46,
+45,
+55,242,3,0,1,3,46,
1,
1,
-24,
-45,175,0,0,0,128,63,47,
-44,
-54,242,3,0,1,3,48,
-44,
-54,243,3,0,1,3,1,0,
-27,246,3,
+25,
+46,175,0,0,0,128,63,47,
+45,
+55,242,3,0,1,3,48,
+45,
+55,243,3,0,1,3,1,0,
+28,246,3,
2,
-47,0,0,0,0,1,
-39,
-26,
-45,175,0,165,1,2,
-7,
-45,171,1,3,
-24,
-45,175,0,154,153,153,62,
-24,
-45,175,0,61,10,23,63,
-24,
-45,175,0,174,71,225,61,
-54,245,3,0,1,0,
-27,250,3,
+48,0,0,0,0,1,
+40,
+27,
+46,175,0,165,1,2,
+8,
+46,171,1,3,
+25,
+46,175,0,154,153,153,62,
+25,
+46,175,0,61,10,23,63,
+25,
+46,175,0,174,71,225,61,
+55,245,3,0,1,0,
+28,250,3,
2,
-47,4,0,
-51,39,4,
-16,193,8,
-45,175,0,2,
-51,40,4,
-16,114,8,
-45,171,1,2,
-51,41,4,
-16,197,8,
-45,175,0,2,
-51,42,4,
-16,205,8,
-45,175,0,2,4,0,
+48,4,0,
+52,39,4,
+17,193,8,
+46,175,0,2,
+52,40,4,
+17,114,8,
+46,171,1,2,
+52,41,4,
+17,197,8,
+46,175,0,2,
+52,42,4,
+17,205,8,
+46,175,0,2,4,0,
0,0,
3,0,
2,0,
1,0,6,
-52,39,4,
-45,175,0,0,
-26,
-45,175,0,246,3,1,
-54,249,3,0,
-52,40,4,
-45,171,1,0,
+53,39,4,
+46,175,0,0,
+27,
+46,175,0,246,3,1,
+55,249,3,0,
+53,40,4,
+46,171,1,0,
1,
1,
-54,39,4,0,47,
-26,
-45,175,0,246,3,1,
-54,247,3,0,46,
-54,247,3,0,
-52,41,4,
-45,175,0,0,
-26,
-45,175,0,199,0,2,
-26,
-45,175,0,199,0,2,
-44,
-54,40,4,0,1,0,
-44,
-54,40,4,0,1,1,
-44,
-54,40,4,0,1,2,
-52,42,4,
-45,175,0,0,
-26,
-45,175,0,223,0,2,
-26,
-45,175,0,223,0,2,
-44,
-54,40,4,0,1,0,
-44,
-54,40,4,0,1,1,
-44,
-54,40,4,0,1,2,
-29,0,
+55,39,4,0,47,
+27,
+46,175,0,246,3,1,
+55,247,3,0,46,
+55,247,3,0,
+53,41,4,
+46,175,0,0,
+27,
+46,175,0,199,0,2,
+27,
+46,175,0,199,0,2,
+45,
+55,40,4,0,1,0,
+45,
+55,40,4,0,1,1,
+45,
+55,40,4,0,1,2,
+53,42,4,
+46,175,0,0,
+27,
+46,175,0,223,0,2,
+27,
+46,175,0,223,0,2,
+45,
+55,40,4,0,1,0,
+45,
+55,40,4,0,1,1,
+45,
+55,40,4,0,1,2,
+30,0,
1,
1,
-54,41,4,0,67,
-24,
-45,175,0,0,0,0,0,59,
+55,41,4,0,67,
+25,
+46,175,0,0,0,0,0,59,
1,
-54,39,4,0,65,
-54,41,4,0,
+55,39,4,0,65,
+55,41,4,0,
2,
-47,0,0,0,0,1,
-21,
+48,0,0,0,0,1,
+22,
1,
-54,40,4,1,63,
+55,40,4,1,63,
1,
-54,39,4,0,46,
+55,39,4,0,46,
1,
1,
-54,40,4,0,47,
-54,39,4,0,48,
-26,
-45,175,0,210,3,2,
-54,39,4,0,
+55,40,4,0,47,
+55,39,4,0,48,
+27,
+46,175,0,210,3,2,
+55,39,4,0,
1,
-54,39,4,0,47,
-54,41,4,0,1,
-55,
-29,0,
+55,39,4,0,47,
+55,41,4,0,1,
+56,
+30,0,
1,
1,
-54,42,4,0,66,
-54,248,3,0,59,
+55,42,4,0,66,
+55,248,3,0,59,
1,
-54,42,4,0,65,
-54,39,4,0,
+55,42,4,0,65,
+55,39,4,0,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-54,39,4,0,46,
-26,
-45,171,1,214,3,2,
+55,39,4,0,46,
+27,
+46,171,1,214,3,2,
1,
1,
-54,40,4,0,47,
-54,39,4,0,48,
+55,40,4,0,47,
+55,39,4,0,48,
1,
-54,248,3,0,47,
-54,39,4,0,
+55,248,3,0,47,
+55,39,4,0,
1,
-54,42,4,0,47,
-54,39,4,0,1,
+55,42,4,0,47,
+55,39,4,0,1,
2,
-47,0,0,0,0,1,
-39,
-54,40,4,0,1,1,3,210,3,214,3,246,3,
-27,252,3,
+48,0,0,0,0,1,
+40,
+55,40,4,0,1,1,3,210,3,214,3,246,3,
+28,252,3,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-26,
-45,175,0,223,0,2,
-26,
-45,175,0,223,0,2,
-44,
-54,251,3,0,1,0,
-44,
-54,251,3,0,1,1,
-44,
-54,251,3,0,1,2,47,
-26,
-45,175,0,199,0,2,
-26,
-45,175,0,199,0,2,
-44,
-54,251,3,0,1,0,
-44,
-54,251,3,0,1,1,
-44,
-54,251,3,0,1,2,1,0,
-27,255,3,
+27,
+46,175,0,223,0,2,
+27,
+46,175,0,223,0,2,
+45,
+55,251,3,0,1,0,
+45,
+55,251,3,0,1,1,
+45,
+55,251,3,0,1,2,47,
+27,
+46,175,0,199,0,2,
+27,
+46,175,0,199,0,2,
+45,
+55,251,3,0,1,0,
+45,
+55,251,3,0,1,1,
+45,
+55,251,3,0,1,2,1,0,
+28,255,3,
2,
-47,0,0,0,0,1,
-29,0,
+48,0,0,0,0,1,
+30,0,
1,
-44,
-54,253,3,0,1,0,67,
-44,
-54,253,3,0,1,2,
+45,
+55,253,3,0,1,0,67,
+45,
+55,253,3,0,1,2,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,171,1,3,
-24,
-45,175,0,0,0,0,0,
-26,
-45,175,0,210,3,2,
+48,0,0,0,0,1,
+40,
+8,
+46,171,1,3,
+25,
+46,175,0,0,0,0,0,
+27,
+46,175,0,210,3,2,
1,
-54,254,3,0,48,
+55,254,3,0,48,
1,
-44,
-54,253,3,0,1,1,47,
-44,
-54,253,3,0,1,0,
+45,
+55,253,3,0,1,1,47,
+45,
+55,253,3,0,1,0,
1,
-44,
-54,253,3,0,1,2,47,
-44,
-54,253,3,0,1,0,
-54,254,3,0,1,
+45,
+55,253,3,0,1,2,47,
+45,
+55,253,3,0,1,0,
+55,254,3,0,1,
2,
-47,0,0,0,0,1,
-39,
-12,
-45,171,1,1,
-24,
-45,175,0,0,0,0,0,1,1,1,210,3,
-27,2,4,
+48,0,0,0,0,1,
+40,
+13,
+46,171,1,1,
+25,
+46,175,0,0,0,0,0,1,1,1,210,3,
+28,2,4,
2,
-47,1,0,
-51,43,4,
-16,174,7,
-45,175,0,2,1,0,
-0,0,2,
+48,1,0,
52,43,4,
-45,175,0,0,
-26,
-45,175,0,252,3,1,
-54,1,4,0,
-29,0,
+17,174,7,
+46,175,0,2,1,0,
+0,0,2,
+53,43,4,
+46,175,0,0,
+27,
+46,175,0,252,3,1,
+55,1,4,0,
+30,0,
1,
-44,
-54,0,4,0,1,0,69,
-44,
-54,0,4,0,1,1,
+45,
+55,0,4,0,1,0,69,
+45,
+55,0,4,0,1,1,
2,
-47,0,0,0,0,1,
-29,0,
+48,0,0,0,0,1,
+30,0,
1,
-44,
-54,0,4,0,1,1,69,
-44,
-54,0,4,0,1,2,
+45,
+55,0,4,0,1,1,69,
+45,
+55,0,4,0,1,2,
2,
-47,0,0,0,0,1,
-39,
-26,
-45,171,1,255,3,2,
-54,0,4,0,
-54,43,4,0,1,
-29,0,
+48,0,0,0,0,1,
+40,
+27,
+46,171,1,255,3,2,
+55,0,4,0,
+55,43,4,0,1,
+30,0,
1,
-44,
-54,0,4,0,1,0,69,
-44,
-54,0,4,0,1,2,
+45,
+55,0,4,0,1,0,69,
+45,
+55,0,4,0,1,2,
2,
-47,0,0,0,0,1,
-39,
-44,
-26,
-45,171,1,255,3,2,
-44,
-54,0,4,0,3,0,2,1,
-54,43,4,0,3,0,2,1,1,
+48,0,0,0,0,1,
+40,
+45,
+27,
+46,171,1,255,3,2,
+45,
+55,0,4,0,3,0,2,1,
+55,43,4,0,3,0,2,1,1,
2,
-47,0,0,0,0,1,
-39,
-44,
-26,
-45,171,1,255,3,2,
-44,
-54,0,4,0,3,2,0,1,
-54,43,4,0,3,1,2,0,1,1,
-29,0,
+48,0,0,0,0,1,
+40,
+45,
+27,
+46,171,1,255,3,2,
+45,
+55,0,4,0,3,2,0,1,
+55,43,4,0,3,1,2,0,1,1,
+30,0,
1,
-44,
-54,0,4,0,1,0,69,
-44,
-54,0,4,0,1,2,
+45,
+55,0,4,0,1,0,69,
+45,
+55,0,4,0,1,2,
2,
-47,0,0,0,0,1,
-39,
-44,
-26,
-45,171,1,255,3,2,
-44,
-54,0,4,0,3,1,0,2,
-54,43,4,0,3,1,0,2,1,
-29,0,
+48,0,0,0,0,1,
+40,
+45,
+27,
+46,171,1,255,3,2,
+45,
+55,0,4,0,3,1,0,2,
+55,43,4,0,3,1,0,2,1,
+30,0,
1,
-44,
-54,0,4,0,1,1,69,
-44,
-54,0,4,0,1,2,
+45,
+55,0,4,0,1,1,69,
+45,
+55,0,4,0,1,2,
2,
-47,0,0,0,0,1,
-39,
-44,
-26,
-45,171,1,255,3,2,
-44,
-54,0,4,0,3,1,2,0,
-54,43,4,0,3,2,0,1,1,
+48,0,0,0,0,1,
+40,
+45,
+27,
+46,171,1,255,3,2,
+45,
+55,0,4,0,3,1,2,0,
+55,43,4,0,3,2,0,1,1,
2,
-47,0,0,0,0,1,
-39,
-44,
-26,
-45,171,1,255,3,2,
-44,
-54,0,4,0,3,2,1,0,
-54,43,4,0,3,2,1,0,1,1,2,252,3,255,3,
-27,5,4,
+48,0,0,0,0,1,
+40,
+45,
+27,
+46,171,1,255,3,2,
+45,
+55,0,4,0,3,2,1,0,
+55,43,4,0,3,2,1,0,1,1,2,252,3,255,3,
+28,5,4,
2,
-47,3,0,
-51,44,4,
-16,98,7,
-45,175,0,2,
-51,45,4,
-16,213,8,
-45,171,1,2,
-51,46,4,
-16,217,8,
-45,171,1,2,3,0,
-0,0,
-2,0,
-1,0,4,
+48,3,0,
52,44,4,
-45,175,0,0,
-1,
-44,
-54,4,4,0,1,3,48,
-44,
-54,3,4,0,1,3,
+17,98,7,
+46,175,0,2,
52,45,4,
-45,171,1,0,
-1,
-44,
-54,3,4,0,3,0,1,2,48,
-44,
-54,4,4,0,1,3,
+17,213,8,
+46,171,1,2,
52,46,4,
-45,171,1,0,
-1,
-44,
-54,4,4,0,3,0,1,2,48,
-44,
-54,3,4,0,1,3,
-39,
-7,
-45,14,2,2,
-1,
-1,
-1,
-1,
-26,
-45,171,1,250,3,3,
-26,
-45,171,1,2,4,2,
-54,45,4,0,
-54,46,4,0,
-54,44,4,0,
-54,46,4,0,46,
-44,
-54,4,4,0,3,0,1,2,47,
-54,46,4,0,46,
-44,
-54,3,4,0,3,0,1,2,47,
-54,45,4,0,
-1,
-1,
-44,
-54,3,4,0,1,3,46,
-44,
-54,4,4,0,1,3,47,
-54,44,4,0,1,2,250,3,2,4,
-27,8,4,
-2,
-47,3,0,
-51,47,4,
-16,98,7,
-45,175,0,2,
-51,48,4,
-16,213,8,
-45,171,1,2,
-51,49,4,
-16,217,8,
-45,171,1,2,3,0,
+17,217,8,
+46,171,1,2,3,0,
0,0,
2,0,
1,0,4,
+53,44,4,
+46,175,0,0,
+1,
+45,
+55,4,4,0,1,3,48,
+45,
+55,3,4,0,1,3,
+53,45,4,
+46,171,1,0,
+1,
+45,
+55,3,4,0,3,0,1,2,48,
+45,
+55,4,4,0,1,3,
+53,46,4,
+46,171,1,0,
+1,
+45,
+55,4,4,0,3,0,1,2,48,
+45,
+55,3,4,0,1,3,
+40,
+8,
+46,14,2,2,
+1,
+1,
+1,
+1,
+27,
+46,171,1,250,3,3,
+27,
+46,171,1,2,4,2,
+55,45,4,0,
+55,46,4,0,
+55,44,4,0,
+55,46,4,0,46,
+45,
+55,4,4,0,3,0,1,2,47,
+55,46,4,0,46,
+45,
+55,3,4,0,3,0,1,2,47,
+55,45,4,0,
+1,
+1,
+45,
+55,3,4,0,1,3,46,
+45,
+55,4,4,0,1,3,47,
+55,44,4,0,1,2,250,3,2,4,
+28,8,4,
+2,
+48,3,0,
52,47,4,
-45,175,0,0,
-1,
-44,
-54,7,4,0,1,3,48,
-44,
-54,6,4,0,1,3,
+17,98,7,
+46,175,0,2,
52,48,4,
-45,171,1,0,
-1,
-44,
-54,6,4,0,3,0,1,2,48,
-44,
-54,7,4,0,1,3,
+17,213,8,
+46,171,1,2,
52,49,4,
-45,171,1,0,
-1,
-44,
-54,7,4,0,3,0,1,2,48,
-44,
-54,6,4,0,1,3,
-39,
-7,
-45,14,2,2,
-1,
-1,
-1,
-1,
-26,
-45,171,1,250,3,3,
-26,
-45,171,1,2,4,2,
-54,49,4,0,
-54,48,4,0,
-54,47,4,0,
-54,49,4,0,46,
-44,
-54,7,4,0,3,0,1,2,47,
-54,49,4,0,46,
-44,
-54,6,4,0,3,0,1,2,47,
-54,48,4,0,
-1,
-1,
-44,
-54,6,4,0,1,3,46,
-44,
-54,7,4,0,1,3,47,
-54,47,4,0,1,2,250,3,2,4,
-27,11,4,
-2,
-47,3,0,
-51,50,4,
-16,98,7,
-45,175,0,2,
-51,51,4,
-16,213,8,
-45,171,1,2,
-51,52,4,
-16,217,8,
-45,171,1,2,3,0,
+17,217,8,
+46,171,1,2,3,0,
0,0,
2,0,
1,0,4,
+53,47,4,
+46,175,0,0,
+1,
+45,
+55,7,4,0,1,3,48,
+45,
+55,6,4,0,1,3,
+53,48,4,
+46,171,1,0,
+1,
+45,
+55,6,4,0,3,0,1,2,48,
+45,
+55,7,4,0,1,3,
+53,49,4,
+46,171,1,0,
+1,
+45,
+55,7,4,0,3,0,1,2,48,
+45,
+55,6,4,0,1,3,
+40,
+8,
+46,14,2,2,
+1,
+1,
+1,
+1,
+27,
+46,171,1,250,3,3,
+27,
+46,171,1,2,4,2,
+55,49,4,0,
+55,48,4,0,
+55,47,4,0,
+55,49,4,0,46,
+45,
+55,7,4,0,3,0,1,2,47,
+55,49,4,0,46,
+45,
+55,6,4,0,3,0,1,2,47,
+55,48,4,0,
+1,
+1,
+45,
+55,6,4,0,1,3,46,
+45,
+55,7,4,0,1,3,47,
+55,47,4,0,1,2,250,3,2,4,
+28,11,4,
+2,
+48,3,0,
52,50,4,
-45,175,0,0,
-1,
-44,
-54,10,4,0,1,3,48,
-44,
-54,9,4,0,1,3,
+17,98,7,
+46,175,0,2,
52,51,4,
-45,171,1,0,
-1,
-44,
-54,9,4,0,3,0,1,2,48,
-44,
-54,10,4,0,1,3,
+17,213,8,
+46,171,1,2,
52,52,4,
-45,171,1,0,
-1,
-44,
-54,10,4,0,3,0,1,2,48,
-44,
-54,9,4,0,1,3,
-39,
-7,
-45,14,2,2,
-1,
-1,
-1,
-1,
-26,
-45,171,1,250,3,3,
-54,51,4,0,
-54,50,4,0,
-54,52,4,0,46,
-44,
-54,10,4,0,3,0,1,2,47,
-54,52,4,0,46,
-44,
-54,9,4,0,3,0,1,2,47,
-54,51,4,0,
-1,
-1,
-44,
-54,9,4,0,1,3,46,
-44,
-54,10,4,0,1,3,47,
-54,50,4,0,1,1,250,3,
-27,14,4,
-2,
-47,3,0,
-51,53,4,
-16,98,7,
-45,175,0,2,
-51,54,4,
-16,213,8,
-45,171,1,2,
-51,55,4,
-16,217,8,
-45,171,1,2,3,0,
+17,217,8,
+46,171,1,2,3,0,
0,0,
2,0,
1,0,4,
+53,50,4,
+46,175,0,0,
+1,
+45,
+55,10,4,0,1,3,48,
+45,
+55,9,4,0,1,3,
+53,51,4,
+46,171,1,0,
+1,
+45,
+55,9,4,0,3,0,1,2,48,
+45,
+55,10,4,0,1,3,
+53,52,4,
+46,171,1,0,
+1,
+45,
+55,10,4,0,3,0,1,2,48,
+45,
+55,9,4,0,1,3,
+40,
+8,
+46,14,2,2,
+1,
+1,
+1,
+1,
+27,
+46,171,1,250,3,3,
+55,51,4,0,
+55,50,4,0,
+55,52,4,0,46,
+45,
+55,10,4,0,3,0,1,2,47,
+55,52,4,0,46,
+45,
+55,9,4,0,3,0,1,2,47,
+55,51,4,0,
+1,
+1,
+45,
+55,9,4,0,1,3,46,
+45,
+55,10,4,0,1,3,47,
+55,50,4,0,1,1,250,3,
+28,14,4,
+2,
+48,3,0,
52,53,4,
-45,175,0,0,
-1,
-44,
-54,13,4,0,1,3,48,
-44,
-54,12,4,0,1,3,
+17,98,7,
+46,175,0,2,
52,54,4,
-45,171,1,0,
-1,
-44,
-54,12,4,0,3,0,1,2,48,
-44,
-54,13,4,0,1,3,
+17,213,8,
+46,171,1,2,
52,55,4,
-45,171,1,0,
+17,217,8,
+46,171,1,2,3,0,
+0,0,
+2,0,
+1,0,4,
+53,53,4,
+46,175,0,0,
1,
-44,
-54,13,4,0,3,0,1,2,48,
-44,
-54,12,4,0,1,3,
-39,
-7,
-45,14,2,2,
+45,
+55,13,4,0,1,3,48,
+45,
+55,12,4,0,1,3,
+53,54,4,
+46,171,1,0,
+1,
+45,
+55,12,4,0,3,0,1,2,48,
+45,
+55,13,4,0,1,3,
+53,55,4,
+46,171,1,0,
+1,
+45,
+55,13,4,0,3,0,1,2,48,
+45,
+55,12,4,0,1,3,
+40,
+8,
+46,14,2,2,
1,
1,
1,
1,
-26,
-45,171,1,250,3,3,
-54,55,4,0,
-54,53,4,0,
-54,54,4,0,46,
-44,
-54,13,4,0,3,0,1,2,47,
-54,55,4,0,46,
-44,
-54,12,4,0,3,0,1,2,47,
-54,54,4,0,
+27,
+46,171,1,250,3,3,
+55,55,4,0,
+55,53,4,0,
+55,54,4,0,46,
+45,
+55,13,4,0,3,0,1,2,47,
+55,55,4,0,46,
+45,
+55,12,4,0,3,0,1,2,47,
+55,54,4,0,
1,
1,
-44,
-54,12,4,0,1,3,46,
-44,
-54,13,4,0,1,3,47,
-54,53,4,0,1,1,250,3,
-27,16,4,
+45,
+55,12,4,0,1,3,46,
+45,
+55,13,4,0,1,3,47,
+55,53,4,0,1,1,250,3,
+28,16,4,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,14,2,2,
+48,0,0,0,0,1,
+40,
+8,
+46,14,2,2,
1,
-44,
-54,15,4,0,3,0,1,2,49,
-26,
-45,175,0,223,0,2,
-44,
-54,15,4,0,1,3,
-24,
-45,175,0,23,183,209,56,
-44,
-54,15,4,0,1,3,1,0,
-27,19,4,
+45,
+55,15,4,0,3,0,1,2,49,
+27,
+46,175,0,223,0,2,
+45,
+55,15,4,0,1,3,
+25,
+46,175,0,23,183,209,56,
+45,
+55,15,4,0,1,3,1,0,
+28,19,4,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,131,1,2,
+48,0,0,0,0,1,
+40,
+8,
+46,131,1,2,
1,
-44,
-54,17,4,0,3,0,1,2,49,
-26,
-45,167,0,215,0,2,
-44,
-54,17,4,0,1,3,
-24,
-45,167,0,23,183,209,56,
-44,
-54,17,4,0,1,3,1,0,
-27,21,4,
+45,
+55,17,4,0,3,0,1,2,49,
+27,
+46,167,0,215,0,2,
+45,
+55,17,4,0,1,3,
+25,
+46,167,0,23,183,209,56,
+45,
+55,17,4,0,1,3,1,0,
+28,21,4,
2,
-47,0,0,0,0,1,
-39,
+48,0,0,0,0,1,
+40,
1,
-44,
-54,20,4,0,2,0,1,49,
-44,
-54,20,4,0,1,2,1,0,
-27,25,4,
+45,
+55,20,4,0,2,0,1,49,
+45,
+55,20,4,0,1,2,1,0,
+28,25,4,
2,
-47,0,0,0,0,1,
-39,
-49,
-40,221,8,
-26,
-45,167,0,104,2,1,
-7,
-45,217,1,2,
-54,22,4,0,
-54,23,4,0,
+48,0,0,0,0,1,
+40,
+50,
+41,221,8,
+27,
+46,167,0,104,2,1,
+8,
+46,217,1,2,
+55,22,4,0,
+55,23,4,0,
1,
1,
-44,
-54,22,4,0,1,0,48,
-44,
-54,23,4,0,1,1,47,
+45,
+55,22,4,0,1,0,48,
+45,
+55,23,4,0,1,1,47,
1,
-44,
-54,22,4,0,1,1,48,
-44,
-54,23,4,0,1,0,1,0,
-27,29,4,
+45,
+55,22,4,0,1,1,48,
+45,
+55,23,4,0,1,0,1,0,
+28,29,4,
2,
-47,0,0,0,0,1,
-39,
-49,
-40,221,8,
-26,
-45,175,0,108,2,1,
-7,
-45,7,2,2,
-54,26,4,0,
-54,27,4,0,
+48,0,0,0,0,1,
+40,
+50,
+41,221,8,
+27,
+46,175,0,108,2,1,
+8,
+46,7,2,2,
+55,26,4,0,
+55,27,4,0,
1,
1,
-44,
-54,26,4,0,1,0,48,
-44,
-54,27,4,0,1,1,47,
+45,
+55,26,4,0,1,0,48,
+45,
+55,27,4,0,1,1,47,
1,
-44,
-54,26,4,0,1,1,48,
-44,
-54,27,4,0,1,0,1,0,
-20,};
+45,
+55,26,4,0,1,1,48,
+45,
+55,27,4,0,1,0,1,0,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_gpu_LENGTH = sizeof(SKSL_INCLUDE_sksl_gpu);
diff --git a/src/sksl/generated/sksl_public.dehydrated.sksl b/src/sksl/generated/sksl_public.dehydrated.sksl
index 7619a79..e298655 100644
--- a/src/sksl/generated/sksl_public.dehydrated.sksl
+++ b/src/sksl/generated/sksl_public.dehydrated.sksl
@@ -80,1196 +80,1196 @@
5,104,97,108,102,52,
8,117,110,112,114,101,109,117,108,
6,102,108,111,97,116,52,
-47,129,1,
-51,1,0,
-16,2,0,
-48,2,0,10,0,3,
-28,3,0,
-16,19,0,1,1,0,
-45,2,0,
-51,4,0,
-16,2,0,
-48,5,0,27,0,3,
-50,6,0,2,
-45,3,0,
-28,7,0,
-16,19,0,1,4,0,
-45,5,0,
-45,7,0,
-51,8,0,
-16,19,0,
-45,2,0,3,
-28,9,0,
-16,2,0,1,8,0,
-45,2,0,
-51,10,0,
-16,19,0,
-45,5,0,3,
-50,11,0,2,
-45,9,0,
-28,12,0,
-16,2,0,1,10,0,
-45,5,0,
-45,12,0,
-51,13,0,
-16,37,0,
-45,2,0,3,
-28,14,0,
-16,43,0,1,13,0,
-45,2,0,
-51,15,0,
-16,37,0,
-45,5,0,3,
-50,16,0,2,
-45,14,0,
-28,17,0,
-16,43,0,1,15,0,
-45,5,0,
-45,17,0,
-51,18,0,
-16,37,0,
-45,2,0,3,
-28,19,0,
-16,47,0,1,18,0,
-45,2,0,
-51,20,0,
-16,37,0,
-45,5,0,3,
-50,21,0,2,
-45,19,0,
-28,22,0,
-16,47,0,1,20,0,
-45,5,0,
-45,22,0,
-51,23,0,
-16,37,0,
-45,2,0,3,
-28,24,0,
-16,51,0,1,23,0,
-45,2,0,
-51,25,0,
-16,37,0,
-45,5,0,3,
-50,26,0,2,
-45,24,0,
-28,27,0,
-16,51,0,1,25,0,
-45,5,0,
-45,27,0,
-51,28,0,
-16,55,0,
-45,2,0,3,
-28,29,0,
-16,57,0,1,28,0,
-45,2,0,
-51,30,0,
-16,55,0,
-45,5,0,3,
-50,31,0,2,
-45,29,0,
-28,32,0,
-16,57,0,1,30,0,
-45,5,0,
-45,32,0,
-51,33,0,
-16,55,0,
-45,2,0,3,
-28,34,0,
-16,62,0,1,33,0,
-45,2,0,
-51,35,0,
-16,55,0,
-45,5,0,3,
-50,36,0,2,
-45,34,0,
-28,37,0,
-16,62,0,1,35,0,
-45,5,0,
-45,37,0,
-51,38,0,
-16,67,0,
-45,2,0,3,
-51,39,0,
-16,55,0,
-45,2,0,3,
-28,40,0,
-16,69,0,2,38,0,39,0,
-45,2,0,
-51,41,0,
-16,67,0,
-45,5,0,3,
-51,42,0,
-16,55,0,
-45,5,0,3,
-50,43,0,2,
-45,40,0,
-28,44,0,
-16,69,0,2,41,0,42,0,
-45,5,0,
-45,44,0,
-51,45,0,
-16,74,0,
-45,2,0,3,
-50,46,0,3,
-45,40,0,
-45,44,0,
-28,47,0,
-16,69,0,1,45,0,
-45,2,0,
-45,47,0,
-51,48,0,
-16,74,0,
-45,5,0,3,
-50,49,0,4,
-45,40,0,
-45,44,0,
-45,47,0,
-28,50,0,
-16,69,0,1,48,0,
-45,5,0,
-45,50,0,
-51,51,0,
-16,55,0,
-45,2,0,3,
-51,52,0,
-16,67,0,
-45,2,0,3,
-28,53,0,
-16,83,0,2,51,0,52,0,
-45,2,0,
-51,54,0,
-16,55,0,
-45,5,0,3,
-51,55,0,
-16,67,0,
-45,5,0,3,
-50,56,0,2,
-45,53,0,
-28,57,0,
-16,83,0,2,54,0,55,0,
-45,5,0,
-45,57,0,
-51,58,0,
-16,55,0,
-45,2,0,3,
-28,59,0,
-16,87,0,1,58,0,
-45,2,0,
-51,60,0,
-16,55,0,
-45,5,0,3,
-50,61,0,2,
-45,59,0,
-28,62,0,
-16,87,0,1,60,0,
-45,5,0,
-45,62,0,
-51,63,0,
-16,55,0,
-45,2,0,3,
-28,64,0,
-16,91,0,1,63,0,
-45,2,0,
-51,65,0,
-16,55,0,
-45,5,0,3,
-50,66,0,2,
-45,64,0,
-28,67,0,
-16,91,0,1,65,0,
-45,5,0,
-45,67,0,
-51,68,0,
-16,55,0,
-45,2,0,3,
-28,69,0,
-16,95,0,1,68,0,
-45,2,0,
-51,70,0,
-16,55,0,
-45,5,0,3,
-50,71,0,2,
-45,69,0,
-28,72,0,
-16,95,0,1,70,0,
-45,5,0,
-45,72,0,
-51,73,0,
-16,55,0,
-45,2,0,3,
-28,74,0,
-16,100,0,1,73,0,
-45,2,0,
-51,75,0,
-16,55,0,
-45,5,0,3,
-50,76,0,2,
-45,74,0,
-28,77,0,
-16,100,0,1,75,0,
-45,5,0,
-45,77,0,
-51,78,0,
-16,55,0,
-45,2,0,3,
-28,79,0,
-16,105,0,1,78,0,
-45,2,0,
-51,80,0,
-16,55,0,
-45,5,0,3,
-50,81,0,2,
-45,79,0,
-28,82,0,
-16,105,0,1,80,0,
-45,5,0,
-45,82,0,
-51,83,0,
-16,55,0,
-45,2,0,3,
-28,84,0,
-16,110,0,1,83,0,
-45,2,0,
-51,85,0,
-16,55,0,
-45,5,0,3,
-50,86,0,2,
-45,84,0,
-28,87,0,
-16,110,0,1,85,0,
-45,5,0,
-45,87,0,
-51,88,0,
-16,55,0,
-45,2,0,3,
-28,89,0,
-16,122,0,1,88,0,
-45,2,0,
-51,90,0,
-16,55,0,
-45,5,0,3,
-50,91,0,2,
-45,89,0,
-28,92,0,
-16,122,0,1,90,0,
-45,5,0,
-45,92,0,
-51,93,0,
-16,55,0,
-45,2,0,3,
-28,94,0,
-16,126,0,1,93,0,
-45,2,0,
-51,95,0,
-16,55,0,
-45,5,0,3,
-50,96,0,2,
-45,94,0,
-28,97,0,
-16,126,0,1,95,0,
-45,5,0,
-45,97,0,
-51,98,0,
-16,55,0,
-45,2,0,3,
-28,99,0,
-16,131,0,1,98,0,
-45,2,0,
-51,100,0,
-16,55,0,
-45,5,0,3,
-50,101,0,2,
-45,99,0,
-28,102,0,
-16,131,0,1,100,0,
-45,5,0,
-45,102,0,
-51,103,0,
-16,55,0,
-45,2,0,3,
-28,104,0,
-16,137,0,1,103,0,
-45,2,0,
-51,105,0,
-16,55,0,
-45,5,0,3,
-50,106,0,2,
-45,104,0,
-28,107,0,
-16,137,0,1,105,0,
-45,5,0,
-45,107,0,
-51,108,0,
-16,55,0,
-45,2,0,3,
-28,109,0,
-16,142,0,1,108,0,
-45,2,0,
-51,110,0,
-16,55,0,
-45,5,0,3,
-50,111,0,2,
-45,109,0,
-28,112,0,
-16,142,0,1,110,0,
-45,5,0,
-45,112,0,
-51,113,0,
-16,55,0,
-45,2,0,3,
-51,114,0,
-16,67,0,
-48,115,0,148,0,3,
-28,116,0,
-16,154,0,2,113,0,114,0,
-45,2,0,
-51,117,0,
-16,55,0,
-45,2,0,3,
-51,118,0,
-16,67,0,
-45,2,0,3,
-50,119,0,2,
-45,116,0,
-28,120,0,
-16,154,0,2,117,0,118,0,
-45,2,0,
-45,120,0,
-51,121,0,
-16,55,0,
-45,5,0,3,
-51,122,0,
-16,67,0,
-48,123,0,158,0,3,
-50,124,0,3,
-45,116,0,
-45,120,0,
-28,125,0,
-16,154,0,2,121,0,122,0,
-45,5,0,
-45,125,0,
-51,126,0,
-16,55,0,
-45,5,0,3,
-51,127,0,
-16,67,0,
-45,5,0,3,
-50,128,0,4,
-45,116,0,
-45,120,0,
-45,125,0,
-28,129,0,
-16,154,0,2,126,0,127,0,
-45,5,0,
-45,129,0,
-51,130,0,
-16,55,0,
-45,2,0,3,
-51,131,0,
-16,67,0,
-45,2,0,3,
-28,132,0,
-16,163,0,2,130,0,131,0,
-45,2,0,
-51,133,0,
-16,55,0,
-45,2,0,3,
-51,134,0,
-16,67,0,
-45,115,0,3,
-50,135,0,2,
-45,132,0,
-28,136,0,
-16,163,0,2,133,0,134,0,
-45,2,0,
-45,136,0,
-51,137,0,
-16,55,0,
-45,5,0,3,
-51,138,0,
-16,67,0,
-45,5,0,3,
-50,139,0,3,
-45,132,0,
-45,136,0,
-28,140,0,
-16,163,0,2,137,0,138,0,
-45,5,0,
-45,140,0,
-51,141,0,
-16,55,0,
-45,5,0,3,
-51,142,0,
-16,67,0,
-45,123,0,3,
-50,143,0,4,
-45,132,0,
-45,136,0,
-45,140,0,
-28,144,0,
-16,163,0,2,141,0,142,0,
-45,5,0,
-45,144,0,
-51,145,0,
-16,55,0,
-45,2,0,3,
-51,146,0,
-16,67,0,
-45,2,0,3,
-28,147,0,
-16,167,0,2,145,0,146,0,
-45,2,0,
-51,148,0,
-16,55,0,
-45,2,0,3,
-51,149,0,
-16,67,0,
-45,115,0,3,
-50,150,0,2,
-45,147,0,
-28,151,0,
-16,167,0,2,148,0,149,0,
-45,2,0,
-45,151,0,
-51,152,0,
-16,55,0,
-45,5,0,3,
-51,153,0,
-16,67,0,
-45,5,0,3,
-50,154,0,3,
-45,147,0,
-45,151,0,
-28,155,0,
-16,167,0,2,152,0,153,0,
-45,5,0,
-45,155,0,
-51,156,0,
-16,55,0,
-45,5,0,3,
-51,157,0,
-16,67,0,
-45,123,0,3,
-50,158,0,4,
-45,147,0,
-45,151,0,
-45,155,0,
-28,159,0,
-16,167,0,2,156,0,157,0,
-45,5,0,
-45,159,0,
-51,160,0,
-16,55,0,
-45,2,0,3,
-51,161,0,
-16,171,0,
-45,2,0,3,
-51,162,0,
-16,178,0,
-45,2,0,3,
-28,163,0,
-16,185,0,3,160,0,161,0,162,0,
-45,2,0,
-51,164,0,
-16,55,0,
-45,2,0,3,
-51,165,0,
-16,171,0,
-45,115,0,3,
-51,166,0,
-16,178,0,
-45,115,0,3,
-50,167,0,2,
-45,163,0,
-28,168,0,
-16,185,0,3,164,0,165,0,166,0,
-45,2,0,
-45,168,0,
-51,169,0,
-16,55,0,
-45,5,0,3,
-51,170,0,
-16,171,0,
-45,5,0,3,
-51,171,0,
-16,178,0,
-45,5,0,3,
-50,172,0,3,
-45,163,0,
-45,168,0,
-28,173,0,
-16,185,0,3,169,0,170,0,171,0,
-45,5,0,
-45,173,0,
-51,174,0,
-16,55,0,
-45,5,0,3,
-51,175,0,
-16,171,0,
-45,123,0,3,
-51,176,0,
-16,178,0,
-45,123,0,3,
-50,177,0,4,
-45,163,0,
-45,168,0,
-45,173,0,
-28,178,0,
-16,185,0,3,174,0,175,0,176,0,
-45,5,0,
-45,178,0,
-51,179,0,
-16,55,0,
-45,2,0,3,
-28,180,0,
-16,191,0,1,179,0,
-45,2,0,
-51,181,0,
-16,55,0,
-45,5,0,3,
-50,182,0,2,
-45,180,0,
-28,183,0,
-16,191,0,1,181,0,
-45,5,0,
-45,183,0,
-51,184,0,
-16,55,0,
-45,2,0,3,
-51,185,0,
-16,67,0,
-45,2,0,3,
-51,186,0,
-16,200,0,
-45,2,0,3,
-28,187,0,
-16,202,0,3,184,0,185,0,186,0,
-45,2,0,
-51,188,0,
-16,55,0,
-45,2,0,3,
-51,189,0,
-16,67,0,
-45,2,0,3,
-51,190,0,
-16,200,0,
-45,115,0,3,
-50,191,0,2,
-45,187,0,
-28,192,0,
-16,202,0,3,188,0,189,0,190,0,
-45,2,0,
-45,192,0,
-51,193,0,
-16,55,0,
-45,5,0,3,
-51,194,0,
-16,67,0,
-45,5,0,3,
-51,195,0,
-16,200,0,
-45,5,0,3,
-50,196,0,3,
-45,187,0,
-45,192,0,
-28,197,0,
-16,202,0,3,193,0,194,0,195,0,
-45,5,0,
-45,197,0,
-51,198,0,
-16,55,0,
-45,5,0,3,
-51,199,0,
-16,67,0,
-45,5,0,3,
-51,200,0,
-16,200,0,
-45,123,0,3,
-50,201,0,4,
-45,187,0,
-45,192,0,
-45,197,0,
-28,202,0,
-16,202,0,3,198,0,199,0,200,0,
-45,5,0,
-45,202,0,
-51,203,0,
-16,206,0,
-45,2,0,3,
-51,204,0,
-16,55,0,
-45,2,0,3,
-28,205,0,
-16,211,0,2,203,0,204,0,
-45,2,0,
-51,206,0,
-16,206,0,
-45,115,0,3,
-51,207,0,
-16,55,0,
-45,2,0,3,
-50,208,0,2,
-45,205,0,
-28,209,0,
-16,211,0,2,206,0,207,0,
-45,2,0,
-45,209,0,
-51,210,0,
-16,206,0,
-45,5,0,3,
-51,211,0,
-16,55,0,
-45,5,0,3,
-50,212,0,3,
-45,205,0,
-45,209,0,
-28,213,0,
-16,211,0,2,210,0,211,0,
-45,5,0,
-45,213,0,
-51,214,0,
-16,206,0,
-45,123,0,3,
-51,215,0,
-16,55,0,
-45,5,0,3,
-50,216,0,4,
-45,205,0,
-45,209,0,
-45,213,0,
-28,217,0,
-16,211,0,2,214,0,215,0,
-45,5,0,
-45,217,0,
-51,218,0,
-16,216,0,
-45,2,0,3,
-51,219,0,
-16,222,0,
-45,2,0,3,
-51,220,0,
-16,55,0,
-45,2,0,3,
-28,221,0,
-16,228,0,3,218,0,219,0,220,0,
-45,2,0,
-51,222,0,
-16,216,0,
-45,115,0,3,
-51,223,0,
-16,222,0,
-45,115,0,3,
-51,224,0,
-16,55,0,
-45,2,0,3,
-50,225,0,2,
-45,221,0,
-28,226,0,
-16,228,0,3,222,0,223,0,224,0,
-45,2,0,
-45,226,0,
-51,227,0,
-16,216,0,
-45,5,0,3,
-51,228,0,
-16,222,0,
-45,5,0,3,
-51,229,0,
-16,55,0,
-45,5,0,3,
-50,230,0,3,
-45,221,0,
-45,226,0,
-28,231,0,
-16,228,0,3,227,0,228,0,229,0,
-45,5,0,
-45,231,0,
-51,232,0,
-16,216,0,
-45,123,0,3,
-51,233,0,
-16,222,0,
-45,123,0,3,
-51,234,0,
-16,55,0,
-45,5,0,3,
-50,235,0,4,
-45,221,0,
-45,226,0,
-45,231,0,
-28,236,0,
-16,228,0,3,232,0,233,0,234,0,
-45,5,0,
-45,236,0,
-51,237,0,
-16,55,0,
-45,2,0,3,
-28,238,0,
-16,239,0,1,237,0,
-45,115,0,
-51,239,0,
-16,55,0,
-45,5,0,3,
-50,240,0,2,
-45,238,0,
-28,241,0,
-16,239,0,1,239,0,
-45,123,0,
-45,241,0,
-51,242,0,
-16,246,0,
-45,2,0,3,
-51,243,0,
-16,249,0,
-45,2,0,3,
-28,244,0,
-16,252,0,2,242,0,243,0,
-45,115,0,
-51,245,0,
-16,246,0,
-45,5,0,3,
-51,246,0,
-16,249,0,
-45,5,0,3,
-50,247,0,2,
-45,244,0,
-28,248,0,
-16,252,0,2,245,0,246,0,
-45,123,0,
-45,248,0,
-51,249,0,
-16,55,0,
-45,2,0,3,
-51,250,0,
-16,67,0,
-45,2,0,3,
-28,251,0,
-16,5,1,2,249,0,250,0,
-45,115,0,
-51,252,0,
-16,55,0,
-45,5,0,3,
-51,253,0,
-16,67,0,
-45,5,0,3,
-50,254,0,2,
-45,251,0,
-28,255,0,
-16,5,1,2,252,0,253,0,
-45,123,0,
-45,255,0,
-51,0,1,
-16,55,0,
-48,1,1,9,1,3,
-51,2,1,
-16,67,0,
-45,1,1,3,
-28,3,1,
-16,16,1,2,0,1,2,1,
-45,1,1,
-51,4,1,
-16,55,0,
-48,5,1,22,1,3,
-51,6,1,
-16,67,0,
-45,5,1,3,
-50,7,1,2,
-45,3,1,
-28,8,1,
-16,16,1,2,4,1,6,1,
-45,5,1,
-45,8,1,
-51,9,1,
-16,55,0,
-45,2,0,3,
-28,10,1,
-16,28,1,1,9,1,
-45,2,0,
-51,11,1,
-16,55,0,
-45,5,0,3,
-50,12,1,2,
-45,10,1,
-28,13,1,
-16,28,1,1,11,1,
-45,5,0,
-45,13,1,
-51,14,1,
-16,38,1,
-45,2,0,3,
-51,15,1,
-16,40,1,
-45,2,0,3,
-51,16,1,
-16,42,1,
-45,2,0,3,
-28,17,1,
-16,47,1,3,14,1,15,1,16,1,
-45,2,0,
-51,18,1,
-16,38,1,
-45,5,0,3,
-51,19,1,
-16,40,1,
-45,5,0,3,
-51,20,1,
-16,42,1,
-45,5,0,3,
-50,21,1,2,
-45,17,1,
-28,22,1,
-16,47,1,3,18,1,19,1,20,1,
-45,5,0,
-45,22,1,
-51,23,1,
-16,40,1,
-45,2,0,3,
-51,24,1,
-16,38,1,
-45,2,0,3,
-28,25,1,
-16,59,1,2,23,1,24,1,
-45,2,0,
-51,26,1,
-16,40,1,
-45,5,0,3,
-51,27,1,
-16,38,1,
-45,5,0,3,
-50,28,1,2,
-45,25,1,
-28,29,1,
-16,59,1,2,26,1,27,1,
-45,5,0,
-45,29,1,
-51,30,1,
-16,40,1,
-45,2,0,3,
-51,31,1,
-16,38,1,
-45,2,0,3,
-51,32,1,
-16,67,1,
-45,115,0,3,
-28,33,1,
-16,71,1,3,30,1,31,1,32,1,
-45,2,0,
-51,34,1,
-16,40,1,
-45,5,0,3,
-51,35,1,
-16,38,1,
-45,5,0,3,
-51,36,1,
-16,67,1,
-45,123,0,3,
-50,37,1,2,
-45,33,1,
-28,38,1,
-16,71,1,3,34,1,35,1,36,1,
-45,5,0,
-45,38,1,
-51,39,1,
-16,55,0,
-48,40,1,79,1,3,
-51,41,1,
-16,67,0,
-45,40,1,3,
-28,42,1,
-16,90,1,2,39,1,41,1,
-45,40,1,
-51,43,1,
-16,55,0,
-48,44,1,105,1,3,
-51,45,1,
-16,67,0,
-45,44,1,3,
-50,46,1,2,
-45,42,1,
-28,47,1,
-16,90,1,2,43,1,45,1,
-45,44,1,
-45,47,1,
-51,48,1,
-16,117,1,
-45,40,1,3,
-28,49,1,
-16,119,1,1,48,1,
-45,40,1,
-51,50,1,
-16,117,1,
-45,44,1,3,
-50,51,1,2,
-45,49,1,
-28,52,1,
-16,119,1,1,50,1,
-45,44,1,
-45,52,1,
-51,53,1,
-16,55,0,
-48,54,1,127,1,3,
-51,55,1,
-16,67,0,
-45,54,1,3,
-28,56,1,
-16,132,1,2,53,1,55,1,
-48,57,1,141,1,
-51,58,1,
-16,55,0,
-48,59,1,147,1,3,
-51,60,1,
-16,67,0,
-45,59,1,3,
-50,61,1,2,
-45,56,1,
-28,62,1,
-16,132,1,2,58,1,60,1,
-45,57,1,
-45,62,1,
-51,63,1,
-16,55,0,
-48,64,1,153,1,3,
-51,65,1,
-16,67,0,
-45,64,1,3,
-50,66,1,3,
-45,56,1,
-45,62,1,
-28,67,1,
-16,132,1,2,63,1,65,1,
-45,57,1,
-45,67,1,
-51,68,1,
-16,55,0,
-45,54,1,3,
-51,69,1,
-16,67,0,
-45,54,1,3,
-28,70,1,
-16,159,1,2,68,1,69,1,
-45,57,1,
-51,71,1,
-16,55,0,
-45,59,1,3,
-51,72,1,
-16,67,0,
-45,59,1,3,
-50,73,1,2,
-45,70,1,
-28,74,1,
-16,159,1,2,71,1,72,1,
-45,57,1,
-45,74,1,
-51,75,1,
-16,55,0,
-45,64,1,3,
-51,76,1,
-16,67,0,
-45,64,1,3,
-50,77,1,3,
-45,70,1,
-45,74,1,
-28,78,1,
-16,159,1,2,75,1,76,1,
-45,57,1,
-45,78,1,
-51,79,1,
-16,55,0,
-45,54,1,3,
-51,80,1,
-16,67,0,
-45,54,1,3,
-28,81,1,
-16,173,1,2,79,1,80,1,
-45,57,1,
-51,82,1,
-16,55,0,
-45,59,1,3,
-51,83,1,
-16,67,0,
-45,59,1,3,
-50,84,1,2,
-45,81,1,
-28,85,1,
-16,173,1,2,82,1,83,1,
-45,57,1,
-45,85,1,
-51,86,1,
-16,55,0,
-45,64,1,3,
-51,87,1,
-16,67,0,
-45,64,1,3,
-50,88,1,3,
-45,81,1,
-45,85,1,
-28,89,1,
-16,173,1,2,86,1,87,1,
-45,57,1,
-45,89,1,
-51,90,1,
-16,55,0,
-45,54,1,3,
-51,91,1,
-16,67,0,
-45,54,1,3,
-28,92,1,
-16,185,1,2,90,1,91,1,
-45,57,1,
-51,93,1,
-16,55,0,
-45,59,1,3,
-51,94,1,
-16,67,0,
-45,59,1,3,
-50,95,1,2,
-45,92,1,
-28,96,1,
-16,185,1,2,93,1,94,1,
-45,57,1,
-45,96,1,
-51,97,1,
-16,55,0,
-45,64,1,3,
-51,98,1,
-16,67,0,
-45,64,1,3,
-50,99,1,3,
-45,92,1,
-45,96,1,
-28,100,1,
-16,185,1,2,97,1,98,1,
-45,57,1,
-45,100,1,
-51,101,1,
-16,55,0,
-45,54,1,3,
-51,102,1,
-16,67,0,
-45,54,1,3,
-28,103,1,
-16,202,1,2,101,1,102,1,
-45,57,1,
-51,104,1,
-16,55,0,
-45,59,1,3,
-51,105,1,
-16,67,0,
-45,59,1,3,
-50,106,1,2,
-45,103,1,
-28,107,1,
-16,202,1,2,104,1,105,1,
-45,57,1,
-45,107,1,
-51,108,1,
-16,55,0,
-45,64,1,3,
-51,109,1,
-16,67,0,
-45,64,1,3,
-50,110,1,3,
-45,103,1,
-45,107,1,
-28,111,1,
-16,202,1,2,108,1,109,1,
-45,57,1,
-45,111,1,
-51,112,1,
-16,55,0,
-45,57,1,3,
-51,113,1,
-16,67,0,
-45,57,1,3,
-50,114,1,4,
-45,103,1,
-45,107,1,
-45,111,1,
-28,115,1,
-16,202,1,2,112,1,113,1,
-45,57,1,
-45,115,1,
-51,116,1,
-16,55,0,
-45,54,1,3,
-51,117,1,
-16,67,0,
-45,54,1,3,
-28,118,1,
-16,208,1,2,116,1,117,1,
-45,57,1,
-51,119,1,
-16,55,0,
-45,59,1,3,
-51,120,1,
-16,67,0,
-45,59,1,3,
-50,121,1,2,
-45,118,1,
-28,122,1,
-16,208,1,2,119,1,120,1,
-45,57,1,
-45,122,1,
-51,123,1,
-16,55,0,
-45,64,1,3,
-51,124,1,
-16,67,0,
-45,64,1,3,
-50,125,1,3,
-45,118,1,
-45,122,1,
-28,126,1,
-16,208,1,2,123,1,124,1,
-45,57,1,
-45,126,1,
-51,127,1,
-16,55,0,
-45,57,1,3,
-51,128,1,
-16,67,0,
-45,57,1,3,
-50,129,1,4,
-45,118,1,
-45,122,1,
-45,126,1,
-28,130,1,
-16,208,1,2,127,1,128,1,
-45,57,1,
-45,130,1,
-51,131,1,
-16,55,0,
-45,57,1,3,
-28,132,1,
-16,217,1,1,131,1,
-48,133,1,221,1,
-51,134,1,
-16,55,0,
-45,57,1,3,
-28,135,1,
-16,226,1,1,134,1,
-45,133,1,
-51,136,1,
-16,55,0,
-45,57,1,3,
-28,137,1,
-16,230,1,1,136,1,
-45,57,1,
-51,138,1,
-16,234,1,
-48,139,1,240,1,3,
-28,140,1,
-16,246,1,1,138,1,
-45,139,1,
-51,141,1,
-16,234,1,
-48,142,1,255,1,3,
-50,143,1,2,
-45,140,1,
-28,144,1,
-16,246,1,1,141,1,
-45,142,1,
-45,144,1,48,0,
+48,129,1,
+52,1,0,
+17,2,0,
+49,2,0,10,0,3,
+29,3,0,
+17,19,0,1,1,0,
+46,2,0,
+52,4,0,
+17,2,0,
+49,5,0,27,0,3,
+51,6,0,2,
+46,3,0,
+29,7,0,
+17,19,0,1,4,0,
+46,5,0,
+46,7,0,
+52,8,0,
+17,19,0,
+46,2,0,3,
+29,9,0,
+17,2,0,1,8,0,
+46,2,0,
+52,10,0,
+17,19,0,
+46,5,0,3,
+51,11,0,2,
+46,9,0,
+29,12,0,
+17,2,0,1,10,0,
+46,5,0,
+46,12,0,
+52,13,0,
+17,37,0,
+46,2,0,3,
+29,14,0,
+17,43,0,1,13,0,
+46,2,0,
+52,15,0,
+17,37,0,
+46,5,0,3,
+51,16,0,2,
+46,14,0,
+29,17,0,
+17,43,0,1,15,0,
+46,5,0,
+46,17,0,
+52,18,0,
+17,37,0,
+46,2,0,3,
+29,19,0,
+17,47,0,1,18,0,
+46,2,0,
+52,20,0,
+17,37,0,
+46,5,0,3,
+51,21,0,2,
+46,19,0,
+29,22,0,
+17,47,0,1,20,0,
+46,5,0,
+46,22,0,
+52,23,0,
+17,37,0,
+46,2,0,3,
+29,24,0,
+17,51,0,1,23,0,
+46,2,0,
+52,25,0,
+17,37,0,
+46,5,0,3,
+51,26,0,2,
+46,24,0,
+29,27,0,
+17,51,0,1,25,0,
+46,5,0,
+46,27,0,
+52,28,0,
+17,55,0,
+46,2,0,3,
+29,29,0,
+17,57,0,1,28,0,
+46,2,0,
+52,30,0,
+17,55,0,
+46,5,0,3,
+51,31,0,2,
+46,29,0,
+29,32,0,
+17,57,0,1,30,0,
+46,5,0,
+46,32,0,
+52,33,0,
+17,55,0,
+46,2,0,3,
+29,34,0,
+17,62,0,1,33,0,
+46,2,0,
+52,35,0,
+17,55,0,
+46,5,0,3,
+51,36,0,2,
+46,34,0,
+29,37,0,
+17,62,0,1,35,0,
+46,5,0,
+46,37,0,
+52,38,0,
+17,67,0,
+46,2,0,3,
+52,39,0,
+17,55,0,
+46,2,0,3,
+29,40,0,
+17,69,0,2,38,0,39,0,
+46,2,0,
+52,41,0,
+17,67,0,
+46,5,0,3,
+52,42,0,
+17,55,0,
+46,5,0,3,
+51,43,0,2,
+46,40,0,
+29,44,0,
+17,69,0,2,41,0,42,0,
+46,5,0,
+46,44,0,
+52,45,0,
+17,74,0,
+46,2,0,3,
+51,46,0,3,
+46,40,0,
+46,44,0,
+29,47,0,
+17,69,0,1,45,0,
+46,2,0,
+46,47,0,
+52,48,0,
+17,74,0,
+46,5,0,3,
+51,49,0,4,
+46,40,0,
+46,44,0,
+46,47,0,
+29,50,0,
+17,69,0,1,48,0,
+46,5,0,
+46,50,0,
+52,51,0,
+17,55,0,
+46,2,0,3,
+52,52,0,
+17,67,0,
+46,2,0,3,
+29,53,0,
+17,83,0,2,51,0,52,0,
+46,2,0,
+52,54,0,
+17,55,0,
+46,5,0,3,
+52,55,0,
+17,67,0,
+46,5,0,3,
+51,56,0,2,
+46,53,0,
+29,57,0,
+17,83,0,2,54,0,55,0,
+46,5,0,
+46,57,0,
+52,58,0,
+17,55,0,
+46,2,0,3,
+29,59,0,
+17,87,0,1,58,0,
+46,2,0,
+52,60,0,
+17,55,0,
+46,5,0,3,
+51,61,0,2,
+46,59,0,
+29,62,0,
+17,87,0,1,60,0,
+46,5,0,
+46,62,0,
+52,63,0,
+17,55,0,
+46,2,0,3,
+29,64,0,
+17,91,0,1,63,0,
+46,2,0,
+52,65,0,
+17,55,0,
+46,5,0,3,
+51,66,0,2,
+46,64,0,
+29,67,0,
+17,91,0,1,65,0,
+46,5,0,
+46,67,0,
+52,68,0,
+17,55,0,
+46,2,0,3,
+29,69,0,
+17,95,0,1,68,0,
+46,2,0,
+52,70,0,
+17,55,0,
+46,5,0,3,
+51,71,0,2,
+46,69,0,
+29,72,0,
+17,95,0,1,70,0,
+46,5,0,
+46,72,0,
+52,73,0,
+17,55,0,
+46,2,0,3,
+29,74,0,
+17,100,0,1,73,0,
+46,2,0,
+52,75,0,
+17,55,0,
+46,5,0,3,
+51,76,0,2,
+46,74,0,
+29,77,0,
+17,100,0,1,75,0,
+46,5,0,
+46,77,0,
+52,78,0,
+17,55,0,
+46,2,0,3,
+29,79,0,
+17,105,0,1,78,0,
+46,2,0,
+52,80,0,
+17,55,0,
+46,5,0,3,
+51,81,0,2,
+46,79,0,
+29,82,0,
+17,105,0,1,80,0,
+46,5,0,
+46,82,0,
+52,83,0,
+17,55,0,
+46,2,0,3,
+29,84,0,
+17,110,0,1,83,0,
+46,2,0,
+52,85,0,
+17,55,0,
+46,5,0,3,
+51,86,0,2,
+46,84,0,
+29,87,0,
+17,110,0,1,85,0,
+46,5,0,
+46,87,0,
+52,88,0,
+17,55,0,
+46,2,0,3,
+29,89,0,
+17,122,0,1,88,0,
+46,2,0,
+52,90,0,
+17,55,0,
+46,5,0,3,
+51,91,0,2,
+46,89,0,
+29,92,0,
+17,122,0,1,90,0,
+46,5,0,
+46,92,0,
+52,93,0,
+17,55,0,
+46,2,0,3,
+29,94,0,
+17,126,0,1,93,0,
+46,2,0,
+52,95,0,
+17,55,0,
+46,5,0,3,
+51,96,0,2,
+46,94,0,
+29,97,0,
+17,126,0,1,95,0,
+46,5,0,
+46,97,0,
+52,98,0,
+17,55,0,
+46,2,0,3,
+29,99,0,
+17,131,0,1,98,0,
+46,2,0,
+52,100,0,
+17,55,0,
+46,5,0,3,
+51,101,0,2,
+46,99,0,
+29,102,0,
+17,131,0,1,100,0,
+46,5,0,
+46,102,0,
+52,103,0,
+17,55,0,
+46,2,0,3,
+29,104,0,
+17,137,0,1,103,0,
+46,2,0,
+52,105,0,
+17,55,0,
+46,5,0,3,
+51,106,0,2,
+46,104,0,
+29,107,0,
+17,137,0,1,105,0,
+46,5,0,
+46,107,0,
+52,108,0,
+17,55,0,
+46,2,0,3,
+29,109,0,
+17,142,0,1,108,0,
+46,2,0,
+52,110,0,
+17,55,0,
+46,5,0,3,
+51,111,0,2,
+46,109,0,
+29,112,0,
+17,142,0,1,110,0,
+46,5,0,
+46,112,0,
+52,113,0,
+17,55,0,
+46,2,0,3,
+52,114,0,
+17,67,0,
+49,115,0,148,0,3,
+29,116,0,
+17,154,0,2,113,0,114,0,
+46,2,0,
+52,117,0,
+17,55,0,
+46,2,0,3,
+52,118,0,
+17,67,0,
+46,2,0,3,
+51,119,0,2,
+46,116,0,
+29,120,0,
+17,154,0,2,117,0,118,0,
+46,2,0,
+46,120,0,
+52,121,0,
+17,55,0,
+46,5,0,3,
+52,122,0,
+17,67,0,
+49,123,0,158,0,3,
+51,124,0,3,
+46,116,0,
+46,120,0,
+29,125,0,
+17,154,0,2,121,0,122,0,
+46,5,0,
+46,125,0,
+52,126,0,
+17,55,0,
+46,5,0,3,
+52,127,0,
+17,67,0,
+46,5,0,3,
+51,128,0,4,
+46,116,0,
+46,120,0,
+46,125,0,
+29,129,0,
+17,154,0,2,126,0,127,0,
+46,5,0,
+46,129,0,
+52,130,0,
+17,55,0,
+46,2,0,3,
+52,131,0,
+17,67,0,
+46,2,0,3,
+29,132,0,
+17,163,0,2,130,0,131,0,
+46,2,0,
+52,133,0,
+17,55,0,
+46,2,0,3,
+52,134,0,
+17,67,0,
+46,115,0,3,
+51,135,0,2,
+46,132,0,
+29,136,0,
+17,163,0,2,133,0,134,0,
+46,2,0,
+46,136,0,
+52,137,0,
+17,55,0,
+46,5,0,3,
+52,138,0,
+17,67,0,
+46,5,0,3,
+51,139,0,3,
+46,132,0,
+46,136,0,
+29,140,0,
+17,163,0,2,137,0,138,0,
+46,5,0,
+46,140,0,
+52,141,0,
+17,55,0,
+46,5,0,3,
+52,142,0,
+17,67,0,
+46,123,0,3,
+51,143,0,4,
+46,132,0,
+46,136,0,
+46,140,0,
+29,144,0,
+17,163,0,2,141,0,142,0,
+46,5,0,
+46,144,0,
+52,145,0,
+17,55,0,
+46,2,0,3,
+52,146,0,
+17,67,0,
+46,2,0,3,
+29,147,0,
+17,167,0,2,145,0,146,0,
+46,2,0,
+52,148,0,
+17,55,0,
+46,2,0,3,
+52,149,0,
+17,67,0,
+46,115,0,3,
+51,150,0,2,
+46,147,0,
+29,151,0,
+17,167,0,2,148,0,149,0,
+46,2,0,
+46,151,0,
+52,152,0,
+17,55,0,
+46,5,0,3,
+52,153,0,
+17,67,0,
+46,5,0,3,
+51,154,0,3,
+46,147,0,
+46,151,0,
+29,155,0,
+17,167,0,2,152,0,153,0,
+46,5,0,
+46,155,0,
+52,156,0,
+17,55,0,
+46,5,0,3,
+52,157,0,
+17,67,0,
+46,123,0,3,
+51,158,0,4,
+46,147,0,
+46,151,0,
+46,155,0,
+29,159,0,
+17,167,0,2,156,0,157,0,
+46,5,0,
+46,159,0,
+52,160,0,
+17,55,0,
+46,2,0,3,
+52,161,0,
+17,171,0,
+46,2,0,3,
+52,162,0,
+17,178,0,
+46,2,0,3,
+29,163,0,
+17,185,0,3,160,0,161,0,162,0,
+46,2,0,
+52,164,0,
+17,55,0,
+46,2,0,3,
+52,165,0,
+17,171,0,
+46,115,0,3,
+52,166,0,
+17,178,0,
+46,115,0,3,
+51,167,0,2,
+46,163,0,
+29,168,0,
+17,185,0,3,164,0,165,0,166,0,
+46,2,0,
+46,168,0,
+52,169,0,
+17,55,0,
+46,5,0,3,
+52,170,0,
+17,171,0,
+46,5,0,3,
+52,171,0,
+17,178,0,
+46,5,0,3,
+51,172,0,3,
+46,163,0,
+46,168,0,
+29,173,0,
+17,185,0,3,169,0,170,0,171,0,
+46,5,0,
+46,173,0,
+52,174,0,
+17,55,0,
+46,5,0,3,
+52,175,0,
+17,171,0,
+46,123,0,3,
+52,176,0,
+17,178,0,
+46,123,0,3,
+51,177,0,4,
+46,163,0,
+46,168,0,
+46,173,0,
+29,178,0,
+17,185,0,3,174,0,175,0,176,0,
+46,5,0,
+46,178,0,
+52,179,0,
+17,55,0,
+46,2,0,3,
+29,180,0,
+17,191,0,1,179,0,
+46,2,0,
+52,181,0,
+17,55,0,
+46,5,0,3,
+51,182,0,2,
+46,180,0,
+29,183,0,
+17,191,0,1,181,0,
+46,5,0,
+46,183,0,
+52,184,0,
+17,55,0,
+46,2,0,3,
+52,185,0,
+17,67,0,
+46,2,0,3,
+52,186,0,
+17,200,0,
+46,2,0,3,
+29,187,0,
+17,202,0,3,184,0,185,0,186,0,
+46,2,0,
+52,188,0,
+17,55,0,
+46,2,0,3,
+52,189,0,
+17,67,0,
+46,2,0,3,
+52,190,0,
+17,200,0,
+46,115,0,3,
+51,191,0,2,
+46,187,0,
+29,192,0,
+17,202,0,3,188,0,189,0,190,0,
+46,2,0,
+46,192,0,
+52,193,0,
+17,55,0,
+46,5,0,3,
+52,194,0,
+17,67,0,
+46,5,0,3,
+52,195,0,
+17,200,0,
+46,5,0,3,
+51,196,0,3,
+46,187,0,
+46,192,0,
+29,197,0,
+17,202,0,3,193,0,194,0,195,0,
+46,5,0,
+46,197,0,
+52,198,0,
+17,55,0,
+46,5,0,3,
+52,199,0,
+17,67,0,
+46,5,0,3,
+52,200,0,
+17,200,0,
+46,123,0,3,
+51,201,0,4,
+46,187,0,
+46,192,0,
+46,197,0,
+29,202,0,
+17,202,0,3,198,0,199,0,200,0,
+46,5,0,
+46,202,0,
+52,203,0,
+17,206,0,
+46,2,0,3,
+52,204,0,
+17,55,0,
+46,2,0,3,
+29,205,0,
+17,211,0,2,203,0,204,0,
+46,2,0,
+52,206,0,
+17,206,0,
+46,115,0,3,
+52,207,0,
+17,55,0,
+46,2,0,3,
+51,208,0,2,
+46,205,0,
+29,209,0,
+17,211,0,2,206,0,207,0,
+46,2,0,
+46,209,0,
+52,210,0,
+17,206,0,
+46,5,0,3,
+52,211,0,
+17,55,0,
+46,5,0,3,
+51,212,0,3,
+46,205,0,
+46,209,0,
+29,213,0,
+17,211,0,2,210,0,211,0,
+46,5,0,
+46,213,0,
+52,214,0,
+17,206,0,
+46,123,0,3,
+52,215,0,
+17,55,0,
+46,5,0,3,
+51,216,0,4,
+46,205,0,
+46,209,0,
+46,213,0,
+29,217,0,
+17,211,0,2,214,0,215,0,
+46,5,0,
+46,217,0,
+52,218,0,
+17,216,0,
+46,2,0,3,
+52,219,0,
+17,222,0,
+46,2,0,3,
+52,220,0,
+17,55,0,
+46,2,0,3,
+29,221,0,
+17,228,0,3,218,0,219,0,220,0,
+46,2,0,
+52,222,0,
+17,216,0,
+46,115,0,3,
+52,223,0,
+17,222,0,
+46,115,0,3,
+52,224,0,
+17,55,0,
+46,2,0,3,
+51,225,0,2,
+46,221,0,
+29,226,0,
+17,228,0,3,222,0,223,0,224,0,
+46,2,0,
+46,226,0,
+52,227,0,
+17,216,0,
+46,5,0,3,
+52,228,0,
+17,222,0,
+46,5,0,3,
+52,229,0,
+17,55,0,
+46,5,0,3,
+51,230,0,3,
+46,221,0,
+46,226,0,
+29,231,0,
+17,228,0,3,227,0,228,0,229,0,
+46,5,0,
+46,231,0,
+52,232,0,
+17,216,0,
+46,123,0,3,
+52,233,0,
+17,222,0,
+46,123,0,3,
+52,234,0,
+17,55,0,
+46,5,0,3,
+51,235,0,4,
+46,221,0,
+46,226,0,
+46,231,0,
+29,236,0,
+17,228,0,3,232,0,233,0,234,0,
+46,5,0,
+46,236,0,
+52,237,0,
+17,55,0,
+46,2,0,3,
+29,238,0,
+17,239,0,1,237,0,
+46,115,0,
+52,239,0,
+17,55,0,
+46,5,0,3,
+51,240,0,2,
+46,238,0,
+29,241,0,
+17,239,0,1,239,0,
+46,123,0,
+46,241,0,
+52,242,0,
+17,246,0,
+46,2,0,3,
+52,243,0,
+17,249,0,
+46,2,0,3,
+29,244,0,
+17,252,0,2,242,0,243,0,
+46,115,0,
+52,245,0,
+17,246,0,
+46,5,0,3,
+52,246,0,
+17,249,0,
+46,5,0,3,
+51,247,0,2,
+46,244,0,
+29,248,0,
+17,252,0,2,245,0,246,0,
+46,123,0,
+46,248,0,
+52,249,0,
+17,55,0,
+46,2,0,3,
+52,250,0,
+17,67,0,
+46,2,0,3,
+29,251,0,
+17,5,1,2,249,0,250,0,
+46,115,0,
+52,252,0,
+17,55,0,
+46,5,0,3,
+52,253,0,
+17,67,0,
+46,5,0,3,
+51,254,0,2,
+46,251,0,
+29,255,0,
+17,5,1,2,252,0,253,0,
+46,123,0,
+46,255,0,
+52,0,1,
+17,55,0,
+49,1,1,9,1,3,
+52,2,1,
+17,67,0,
+46,1,1,3,
+29,3,1,
+17,16,1,2,0,1,2,1,
+46,1,1,
+52,4,1,
+17,55,0,
+49,5,1,22,1,3,
+52,6,1,
+17,67,0,
+46,5,1,3,
+51,7,1,2,
+46,3,1,
+29,8,1,
+17,16,1,2,4,1,6,1,
+46,5,1,
+46,8,1,
+52,9,1,
+17,55,0,
+46,2,0,3,
+29,10,1,
+17,28,1,1,9,1,
+46,2,0,
+52,11,1,
+17,55,0,
+46,5,0,3,
+51,12,1,2,
+46,10,1,
+29,13,1,
+17,28,1,1,11,1,
+46,5,0,
+46,13,1,
+52,14,1,
+17,38,1,
+46,2,0,3,
+52,15,1,
+17,40,1,
+46,2,0,3,
+52,16,1,
+17,42,1,
+46,2,0,3,
+29,17,1,
+17,47,1,3,14,1,15,1,16,1,
+46,2,0,
+52,18,1,
+17,38,1,
+46,5,0,3,
+52,19,1,
+17,40,1,
+46,5,0,3,
+52,20,1,
+17,42,1,
+46,5,0,3,
+51,21,1,2,
+46,17,1,
+29,22,1,
+17,47,1,3,18,1,19,1,20,1,
+46,5,0,
+46,22,1,
+52,23,1,
+17,40,1,
+46,2,0,3,
+52,24,1,
+17,38,1,
+46,2,0,3,
+29,25,1,
+17,59,1,2,23,1,24,1,
+46,2,0,
+52,26,1,
+17,40,1,
+46,5,0,3,
+52,27,1,
+17,38,1,
+46,5,0,3,
+51,28,1,2,
+46,25,1,
+29,29,1,
+17,59,1,2,26,1,27,1,
+46,5,0,
+46,29,1,
+52,30,1,
+17,40,1,
+46,2,0,3,
+52,31,1,
+17,38,1,
+46,2,0,3,
+52,32,1,
+17,67,1,
+46,115,0,3,
+29,33,1,
+17,71,1,3,30,1,31,1,32,1,
+46,2,0,
+52,34,1,
+17,40,1,
+46,5,0,3,
+52,35,1,
+17,38,1,
+46,5,0,3,
+52,36,1,
+17,67,1,
+46,123,0,3,
+51,37,1,2,
+46,33,1,
+29,38,1,
+17,71,1,3,34,1,35,1,36,1,
+46,5,0,
+46,38,1,
+52,39,1,
+17,55,0,
+49,40,1,79,1,3,
+52,41,1,
+17,67,0,
+46,40,1,3,
+29,42,1,
+17,90,1,2,39,1,41,1,
+46,40,1,
+52,43,1,
+17,55,0,
+49,44,1,105,1,3,
+52,45,1,
+17,67,0,
+46,44,1,3,
+51,46,1,2,
+46,42,1,
+29,47,1,
+17,90,1,2,43,1,45,1,
+46,44,1,
+46,47,1,
+52,48,1,
+17,117,1,
+46,40,1,3,
+29,49,1,
+17,119,1,1,48,1,
+46,40,1,
+52,50,1,
+17,117,1,
+46,44,1,3,
+51,51,1,2,
+46,49,1,
+29,52,1,
+17,119,1,1,50,1,
+46,44,1,
+46,52,1,
+52,53,1,
+17,55,0,
+49,54,1,127,1,3,
+52,55,1,
+17,67,0,
+46,54,1,3,
+29,56,1,
+17,132,1,2,53,1,55,1,
+49,57,1,141,1,
+52,58,1,
+17,55,0,
+49,59,1,147,1,3,
+52,60,1,
+17,67,0,
+46,59,1,3,
+51,61,1,2,
+46,56,1,
+29,62,1,
+17,132,1,2,58,1,60,1,
+46,57,1,
+46,62,1,
+52,63,1,
+17,55,0,
+49,64,1,153,1,3,
+52,65,1,
+17,67,0,
+46,64,1,3,
+51,66,1,3,
+46,56,1,
+46,62,1,
+29,67,1,
+17,132,1,2,63,1,65,1,
+46,57,1,
+46,67,1,
+52,68,1,
+17,55,0,
+46,54,1,3,
+52,69,1,
+17,67,0,
+46,54,1,3,
+29,70,1,
+17,159,1,2,68,1,69,1,
+46,57,1,
+52,71,1,
+17,55,0,
+46,59,1,3,
+52,72,1,
+17,67,0,
+46,59,1,3,
+51,73,1,2,
+46,70,1,
+29,74,1,
+17,159,1,2,71,1,72,1,
+46,57,1,
+46,74,1,
+52,75,1,
+17,55,0,
+46,64,1,3,
+52,76,1,
+17,67,0,
+46,64,1,3,
+51,77,1,3,
+46,70,1,
+46,74,1,
+29,78,1,
+17,159,1,2,75,1,76,1,
+46,57,1,
+46,78,1,
+52,79,1,
+17,55,0,
+46,54,1,3,
+52,80,1,
+17,67,0,
+46,54,1,3,
+29,81,1,
+17,173,1,2,79,1,80,1,
+46,57,1,
+52,82,1,
+17,55,0,
+46,59,1,3,
+52,83,1,
+17,67,0,
+46,59,1,3,
+51,84,1,2,
+46,81,1,
+29,85,1,
+17,173,1,2,82,1,83,1,
+46,57,1,
+46,85,1,
+52,86,1,
+17,55,0,
+46,64,1,3,
+52,87,1,
+17,67,0,
+46,64,1,3,
+51,88,1,3,
+46,81,1,
+46,85,1,
+29,89,1,
+17,173,1,2,86,1,87,1,
+46,57,1,
+46,89,1,
+52,90,1,
+17,55,0,
+46,54,1,3,
+52,91,1,
+17,67,0,
+46,54,1,3,
+29,92,1,
+17,185,1,2,90,1,91,1,
+46,57,1,
+52,93,1,
+17,55,0,
+46,59,1,3,
+52,94,1,
+17,67,0,
+46,59,1,3,
+51,95,1,2,
+46,92,1,
+29,96,1,
+17,185,1,2,93,1,94,1,
+46,57,1,
+46,96,1,
+52,97,1,
+17,55,0,
+46,64,1,3,
+52,98,1,
+17,67,0,
+46,64,1,3,
+51,99,1,3,
+46,92,1,
+46,96,1,
+29,100,1,
+17,185,1,2,97,1,98,1,
+46,57,1,
+46,100,1,
+52,101,1,
+17,55,0,
+46,54,1,3,
+52,102,1,
+17,67,0,
+46,54,1,3,
+29,103,1,
+17,202,1,2,101,1,102,1,
+46,57,1,
+52,104,1,
+17,55,0,
+46,59,1,3,
+52,105,1,
+17,67,0,
+46,59,1,3,
+51,106,1,2,
+46,103,1,
+29,107,1,
+17,202,1,2,104,1,105,1,
+46,57,1,
+46,107,1,
+52,108,1,
+17,55,0,
+46,64,1,3,
+52,109,1,
+17,67,0,
+46,64,1,3,
+51,110,1,3,
+46,103,1,
+46,107,1,
+29,111,1,
+17,202,1,2,108,1,109,1,
+46,57,1,
+46,111,1,
+52,112,1,
+17,55,0,
+46,57,1,3,
+52,113,1,
+17,67,0,
+46,57,1,3,
+51,114,1,4,
+46,103,1,
+46,107,1,
+46,111,1,
+29,115,1,
+17,202,1,2,112,1,113,1,
+46,57,1,
+46,115,1,
+52,116,1,
+17,55,0,
+46,54,1,3,
+52,117,1,
+17,67,0,
+46,54,1,3,
+29,118,1,
+17,208,1,2,116,1,117,1,
+46,57,1,
+52,119,1,
+17,55,0,
+46,59,1,3,
+52,120,1,
+17,67,0,
+46,59,1,3,
+51,121,1,2,
+46,118,1,
+29,122,1,
+17,208,1,2,119,1,120,1,
+46,57,1,
+46,122,1,
+52,123,1,
+17,55,0,
+46,64,1,3,
+52,124,1,
+17,67,0,
+46,64,1,3,
+51,125,1,3,
+46,118,1,
+46,122,1,
+29,126,1,
+17,208,1,2,123,1,124,1,
+46,57,1,
+46,126,1,
+52,127,1,
+17,55,0,
+46,57,1,3,
+52,128,1,
+17,67,0,
+46,57,1,3,
+51,129,1,4,
+46,118,1,
+46,122,1,
+46,126,1,
+29,130,1,
+17,208,1,2,127,1,128,1,
+46,57,1,
+46,130,1,
+52,131,1,
+17,55,0,
+46,57,1,3,
+29,132,1,
+17,217,1,1,131,1,
+49,133,1,221,1,
+52,134,1,
+17,55,0,
+46,57,1,3,
+29,135,1,
+17,226,1,1,134,1,
+46,133,1,
+52,136,1,
+17,55,0,
+46,57,1,3,
+29,137,1,
+17,230,1,1,136,1,
+46,57,1,
+52,138,1,
+17,234,1,
+49,139,1,240,1,3,
+29,140,1,
+17,246,1,1,138,1,
+46,139,1,
+52,141,1,
+17,234,1,
+49,142,1,255,1,3,
+51,143,1,2,
+46,140,1,
+29,144,1,
+17,246,1,1,141,1,
+46,142,1,
+46,144,1,48,0,
88,0,
33,0,
121,1,
@@ -1318,40 +1318,40 @@
211,0,
23,0,
127,1,
-19,
-27,140,1,
+20,
+28,140,1,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,139,1,2,
+48,0,0,0,0,1,
+40,
+8,
+46,139,1,2,
1,
-44,
-54,138,1,0,3,0,1,2,49,
-26,
-45,123,0,155,0,2,
-44,
-54,138,1,0,1,3,
-24,
-45,123,0,23,183,209,56,
-44,
-54,138,1,0,1,3,1,0,
-27,144,1,
+45,
+55,138,1,0,3,0,1,2,49,
+27,
+46,123,0,155,0,2,
+45,
+55,138,1,0,1,3,
+25,
+46,123,0,23,183,209,56,
+45,
+55,138,1,0,1,3,1,0,
+28,144,1,
2,
-47,0,0,0,0,1,
-39,
-7,
-45,142,1,2,
+48,0,0,0,0,1,
+40,
+8,
+46,142,1,2,
1,
-44,
-54,141,1,0,3,0,1,2,49,
-26,
-45,115,0,147,0,2,
-44,
-54,141,1,0,1,3,
-24,
-45,115,0,23,183,209,56,
-44,
-54,141,1,0,1,3,1,0,
-20,};
+45,
+55,141,1,0,3,0,1,2,49,
+27,
+46,115,0,147,0,2,
+45,
+55,141,1,0,1,3,
+25,
+46,115,0,23,183,209,56,
+45,
+55,141,1,0,1,3,1,0,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_public_LENGTH = sizeof(SKSL_INCLUDE_sksl_public);
diff --git a/src/sksl/generated/sksl_rt_blend.dehydrated.sksl b/src/sksl/generated/sksl_rt_blend.dehydrated.sksl
index 2b3400f..177776c 100644
--- a/src/sksl/generated/sksl_rt_blend.dehydrated.sksl
+++ b/src/sksl/generated/sksl_rt_blend.dehydrated.sksl
@@ -12,45 +12,45 @@
7,98,108,101,110,100,101,114,
3,115,114,99,
3,100,115,116,
-47,12,0,
-51,1,0,
-16,2,0,
-48,2,0,4,0,3,
-51,3,0,
-16,11,0,
-48,4,0,18,0,3,
-28,5,0,
-16,25,0,2,1,0,3,0,
-48,6,0,32,0,
-51,7,0,
-16,38,0,
-48,8,0,40,0,3,
-51,9,0,
-16,52,0,
-45,6,0,3,
-50,10,0,2,
-45,5,0,
-28,11,0,
-16,25,0,2,7,0,9,0,
-45,6,0,
-45,11,0,
-51,12,0,
-16,58,0,
-48,13,0,60,0,3,
-51,14,0,
-16,68,0,
-45,6,0,3,
-51,15,0,
-16,72,0,
-45,6,0,3,
-50,16,0,3,
-45,5,0,
-45,11,0,
-28,17,0,
-16,25,0,3,12,0,14,0,15,0,
-45,6,0,
-45,17,0,1,0,
+48,12,0,
+52,1,0,
+17,2,0,
+49,2,0,4,0,3,
+52,3,0,
+17,11,0,
+49,4,0,18,0,3,
+29,5,0,
+17,25,0,2,1,0,3,0,
+49,6,0,32,0,
+52,7,0,
+17,38,0,
+49,8,0,40,0,3,
+52,9,0,
+17,52,0,
+46,6,0,3,
+51,10,0,2,
+46,5,0,
+29,11,0,
+17,25,0,2,7,0,9,0,
+46,6,0,
+46,11,0,
+52,12,0,
+17,58,0,
+49,13,0,60,0,3,
+52,14,0,
+17,68,0,
+46,6,0,3,
+52,15,0,
+17,72,0,
+46,6,0,3,
+51,16,0,3,
+46,5,0,
+46,11,0,
+29,17,0,
+17,25,0,3,12,0,14,0,15,0,
+46,6,0,
+46,17,0,1,0,
10,0,
-19,
-20,};
+20,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_rt_blend_LENGTH = sizeof(SKSL_INCLUDE_sksl_rt_blend);
diff --git a/src/sksl/generated/sksl_rt_colorfilter.dehydrated.sksl b/src/sksl/generated/sksl_rt_colorfilter.dehydrated.sksl
index 3550ce5..1c10c4f 100644
--- a/src/sksl/generated/sksl_rt_colorfilter.dehydrated.sksl
+++ b/src/sksl/generated/sksl_rt_colorfilter.dehydrated.sksl
@@ -12,45 +12,45 @@
7,98,108,101,110,100,101,114,
3,115,114,99,
3,100,115,116,
-47,12,0,
-51,1,0,
-16,2,0,
-48,2,0,4,0,3,
-51,3,0,
-16,11,0,
-48,4,0,18,0,3,
-28,5,0,
-16,25,0,2,1,0,3,0,
-48,6,0,32,0,
-51,7,0,
-16,38,0,
-48,8,0,40,0,3,
-51,9,0,
-16,52,0,
-45,6,0,3,
-50,10,0,2,
-45,5,0,
-28,11,0,
-16,25,0,2,7,0,9,0,
-45,6,0,
-45,11,0,
-51,12,0,
-16,58,0,
-48,13,0,60,0,3,
-51,14,0,
-16,68,0,
-45,6,0,3,
-51,15,0,
-16,72,0,
-45,6,0,3,
-50,16,0,3,
-45,5,0,
-45,11,0,
-28,17,0,
-16,25,0,3,12,0,14,0,15,0,
-45,6,0,
-45,17,0,1,0,
+48,12,0,
+52,1,0,
+17,2,0,
+49,2,0,4,0,3,
+52,3,0,
+17,11,0,
+49,4,0,18,0,3,
+29,5,0,
+17,25,0,2,1,0,3,0,
+49,6,0,32,0,
+52,7,0,
+17,38,0,
+49,8,0,40,0,3,
+52,9,0,
+17,52,0,
+46,6,0,3,
+51,10,0,2,
+46,5,0,
+29,11,0,
+17,25,0,2,7,0,9,0,
+46,6,0,
+46,11,0,
+52,12,0,
+17,58,0,
+49,13,0,60,0,3,
+52,14,0,
+17,68,0,
+46,6,0,3,
+52,15,0,
+17,72,0,
+46,6,0,3,
+51,16,0,3,
+46,5,0,
+46,11,0,
+29,17,0,
+17,25,0,3,12,0,14,0,15,0,
+46,6,0,
+46,17,0,1,0,
10,0,
-19,
-20,};
+20,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_rt_colorfilter_LENGTH = sizeof(SKSL_INCLUDE_sksl_rt_colorfilter);
diff --git a/src/sksl/generated/sksl_rt_shader.dehydrated.sksl b/src/sksl/generated/sksl_rt_shader.dehydrated.sksl
index 795c531..3583af5 100644
--- a/src/sksl/generated/sksl_rt_shader.dehydrated.sksl
+++ b/src/sksl/generated/sksl_rt_shader.dehydrated.sksl
@@ -14,54 +14,54 @@
7,98,108,101,110,100,101,114,
3,115,114,99,
3,100,115,116,
-47,13,0,
-51,1,0,
-35,
-34,0,2,0,0,255,255,255,255,255,15,0,255,255,255,255,0,2,0,
-48,2,0,15,0,0,
-51,3,0,
-16,22,0,
-48,4,0,24,0,3,
-51,5,0,
-16,31,0,
-48,6,0,38,0,3,
-28,7,0,
-16,45,0,2,3,0,5,0,
-48,8,0,52,0,
-51,9,0,
-16,58,0,
-48,10,0,60,0,3,
-51,11,0,
-16,72,0,
-45,8,0,3,
-50,12,0,2,
-45,7,0,
-28,13,0,
-16,45,0,2,9,0,11,0,
-45,8,0,
-45,13,0,
-51,14,0,
-16,78,0,
-48,15,0,80,0,3,
-51,16,0,
-16,88,0,
-45,8,0,3,
-51,17,0,
-16,92,0,
-45,8,0,3,
-50,18,0,3,
-45,7,0,
-45,13,0,
-28,19,0,
-16,45,0,3,14,0,16,0,17,0,
-45,8,0,
-45,19,0,2,0,
+48,13,0,
+52,1,0,
+36,
+35,0,2,0,0,255,255,255,255,255,15,0,255,255,255,255,0,2,0,
+49,2,0,15,0,0,
+52,3,0,
+17,22,0,
+49,4,0,24,0,3,
+52,5,0,
+17,31,0,
+49,6,0,38,0,3,
+29,7,0,
+17,45,0,2,3,0,5,0,
+49,8,0,52,0,
+52,9,0,
+17,58,0,
+49,10,0,60,0,3,
+52,11,0,
+17,72,0,
+46,8,0,3,
+51,12,0,2,
+46,7,0,
+29,13,0,
+17,45,0,2,9,0,11,0,
+46,8,0,
+46,13,0,
+52,14,0,
+17,78,0,
+49,15,0,80,0,3,
+52,16,0,
+17,88,0,
+46,8,0,3,
+52,17,0,
+17,92,0,
+46,8,0,3,
+51,18,0,3,
+46,7,0,
+46,13,0,
+29,19,0,
+17,45,0,3,14,0,16,0,17,0,
+46,8,0,
+46,19,0,2,0,
11,0,
0,0,
-19,
-53,
-52,1,0,
-45,2,0,0,
-55,
-20,};
+20,
+54,
+53,1,0,
+46,2,0,0,
+56,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_rt_shader_LENGTH = sizeof(SKSL_INCLUDE_sksl_rt_shader);
diff --git a/src/sksl/generated/sksl_vert.dehydrated.sksl b/src/sksl/generated/sksl_vert.dehydrated.sksl
index 508aa46..9c70b2b 100644
--- a/src/sksl/generated/sksl_vert.dehydrated.sksl
+++ b/src/sksl/generated/sksl_vert.dehydrated.sksl
@@ -8,42 +8,42 @@
3,105,110,116,
13,115,107,95,73,110,115,116,97,110,99,101,73,68,
0,
-47,6,0,
-42,1,0,2,0,2,
-35,
-34,0,2,0,0,255,255,255,255,255,0,0,255,255,255,255,0,15,0,
-48,2,0,27,0,
-35,
-34,0,2,0,0,255,255,255,255,255,1,0,255,255,255,255,0,34,0,
-48,3,0,47,0,
-51,4,0,
-35,
-15,4,2,0,
-45,1,0,0,
-22,4,0,0,
-22,4,0,1,
-51,5,0,
-35,
-34,0,2,0,0,255,255,255,255,255,42,0,255,255,255,255,2,53,0,
-48,6,0,65,0,0,
-51,7,0,
-35,
-34,0,2,0,0,255,255,255,255,255,43,0,255,255,255,255,2,69,0,
-45,6,0,0,4,0,
+48,6,0,
+43,1,0,2,0,2,
+36,
+35,0,2,0,0,255,255,255,255,255,0,0,255,255,255,255,0,15,0,
+49,2,0,27,0,
+36,
+35,0,2,0,0,255,255,255,255,255,1,0,255,255,255,255,0,34,0,
+49,3,0,47,0,
+52,4,0,
+36,
+16,4,2,0,
+46,1,0,0,
+23,4,0,0,
+23,4,0,1,
+52,5,0,
+36,
+35,0,2,0,0,255,255,255,255,255,42,0,255,255,255,255,2,53,0,
+49,6,0,65,0,0,
+52,7,0,
+36,
+35,0,2,0,0,255,255,255,255,255,43,0,255,255,255,255,2,69,0,
+46,6,0,0,4,0,
5,0,
3,0,
2,0,
4,0,
-19,
-32,
-45,4,0,2,0,83,0,0,
-53,
-52,5,0,
-45,6,0,0,
-55,
-53,
-52,7,0,
-45,6,0,0,
-55,
-20,};
+20,
+33,
+46,4,0,2,0,83,0,0,
+54,
+53,5,0,
+46,6,0,0,
+56,
+54,
+53,7,0,
+46,6,0,0,
+56,
+21,};
static constexpr size_t SKSL_INCLUDE_sksl_vert_LENGTH = sizeof(SKSL_INCLUDE_sksl_vert);
diff --git a/src/sksl/ir/SkSLConstructorArrayCast.cpp b/src/sksl/ir/SkSLConstructorArrayCast.cpp
new file mode 100644
index 0000000..8d52c46
--- /dev/null
+++ b/src/sksl/ir/SkSLConstructorArrayCast.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2021 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
+
+#include "src/sksl/SkSLConstantFolder.h"
+#include "src/sksl/ir/SkSLConstructorArray.h"
+#include "src/sksl/ir/SkSLConstructorCompoundCast.h"
+#include "src/sksl/ir/SkSLConstructorScalarCast.h"
+
+namespace SkSL {
+
+static std::unique_ptr<Expression> cast_constant_array(const Context& context,
+ const Type& destType,
+ std::unique_ptr<Expression> constCtor) {
+ const Type& scalarType = destType.componentType();
+
+ // Create a ConstructorArray(...) which typecasts each argument inside.
+ auto inputArgs = constCtor->as<ConstructorArray>().argumentSpan();
+ ExpressionArray typecastArgs;
+ typecastArgs.reserve_back(inputArgs.size());
+ for (std::unique_ptr<Expression>& arg : inputArgs) {
+ int offset = arg->fOffset;
+ if (arg->type().isScalar()) {
+ typecastArgs.push_back(ConstructorScalarCast::Make(context, offset, scalarType,
+ std::move(arg)));
+ } else {
+ typecastArgs.push_back(ConstructorCompoundCast::Make(context, offset, scalarType,
+ std::move(arg)));
+ }
+ }
+
+ return ConstructorArray::Make(context, constCtor->fOffset, destType, std::move(typecastArgs));
+}
+
+std::unique_ptr<Expression> ConstructorArrayCast::Make(const Context& context,
+ int offset,
+ const Type& type,
+ std::unique_ptr<Expression> arg) {
+ // Only arrays of the same size are allowed.
+ SkASSERT(type.isArray());
+ SkASSERT(arg->type().isArray());
+ SkASSERT(type.columns() == arg->type().columns());
+
+ // If this is a no-op cast, return the expression as-is.
+ if (type == arg->type()) {
+ return arg;
+ }
+
+ // When optimization is on, look up the value of constant variables. This allows expressions
+ // like `myArray` to be replaced with the compile-time constant `int[2](0, 1)`.
+ if (context.fConfig->fSettings.fOptimize) {
+ arg = ConstantFolder::MakeConstantValueForVariable(std::move(arg));
+ }
+ // We can cast a vector of compile-time constants at compile-time.
+ if (arg->isCompileTimeConstant()) {
+ return cast_constant_array(context, type, std::move(arg));
+ }
+ return std::make_unique<ConstructorArrayCast>(offset, type, std::move(arg));
+}
+
+} // namespace SkSL
diff --git a/src/sksl/ir/SkSLConstructorArrayCast.h b/src/sksl/ir/SkSLConstructorArrayCast.h
new file mode 100644
index 0000000..765f75b
--- /dev/null
+++ b/src/sksl/ir/SkSLConstructorArrayCast.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2021 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SKSL_CONSTRUCTOR_ARRAY_CAST
+#define SKSL_CONSTRUCTOR_ARRAY_CAST
+
+#include "src/sksl/SkSLContext.h"
+#include "src/sksl/ir/SkSLConstructor.h"
+#include "src/sksl/ir/SkSLExpression.h"
+
+#include <memory>
+
+namespace SkSL {
+
+/**
+ * Represents the typecasting of an array. Arrays cannot be directly casted in SkSL (or GLSL), but
+ * type narrowing can cause an array to be implicitly casted. For instance, the expression
+ * `myHalf2Array == float[2](a, b)` should be allowed when narrowing conversions are enabled; this
+ * constructor allows the necessary array-type conversion to be represented in IR.
+ *
+ * These always contain exactly 1 array of matching size, and are never constant.
+ */
+class ConstructorArrayCast final : public SingleArgumentConstructor {
+public:
+ static constexpr Kind kExpressionKind = Kind::kConstructorArrayCast;
+
+ ConstructorArrayCast(int offset, const Type& type, std::unique_ptr<Expression> arg)
+ : INHERITED(offset, kExpressionKind, &type, std::move(arg)) {}
+
+ static std::unique_ptr<Expression> Make(const Context& context,
+ int offset,
+ const Type& type,
+ std::unique_ptr<Expression> arg);
+
+ bool isCompileTimeConstant() const override {
+ // If this were a compile-time constant, we would have made a ConstructorArray instead.
+ return false;
+ }
+
+ std::unique_ptr<Expression> clone() const override {
+ return std::make_unique<ConstructorArrayCast>(fOffset, this->type(), argument()->clone());
+ }
+
+private:
+ using INHERITED = SingleArgumentConstructor;
+};
+
+} // namespace SkSL
+
+#endif
diff --git a/src/sksl/ir/SkSLConstructorCompound.h b/src/sksl/ir/SkSLConstructorCompound.h
index 2cb6b5f..c315d62 100644
--- a/src/sksl/ir/SkSLConstructorCompound.h
+++ b/src/sksl/ir/SkSLConstructorCompound.h
@@ -5,8 +5,8 @@
* found in the LICENSE file.
*/
-#ifndef SKSL_CONSTRUCTOR_VECTOR
-#define SKSL_CONSTRUCTOR_VECTOR
+#ifndef SKSL_CONSTRUCTOR_COMPOUND
+#define SKSL_CONSTRUCTOR_COMPOUND
#include "src/sksl/SkSLContext.h"
#include "src/sksl/ir/SkSLConstructor.h"
diff --git a/src/sksl/ir/SkSLConstructorCompoundCast.cpp b/src/sksl/ir/SkSLConstructorCompoundCast.cpp
index 3e0c30f..de23b91 100644
--- a/src/sksl/ir/SkSLConstructorCompoundCast.cpp
+++ b/src/sksl/ir/SkSLConstructorCompoundCast.cpp
@@ -61,7 +61,7 @@
}
return ConstructorCompound::Make(context, constCtor->fOffset, destType,
- std::move(typecastArgs));
+ std::move(typecastArgs));
}
std::unique_ptr<Expression> ConstructorCompoundCast::Make(const Context& context,
diff --git a/src/sksl/ir/SkSLConstructorCompoundCast.h b/src/sksl/ir/SkSLConstructorCompoundCast.h
index 3e0f3c8..1f5d0f3 100644
--- a/src/sksl/ir/SkSLConstructorCompoundCast.h
+++ b/src/sksl/ir/SkSLConstructorCompoundCast.h
@@ -5,8 +5,8 @@
* found in the LICENSE file.
*/
-#ifndef SKSL_CONSTRUCTOR_VECTOR_CAST
-#define SKSL_CONSTRUCTOR_VECTOR_CAST
+#ifndef SKSL_CONSTRUCTOR_COMPOUND_CAST
+#define SKSL_CONSTRUCTOR_COMPOUND_CAST
#include "src/sksl/SkSLContext.h"
#include "src/sksl/ir/SkSLConstructor.h"
diff --git a/src/sksl/ir/SkSLExpression.h b/src/sksl/ir/SkSLExpression.h
index 66b3024..149d5e6 100644
--- a/src/sksl/ir/SkSLExpression.h
+++ b/src/sksl/ir/SkSLExpression.h
@@ -31,6 +31,7 @@
kBoolLiteral,
kCodeString,
kConstructorArray,
+ kConstructorArrayCast,
kConstructorCompound,
kConstructorCompoundCast,
kConstructorDiagonalMatrix,
diff --git a/src/sksl/ir/SkSLType.cpp b/src/sksl/ir/SkSLType.cpp
index 7274b1f..04c6c1c 100644
--- a/src/sksl/ir/SkSLType.cpp
+++ b/src/sksl/ir/SkSLType.cpp
@@ -10,6 +10,7 @@
#include "src/sksl/SkSLConstantFolder.h"
#include "src/sksl/SkSLContext.h"
#include "src/sksl/ir/SkSLConstructor.h"
+#include "src/sksl/ir/SkSLConstructorArrayCast.h"
#include "src/sksl/ir/SkSLConstructorCompoundCast.h"
#include "src/sksl/ir/SkSLConstructorScalarCast.h"
#include "src/sksl/ir/SkSLFunctionReference.h"
@@ -407,17 +408,16 @@
if (*this == other) {
return CoercionCost::Free();
}
- if (this->isVector() && other.isVector()) {
- if (this->columns() == other.columns()) {
- return this->componentType().coercionCost(other.componentType());
+ if (this->typeKind() == other.typeKind() &&
+ (this->isVector() || this->isMatrix() || this->isArray())) {
+ // Vectors/matrices/arrays of the same size can be coerced if their component type can be.
+ if (this->isMatrix() && (this->rows() != other.rows())) {
+ return CoercionCost::Impossible();
}
- return CoercionCost::Impossible();
- }
- if (this->isMatrix()) {
- if (this->columns() == other.columns() && this->rows() == other.rows()) {
- return this->componentType().coercionCost(other.componentType());
+ if (this->columns() != other.columns()) {
+ return CoercionCost::Impossible();
}
- return CoercionCost::Impossible();
+ return this->componentType().coercionCost(other.componentType());
}
if (this->isNumber() && other.isNumber()) {
if (this->isLiteral() && this->isInteger()) {
@@ -703,6 +703,9 @@
if (this->isVector() || this->isMatrix()) {
return ConstructorCompoundCast::Make(context, offset, *this, std::move(expr));
}
+ if (this->isArray()) {
+ return ConstructorArrayCast::Make(context, offset, *this, std::move(expr));
+ }
context.fErrors.error(offset, "cannot construct '" + this->displayName() + "'");
return nullptr;
}
diff --git a/tests/sksl/shared/ArrayComparison.metal b/tests/sksl/shared/ArrayComparison.metal
index dfcfd24..8cca8c5 100644
--- a/tests/sksl/shared/ArrayComparison.metal
+++ b/tests/sksl/shared/ArrayComparison.metal
@@ -15,8 +15,8 @@
float4 sk_FragColor [[color(0)]];
};
-template <typename T, size_t N>
-bool operator==(thread const array<T, N>& left, thread const array<T, N>& right) {
+template <typename T1, typename T2, size_t N>
+bool operator==(thread const array<T1, N>& left, thread const array<T2, N>& right) {
for (size_t index = 0; index < N; ++index) {
if (!(left[index] == right[index])) {
return false;
@@ -25,8 +25,8 @@
return true;
}
-template <typename T, size_t N>
-bool operator!=(thread const array<T, N>& left, thread const array<T, N>& right) {
+template <typename T1, typename T2, size_t N>
+bool operator!=(thread const array<T1, N>& left, thread const array<T2, N>& right) {
return !(left == right);
}
thread bool operator==(thread const S& left, thread const S& right) {
diff --git a/tests/sksl/shared/ArrayNarrowingConversions.asm.frag b/tests/sksl/shared/ArrayNarrowingConversions.asm.frag
index 34209aa..6001c82 100644
--- a/tests/sksl/shared/ArrayNarrowingConversions.asm.frag
+++ b/tests/sksl/shared/ArrayNarrowingConversions.asm.frag
@@ -1,4 +1,173 @@
-### Compilation failed:
-
-error: 12: type mismatch: '==' cannot operate on 'int[2]', 'short[2]'
-1 error
+OpCapability Shader
+%1 = OpExtInstImport "GLSL.std.450"
+OpMemoryModel Logical GLSL450
+OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise
+OpExecutionMode %_entrypoint_v OriginUpperLeft
+OpName %sk_FragColor "sk_FragColor"
+OpName %sk_Clockwise "sk_Clockwise"
+OpName %_UniformBuffer "_UniformBuffer"
+OpMemberName %_UniformBuffer 0 "colorGreen"
+OpMemberName %_UniformBuffer 1 "colorRed"
+OpName %_entrypoint_v "_entrypoint_v"
+OpName %main "main"
+OpName %i2 "i2"
+OpName %s2 "s2"
+OpName %f2 "f2"
+OpName %h2 "h2"
+OpName %cf2 "cf2"
+OpDecorate %sk_FragColor RelaxedPrecision
+OpDecorate %sk_FragColor Location 0
+OpDecorate %sk_FragColor Index 0
+OpDecorate %sk_Clockwise BuiltIn FrontFacing
+OpMemberDecorate %_UniformBuffer 0 Offset 0
+OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
+OpMemberDecorate %_UniformBuffer 1 Offset 16
+OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
+OpDecorate %_UniformBuffer Block
+OpDecorate %10 Binding 0
+OpDecorate %10 DescriptorSet 0
+OpDecorate %_arr_int_int_2 ArrayStride 16
+OpDecorate %s2 RelaxedPrecision
+OpDecorate %_arr_int_int_2_0 ArrayStride 16
+OpDecorate %36 RelaxedPrecision
+OpDecorate %_arr_float_int_2 ArrayStride 16
+OpDecorate %h2 RelaxedPrecision
+OpDecorate %_arr_float_int_2_0 ArrayStride 16
+OpDecorate %46 RelaxedPrecision
+OpDecorate %51 RelaxedPrecision
+OpDecorate %62 RelaxedPrecision
+OpDecorate %85 RelaxedPrecision
+OpDecorate %103 RelaxedPrecision
+OpDecorate %105 RelaxedPrecision
+OpDecorate %106 RelaxedPrecision
+%float = OpTypeFloat 32
+%v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%sk_FragColor = OpVariable %_ptr_Output_v4float Output
+%bool = OpTypeBool
+%_ptr_Input_bool = OpTypePointer Input %bool
+%sk_Clockwise = OpVariable %_ptr_Input_bool Input
+%_UniformBuffer = OpTypeStruct %v4float %v4float
+%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
+%10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
+%void = OpTypeVoid
+%15 = OpTypeFunction %void
+%v2float = OpTypeVector %float 2
+%float_0 = OpConstant %float 0
+%19 = OpConstantComposite %v2float %float_0 %float_0
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%23 = OpTypeFunction %v4float %_ptr_Function_v2float
+%int = OpTypeInt 32 1
+%int_2 = OpConstant %int 2
+%_arr_int_int_2 = OpTypeArray %int %int_2
+%_ptr_Function__arr_int_int_2 = OpTypePointer Function %_arr_int_int_2
+%int_1 = OpConstant %int 1
+%_arr_int_int_2_0 = OpTypeArray %int %int_2
+%_ptr_Function__arr_int_int_2_0 = OpTypePointer Function %_arr_int_int_2_0
+%_arr_float_int_2 = OpTypeArray %float %int_2
+%_ptr_Function__arr_float_int_2 = OpTypePointer Function %_arr_float_int_2
+%float_1 = OpConstant %float 1
+%float_2 = OpConstant %float 2
+%_arr_float_int_2_0 = OpTypeArray %float %int_2
+%_ptr_Function__arr_float_int_2_0 = OpTypePointer Function %_arr_float_int_2_0
+%false = OpConstantFalse %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+%int_0 = OpConstant %int 0
+%_entrypoint_v = OpFunction %void None %15
+%16 = OpLabel
+%20 = OpVariable %_ptr_Function_v2float Function
+OpStore %20 %19
+%22 = OpFunctionCall %v4float %main %20
+OpStore %sk_FragColor %22
+OpReturn
+OpFunctionEnd
+%main = OpFunction %v4float None %23
+%24 = OpFunctionParameter %_ptr_Function_v2float
+%25 = OpLabel
+%i2 = OpVariable %_ptr_Function__arr_int_int_2 Function
+%s2 = OpVariable %_ptr_Function__arr_int_int_2_0 Function
+%f2 = OpVariable %_ptr_Function__arr_float_int_2 Function
+%h2 = OpVariable %_ptr_Function__arr_float_int_2_0 Function
+%cf2 = OpVariable %_ptr_Function__arr_float_int_2 Function
+%95 = OpVariable %_ptr_Function_v4float Function
+%32 = OpCompositeConstruct %_arr_int_int_2 %int_1 %int_2
+OpStore %i2 %32
+%36 = OpCompositeConstruct %_arr_int_int_2_0 %int_1 %int_2
+OpStore %s2 %36
+%42 = OpCompositeConstruct %_arr_float_int_2 %float_1 %float_2
+OpStore %f2 %42
+%46 = OpCompositeConstruct %_arr_float_int_2_0 %float_1 %float_2
+OpStore %h2 %46
+%48 = OpCompositeConstruct %_arr_float_int_2 %float_1 %float_2
+OpStore %cf2 %48
+%50 = OpLoad %_arr_int_int_2 %i2
+%51 = OpLoad %_arr_int_int_2_0 %s2
+%52 = OpCompositeExtract %int %50 0
+%53 = OpCompositeExtract %int %51 0
+%54 = OpIEqual %bool %52 %53
+%55 = OpCompositeExtract %int %50 1
+%56 = OpCompositeExtract %int %51 1
+%57 = OpIEqual %bool %55 %56
+%58 = OpLogicalAnd %bool %57 %54
+OpSelectionMerge %60 None
+OpBranchConditional %58 %59 %60
+%59 = OpLabel
+%61 = OpLoad %_arr_float_int_2 %f2
+%62 = OpLoad %_arr_float_int_2_0 %h2
+%63 = OpCompositeExtract %float %61 0
+%64 = OpCompositeExtract %float %62 0
+%65 = OpFOrdEqual %bool %63 %64
+%66 = OpCompositeExtract %float %61 1
+%67 = OpCompositeExtract %float %62 1
+%68 = OpFOrdEqual %bool %66 %67
+%69 = OpLogicalAnd %bool %68 %65
+OpBranch %60
+%60 = OpLabel
+%70 = OpPhi %bool %false %25 %69 %59
+OpSelectionMerge %72 None
+OpBranchConditional %70 %71 %72
+%71 = OpLabel
+%73 = OpLoad %_arr_int_int_2 %i2
+%74 = OpCompositeConstruct %_arr_int_int_2 %int_1 %int_2
+%75 = OpCompositeExtract %int %73 0
+%76 = OpCompositeExtract %int %74 0
+%77 = OpIEqual %bool %75 %76
+%78 = OpCompositeExtract %int %73 1
+%79 = OpCompositeExtract %int %74 1
+%80 = OpIEqual %bool %78 %79
+%81 = OpLogicalAnd %bool %80 %77
+OpBranch %72
+%72 = OpLabel
+%82 = OpPhi %bool %false %60 %81 %71
+OpSelectionMerge %84 None
+OpBranchConditional %82 %83 %84
+%83 = OpLabel
+%85 = OpLoad %_arr_float_int_2_0 %h2
+%86 = OpLoad %_arr_float_int_2 %cf2
+%87 = OpCompositeExtract %float %85 0
+%88 = OpCompositeExtract %float %86 0
+%89 = OpFOrdEqual %bool %87 %88
+%90 = OpCompositeExtract %float %85 1
+%91 = OpCompositeExtract %float %86 1
+%92 = OpFOrdEqual %bool %90 %91
+%93 = OpLogicalAnd %bool %92 %89
+OpBranch %84
+%84 = OpLabel
+%94 = OpPhi %bool %false %72 %93 %83
+OpSelectionMerge %99 None
+OpBranchConditional %94 %97 %98
+%97 = OpLabel
+%100 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
+%103 = OpLoad %v4float %100
+OpStore %95 %103
+OpBranch %99
+%98 = OpLabel
+%104 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
+%105 = OpLoad %v4float %104
+OpStore %95 %105
+OpBranch %99
+%99 = OpLabel
+%106 = OpLoad %v4float %95
+OpReturnValue %106
+OpFunctionEnd
diff --git a/tests/sksl/shared/ArrayNarrowingConversions.glsl b/tests/sksl/shared/ArrayNarrowingConversions.glsl
index 34209aa..3bb312d 100644
--- a/tests/sksl/shared/ArrayNarrowingConversions.glsl
+++ b/tests/sksl/shared/ArrayNarrowingConversions.glsl
@@ -1,4 +1,12 @@
-### Compilation failed:
-error: 12: type mismatch: '==' cannot operate on 'int[2]', 'short[2]'
-1 error
+out vec4 sk_FragColor;
+uniform vec4 colorGreen;
+uniform vec4 colorRed;
+vec4 main() {
+ int i2[2] = int[2](1, 2);
+ int s2[2] = int[2](1, 2);
+ float f2[2] = float[2](1.0, 2.0);
+ float h2[2] = float[2](1.0, 2.0);
+ const float cf2[2] = float[2](1.0, 2.0);
+ return ((i2 == s2 && f2 == h2) && i2 == int[2](1, 2)) && h2 == cf2 ? colorGreen : colorRed;
+}
diff --git a/tests/sksl/shared/ArrayNarrowingConversions.metal b/tests/sksl/shared/ArrayNarrowingConversions.metal
index 34209aa..a2c7ffa 100644
--- a/tests/sksl/shared/ArrayNarrowingConversions.metal
+++ b/tests/sksl/shared/ArrayNarrowingConversions.metal
@@ -1,4 +1,38 @@
-### Compilation failed:
+#include <metal_stdlib>
+#include <simd/simd.h>
+using namespace metal;
+struct Uniforms {
+ float4 colorGreen;
+ float4 colorRed;
+};
+struct Inputs {
+};
+struct Outputs {
+ float4 sk_FragColor [[color(0)]];
+};
-error: 12: type mismatch: '==' cannot operate on 'int[2]', 'short[2]'
-1 error
+template <typename T1, typename T2, size_t N>
+bool operator==(thread const array<T1, N>& left, thread const array<T2, N>& right) {
+ for (size_t index = 0; index < N; ++index) {
+ if (!(left[index] == right[index])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+template <typename T1, typename T2, size_t N>
+bool operator!=(thread const array<T1, N>& left, thread const array<T2, N>& right) {
+ return !(left == right);
+}
+fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
+ Outputs _out;
+ (void)_out;
+ array<int, 2> i2 = array<int, 2>{1, 2};
+ array<short, 2> s2 = array<short, 2>{1, 2};
+ array<float, 2> f2 = array<float, 2>{1.0, 2.0};
+ array<float, 2> h2 = array<float, 2>{1.0, 2.0};
+ const array<float, 2> cf2 = array<float, 2>{1.0, 2.0};
+ _out.sk_FragColor = ((i2 == s2 && f2 == h2) && i2 == array<int, 2>{1, 2}) && h2 == cf2 ? _uniforms.colorGreen : _uniforms.colorRed;
+ return _out;
+}