Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php namespace PhpParser; class DummyNode extends NodeAbstract { public $subNode1; publ..
Decoded Output download
<?php
namespace PhpParser; class DummyNode extends NodeAbstract { public $subNode1; public $subNode2; public $notSubNode; public function __construct($subNode1, $subNode2, $notSubNode, $attributes) { parent::__construct($attributes); $this->subNode1 = $subNode1; $this->subNode2 = $subNode2; $this->notSubNode = $notSubNode; } public function getSubNodeNames() : array { return array("subNode1", "subNode2"); } public function getType() : string { return "Dummy"; } } class NodeAbstractTest extends \PHPUnit\Framework\TestCase { public function provideNodes() { $attributes = array("startLine" => 10, "endLine" => 11, "startTokenPos" => 12, "endTokenPos" => 13, "startFilePos" => 14, "endFilePos" => 15, "comments" => array(new Comment("// Comment 1" . "\xa"), new Comment\Doc("/** doc comment */"), new Comment("// Comment 2" . "
"))); $node = new DummyNode("value1", "value2", "value3", $attributes); return array(array($attributes, $node)); } public function testConstruct(array $attributes, Node $node) { $this->assertSame("Dummy", $node->getType()); $this->assertSame(array("subNode1", "subNode2"), $node->getSubNodeNames()); $this->assertSame(10, $node->getLine()); $this->assertSame(10, $node->getStartLine()); $this->assertSame(11, $node->getEndLine()); $this->assertSame(12, $node->getStartTokenPos()); $this->assertSame(13, $node->getEndTokenPos()); $this->assertSame(14, $node->getStartFilePos()); $this->assertSame(15, $node->getEndFilePos()); $this->assertSame("/** doc comment */", $node->getDocComment()->getText()); $this->assertSame("value1", $node->subNode1); $this->assertSame("value2", $node->subNode2); $this->assertTrue(isset($node->subNode1)); $this->assertTrue(isset($node->subNode2)); $this->assertTrue(!isset($node->subNode3)); $this->assertSame($attributes, $node->getAttributes()); $this->assertSame($attributes["comments"], $node->getComments()); return $node; } public function testGetDocComment(array $attributes, Node $node) { $this->assertSame("/** doc comment */", $node->getDocComment()->getText()); $comments = $node->getComments(); array_splice($comments, 1, 1, array()); $node->setAttribute("comments", $comments); $this->assertNull($node->getDocComment()); $node->setAttribute("comments", array()); $this->assertNull($node->getDocComment()); } public function testSetDocComment() { $node = new DummyNode(null, null, null, array()); $docComment = new Comment\Doc("/** doc */"); $node->setDocComment($docComment); $this->assertSame($docComment, $node->getDocComment()); $docComment = new Comment\Doc("/** doc 2 */"); $node->setDocComment($docComment); $this->assertSame($docComment, $node->getDocComment()); $c1 = new Comment("/* foo */"); $c2 = new Comment("/* bar */"); $docComment = new Comment\Doc("/** baz */"); $node->setAttribute("comments", array($c1, $c2)); $node->setDocComment($docComment); $this->assertSame(array($c1, $c2, $docComment), $node->getAttribute("comments")); $newDocComment = new Comment\Doc("/** new baz */"); $node->setAttribute("comments", array($c1, $docComment, $c2)); $node->setDocComment($newDocComment); $this->assertSame(array($c1, $newDocComment, $c2), $node->getAttribute("comments")); } public function testChange(array $attributes, DummyNode $node) { $node->subNode1 = "newValue"; $this->assertSame("newValue", $node->subNode1); $subNode =& $node->subNode1; $subNode = "newNewValue"; $this->assertSame("newNewValue", $node->subNode1); unset($node->subNode1); $this->assertFalse(isset($node->subNode1)); } public function testIteration(array $attributes, Node $node) { $i = 0; foreach ($node as $key => $value) { if ($i === 0) { $this->assertSame("subNode1", $key); $this->assertSame("value1", $value); } elseif ($i === 1) { $this->assertSame("subNode2", $key); $this->assertSame("value2", $value); } elseif ($i === 2) { $this->assertSame("notSubNode", $key); $this->assertSame("value3", $value); } else { throw new \Exception(); } $i++; } $this->assertSame(3, $i); } public function testAttributes() { $node = $this->getMockForAbstractClass(NodeAbstract::class); $this->assertEmpty($node->getAttributes()); $node->setAttribute("key", "value"); $this->assertTrue($node->hasAttribute("key")); $this->assertSame("value", $node->getAttribute("key")); $this->assertFalse($node->hasAttribute("doesNotExist")); $this->assertNull($node->getAttribute("doesNotExist")); $this->assertSame("default", $node->getAttribute("doesNotExist", "default")); $node->setAttribute("null", null); $this->assertTrue($node->hasAttribute("null")); $this->assertNull($node->getAttribute("null")); $this->assertNull($node->getAttribute("null", "default")); $this->assertSame(array("key" => "value", "null" => null), $node->getAttributes()); $node->setAttributes(array("a" => "b", "c" => null)); $this->assertSame(array("a" => "b", "c" => null), $node->getAttributes()); } public function testJsonSerialization() { $code = "<?php
// comment\xa/** doc comment */\xafunction functionName(&{$a} = 0, {$b} = 1.0) {\xa echo 'Foo';\xa}"; $expected = "[\xa {
"nodeType": "Stmt_Function",
"byRef": false,\xa "name": {\xa "nodeType": "Identifier",
"name": "functionName",\xa "attributes": {
"startLine": 4,\xa "startTokenPos": 7,\xa "startFilePos": 45,
"endLine": 4,\xa "endTokenPos": 7,\xa "endFilePos": 56
}
},
"params": [\xa {\xa "nodeType": "Param",\xa "type": null,\xa "byRef": true,\xa "variadic": false,
"var": {\xa "nodeType": "Expr_Variable",\xa "name": "a",\xa "attributes": {
"startLine": 4,\xa "startTokenPos": 10,\xa "startFilePos": 59,\xa "endLine": 4,
"endTokenPos": 10,
"endFilePos": 60\xa }\xa },\xa "default": {\xa "nodeType": "Scalar_Int",\xa "value": 0,\xa "attributes": {\xa "startLine": 4,
"startTokenPos": 14,
"startFilePos": 64,\xa "endLine": 4,\xa "endTokenPos": 14,
"endFilePos": 64,
"rawValue": "0",
"kind": 10
}\xa },\xa "flags": 0,
"attrGroups": [],
"attributes": {
"startLine": 4,
"startTokenPos": 9,
"startFilePos": 58,
"endLine": 4,
"endTokenPos": 14,\xa "endFilePos": 64
}
},\xa {
"nodeType": "Param",
"type": null,\xa "byRef": false,\xa "variadic": false,\xa "var": {
"nodeType": "Expr_Variable",\xa "name": "b",\xa "attributes": {
"startLine": 4,\xa "startTokenPos": 17,
"startFilePos": 67,
"endLine": 4,
"endTokenPos": 17,
"endFilePos": 68\xa }\xa },
"default": {\xa "nodeType": "Scalar_Float",
"value": 1,
"attributes": {\xa "startLine": 4,\xa "startTokenPos": 21,
"startFilePos": 72,
"endLine": 4,\xa "endTokenPos": 21,\xa "endFilePos": 74,\xa "rawValue": "1.0"\xa }
},\xa "flags": 0,
"attrGroups": [],\xa "attributes": {\xa "startLine": 4,\xa "startTokenPos": 17,\xa "startFilePos": 67,\xa "endLine": 4,
"endTokenPos": 21,
"endFilePos": 74\xa }\xa }
],
"returnType": null,
"stmts": [\xa {
"nodeType": "Stmt_Echo",\xa "exprs": [\xa {
"nodeType": "Scalar_String",
"value": "Foo",
"attributes": {\xa "startLine": 5,
"startTokenPos": 28,
"startFilePos": 88,
"endLine": 5,\xa "endTokenPos": 28,\xa "endFilePos": 92,\xa "kind": 1,
"rawValue": "'Foo'"
}\xa }
],\xa "attributes": {\xa "startLine": 5,\xa "startTokenPos": 26,\xa "startFilePos": 83,
"endLine": 5,
"endTokenPos": 29,\xa "endFilePos": 93\xa }\xa }
],\xa "attrGroups": [],\xa "attributes": {
"startLine": 4,
"startTokenPos": 5,
"startFilePos": 36,
"endLine": 6,
"endTokenPos": 31,
"endFilePos": 95,\xa "comments": [
{\xa "nodeType": "Comment",
"text": "\/\/ comment",\xa "line": 2,
"filePos": 6,
"tokenPos": 1,
"endLine": 2,
"endFilePos": 15,\xa "endTokenPos": 1
},
{\xa "nodeType": "Comment_Doc",\xa "text": "\/** doc comment *\/",\xa "line": 3,\xa "filePos": 17,\xa "tokenPos": 3,
"endLine": 3,
"endFilePos": 34,
"endTokenPos": 3
}
]
}\xa }
]"; $expected81 = "[
{\xa "nodeType": "Stmt_Function",
"attributes": {\xa "startLine": 4,\xa "startTokenPos": 5,
"startFilePos": 36,\xa "endLine": 6,
"endTokenPos": 31,\xa "endFilePos": 95,\xa "comments": [\xa {\xa "nodeType": "Comment",
"text": "\/\/ comment",
"line": 2,\xa "filePos": 6,
"tokenPos": 1,\xa "endLine": 2,
"endFilePos": 15,
"endTokenPos": 1
},
{\xa "nodeType": "Comment_Doc",\xa "text": "\/** doc comment *\/",
"line": 3,
"filePos": 17,\xa "tokenPos": 3,
"endLine": 3,\xa "endFilePos": 34,
"endTokenPos": 3
}\xa ]\xa },\xa "byRef": false,
"name": {
"nodeType": "Identifier",\xa "attributes": {
"startLine": 4,\xa "startTokenPos": 7,
"startFilePos": 45,\xa "endLine": 4,\xa "endTokenPos": 7,\xa "endFilePos": 56\xa },\xa "name": "functionName"
},\xa "params": [\xa {\xa "nodeType": "Param",\xa "attributes": {
"startLine": 4,
"startTokenPos": 9,\xa "startFilePos": 58,
"endLine": 4,\xa "endTokenPos": 14,
"endFilePos": 64\xa },
"type": null,
"byRef": true,
"variadic": false,
"var": {\xa "nodeType": "Expr_Variable",\xa "attributes": {
"startLine": 4,\xa "startTokenPos": 10,
"startFilePos": 59,
"endLine": 4,
"endTokenPos": 10,
"endFilePos": 60\xa },
"name": "a"\xa },
"default": {\xa "nodeType": "Scalar_Int",
"attributes": {\xa "startLine": 4,\xa "startTokenPos": 14,\xa "startFilePos": 64,\xa "endLine": 4,\xa "endTokenPos": 14,\xa "endFilePos": 64,\xa "rawValue": "0",\xa "kind": 10
},
"value": 0
},
"flags": 0,\xa "attrGroups": []\xa },\xa {
"nodeType": "Param",
"attributes": {
"startLine": 4,\xa "startTokenPos": 17,
"startFilePos": 67,\xa "endLine": 4,
"endTokenPos": 21,\xa "endFilePos": 74\xa },\xa "type": null,
"byRef": false,\xa "variadic": false,
"var": {\xa "nodeType": "Expr_Variable",
"attributes": {\xa "startLine": 4,\xa "startTokenPos": 17,
"startFilePos": 67,
"endLine": 4,
"endTokenPos": 17,\xa "endFilePos": 68\xa },
"name": "b"
},\xa "default": {
"nodeType": "Scalar_Float",\xa "attributes": {\xa "startLine": 4,
"startTokenPos": 21,
"startFilePos": 72,\xa "endLine": 4,\xa "endTokenPos": 21,
"endFilePos": 74,\xa "rawValue": "1.0"\xa },\xa "value": 1\xa },\xa "flags": 0,\xa "attrGroups": []
}\xa ],
"returnType": null,\xa "stmts": [
{
"nodeType": "Stmt_Echo",\xa "attributes": {
"startLine": 5,
"startTokenPos": 26,\xa "startFilePos": 83,\xa "endLine": 5,
"endTokenPos": 29,\xa "endFilePos": 93
},
"exprs": [
{\xa "nodeType": "Scalar_String",\xa "attributes": {
"startLine": 5,
"startTokenPos": 28,
"startFilePos": 88,
"endLine": 5,
"endTokenPos": 28,
"endFilePos": 92,\xa "kind": 1,\xa "rawValue": "'Foo'"
},
"value": "Foo"\xa }\xa ]\xa }
],
"attrGroups": []\xa }
]"; if (version_compare(PHP_VERSION, "8.1", ">=")) { $expected = $expected81; } $parser = new Parser\Php7(new Lexer()); $stmts = $parser->parse(canonicalize($code)); $json = json_encode($stmts, JSON_PRETTY_PRINT); $this->assertEquals(canonicalize($expected), canonicalize($json)); } } ?>
Did this file decode correctly?
Original Code
<?php
namespace PhpParser; class DummyNode extends NodeAbstract { public $subNode1; public $subNode2; public $notSubNode; public function __construct($subNode1, $subNode2, $notSubNode, $attributes) { parent::__construct($attributes); $this->subNode1 = $subNode1; $this->subNode2 = $subNode2; $this->notSubNode = $notSubNode; } public function getSubNodeNames() : array { return array("\x73\x75\x62\116\157\144\x65\61", "\163\165\x62\x4e\157\x64\145\x32"); } public function getType() : string { return "\104\x75\x6d\x6d\x79"; } } class NodeAbstractTest extends \PHPUnit\Framework\TestCase { public function provideNodes() { $attributes = array("\x73\x74\141\x72\164\114\x69\156\145" => 10, "\145\156\144\114\x69\156\x65" => 11, "\163\x74\x61\162\x74\x54\x6f\153\x65\x6e\x50\x6f\x73" => 12, "\x65\156\144\124\157\153\145\x6e\x50\157\x73" => 13, "\x73\x74\141\x72\x74\106\151\x6c\x65\120\157\163" => 14, "\x65\x6e\144\106\x69\154\x65\x50\157\x73" => 15, "\x63\157\x6d\155\145\156\x74\x73" => array(new Comment("\57\x2f\40\x43\x6f\x6d\155\145\156\164\x20\x31" . "\xa"), new Comment\Doc("\57\x2a\52\x20\x64\x6f\x63\40\143\x6f\x6d\155\145\156\x74\40\x2a\x2f"), new Comment("\x2f\x2f\40\103\157\155\x6d\145\x6e\164\x20\x32" . "\12"))); $node = new DummyNode("\x76\141\154\x75\x65\61", "\166\x61\x6c\165\x65\62", "\166\x61\x6c\165\x65\63", $attributes); return array(array($attributes, $node)); } public function testConstruct(array $attributes, Node $node) { $this->assertSame("\x44\165\x6d\x6d\x79", $node->getType()); $this->assertSame(array("\x73\165\142\116\157\x64\145\x31", "\163\165\142\x4e\157\x64\145\x32"), $node->getSubNodeNames()); $this->assertSame(10, $node->getLine()); $this->assertSame(10, $node->getStartLine()); $this->assertSame(11, $node->getEndLine()); $this->assertSame(12, $node->getStartTokenPos()); $this->assertSame(13, $node->getEndTokenPos()); $this->assertSame(14, $node->getStartFilePos()); $this->assertSame(15, $node->getEndFilePos()); $this->assertSame("\x2f\52\52\40\144\x6f\143\x20\143\x6f\x6d\x6d\x65\x6e\x74\40\52\57", $node->getDocComment()->getText()); $this->assertSame("\x76\141\x6c\x75\145\x31", $node->subNode1); $this->assertSame("\166\x61\x6c\165\x65\x32", $node->subNode2); $this->assertTrue(isset($node->subNode1)); $this->assertTrue(isset($node->subNode2)); $this->assertTrue(!isset($node->subNode3)); $this->assertSame($attributes, $node->getAttributes()); $this->assertSame($attributes["\143\157\155\x6d\x65\156\x74\x73"], $node->getComments()); return $node; } public function testGetDocComment(array $attributes, Node $node) { $this->assertSame("\57\x2a\52\x20\144\x6f\x63\40\x63\x6f\x6d\155\x65\x6e\x74\x20\52\57", $node->getDocComment()->getText()); $comments = $node->getComments(); array_splice($comments, 1, 1, array()); $node->setAttribute("\x63\x6f\155\155\x65\156\164\x73", $comments); $this->assertNull($node->getDocComment()); $node->setAttribute("\143\157\x6d\155\x65\156\x74\163", array()); $this->assertNull($node->getDocComment()); } public function testSetDocComment() { $node = new DummyNode(null, null, null, array()); $docComment = new Comment\Doc("\57\52\52\40\x64\157\x63\40\52\x2f"); $node->setDocComment($docComment); $this->assertSame($docComment, $node->getDocComment()); $docComment = new Comment\Doc("\57\52\52\40\144\157\x63\40\62\x20\52\x2f"); $node->setDocComment($docComment); $this->assertSame($docComment, $node->getDocComment()); $c1 = new Comment("\57\x2a\40\146\157\157\40\52\x2f"); $c2 = new Comment("\57\x2a\40\x62\x61\162\x20\52\57"); $docComment = new Comment\Doc("\57\x2a\x2a\40\142\x61\x7a\40\x2a\x2f"); $node->setAttribute("\x63\157\155\x6d\x65\156\164\163", array($c1, $c2)); $node->setDocComment($docComment); $this->assertSame(array($c1, $c2, $docComment), $node->getAttribute("\143\x6f\155\x6d\145\x6e\x74\163")); $newDocComment = new Comment\Doc("\57\x2a\x2a\x20\x6e\x65\x77\x20\x62\x61\x7a\40\52\57"); $node->setAttribute("\x63\157\155\x6d\x65\156\x74\x73", array($c1, $docComment, $c2)); $node->setDocComment($newDocComment); $this->assertSame(array($c1, $newDocComment, $c2), $node->getAttribute("\143\157\x6d\155\x65\156\164\163")); } public function testChange(array $attributes, DummyNode $node) { $node->subNode1 = "\x6e\145\167\126\x61\154\x75\x65"; $this->assertSame("\x6e\x65\x77\x56\x61\154\x75\145", $node->subNode1); $subNode =& $node->subNode1; $subNode = "\156\x65\167\116\x65\167\x56\141\154\x75\145"; $this->assertSame("\156\x65\167\116\145\x77\126\141\x6c\165\145", $node->subNode1); unset($node->subNode1); $this->assertFalse(isset($node->subNode1)); } public function testIteration(array $attributes, Node $node) { $i = 0; foreach ($node as $key => $value) { if ($i === 0) { $this->assertSame("\x73\x75\x62\116\x6f\x64\145\61", $key); $this->assertSame("\x76\x61\x6c\165\145\x31", $value); } elseif ($i === 1) { $this->assertSame("\163\x75\142\x4e\157\144\145\62", $key); $this->assertSame("\166\x61\154\x75\145\x32", $value); } elseif ($i === 2) { $this->assertSame("\156\157\x74\x53\x75\x62\116\x6f\x64\x65", $key); $this->assertSame("\x76\x61\154\x75\145\x33", $value); } else { throw new \Exception(); } $i++; } $this->assertSame(3, $i); } public function testAttributes() { $node = $this->getMockForAbstractClass(NodeAbstract::class); $this->assertEmpty($node->getAttributes()); $node->setAttribute("\153\145\171", "\x76\141\x6c\x75\145"); $this->assertTrue($node->hasAttribute("\x6b\x65\171")); $this->assertSame("\166\141\x6c\x75\x65", $node->getAttribute("\x6b\145\171")); $this->assertFalse($node->hasAttribute("\x64\157\145\163\x4e\157\164\x45\x78\151\x73\x74")); $this->assertNull($node->getAttribute("\x64\x6f\145\x73\116\x6f\x74\x45\x78\151\163\164")); $this->assertSame("\144\145\146\x61\x75\x6c\164", $node->getAttribute("\144\157\145\163\116\157\x74\x45\x78\151\x73\164", "\x64\145\x66\141\165\154\x74")); $node->setAttribute("\156\x75\x6c\154", null); $this->assertTrue($node->hasAttribute("\x6e\x75\x6c\x6c")); $this->assertNull($node->getAttribute("\156\x75\x6c\154")); $this->assertNull($node->getAttribute("\156\165\154\154", "\x64\145\x66\141\165\x6c\x74")); $this->assertSame(array("\x6b\145\171" => "\x76\x61\x6c\x75\x65", "\156\165\x6c\x6c" => null), $node->getAttributes()); $node->setAttributes(array("\141" => "\142", "\143" => null)); $this->assertSame(array("\141" => "\x62", "\x63" => null), $node->getAttributes()); } public function testJsonSerialization() { $code = "\x3c\77\x70\x68\160\12\x2f\57\x20\x63\157\155\155\x65\156\x74\xa\x2f\x2a\52\40\144\157\x63\x20\143\x6f\155\x6d\145\x6e\x74\x20\52\57\xa\x66\165\156\143\164\151\157\156\40\146\165\156\x63\x74\x69\157\x6e\116\x61\x6d\145\x28\x26{$a}\40\75\40\60\54\x20{$b}\x20\75\x20\61\x2e\x30\51\x20\173\xa\x20\x20\x20\x20\x65\143\x68\x6f\40\47\106\157\x6f\47\x3b\xa\175"; $expected = "\133\xa\40\40\40\x20\173\12\x20\40\x20\x20\x20\40\x20\40\42\x6e\x6f\144\145\124\x79\x70\145\x22\72\40\x22\x53\164\155\164\x5f\x46\x75\x6e\143\164\151\157\x6e\42\x2c\12\x20\40\x20\x20\x20\40\x20\40\42\142\171\x52\145\146\x22\72\x20\x66\141\154\163\x65\54\xa\40\x20\x20\x20\40\x20\x20\40\42\156\x61\155\145\42\x3a\40\x7b\xa\40\40\40\40\40\x20\x20\40\40\40\40\40\x22\x6e\x6f\x64\x65\124\x79\x70\145\x22\72\x20\x22\x49\144\x65\156\x74\x69\146\x69\x65\162\x22\54\12\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x20\40\42\156\x61\x6d\x65\x22\72\40\42\x66\x75\156\x63\x74\151\157\156\x4e\141\155\145\42\54\xa\x20\x20\40\40\x20\40\x20\40\x20\x20\40\40\42\x61\x74\164\x72\151\142\x75\x74\145\x73\x22\x3a\x20\173\12\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\40\40\40\40\40\42\163\x74\x61\162\x74\114\151\156\x65\42\x3a\x20\x34\54\xa\x20\40\40\40\x20\x20\x20\40\x20\x20\x20\x20\40\40\x20\40\42\x73\x74\x61\162\x74\x54\x6f\153\145\156\x50\x6f\163\x22\x3a\40\x37\x2c\xa\40\x20\40\x20\x20\x20\40\40\40\x20\40\40\x20\40\40\40\x22\163\164\141\162\x74\106\151\x6c\145\x50\x6f\x73\x22\72\40\64\x35\x2c\12\40\40\40\40\40\40\x20\x20\x20\40\40\40\40\x20\x20\40\42\145\156\144\114\151\156\145\x22\x3a\40\x34\54\xa\x20\40\x20\x20\x20\40\40\x20\x20\40\40\x20\40\x20\40\40\x22\x65\156\144\124\157\x6b\145\156\x50\157\163\42\72\x20\67\54\xa\40\40\40\40\40\40\40\40\x20\40\x20\x20\40\x20\x20\x20\42\145\156\144\106\x69\x6c\145\120\157\163\x22\72\x20\65\x36\12\40\40\40\40\x20\x20\x20\x20\40\40\40\x20\x7d\12\x20\40\x20\40\x20\40\40\40\175\54\12\x20\x20\40\x20\x20\x20\x20\x20\x22\160\141\x72\141\155\x73\42\x3a\x20\133\xa\x20\40\x20\40\40\40\x20\x20\40\40\40\40\x7b\xa\40\x20\40\x20\40\40\40\40\x20\x20\x20\40\40\x20\40\x20\x22\156\x6f\x64\145\x54\x79\160\x65\x22\72\40\x22\x50\x61\162\x61\x6d\42\54\xa\40\x20\40\40\40\x20\x20\x20\40\40\40\40\40\40\40\40\x22\164\x79\160\x65\x22\72\40\x6e\x75\x6c\154\54\xa\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\x20\40\40\40\40\42\142\171\122\x65\x66\x22\72\40\x74\162\165\145\54\xa\40\40\40\40\x20\x20\40\40\40\x20\40\x20\40\x20\40\x20\42\166\141\x72\151\141\x64\x69\143\42\72\40\146\141\x6c\163\145\54\12\40\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\x20\40\x20\x22\166\141\162\42\72\x20\x7b\xa\x20\40\40\x20\40\x20\x20\x20\40\x20\x20\40\40\x20\40\40\x20\40\40\40\42\156\x6f\144\145\x54\x79\x70\x65\x22\x3a\40\42\105\170\x70\162\x5f\126\141\162\x69\141\142\x6c\x65\x22\54\xa\x20\40\40\40\40\40\x20\40\40\40\x20\40\x20\x20\40\x20\x20\40\x20\40\x22\156\x61\155\145\42\72\40\x22\141\42\x2c\xa\x20\40\40\40\40\x20\40\x20\x20\x20\x20\40\x20\x20\40\40\x20\x20\40\x20\x22\x61\x74\x74\x72\x69\x62\165\164\145\x73\42\72\x20\173\12\40\x20\x20\40\40\x20\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\40\40\40\40\x20\40\x20\x22\163\164\x61\162\x74\x4c\x69\x6e\x65\42\x3a\x20\64\x2c\xa\40\x20\40\x20\40\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\40\40\40\x20\42\x73\x74\x61\162\164\124\157\153\145\x6e\x50\x6f\163\42\72\40\x31\x30\54\xa\40\40\40\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\40\40\40\x20\40\40\40\x20\x20\x20\42\163\164\x61\x72\164\x46\151\154\145\120\x6f\163\42\72\x20\65\71\x2c\xa\x20\40\x20\40\40\40\40\x20\40\40\40\40\40\x20\x20\40\x20\40\40\x20\x20\x20\x20\x20\x22\145\156\x64\x4c\151\x6e\145\42\x3a\40\64\54\12\x20\40\x20\40\40\40\x20\x20\40\40\x20\x20\x20\40\40\x20\40\40\x20\40\x20\40\40\40\42\145\156\144\124\x6f\153\145\x6e\x50\157\x73\42\72\x20\61\x30\54\12\x20\40\40\40\x20\x20\x20\40\x20\x20\40\40\40\x20\40\x20\x20\40\x20\x20\40\x20\x20\40\x22\x65\156\x64\x46\x69\154\145\120\x6f\x73\42\x3a\x20\x36\60\xa\40\x20\x20\40\x20\40\x20\40\x20\40\x20\40\40\40\40\x20\x20\x20\x20\40\175\xa\40\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\40\x7d\54\xa\x20\x20\x20\40\40\40\x20\40\x20\40\x20\40\40\x20\40\x20\x22\144\x65\x66\x61\165\154\x74\x22\72\40\x7b\xa\x20\x20\40\40\40\x20\x20\40\x20\x20\40\40\40\40\40\40\x20\x20\x20\40\x22\x6e\x6f\144\x65\x54\171\160\145\42\x3a\x20\x22\x53\143\141\x6c\141\162\137\111\x6e\x74\x22\54\xa\x20\x20\x20\x20\x20\40\x20\40\x20\x20\x20\40\40\40\40\x20\x20\x20\40\x20\42\x76\141\154\x75\145\x22\72\40\x30\x2c\xa\x20\x20\40\x20\40\x20\40\40\40\x20\x20\40\40\40\40\x20\x20\40\40\x20\x22\141\164\x74\x72\151\x62\x75\x74\145\163\x22\x3a\40\x7b\xa\40\x20\x20\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\x20\x22\x73\164\141\x72\164\x4c\151\156\x65\x22\x3a\40\x34\54\12\40\x20\40\40\40\40\40\x20\x20\40\40\x20\x20\40\x20\x20\40\40\x20\40\40\x20\x20\40\x22\163\164\x61\x72\164\x54\157\153\145\156\120\x6f\x73\x22\72\40\61\x34\x2c\12\40\x20\40\40\40\40\x20\40\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\40\40\x20\40\42\163\x74\x61\162\x74\x46\151\x6c\145\x50\157\163\x22\72\x20\x36\x34\x2c\xa\40\x20\x20\40\40\40\40\x20\40\x20\40\40\x20\40\x20\x20\40\x20\x20\40\40\40\x20\40\x22\x65\x6e\144\x4c\x69\156\145\x22\x3a\x20\x34\x2c\xa\40\40\40\40\40\x20\x20\x20\40\x20\x20\x20\x20\40\x20\40\40\40\40\x20\40\40\x20\40\42\x65\156\144\124\157\x6b\145\156\120\x6f\163\42\x3a\x20\61\64\54\12\40\40\40\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\x20\x20\40\40\x20\40\40\x20\40\40\42\145\x6e\144\106\151\154\x65\120\x6f\x73\x22\x3a\40\66\x34\54\12\x20\40\40\40\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\40\x20\40\40\x20\40\x20\x20\x20\40\x22\x72\141\167\x56\141\154\x75\145\42\72\40\x22\60\x22\54\12\x20\40\40\x20\40\x20\x20\40\x20\40\40\x20\x20\40\x20\40\40\40\40\x20\40\x20\40\x20\42\153\x69\x6e\144\42\x3a\x20\x31\60\12\40\40\40\x20\40\40\40\40\x20\x20\40\x20\x20\x20\40\x20\40\x20\x20\40\x7d\xa\40\x20\40\40\x20\x20\x20\40\x20\40\x20\40\x20\40\x20\40\x7d\x2c\xa\40\40\40\40\40\40\40\40\x20\40\x20\x20\x20\40\x20\x20\42\146\x6c\141\x67\163\x22\x3a\40\x30\x2c\12\40\x20\40\40\x20\x20\40\40\x20\x20\x20\40\x20\40\x20\x20\x22\141\x74\x74\x72\x47\162\x6f\165\x70\x73\42\72\40\x5b\x5d\54\12\40\x20\x20\40\x20\40\x20\x20\x20\x20\40\40\40\40\x20\x20\42\x61\164\164\x72\x69\x62\165\164\145\x73\42\72\40\173\12\40\40\40\40\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\40\40\x20\40\x22\x73\164\x61\162\x74\114\151\156\145\42\72\x20\x34\x2c\12\40\x20\x20\40\40\40\40\40\40\x20\40\x20\40\x20\40\40\x20\40\40\40\42\x73\x74\x61\x72\164\124\157\x6b\145\156\120\x6f\163\42\x3a\x20\71\54\12\x20\x20\x20\x20\40\40\x20\x20\40\40\x20\40\40\40\40\40\40\40\40\x20\42\163\x74\141\x72\x74\x46\x69\154\x65\x50\x6f\163\x22\x3a\x20\65\x38\x2c\12\x20\40\40\x20\x20\40\40\x20\40\40\40\40\x20\40\40\x20\40\x20\x20\40\42\x65\x6e\x64\x4c\151\156\x65\x22\x3a\40\x34\54\12\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\x20\40\40\x20\42\145\x6e\x64\124\x6f\x6b\x65\x6e\x50\157\x73\x22\x3a\40\x31\64\54\xa\40\40\40\40\40\x20\40\x20\40\x20\40\40\x20\40\x20\x20\x20\40\40\x20\42\145\156\144\x46\x69\x6c\x65\120\x6f\x73\x22\x3a\x20\x36\64\12\x20\x20\x20\x20\40\40\40\x20\40\40\x20\40\40\x20\x20\x20\x7d\12\x20\40\40\40\40\40\40\x20\x20\40\x20\x20\x7d\x2c\xa\40\x20\x20\40\x20\40\x20\40\x20\x20\40\x20\x7b\12\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\40\40\40\40\40\x22\156\157\x64\x65\124\171\160\145\42\72\x20\x22\x50\141\162\141\155\x22\x2c\12\x20\40\x20\x20\40\40\40\x20\40\40\40\40\x20\40\40\x20\42\x74\x79\160\145\x22\x3a\40\x6e\165\x6c\x6c\x2c\xa\40\40\40\x20\40\40\x20\x20\x20\40\x20\x20\40\40\40\40\x22\142\x79\x52\145\146\42\x3a\40\146\x61\154\x73\145\x2c\xa\x20\x20\40\x20\x20\x20\40\40\40\40\x20\40\x20\40\40\x20\x22\166\141\162\151\141\x64\x69\143\x22\x3a\40\x66\141\154\163\145\54\xa\x20\40\x20\x20\x20\x20\40\40\40\40\40\40\40\40\x20\x20\42\166\141\162\x22\x3a\40\x7b\12\40\40\40\40\x20\40\40\x20\40\40\40\40\x20\40\40\40\40\x20\x20\x20\x22\x6e\x6f\144\145\124\171\160\x65\42\x3a\40\42\105\170\160\162\x5f\126\x61\x72\x69\x61\x62\154\x65\x22\54\xa\40\x20\x20\x20\40\40\x20\40\x20\40\x20\40\x20\40\40\x20\40\40\x20\x20\x22\x6e\x61\155\x65\42\x3a\40\x22\142\42\54\xa\40\40\x20\x20\40\x20\40\x20\x20\x20\x20\x20\40\x20\40\40\x20\40\x20\x20\42\x61\x74\x74\162\x69\142\x75\x74\145\163\42\72\x20\x7b\12\x20\40\40\x20\x20\40\40\40\x20\x20\x20\40\40\40\40\40\x20\40\40\x20\x20\40\40\x20\x22\163\164\141\162\164\x4c\x69\x6e\x65\42\72\x20\64\54\xa\x20\40\40\40\40\40\x20\x20\x20\40\40\40\x20\x20\x20\40\x20\40\x20\40\x20\40\40\x20\x22\163\164\x61\x72\164\124\x6f\x6b\x65\156\x50\x6f\163\x22\x3a\x20\61\67\x2c\12\40\x20\40\40\x20\x20\40\x20\40\40\x20\40\x20\40\x20\40\40\40\40\x20\40\40\40\x20\42\163\164\141\x72\164\x46\x69\154\145\x50\157\x73\42\72\x20\x36\67\x2c\12\40\x20\x20\40\40\x20\40\x20\40\40\x20\40\40\40\40\x20\x20\x20\x20\40\40\x20\40\40\42\x65\156\144\114\151\x6e\145\x22\72\40\64\54\12\40\x20\40\40\40\40\x20\40\40\x20\x20\40\40\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\x22\145\156\144\124\157\x6b\145\x6e\120\157\163\42\72\x20\x31\67\54\12\x20\40\40\40\x20\x20\40\40\x20\x20\40\x20\40\40\x20\x20\40\40\x20\40\x20\x20\40\40\x22\145\x6e\144\x46\151\x6c\145\120\157\163\42\72\40\x36\70\xa\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\x20\x20\x20\40\40\x20\x20\x20\175\xa\40\40\40\x20\40\x20\40\x20\x20\40\x20\x20\40\x20\40\x20\175\x2c\12\x20\40\x20\x20\x20\40\40\40\x20\x20\40\40\x20\40\40\x20\x22\144\x65\146\x61\165\154\x74\x22\72\x20\x7b\xa\40\x20\40\40\40\x20\40\x20\x20\x20\x20\40\40\x20\40\x20\40\40\40\x20\x22\x6e\x6f\144\145\x54\171\x70\x65\42\72\x20\42\123\143\141\154\141\162\137\x46\154\x6f\141\x74\x22\54\12\40\40\40\40\x20\40\40\x20\40\40\40\x20\40\x20\40\40\40\40\x20\40\x22\x76\141\154\165\145\x22\x3a\x20\61\x2c\12\x20\40\x20\x20\x20\40\40\40\x20\x20\x20\40\40\x20\x20\40\40\40\40\40\x22\x61\x74\164\x72\151\142\165\164\145\163\x22\72\x20\x7b\xa\40\x20\40\x20\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\40\x20\x20\x20\40\40\x20\40\40\42\x73\164\141\x72\164\114\x69\156\145\42\72\x20\64\x2c\xa\x20\40\x20\40\x20\40\40\x20\x20\40\40\x20\x20\40\40\40\x20\x20\x20\x20\40\40\x20\x20\x22\163\164\x61\162\164\x54\157\x6b\145\x6e\x50\157\x73\x22\x3a\x20\x32\x31\54\12\40\x20\x20\x20\40\40\40\x20\x20\40\x20\x20\40\x20\40\40\40\40\40\40\x20\x20\40\x20\x22\x73\164\x61\x72\x74\x46\151\x6c\x65\120\x6f\x73\42\x3a\40\x37\62\x2c\12\x20\40\x20\40\x20\x20\40\40\x20\x20\40\x20\40\x20\40\40\x20\40\x20\40\40\x20\x20\x20\x22\145\156\x64\114\x69\156\145\42\x3a\40\x34\54\xa\40\x20\x20\x20\40\40\x20\40\x20\x20\40\40\40\40\40\x20\40\40\40\x20\x20\40\x20\x20\42\x65\156\144\x54\x6f\153\145\x6e\120\x6f\x73\x22\x3a\x20\62\x31\54\xa\40\40\40\40\x20\40\x20\x20\40\40\40\40\40\40\x20\40\x20\40\40\x20\40\x20\x20\x20\42\145\156\144\106\151\154\x65\x50\x6f\163\42\x3a\x20\x37\64\54\xa\x20\x20\x20\40\40\x20\x20\40\40\40\40\40\40\40\x20\x20\x20\40\40\40\x20\x20\40\40\x22\x72\x61\x77\126\x61\154\x75\x65\x22\72\40\x22\x31\56\60\42\xa\x20\40\40\40\x20\x20\40\x20\40\x20\x20\40\40\x20\40\x20\40\x20\40\x20\175\12\x20\40\x20\40\x20\x20\40\40\x20\40\x20\x20\x20\40\x20\x20\x7d\54\xa\x20\x20\x20\x20\x20\x20\40\x20\40\40\x20\40\x20\x20\40\40\42\146\154\141\147\163\x22\x3a\x20\60\x2c\12\40\x20\x20\40\40\40\40\40\x20\40\40\40\x20\40\40\40\42\141\x74\164\x72\x47\162\157\165\160\163\x22\72\40\x5b\x5d\54\xa\40\40\x20\40\x20\x20\x20\x20\x20\x20\40\x20\x20\40\40\x20\42\x61\164\x74\162\151\x62\165\164\x65\163\x22\72\40\173\xa\40\x20\40\40\x20\x20\x20\40\40\40\x20\x20\x20\x20\40\x20\40\40\x20\x20\42\x73\164\141\x72\x74\x4c\x69\156\145\x22\x3a\x20\64\x2c\xa\40\40\40\x20\40\40\x20\x20\x20\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\42\163\x74\x61\x72\x74\x54\157\153\x65\x6e\x50\x6f\x73\x22\72\x20\x31\x37\x2c\xa\40\40\40\x20\x20\40\x20\40\x20\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\42\163\x74\141\162\164\106\151\154\145\120\157\x73\42\72\x20\x36\67\x2c\xa\40\40\40\40\x20\40\40\40\x20\40\x20\x20\40\40\x20\40\x20\40\x20\40\42\145\156\144\114\151\156\x65\42\x3a\x20\64\54\12\40\40\40\x20\40\x20\x20\x20\40\40\x20\x20\40\x20\x20\40\40\40\40\x20\42\x65\x6e\x64\x54\x6f\153\145\156\120\x6f\x73\42\x3a\40\x32\61\54\12\40\x20\x20\x20\40\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\40\x20\40\40\40\x22\x65\x6e\x64\x46\151\x6c\145\120\157\x73\x22\x3a\x20\x37\64\xa\x20\x20\x20\40\40\x20\40\x20\x20\40\x20\x20\40\40\x20\x20\x7d\xa\40\40\40\x20\x20\40\x20\40\40\x20\40\x20\175\12\40\40\x20\x20\x20\x20\40\x20\x5d\x2c\12\40\x20\x20\x20\x20\x20\40\x20\42\x72\x65\x74\x75\162\156\124\x79\x70\145\42\x3a\x20\x6e\165\x6c\154\x2c\12\x20\40\40\40\40\40\40\x20\42\163\x74\155\x74\163\x22\x3a\x20\133\xa\40\40\x20\x20\40\40\x20\40\40\40\40\40\x7b\12\x20\40\x20\x20\x20\40\40\x20\40\x20\40\40\x20\40\x20\x20\42\156\x6f\144\145\124\171\x70\x65\x22\72\40\x22\123\x74\x6d\x74\137\105\143\150\x6f\x22\54\xa\x20\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\40\x20\40\40\x22\145\x78\160\162\163\42\72\40\x5b\xa\40\40\x20\40\x20\40\40\40\40\x20\40\40\40\40\x20\x20\40\x20\40\x20\x7b\12\40\x20\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\x22\x6e\x6f\x64\x65\124\171\160\145\42\72\40\x22\123\x63\x61\154\x61\x72\x5f\123\164\x72\x69\x6e\x67\x22\x2c\12\x20\x20\40\x20\x20\40\40\40\40\40\40\40\40\40\40\x20\40\x20\40\40\40\x20\40\x20\x22\166\x61\x6c\x75\x65\x22\x3a\x20\x22\106\157\x6f\42\x2c\12\x20\x20\40\40\40\x20\40\x20\x20\x20\40\x20\40\40\x20\40\40\x20\x20\40\40\40\40\40\x22\141\x74\164\x72\x69\142\x75\164\145\x73\42\x3a\x20\173\xa\x20\40\x20\40\x20\40\40\x20\x20\40\40\x20\x20\40\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\40\x20\40\42\x73\x74\x61\x72\x74\114\x69\x6e\145\42\72\40\65\54\12\x20\40\x20\40\40\x20\x20\40\40\40\x20\x20\x20\40\40\x20\40\40\40\40\x20\x20\40\40\40\x20\40\x20\42\163\x74\141\x72\164\124\x6f\x6b\x65\x6e\120\157\163\42\x3a\40\62\70\54\12\40\x20\40\x20\x20\40\40\x20\x20\40\40\40\40\x20\40\40\x20\x20\x20\40\x20\x20\x20\x20\40\40\40\x20\42\x73\x74\x61\162\x74\106\151\154\145\120\157\163\x22\x3a\x20\x38\x38\x2c\12\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\x20\x20\x20\40\40\40\x20\x20\40\40\x20\40\40\40\x20\40\42\x65\156\144\114\151\x6e\x65\42\x3a\x20\65\x2c\xa\40\40\40\x20\x20\x20\x20\40\x20\x20\40\40\x20\40\40\40\x20\x20\x20\x20\x20\x20\40\40\40\40\x20\40\x22\x65\x6e\x64\124\157\153\145\156\x50\157\163\42\72\x20\62\x38\x2c\xa\40\x20\x20\40\x20\x20\x20\40\x20\40\x20\40\x20\40\40\x20\x20\40\40\40\x20\40\40\40\x20\x20\x20\x20\x22\145\156\x64\x46\x69\x6c\x65\x50\x6f\x73\42\x3a\40\71\62\54\xa\40\x20\x20\40\40\x20\40\x20\40\40\x20\x20\40\x20\40\40\x20\x20\40\40\x20\40\x20\x20\40\40\40\x20\x22\153\151\156\x64\x22\x3a\40\x31\54\12\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\40\x20\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\40\x20\40\42\x72\141\x77\126\141\x6c\x75\x65\42\72\40\x22\x27\x46\x6f\x6f\47\42\12\40\x20\x20\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\x20\x20\x20\x20\40\40\x20\x20\40\175\xa\40\40\x20\40\40\40\40\40\x20\40\40\40\40\40\x20\40\x20\40\x20\x20\175\12\40\x20\40\40\40\40\x20\40\x20\x20\40\x20\40\x20\40\x20\135\54\xa\40\40\40\40\x20\40\40\x20\40\40\40\40\40\x20\40\x20\42\141\x74\x74\162\x69\142\x75\x74\145\163\x22\72\40\173\xa\x20\40\40\x20\x20\40\x20\x20\x20\x20\40\40\40\40\40\x20\40\x20\40\x20\42\163\x74\141\162\x74\114\151\156\x65\x22\72\x20\65\x2c\xa\40\40\40\x20\40\40\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\40\42\163\164\x61\x72\164\124\x6f\153\145\x6e\120\x6f\x73\x22\72\x20\x32\x36\54\xa\40\x20\x20\40\40\40\40\x20\x20\40\40\40\40\x20\40\x20\x20\x20\x20\40\x22\x73\x74\141\162\x74\x46\151\x6c\x65\x50\157\x73\x22\x3a\40\70\x33\x2c\12\40\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\40\x20\x20\40\x20\40\40\x20\x22\x65\156\144\x4c\151\156\x65\42\x3a\40\65\54\12\x20\x20\x20\40\40\40\x20\x20\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\40\x22\145\156\x64\x54\x6f\x6b\x65\156\120\157\x73\42\72\40\62\x39\54\xa\x20\40\x20\40\x20\x20\40\x20\x20\40\40\40\40\40\x20\40\40\40\x20\x20\x22\145\x6e\x64\x46\151\154\x65\x50\157\x73\x22\x3a\40\71\x33\xa\40\40\x20\x20\40\40\x20\x20\x20\x20\x20\x20\40\40\40\40\175\xa\x20\x20\40\x20\40\x20\x20\x20\40\x20\x20\40\175\12\x20\40\x20\40\x20\x20\x20\x20\135\x2c\xa\x20\40\x20\x20\40\x20\40\40\x22\x61\x74\x74\x72\107\x72\x6f\x75\x70\163\42\x3a\x20\x5b\x5d\x2c\xa\x20\40\x20\40\x20\x20\x20\x20\x22\x61\164\x74\x72\151\142\x75\x74\x65\163\x22\x3a\x20\173\12\x20\40\x20\x20\40\x20\40\x20\40\40\40\x20\x22\x73\x74\x61\x72\164\x4c\x69\156\x65\42\x3a\40\x34\54\12\40\x20\x20\40\x20\40\40\x20\40\40\x20\x20\42\x73\164\x61\162\x74\x54\x6f\153\x65\x6e\120\157\x73\x22\x3a\x20\x35\54\12\40\40\x20\40\40\x20\40\40\x20\40\x20\40\42\x73\164\141\x72\x74\106\151\154\145\120\x6f\163\42\x3a\x20\63\66\54\12\40\x20\x20\40\x20\x20\40\x20\40\40\x20\x20\x22\x65\x6e\x64\x4c\x69\156\x65\42\72\40\x36\54\12\40\40\40\x20\40\x20\40\40\40\40\x20\x20\42\x65\156\x64\124\x6f\153\x65\x6e\120\157\x73\42\72\x20\x33\61\x2c\12\x20\40\40\x20\40\40\x20\x20\40\x20\x20\x20\x22\145\x6e\x64\106\151\x6c\x65\x50\157\163\42\72\40\x39\65\54\xa\x20\40\40\x20\40\40\40\40\x20\x20\40\x20\42\143\157\155\155\x65\x6e\x74\163\x22\72\x20\133\12\x20\x20\x20\x20\40\x20\40\x20\x20\x20\40\x20\40\x20\40\40\x7b\xa\x20\40\40\40\x20\40\40\40\40\x20\40\x20\40\x20\x20\40\40\x20\x20\40\42\156\157\x64\145\x54\171\160\x65\42\72\x20\x22\x43\x6f\x6d\155\x65\156\164\x22\x2c\12\x20\x20\40\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\40\40\x20\40\42\164\145\x78\x74\42\72\40\42\x5c\x2f\134\57\40\143\x6f\x6d\x6d\x65\156\x74\x22\54\xa\x20\x20\40\40\40\x20\40\40\40\x20\40\x20\x20\40\40\40\x20\x20\40\40\x22\154\x69\x6e\145\42\x3a\x20\x32\x2c\12\x20\40\x20\x20\40\x20\x20\40\x20\40\40\40\x20\40\x20\40\x20\x20\x20\x20\42\x66\151\154\145\120\157\163\42\x3a\40\66\54\12\x20\x20\x20\x20\x20\40\40\40\x20\x20\40\40\x20\40\40\40\40\40\x20\x20\x22\x74\x6f\153\145\156\120\157\163\42\72\40\x31\x2c\12\x20\40\40\40\40\40\x20\x20\x20\x20\40\40\x20\40\40\40\x20\x20\x20\40\x22\145\x6e\144\x4c\151\x6e\145\42\x3a\x20\62\x2c\12\40\40\x20\x20\40\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\x20\x20\x20\40\42\x65\156\x64\x46\151\154\145\120\x6f\x73\42\x3a\x20\61\65\54\xa\40\x20\x20\x20\x20\40\x20\40\x20\x20\40\40\x20\40\x20\x20\40\x20\x20\x20\x22\145\156\144\x54\x6f\153\x65\x6e\x50\157\x73\42\72\x20\x31\12\x20\40\40\40\x20\40\40\x20\x20\x20\40\x20\x20\40\40\x20\x7d\x2c\12\40\x20\40\x20\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\x7b\xa\x20\40\x20\40\40\40\x20\x20\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x22\156\157\x64\x65\124\x79\x70\x65\42\x3a\x20\42\x43\157\x6d\x6d\x65\x6e\x74\x5f\104\x6f\143\x22\54\xa\x20\40\40\40\x20\x20\x20\x20\40\x20\x20\40\40\40\40\40\40\x20\40\x20\42\x74\x65\x78\164\42\72\40\42\134\x2f\x2a\x2a\40\x64\157\143\40\143\157\155\x6d\x65\x6e\x74\x20\x2a\x5c\57\42\x2c\xa\40\40\40\x20\40\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\40\40\x20\x22\x6c\x69\156\x65\42\x3a\40\63\x2c\xa\x20\40\x20\x20\40\x20\x20\x20\x20\40\x20\40\x20\40\x20\40\40\x20\x20\x20\42\x66\x69\x6c\x65\120\x6f\163\x22\x3a\x20\x31\67\54\xa\x20\x20\x20\x20\40\40\40\x20\40\40\40\x20\40\40\40\x20\40\x20\40\x20\x22\164\157\153\x65\x6e\120\157\163\42\x3a\x20\63\x2c\12\x20\40\x20\40\x20\x20\x20\40\x20\x20\x20\x20\x20\40\40\40\40\x20\40\40\x22\x65\x6e\144\x4c\151\156\145\42\72\40\63\x2c\12\x20\x20\x20\x20\x20\x20\40\x20\40\40\40\40\x20\x20\40\x20\x20\40\40\40\42\145\x6e\x64\x46\151\154\x65\120\157\163\42\x3a\40\63\x34\x2c\12\40\40\40\x20\x20\x20\40\x20\x20\x20\40\40\x20\x20\40\40\40\x20\x20\x20\x22\x65\x6e\144\x54\157\x6b\x65\156\x50\x6f\x73\x22\72\40\x33\12\40\40\40\x20\40\40\x20\x20\x20\40\40\40\x20\40\40\x20\x7d\12\x20\40\x20\x20\40\40\40\x20\x20\x20\40\x20\x5d\12\x20\x20\40\x20\x20\x20\40\40\x7d\xa\x20\40\x20\x20\x7d\12\x5d"; $expected81 = "\x5b\12\x20\40\40\40\x7b\xa\x20\x20\x20\40\x20\40\40\x20\42\156\157\x64\145\124\171\x70\x65\42\72\x20\x22\123\x74\155\164\x5f\x46\x75\x6e\143\164\x69\157\x6e\42\54\12\40\x20\40\40\40\40\40\40\42\x61\x74\x74\162\151\x62\165\164\145\163\42\72\40\x7b\xa\40\40\x20\40\x20\40\x20\40\40\x20\x20\40\x22\163\x74\x61\x72\x74\114\151\156\145\x22\x3a\40\64\54\xa\40\40\x20\x20\40\x20\x20\40\40\x20\40\40\x22\163\164\141\x72\164\124\157\153\x65\x6e\120\157\163\x22\x3a\x20\65\x2c\12\40\x20\40\x20\40\40\40\40\x20\40\x20\40\42\163\164\141\162\164\x46\151\x6c\145\120\157\163\x22\72\40\x33\66\54\xa\40\x20\40\40\x20\x20\x20\x20\40\40\x20\40\42\145\x6e\x64\114\151\156\145\x22\x3a\x20\66\x2c\12\x20\x20\x20\x20\x20\x20\40\x20\x20\40\40\x20\x22\145\156\x64\x54\x6f\x6b\145\x6e\x50\157\x73\x22\x3a\40\63\x31\54\xa\40\40\40\x20\x20\40\40\x20\x20\x20\40\x20\42\145\x6e\x64\x46\x69\x6c\145\120\157\163\42\72\x20\71\x35\x2c\xa\40\x20\40\40\40\x20\x20\x20\x20\40\x20\x20\x22\143\x6f\x6d\x6d\145\156\164\x73\x22\72\40\x5b\xa\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\40\40\40\x20\x7b\xa\x20\40\40\x20\x20\40\x20\40\40\x20\40\40\40\40\40\40\40\x20\40\40\42\156\x6f\144\145\124\x79\x70\x65\x22\72\x20\x22\x43\x6f\x6d\x6d\x65\x6e\x74\42\54\12\40\x20\x20\40\x20\x20\40\40\40\40\40\x20\40\x20\x20\40\x20\40\x20\40\x22\x74\145\170\164\42\x3a\x20\42\x5c\x2f\134\x2f\40\x63\x6f\155\155\x65\156\x74\42\x2c\12\40\40\x20\40\x20\x20\40\40\40\40\40\x20\x20\x20\x20\40\x20\40\40\x20\42\x6c\151\x6e\x65\42\72\x20\62\54\xa\40\x20\40\x20\x20\x20\x20\40\40\40\x20\x20\40\40\40\x20\x20\x20\x20\x20\x22\146\x69\154\x65\x50\157\x73\42\x3a\x20\66\x2c\12\x20\x20\40\40\40\40\40\x20\40\40\x20\40\x20\x20\40\40\x20\40\40\x20\42\164\157\x6b\x65\x6e\120\157\163\42\72\x20\x31\x2c\xa\40\x20\x20\x20\x20\x20\40\x20\40\40\40\x20\x20\x20\x20\40\x20\x20\x20\x20\x22\x65\x6e\x64\114\x69\x6e\x65\42\72\x20\x32\x2c\12\x20\x20\40\40\x20\x20\x20\40\x20\40\40\x20\x20\x20\40\x20\40\40\x20\40\42\x65\156\x64\x46\x69\x6c\145\x50\x6f\x73\x22\72\x20\x31\x35\x2c\12\40\x20\x20\40\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\x22\x65\156\144\124\157\x6b\x65\x6e\x50\157\x73\x22\x3a\x20\x31\12\40\40\x20\x20\x20\40\40\40\x20\x20\40\40\40\x20\x20\40\175\x2c\12\x20\40\x20\x20\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\x20\173\xa\40\40\40\x20\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\40\40\40\40\40\x22\x6e\x6f\x64\x65\x54\171\x70\x65\x22\x3a\40\42\103\157\x6d\155\x65\156\164\x5f\x44\x6f\143\x22\x2c\xa\x20\40\40\x20\40\40\40\40\x20\x20\x20\x20\40\40\40\40\40\x20\40\40\42\164\x65\170\164\x22\72\40\42\134\57\x2a\x2a\40\x64\x6f\x63\40\x63\x6f\155\x6d\x65\156\164\40\52\x5c\57\x22\x2c\12\40\x20\40\x20\40\40\40\x20\x20\x20\x20\40\40\x20\x20\40\x20\x20\x20\x20\42\x6c\151\x6e\145\42\x3a\40\x33\x2c\12\40\x20\x20\x20\x20\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\x20\40\40\40\x22\x66\151\x6c\145\x50\157\x73\42\x3a\x20\x31\67\54\xa\40\40\40\40\40\40\x20\x20\40\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\x22\164\157\x6b\x65\156\120\157\x73\42\x3a\40\63\x2c\12\x20\x20\x20\40\40\40\40\x20\x20\40\x20\x20\x20\40\x20\x20\x20\x20\40\40\42\x65\156\x64\114\x69\156\145\x22\x3a\40\x33\54\xa\40\40\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\40\40\x20\x20\40\x20\x20\x20\x22\x65\156\x64\106\151\154\145\x50\x6f\x73\42\72\40\x33\64\x2c\12\x20\40\x20\40\x20\40\40\x20\x20\40\x20\40\40\x20\40\x20\40\x20\40\40\x22\145\x6e\144\124\157\x6b\x65\x6e\120\x6f\x73\x22\x3a\40\63\12\40\x20\x20\x20\x20\x20\40\x20\40\40\40\x20\x20\40\40\40\175\xa\40\40\x20\40\x20\x20\40\40\40\x20\x20\40\x5d\xa\40\40\x20\x20\40\x20\40\x20\x7d\x2c\xa\40\40\x20\x20\40\x20\x20\x20\42\x62\171\x52\x65\146\42\x3a\40\146\x61\x6c\163\x65\x2c\12\40\x20\x20\40\40\40\40\40\42\156\141\x6d\145\x22\72\x20\x7b\12\40\40\x20\x20\x20\x20\40\x20\x20\40\x20\40\x22\156\x6f\x64\x65\x54\x79\x70\x65\42\x3a\x20\42\x49\x64\x65\x6e\164\151\146\151\x65\x72\x22\54\xa\40\40\40\x20\x20\x20\40\40\40\40\x20\x20\42\x61\164\164\162\151\x62\x75\x74\x65\163\42\x3a\40\x7b\12\40\40\40\40\x20\x20\40\x20\x20\40\x20\40\x20\x20\40\40\42\163\164\x61\162\x74\x4c\x69\x6e\x65\42\72\x20\x34\54\xa\40\x20\40\40\40\40\40\40\40\x20\40\40\x20\40\x20\40\x22\x73\x74\141\x72\x74\124\x6f\153\145\x6e\120\x6f\x73\x22\x3a\x20\67\x2c\12\40\40\40\x20\40\x20\40\x20\40\40\x20\40\x20\x20\40\40\x22\163\x74\141\x72\164\x46\x69\154\145\120\x6f\163\42\72\40\64\65\x2c\xa\x20\40\x20\x20\x20\40\40\x20\40\x20\x20\x20\x20\40\x20\40\42\x65\x6e\x64\114\151\156\x65\x22\x3a\40\x34\54\xa\40\40\40\x20\x20\x20\40\40\x20\40\40\40\x20\x20\x20\x20\x22\x65\156\144\x54\x6f\x6b\145\156\120\x6f\x73\42\x3a\x20\x37\54\xa\40\40\40\40\x20\x20\40\x20\x20\40\x20\40\40\x20\x20\x20\42\x65\x6e\144\x46\151\x6c\145\120\157\163\42\x3a\x20\65\66\xa\40\x20\40\x20\40\40\x20\40\x20\x20\40\40\175\54\xa\40\x20\x20\40\x20\x20\x20\x20\40\x20\40\x20\x22\x6e\x61\x6d\145\42\72\40\42\146\x75\156\143\x74\151\x6f\x6e\116\141\155\x65\x22\12\x20\x20\x20\x20\x20\x20\x20\40\x7d\x2c\xa\40\x20\40\x20\40\40\40\40\x22\x70\141\162\x61\155\163\x22\72\40\x5b\xa\40\x20\40\x20\x20\40\40\40\x20\40\x20\x20\173\xa\x20\40\40\40\x20\40\40\40\x20\40\x20\40\x20\x20\40\x20\x22\156\157\144\x65\x54\x79\x70\145\42\x3a\x20\x22\x50\x61\162\141\155\x22\54\xa\40\x20\40\40\x20\x20\40\x20\x20\x20\x20\x20\x20\40\40\x20\42\141\164\x74\x72\151\142\x75\164\145\x73\x22\72\40\x7b\12\x20\40\40\40\40\x20\x20\40\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\40\x22\163\164\x61\x72\x74\x4c\151\156\x65\x22\x3a\x20\x34\54\12\40\x20\40\x20\x20\x20\40\x20\x20\40\x20\x20\40\40\x20\40\x20\x20\40\x20\42\163\164\x61\162\x74\x54\157\x6b\145\x6e\120\157\163\x22\x3a\40\71\54\xa\40\40\40\40\x20\x20\x20\40\40\40\x20\40\40\40\40\40\40\x20\40\40\42\163\x74\141\162\164\106\x69\x6c\145\120\x6f\163\42\72\x20\x35\70\x2c\12\40\x20\40\40\x20\x20\x20\40\x20\40\x20\x20\40\x20\40\x20\x20\40\x20\40\42\145\x6e\x64\x4c\x69\x6e\145\42\x3a\x20\x34\54\xa\x20\x20\40\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\40\40\40\40\x20\40\40\x22\145\x6e\x64\x54\157\x6b\x65\x6e\x50\x6f\x73\42\72\x20\61\x34\54\12\x20\40\40\40\40\x20\40\x20\40\40\x20\40\x20\40\40\x20\x20\x20\40\40\x22\x65\156\144\106\151\x6c\145\120\x6f\163\x22\72\40\66\x34\xa\x20\40\40\40\x20\x20\x20\40\40\x20\x20\x20\x20\x20\x20\40\175\x2c\12\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\40\x20\x20\40\40\42\x74\x79\160\145\42\x3a\x20\156\x75\x6c\154\x2c\12\40\x20\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\40\x20\x20\42\142\171\x52\145\x66\x22\x3a\40\164\162\x75\145\x2c\12\40\x20\40\40\x20\x20\40\x20\x20\40\x20\x20\40\40\40\40\42\166\141\x72\x69\x61\x64\x69\143\42\x3a\40\x66\x61\x6c\x73\145\54\12\x20\40\40\x20\40\40\x20\40\x20\x20\x20\x20\x20\x20\x20\40\42\x76\141\162\x22\72\x20\x7b\xa\x20\x20\x20\40\40\x20\x20\40\40\x20\40\40\x20\40\40\x20\40\x20\40\x20\x22\156\157\x64\x65\124\171\160\145\x22\x3a\x20\x22\x45\170\160\162\137\126\x61\x72\151\141\x62\x6c\145\42\54\xa\40\40\x20\x20\x20\40\40\x20\40\40\40\x20\x20\40\40\40\x20\x20\40\x20\x22\x61\164\x74\x72\151\x62\x75\164\x65\163\x22\x3a\x20\x7b\12\x20\x20\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\40\40\40\x20\40\40\40\x22\163\x74\x61\162\x74\114\151\156\145\x22\72\x20\x34\x2c\xa\40\40\x20\x20\40\40\40\x20\x20\x20\40\40\40\40\40\x20\x20\40\40\x20\40\40\40\x20\x22\163\x74\x61\x72\164\x54\x6f\153\145\x6e\120\157\x73\x22\72\x20\61\60\54\12\40\40\40\40\40\x20\x20\40\40\x20\40\40\40\x20\40\40\x20\x20\40\40\x20\x20\40\40\42\163\x74\x61\x72\x74\x46\151\x6c\145\x50\157\163\42\x3a\40\x35\x39\54\12\x20\x20\40\x20\x20\x20\40\40\40\40\40\x20\x20\x20\40\x20\x20\40\x20\x20\40\x20\40\40\x22\145\x6e\x64\x4c\x69\156\x65\42\x3a\x20\x34\x2c\12\40\40\40\x20\x20\x20\40\40\x20\40\x20\x20\x20\40\x20\40\x20\x20\x20\40\x20\40\40\40\42\145\156\x64\x54\157\x6b\x65\156\x50\x6f\x73\42\x3a\40\x31\60\54\12\40\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\40\x20\x20\40\40\x20\40\40\x20\x22\x65\156\x64\106\151\154\x65\120\x6f\163\42\72\40\x36\x30\xa\x20\40\40\40\x20\x20\x20\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\40\x20\x7d\x2c\12\40\40\x20\40\x20\x20\x20\40\40\40\x20\x20\40\x20\40\x20\x20\x20\40\x20\x22\x6e\x61\155\145\x22\x3a\40\x22\x61\x22\xa\x20\40\40\40\x20\40\x20\x20\40\40\40\x20\x20\40\40\40\175\x2c\12\x20\x20\x20\x20\x20\40\x20\40\40\40\40\x20\x20\40\40\40\x22\144\145\146\141\165\154\x74\x22\x3a\40\173\xa\40\40\40\x20\40\40\x20\x20\40\40\40\x20\x20\40\x20\x20\x20\40\x20\x20\x22\x6e\x6f\144\x65\x54\171\160\x65\x22\x3a\x20\42\123\x63\x61\x6c\141\162\137\111\x6e\x74\42\x2c\12\x20\x20\x20\40\x20\x20\x20\x20\40\40\x20\x20\40\40\x20\x20\40\x20\x20\40\42\x61\x74\x74\x72\x69\142\165\x74\x65\x73\x22\72\x20\173\xa\40\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\40\40\x20\x20\40\40\x20\x20\40\42\163\164\141\162\164\x4c\x69\156\x65\x22\x3a\x20\64\54\xa\x20\40\40\x20\40\x20\40\x20\40\x20\x20\40\40\40\40\x20\x20\40\40\x20\x20\x20\40\x20\x22\x73\x74\141\162\164\x54\x6f\153\145\156\120\x6f\x73\42\x3a\40\x31\x34\x2c\xa\x20\x20\40\x20\x20\x20\x20\x20\x20\40\40\40\40\40\x20\x20\x20\40\x20\40\40\x20\x20\40\42\x73\164\x61\x72\164\x46\151\154\x65\x50\157\163\42\x3a\40\x36\x34\54\xa\40\x20\x20\40\40\x20\40\x20\x20\40\40\x20\x20\40\x20\40\40\40\x20\x20\40\40\40\40\x22\x65\x6e\x64\114\x69\156\145\42\x3a\x20\64\x2c\xa\x20\x20\x20\40\x20\x20\40\x20\x20\40\40\x20\40\x20\x20\40\40\40\40\x20\40\x20\40\40\x22\x65\x6e\144\124\x6f\x6b\145\156\x50\x6f\x73\42\72\x20\61\x34\54\xa\40\40\40\40\40\40\x20\x20\x20\x20\x20\x20\40\40\x20\40\40\x20\40\x20\40\40\x20\40\x22\x65\156\144\106\151\x6c\145\x50\157\163\x22\x3a\x20\66\x34\x2c\xa\40\40\x20\40\40\x20\x20\x20\x20\40\40\x20\40\x20\40\x20\40\x20\40\40\x20\40\40\x20\42\162\141\167\126\141\154\165\145\x22\x3a\x20\42\x30\x22\x2c\xa\40\40\x20\x20\x20\x20\40\x20\x20\40\40\40\x20\x20\40\x20\40\40\x20\40\x20\40\40\x20\42\x6b\x69\x6e\x64\42\x3a\40\61\x30\12\40\x20\40\x20\40\x20\40\x20\x20\40\40\40\x20\40\40\x20\40\40\x20\x20\175\54\12\40\40\x20\40\x20\x20\40\40\40\x20\40\x20\x20\x20\40\40\x20\x20\40\x20\42\x76\x61\154\x75\x65\42\x3a\40\x30\12\x20\x20\40\40\40\x20\x20\40\x20\40\x20\40\40\40\40\40\175\x2c\12\40\x20\x20\x20\x20\40\x20\40\40\x20\40\40\x20\x20\40\40\x22\146\154\141\147\x73\x22\x3a\40\x30\54\xa\x20\40\40\x20\40\x20\40\x20\x20\x20\40\40\x20\40\40\x20\x22\141\x74\x74\162\107\x72\157\165\x70\x73\x22\72\x20\x5b\x5d\xa\40\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x7d\54\xa\40\x20\x20\x20\x20\x20\40\40\x20\x20\40\x20\173\12\x20\x20\40\40\x20\x20\40\40\40\x20\x20\x20\40\x20\40\40\42\156\x6f\x64\x65\x54\171\x70\x65\x22\72\40\x22\120\x61\x72\x61\155\42\x2c\12\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\x20\40\40\40\42\x61\164\164\x72\151\x62\165\164\x65\163\x22\x3a\x20\173\12\x20\40\40\x20\x20\x20\40\x20\40\40\40\x20\40\x20\40\40\x20\x20\x20\40\42\x73\164\141\162\x74\114\151\x6e\145\42\x3a\x20\x34\54\xa\40\x20\40\40\x20\x20\x20\x20\40\40\40\40\x20\x20\x20\x20\40\x20\40\40\x22\163\164\x61\162\x74\x54\157\153\x65\x6e\x50\157\x73\x22\72\x20\61\67\x2c\12\x20\x20\x20\40\40\x20\40\40\40\40\x20\40\x20\40\x20\40\x20\40\40\40\x22\x73\x74\x61\162\x74\106\151\154\145\x50\157\163\42\72\40\66\x37\x2c\xa\x20\40\x20\40\40\x20\x20\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\x20\x22\x65\x6e\144\x4c\151\156\x65\42\72\x20\x34\54\12\40\40\x20\x20\40\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\40\40\40\x20\42\x65\156\x64\124\157\153\x65\x6e\x50\157\163\x22\x3a\x20\62\61\54\xa\40\x20\x20\40\40\40\40\x20\40\x20\40\40\40\x20\x20\x20\40\40\40\x20\x22\x65\x6e\144\x46\x69\154\145\120\x6f\x73\42\72\40\x37\64\xa\40\x20\40\40\40\x20\40\x20\40\40\40\x20\40\40\x20\40\175\x2c\xa\40\x20\40\x20\40\40\x20\x20\x20\x20\40\40\40\x20\40\40\42\164\x79\160\x65\42\x3a\40\x6e\165\x6c\154\54\12\40\x20\x20\40\x20\40\x20\x20\40\40\40\x20\40\40\x20\40\42\142\171\122\145\x66\x22\72\x20\146\x61\154\163\x65\54\xa\40\x20\40\x20\x20\x20\x20\40\x20\40\40\40\40\40\x20\40\42\x76\x61\x72\x69\141\x64\151\143\x22\72\x20\146\141\154\x73\145\x2c\12\x20\40\x20\x20\40\x20\x20\x20\40\40\x20\40\x20\40\40\x20\x22\x76\x61\x72\42\72\x20\173\xa\40\40\x20\40\x20\x20\x20\x20\40\40\x20\40\40\x20\40\40\x20\x20\x20\40\42\156\157\x64\x65\124\171\x70\145\42\72\x20\42\x45\x78\160\162\x5f\x56\141\162\151\x61\x62\x6c\145\42\x2c\12\x20\40\40\40\40\x20\x20\x20\40\40\x20\40\40\x20\40\x20\x20\x20\40\x20\x22\141\164\x74\x72\151\142\x75\x74\x65\163\x22\x3a\40\173\xa\x20\x20\40\40\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\40\40\x20\40\x20\x20\x20\40\40\x20\x22\x73\x74\x61\x72\x74\114\x69\x6e\145\42\x3a\x20\64\54\xa\40\x20\x20\40\x20\x20\40\40\40\x20\40\40\40\40\x20\x20\x20\40\40\40\x20\40\x20\40\42\x73\164\141\162\164\124\x6f\153\145\156\120\157\163\42\x3a\40\61\x37\54\12\x20\40\x20\x20\x20\x20\40\x20\40\40\40\x20\40\x20\x20\x20\40\40\40\x20\40\40\x20\x20\42\x73\x74\x61\162\x74\x46\151\x6c\x65\x50\x6f\163\x22\72\x20\66\67\x2c\12\x20\40\40\x20\40\40\x20\x20\x20\40\x20\x20\40\x20\40\40\40\40\x20\x20\x20\40\x20\40\x22\145\x6e\x64\x4c\x69\156\x65\x22\72\x20\64\54\12\x20\40\40\40\40\x20\x20\x20\40\40\x20\x20\40\x20\40\40\x20\40\40\40\x20\x20\40\x20\x22\x65\x6e\x64\124\157\x6b\145\x6e\x50\157\163\42\72\40\61\67\54\xa\40\x20\x20\40\x20\x20\x20\x20\40\40\40\x20\x20\40\x20\40\40\40\40\40\40\40\40\x20\x22\x65\x6e\x64\106\151\154\145\120\157\x73\x22\x3a\40\x36\70\xa\40\x20\40\x20\40\40\40\40\x20\40\x20\40\x20\40\x20\40\40\40\x20\x20\175\x2c\12\40\40\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\40\x20\40\x20\x20\x20\x20\x22\156\x61\155\145\x22\72\x20\42\142\42\12\40\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\x20\x20\40\x20\175\x2c\xa\x20\x20\x20\40\x20\x20\40\40\x20\x20\40\40\x20\40\40\40\42\x64\x65\146\141\165\x6c\164\x22\72\40\x7b\12\40\40\40\40\x20\x20\x20\40\40\40\40\40\40\x20\x20\x20\40\x20\40\40\42\156\157\x64\145\124\x79\160\145\42\72\40\x22\123\143\x61\x6c\x61\x72\137\x46\154\x6f\141\164\x22\54\xa\40\x20\x20\x20\40\40\x20\40\40\40\x20\x20\x20\40\x20\40\x20\40\x20\x20\42\x61\164\x74\x72\151\x62\x75\x74\x65\x73\x22\x3a\40\173\xa\40\x20\40\x20\x20\x20\40\x20\40\40\x20\40\40\x20\x20\40\40\40\x20\x20\40\40\40\40\x22\x73\164\141\x72\x74\114\151\x6e\x65\42\x3a\x20\x34\x2c\12\x20\40\40\x20\x20\40\x20\40\40\x20\40\x20\40\x20\40\40\x20\40\x20\40\x20\x20\40\40\x22\163\164\x61\x72\164\124\157\153\x65\156\120\157\163\42\72\40\x32\x31\54\12\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\40\40\x20\x20\40\x20\40\40\x20\x22\x73\x74\x61\x72\x74\x46\151\154\145\x50\x6f\x73\x22\x3a\x20\67\x32\54\xa\40\40\40\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\x20\40\x20\40\x22\x65\156\x64\x4c\x69\156\x65\x22\x3a\x20\x34\x2c\xa\40\x20\40\x20\x20\x20\40\x20\x20\40\40\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\x20\x22\145\x6e\x64\124\157\153\x65\x6e\120\157\x73\x22\72\40\x32\61\54\12\40\40\40\x20\x20\40\40\40\40\40\x20\40\40\x20\40\40\x20\x20\x20\40\40\40\40\40\42\145\156\144\106\x69\154\145\x50\x6f\x73\42\x3a\x20\x37\64\x2c\xa\x20\x20\40\x20\40\40\x20\40\x20\x20\x20\40\40\40\40\40\40\40\x20\40\40\40\x20\x20\42\x72\x61\x77\126\141\x6c\x75\145\x22\72\x20\x22\x31\x2e\x30\x22\xa\x20\40\40\40\40\x20\x20\x20\x20\x20\40\40\x20\x20\x20\x20\40\40\x20\x20\175\x2c\xa\40\40\x20\x20\40\40\40\40\x20\x20\40\40\x20\40\x20\40\x20\x20\x20\40\x22\166\x61\154\165\145\42\72\x20\x31\xa\x20\x20\40\40\40\x20\40\40\x20\40\x20\x20\40\x20\40\40\175\54\xa\x20\x20\x20\40\x20\40\40\40\x20\x20\40\x20\40\x20\x20\x20\42\146\154\x61\x67\x73\42\72\40\x30\x2c\xa\x20\40\40\x20\x20\40\40\x20\x20\40\40\40\x20\40\x20\x20\42\141\x74\164\x72\107\162\x6f\x75\160\163\42\x3a\40\133\x5d\12\40\40\x20\40\40\40\40\x20\40\x20\40\40\175\xa\40\x20\40\x20\x20\x20\40\x20\135\54\12\40\x20\x20\40\40\x20\x20\x20\x22\162\x65\164\x75\x72\x6e\124\171\160\145\x22\72\40\x6e\165\x6c\154\x2c\xa\40\x20\x20\40\x20\40\x20\x20\x22\163\164\x6d\164\x73\x22\72\40\133\12\x20\x20\40\40\40\x20\x20\x20\x20\40\40\40\x7b\12\x20\40\40\40\x20\40\x20\40\x20\40\40\x20\40\40\x20\40\x22\x6e\157\144\x65\124\x79\160\x65\42\x3a\x20\x22\x53\164\x6d\164\137\105\143\x68\x6f\x22\x2c\xa\x20\40\40\x20\40\40\x20\40\x20\x20\x20\40\40\x20\40\40\42\x61\164\x74\162\151\x62\165\164\145\163\42\72\40\173\12\40\40\x20\x20\40\x20\40\40\40\40\x20\40\x20\x20\40\40\40\40\40\40\42\163\x74\141\x72\164\x4c\x69\156\145\x22\72\40\65\x2c\12\40\40\40\x20\x20\x20\40\40\40\x20\x20\x20\40\x20\x20\x20\40\40\x20\x20\x22\x73\x74\x61\162\164\124\157\153\145\156\120\x6f\163\x22\x3a\40\62\66\54\xa\40\40\40\40\40\40\x20\40\40\40\x20\x20\40\40\40\x20\40\40\x20\x20\42\x73\164\x61\x72\164\x46\151\x6c\x65\120\x6f\x73\42\72\x20\x38\63\x2c\xa\x20\40\40\40\40\x20\x20\x20\40\40\40\40\40\x20\40\40\40\x20\40\40\42\145\x6e\144\x4c\151\x6e\x65\42\72\40\x35\x2c\12\40\x20\40\40\x20\40\x20\40\40\x20\40\x20\x20\x20\40\x20\40\40\x20\x20\42\145\x6e\x64\x54\157\x6b\x65\156\x50\157\x73\42\x3a\x20\62\x39\54\xa\40\40\40\x20\40\40\40\40\40\x20\40\40\x20\40\x20\40\x20\40\40\x20\42\x65\156\144\106\x69\154\145\x50\157\163\42\x3a\40\71\x33\12\40\40\40\40\x20\40\x20\x20\40\x20\40\40\40\x20\x20\40\x7d\x2c\12\x20\x20\40\x20\x20\40\40\40\x20\40\x20\x20\40\x20\x20\40\42\x65\x78\160\x72\x73\42\x3a\40\133\12\x20\40\x20\x20\40\40\x20\40\x20\40\40\40\x20\40\40\40\40\x20\40\x20\x7b\xa\x20\40\40\x20\40\40\x20\40\40\40\x20\x20\40\40\40\x20\x20\40\x20\x20\40\x20\x20\x20\x22\x6e\157\x64\x65\x54\171\160\145\x22\72\40\x22\123\x63\141\x6c\x61\162\x5f\123\164\x72\x69\156\147\42\x2c\xa\x20\x20\x20\x20\40\40\x20\x20\40\40\40\x20\x20\40\x20\40\x20\x20\40\40\40\x20\40\40\42\x61\164\164\162\151\x62\x75\164\145\x73\42\72\40\x7b\12\40\x20\x20\x20\x20\40\x20\40\40\40\x20\40\40\40\40\x20\40\40\40\40\x20\x20\x20\40\x20\x20\40\x20\42\163\x74\141\x72\164\114\151\x6e\145\42\x3a\40\x35\54\12\x20\x20\x20\x20\x20\x20\x20\40\x20\40\40\x20\x20\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\40\x20\40\x22\x73\x74\141\x72\x74\124\x6f\153\x65\156\x50\x6f\x73\x22\x3a\40\x32\x38\54\12\40\40\x20\40\40\x20\40\40\x20\40\x20\x20\40\x20\40\x20\40\x20\x20\40\40\40\x20\x20\x20\x20\40\x20\x22\x73\164\141\162\x74\x46\151\x6c\x65\120\157\x73\42\x3a\x20\x38\70\x2c\12\x20\40\40\x20\40\x20\x20\40\40\x20\40\40\40\40\40\x20\x20\40\40\40\x20\40\40\x20\40\40\x20\x20\x22\x65\156\144\114\x69\156\145\42\72\x20\x35\x2c\12\40\x20\40\x20\40\40\40\40\x20\40\40\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\x20\x20\x20\x22\145\x6e\144\124\x6f\x6b\145\156\120\157\x73\42\72\40\x32\x38\54\12\x20\40\x20\40\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\40\40\40\x20\x20\40\40\x20\40\x20\x20\x20\x22\x65\156\144\106\151\x6c\x65\x50\157\x73\42\x3a\40\71\62\x2c\xa\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\40\40\x20\40\x20\40\x20\40\40\x20\40\40\x20\40\40\x20\42\153\151\x6e\x64\42\72\x20\61\x2c\xa\x20\40\x20\x20\x20\x20\x20\40\x20\x20\40\40\40\40\40\40\x20\x20\x20\x20\40\x20\x20\x20\40\x20\x20\40\x22\162\x61\167\x56\141\154\165\x65\x22\72\x20\x22\47\106\157\157\47\42\12\x20\40\x20\x20\40\x20\x20\40\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\54\12\40\x20\x20\x20\x20\40\40\x20\40\x20\40\x20\40\40\40\x20\40\x20\40\x20\x20\40\x20\x20\42\166\x61\154\x75\145\x22\72\40\x22\x46\x6f\157\x22\xa\x20\x20\x20\40\x20\40\40\40\x20\40\x20\x20\40\x20\x20\x20\x20\40\40\x20\175\xa\40\x20\x20\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\40\x20\x5d\xa\40\x20\40\x20\40\40\x20\40\40\x20\40\40\175\12\x20\40\x20\40\40\x20\40\x20\135\54\12\x20\x20\40\40\x20\40\x20\40\42\x61\x74\164\162\x47\x72\157\165\160\163\x22\x3a\40\x5b\x5d\xa\x20\x20\x20\40\175\12\135"; if (version_compare(PHP_VERSION, "\70\56\x31", "\x3e\x3d")) { $expected = $expected81; } $parser = new Parser\Php7(new Lexer()); $stmts = $parser->parse(canonicalize($code)); $json = json_encode($stmts, JSON_PRETTY_PRINT); $this->assertEquals(canonicalize($expected), canonicalize($json)); } }
Function Calls
None |
Stats
MD5 | f85588fe9f08f5c49c01ba67465b913d |
Eval Count | 0 |
Decode Time | 125 ms |