gl-conformance
Version:
Khronos WebGL conformance test suite
1 lines • 4.34 MB
JSON
{"../resources/cookies.js":"LypcCnwqfAp8KnwgIDo6IGNvb2tpZXMuanMgOjoKfCp8CnwqfCAgQSBjb21wbGV0ZSBjb29raWVzIHJlYWRlci93cml0ZXIgZnJhbWV3b3JrIHdpdGggZnVsbCB1bmljb2RlIHN1cHBvcnQuCnwqfAp8KnwgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvRE9NL2RvY3VtZW50LmNvb2tpZQp8KnwKfCp8ICBUaGlzIGZyYW1ld29yayBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDMgb3IgbGF0ZXIuCnwqfCAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAtc3RhbmRhbG9uZS5odG1sCnwqfAp8KnwgIFN5bnRheGVzOgp8KnwKfCp8ICAqIGRvY0Nvb2tpZXMuc2V0SXRlbShuYW1lLCB2YWx1ZVssIGVuZFssIHBhdGhbLCBkb21haW5bLCBzZWN1cmVdXV1dKQp8KnwgICogZG9jQ29va2llcy5nZXRJdGVtKG5hbWUpCnwqfCAgKiBkb2NDb29raWVzLnJlbW92ZUl0ZW0obmFtZVssIHBhdGhdLCBkb21haW4pCnwqfCAgKiBkb2NDb29raWVzLmhhc0l0ZW0obmFtZSkKfCp8ICAqIGRvY0Nvb2tpZXMua2V5cygpCnwqfApcKi8KCnZhciBkb2NDb29raWVzID0gewogIGdldEl0ZW06IGZ1bmN0aW9uIChzS2V5KSB7CiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKG5ldyBSZWdFeHAoIig/Oig/Ol58Lio7KVxccyoiICsgZW5jb2RlVVJJQ29tcG9uZW50KHNLZXkpLnJlcGxhY2UoL1tcLVwuXCtcKl0vZywgIlxcJCYiKSArICJcXHMqXFw9XFxzKihbXjtdKikuKiQpfF4uKiQiKSwgIiQxIikpIHx8IG51bGw7CiAgfSwKICBzZXRJdGVtOiBmdW5jdGlvbiAoc0tleSwgc1ZhbHVlLCB2RW5kLCBzUGF0aCwgc0RvbWFpbiwgYlNlY3VyZSkgewogICAgaWYgKCFzS2V5IHx8IC9eKD86ZXhwaXJlc3xtYXhcLWFnZXxwYXRofGRvbWFpbnxzZWN1cmUpJC9pLnRlc3Qoc0tleSkpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2YXIgc0V4cGlyZXMgPSAiIjsKICAgIGlmICh2RW5kKSB7CiAgICAgIHN3aXRjaCAodkVuZC5jb25zdHJ1Y3RvcikgewogICAgICAgIGNhc2UgTnVtYmVyOgogICAgICAgICAgc0V4cGlyZXMgPSB2RW5kID09PSBJbmZpbml0eSA/ICI7IGV4cGlyZXM9RnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVQiIDogIjsgbWF4LWFnZT0iICsgdkVuZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgU3RyaW5nOgogICAgICAgICAgc0V4cGlyZXMgPSAiOyBleHBpcmVzPSIgKyB2RW5kOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEYXRlOgogICAgICAgICAgc0V4cGlyZXMgPSAiOyBleHBpcmVzPSIgKyB2RW5kLnRvVVRDU3RyaW5nKCk7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgZG9jdW1lbnQuY29va2llID0gZW5jb2RlVVJJQ29tcG9uZW50KHNLZXkpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHNWYWx1ZSkgKyBzRXhwaXJlcyArIChzRG9tYWluID8gIjsgZG9tYWluPSIgKyBzRG9tYWluIDogIiIpICsgKHNQYXRoID8gIjsgcGF0aD0iICsgc1BhdGggOiAiIikgKyAoYlNlY3VyZSA/ICI7IHNlY3VyZSIgOiAiIik7CiAgICByZXR1cm4gdHJ1ZTsKICB9LAogIAogIAogIHJlbW92ZUl0ZW06IGZ1bmN0aW9uIChzS2V5LCBzUGF0aCwgc0RvbWFpbikgewogICAgaWYgKCFzS2V5IHx8ICF0aGlzLmhhc0l0ZW0oc0tleSkpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBkb2N1bWVudC5jb29raWUgPSBlbmNvZGVVUklDb21wb25lbnQoc0tleSkgKyAiPTsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIgKyAoIHNEb21haW4gPyAiOyBkb21haW49IiArIHNEb21haW4gOiAiIikgKyAoIHNQYXRoID8gIjsgcGF0aD0iICsgc1BhdGggOiAiIik7CiAgICByZXR1cm4gdHJ1ZTsKICB9LAogIGhhc0l0ZW06IGZ1bmN0aW9uIChzS2V5KSB7CiAgICByZXR1cm4gKG5ldyBSZWdFeHAoIig/Ol58O1xccyopIiArIGVuY29kZVVSSUNvbXBvbmVudChzS2V5KS5yZXBsYWNlKC9bXC1cLlwrXCpdL2csICJcXCQmIikgKyAiXFxzKlxcPSIpKS50ZXN0KGRvY3VtZW50LmNvb2tpZSk7CiAgfSwKICBrZXlzOiAvKiBvcHRpb25hbCBtZXRob2Q6IHlvdSBjYW4gc2FmZWx5IHJlbW92ZSBpdCEgKi8gZnVuY3Rpb24gKCkgewogICAgdmFyIGFLZXlzID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLygoPzpefFxzKjspW15cPV0rKSg/PTt8JCl8XlxzKnxccyooPzpcPVteO10qKT8oPzpcMXwkKS9nLCAiIikuc3BsaXQoL1xzKig/Olw9W147XSopPztccyovKTsKICAgIGZvciAodmFyIG5JZHggPSAwOyBuSWR4IDwgYUtleXMubGVuZ3RoOyBuSWR4KyspIHsgYUtleXNbbklkeF0gPSBkZWNvZGVVUklDb21wb25lbnQoYUtleXNbbklkeF0pOyB9CiAgICByZXR1cm4gYUtleXM7CiAgfQp9Ow==","../resources/js-test-post.js":"LyoKKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKioKKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAoqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCioqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCioqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKioKKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgoqKgoqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAoqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgoqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQoqKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAoqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQoqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgoqLwoKc2hvdWxkQmVUcnVlKCJzdWNjZXNzZnVsbHlQYXJzZWQiKTsKX2FkZFNwYW4oJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOwppZiAoX2pzVGVzdFByZVZlcmJvc2VMb2dnaW5nKSB7CiAgICBfbG9nVG9Db25zb2xlKCdURVNUIENPTVBMRVRFJyk7Cn0Kbm90aWZ5RmluaXNoZWRUb0hhcm5lc3MoKQo=","../resources/js-test-pre.js":"LyoKKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKioKKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAoqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCioqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCioqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKioKKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgoqKgoqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAoqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgoqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQoqKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAoqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQoqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgoqLwoKKGZ1bmN0aW9uKCkgewogIHZhciB0ZXN0SGFybmVzc0luaXRpYWxpemVkID0gZmFsc2U7CgogIHZhciBpbml0Tm9uS2hyb25vc0ZyYW1ld29yayA9IGZ1bmN0aW9uKCkgewogICAgaWYgKHRlc3RIYXJuZXNzSW5pdGlhbGl6ZWQpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgdGVzdEhhcm5lc3NJbml0aWFsaXplZCA9IHRydWU7CgogICAgLyogLS0gcGxhZm9ybSBzcGVjaWZpYyBjb2RlIC0tICovCgogICAgLy8gV2ViS2l0IFNwZWNpZmljIGNvZGUuIEFkZCB5b3VyIGNvZGUgaGVyZS4KICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiAhd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciA9IHdpbmRvdy50ZXN0UnVubmVyOwogICAgfQoKICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwogICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgIH0KICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgIC8vIFRoZSBXZWJLaXQgdGVzdGluZyBzeXN0ZW0gY29tcGFyZXMgY29uc29sZSBvdXRwdXQuCiAgICAgIC8vIEJlY2F1c2UgdGhlIG91dHB1dCBvZiB0aGUgV2ViR0wgVGVzdHMgaXMgR1BVIGRlcGVuZGVudAogICAgICAvLyB3ZSB0dXJuIG9mZiBjb25zb2xlIG1lc3NhZ2VzLgogICAgICB3aW5kb3cuY29uc29sZS5sb2cgPSBmdW5jdGlvbigpIHsgfTsKICAgICAgd2luZG93LmNvbnNvbGUuZXJyb3IgPSBmdW5jdGlvbigpIHsgfTsKICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRXZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQoZmFsc2UpOwoKICAgICAgLy8gUkFGIGRvZXNuJ3Qgd29yayBpbiBMYXlvdXRUZXN0cy4gRGlzYWJsZSBpdCBzbyB0aGUgdGVzdHMgd2lsbAogICAgICAvLyB1c2Ugc2V0VGltZW91dCBpbnN0ZWFkLgogICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gdW5kZWZpbmVkOwogICAgICB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gdW5kZWZpbmVkOwogICAgfQoKICAgIC8qIC0tIGVuZCBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIC0tKi8KICB9CgogIHRoaXMuaW5pdFRlc3RpbmdIYXJuZXNzID0gZnVuY3Rpb24oKSB7CiAgICBpbml0Tm9uS2hyb25vc0ZyYW1ld29yaygpOwogIH0KfSgpKTsKCmZ1bmN0aW9uIG5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKCkgewogIC8vIFdlYktpdCBTcGVjaWZpYyBjb2RlLiBBZGQgeW91ciBjb2RlIGhlcmUuCiAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogIH0KfQoKZnVuY3Rpb24gcmVwb3J0VGVzdFJlc3VsdHNUb0hhcm5lc3Moc3VjY2VzcywgbXNnKSB7CiAgaWYgKHdpbmRvdy5wYXJlbnQud2ViZ2xUZXN0SGFybmVzcykgewogICAgd2luZG93LnBhcmVudC53ZWJnbFRlc3RIYXJuZXNzLnJlcG9ydFJlc3VsdHMod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBzdWNjZXNzLCBtc2cpOwogIH0KfQoKZnVuY3Rpb24gbm90aWZ5RmluaXNoZWRUb0hhcm5lc3MoKSB7CiAgaWYgKHdpbmRvdy5wYXJlbnQud2ViZ2xUZXN0SGFybmVzcykgewogICAgd2luZG93LnBhcmVudC53ZWJnbFRlc3RIYXJuZXNzLm5vdGlmeUZpbmlzaGVkKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7CiAgfQogIGlmICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUpIHsKICAgIHdpbmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSgpOwogIH0KfQoKZnVuY3Rpb24gX2xvZ1RvQ29uc29sZShtc2cpCnsKICAgIGlmICh3aW5kb3cuY29uc29sZSkKICAgICAgd2luZG93LmNvbnNvbGUubG9nKG1zZyk7Cn0KCnZhciBfanNUZXN0UHJlVmVyYm9zZUxvZ2dpbmcgPSBmYWxzZTsKCmZ1bmN0aW9uIGVuYWJsZUpTVGVzdFByZVZlcmJvc2VMb2dnaW5nKCkKewogICAgX2pzVGVzdFByZVZlcmJvc2VMb2dnaW5nID0gdHJ1ZTsKfQoKZnVuY3Rpb24gZGVzY3JpcHRpb24obXNnKQp7CiAgICBpbml0VGVzdGluZ0hhcm5lc3MoKTsKICAgIGlmIChtc2cgPT09IHVuZGVmaW5lZCkgewogICAgICBtc2cgPSBkb2N1bWVudC50aXRsZTsKICAgIH0KICAgIC8vIEZvciBNU0lFIDYgY29tcGF0aWJpbGl0eQogICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICBzcGFuLmlubmVySFRNTCA9ICc8cD4nICsgbXNnICsgJzwvcD48cD5PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIjxzcGFuIGNsYXNzPSJwYXNzIj5QQVNTPC9zcGFuPiIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICI8c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4iLjwvcD4nOwogICAgdmFyIGRlc2NyaXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIik7CiAgICBpZiAoZGVzY3JpcHRpb24uZmlyc3RDaGlsZCkKICAgICAgICBkZXNjcmlwdGlvbi5yZXBsYWNlQ2hpbGQoc3BhbiwgZGVzY3JpcHRpb24uZmlyc3RDaGlsZCk7CiAgICBlbHNlCiAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kQ2hpbGQoc3Bhbik7CiAgICBpZiAoX2pzVGVzdFByZVZlcmJvc2VMb2dnaW5nKSB7CiAgICAgICAgX2xvZ1RvQ29uc29sZShtc2cpOwogICAgfQp9CgpmdW5jdGlvbiBfYWRkU3Bhbihjb250ZW50cykKewogICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHNwYW4pOyAvLyBpbnNlcnQgaXQgZmlyc3Qgc28gWEhUTUwga25vd3MgdGhlIG5hbWVzcGFjZQogICAgc3Bhbi5pbm5lckhUTUwgPSBjb250ZW50cyArICc8YnIgLz4nOwp9CgpmdW5jdGlvbiBkZWJ1Zyhtc2cpCnsKICAgIF9hZGRTcGFuKG1zZyk7CiAgICBpZiAoX2pzVGVzdFByZVZlcmJvc2VMb2dnaW5nKSB7CglfbG9nVG9Db25zb2xlKG1zZyk7CiAgICB9Cn0KCmZ1bmN0aW9uIGVzY2FwZUhUTUwodGV4dCkKewogICAgcmV0dXJuIHRleHQucmVwbGFjZSgvJi9nLCAiJmFtcDsiKS5yZXBsYWNlKC88L2csICImbHQ7Iik7Cn0KCmZ1bmN0aW9uIHRlc3RQYXNzZWQobXNnKQp7CiAgICByZXBvcnRUZXN0UmVzdWx0c1RvSGFybmVzcyh0cnVlLCBtc2cpOwogICAgX2FkZFNwYW4oJzxzcGFuPjxzcGFuIGNsYXNzPSJwYXNzIj5QQVNTPC9zcGFuPiAnICsgZXNjYXBlSFRNTChtc2cpICsgJzwvc3Bhbj4nKTsKICAgIGlmIChfanNUZXN0UHJlVmVyYm9zZUxvZ2dpbmcpIHsKCV9sb2dUb0NvbnNvbGUoJ1BBU1MgJyArIG1zZyk7CiAgICB9Cn0KCmZ1bmN0aW9uIHRlc3RGYWlsZWQobXNnKQp7CiAgICByZXBvcnRUZXN0UmVzdWx0c1RvSGFybmVzcyhmYWxzZSwgbXNnKTsKICAgIF9hZGRTcGFuKCc8c3Bhbj48c3BhbiBjbGFzcz0iZmFpbCI+RkFJTDwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3NwYW4+Jyk7CiAgICBfbG9nVG9Db25zb2xlKCdGQUlMICcgKyBtc2cpOwp9CgpmdW5jdGlvbiBhcmVBcnJheXNFcXVhbChfYSwgX2IpCnsKICAgIHRyeSB7CiAgICAgICAgaWYgKF9hLmxlbmd0aCAhPT0gX2IubGVuZ3RoKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfYS5sZW5ndGg7IGkrKykKICAgICAgICAgICAgaWYgKF9hW2ldICE9PSBfYltpXSkKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIGlzTWludXNaZXJvKG4pCnsKICAgIC8vIHRoZSBvbmx5IHdheSB0byB0ZWxsIDAgZnJvbSAtMCBpbiBKUyBpcyB0aGUgZmFjdCB0aGF0IDEvLTAgaXMKICAgIC8vIC1JbmZpbml0eSBpbnN0ZWFkIG9mIEluZmluaXR5CiAgICByZXR1cm4gbiA9PT0gMCAmJiAxL24gPCAwOwp9CgpmdW5jdGlvbiBpc1Jlc3VsdENvcnJlY3QoX2FjdHVhbCwgX2V4cGVjdGVkKQp7CiAgICBpZiAoX2V4cGVjdGVkID09PSAwKQogICAgICAgIHJldHVybiBfYWN0dWFsID09PSBfZXhwZWN0ZWQgJiYgKDEvX2FjdHVhbCkgPT09ICgxL19leHBlY3RlZCk7CiAgICBpZiAoX2FjdHVhbCA9PT0gX2V4cGVjdGVkKQogICAgICAgIHJldHVybiB0cnVlOwogICAgaWYgKHR5cGVvZihfZXhwZWN0ZWQpID09ICJudW1iZXIiICYmIGlzTmFOKF9leHBlY3RlZCkpCiAgICAgICAgcmV0dXJuIHR5cGVvZihfYWN0dWFsKSA9PSAibnVtYmVyIiAmJiBpc05hTihfYWN0dWFsKTsKICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoX2V4cGVjdGVkKSA9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoW10pKQogICAgICAgIHJldHVybiBhcmVBcnJheXNFcXVhbChfYWN0dWFsLCBfZXhwZWN0ZWQpOwogICAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBzdHJpbmdpZnkodikKewogICAgaWYgKHYgPT09IDAgJiYgMS92IDwgMCkKICAgICAgICByZXR1cm4gIi0wIjsKICAgIGVsc2UgcmV0dXJuICIiICsgdjsKfQoKZnVuY3Rpb24gZXZhbEFuZExvZyhfYSkKewogIGlmICh0eXBlb2YgX2EgIT0gInN0cmluZyIpCiAgICBkZWJ1ZygiV0FSTjogdHJ5QW5kTG9nKCkgZXhwZWN0cyBhIHN0cmluZyBhcmd1bWVudCIpOwoKICAvLyBMb2cgZmlyc3QgaW4gY2FzZSB0aGluZ3MgZ28gaG9ycmlibHkgd3Jvbmcgb3IgdGhpcyBjYXVzZXMgYSBzeW5jIGV2ZW50LgogIGRlYnVnKF9hKTsKCiAgdmFyIF9hdjsKICB0cnkgewogICAgIF9hdiA9IGV2YWwoX2EpOwogIH0gY2F0Y2ggKGUpIHsKICAgIHRlc3RGYWlsZWQoX2EgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZSk7CiAgfQogIHJldHVybiBfYXY7Cn0KCmZ1bmN0aW9uIHNob3VsZEJlKF9hLCBfYiwgcXVpZXQpCnsKICAgIGlmICh0eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlwZW9mIF9iICE9ICJzdHJpbmciKQogICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZSgpIGV4cGVjdHMgc3RyaW5nIGFyZ3VtZW50cyIpOwogICAgdmFyIGV4Y2VwdGlvbjsKICAgIHZhciBfYXY7CiAgICB0cnkgewogICAgICAgIF9hdiA9IGV2YWwoX2EpOwogICAgfSBjYXRjaCAoZSkgewogICAgICAgIGV4Y2VwdGlvbiA9IGU7CiAgICB9CiAgICB2YXIgX2J2ID0gZXZhbChfYik7CgogICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKICAgIGVsc2UgaWYgKGlzUmVzdWx0Q29ycmVjdChfYXYsIF9idikpIHsKICAgICAgICBpZiAoIXF1aWV0KSB7CiAgICAgICAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzICIgKyBfYik7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICh0eXBlb2YoX2F2KSA9PSB0eXBlb2YoX2J2KSkKICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIuIFdhcyAiICsgc3RyaW5naWZ5KF9hdikgKyAiLiIpOwogICAgZWxzZQogICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKfQoKZnVuY3Rpb24gc2hvdWxkTm90QmUoX2EsIF9iLCBxdWlldCkKewogICAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2IgIT0gInN0cmluZyIpCiAgICAgICAgZGVidWcoIldBUk46IHNob3VsZE5vdEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7CiAgICB2YXIgZXhjZXB0aW9uOwogICAgdmFyIF9hdjsKICAgIHRyeSB7CiAgICAgICAgX2F2ID0gZXZhbChfYSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgIH0KICAgIHZhciBfYnYgPSBldmFsKF9iKTsKCiAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBub3QgYmUgIiArIF9idiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKICAgIGVsc2UgaWYgKCFpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKSB7CiAgICAgICAgaWYgKCFxdWlldCkgewogICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBub3QgIiArIF9iKTsKICAgICAgICB9CiAgICB9IGVsc2UKICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgbm90IGJlICIgKyBfYnYgKyAiLiIpOwp9CgpmdW5jdGlvbiBzaG91bGRCZVRydWUoX2EpIHsgc2hvdWxkQmUoX2EsICJ0cnVlIik7IH0KZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShfYSkgeyBzaG91bGRCZShfYSwgImZhbHNlIik7IH0KZnVuY3Rpb24gc2hvdWxkQmVOYU4oX2EpIHsgc2hvdWxkQmUoX2EsICJOYU4iKTsgfQpmdW5jdGlvbiBzaG91bGRCZU51bGwoX2EpIHsgc2hvdWxkQmUoX2EsICJudWxsIik7IH0KCmZ1bmN0aW9uIHNob3VsZEJlRXF1YWxUb1N0cmluZyhhLCBiKQp7CiAgdmFyIHVuZXZhbGVkU3RyaW5nID0gJyInICsgYi5yZXBsYWNlKC8iL2csICJcIiIpICsgJyInOwogIHNob3VsZEJlKGEsIHVuZXZhbGVkU3RyaW5nKTsKfQoKZnVuY3Rpb24gc2hvdWxkRXZhbHVhdGVUbyhhY3R1YWwsIGV4cGVjdGVkKSB7CiAgLy8gQSBnZW5lcmFsLXB1cnBvc2UgY29tcGFyYXRvci4gICdhY3R1YWwnIHNob3VsZCBiZSBhIHN0cmluZyB0byBiZQogIC8vIGV2YWx1YXRlZCwgYXMgZm9yIHNob3VsZEJlKCkuICdleHBlY3RlZCcgbWF5IGJlIGFueSB0eXBlIGFuZCB3aWxsIGJlCiAgLy8gdXNlZCB3aXRob3V0IGJlaW5nIGV2YWwnZWQuCiAgaWYgKGV4cGVjdGVkID09IG51bGwpIHsKICAgIC8vIERvIHRoaXMgYmVmb3JlIHRoZSBvYmplY3QgdGVzdCwgc2luY2UgbnVsbCBpcyBvZiB0eXBlICdvYmplY3QnLgogICAgc2hvdWxkQmVOdWxsKGFjdHVhbCk7CiAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gInVuZGVmaW5lZCIpIHsKICAgIHNob3VsZEJlVW5kZWZpbmVkKGFjdHVhbCk7CiAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gImZ1bmN0aW9uIikgewogICAgLy8gQWxsIHRoaXMgZnVzcyBpcyB0byBhdm9pZCB0aGUgc3RyaW5nLWFyZyB3YXJuaW5nIGZyb20gc2hvdWxkQmUoKS4KICAgIHRyeSB7CiAgICAgIGFjdHVhbFZhbHVlID0gZXZhbChhY3R1YWwpOwogICAgfSBjYXRjaCAoZSkgewogICAgICB0ZXN0RmFpbGVkKCJFdmFsdWF0aW5nICIgKyBhY3R1YWwgKyAiOiBUaHJldyBleGNlcHRpb24gIiArIGUpOwogICAgICByZXR1cm47CiAgICB9CiAgICBzaG91bGRCZSgiJyIgKyBhY3R1YWxWYWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICIiKSArICInIiwKICAgICAgICAgICAgICInIiArIGV4cGVjdGVkLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgIiIpICsgIiciKTsKICB9IGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZCA9PSAib2JqZWN0IikgewogICAgc2hvdWxkQmVUcnVlKGFjdHVhbCArICIgPT0gJyIgKyBleHBlY3RlZCArICInIik7CiAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gInN0cmluZyIpIHsKICAgIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpOwogIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkID09ICJib29sZWFuIikgewogICAgc2hvdWxkQmUoInR5cGVvZiAiICsgYWN0dWFsLCAiJ2Jvb2xlYW4nIik7CiAgICBpZiAoZXhwZWN0ZWQpCiAgICAgIHNob3VsZEJlVHJ1ZShhY3R1YWwpOwogICAgZWxzZQogICAgICBzaG91bGRCZUZhbHNlKGFjdHVhbCk7CiAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gIm51bWJlciIpIHsKICAgIHNob3VsZEJlKGFjdHVhbCwgc3RyaW5naWZ5KGV4cGVjdGVkKSk7CiAgfSBlbHNlIHsKICAgIGRlYnVnKGV4cGVjdGVkICsgIiBpcyB1bmtub3duIHR5cGUgIiArIHR5cGVvZiBleHBlY3RlZCk7CiAgICBzaG91bGRCZVRydWUoYWN0dWFsLCAiJyIgICtleHBlY3RlZC50b1N0cmluZygpICsgIiciKTsKICB9Cn0KCmZ1bmN0aW9uIHNob3VsZEJlTm9uWmVybyhfYSkKewogIHZhciBleGNlcHRpb247CiAgdmFyIF9hdjsKICB0cnkgewogICAgIF9hdiA9IGV2YWwoX2EpOwogIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogIH0KCiAgaWYgKGV4Y2VwdGlvbikKICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24temVyby4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogIGVsc2UgaWYgKF9hdiAhPSAwKQogICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9uLXplcm8uIik7CiAgZWxzZQogICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBXYXMgIiArIF9hdik7Cn0KCmZ1bmN0aW9uIHNob3VsZEJlTm9uTnVsbChfYSkKewogIHZhciBleGNlcHRpb247CiAgdmFyIF9hdjsKICB0cnkgewogICAgIF9hdiA9IGV2YWwoX2EpOwogIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogIH0KCiAgaWYgKGV4Y2VwdGlvbikKICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24tbnVsbC4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogIGVsc2UgaWYgKF9hdiAhPSBudWxsKQogICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9uLW51bGwuIik7CiAgZWxzZQogICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBXYXMgIiArIF9hdik7Cn0KCmZ1bmN0aW9uIHNob3VsZEJlVW5kZWZpbmVkKF9hKQp7CiAgdmFyIGV4Y2VwdGlvbjsKICB2YXIgX2F2OwogIHRyeSB7CiAgICAgX2F2ID0gZXZhbChfYSk7CiAgfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiAgfQoKICBpZiAoZXhjZXB0aW9uKQogICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIHVuZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogIGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5lZCIpCiAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyB1bmRlZmluZWQuIik7CiAgZWxzZQogICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIHVuZGVmaW5lZC4gV2FzICIgKyBfYXYpOwp9CgpmdW5jdGlvbiBzaG91bGRCZURlZmluZWQoX2EpCnsKICB2YXIgZXhjZXB0aW9uOwogIHZhciBfYXY7CiAgdHJ5IHsKICAgICBfYXYgPSBldmFsKF9hKTsKICB9IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKICB9CgogIGlmIChleGNlcHRpb24pCiAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogIGVsc2UgaWYgKF9hdiAhPT0gdW5kZWZpbmVkKQogICAgdGVzdFBhc3NlZChfYSArICIgaXMgZGVmaW5lZC4iKTsKICBlbHNlCiAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgZGVmaW5lZC4gV2FzICIgKyBfYXYpOwp9CgpmdW5jdGlvbiBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbChfYSwgX2IpIHsKICAgIGlmICh0eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlwZW9mIF9iICE9ICJzdHJpbmciKQogICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCBleHBlY3RzIHN0cmluZyBhcmd1bWVudHMiKTsKCiAgICB2YXIgZXhjZXB0aW9uOwogICAgdmFyIF9hdjsKICAgIHRyeSB7CiAgICAgICAgX2F2ID0gZXZhbChfYSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgIH0KICAgIHZhciBfYnYgPSBldmFsKF9iKTsKCiAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSA+PSAiICsgX2IgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7CiAgICBlbHNlIGlmICh0eXBlb2YgX2F2ID09ICJ1bmRlZmluZWQiIHx8IF9hdiA8IF9idikKICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgPj0gIiArIF9iICsgIi4gV2FzICIgKyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7CiAgICBlbHNlCiAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgPj0gIiArIF9iKTsKfQoKZnVuY3Rpb24gZXhwZWN0VHJ1ZSh2LCBtc2cpIHsKICBpZiAodikgewogICAgdGVzdFBhc3NlZChtc2cpOwogIH0gZWxzZSB7CiAgICB0ZXN0RmFpbGVkKG1zZyk7CiAgfQp9CgpmdW5jdGlvbiBzaG91bGRUaHJvdyhfYSwgX2UpCnsKICB2YXIgZXhjZXB0aW9uOwogIHZhciBfYXY7CiAgdHJ5IHsKICAgICBfYXYgPSBldmFsKF9hKTsKICB9IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKICB9CgogIHZhciBfZXY7CiAgaWYgKF9lKQogICAgICBfZXYgPSAgZXZhbChfZSk7CgogIGlmIChleGNlcHRpb24pIHsKICAgIGlmICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgfHwgZXhjZXB0aW9uID09IF9ldikKICAgICAgdGVzdFBhc3NlZChfYSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOwogICAgZWxzZQogICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7CiAgfSBlbHNlIGlmICh0eXBlb2YgX2F2ID09ICJ1bmRlZmluZWQiKQogICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09ICJ1bmRlZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4gV2FzIHVuZGVmaW5lZC4iKTsKICBlbHNlCiAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBXYXMgIiArIF9hdiArICIuIik7Cn0KCmZ1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwgX3R5cGUpIHsKICAgIHZhciBleGNlcHRpb247CiAgICB2YXIgX2F2OwogICAgdHJ5IHsKICAgICAgICBfYXYgPSBldmFsKF9hKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBleGNlcHRpb24gPSBlOwogICAgfQoKICAgIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKCiAgICBpZihfdHlwZXYgPT09IE51bWJlcil7CiAgICAgICAgaWYoX2F2IGluc3RhbmNlb2YgTnVtYmVyKXsKICAgICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgYW4gaW5zdGFuY2Ugb2YgTnVtYmVyIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYodHlwZW9mKF9hdikgPT09ICdudW1iZXInKXsKICAgICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgYW4gaW5zdGFuY2Ugb2YgTnVtYmVyIik7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBOdW1iZXIiKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmIChfYXYgaW5zdGFuY2VvZiBfdHlwZXYpIHsKICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBhbiBpbnN0YW5jZSBvZiAiICsgX3R5cGUpOwogICAgfSBlbHNlIHsKICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgIiArIF90eXBlKTsKICAgIH0KfQoKZnVuY3Rpb24gYXNzZXJ0TXNnKGFzc2VydGlvbiwgbXNnKSB7CiAgICBpZiAoYXNzZXJ0aW9uKSB7CiAgICAgICAgdGVzdFBhc3NlZChtc2cpOwogICAgfSBlbHNlIHsKICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CiAgICB9Cn0KCmZ1bmN0aW9uIGdjKCkgewogICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpIHsKICAgICAgICB3aW5kb3cuR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKHdpbmRvdy5vcGVyYSAmJiB3aW5kb3cub3BlcmEuY29sbGVjdCkgewogICAgICAgIHdpbmRvdy5vcGVyYS5jb2xsZWN0KCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgd2luZG93LlF1ZXJ5SW50ZXJmYWNlKENvbXBvbmVudHMuaW50ZXJmYWNlcy5uc0lJbnRlcmZhY2VSZXF1ZXN0b3IpCiAgICAgICAgICAgICAgLmdldEludGVyZmFjZShDb21wb25lbnRzLmludGVyZmFjZXMubnNJRE9NV2luZG93VXRpbHMpCiAgICAgICAgICAgICAgLmdhcmJhZ2VDb2xsZWN0KCk7CiAgICAgICAgcmV0dXJuOwogICAgfSBjYXRjaChlKSB7fQoKICAgIGZ1bmN0aW9uIGdjUmVjKG4pIHsKICAgICAgICBpZiAobiA8IDEpCiAgICAgICAgICAgIHJldHVybiB7fTsKICAgICAgICB2YXIgdGVtcCA9IHtpOiAiYWIiICsgaSArIChpIC8gMTAwMDAwKX07CiAgICAgICAgdGVtcCArPSAiZm9vIjsKICAgICAgICBnY1JlYyhuLTEpOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspCiAgICAgICAgZ2NSZWMoMTApOwp9CgpmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewogIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAgdmFyIGVwaWxvZ3VlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgdmFyIGJhc2VQYXRoID0gIiI7CiAgdmFyIGV4cGVjdGVkQmFzZSA9ICJqcy10ZXN0LXByZS5qcyI7CiAgdmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7CiAgZm9yICh2YXIgc2NyaXB0LCBpID0gMDsgc2NyaXB0ID0gc2NyaXB0c1tpXTsgaSsrKSB7CiAgICB2YXIgc3JjID0gc2NyaXB0LnNyYzsKICAgIHZhciBsID0gc3JjLmxlbmd0aDsKICAgIGlmIChzcmMuc3Vic3RyKGwgLSBleHBlY3RlZEJhc2UubGVuZ3RoKSA9PSBleHBlY3RlZEJhc2UpIHsKICAgICAgYmFzZVBhdGggPSBzcmMuc3Vic3RyKDAsIGwgLSBleHBlY3RlZEJhc2UubGVuZ3RoKTsKICAgICAgYnJlYWs7CiAgICB9CiAgfQogIGVwaWxvZ3VlLnNyYyA9IGJhc2VQYXRoICsgImpzLXRlc3QtcG9zdC5qcyI7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlcGlsb2d1ZSk7Cn0KCg==","../resources/js-test-style.css":"LnBhc3MgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjb2xvcjogZ3JlZW47Cn0KLmZhaWwgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjb2xvcjogcmVkOwp9CiNjb25zb2xlIHsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0K","../resources/desktop-gl-constants.js":"LyoKKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKioKKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAoqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCioqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCioqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKioKKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgoqKgoqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAoqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgoqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQoqKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAoqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQoqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgoqLwoKLy8gRGVmaW5lcyBhIGJ1bmNoIG9mIERlc2t0b3BHTCBjb25zdGFudHMgc28gd2UgY2FuIG1ha2Ugc3VyZSBXZWJHTAovLyBpbXBsZW1lbnRhdGlvbnMgZGlzYWxsb3cgdGhlbS4KCnZhciBkZXNrdG9wR0wgPSB7CiAgJ01JTic6IDB4ODAwNywKICAnTUFYJzogMHg4MDA4LAogICdRVUFEUyc6IDB4MDAwNywKICAnUVVBRF9TVFJJUCc6IDB4MDAwOCwKICAnUE9MWUdPTic6IDB4MDAwOSwKICAnMSc6IDB4MDAwMSwKICAnMic6IDB4MDAwMiwKICAnMyc6IDB4MDAwMywKICAnNCc6IDB4MDAwNCwKICAnU1RBVElDX1JFQUQnOiAweDg4RTUsCiAgJ0NMSVBfUExBTkUwJzogMHgzMDAwLAogICdQRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQnOiAweDBDNTAsCiAgJ0FDQ1VNX0JVRkZFUl9CSVQnOiAweDAyMDAsCiAgJ1JHQjQnOiAweDgwNEYsCiAgJ1JHQjUnOiAweDgwNTAsCiAgJ1JHQjgnOiAweDgwNTEsCiAgJ1JHQjEwJzogMHg4MDUyLAogICdSR0IxMic6IDB4ODA1MywKICAnUkdCMTYnOiAweDgwNTQsCiAgJ1JHQkEyJzogMHg4MDU1LAogICdSR0JBNCc6IDB4ODA1NiwKICAnUkdCNV9BMSc6IDB4ODA1NywKICAnUkdCQTgnOiAweDgwNTgsCiAgJ1JHQjEwX0EyJzogMHg4MDU5LAogICdSR0JBMTInOiAweDgwNUEsCiAgJ1JHQkExNic6IDB4ODA1QiwKICAnU01PT1RIX1BPSU5UX1NJWkVfUkFOR0UnOiAweDBCMTIsCiAgJ1NNT09USF9QT0lOVF9TSVpFX0dSQU5VTEFSSVRZJzogMHgwQjEzLAogICdTTU9PVEhfTElORV9XSURUSF9SQU5HRSc6IDB4MEIyMiwKICAnU01PT1RIX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFknOiAweDBCMjMsCiAgJ1VOU0lHTkVEX0JZVEVfM18zXzInOiAweDgwMzIsCiAgJ1VOU0lHTkVEX1NIT1JUXzRfNF80XzQnOiAweDgwMzMsCiAgJ1VOU0lHTkVEX1NIT1JUXzVfNV81XzEnOiAweDgwMzQsCiAgJ1VOU0lHTkVEX0lOVF84XzhfOF84JzogMHg4MDM1LAogICdVTlNJR05FRF9JTlRfMTBfMTBfMTBfMic6IDB4ODAzNiwKICAnUkVTQ0FMRV9OT1JNQUwnOiAweDgwM0EsCiAgJ1RFWFRVUkVfQklORElOR18zRCc6IDB4ODA2QSwKICAnUEFDS19TS0lQX0lNQUdFUyc6IDB4ODA2QiwKICAnUEFDS19JTUFHRV9IRUlHSFQnOiAweDgwNkMsCiAgJ1VOUEFDS19TS0lQX0lNQUdFUyc6IDB4ODA2RCwKICAnVU5QQUNLX0lNQUdFX0hFSUdIVCc6IDB4ODA2RSwKICAnVEVYVFVSRV8zRCc6IDB4ODA2RiwKICAnUFJPWFlfVEVYVFVSRV8zRCc6IDB4ODA3MCwKICAnVEVYVFVSRV9ERVBUSCc6IDB4ODA3MSwKICAnVEVYVFVSRV9XUkFQX1InOiAweDgwNzIsCiAgJ01BWF8zRF9URVhUVVJFX1NJWkUnOiAweDgwNzMsCiAgJ0JHUic6IDB4ODBFMCwKICAnQkdSQSc6IDB4ODBFMSwKICAnTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJzogMHg4MEU4LAogICdNQVhfRUxFTUVOVFNfSU5ESUNFUyc6IDB4ODBFOSwKICAnQ0xBTVBfVE9fRURHRSc6IDB4ODEyRiwKICAnVEVYVFVSRV9NSU5fTE9EJzogMHg4MTNBLAogICdURVhUVVJFX01BWF9MT0QnOiAweDgxM0IsCiAgJ1RFWFRVUkVfQkFTRV9MRVZFTCc6IDB4ODEzQywKICAnVEVYVFVSRV9NQVhfTEVWRUwnOiAweDgxM0QsCiAgJ0xJR0hUX01PREVMX0NPTE9SX0NPTlRST0wnOiAweDgxRjgsCiAgJ1NJTkdMRV9DT0xPUic6IDB4ODFGOSwKICAnU0VQQVJBVEVfU1BFQ1VMQVJfQ09MT1InOiAweDgxRkEsCiAgJ1VOU0lHTkVEX0JZVEVfMl8zXzNfUkVWJzogMHg4MzYyLAogICdVTlNJR05FRF9TSE9SVF81XzZfNSc6IDB4ODM2MywKICAnVU5TSUdORURfU0hPUlRfNV82XzVfUkVWJzogMHg4MzY0LAogICdVTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVic6IDB4ODM2NSwKICAnVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVYnOiAweDgzNjYsCiAgJ1VOU0lHTkVEX0lOVF84XzhfOF84X1JFVic6IDB4ODM2NywKICAnVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWJzogMHg4MzY4LAogICdBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UnOiAweDg0NkQsCiAgJ0FMSUFTRURfTElORV9XSURUSF9SQU5HRSc6IDB4ODQ2RSwKICAnTVVMVElTQU1QTEUnOiAweDgwOUQsCiAgJ1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSc6IDB4ODA5RSwKICAnU0FNUExFX0FMUEhBX1RPX09ORSc6IDB4ODA5RiwKICAnU0FNUExFX0NPVkVSQUdFJzogMHg4MEEwLAogICdTQU1QTEVfQlVGRkVSUyc6IDB4ODBBOCwKICAnU0FNUExFUyc6IDB4ODBBOSwKICAnU0FNUExFX0NPVkVSQUdFX1ZBTFVFJzogMHg4MEFBLAogICdTQU1QTEVfQ09WRVJBR0VfSU5WRVJUJzogMHg4MEFCLAogICdDTEFNUF9UT19CT1JERVInOiAweDgxMkQsCiAgJ1RFWFRVUkUwJzogMHg4NEMwLAogICdURVhUVVJFMSc6IDB4ODRDMSwKICAnVEVYVFVSRTInOiAweDg0QzIsCiAgJ1RFWFRVUkUzJzogMHg4NEMzLAogICdURVhUVVJFNCc6IDB4ODRDNCwKICAnVEVYVFVSRTUnOiAweDg0QzUsCiAgJ1RFWFRVUkU2JzogMHg4NEM2LAogICdURVhUVVJFNyc6IDB4ODRDNywKICAnVEVYVFVSRTgnOiAweDg0QzgsCiAgJ1RFWFRVUkU5JzogMHg4NEM5LAogICdURVhUVVJFMTAnOiAweDg0Q0EsCiAgJ1RFWFRVUkUxMSc6IDB4ODRDQiwKICAnVEVYVFVSRTEyJzogMHg4NENDLAogICdURVhUVVJFMTMnOiAweDg0Q0QsCiAgJ1RFWFRVUkUxNCc6IDB4ODRDRSwKICAnVEVYVFVSRTE1JzogMHg4NENGLAogICdURVhUVVJFMTYnOiAweDg0RDAsCiAgJ1RFWFRVUkUxNyc6IDB4ODREMSwKICAnVEVYVFVSRTE4JzogMHg4NEQyLAogICdURVhUVVJFMTknOiAweDg0RDMsCiAgJ1RFWFRVUkUyMCc6IDB4ODRENCwKICAnVEVYVFVSRTIxJzogMHg4NEQ1LAogICdURVhUVVJFMjInOiAweDg0RDYsCiAgJ1RFWFRVUkUyMyc6IDB4ODRENywKICAnVEVYVFVSRTI0JzogMHg4NEQ4LAogICdURVhUVVJFMjUnOiAweDg0RDksCiAgJ1RFWFRVUkUyNic6IDB4ODREQSwKICAnVEVYVFVSRTI3JzogMHg4NERCLAogICdURVhUVVJFMjgnOiAweDg0REMsCiAgJ1RFWFRVUkUyOSc6IDB4ODRERCwKICAnVEVYVFVSRTMwJzogMHg4NERFLAogICdURVhUVVJFMzEnOiAweDg0REYsCiAgJ0FDVElWRV9URVhUVVJFJzogMHg4NEUwLAogICdDTElFTlRfQUNUSVZFX1RFWFRVUkUnOiAweDg0RTEsCiAgJ01BWF9URVhUVVJFX1VOSVRTJzogMHg4NEUyLAogICdUUkFOU1BPU0VfTU9ERUxWSUVXX01BVFJJWCc6IDB4ODRFMywKICAnVFJBTlNQT1NFX1BST0pFQ1RJT05fTUFUUklYJzogMHg4NEU0LAogICdUUkFOU1BPU0VfVEVYVFVSRV9NQVRSSVgnOiAweDg0RTUsCiAgJ1RSQU5TUE9TRV9DT0xPUl9NQVRSSVgnOiAweDg0RTYsCiAgJ1NVQlRSQUNUJzogMHg4NEU3LAogICdDT01QUkVTU0VEX0FMUEhBJzogMHg4NEU5LAogICdDT01QUkVTU0VEX0xVTUlOQU5DRSc6IDB4ODRFQSwKICAnQ09NUFJFU1NFRF9MVU1JTkFOQ0VfQUxQSEEnOiAweDg0RUIsCiAgJ0NPTVBSRVNTRURfSU5URU5TSVRZJzogMHg4NEVDLAogICdDT01QUkVTU0VEX1JHQic6IDB4ODRFRCwKICAnQ09NUFJFU1NFRF9SR0JBJzogMHg4NEVFLAogICdURVhUVVJFX0NPTVBSRVNTSU9OX0hJTlQnOiAweDg0RUYsCiAgJ05PUk1BTF9NQVAnOiAweDg1MTEsCiAgJ1JFRkxFQ1RJT05fTUFQJzogMHg4NTEyLAogICdURVhUVVJFX0NVQkVfTUFQJzogMHg4NTEzLAogICdURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAnOiAweDg1MTQsCiAgJ1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCc6IDB4ODUxNSwKICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YJzogMHg4NTE2LAogICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1knOiAweDg1MTcsCiAgJ1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSc6IDB4ODUxOCwKICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aJzogMHg4NTE5LAogICdURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1onOiAweDg1MUEsCiAgJ1BST1hZX1RFWFRVUkVfQ1VCRV9NQVAnOiAweDg1MUIsCiAgJ01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUnOiAweDg1MUMsCiAgJ0NPTUJJTkUnOiAweDg1NzAsCiAgJ0NPTUJJTkVfUkdCJzogMHg4NTcxLAogICdDT01CSU5FX0FMUEhBJzogMHg4NTcyLAogICdSR0JfU0NBTEUnOiAweDg1NzMsCiAgJ0FERF9TSUdORUQnOiAweDg1NzQsCiAgJ0lOVEVSUE9MQVRFJzogMHg4NTc1LAogICdDT05TVEFOVCc6IDB4ODU3NiwKICAnUFJJTUFSWV9DT0xPUic6IDB4ODU3NywKICAnUFJFVklPVVMnOiAweDg1NzgsCiAgJ1NPVVJDRTBfUkdCJzogMHg4NTgwLAogICdTT1VSQ0UxX1JHQic6IDB4ODU4MSwKICAnU09VUkNFMl9SR0InOiAweDg1ODIsCiAgJ1NPVVJDRTBfQUxQSEEnOiAweDg1ODgsCiAgJ1NPVVJDRTFfQUxQSEEnOiAweDg1ODksCiAgJ1NPVVJDRTJfQUxQSEEnOiAweDg1OEEsCiAgJ09QRVJBTkQwX1JHQic6IDB4ODU5MCwKICAnT1BFUkFORDFfUkdCJzogMHg4NTkxLAogICdPUEVSQU5EMl9SR0InOiAweDg1OTIsCiAgJ09QRVJBTkQwX0FMUEhBJzogMHg4NTk4LAogICdPUEVSQU5EMV9BTFBIQSc6IDB4ODU5OSwKICAnT1BFUkFORDJfQUxQSEEnOiAweDg1OUEsCiAgJ1RFWFRVUkVfQ09NUFJFU1NFRF9JTUFHRV9TSVpFJzogMHg4NkEwLAogICdURVhUVVJFX0NPTVBSRVNTRUQnOiAweDg2QTEsCiAgJ05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyc6IDB4ODZBMiwKICAnQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMnOiAweDg2QTMsCiAgJ0RPVDNfUkdCJzogMHg4NkFFLAogICdET1QzX1JHQkEnOiAweDg2QUYsCiAgJ01VTFRJU0FNUExFX0JJVCc6IDB4MjAwMDAwMDAsCiAgJ0JMRU5EX0RTVF9SR0InOiAweDgwQzgsCiAgJ0JMRU5EX1NSQ19SR0InOiAweDgwQzksCiAgJ0JMRU5EX0RTVF9BTFBIQSc6IDB4ODBDQSwKICAnQkxFTkRfU1JDX0FMUEhBJzogMHg4MENCLAogICdQT0lOVF9TSVpFX01JTic6IDB4ODEyNiwKICAnUE9JTlRfU0laRV9NQVgnOiAweDgxMjcsCiAgJ1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUnOiAweDgxMjgsCiAgJ1BPSU5UX0RJU1RBTkNFX0FUVEVOVUFUSU9OJzogMHg4MTI5LAogICdHRU5FUkFURV9NSVBNQVAnOiAweDgxOTEsCiAgJ0dFTkVSQVRFX01JUE1BUF9ISU5UJzogMHg4MTkyLAogICdERVBUSF9DT01QT05FTlQxNic6IDB4ODFBNSwKICAnREVQVEhfQ09NUE9ORU5UMjQnOiAweDgxQTYsCiAgJ0RFUFRIX0NPTVBPTkVOVDMyJzogMHg4MUE3LAogICdNSVJST1JFRF9SRVBFQVQnOiAweDgzNzAsCiAgJ0ZPR19DT09SRElOQVRFX1NPVVJDRSc6IDB4ODQ1MCwKICAnRk9HX0NPT1JESU5BVEUnOiAweDg0NTEsCiAgJ0ZSQUdNRU5UX0RFUFRIJzogMHg4NDUyLAogICdDVVJSRU5UX0ZPR19DT09SRElOQVRFJzogMHg4NDUzLAogICdGT0dfQ09PUkRJTkFURV9BUlJBWV9UWVBFJzogMHg4NDU0LAogICdGT0dfQ09PUkRJTkFURV9BUlJBWV9TVFJJREUnOiAweDg0NTUsCiAgJ0ZPR19DT09SRElOQVRFX0FSUkFZX1BPSU5URVInOiAweDg0NTYsCiAgJ0ZPR19DT09SRElOQVRFX0FSUkFZJzogMHg4NDU3LAogICdDT0xPUl9TVU0nOiAweDg0NTgsCiAgJ0NVUlJFTlRfU0VDT05EQVJZX0NPTE9SJzogMHg4NDU5LAogICdTRUNPTkRBUllfQ09MT1JfQVJSQVlfU0laRSc6IDB4ODQ1QSwKICAnU0VDT05EQVJZX0NPTE9SX0FSUkFZX1RZUEUnOiAweDg0NUIsCiAgJ1NFQ09OREFSWV9DT0xPUl9BUlJBWV9TVFJJREUnOiAweDg0NUMsCiAgJ1NFQ09OREFSWV9DT0xPUl9BUlJBWV9QT0lOVEVSJzogMHg4NDVELAogICdTRUNPTkRBUllfQ09MT1JfQVJSQVknOiAweDg0NUUsCiAgJ01BWF9URVhUVVJFX0xPRF9CSUFTJzogMHg4NEZELAogICdURVhUVVJFX0ZJTFRFUl9DT05UUk9MJzogMHg4NTAwLAogICdURVhUVVJFX0xPRF9CSUFTJzogMHg4NTAxLAogICdJTkNSX1dSQVAnOiAweDg1MDcsCiAgJ0RFQ1JfV1JBUCc6IDB4ODUwOCwKICAnVEVYVFVSRV9ERVBUSF9TSVpFJzogMHg4ODRBLAogICdERVBUSF9URVhUVVJFX01PREUnOiAweDg4NEIsCiAgJ1RFWFRVUkVfQ09NUEFSRV9NT0RFJzogMHg4ODRDLAogICdURVhUVVJFX0NPTVBBUkVfRlVOQyc6IDB4ODg0RCwKICAnQ09NUEFSRV9SX1RPX1RFWFRVUkUnOiAweDg4NEUsCiAgJ0JVRkZFUl9TSVpFJzogMHg4NzY0LAogICdCVUZGRVJfVVNBR0UnOiAweDg3NjUsCiAgJ1FVRVJZX0NPVU5URVJfQklUUyc6IDB4ODg2NCwKICAnQ1VSUkVOVF9RVUVSWSc6IDB4ODg2NSwKICAnUVVFUllfUkVTVUxUJzogMHg4ODY2LAogICdRVUVSWV9SRVNVTFRfQVZBSUxBQkxFJzogMHg4ODY3LAogICdBUlJBWV9CVUZGRVInOiAweDg4OTIsCiAgJ0VMRU1FTlRfQVJSQVlfQlVGRkVSJzogMHg4ODkzLAogICdBUlJBWV9CVUZGRVJfQklORElORyc6IDB4ODg5NCwKICAnRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyc6IDB4ODg5NSwKICAnVkVSVEVYX0FSUkFZX0JVRkZFUl9CSU5ESU5HJzogMHg4ODk2LAogICdOT1JNQUxfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OTcsCiAgJ0NPTE9SX0FSUkFZX0JVRkZFUl9CSU5ESU5HJzogMHg4ODk4LAogICdJTkRFWF9BUlJBWV9CVUZGRVJfQklORElORyc6IDB4ODg5OSwKICAnVEVYVFVSRV9DT09SRF9BUlJBWV9CVUZGRVJfQklORElORyc6IDB4ODg5QSwKICAnRURHRV9GTEFHX0FSUkFZX0JVRkZFUl9CSU5ESU5HJzogMHg4ODlCLAogICdTRUNPTkRBUllfQ09MT1JfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OUMsCiAgJ0ZPR19DT09SRElOQVRFX0FSUkFZX0JVRkZFUl9CSU5ESU5HJzogMHg4ODlELAogICdXRUlHSFRfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OUUsCiAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OUYsCiAgJ1JFQURfT05MWSc6IDB4ODhCOCwKICAnV1JJVEVfT05MWSc6IDB4ODhCOSwKICAnUkVBRF9XUklURSc6IDB4ODhCQSwKICAnQlVGRkVSX0FDQ0VTUyc6IDB4ODhCQiwKICAnQlVGRkVSX01BUFBFRCc6IDB4ODhCQywKICAnQlVGRkVSX01BUF9QT0lOVEVSJzogMHg4OEJELAogICdTVFJFQU1fRFJBVyc6IDB4ODhFMCwKICAnU1RSRUFNX1JFQUQnOiAweDg4RTEsCiAgJ1NUUkVBTV9DT1BZJzogMHg4OEUyLAogICdTVEFUSUNfRFJBVyc6IDB4ODhFNCwKICAnU1RBVElDX1JFQUQnOiAweDg4RTUsCiAgJ1NUQVRJQ19DT1BZJzogMHg4OEU2LAogICdEWU5BTUlDX0RSQVcnOiAweDg4RTgsCiAgJ0RZTkFNSUNfUkVBRCc6IDB4ODhFOSwKICAnRFlOQU1JQ19DT1BZJzogMHg4OEVBLAogICdTQU1QTEVTX1BBU1NFRCc6IDB4ODkxNCwKICAnVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEJzogMHg4NjIyLAogICdWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUnOiAweDg2MjMsCiAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFJzogMHg4NjI0LAogICdWRVJURVhfQVRUUklCX0FSUkFZX1RZUEUnOiAweDg2MjUsCiAgJ0NVUlJFTlRfVkVSVEVYX0FUVFJJQic6IDB4ODYyNiwKICAnVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSc6IDB4ODY0MiwKICAnVkVSVEVYX1BST0dSQU1fVFdPX1NJREUnOiAweDg2NDMsCiAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUic6IDB4ODY0NSwKICAnU1RFTkNJTF9CQUNLX0ZVTkMnOiAweDg4MDAsCiAgJ1NURU5DSUxfQkFDS19GQUlMJzogMHg4ODAxLAogICdTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMJzogMHg4ODAyLAogICdTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTJzogMHg4ODAzLAogICdNQVhfRFJBV19CVUZGRVJTJzogMHg4ODI0LAogICdEUkFXX0JVRkZFUjAnOiAweDg4MjUsCiAgJ0RSQVdfQlVGRkVSMSc6IDB4ODgyNiwKICAnRFJBV19CVUZGRVIyJzogMHg4ODI3LAogICdEUkFXX0JVRkZFUjMnOiAweDg4MjgsCiAgJ0RSQVdfQlVGRkVSNCc6IDB4ODgyOSwKICAnRFJBV19CVUZGRVI1JzogMHg4ODJBLAogICdEUkFXX0JVRkZFUjYnOiAweDg4MkIsCiAgJ0RSQVdfQlVGRkVSNyc6IDB4ODgyQywKICAnRFJBV19CVUZGRVI4JzogMHg4ODJELAogICdEUkFXX0JVRkZFUjknOiAweDg4MkUsCiAgJ0RSQVdfQlVGRkVSMTAnOiAweDg4MkYsCiAgJ0RSQVdfQlVGRkVSMTEnOiAweDg4MzAsCiAgJ0RSQVdfQlVGRkVSMTInOiAweDg4MzEsCiAgJ0RSQVdfQlVGRkVSMTMnOiAweDg4MzIsCiAgJ0RSQVdfQlVGRkVSMTQnOiAweDg4MzMsCiAgJ0RSQVdfQlVGRkVSMTUnOiAweDg4MzQsCiAgJ0JMRU5EX0VRVUFUSU9OX0FMUEhBJzogMHg4ODNELAogICdQT0lOVF9TUFJJVEUnOiAweDg4NjEsCiAgJ0NPT1JEX1JFUExBQ0UnOiAweDg4NjIsCiAgJ01BWF9WRVJURVhfQVRUUklCUyc6IDB4ODg2OSwKICAnVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEJzogMHg4ODZBLAogICdNQVhfVEVYVFVSRV9DT09SRFMnOiAweDg4NzEsCiAgJ01BWF9URVhUVVJFX0lNQUdFX1VOSVRTJzogMHg4ODcyLAogICdGUkFHTUVOVF9TSEFERVInOiAweDhCMzAsCiAgJ1ZFUlRFWF9TSEFERVInOiAweDhCMzEsCiAgJ01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMnOiAweDhCNDksCiAgJ01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJzogMHg4QjRBLAogICdNQVhfVkFSWUlOR19GTE9BVFMnOiAweDhCNEIsCiAgJ01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyc6IDB4OEI0QywKICAnTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnOiAweDhCNEQsCiAgJ1NIQURFUl9UWVBFJzogMHg4QjRGLAogICdGTE9BVF9WRUMyJzogMHg4QjUwLAogICdGTE9BVF9WRUMzJzogMHg4QjUxLAogICdGTE9BVF9WRUM0JzogMHg4QjUyLAogICdJTlRfVkVDMic6IDB4OEI1MywKICAnSU5UX1ZFQzMnOiAweDhCNTQsCiAgJ0lOVF9WRUM0JzogMHg4QjU1LAogICdCT09MJzogMHg4QjU2LAogICdCT09MX1ZFQzInOiAweDhCNTcsCiAgJ0JPT0xfVkVDMyc6IDB4OEI1OCwKICAnQk9PTF9WRUM0JzogMHg4QjU5LAogICdGTE9BVF9NQVQyJzogMHg4QjVBLAogICdGTE9BVF9NQVQzJzogMHg4QjVCLAogICdGTE9BVF9NQVQ0JzogMHg4QjVDLAogICdTQU1QTEVSXzFEJzogMHg4QjVELAogICdTQU1QTEVSXzJEJzogMHg4QjVFLAogICdTQU1QTEVSXzNEJzogMHg4QjVGLAogICdTQU1QTEVSX0NVQkUnOiAweDhCNjAsCiAgJ1NBTVBMRVJfMURfU0hBRE9XJzogMHg4QjYxLAogICdTQU1QTEVSXzJEX1NIQURPVyc6IDB4OEI2MiwKICAnREVMRVRFX1NUQVRVUyc6IDB4OEI4MCwKICAnQ09NUElMRV9TVEFUVVMnOiAweDhCODEsCiAgJ0xJTktfU1RBVFVTJzogMHg4QjgyLAogICdWQUxJREFURV9TVEFUVVMnOiAweDhCODMsCiAgJ0lORk9fTE9HX0xFTkdUSCc6IDB4OEI4NCwKICAnQVRUQUNIRURfU0hBREVSUyc6IDB4OEI4NSwKICAnQUNUSVZFX1VOSUZPUk1TJzogMHg4Qjg2LAogICdBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIJzogMHg4Qjg3LAogICdTSEFERVJfU09VUkNFX0xFTkdUSCc6IDB4OEI4OCwKICAnQUNUSVZFX0FUVFJJQlVURVMnOiAweDhCODksCiAgJ0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCc6IDB4OEI4QSwKICAnRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVCc6IDB4OEI4QiwKICAnU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OJzogMHg4QjhDLAogICdDVVJSRU5UX1BST0dSQU0nOiAweDhCOEQsCiAgJ1BPSU5UX1NQUklURV9DT09SRF9PUklHSU4nOiAweDhDQTAsCiAgJ0xPV0VSX0xFRlQnOiAweDhDQTEsCiAgJ1VQUEVSX0xFRlQnOiAweDhDQTIsCiAgJ1NURU5DSUxfQkFDS19SRUYnOiAweDhDQTMsCiAgJ1NURU5DSUxfQkFDS19WQUxVRV9NQVNLJzogMHg4Q0E0LAogICdTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLJzogMHg4Q0E1LAogICdDVVJSRU5UX1JBU1RFUl9TRUNPTkRBUllfQ09MT1InOiAweDg0NUYsCiAgJ1BJWEVMX1BBQ0tfQlVGRkVSJzogMHg4OEVCLAogICdQSVhFTF9VTlBBQ0tfQlVGRkVSJzogMHg4OEVDLAogICdQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HJzogMHg4OEVELAogICdQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcnOiAweDg4RUYsCiAgJ0ZMT0FUX01BVDJ4Myc6IDB4OEI2NSwKICAnRkxPQVRfTUFUMng0JzogMHg4QjY2LAogICdGTE9BVF9NQVQzeDInOiAweDhCNjcsCiAgJ0ZMT0FUX01BVDN4NCc6IDB4OEI2OCwKICAnRkxPQVRfTUFUNHgyJzogMHg4QjY5LAogICdGTE9BVF9NQVQ0eDMnOiAweDhCNkEsCiAgJ1NSR0InOiAweDhDNDAsCiAgJ1NSR0I4JzogMHg4QzQxLAogICdTUkdCX0FMUEhBJzogMHg4QzQyLAogICdTUkdCOF9BTFBIQTgnOiAweDhDNDMsCiAgJ1NMVU1JTkFOQ0VfQUxQSEEnOiAweDhDNDQsCiAgJ1NMVU1JTkFOQ0U4X0FMUEhBOCc6IDB4OEM0NSwKICAnU0xVTUlOQU5DRSc6IDB4OEM0NiwKICAnU0xVTUlOQU5DRTgnOiAweDhDNDcsCiAgJ0NPTVBSRVNTRURfU1JHQic6IDB4OEM0OCwKICAnQ09NUFJFU1NFRF9TUkdCX0FMUEhBJzogMHg4QzQ5LAogICdDT01QUkVTU0VEX1NMVU1JTkFOQ0UnOiAweDhDNEEsCiAgJ0NPTVBSRVNTRURfU0xVTUlOQU5DRV9BTFBIQSc6IDB4OEM0QiwKICAnQ09OVEVYVF9GTEFHX0ZPUldBUkRfQ09NUEFUSUJMRV9CSVQnOiAweDAwMDEsCiAgJ01BSk9SX1ZFUlNJT04nOiAweDgyMUIsCiAgJ01JTk9SX1ZFUlNJT04nOiAweDgyMUMsCiAgJ05VTV9FWFRFTlNJT05TJzogMHg4MjFELAogICdDT05URVhUX0ZMQUdTJzogMHg4MjFFLAogICdERVBUSF9CVUZGRVInOiAweDgyMjMsCiAgJ1NURU5DSUxfQlVGRkVSJzogMHg4MjI0LAogICdDT01QUkVTU0VEX1JFRCc6IDB4ODIyNSwKICAnQ09NUFJFU1NFRF9SRyc6IDB4ODIyNiwKICAnUkdCQTMyRic6IDB4ODgxNCwKICAnUkdCMzJGJzogMHg4ODE1LAogICdSR0JBMTZGJzogMHg4ODFBLAogICdSR0IxNkYnOiAweDg4MUIsCiAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUic6IDB4ODhGRCwKICAnTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJzogMHg4OEZGLAogICdNSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQnOiAweDg5MDQsCiAgJ01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVCc6IDB4ODkwNSwKICAnQ0xBTVBfVkVSVEVYX0NPTE9SJzogMHg4OTFBLAogICdDTEFNUF9GUkFHTUVOVF9DT0xPUic6IDB4ODkxQiwKICAnQ0xBTVBfUkVBRF9DT0xPUic6IDB4ODkxQywKICAnRklYRURfT05MWSc6IDB4ODkxRCwKICAnVEVYVFVSRV9SRURfVFlQRSc6IDB4OEMxMCwKICAnVEVYVFVSRV9HUkVFTl9UWVBFJzogMHg4QzExLAogICdURVhUVVJFX0JMVUVfVFlQRSc6IDB4OEMxMiwKICAnVEVYVFVSRV9BTFBIQV9UWVBFJzogMHg4QzEzLAogICdURVhUVVJFX0xVTUlOQU5DRV9UWVBFJzogMHg4QzE0LAogICdURVhUVVJFX0lOVEVOU0lUWV9UWVBFJzogMHg4QzE1LAogICdURVhUVVJFX0RFUFRIX1RZUEUnOiAweDhDMTYsCiAgJ1VOU0lHTkVEX05PUk1BTElaRUQnOiAweDhDMTcsCiAgJ1RFWFRVUkVfMURfQVJSQVknOiAweDhDMTgsCiAgJ1BST1hZX1RFWFRVUkVfMURfQVJSQVknOiAweDhDMTksCiAgJ1RFWFRVUkVfMkRfQVJSQVknOiAweDhDMUEsCiAgJ1BST1hZX1RFWFRVUkVfMkRfQVJSQVknOiAweDhDMUIsCiAgJ1RFWFRVUkVfQklORElOR18xRF9BUlJBWSc6IDB4OEMxQywKICAnVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZJzogMHg4QzFELAogICdSMTFGX0cxMUZfQjEwRic6IDB4OEMzQSwKICAnVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVic6IDB4OEMzQiwKICAnUkdCOV9FNSc6IDB4OEMzRCwKICAnVU5TSUdORURfSU5UXzVfOV85XzlfUkVWJzogMHg4QzNFLAogICdURVhUVVJFX1NIQVJFRF9TSVpFJzogMHg4QzNGLAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIJzogMHg4Qzc2LAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREUnOiAweDhDN0YsCiAgJ01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUyc6IDB4OEM4MCwKICAnVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTJzogMHg4QzgzLAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUJzogMHg4Qzg0LAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUnOiAweDhDODUsCiAgJ1BSSU1JVElWRVNfR0VORVJBVEVEJzogMHg4Qzg3LAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOJzogMHg4Qzg4LAogICdSQVNURVJJWkVSX0RJU0NBUkQnOiAweDhDODksCiAgJ01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUyc6IDB4OEM4QSwKICAnTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTJzogMHg4QzhCLAogICdJTlRFUkxFQVZFRF9BVFRSSUJTJzogMHg4QzhDLAogICdTRVBBUkFURV9BVFRSSUJTJzogMHg4QzhELAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSJzogMHg4QzhFLAogICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcnOiAweDhDOEYsCiAgJ1JHQkEzMlVJJzogMHg4RDcwLAogICdSR0IzMlVJJzogMHg4RDcxLAogICdSR0JBMTZVSSc6IDB4OEQ3NiwKICAnUkdCMTZVSSc6IDB4OEQ3NywKICAnUkdCQThVSSc6IDB4OEQ3QywKICAnUkdCOFVJJzogMHg4RDdELAogICdSR0JBMzJJJzogMHg4RDgyLAogICdSR0IzMkknOiAweDhEODMsCiAgJ1JHQkExNkknOiAweDhEODgsCiAgJ1JHQjE2SSc6IDB4OEQ4OSwKICAnUkdCQThJJzogMHg4RDhFLAogICdSR0I4SSc6IDB4OEQ4RiwKICAnUkVEX0lOVEVHRVInOiAweDhEOTQsCiAgJ0dSRUVOX0lOVEVHRVInOiAweDhEOTUsCiAgJ0JMVUVfSU5URUdFUic6IDB4OEQ5NiwKICAnQUxQSEFfSU5URUdFUic6IDB4OEQ5NywKICAnUkdCX0lOVEVHRVInOiAweDhEOTgsCiAgJ1JHQkFfSU5URUdFUic6IDB4OEQ5OSwKICAnQkdSX0lOVEVHRVInOiAweDhEOUEsCiAgJ0JHUkFfSU5URUdFUic6IDB4OEQ5QiwKICAnU0FNUExFUl8xRF9BUlJBWSc6IDB4OERDMCwKICAnU0FNUExFUl8yRF9BUlJBWSc6IDB4OERDMSwKICAnU0FNUExFUl8xRF9BUlJBWV9TSEFET1cnOiAweDhEQzMsCiAgJ1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XJzogMHg4REM0LAogICdTQU1QTEVSX0NVQkVfU0hBRE9XJzogMHg4REM1LAogICdVTlNJR05FRF9JTlRfVkVDMic6IDB4OERDNiwKICAnVU5TSUdORURfSU5UX1ZFQzMnOiAweDhEQzcsCiAgJ1VOU0lHTkVEX0lOVF9WRUM0JzogMHg4REM4LAogICdJTlRfU0FNUExFUl8xRCc6IDB4OERDOSwKICAnSU5UX1NBTVBMRVJfMkQnOiAweDhEQ0EsCiAgJ0lOVF9TQU1QTEVSXzNEJzogMHg4RENCLAogICdJTlRfU0FNUExFUl9DVUJFJzogMHg4RENDLAogICdJTlRfU0FNUExFUl8xRF9BUlJBWSc6IDB4OERDRSwKICAnSU5UX1NBTVBMRVJfMkRfQVJSQVknOiAweDhEQ0YsCiAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSXzFEJzogMHg4REQxLAogICdVTlNJR05FRF9JTlRfU0FNUExFUl8yRCc6IDB4OEREMiwKICAnVU5TSUdORURfSU5UX1NBTVBMRVJfM0QnOiAweDhERDMsCiAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkUnOiAweDhERDQsCiAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSXzFEX0FSUkFZJzogMHg4REQ2LAogICdVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWSc6IDB4OERENywKICAnUVVFUllfV0FJVCc6IDB4OEUxMywKICAnUVVFUllfTk9fV0FJVCc6IDB4OEUxNCwKICAnUVVFUllfQllfUkVHSU9OX1dBSVQnOiAweDhFMTUsCiAgJ1FVRVJZX0JZX1JFR0lPTl9OT19XQUlUJzogMHg4RTE2LAogICdNVUxUSVNBTVBMRV8zREZYJzogMHg4NkIyLAogICdTQU1QTEVfQlVGRkVSU18zREZYJzogMHg4NkIzLAogICdTQU1QTEVTXzNERlgnOiAweDg2QjQsCiAgJ01VTFRJU0FNUExFX0JJVF8zREZYJzogMHgyMDAwMDAwMCwKICAnQ09NUFJFU1NFRF9SR0JfRlhUMV8zREZYJzogMHg4NkIwLAogICdDT01QUkVTU0VEX1JHQkFfRlhUMV8zREZYJzogMHg4NkIxLAogICdVTlBBQ0tfQ0xJRU5UX1NUT1JBR0VfQVBQTEUnOiAweDg1QjIsCiAgJ0VMRU1FTlRfQVJSQVlfQVBQTEUnOiAweDg3NjgsCiAgJ0VMRU1FTlRfQVJSQVlfVFlQRV9BUFBMRSc6IDB4ODc2OSwKICAnRUxFTUVOVF9BUlJBWV9QT0lOVEVSX0FQUExFJzogMHg4NzZBLAogICdIQUxGX0FQUExFJzogMHgxNDBCLAogICdSR0JBX0ZMT0FUMzJfQVBQTEUnOiAweDg4MTQsCiAgJ1JHQl9GTE9BVDMyX0FQUExFJzogMHg4ODE1LAogICdBTFBIQV9GTE9BVDMyX0FQUExFJzogMHg4ODE2LAogICdJTlRFTlNJVFlfRkxPQVQzMl9BUFBMRSc6IDB4ODgxNywKICAnTFVNSU5BTkNFX0ZMT0FUMzJfQVBQTEUnOiAweDg4MTgsCiAgJ0xVTUlOQU5DRV9BTFBIQV9GTE9BVDMyX0FQUExFJzogMHg4ODE5LAogICdSR0JBX0ZMT0FUMTZfQVBQTEUnOiAweDg4MUEsCiAgJ1JHQl9GTE9BVDE2X0FQUExFJzogMHg4ODFCLAogICdBTFBIQV9GTE9BVDE2X0FQUExFJzogMHg4ODFDLAogICdJTlRFTlNJVFlfRkxPQVQxNl9BUFBMRSc6IDB4ODgxRCwKICAnTFVNSU5BTkNFX0ZMT0FUMTZfQVBQTEUnOiAweDg4MUUsCiAgJ0xVTUlOQU5DRV9BTFBIQV9GTE9BVDE2X0FQUExFJzogMHg4ODFGLAogICdDT0xPUl9GTE9BVF9BUFBMRSc6IDB4OEEwRiwKICAnQlVGRkVSX1NFUklBTElaRURfTU9ESUZZX0FQUExFJzogMHg4QTEyLAogICdCVUZGRVJfRkxVU0hJTkdfVU5NQVBfQVBQTEUnOiAweDhBMTMsCiAgJ01JTl9QQlVGRkVSX1ZJRVdQT1JUX0RJTVNfQVBQTEUnOiAweDhBMTAsCiAgJ0xJR0hUX01PREVMX1NQRUNVTEFSX1ZFQ1RPUl9BUFBMRSc6IDB4ODVCMCwKICAnVEVYVFVSRV9SQU5HRV9MRU5HVEhfQVBQTEUnOiAweDg1QjcsCiAgJ1RFWFRVUkVfUkFOR0VfUE9JTlRFUl9BUFBMRSc6IDB4ODVCOCwKICAnVEVYVFVSRV9TVE9SQUdFX0hJTlRfQVBQTEUnOiAweDg1QkMsCiAgJ1NUT1JBR0VfUFJJVkFURV9BUFBMRSc6IDB4ODVCRCwKICAnU1RPUkFHRV9DQUNIRURfQVBQTEUnOiAweDg1QkUsCiAgJ1NUT1JBR0VfU0hBUkVEX0FQUExFJzogMHg4NUJGLAogICdUUkFOU0ZPUk1fSElOVF9BUFBMRSc6IDB4ODVCMSwKICAnVkVSVEVYX0FSUkFZX0JJTkRJTkdfQVBQTEUnOiAweDg1QjUsCiAgJ1ZFUlRFWF9BUlJBWV9SQU5HRV9BUFBMRSc6IDB4ODUxRCwKICAnVkVSVEVYX0FSUkFZX1JBTkdFX0xFTkdUSF9BUFBMRSc6IDB4ODUxRSwKICAnVkVSVEVYX0FSUkFZX1NUT1JBR0VfSElOVF9BUFBMRSc6IDB4ODUxRiwKICAnTUFYX1ZFUlRFWF9BUlJBWV9SQU5HRV9FTEVNRU5UX0FQUExFJzogMHg4NTIwLAogICdWRVJURVhfQVJSQVlfUkFOR0VfUE9JTlRFUl9BUFBMRSc6IDB4ODUyMSwKICAnU1RPUkFHRV9DQUNIRURfQVBQTEUnOiAweDg1QkUsCiAgJ1NUT1JBR0VfU0hBUkVEX0FQUExFJzogMHg4NUJGLAogICdZQ0JDUl80MjJfQVBQTEUnOiAweDg1QjksCiAgJ1VOU0lHTkVEX1NIT1JUXzhfOF9BUFBMRSc6IDB4ODVCQSwKICAnVU5TSUdORURfU0hPUlRfOF84X1JFVl9BUFBMRSc6IDB4ODVCQiwKICAnUkdCQV9GTE9BVF9NT0RFX0FSQic6IDB4ODgyMCwKICAnQ0xBTVBfVkVSVEVYX0NPTE9SX0FSQic6IDB4ODkxQSwKICAnQ0xBTVBfRlJBR01FTlRfQ09MT1JfQVJCJzogMHg4OTFCLAogICdDTEFNUF9SRUFEX0NPTE9SX0FSQic6IDB4ODkxQywKICAnRklYRURfT05MWV9BUkInOiAweDg5MUQsCiAgJ0RFUFRIX0NPTVBPTkVOVDMyRic6IDB4OENBQywKICAnREVQVEgzMkZfU1RFTkNJTDgnOiAweDhDQUQsCiAgJ0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVic6IDB4OERBRCwKICAnREVQVEhfQ09NUE9ORU5UMTZfQVJCJzogMHg4MUE1LAogICdERVBUSF9DT01QT05FTlQyNF9BUkInOiAweDgxQTYsCiAgJ0RFUFRIX0NPTVBPTkVOVDMyX0FSQic6IDB4ODFBNywKICAnVEVYVFVSRV9ERVBUSF9TSVpFX0FSQic6IDB4ODg0QSwKICAnREVQVEhfVEVYVFVSRV9NT0RFX0FSQic6IDB4ODg0QiwKICAnTUFYX0RSQVdfQlVGRkVSU19BUkInOiAweDg4MjQsCiAgJ0RSQVdfQlVGRkVSMF9BUkInOiAweDg4MjUsCiAgJ0RSQVdfQlVGRkVSMV9BUkInOiAweDg4MjYsCiAgJ0RSQVdfQlVGRkVSMl9BUkInOiAweDg4MjcsCiAgJ0RSQVdfQlVGRkVSM19BUkInOiAweDg4MjgsCiAgJ0RSQVdfQlVGRkVSNF9BUkInOiAweDg4MjksCiAgJ0RSQVdfQlVGRkVSNV9BUkInOiAweDg4MkEsCiAgJ0RSQVdfQlVGRkVSNl9BUkInOiAweDg4MkIsCiAgJ0RSQVdfQlVGRkVSN19BUkInOiAweDg4MkMsCiAgJ0RSQVdfQlVGRkVSOF9BUkInOiAweDg4MkQsCiAgJ0RSQVdfQlVGRkVSOV9BUkInOiAweDg4MkUsCiAgJ0RSQVdfQlVGRkVSMTBfQVJCJzogMHg4ODJGLAogICdEUkFXX0JVRkZFUjExX0FSQic6IDB4ODgzMCwKICAnRFJBV19CVUZGRVIxMl9BUkInOiAweDg4MzEsCiAgJ0RSQVdfQlVGRkVSMTNfQVJCJzogMHg4ODMyLAogICdEUkFXX0JVRkZFUjE0X0FSQic6IDB4ODgzMywKICAnRFJBV19CVUZGRVIxNV9BUkInOiAweDg4MzQsCiAgJ0ZSQUdNRU5UX1BST0dSQU1fQVJCJzogMHg4ODA0LAogICdQUk9HUkFNX0FMVV9JTlNUUlVDVElPTlNfQVJCJzogMHg4ODA1LAogICdQUk9HUkFNX1RFWF9JTlNUUlVDVElPTlNfQVJCJzogMHg4ODA2LAogICdQUk9HUkFNX1RFWF9JTkRJUkVDVElPTlNfQVJCJzogMHg4ODA3LAogICdQUk9HUkFNX05BVElWRV9BTFVfSU5TVFJVQ1RJT05TX0FSQic6IDB4ODgwOCwKICAnUFJPR1JBTV9OQVRJVkVfVEVYX0lOU1RSVUNUSU9OU19BUkInOiAweDg4MDksCiAgJ1BST0dSQU1fTkFUSVZFX1RFWF9JTkRJUkVDVElPTlNfQVJCJzogMHg4ODBBLAogICdNQVhfUFJPR1JBTV9BTFVfSU5TVFJVQ1RJT05TX0FSQic6IDB4ODgwQiwKICAnTUFYX1BST0dSQU1fVEVYX0lOU1RSVUNUSU9OU19BUkInOiAweDg4MEMsCiAgJ01BWF9QUk9HUkFNX1RFWF9JTkRJUkVDVElPTlNfQVJCJzogMHg4ODBELAogICdNQVhfUFJPR1JBTV9OQVRJVkVfQUxVX0lOU1RSVUNUSU9OU19BUkInOiAweDg4MEUsCiAgJ01BWF9QUk9HUkFNX05BVElWRV9URVhfSU5TVFJVQ1RJT05TX0FSQic6IDB4ODgwRiwKICAnTUFYX1BST0dSQU1fTkFUSVZFX1RFWF9JTkRJUkVDVElPTlNfQVJCJzogMHg4ODEwLAogICdNQVhfVEVYVFVSRV9DT09SRFNfQVJCJzogMHg4ODcxLAogICdNQVhfVEVYVFVSRV9JTUFHRV9VTklUU19BUkInOiAweDg4NzIsCiAgJ0ZSQUdNRU5UX1NIQURFUl9BUkInOiAweDhCMzAsCiAgJ01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFNfQVJCJzogMHg4QjQ5LAogICdGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX0FSQic6IDB4OEI4QiwKICAnSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04nOiAweDA1MDYsCiAgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcnOiAweDgyMTAsCiAgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUnOiAweDgyMTEsCiAgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkUnOiAweDgyMTIsCiAgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSc6IDB4ODIxMywKICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkUnOiAweDgyMTQsCiAgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSc6IDB4ODIxNSwKICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFJzogMHg4MjE2LAogICdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRSc6IDB4ODIxNywKICAnRlJBTUVCVUZGRVJfREVGQVVMVCc6IDB4ODIxOCwKICAnRlJBTUVCVUZGRVJfVU5ERUZJTkVEJzogMHg4MjE5LAogICdERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQnOiAweDgyMUEsCiAgJ0lOREVYJzogMHg4MjIyLAogICdNQVhfUkVOREVSQlVGRkVSX1NJWkUnOiAweDg0RTgsCiAgJ0RFUFRIX1NURU5DSUwnOiAweDg0RjksCiAgJ1VOU0lHTkVEX0lOVF8yNF84JzogMHg4NEZBLAogICdERVBUSDI0X1NURU5DSUw4JzogMHg4OEYwLAogICdURVhUVVJFX1NURU5DSUxfU0laRSc6IDB4ODhGMSwKICAnVU5TSUdORURfTk9STUFMSVpFRCc6IDB4OEMxNywKICAnU1JHQic6IDB4OEM0MCwKICAnRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HJzogMHg4Q0E2LAogICdGUkFNRUJVRkZFUl9CSU5ESU5HJzogMHg4Q0E2LAogICdSRU5ERVJCVUZGRVJfQklORElORyc6IDB4OENBNywKICAnUkVBRF9GUkFNRUJVRkZFUic6IDB4OENBOCwKICAnRFJBV19GUkFNRUJVRkZFUic6IDB4OENBOSwKICAnUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HJzogMHg4Q0FBLAogICdSRU5ERVJCVUZGRVJfU0FNUExFUyc6IDB4OENBQiwKICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSc6IDB4OENEMCwKICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSc6IDB4OENEMSwKICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMJzogMHg