{ "name": "ForOfLoopsAlgo", "structs": {}, "methods": [ { "name": "test_for_of_loop_tuple", "args": [ { "type": "(uint64,uint64,uint64)", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_for_of_loop_destructured_tuple", "args": [ { "type": "uint64[]", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_for_of_loop_destructured_object", "args": [ { "type": "(uint64,uint64)[]", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_for_of_loop_arc4_dynamic_array", "args": [ { "type": "uint64[]", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_for_of_loop_arc4_static_array", "args": [ { "type": "uint64[5]", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_for_of_loop_native_immutable_array", "args": [ { "type": "uint64[]", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_for_of_loop_native_mutable_array", "args": [ { "type": "(uint64,uint64,uint64)", "name": "items" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_iterable_props", "args": [ { "type": "uint64[3]", "name": "static_array" }, { "type": "uint64[3]", "name": "fixed_array" }, { "type": "uint64[]", "name": "dyn_array" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 1094, 1164, 1242 ], "errorMessage": "Step cannot be zero" }, { "pc": [ 613, 691, 778, 846, 923, 1038 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 293, 322, 352, 404, 474, 583, 659, 748, 893, 1238, 1281 ], "errorMessage": "invalid array length header" }, { "pc": [ 302, 361, 483 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 332 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 413 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 459 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 384 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 468 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 240 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 436 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 1343 ], "errorMessage": "no available slots" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAxIDggMgogICAgYnl0ZWNibG9jayAweDE1MWY3Yzc1IDB4CiAgICBwdXNoYnl0ZXMgMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmCiAgICBzdG9yZSAwCiAgICBiIG1haW5fYmxvY2tAMAoKbWFpbl9ibG9ja0AwOgogICAgYiBtYWluX2Jsb2NrQDEKCm1haW5fYmxvY2tAMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4CiAgICAvLyBleHBvcnQgY2xhc3MgRm9yT2ZMb29wc0FsZ28gZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgaW50Y18wIC8vIDAKICAgICE9CiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNQogICAgYiBtYWluX2FiaV9yb3V0aW5nQDIKCm1haW5fYWJpX3JvdXRpbmdAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4CiAgICAvLyBleHBvcnQgY2xhc3MgRm9yT2ZMb29wc0FsZ28gZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzAgLy8gTm9PcAogICAgPT0KICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYnogbWFpbl9jcmVhdGVfTm9PcEAxMwogICAgYiBtYWluX2NhbGxfTm9PcEAzCgptYWluX2NhbGxfTm9PcEAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjgKICAgIC8vIGV4cG9ydCBjbGFzcyBGb3JPZkxvb3BzQWxnbyBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIHB1c2hieXRlcyAweGNmMWYyMGI4IC8vIG1ldGhvZCAidGVzdF9mb3Jfb2ZfbG9vcF90dXBsZSgodWludDY0LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKICAgIHB1c2hieXRlcyAweGMyYTJiZDZiIC8vIG1ldGhvZCAidGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGUodWludDY0W10pdWludDY0IgogICAgcHVzaGJ5dGVzIDB4ZjNiNGZlYzggLy8gbWV0aG9kICJ0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3QoKHVpbnQ2NCx1aW50NjQpW10pdWludDY0IgogICAgcHVzaGJ5dGVzIDB4OGMxNmVlODcgLy8gbWV0aG9kICJ0ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheSh1aW50NjRbXSl1aW50NjQiCiAgICBwdXNoYnl0ZXMgMHhiMmM3NTNiZiAvLyBtZXRob2QgInRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXkodWludDY0WzVdKXVpbnQ2NCIKICAgIHB1c2hieXRlcyAweGQxYjViZWVlIC8vIG1ldGhvZCAidGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5KHVpbnQ2NFtdKXVpbnQ2NCIKICAgIHB1c2hieXRlcyAweGExY2MwZDk0IC8vIG1ldGhvZCAidGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheSgodWludDY0LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKICAgIHB1c2hieXRlcyAweDk2MTg0NmM2IC8vIG1ldGhvZCAidGVzdF9pdGVyYWJsZV9wcm9wcyh1aW50NjRbM10sdWludDY0WzNdLHVpbnQ2NFtdKXVpbnQ2NCIKICAgIHVuY292ZXIgOAogICAgbWF0Y2ggbWFpbl90ZXN0X2Zvcl9vZl9sb29wX3R1cGxlX3JvdXRlQDQgbWFpbl90ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9yb3V0ZUA1IG1haW5fdGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X3JvdXRlQDYgbWFpbl90ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9yb3V0ZUA3IG1haW5fdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9yb3V0ZUA4IG1haW5fdGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5X3JvdXRlQDkgbWFpbl90ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X3JvdXRlQDEwIG1haW5fdGVzdF9pdGVyYWJsZV9wcm9wc19yb3V0ZUAxMQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTIKCm1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMjoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDE0CgptYWluX2FmdGVyX2lmX2Vsc2VAMTQ6CiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUAxNgoKbWFpbl9hZnRlcl9pZl9lbHNlQDE2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjgKICAgIC8vIGV4cG9ydCBjbGFzcyBGb3JPZkxvb3BzQWxnbyBleHRlbmRzIENvbnRyYWN0IHsKICAgIGVycgoKbWFpbl90ZXN0X2l0ZXJhYmxlX3Byb3BzX3JvdXRlQDExOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjczCiAgICAvLyB0ZXN0X2l0ZXJhYmxlX3Byb3BzKHN0YXRpY19hcnJheTogU3RhdGljQXJyYXk8VWludDY0LCAzPiwgZml4ZWRfYXJyYXk6IEZpeGVkQXJyYXk8dWludDY0LCAzPiwgZHluX2FycmF5OiBEeW5hbWljQXJyYXk8VWludDY0PikgewogICAgY2FsbHN1YiB0ZXN0X2l0ZXJhYmxlX3Byb3BzCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMgoKbWFpbl90ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X3JvdXRlQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjYzCiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5KGl0ZW1zOiBbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0pIHsKICAgIGNhbGxzdWIgdGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTIKCm1haW5fdGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5X3JvdXRlQDk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NTQKICAgIC8vIHRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheShpdGVtczogQXJyYXk8dWludDY0PikgewogICAgY2FsbHN1YiB0ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXkKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEyCgptYWluX3Rlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfcm91dGVAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0NQogICAgLy8gdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheShpdGVtczogU3RhdGljQXJyYXk8VWludDY0LCA1PikgewogICAgY2FsbHN1YiB0ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5CiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMgoKbWFpbl90ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9yb3V0ZUA3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjM2CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheShpdGVtczogRHluYW1pY0FycmF5PFVpbnQ2ND4pIHsKICAgIGNhbGxzdWIgdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXkKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEyCgptYWluX3Rlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9yb3V0ZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjI3CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3QoaXRlbXM6IFBvaW50W10pIHsKICAgIGNhbGxzdWIgdGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0CiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMgoKbWFpbl90ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9yb3V0ZUA1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjE4CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZShpdGVtczogRHluYW1pY0FycmF5PFVpbnQ2ND4pIHsKICAgIGNhbGxzdWIgdGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGUKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEyCgptYWluX3Rlc3RfZm9yX29mX2xvb3BfdHVwbGVfcm91dGVANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo5CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX3R1cGxlKGl0ZW1zOiByZWFkb25seSBbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0pIHsKICAgIGNhbGxzdWIgdGVzdF9mb3Jfb2ZfbG9vcF90dXBsZQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTIKCm1haW5fY3JlYXRlX05vT3BAMTM6CiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUAxNAoKbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OAogICAgLy8gZXhwb3J0IGNsYXNzIEZvck9mTG9vcHNBbGdvIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE5vT3AKICAgID09CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgID09CiAgICAmJgogICAgYXNzZXJ0CiAgICBjYWxsc3ViIF9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfZm9yX29mX2xvb3BfdHVwbGU6CiAgICBiIHRlc3RfZm9yX29mX2xvb3BfdHVwbGVfYmxvY2tAMAoKdGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjkKICAgIC8vIHRlc3RfZm9yX29mX2xvb3BfdHVwbGUoaXRlbXM6IHJlYWRvbmx5IFt1aW50NjQsIHVpbnQ2NCwgdWludDY0XSkgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMjQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudHVwbGU8YXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQ+CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzIgLy8gOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgIGNvdmVyIDEKICAgIGR1cAogICAgaW50Y18yIC8vIDgKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgY292ZXIgMQogICAgcHVzaGludCAxNgogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzCiAgICBidG9pCiAgICB1bmNvdmVyIDIKICAgIGNvdmVyIDEKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAyCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICB1bmNvdmVyIDEKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlOgogICAgYiB0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9ibG9ja0AwCgp0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjE4CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZShpdGVtczogRHluYW1pY0FycmF5PFVpbnQ2ND4pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyA4CiAgICAqCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDY0PgogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdDoKICAgIGIgdGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2Jsb2NrQDAKCnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjI3CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3QoaXRlbXM6IFBvaW50W10pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMTYKICAgICoKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8dGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpQb2ludD4KICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3QKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgdW5jb3ZlciAxCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheToKICAgIGIgdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfYmxvY2tAMAoKdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czozNgogICAgLy8gdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXkoaXRlbXM6IER5bmFtaWNBcnJheTxVaW50NjQ+KSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ2ND4KICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICB1bmNvdmVyIDEKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5W3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheToKICAgIGIgdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9ibG9ja0AwCgp0ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NDUKICAgIC8vIHRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXkoaXRlbXM6IFN0YXRpY0FycmF5PFVpbnQ2NCwgNT4pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDQwCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ2NCwgNT4KICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5CiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheToKICAgIGIgdGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5X2Jsb2NrQDAKCnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjU0CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXkoaXRlbXM6IEFycmF5PHVpbnQ2ND4pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyA4CiAgICAqCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PHVpbnQ2ND4KICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgdW5jb3ZlciAxCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXk6CiAgICBiIHRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXlfYmxvY2tAMAoKdGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjYzCiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5KGl0ZW1zOiBbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDI0CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPHVpbnQ2NCx1aW50NjQsdWludDY0PgogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgdW5jb3ZlciAxCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfaXRlcmFibGVfcHJvcHM6CiAgICBiIHRlc3RfaXRlcmFibGVfcHJvcHNfYmxvY2tAMAoKdGVzdF9pdGVyYWJsZV9wcm9wc19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjczCiAgICAvLyB0ZXN0X2l0ZXJhYmxlX3Byb3BzKHN0YXRpY19hcnJheTogU3RhdGljQXJyYXk8VWludDY0LCAzPiwgZml4ZWRfYXJyYXk6IEZpeGVkQXJyYXk8dWludDY0LCAzPiwgZHluX2FycmF5OiBEeW5hbWljQXJyYXk8VWludDY0PikgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMjQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDY0LCAzPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMjQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PHVpbnQ2NCwgMz4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyA4CiAgICAqCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDY0PgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMgogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHMKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgdW5jb3ZlciAxCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZShpdGVtcy4wOiB1aW50NjQsIGl0ZW1zLjE6IHVpbnQ2NCwgaXRlbXMuMjogdWludDY0KSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo5CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX3R1cGxlKGl0ZW1zOiByZWFkb25seSBbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0pIHsKICAgIHByb3RvIDMgMQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX3R1cGxlX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MTAKICAgIC8vIGxldCB0b3RhbDogdWludDY0ID0gMAogICAgaW50Y18wIC8vIDAKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MTEKICAgIC8vIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykgewogICAgZnJhbWVfZGlnIC0zCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9mb3JfYm9keUAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfZm9yX2JvZHlAMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoxMQogICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CiAgICBmcmFtZV9kaWcgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjEyCiAgICAvLyB0b3RhbCArPSBpdGVtCiAgICBmcmFtZV9kaWcgMAogICAgZGlnIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjEzCiAgICAvLyBpZiAoaXRlbSA9PT0gc3RvcE51bWJlcikgYnJlYWsKICAgIHB1c2hpbnQgNDIKICAgID09CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfYWZ0ZXJfaWZfZWxzZUAzCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9pZl9ib2R5QDIKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9pZl9ib2R5QDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MTMKICAgIC8vIGlmIChpdGVtID09PSBzdG9wTnVtYmVyKSBicmVhawogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfYmxvY2tAOAoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX3R1cGxlX2Jsb2NrQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MTUKICAgIC8vIHJldHVybiB0b3RhbAogICAgcmV0c3ViCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfYWZ0ZXJfaWZfZWxzZUAzOgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfZm9yX2Zvb3RlckA0Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfZm9yX2Zvb3RlckA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjExCiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGZyYW1lX2RpZyAxCiAgICBzd2l0Y2ggdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX3R1cGxlX2Zvcl9oZWFkZXJfMUA1IHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9mb3JfaGVhZGVyXzJANgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfYWZ0ZXJfZm9yQDcKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9hZnRlcl9mb3JANzoKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX3R1cGxlX2Jsb2NrQDgKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9mb3JfaGVhZGVyXzJANjoKICAgIGludGNfMyAvLyAyCiAgICBmcmFtZV9idXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoxMQogICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CiAgICBmcmFtZV9kaWcgLTEKICAgIGZyYW1lX2J1cnkgMgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfdHVwbGVfZm9yX2JvZHlAMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX3R1cGxlX2Zvcl9oZWFkZXJfMUA1OgogICAgaW50Y18xIC8vIDEKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjExCiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF90dXBsZV9mb3JfYm9keUAxCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZShpdGVtczogYnl0ZXMpIC0+IHVpbnQ2NDoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoxOAogICAgLy8gdGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGUoaXRlbXM6IER5bmFtaWNBcnJheTxVaW50NjQ+KSB7CiAgICBwcm90byAxIDEKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MTkKICAgIC8vIGxldCB0b3RhbDogdWludDY0ID0gMAogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoyMAogICAgLy8gZm9yIChjb25zdCBbaW5kZXgsIHZdIG9mIGl0ZW1zLmVudHJpZXMoKSkgewogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGVfZm9yX2hlYWRlckAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjIwCiAgICAvLyBmb3IgKGNvbnN0IFtpbmRleCwgdl0gb2YgaXRlbXMuZW50cmllcygpKSB7CiAgICBmcmFtZV9kaWcgMgogICAgZnJhbWVfZGlnIDEKICAgIDwKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGVfYWZ0ZXJfZm9yQDYKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9mb3JfYm9keUAyCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2Zvcl9ib2R5QDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MjAKICAgIC8vIGZvciAoY29uc3QgW2luZGV4LCB2XSBvZiBpdGVtcy5lbnRyaWVzKCkpIHsKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMyAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGZyYW1lX2RpZyAyCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjIxCiAgICAvLyB0b3RhbCArPSB2LmFzVWludDY0KCkKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAwCiAgICArCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjIyCiAgICAvLyBpZiAodG90YWwgPj0gc3RvcE51bWJlcikgYnJlYWsKICAgIHB1c2hpbnQgNDIKICAgID49CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2FmdGVyX2lmX2Vsc2VANAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2lmX2JvZHlAMwoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9pZl9ib2R5QDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MjIKICAgIC8vIGlmICh0b3RhbCA+PSBzdG9wTnVtYmVyKSBicmVhawogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2Jsb2NrQDcKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGVfYmxvY2tANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoyNAogICAgLy8gcmV0dXJuIHRvdGFsCiAgICByZXRzdWIKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfdHVwbGVfYWZ0ZXJfaWZfZWxzZUA0OgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2Zvcl9mb290ZXJANQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9mb3JfZm9vdGVyQDU6CiAgICBmcmFtZV9kaWcgMgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX3R1cGxlX2Zvcl9oZWFkZXJAMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9hZnRlcl9mb3JANjoKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF90dXBsZV9ibG9ja0A3CgoKLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3QoaXRlbXM6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjI3CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3QoaXRlbXM6IFBvaW50W10pIHsKICAgIHByb3RvIDEgMQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjI4CiAgICAvLyBsZXQgdG90YWw6IHVpbnQ2NCA9IDAKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MjkKICAgIC8vIGZvciAoY29uc3QgeyB4LCB5IH0gb2YgY2xvbmUoaXRlbXMpKSB7CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2Zvcl9oZWFkZXJAMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoyOQogICAgLy8gZm9yIChjb25zdCB7IHgsIHkgfSBvZiBjbG9uZShpdGVtcykpIHsKICAgIGZyYW1lX2RpZyAyCiAgICBmcmFtZV9kaWcgMQogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3RfYWZ0ZXJfZm9yQDYKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3RfZm9yX2JvZHlAMgoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3RfZm9yX2JvZHlAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czoyOQogICAgLy8gZm9yIChjb25zdCB7IHgsIHkgfSBvZiBjbG9uZShpdGVtcykpIHsKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMyAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGZyYW1lX2RpZyAyCiAgICBwdXNoaW50IDE2CiAgICAqCiAgICBwdXNoaW50IDE2CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgY292ZXIgMQogICAgaW50Y18yIC8vIDgKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjMwCiAgICAvLyB0b3RhbCArPSB4ICsgeQogICAgKwogICAgZnJhbWVfZGlnIDAKICAgICsKICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MzEKICAgIC8vIGlmICh0b3RhbCA+PSBzdG9wTnVtYmVyKSBicmVhawogICAgcHVzaGludCA0MgogICAgPj0KICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2FmdGVyX2lmX2Vsc2VANAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9pZl9ib2R5QDMKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2lmX2JvZHlAMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czozMQogICAgLy8gaWYgKHRvdGFsID49IHN0b3BOdW1iZXIpIGJyZWFrCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2Jsb2NrQDcKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2Jsb2NrQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MzMKICAgIC8vIHJldHVybiB0b3RhbAogICAgcmV0c3ViCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9hZnRlcl9pZl9lbHNlQDQ6CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9kZXN0cnVjdHVyZWRfb2JqZWN0X2Zvcl9mb290ZXJANQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3RfZm9yX2Zvb3RlckA1OgogICAgZnJhbWVfZGlnIDIKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3RfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfZGVzdHJ1Y3R1cmVkX29iamVjdF9hZnRlcl9mb3JANjoKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2Rlc3RydWN0dXJlZF9vYmplY3RfYmxvY2tANwoKCi8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXkoaXRlbXM6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MzYKICAgIC8vIHRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5KGl0ZW1zOiBEeW5hbWljQXJyYXk8VWludDY0PikgewogICAgcHJvdG8gMSAxCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjM3CiAgICAvLyBsZXQgdG90YWw6IHVpbnQ2NCA9IDAKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6MzgKICAgIC8vIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykgewogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfZm9yX2hlYWRlckAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjM4CiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGZyYW1lX2RpZyAyCiAgICBmcmFtZV9kaWcgMQogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9hZnRlcl9mb3JANgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5X2Zvcl9ib2R5QDIKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfZm9yX2JvZHlAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czozOAogICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzMgLy8gMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBmcmFtZV9kaWcgMgogICAgaW50Y18yIC8vIDgKICAgICoKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czozOQogICAgLy8gdG90YWwgKz0gaXRlbS5hc1VpbnQ2NCgpCiAgICBkdXAKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAwCiAgICArCiAgICBmcmFtZV9idXJ5IDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0MAogICAgLy8gaWYgKGl0ZW0uYXNVaW50NjQoKSA9PT0gc3RvcE51bWJlcikgYnJlYWsKICAgIGJ0b2kKICAgIHB1c2hpbnQgNDIKICAgID09CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5X2FmdGVyX2lmX2Vsc2VANAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5X2lmX2JvZHlAMwoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9pZl9ib2R5QDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NDAKICAgIC8vIGlmIChpdGVtLmFzVWludDY0KCkgPT09IHN0b3BOdW1iZXIpIGJyZWFrCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfYmxvY2tANwoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9ibG9ja0A3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjQyCiAgICAvLyByZXR1cm4gdG90YWwKICAgIHJldHN1YgoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfZHluYW1pY19hcnJheV9hZnRlcl9pZl9lbHNlQDQ6CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfZm9yX2Zvb3RlckA1Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5X2Zvcl9mb290ZXJANToKICAgIGZyYW1lX2RpZyAyCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X2R5bmFtaWNfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5X2FmdGVyX2ZvckA2OgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9keW5hbWljX2FycmF5X2Jsb2NrQDcKCgovLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXkoaXRlbXM6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0NQogICAgLy8gdGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheShpdGVtczogU3RhdGljQXJyYXk8VWludDY0LCA1PikgewogICAgcHJvdG8gMSAxCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0NgogICAgLy8gbGV0IHRvdGFsOiB1aW50NjQgPSAwCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18wIC8vIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5X2Zvcl9oZWFkZXJAMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5X2Zvcl9oZWFkZXJAMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0NwogICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CiAgICBmcmFtZV9kaWcgMQogICAgcHVzaGludCA1CiAgICA8CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfYWZ0ZXJfZm9yQDYKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX2FyYzRfc3RhdGljX2FycmF5X2Zvcl9ib2R5QDIKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9mb3JfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjQ3CiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgZnJhbWVfZGlnIC0xCiAgICB1bmNvdmVyIDEKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0OAogICAgLy8gdG90YWwgKz0gaXRlbS5hc1VpbnQ2NCgpCiAgICBkdXAKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAwCiAgICArCiAgICBmcmFtZV9idXJ5IDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo0OQogICAgLy8gaWYgKGl0ZW0uYXNVaW50NjQoKSA9PT0gc3RvcE51bWJlcikgYnJlYWsKICAgIGJ0b2kKICAgIHB1c2hpbnQgNDIKICAgID09CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfYWZ0ZXJfaWZfZWxzZUA0CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9pZl9ib2R5QDMKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9pZl9ib2R5QDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NDkKICAgIC8vIGlmIChpdGVtLmFzVWludDY0KCkgPT09IHN0b3BOdW1iZXIpIGJyZWFrCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9ibG9ja0A3Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfYmxvY2tANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo1MQogICAgLy8gcmV0dXJuIHRvdGFsCiAgICByZXRzdWIKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9hZnRlcl9pZl9lbHNlQDQ6CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9mb3JfZm9vdGVyQDUKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9mb3JfZm9vdGVyQDU6CiAgICBmcmFtZV9kaWcgMQogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfYXJjNF9zdGF0aWNfYXJyYXlfYWZ0ZXJfZm9yQDY6CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9hcmM0X3N0YXRpY19hcnJheV9ibG9ja0A3CgoKLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXkoaXRlbXM6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjU0CiAgICAvLyB0ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXkoaXRlbXM6IEFycmF5PHVpbnQ2ND4pIHsKICAgIHByb3RvIDEgMQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjU1CiAgICAvLyBsZXQgdG90YWw6IHVpbnQ2NCA9IDAKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NTYKICAgIC8vIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykgewogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9mb3JfaGVhZGVyQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NTYKICAgIC8vIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykgewogICAgZnJhbWVfZGlnIDIKICAgIGZyYW1lX2RpZyAxCiAgICA8CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9hZnRlcl9mb3JANgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9mb3JfYm9keUAyCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9mb3JfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjU2CiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMyAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGZyYW1lX2RpZyAyCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjU3CiAgICAvLyB0b3RhbCArPSBpdGVtCiAgICBmcmFtZV9kaWcgMAogICAgZGlnIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjU4CiAgICAvLyBpZiAoaXRlbSA9PT0gc3RvcE51bWJlcikgYnJlYWsKICAgIHB1c2hpbnQgNDIKICAgID09CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9hZnRlcl9pZl9lbHNlQDQKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXlfaWZfYm9keUAzCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9pZl9ib2R5QDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NTgKICAgIC8vIGlmIChpdGVtID09PSBzdG9wTnVtYmVyKSBicmVhawogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9ibG9ja0A3Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9ibG9ja0A3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjYwCiAgICAvLyByZXR1cm4gdG90YWwKICAgIHJldHN1YgoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXlfYWZ0ZXJfaWZfZWxzZUA0OgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX2ltbXV0YWJsZV9hcnJheV9mb3JfZm9vdGVyQDUKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5X2Zvcl9mb290ZXJANToKICAgIGZyYW1lX2RpZyAyCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5X2Zvcl9oZWFkZXJAMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9pbW11dGFibGVfYXJyYXlfYWZ0ZXJfZm9yQDY6CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfaW1tdXRhYmxlX2FycmF5X2Jsb2NrQDcKCgovLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXkoaXRlbXM6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo2MwogICAgLy8gdGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheShpdGVtczogW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdKSB7CiAgICBwcm90byAxIDEKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjY0CiAgICAvLyBjb25zdCBtdXRhYmxlID0gbmV3IFJlZmVyZW5jZUFycmF5KC4uLml0ZW1zKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMiAvLyA4CiAgICBpbnRjXzIgLy8gOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAtMQogICAgcHVzaGludCAxNgogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzCiAgICBidG9pCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGJ5dGVjXzEgLy8gMHgKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGNhbGxzdWIgX3B1eWFfbGliLm1lbS5uZXdfc2xvdAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIHN0b3JlcwogICAgZHVwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NjUKICAgIC8vIGxldCB0b3RhbDogdWludDY0ID0gMAogICAgaW50Y18wIC8vIDAKICAgIGNvdmVyIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo2NgogICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIG11dGFibGUpIHsKICAgIGxvYWRzCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICAvCiAgICBpbnRjXzAgLy8gMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXlfZm9yX2hlYWRlckAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjY2CiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgbXV0YWJsZSkgewogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAyCiAgICA8CiAgICBieiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXlfYWZ0ZXJfZm9yQDYKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2Zvcl9ib2R5QDIKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheV9mb3JfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjY2CiAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgbXV0YWJsZSkgewogICAgZnJhbWVfZGlnIDAKICAgIGxvYWRzCiAgICBmcmFtZV9kaWcgMwogICAgaW50Y18yIC8vIDgKICAgICoKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo2NwogICAgLy8gdG90YWwgKz0gaXRlbQogICAgZnJhbWVfZGlnIDEKICAgIGRpZyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo2OAogICAgLy8gaWYgKGl0ZW0gPT09IHN0b3BOdW1iZXIpIGJyZWFrCiAgICBwdXNoaW50IDQyCiAgICA9PQogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2FmdGVyX2lmX2Vsc2VANAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXlfaWZfYm9keUAzCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfZm9yX29mX2xvb3BfbmF0aXZlX211dGFibGVfYXJyYXlfaWZfYm9keUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjY4CiAgICAvLyBpZiAoaXRlbSA9PT0gc3RvcE51bWJlcikgYnJlYWsKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2Jsb2NrQDcKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheV9ibG9ja0A3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjcwCiAgICAvLyByZXR1cm4gdG90YWwKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2FmdGVyX2lmX2Vsc2VANDoKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2Zvcl9mb290ZXJANQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2Zvcl9mb290ZXJANToKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAzCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheV9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9mb3Jfb2ZfbG9vcF9uYXRpdmVfbXV0YWJsZV9hcnJheV9hZnRlcl9mb3JANjoKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2Zvcl9vZl9sb29wX25hdGl2ZV9tdXRhYmxlX2FycmF5X2Jsb2NrQDcKCgovLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHMoc3RhdGljX2FycmF5OiBieXRlcywgZml4ZWRfYXJyYXk6IGJ5dGVzLCBkeW5fYXJyYXk6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wczoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo3MwogICAgLy8gdGVzdF9pdGVyYWJsZV9wcm9wcyhzdGF0aWNfYXJyYXk6IFN0YXRpY0FycmF5PFVpbnQ2NCwgMz4sIGZpeGVkX2FycmF5OiBGaXhlZEFycmF5PHVpbnQ2NCwgMz4sIGR5bl9hcnJheTogRHluYW1pY0FycmF5PFVpbnQ2ND4pIHsKICAgIHByb3RvIDMgMQogICAgYnl0ZWNfMSAvLyAiIgogICAgYnl0ZWNfMSAvLyAiIgogICAgYnl0ZWNfMSAvLyAiIgogICAgYnl0ZWNfMSAvLyAiIgogICAgYnl0ZWNfMSAvLyAiIgogICAgYnl0ZWNfMSAvLyAiIgogICAgYnl0ZWNfMSAvLyAiIgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6NzQKICAgIC8vIGxldCBpOiB1aW50NjQgPSAwCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjc1CiAgICAvLyBmb3IgKGNvbnN0IGEgb2Ygc3RhdGljX2FycmF5LmtleXMoKSkgewogICAgaW50Y18xIC8vIDEKICAgIGFzc2VydCAvLyBTdGVwIGNhbm5vdCBiZSB6ZXJvCiAgICBpbnRjXzAgLy8gMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjc1CiAgICAvLyBmb3IgKGNvbnN0IGEgb2Ygc3RhdGljX2FycmF5LmtleXMoKSkgewogICAgZnJhbWVfZGlnIDgKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckA0CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfYm9keUAyCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2JvZHlAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo3NgogICAgLy8gaSsrCiAgICBmcmFtZV9kaWcgNwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckAzCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjc1CiAgICAvLyBmb3IgKGNvbnN0IGEgb2Ygc3RhdGljX2FycmF5LmtleXMoKSkgewogICAgZnJhbWVfZGlnIDgKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDgKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9oZWFkZXJAMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckA0OgogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgMQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckA1Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckA1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjc4CiAgICAvLyBmb3IgKGNvbnN0IGEgb2Ygc3RhdGljX2FycmF5LmVudHJpZXMoKSkgewogICAgZnJhbWVfZGlnIDEKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckA4CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfYm9keUA2Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2JvZHlANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo3OQogICAgLy8gaSsrCiAgICBmcmFtZV9kaWcgNwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckA3Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckA3OgogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9oZWFkZXJANQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjgxCiAgICAvLyBmb3IgKGNvbnN0IGEgb2YgZml4ZWRfYXJyYXkua2V5cygpKSB7CiAgICBpbnRjXzEgLy8gMQogICAgYXNzZXJ0IC8vIFN0ZXAgY2Fubm90IGJlIHplcm8KICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9oZWFkZXJAOQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9oZWFkZXJAOToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4MQogICAgLy8gZm9yIChjb25zdCBhIG9mIGZpeGVkX2FycmF5LmtleXMoKSkgewogICAgZnJhbWVfZGlnIDUKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckAxMgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2JvZHlAMTAKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfYm9keUAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4MgogICAgLy8gaSsrCiAgICBmcmFtZV9kaWcgNwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckAxMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9mb290ZXJAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6ODEKICAgIC8vIGZvciAoY29uc3QgYSBvZiBmaXhlZF9hcnJheS5rZXlzKCkpIHsKICAgIGZyYW1lX2RpZyA1CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA1CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfaGVhZGVyQDkKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19hZnRlcl9mb3JAMTI6CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfaGVhZGVyQDEzCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAxMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4NAogICAgLy8gZm9yIChjb25zdCBhIG9mIGZpeGVkX2FycmF5LmVudHJpZXMoKSkgewogICAgZnJhbWVfZGlnIDIKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckAxNgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2JvZHlAMTQKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfYm9keUAxNDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4NQogICAgLy8gaSsrCiAgICBmcmFtZV9kaWcgNwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckAxNQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9mb290ZXJAMTU6CiAgICBmcmFtZV9kaWcgMgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAxMwoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckAxNjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4NwogICAgLy8gZm9yIChjb25zdCBhIG9mIGR5bl9hcnJheS5rZXlzKCkpIHsKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGZyYW1lX2J1cnkgNAogICAgaW50Y18xIC8vIDEKICAgIGFzc2VydCAvLyBTdGVwIGNhbm5vdCBiZSB6ZXJvCiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA2CiAgICBiIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfaGVhZGVyQDE3Cgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAxNzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4NwogICAgLy8gZm9yIChjb25zdCBhIG9mIGR5bl9hcnJheS5rZXlzKCkpIHsKICAgIGZyYW1lX2RpZyA2CiAgICBmcmFtZV9kaWcgNAogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckAyMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2JvZHlAMTgKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfYm9keUAxODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo4OAogICAgLy8gaSsrCiAgICBmcmFtZV9kaWcgNwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2Zvb3RlckAxOQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9mb290ZXJAMTk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6ODcKICAgIC8vIGZvciAoY29uc3QgYSBvZiBkeW5fYXJyYXkua2V5cygpKSB7CiAgICBmcmFtZV9kaWcgNgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAxNwoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2FmdGVyX2ZvckAyMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo5MAogICAgLy8gZm9yIChjb25zdCBhIG9mIGR5bl9hcnJheS5lbnRyaWVzKCkpIHsKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGZyYW1lX2J1cnkgMAogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgMwogICAgYiB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2hlYWRlckAyMQoKdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9oZWFkZXJAMjE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OTAKICAgIC8vIGZvciAoY29uc3QgYSBvZiBkeW5fYXJyYXkuZW50cmllcygpKSB7CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIDAKICAgIDwKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19hZnRlcl9mb3JAMjQKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9ib2R5QDIyCgp0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLnRlc3RfaXRlcmFibGVfcHJvcHNfZm9yX2JvZHlAMjI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OTEKICAgIC8vIGkrKwogICAgZnJhbWVfZGlnIDcKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDcKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9mb290ZXJAMjMKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19mb3JfZm9vdGVyQDIzOgogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Zvci1vZi1sb29wcy5hbGdvLnRzOjpGb3JPZkxvb3BzQWxnby50ZXN0X2l0ZXJhYmxlX3Byb3BzX2Zvcl9oZWFkZXJAMjEKCnRlc3RzL2FwcHJvdmFscy9mb3Itb2YtbG9vcHMuYWxnby50czo6Rm9yT2ZMb29wc0FsZ28udGVzdF9pdGVyYWJsZV9wcm9wc19hZnRlcl9mb3JAMjQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OTMKICAgIC8vIHJldHVybiBpCiAgICBmcmFtZV9kaWcgNwogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvZm9yLW9mLWxvb3BzLmFsZ28udHM6OkZvck9mTG9vcHNBbGdvLl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZSgpIC0+IHZvaWQ6Cl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZToKICAgIGIgX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlX2Jsb2NrQDAKCl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZV9ibG9ja0AwOgogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLm1lbS5uZXdfc2xvdCgpIC0+IHVpbnQ2NDoKX3B1eWFfbGliLm1lbS5uZXdfc2xvdDoKICAgIGIgX3B1eWFfbGliLm1lbS5uZXdfc2xvdEBlbnRyeQoKX3B1eWFfbGliLm1lbS5uZXdfc2xvdEBlbnRyeToKICAgIGxvYWQgMAogICAgYml0bGVuCiAgICBsb2FkIDAKICAgIHB1c2hpbnQgMjU2CiAgICBkaWcgMgogICAgLQogICAgaW50Y18wIC8vIDAKICAgIHNldGJpdCAvLyBvbiBlcnJvcjogbm8gYXZhaWxhYmxlIHNsb3RzCiAgICBzdG9yZSAwCiAgICByZXRzdWIK", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBiIG1haW5fYmxvY2tAMAoKbWFpbl9ibG9ja0AwOgogICAgcHVzaGludCAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CyAEAAEIAiYCBBUffHUAgCB//////////////////////////////////////////zUAQgAAQgAAMRsiE0EAlkIAADEZIhJEMRgiE0EAhEIAADYaAIAEzx8guIAEwqK9a4AE87T+yIAEjBbuh4AEssdTv4AE0bW+7oAEocwNlIAElhhGxk8IjggANAAuACgAIgAcABYAEAAKQgAAQgAAQgAAAIgBGkL/84gA/UL/7YgA2kL/54gAvUL/4YgAmkL/24gAdkL/1YgAU0L/z4gAFUL/yUL/yTEZIhIxGCISEESIBEkjQ0IAADYaAUkVgRgSREkiJFgXTgFJJCRYF04BgRAkWBdPAk4BTwJPAU8CTwJPAogA4BYoTwFQsCNDQgAANhoBSSJZJAslCEsBFRJEiAELFihPAVCwI0NCAAA2GgFJIlmBEAslCEsBFRJEiAE5FihPAVCwI0NCAAA2GgFJIlkkCyUISwEVEkSIAXUWKE8BULAjQ0IAADYaAUkVgSgSRIgBqxYoTwFQsCNDQgAANhoBSSJZJAslCEsBFRJEiAHSFihPAVCwI0NCAAA2GgFJFYEYEkSIAggWKE8BULAjQ0IAADYaAUkVgRgSRDYaAkkVgRgSRDYaA0kiWSQLJQhLARUSRE8CTwJPAogCShYoTwFQsCNDigMBQgAAIiKL/UIAAIsCiwBLAQiMAIEqEkEAB0IAAEIAAIlCAACLAY0CABAABkIAAEL/7iWMAYv/jAJC/88jjAGL/owCQv/FigEBQgAAIov/IlkiQgAAiwKLAQxBADJCAACL/xWL/yVPAlKLAiQLJFgXiwAISYwAgSoPQQAHQgAAQgAAiUIAAIsCIwiMAkL/xkL/8IoBAUIAACKL/yJZIkIAAIsCiwEMQQA/QgAAi/8Vi/8lTwJSiwKBEAuBEFhJIiRYF04BJCRYFwiLAAhJjACBKg9BAAdCAABCAACJQgAAiwIjCIwCQv+5Qv/wigEBQgAAIov/IlkiQgAAiwKLAQxBADNCAACL/xWL/yVPAlKLAiQLJFhJF4sACIwAF4EqEkEAB0IAAEIAAIlCAACLAiMIjAJC/8VC//CKAQFCAAAiIkIAAIsBgQUMQQAuQgAAiwEkC4v/TwEkWEkXiwAIjAAXgSoSQQAHQgAAQgAAiUIAAIsBIwiMAUL/ykL/8IoBAUIAACKL/yJZIkIAAIsCiwEMQQAzQgAAi/8Vi/8lTwJSiwIkCyRYF4sASwEIjACBKhJBAAdCAABCAACJQgAAiwIjCIwCQv/FQv/wigEBQgAAi/8iJFgXi/8kJFgXi/+BECRYF08CFilPAVBPAhZQTwEWUIgBRUlPAj9JIk4BPhUkCiJCAACLA4sCDEEAMUIAAIsAPosDJAskWBeLAUsBCIwBgSoSQQALQgAAQgAAiwGMAIlCAACLAyMIjANC/8dC/+yKAwEpKSkpKSkpQgAAIiNEIkIAAIsIgQMMQQAVQgAAiwcjCIwHQgAAiwgjCIwIQv/jIowBQgAAiwGBAwxBABVCAACLByMIjAdCAACLASMIjAFC/+MjRCKMBUIAAIsFgQMMQQAVQgAAiwcjCIwHQgAAiwUjCIwFQv/jIowCQgAAiwKBAwxBABVCAACLByMIjAdCAACLAiMIjAJC/+OL/yJZjAQjRCKMBkIAAIsGiwQMQQAVQgAAiwcjCIwHQgAAiwYjCIwGQv/ji/8iWYwAIowDQgAAiwOLAAxBABVCAACLByMIjAdCAACLAyMIjANC/+OLB4wAiUIAAIlCAAA0AJM0AIGAAksCCSJUNQCJ", "clear": "C0IAAIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }