-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathflutter_01.sksl.json
1 lines (1 loc) · 70.7 KB
/
flutter_01.sksl.json
1
{"platform":"android","name":"sdk gphone x86 64 arm64","engineRevision":"91c9fc8fe011352879e3bb6660966eafc0847233","data":{"K5JAAAAAAAMAAAAAARMPZ72HPQCFR7H7777QGAAAAACAAAAAACCAYAEABIAAAACAAAAAAACCIYAAA":"BAAAAExTS1NGAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7CmluIGZsb2F0MiBsb2NhbENvb3JkOwpvdXQgaGFsZjQgdmNvbG9yX1N0YWdlMDsKb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1N0YWdlMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfU3RhZ2UwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAAP8BAAB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTA7CmluIGhhbGY0IHZjb2xvcl9TdGFnZTA7CmluIGZsb2F0MiB2bG9jYWxDb29yZF9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCwgdGV4Q29vcmQpICogb3V0cHV0Q29sb3JfU3RhZ2UwKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAACAAAAHBvc2l0aW9uBQAAAGNvbG9yAAAACgAAAGxvY2FsQ29vcmQAAAAAAAAAAAAA","AWAAGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAAAUABAAAAACAAAAAEBSAI":"BAAAAExTS1OzAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IGZsb2F0NChfdG1wXzBfaW5Qb3NpdGlvbi54ICwgX3RtcF8wX2luUG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAAAAAAAAAAAAA4CAABpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TdGFnZTA7CmluIGhhbGY0IHZpbkNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1N0YWdlMDsKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZpbkNvbG9yX1N0YWdlMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAoAAABpblBvc2l0aW9uAAAHAAAAaW5Db2xvcgAMAAAAaW5DaXJjbGVFZGdlAAAAAAAAAAA=","BYAAQAAAAQAAAAABC3777777777QAAAAAAAAAAAAUABAAAAACAAAAAEASAIQAAAA":"BAAAAExTS1PkAAAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IGZsb2F0NChfdG1wXzBfaW5Qb3NpdGlvbi54ICwgX3RtcF8wX2luUG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAAAAAAAAAAAJwEAAHVuaWZvcm0gaGFsZjQgdUNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwOwoJb3V0cHV0Q29sb3JfU3RhZ2UwID0gdUNvbG9yX1N0YWdlMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAaW5Qb3NpdGlvbgAAAAAAAAAAAAA=","AWAQGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAAAUABAAAAACAAAAAEBSAI":"BAAAAExTS1OzAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IGZsb2F0NChfdG1wXzBfaW5Qb3NpdGlvbi54ICwgX3RtcF8wX2luUG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAAAAAAAAAAAAJ8CAABpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TdGFnZTA7CmluIGhhbGY0IHZpbkNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1N0YWdlMDsKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZpbkNvbG9yX1N0YWdlMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwOwoJfQp9CgAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAoAAABpblBvc2l0aW9uAAAHAAAAaW5Db2xvcgAMAAAAaW5DaXJjbGVFZGdlAAAAAAAAAAA=","B2ABSAAAAQAAAAABC3777777AAOAAAAAAAAAAAAAUABAAAAACAAAAAEASAIQAAAA":"BAAAAExTS1OpAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gaGFsZjQgdUNvbG9yX1N0YWdlMDsKaW4gZmxvYXQyIGluUG9zaXRpb247CmluIGhhbGYgaW5Db3ZlcmFnZTsKb3V0IGhhbGY0IHZjb2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgY29sb3IgPSB1Q29sb3JfU3RhZ2UwOwoJY29sb3IgPSBjb2xvciAqIGluQ292ZXJhZ2U7Cgl2Y29sb3JfU3RhZ2UwID0gY29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAAAAiAQAAaW4gaGFsZjQgdmNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwOwoJb3V0cHV0Q29sb3JfU3RhZ2UwID0gdmNvbG9yX1N0YWdlMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAACgAAAGluUG9zaXRpb24AAAoAAABpbkNvdmVyYWdlAAAAAAAAAAAAAA==","B2IASAAAAQAAAAABCYIR7777AAOAAAAAAAAAAAAAUABAAAAACAAAAAEASAIQAAAA":"BAAAAExTS1NwAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBoYWxmIGluQ292ZXJhZ2U7Cm91dCBoYWxmNCB2Y29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IGNvbG9yID0gaW5Db2xvcjsKCWNvbG9yID0gY29sb3IgKiBpbkNvdmVyYWdlOwoJdmNvbG9yX1N0YWdlMCA9IGNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAiAQAAaW4gaGFsZjQgdmNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwOwoJb3V0cHV0Q29sb3JfU3RhZ2UwID0gdmNvbG9yX1N0YWdlMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAACgAAAGluUG9zaXRpb24AAAcAAABpbkNvbG9yAAoAAABpbkNvdmVyYWdlAAAAAAAAAAAAAA==","K5IAAAAAAAMAAAAAARMPZ72HPQCFR7H7777QGAAAAAAAAAAAIRDQAAAEAAAAAMARZTGAAAAAAAAAAAAAFIAAAAAAAEAAAAAIDEAQAAA":"BAAAAExTS1OkAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7CmluIGZsb2F0MiBsb2NhbENvb3JkOwpvdXQgaGFsZjQgdmNvbG9yX1N0YWdlMDsKb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1N0YWdlMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBmbG9hdDQocG9zaXRpb24ueCAsIHBvc2l0aW9uLnksIDAsIDEpOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9ICgoKHVtYXRyaXhfU3RhZ2UxX2MwKSkgKiBsb2NhbENvb3JkLnh5MSkueHk7Cgl9Cn0KAAAAAAAAAAAAAAAAyQIAAHVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMTsKaW4gaGFsZjQgdmNvbG9yX1N0YWdlMDsKaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCkuYWFhYTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gTWF0cml4RWZmZWN0X1N0YWdlMV9jMChvdXRwdXRDb3ZlcmFnZV9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dF9TdGFnZTE7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAIAAAAcG9zaXRpb24FAAAAY29sb3IAAAAKAAAAbG9jYWxDb29yZAAAAAAAAAAAAAA=","B2AAQAAAAQAAAAABC3777777AAOAAAAAAAAAAAAAUABAAAAACAAAAAEASAIQAAAA":"BAAAAExTS1M3AQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmIGluQ292ZXJhZ2U7Cm91dCBoYWxmIHZpbkNvdmVyYWdlX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfU3RhZ2UwID0gaW5Db3ZlcmFnZTsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAcQEAAHVuaWZvcm0gaGFsZjQgdUNvbG9yX1N0YWdlMDsKaW4gaGFsZiB2aW5Db3ZlcmFnZV9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHVDb2xvcl9TdGFnZTA7CgloYWxmIGFscGhhID0gMS4wOwoJYWxwaGEgPSB2aW5Db3ZlcmFnZV9TdGFnZTA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNChhbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAACgAAAGluUG9zaXRpb24AAAoAAABpbkNvdmVyYWdlAAAAAAAAAAAAAA==","IYBQAAAAAELBCHYCDYAAAAAAAEAAAAAAEEBQBIACAAAAAEAAAAAIBEARAA":"BAAAAExTS1OFAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBoYWxmMyBpblNoYWRvd1BhcmFtczsKb3V0IGhhbGYzIHZpblNoYWRvd1BhcmFtc19TdGFnZTA7Cm91dCBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFJSZWN0U2hhZG93Cgl2aW5TaGFkb3dQYXJhbXNfU3RhZ2UwID0gaW5TaGFkb3dQYXJhbXM7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAAAAyAgAAdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwOwppbiBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBSUmVjdFNoYWRvdwoJaGFsZjMgc2hhZG93UGFyYW1zOwoJc2hhZG93UGFyYW1zID0gdmluU2hhZG93UGFyYW1zX1N0YWdlMDsKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZpbkNvbG9yX1N0YWdlMDsKCWhhbGYgZCA9IGxlbmd0aChzaGFkb3dQYXJhbXMueHkpOwoJZmxvYXQyIHV2ID0gZmxvYXQyKHNoYWRvd1BhcmFtcy56ICogKDEuMCAtIGQpLCAwLjUpOwoJaGFsZiBmYWN0b3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwLCB1dikuYTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KGZhY3Rvcik7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwOwoJfQp9CgAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAKAAAAaW5Qb3NpdGlvbgAABwAAAGluQ29sb3IADgAAAGluU2hhZG93UGFyYW1zAAAAAAAAAAAAAA==","DIQAAAAAMAAAAABAYAROFA6CAIAAAABAAAAAAADGMYAAAVAAAAAAAAQAAAABAMQC":"BAAAAExTS1NHAgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQyIHVBdGxhc1NpemVJbnZfU3RhZ2UwOwppbiBmbG9hdDIgaW5Qb3NpdGlvbjsKaW4gaGFsZjQgaW5Db2xvcjsKaW4gZmxvYXQyIGluVGV4dHVyZUNvb3JkczsKb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TdGFnZTA7Cm91dCBmbG9hdCB2VGV4SW5kZXhfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglmbG9hdCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfU3RhZ2UwOwoJdlRleEluZGV4X1N0YWdlMCA9ICh0ZXhJZHgpOwoJdmluQ29sb3JfU3RhZ2UwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IGZsb2F0NChpblBvc2l0aW9uLnggLCBpblBvc2l0aW9uLnksIDAsIDEpOwp9CgAAAAAAAAAAAAAAAADcAQAAdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwOwppbiBmbG9hdDIgdlRleHR1cmVDb29yZHNfU3RhZ2UwOwppbiBmbG9hdCB2VGV4SW5kZXhfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAsIHZUZXh0dXJlQ29vcmRzX1N0YWdlMCkuYWFhYTsKCX0KCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAoAAABpblBvc2l0aW9uAAAHAAAAaW5Db2xvcgAPAAAAaW5UZXh0dXJlQ29vcmRzAAAAAAAAAAAA","K4JAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAABAAAAAABBAMADCEB4QAAAAAEAAAAAAKQAAAAAAAIAAAAAQGIBAAAAA":"BAAAAExTS1MFAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdmxvY2FsQ29vcmRfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1N0YWdlMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IGZsb2F0NChwb3NpdGlvbi54ICwgcG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAEBAAAAAAAAAQEAjwMAAHVuaWZvcm0gZmxvYXQ0IHVpbm5lclJlY3RfU3RhZ2UxX2MwOwp1bmlmb3JtIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TdGFnZTFfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMDsKaW4gZmxvYXQyIHZsb2NhbENvb3JkX1N0YWdlMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1N0YWdlMV9jMC5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TdGFnZTFfYzAuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TdGFnZTFfYzAueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1N0YWdlMTsKCW91dHB1dF9TdGFnZTEgPSBDaXJjdWxhclJSZWN0X1N0YWdlMV9jMChvdXRwdXRDb3ZlcmFnZV9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dF9TdGFnZTE7Cgl9Cn0KAAABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAACAAAAHBvc2l0aW9uCgAAAGxvY2FsQ29vcmQAAAAAAAAAAAAA","K4QAAAAAAAGAAAAAAIWP57ZDH37P7777777QCAAAAAAAAAAAMIQHSAAAAAAQAAAAABKAAAAAAABAAAAACAZAEAAAAA":"BAAAAExTS1PvAAAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7Cm91dCBoYWxmNCB2Y29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TdGFnZTAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKfQoAAAEBAAAAAAAAAQEA9AIAAHVuaWZvcm0gZmxvYXQ0IHVpbm5lclJlY3RfU3RhZ2UxX2MwOwp1bmlmb3JtIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TdGFnZTFfYzA7CmluIGhhbGY0IHZjb2xvcl9TdGFnZTA7CmhhbGY0IENpcmN1bGFyUlJlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TdGFnZTFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfU3RhZ2UxX2MwLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfU3RhZ2UxX2MwLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gQ2lyY3VsYXJSUmVjdF9TdGFnZTFfYzAob3V0cHV0Q292ZXJhZ2VfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRfU3RhZ2UxOwoJfQp9CgABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAACAAAAHBvc2l0aW9uBQAAAGNvbG9yAAAAAAAAAAAAAAA=","K4QACAAAAAGAAAAAAIWP57ZDH37P7777777QCAAAAAAAAAAAMIQHSAAAAAAQAAAAABKAAAAAAABAAAAACAZAEAAAAA":"BAAAAExTS1PvAAAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7Cm91dCBoYWxmNCB2Y29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TdGFnZTAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKfQoAAAEBAAAAAAAAAQEA9AIAAHVuaWZvcm0gZmxvYXQ0IHVpbm5lclJlY3RfU3RhZ2UxX2MwOwp1bmlmb3JtIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TdGFnZTFfYzA7CmluIGhhbGY0IHZjb2xvcl9TdGFnZTA7CmhhbGY0IENpcmN1bGFyUlJlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TdGFnZTFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfU3RhZ2UxX2MwLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfU3RhZ2UxX2MwLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gQ2lyY3VsYXJSUmVjdF9TdGFnZTFfYzAob3V0cHV0Q292ZXJhZ2VfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRfU3RhZ2UxOwoJfQp9CgABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAACAAAAHBvc2l0aW9uBQAAAGNvbG9yAAAAAAAAAAAAAAA=","K4JAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAABAAAAAABBAMACAAUAAAABAAAAAAABBEMAAA":"BAAAAExTS1MFAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdmxvY2FsQ29vcmRfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1N0YWdlMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IGZsb2F0NChwb3NpdGlvbi54ICwgcG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAAAAAAAAAAAAAAAwwEAAHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMDsKaW4gZmxvYXQyIHZsb2NhbENvb3JkX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24KAAAAbG9jYWxDb29yZAAAAAAAAAAAAAA=","DIUAAAAAMAAAAABAYAROFA6CAIAAAABAAAAAAADGMYAKAPICQADYAB4AA6AMOAAAAAABAUIAAAAOA2AAAAAAA5BEAAAABQEGAAAAAAFIAAAAAAAEAAAAAIDEAQ":"BAAAAExTS1NPAwAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQyIHVBdGxhc1NpemVJbnZfU3RhZ2UwOwp1bmlmb3JtIGZsb2F0NCB1bG9jYWxNYXRyaXhfU3RhZ2UwOwp1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfU3RhZ2UxX2MwX2MwX2MwOwppbiBmbG9hdDIgaW5Qb3NpdGlvbjsKaW4gaGFsZjQgaW5Db2xvcjsKaW4gZmxvYXQyIGluVGV4dHVyZUNvb3JkczsKb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TdGFnZTA7Cm91dCBmbG9hdCB2VGV4SW5kZXhfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwpvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQml0bWFwVGV4dAoJZmxvYXQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfU3RhZ2UwID0gdW5vcm1UZXhDb29yZHMgKiB1QXRsYXNTaXplSW52X1N0YWdlMDsKCXZUZXhJbmRleF9TdGFnZTAgPSAodGV4SWR4KTsKCXZpbkNvbG9yX1N0YWdlMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfU3RhZ2UwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TdGFnZTAueXc7Cglza19Qb3NpdGlvbiA9IGZsb2F0NChpblBvc2l0aW9uLnggLCBpblBvc2l0aW9uLnksIDAsIDEpOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9ICgoKHVtYXRyaXhfU3RhZ2UxX2MwX2MwX2MwKSkgKiBfdG1wXzBfaW5Qb3NpdGlvbi54eTEpLnh5OwoJfQp9CgAAAAAAAAAAAAAAAACLBwAAdW5pZm9ybSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1N0YWdlMV9jMF9jMDsKdW5pZm9ybSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TdGFnZTFfYzBfYzA7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzBfYzA7CnVuaWZvcm0gaGFsZjQgdXN0YXJ0X1N0YWdlMV9jMF9jMF9jMTsKdW5pZm9ybSBoYWxmNCB1ZW5kX1N0YWdlMV9jMF9jMF9jMTsKdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwOwppbiBmbG9hdDIgdlRleHR1cmVDb29yZHNfU3RhZ2UwOwppbiBmbG9hdCB2VGV4SW5kZXhfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CmluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTA7CmhhbGY0IExpbmVhckdyYWRpZW50TGF5b3V0X1N0YWdlMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gaGFsZjQoaGFsZih2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAueCkgKyA5Ljk5OTk5OTc0NzM3ODc1MTZlLTA2LCAxLjAsIDAuMCwgMC4wKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJHcmFkaWVudExheW91dF9TdGFnZTFfYzBfYzBfYzBfYzAoX2lucHV0KTsKfQpoYWxmNCBTaW5nbGVJbnRlcnZhbEdyYWRpZW50Q29sb3JpemVyX1N0YWdlMV9jMF9jMF9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIG1peCh1c3RhcnRfU3RhZ2UxX2MwX2MwX2MxLCB1ZW5kX1N0YWdlMV9jMF9jMF9jMSwgaGFsZihfY29vcmRzLngpKTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRFZmZlY3RfU3RhZ2UxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghdHJ1ZSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1N0YWdlMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TdGFnZTFfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxHcmFkaWVudENvbG9yaXplcl9TdGFnZTFfYzBfYzBfYzEoX2lucHV0LCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglAaWYgKGZhbHNlKSAKCXsKCQlvdXRDb2xvci54eXogKj0gb3V0Q29sb3IudzsKCX0KCXJldHVybiBvdXRDb2xvcjsKfQpoYWxmNCBPdmVycmlkZUlucHV0RnJhZ21lbnRQcm9jZXNzb3JfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBDbGFtcGVkR3JhZGllbnRFZmZlY3RfU3RhZ2UxX2MwX2MwKGZhbHNlID8gaGFsZjQoMCkgOiBoYWxmNCgxLjAwMDAwMCwgMS4wMDAwMDAsIDEuMDAwMDAwLCAxLjAwMDAwMCkpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAsIHZUZXh0dXJlQ29vcmRzX1N0YWdlMCkuYWFhYTsKCX0KCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IHRleENvbG9yOwoJaGFsZjQgb3V0cHV0X1N0YWdlMTsKCW91dHB1dF9TdGFnZTEgPSBPdmVycmlkZUlucHV0RnJhZ21lbnRQcm9jZXNzb3JfU3RhZ2UxX2MwKG91dHB1dENvbG9yX1N0YWdlMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1N0YWdlMSAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAKAAAAaW5Qb3NpdGlvbgAABwAAAGluQ29sb3IADwAAAGluVGV4dHVyZUNvb3JkcwAAAAAAAAAAAA==","K4JAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAABAAAAAABBAMABCEADAAAAAAAAAIAAAABIAIACAAAAABAGOAAAAQAAAABQCVAEQAEAAAAAAAAAAAACUAAAAAAACAAAAAEBSAIAAA":"BAAAAExTS1MFAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdmxvY2FsQ29vcmRfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1N0YWdlMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IGZsb2F0NChwb3NpdGlvbi54ICwgcG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAEBAAAAAAAAAQEAmAQAAHVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzBfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMDsKdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxOwppbiBmbG9hdDIgdmxvY2FsQ29vcmRfU3RhZ2UwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TdGFnZTFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TdGFnZTFfYzBfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKfQpoYWxmNCBEZXZpY2VTcGFjZUVmZmVjdF9TdGFnZTFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TdGFnZTFfYzBfYzBfYzAoX2lucHV0LCBza19GcmFnQ29vcmQueHkpOwp9CmhhbGY0IEJsZW5kX1N0YWdlMV9jMChoYWxmNCBfaW5wdXQpIAp7CgkvLyBCbGVuZCBtb2RlOiBEc3RJbiAoQ29tcG9zZS1PbmUgYmVoYXZpb3IpCglyZXR1cm4gYmxlbmRfZHN0X2luKERldmljZVNwYWNlRWZmZWN0X1N0YWdlMV9jMF9jMChoYWxmNCgxKSksIF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1N0YWdlMTsKCW91dHB1dF9TdGFnZTEgPSBCbGVuZF9TdGFnZTFfYzAob3V0cHV0Q292ZXJhZ2VfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRfU3RhZ2UxOwoJfQp9CgABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAACAAAAHBvc2l0aW9uCgAAAGxvY2FsQ29vcmQAAAAAAAAAAAAA","K4QACAAAAAGAAAAAAIWP57ZDH37P7777777QCAAAAAAAAAAAEIQAMAAAAAAAABAAAAAFABAAIAAAAAEAZYAAACAAAAAGAKUASAAQAAAAAAAAAAAAKQAAAAAAAIAAAAAQGIBAAAA":"BAAAAExTS1PvAAAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7Cm91dCBoYWxmNCB2Y29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TdGFnZTAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKfQoAAAEBAAAAAAAAAQEA/QMAAHVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzBfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMTsKaW4gaGFsZjQgdmNvbG9yX1N0YWdlMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfU3RhZ2UxX2MwX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7Cn0KaGFsZjQgRGV2aWNlU3BhY2VFZmZlY3RfU3RhZ2UxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgc2tfRnJhZ0Nvb3JkLnh5KTsKfQpoYWxmNCBCbGVuZF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJLy8gQmxlbmQgbW9kZTogRHN0SW4gKENvbXBvc2UtT25lIGJlaGF2aW9yKQoJcmV0dXJuIGJsZW5kX2RzdF9pbihEZXZpY2VTcGFjZUVmZmVjdF9TdGFnZTFfYzBfYzAoaGFsZjQoMSkpLCBfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gQmxlbmRfU3RhZ2UxX2MwKG91dHB1dENvdmVyYWdlX1N0YWdlMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogb3V0cHV0X1N0YWdlMTsKCX0KfQoAAAAAAQEAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAgAAABwb3NpdGlvbgUAAABjb2xvcgAAAAAAAAAAAAAA","AWQAGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAAAUABAAAAACAAAAAEBSAI":"BAAAAExTS1MJAgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHVsb2NhbE1hdHJpeF9TdGFnZTA7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TdGFnZTAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1N0YWdlMC55dzsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAAAAOAgAAaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TdGFnZTA7CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwOwoJfQp9CgAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAKAAAAaW5Qb3NpdGlvbgAABwAAAGluQ29sb3IADAAAAGluQ2lyY2xlRWRnZQAAAAAAAAAA","AWAAGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAAAUABAAAAACAAAAAEBSAE":"BAAAAExTS1OzAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IGZsb2F0NChfdG1wXzBfaW5Qb3NpdGlvbi54ICwgX3RtcF8wX2luUG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAAAAAAAAAAAAA4CAABpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TdGFnZTA7CmluIGhhbGY0IHZpbkNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1N0YWdlMDsKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZpbkNvbG9yX1N0YWdlMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAABpblBvc2l0aW9uAAAHAAAAaW5Db2xvcgAMAAAAaW5DaXJjbGVFZGdlAAAAAAAAAAA=","AWQAGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAIAGGIDYAAAQAAAAAAAAAVAAAABAAAAAAABBEMAAAA":"BAAAAExTS1MJAgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHVsb2NhbE1hdHJpeF9TdGFnZTA7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TdGFnZTAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1N0YWdlMC55dzsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAQEAAAAAAAABAQDwAwAAdW5pZm9ybSBmbG9hdDQgdWlubmVyUmVjdF9TdGFnZTFfYzA7CnVuaWZvcm0gaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1N0YWdlMV9jMDsKaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CmhhbGY0IENpcmN1bGFyUlJlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TdGFnZTFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfU3RhZ2UxX2MwLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfU3RhZ2UxX2MwLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwOwoJb3V0cHV0Q29sb3JfU3RhZ2UwID0gdmluQ29sb3JfU3RhZ2UwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1N0YWdlMTsKCW91dHB1dF9TdGFnZTEgPSBDaXJjdWxhclJSZWN0X1N0YWdlMV9jMChvdXRwdXRDb3ZlcmFnZV9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dF9TdGFnZTE7Cgl9Cn0KAAEBAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAKAAAAaW5Qb3NpdGlvbgAABwAAAGluQ29sb3IADAAAAGluQ2lyY2xlRWRnZQAAAAAAAAAA","K4IAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAAAAAAAAVIRQAAACAAAAA5AIABAAAAAAAAJQDBAMAAAAAAAAAAAKAAQAAAABAAAAACAJACIAAAAA":"BAAAAExTS1OjAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSAoKCh1bWF0cml4X1N0YWdlMV9jMF9jMCkgKiAodW1hdHJpeF9TdGFnZTFfYzApKSAqIGxvY2FsQ29vcmQueHkxKS54eTsKCX0KfQoAAAAAAAAAAAAAAAAAHQMAAHVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMTsKaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1N0YWdlMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzAoX2lucHV0KTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gTWF0cml4RWZmZWN0X1N0YWdlMV9jMChvdXRwdXRDb2xvcl9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TdGFnZTEgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24KAAAAbG9jYWxDb29yZAAAAAAAAAAAAAA=","K4IAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAAAAAAAAVIRQCAICAAAAA5BIEBAAAAAAAAJQDBAMAACAIAAAAAAKAAQAAAABAAAAACAJACIAAAAA":"BAAAAExTS1OjAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSAoKCh1bWF0cml4X1N0YWdlMV9jMF9jMCkgKiAodW1hdHJpeF9TdGFnZTFfYzApKSAqIGxvY2FsQ29vcmQueHkxKS54eTsKCX0KfQoAAAAAAAAAAAAAAAAARQQAAHVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzA7CnVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TdGFnZTFfYzBfYzBfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMTsKaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGluQ29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTA7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1N0YWdlMV9jMF9jMF9jMC54eSwgdWNsYW1wX1N0YWdlMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMF9jMChfaW5wdXQpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TdGFnZTFfYzBfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1N0YWdlMTsKCW91dHB1dF9TdGFnZTEgPSBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwKG91dHB1dENvbG9yX1N0YWdlMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1N0YWdlMSAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAABwb3NpdGlvbgoAAABsb2NhbENvb3JkAAAAAAAAAAAAAA==","K4IAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAAAAAAAAFIQA2AAAAAAAABAAAAAHIBAAIAAAAAAACMAYIDAAAAAAAAAAAAAKAAQAAAABAAAAACAJACIAAA":"BAAAAExTS1NpAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzBfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSAoKCh1bWF0cml4X1N0YWdlMV9jMF9jMCkpICogbG9jYWxDb29yZC54eTEpLnh5OwoJfQp9CgAAAAAAAAAAAAAAAAAAADUDAAB1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfU3RhZ2UxX2MwX2MwOwp1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTE7CmluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTA7CmhhbGY0IFRleHR1cmVFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxLCB2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTApOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TdGFnZTFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCS8vIEJsZW5kIG1vZGU6IE1vZHVsYXRlIChDb21wb3NlLU9uZSBiZWhhdmlvcikKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwKGhhbGY0KDEpKSwgX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1N0YWdlMTsKCW91dHB1dF9TdGFnZTEgPSBCbGVuZF9TdGFnZTFfYzAob3V0cHV0Q29sb3JfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfU3RhZ2UxICogb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAAHBvc2l0aW9uCgAAAGxvY2FsQ29vcmQAAAAAAAAAAAAA","K4IAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAAAAAAAAVIRQAAACAAAABGAIEBSAAAAAAAAAAAAACUAAAAEAAAAAAAEEJQAAAAA":"BAAAAExTS1NjAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSAoKCh1bWF0cml4X1N0YWdlMV9jMCkpICogbG9jYWxDb29yZC54eTEpLnh5OwoJfQp9CgAAAAAAAAAAAAAAAACSAgAAdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1N0YWdlMV9jMDsKdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxOwppbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfU3RhZ2UxOwoJb3V0cHV0X1N0YWdlMSA9IE1hdHJpeEVmZmVjdF9TdGFnZTFfYzAob3V0cHV0Q29sb3JfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfU3RhZ2UxICogb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24KAAAAbG9jYWxDb29yZAAAAAAAAAAAAAA=","K4IAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAAAAAAAAVIRQYAAAAAAQAAQAAAAGJCABAAACAACAAAAABAGOAQAAQAAAABQCVAEQAGAAAAAAAAAAAVAAAAAAAAQAAAABAMQBAAAAA":"BAAAAExTS1NjAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSAoKCh1bWF0cml4X1N0YWdlMV9jMCkpICogbG9jYWxDb29yZC54eTEpLnh5OwoJfQp9CgAAAAAAAAAAAAAAAAAEFAAAdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1N0YWdlMV9jMDsKdW5pZm9ybSBoYWxmMiB1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMDsKdW5pZm9ybSBoYWxmNCB1XzFfS2VybmVsX1N0YWdlMV9jMF9jMFs3XTsKdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1N0YWdlMV9jMF9jMF9jMDsKdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1N0YWdlMV9jMF9jMF9jMF9jMDsKdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxOwppbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfU3RhZ2UxX2MwX2MwX2MwX2MwLngsIHVjbGFtcF9TdGFnZTFfYzBfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfU3RhZ2UxX2MwX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TdGFnZTFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgXzJfY29sb3IgPSBoYWxmNCgwLjApOwoJZmxvYXQyIF8zX2Nvb3JkID0gKHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCAtIGZsb2F0MigoMTIuMCAqIHVfMF9JbmNyZW1lbnRfU3RhZ2UxX2MwX2MwKSkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNl0ueCkpOwoJcmV0dXJuIF8yX2NvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fU3RhZ2UxX2MwX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gTWF0cml4RWZmZWN0X1N0YWdlMV9jMChvdXRwdXRDb2xvcl9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TdGFnZTEgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24KAAAAbG9jYWxDb29yZAAAAAAAAAAAAAA=","K4IAAAAAAAGAAAAAAIWP577774BSZ7X7777QCAAAAAAAAAAAVIRQYAAAAAAACAQAAAAGJCABAAAAAICAAAAABAGOAACAQAAAABQCVAEQAEAIAAAAAAAAAVAAAAAAAAQAAAABAMQBAAAAA":"BAAAAExTS1NjAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TdGFnZTFfYzA7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gZmxvYXQyIGxvY2FsQ29vcmQ7Cm91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSAoKCh1bWF0cml4X1N0YWdlMV9jMCkpICogbG9jYWxDb29yZC54eTEpLnh5OwoJfQp9CgAAAAAAAAAAAAAAAAAEFAAAdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1N0YWdlMV9jMDsKdW5pZm9ybSBoYWxmMiB1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMDsKdW5pZm9ybSBoYWxmNCB1XzFfS2VybmVsX1N0YWdlMV9jMF9jMFs3XTsKdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1N0YWdlMV9jMF9jMF9jMDsKdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1N0YWdlMV9jMF9jMF9jMF9jMDsKdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxOwppbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfU3RhZ2UxX2MwX2MwX2MwX2MwLnksIHVjbGFtcF9TdGFnZTFfYzBfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfU3RhZ2UxX2MwX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TdGFnZTFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgXzJfY29sb3IgPSBoYWxmNCgwLjApOwoJZmxvYXQyIF8zX2Nvb3JkID0gKHZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCAtIGZsb2F0MigoMTIuMCAqIHVfMF9JbmNyZW1lbnRfU3RhZ2UxX2MwX2MwKSkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMF0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMV0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbMl0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbM10udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNF0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0ueCkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0ueSkpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0ueikpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNV0udykpOwoJKF8zX2Nvb3JkICs9IGZsb2F0Mih1XzBfSW5jcmVtZW50X1N0YWdlMV9jMF9jMCkpOwoJKF8yX2NvbG9yICs9IChNYXRyaXhFZmZlY3RfU3RhZ2UxX2MwX2MwX2MwKF9pbnB1dCwgXzNfY29vcmQpICogdV8xX0tlcm5lbF9TdGFnZTFfYzBfYzBbNl0ueCkpOwoJcmV0dXJuIF8yX2NvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fU3RhZ2UxX2MwX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfU3RhZ2UwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gTWF0cml4RWZmZWN0X1N0YWdlMV9jMChvdXRwdXRDb2xvcl9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TdGFnZTEgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24KAAAAbG9jYWxDb29yZAAAAAAAAAAAAAA=","NUAAAEAAAAAAAAAAAAAAAAYAAAAACFX777776AAAAAAAAAAAAAUREAAAAIAAAAAAJQBRAMQAAAAAAAAAACAAUAAAABAAAAAAABBEMAA":"BAAAAExTS1MfAQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHV2aWV3TWF0cml4X1N0YWdlMDsKaW4gZmxvYXQyIHBvc2l0aW9uOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBWZXJ0aWNlc0dQCglmbG9hdDIgX3RtcF8wX3Bvc2l0aW9uID0gdXZpZXdNYXRyaXhfU3RhZ2UwLnh6ICogcG9zaXRpb24gKyB1dmlld01hdHJpeF9TdGFnZTAueXc7Cglza19Qb3NpdGlvbiA9IGZsb2F0NChfdG1wXzBfcG9zaXRpb24ueCAsIF90bXBfMF9wb3NpdGlvbi55LCAwLCAxKTsKfQoAAAEBAAAAAAAAAQEAzQUAAHVuaWZvcm0gaGFsZjQgdUNvbG9yX1N0YWdlMDsKdW5pZm9ybSBoYWxmIHVjb3JuZXJSYWRpdXNfU3RhZ2UxX2MwOwp1bmlmb3JtIGZsb2F0NCB1cHJveHlSZWN0X1N0YWdlMV9jMDsKdW5pZm9ybSBoYWxmIHVibHVyUmFkaXVzX1N0YWdlMV9jMDsKdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1N0YWdlMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIF9jb29yZHMpOwp9CmhhbGY0IFJSZWN0Qmx1ckVmZmVjdF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIHRyYW5zbGF0ZWRGcmFnUG9zRmxvYXQgPSBza19GcmFnQ29vcmQueHkgLSB1cHJveHlSZWN0X1N0YWdlMV9jMC54eTsKCWZsb2F0MiBwcm94eUNlbnRlciA9ICh1cHJveHlSZWN0X1N0YWdlMV9jMC56dyAtIHVwcm94eVJlY3RfU3RhZ2UxX2MwLnh5KSAqIDAuNTsKCWhhbGYgZWRnZVNpemUgPSAoMi4wICogdWJsdXJSYWRpdXNfU3RhZ2UxX2MwICsgdWNvcm5lclJhZGl1c19TdGFnZTFfYzApICsgMC41OwoJdHJhbnNsYXRlZEZyYWdQb3NGbG9hdCAtPSBwcm94eUNlbnRlcjsKCWhhbGYyIGZyYWdEaXJlY3Rpb24gPSBoYWxmMihzaWduKHRyYW5zbGF0ZWRGcmFnUG9zRmxvYXQpKTsKCXRyYW5zbGF0ZWRGcmFnUG9zRmxvYXQgPSBhYnModHJhbnNsYXRlZEZyYWdQb3NGbG9hdCk7CgloYWxmMiB0cmFuc2xhdGVkRnJhZ1Bvc0hhbGYgPSBoYWxmMih0cmFuc2xhdGVkRnJhZ1Bvc0Zsb2F0IC0gKHByb3h5Q2VudGVyIC0gZmxvYXQoZWRnZVNpemUpKSk7Cgl0cmFuc2xhdGVkRnJhZ1Bvc0hhbGYgPSBtYXgodHJhbnNsYXRlZEZyYWdQb3NIYWxmLCAwLjApOwoJdHJhbnNsYXRlZEZyYWdQb3NIYWxmICo9IGZyYWdEaXJlY3Rpb247Cgl0cmFuc2xhdGVkRnJhZ1Bvc0hhbGYgKz0gaGFsZjIoZWRnZVNpemUpOwoJaGFsZjIgcHJveHlEaW1zID0gaGFsZjIoMi4wICogZWRnZVNpemUpOwoJaGFsZjIgdGV4Q29vcmQgPSB0cmFuc2xhdGVkRnJhZ1Bvc0hhbGYgLyBwcm94eURpbXM7CglyZXR1cm4gX2lucHV0ICogVGV4dHVyZUVmZmVjdF9TdGFnZTFfYzBfYzAoX2lucHV0LCBmbG9hdDIodGV4Q29vcmQpKS53Owp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBWZXJ0aWNlc0dQCgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB1Q29sb3JfU3RhZ2UwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfU3RhZ2UxOwoJb3V0cHV0X1N0YWdlMSA9IFJSZWN0Qmx1ckVmZmVjdF9TdGFnZTFfYzAob3V0cHV0Q292ZXJhZ2VfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRfU3RhZ2UxOwoJfQp9CgAAAAABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAABAAAACAAAAHBvc2l0aW9uAAAAAAAAAAA=","DISAAAAAMAAAAABAYDRP7H6CAIAAAABAAAAAAABAMQAKAAWSAAAAAIAAAAAGAIQAAAAAAACUAAAAAAACAAAAAEBSAI":"BAAAAExTS1P+AQAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQyIHVBdGxhc1NpemVJbnZfU3RhZ2UwOwppbiBmbG9hdDIgaW5Qb3NpdGlvbjsKaW4gZmxvYXQyIGluVGV4dHVyZUNvb3JkczsKb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TdGFnZTA7Cm91dCBmbG9hdCB2VGV4SW5kZXhfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglmbG9hdCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfU3RhZ2UwOwoJdlRleEluZGV4X1N0YWdlMCA9ICh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KGluUG9zaXRpb24ueCAsIGluUG9zaXRpb24ueSwgMCwgMSk7Cn0KAAAAAAAAAAAAAAAAAAB0AwAAdW5pZm9ybSBoYWxmNCB1Q29sb3JfU3RhZ2UwOwp1bmlmb3JtIGhhbGY0IHVjb2xvcl9TdGFnZTFfYzBfYzA7CnVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMDsKaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1N0YWdlMDsKaW4gZmxvYXQgdlRleEluZGV4X1N0YWdlMDsKaGFsZjQgQ29uc3RDb2xvclByb2Nlc3Nvcl9TdGFnZTFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHVjb2xvcl9TdGFnZTFfYzBfYzA7Cn0KaGFsZjQgQmxlbmRfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCS8vIEJsZW5kIG1vZGU6IE1vZHVsYXRlIChTa01vZGUgYmVoYXZpb3IpCglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ29uc3RDb2xvclByb2Nlc3Nvcl9TdGFnZTFfYzBfYzAoaGFsZjQoMSkpLCBfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB1Q29sb3JfU3RhZ2UwOwoJaGFsZjQgdGV4Q29sb3I7Cgl7CgkJdGV4Q29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwLCB2VGV4dHVyZUNvb3Jkc19TdGFnZTApOwoJfQoJb3V0cHV0Q29sb3JfU3RhZ2UwID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogdGV4Q29sb3I7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gQmxlbmRfU3RhZ2UxX2MwKG91dHB1dENvbG9yX1N0YWdlMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1N0YWdlMSAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAoAAABpblBvc2l0aW9uAAAPAAAAaW5UZXh0dXJlQ29vcmRzAAAAAAAAAAAA","AWQQGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAAAUABAAAAACAAAAAEBSAI":"BAAAAExTS1MJAgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHVsb2NhbE1hdHJpeF9TdGFnZTA7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TdGFnZTAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1N0YWdlMC55dzsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAAACfAgAAaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TdGFnZTA7CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dENvdmVyYWdlX1N0YWdlMDsKCX0KfQoAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAKAAAAaW5Qb3NpdGlvbgAABwAAAGluQ29sb3IADAAAAGluQ2lyY2xlRWRnZQAAAAAAAAAA","CIRAAAAABCYIR6AIWAMMAAAAAAAAAAAAADEIKFAAAAAAAQAFAAAAAIAAAAAAAIJDAAAAAAA":"BAAAAExTS1N3AgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHVsb2NhbE1hdHJpeF9TdGFnZTA7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDIgaW5FbGxpcHNlT2Zmc2V0OwppbiBmbG9hdDQgaW5FbGxpcHNlUmFkaWk7Cm91dCBmbG9hdDIgdkVsbGlwc2VPZmZzZXRzX1N0YWdlMDsKb3V0IGZsb2F0NCB2RWxsaXBzZVJhZGlpX1N0YWdlMDsKb3V0IGhhbGY0IHZpbkNvbG9yX1N0YWdlMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgl2RWxsaXBzZU9mZnNldHNfU3RhZ2UwID0gaW5FbGxpcHNlT2Zmc2V0OwoJdkVsbGlwc2VSYWRpaV9TdGFnZTAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1N0YWdlMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1N0YWdlMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfU3RhZ2UwLnl3OwoJc2tfUG9zaXRpb24gPSBmbG9hdDQoX3RtcF8wX2luUG9zaXRpb24ueCAsIF90bXBfMF9pblBvc2l0aW9uLnksIDAsIDEpOwp9CgAAAQEAAAAAAAABAQCLBQAAdW5pZm9ybSBmbG9hdDQgdXJlY3RVbmlmb3JtX1N0YWdlMV9jMDsKaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TdGFnZTA7CmluIGZsb2F0NCB2RWxsaXBzZVJhZGlpX1N0YWdlMDsKaW4gaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwpoYWxmNCBBQVJlY3RFZmZlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0NCBwcmV2UmVjdCA9IGZsb2F0NCgtMS4wMDAwMDAsIC0xLjAwMDAwMCwgLTEuMDAwMDAwLCAtMS4wMDAwMDApOwoJaGFsZiBjb3ZlcmFnZTsKCUBzd2l0Y2ggKDEpIAoJewoJCWNhc2UgMDogICAgY2FzZSAyOiAgICAgICAgY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fU3RhZ2UxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TdGFnZTFfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSA/IDEgOiAwKTsKCQlicmVhazsKCQlkZWZhdWx0OiAgICAgICAgaGFsZjQgZGlzdHM0ID0gY2xhbXAoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fU3RhZ2UxX2MwKSwgMC4wLCAxLjApOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCUBpZiAoMSA9PSAyIHx8IDEgPT0gMykgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBfaW5wdXQgKiBjb3ZlcmFnZTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1N0YWdlMC54eTsKCWZsb2F0IHRlc3QgPSBkb3Qob2Zmc2V0LCBvZmZzZXQpIC0gMS4wOwoJZmxvYXQyIGdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfU3RhZ2UwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gaGFsZjQoaGFsZihlZGdlQWxwaGEpKTsKCWhhbGY0IG91dHB1dF9TdGFnZTE7CglvdXRwdXRfU3RhZ2UxID0gQUFSZWN0RWZmZWN0X1N0YWdlMV9jMChvdXRwdXRDb3ZlcmFnZV9TdGFnZTApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1N0YWdlMCAqIG91dHB1dF9TdGFnZTE7Cgl9Cn0KAAABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAACgAAAGluUG9zaXRpb24AAAcAAABpbkNvbG9yAA8AAABpbkVsbGlwc2VPZmZzZXQADgAAAGluRWxsaXBzZVJhZGlpAAAAAAAAAAAAAA==","AWQAGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAIAXCIAEAAAAAAKQAAAAAAAIAAAAAQGIBAA":"BAAAAExTS1MJAgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHVsb2NhbE1hdHJpeF9TdGFnZTA7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TdGFnZTAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1N0YWdlMC55dzsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAQEAAAAAAAABAQACBQAAdW5pZm9ybSBmbG9hdDQgdXJlY3RVbmlmb3JtX1N0YWdlMV9jMDsKaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CmhhbGY0IEFBUmVjdEVmZmVjdF9TdGFnZTFfYzAoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQ0IHByZXZSZWN0ID0gZmxvYXQ0KC0xLjAwMDAwMCwgLTEuMDAwMDAwLCAtMS4wMDAwMDAsIC0xLjAwMDAwMCk7CgloYWxmIGNvdmVyYWdlOwoJQHN3aXRjaCAoMSkgCgl7CgkJY2FzZSAwOiAgICBjYXNlIDI6ICAgICAgICBjb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TdGFnZTFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1N0YWdlMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpID8gMSA6IDApOwoJCWJyZWFrOwoJCWRlZmF1bHQ6ICAgICAgICBoYWxmNCBkaXN0czQgPSBjbGFtcChoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TdGFnZTFfYzApLCAwLjAsIDEuMCk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJQGlmICgxID09IDIgfHwgMSA9PSAzKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIF9pbnB1dCAqIGNvdmVyYWdlOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TdGFnZTA7CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfU3RhZ2UxOwoJb3V0cHV0X1N0YWdlMSA9IEFBUmVjdEVmZmVjdF9TdGFnZTFfYzAob3V0cHV0Q292ZXJhZ2VfU3RhZ2UwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRfU3RhZ2UxOwoJfQp9CgAAAAEBAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAKAAAAaW5Qb3NpdGlvbgAABwAAAGluQ29sb3IADAAAAGluQ2lyY2xlRWRnZQAAAAAAAAAA","K4QACAAAAAGAAAAAAIWP57ZDH37P7777777QCAAAAAAAAAAAIACQAAAAEAAAAAAAEERQAAA":"BAAAAExTS1PvAAAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7Cm91dCBoYWxmNCB2Y29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TdGFnZTAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAKAEAAGluIGhhbGY0IHZjb2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24FAAAAY29sb3IAAAAAAAAAAAAAAA==","K4QAAAAAAAGAAAAAAIWP57ZDH37P7777777QCAAAAAAAAAAAIACQAAAAEAAAAAAAEERQAAA":"BAAAAExTS1PvAAAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CmluIGZsb2F0MiBwb3NpdGlvbjsKaW4gaGFsZjQgY29sb3I7Cm91dCBoYWxmNCB2Y29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TdGFnZTAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KHBvc2l0aW9uLnggLCBwb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAAAAAAAAAAAAKAEAAGluIGhhbGY0IHZjb2xvcl9TdGFnZTA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1N0YWdlMDsKCW91dHB1dENvbG9yX1N0YWdlMCA9IHZjb2xvcl9TdGFnZTA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TdGFnZTAgKiBvdXRwdXRDb3ZlcmFnZV9TdGFnZTA7Cgl9Cn0KAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAcG9zaXRpb24FAAAAY29sb3IAAAAAAAAAAAAAAA==","AWQAGAAAQAAIXCEPAGGP777777777737AAAAAAAAAAAIAGCIDYAAAQAAAAAAAAAVAAAABAAAAAAABBEMAAAA":"BAAAAExTS1MJAgAAdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7CnVuaWZvcm0gZmxvYXQ0IHVsb2NhbE1hdHJpeF9TdGFnZTA7CmluIGZsb2F0MiBpblBvc2l0aW9uOwppbiBoYWxmNCBpbkNvbG9yOwppbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwpvdXQgaGFsZjQgdmluQ29sb3JfU3RhZ2UwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TdGFnZTAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TdGFnZTAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1N0YWdlMC55dzsKCXNrX1Bvc2l0aW9uID0gZmxvYXQ0KF90bXBfMF9pblBvc2l0aW9uLnggLCBfdG1wXzBfaW5Qb3NpdGlvbi55LCAwLCAxKTsKfQoAAAAAAQEAAAAAAAABAQDaAwAAdW5pZm9ybSBmbG9hdDQgdWlubmVyUmVjdF9TdGFnZTFfYzA7CnVuaWZvcm0gaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1N0YWdlMV9jMDsKaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwppbiBoYWxmNCB2aW5Db2xvcl9TdGFnZTA7CmhhbGY0IENpcmN1bGFyUlJlY3RfU3RhZ2UxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TdGFnZTFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfU3RhZ2UxX2MwLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfU3RhZ2UxX2MwLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TdGFnZTA7CgloYWxmNCBvdXRwdXRDb2xvcl9TdGFnZTA7CglvdXRwdXRDb2xvcl9TdGFnZTAgPSB2aW5Db2xvcl9TdGFnZTA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1N0YWdlMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfU3RhZ2UxOwoJb3V0cHV0X1N0YWdlMSA9IENpcmN1bGFyUlJlY3RfU3RhZ2UxX2MwKG91dHB1dENvdmVyYWdlX1N0YWdlMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfU3RhZ2UwICogb3V0cHV0X1N0YWdlMTsKCX0KfQoAAAABAQABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAACgAAAGluUG9zaXRpb24AAAcAAABpbkNvbG9yAAwAAABpbkNpcmNsZUVkZ2UAAAAAAAAAAA=="}}