Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data:text/html;base64,PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5Pjxtb2R1bGU+DQo8bW9kdWxlcHJlZnMgdGl0bGU9IlNsb3BlIj4NCjxjb250ZW50IHR5cGU9Imh0bWwiPjwhLS1bQ0RBVEFbDQoNCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1JlbmVUaXJhZG8xNC9sYmFubmFuYUAzYWQ1YmY3ZWFiMWE0NzY2MGFjZDhmYmUwYzI0ZDExMTljN2EwYjZkL2h0bWwvc2xvcGUvVGVtcGxhdGVEYXRhL3N0eWxlLmNzcyItLT48c2NyaXB0PmZ1bmN0aW9uIFVuaXR5UHJvZ3Jlc3MoZ2FtZUluc3RhbmNlLCBwcm9ncmVzcykgew0KICBpZiAoIWdhbWVJbnN0YW5jZS5Nb2R1bGUpDQogICAgcmV0dXJuOw0KICBpZiAoIWdhbWVJbnN0YW5jZS5sb2dvKSB7DQogICAgZ2FtZUluc3RhbmNlLmxvZ28gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICBnYW1lSW5zdGFuY2UubG9nby5jbGFzc05hbWUgPSAibG9nbyAiICsgZ2FtZUluc3RhbmNlLk1vZHVsZS5zcGxhc2hTY3JlZW5TdHlsZTsNCiAgICBnYW1lSW5zdGFuY2UuY29udGFpbmVyLmFwcGVuZENoaWxkKGdhbWVJbnN0YW5jZS5sb2dvKTsNCiAgfQ0KICBpZiAoIWdhbWVJbnN0YW5jZS5wcm9ncmVzcykgew0KICAgIGdhbWVJbnN0YW5jZS5wcm9ncmVzcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgIGdhbWVJbnN0YW5jZS5wcm9ncmVzcy5jbGFzc05hbWUgPSAicHJvZ3Jlc3MgIiArIGdhbWVJbnN0YW5jZS5Nb2R1bGUuc3BsYXNoU2NyZWVuU3R5bGU7DQogICAgZ2FtZUluc3RhbmNlLnByb2dyZXNzLmVtcHR5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgZ2FtZUluc3RhbmNlLnByb2dyZXNzLmVtcHR5LmNsYXNzTmFtZSA9ICJlbXB0eSI7DQogICAgZ2FtZUluc3RhbmNlLnByb2dyZXNzLmFwcGVuZENoaWxkKGdhbWVJbnN0YW5jZS5wcm9ncmVzcy5lbXB0eSk7DQogICAgZ2FtZUluc3RhbmNlLnByb2dyZXNzLmZ1bGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICBnYW1lSW5zdGFuY2UucHJvZ3Jlc3MuZnVsbC5jbGFzc05hbWUgPSAiZnVsbCI7DQogICAgZ2FtZUluc3RhbmNlLnByb2dyZXNzLmFwcGVuZENoaWxkKGdhbWVJbnN0YW5jZS5wcm9ncmVzcy5mdWxsKTsNCiAgICBnYW1lSW5zdGFuY2UuY29udGFpbmVyLmFwcGVuZENoaWxkKGdhbWVJbnN0YW5jZS5wcm9ncmVzcyk7DQogIH0NCiAgZ2FtZUluc3RhbmNlLnByb2dyZXNzLmZ1bGwuc3R5bGUud2lkdGggPSAoMTAwICogcHJvZ3Jlc3MpICsgIiUiOw0KICBnYW1lSW5zdGFuY2UucHJvZ3Jlc3MuZW1wdHkuc3R5bGUud2lkdGggPSAoMTAwICogKDEgLSBwcm9ncmVzcykpICsgIiUiOw0KICBpZiAocHJvZ3Jlc3MgPT0gMSkNCiAgICBnYW1lSW5zdGFuY2UubG9nby5zdHlsZS5kaXNwbGF5ID0gZ2FtZUluc3RhbmNlLnByb2dyZXNzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQp9PC9zY3JpcHQ+DQogICAgPHNjcmlwdD52YXIgVW5pdHlMb2FkZXIgPSBVbml0eUxvYWRlciB8fCB7DQogICAgY29tcGF0aWJpbGl0eUNoZWNrOiBmdW5jdGlvbihlLCB0LCByKSB7IFVuaXR5TG9hZGVyLlN5c3RlbUluZm8uaGFzV2ViR0wgPyBVbml0eUxvYWRlci5TeXN0ZW1JbmZvLm1vYmlsZSA/IGUucG9wdXAoIlBsZWFzZSBub3RlIHRoYXQgVW5pdHkgV2ViR0wgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gbW9iaWxlcy4gUHJlc3MgT0sgaWYgeW91IHdpc2ggdG8gY29udGludWUgYW55d2F5LiIsIFt7IHRleHQ6ICJPSyIsIGNhbGxiYWNrOiB0IH1dKSA6IFsiRmlyZWZveCIsICJDaHJvbWUiLCAiU2FmYXJpIl0uaW5kZXhPZihVbml0eUxvYWRlci5TeXN0ZW1JbmZvLmJyb3dzZXIpID09IC0xID8gZS5wb3B1cCgiUGxlYXNlIG5vdGUgdGhhdCB5b3VyIGJyb3dzZXIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIHRoaXMgVW5pdHkgV2ViR0wgY29udGVudC4gUHJlc3MgT0sgaWYgeW91IHdpc2ggdG8gY29udGludWUgYW55d2F5LiIsIFt7IHRleHQ6ICJPSyIsIGNhbGxiYWNrOiB0IH1dKSA6IHQoKSA6IGUucG9wdXAoIllvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IFdlYkdMIiwgW3sgdGV4dDogIk9LIiwgY2FsbGJhY2s6IHIgfV0pIH0sDQogICAgQmxvYnM6IHt9LA0KICAgIGxvYWRDb2RlOiBmdW5jdGlvbihlLCB0LCByKSB7IHZhciBuID0gW10uc2xpY2UuY2FsbChVbml0eUxvYWRlci5DcnlwdG9ncmFwaHkubWQ1KGUpKS5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gKCIwIiArIGUudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpIH0pLmpvaW4oIiIpLA0KICAgICAgICAgICAgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLA0KICAgICAgICAgICAgYSA9IFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoWydVbml0eUxvYWRlclsiJyArIG4gKyAnIl09JywgZV0sIHsgdHlwZTogInRleHQvamF2YXNjcmlwdCIgfSkpOw0KICAgICAgICBVbml0eUxvYWRlci5CbG9ic1thXSA9IHIsIG8uc3JjID0gYSwgby5vbmxvYWQgPSBmdW5jdGlvbigpIHsgVVJMLnJldm9rZU9iamVjdFVSTChhKSwgdChuKSB9LCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG8pIH0sDQogICAgYWxsb2NhdGVIZWFwSm9iOiBmdW5jdGlvbihlLCB0KSB7IGZvciAodmFyIHIgPSBlLlRPVEFMX1NUQUNLIHx8IDUyNDI4ODAsIG4gPSBlLlRPVEFMX01FTU9SWSB8fCAoZS5idWZmZXIgPyBlLmJ1ZmZlci5ieXRlTGVuZ3RoIDogMjY4NDM1NDU2KSwgbyA9IDY1NTM2LCBhID0gMTY3NzcyMTYsIGkgPSBvOyBpIDwgbiB8fCBpIDwgMiAqIHI7KSBpICs9IGkgPCBhID8gaSA6IGE7DQogICAgICAgIGkgIT0gbiAmJiBlLnByaW50RXJyKCJpbmNyZWFzaW5nIFRPVEFMX01FTU9SWSB0byAiICsgaSArICIgdG8gYmUgY29tcGxpYW50IHdpdGggdGhlIGFzbS5qcyBzcGVjIChhbmQgZ2l2ZW4gdGhhdCBUT1RBTF9TVEFDSz0iICsgciArICIpIiksIG4gPSBpLCB0LnBhcmFtZXRlcnMudXNlV2FzbSA/IChlLndhc21NZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogbiAvIG8sIG1heGltdW06IG4gLyBvIH0pLCBlLmJ1ZmZlciA9IGUud2FzbU1lbW9yeS5idWZmZXIpIDogZS5idWZmZXIgPyBlLmJ1ZmZlci5ieXRlTGVuZ3RoICE9IG4gJiYgKGUucHJpbnRFcnIoInByb3ZpZGVkIGJ1ZmZlciBzaG91bGQgYmUgIiArIG4gKyAiIGJ5dGVzLCBidXQgaXQgaXMgIiArIGUuYnVmZmVyLmJ5dGVMZW5ndGggKyAiLCByZWFsbG9jYXRpbmcgdGhlIGJ1ZmZlciIpLCBlLmJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihuKSkgOiBlLmJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihuKSwgZS5UT1RBTF9NRU1PUlkgPSBlLmJ1ZmZlci5ieXRlTGVuZ3RoLCB0LmNvbXBsZXRlKCkgfSwNCiAgICBzZXR1cEluZGV4ZWREQkpvYjogZnVuY3Rpb24oZSwgdCkgew0KICAgICAgICBmdW5jdGlvbiByKG4pIHsgci5jYWxsZWQgfHwgKHIuY2FsbGVkID0gITAsIGUuaW5kZXhlZERCID0gbiwgdC5jb21wbGV0ZSgpKSB9IHRyeSB7IHZhciBuID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1zSW5kZXhlZERCLA0KICAgICAgICAgICAgICAgIG8gPSBuLm9wZW4oIi9pZGJmcy10ZXN0Iik7DQogICAgICAgICAgICBvLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7IGUucHJldmVudERlZmF1bHQoKSwgcigpIH0sIG8ub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IG8ucmVzdWx0LmNsb3NlKCksIHIobikgfSwgc2V0VGltZW91dChyLCAxZTMpIH0gY2F0Y2ggKGUpIHsgcigpIH0gfSwNCiAgICBwcm9jZXNzV2FzbUNvZGVKb2I6IGZ1bmN0aW9uKGUsIHQpIHsgZS53YXNtQmluYXJ5ID0gVW5pdHlMb2FkZXIuSm9iLnJlc3VsdChlLCAiZG93bmxvYWRXYXNtQ29kZSIpLCB0LmNvbXBsZXRlKCkgfSwNCiAgICBwcm9jZXNzV2FzbUZyYW1ld29ya0pvYjogZnVuY3Rpb24oZSwgdCkgeyBVbml0eUxvYWRlci5sb2FkQ29kZShVbml0eUxvYWRlci5Kb2IucmVzdWx0KGUsICJkb3dubG9hZFdhc21GcmFtZXdvcmsiKSwgZnVuY3Rpb24ocikgeyBVbml0eUxvYWRlcltyXShlKSwgdC5jb21wbGV0ZSgpIH0sIHsgTW9kdWxlOiBlLCB1cmw6IGUud2FzbUZyYW1ld29ya1VybCB9KSB9LA0KICAgIHByb2Nlc3NBc21Db2RlSm9iOiBmdW5jdGlvbihlLCB0KSB7IHZhciByID0gVW5pdHlMb2FkZXIuSm9iLnJlc3VsdChlLCAiZG93bmxvYWRBc21Db2RlIik7DQogICAgICAgIFVuaXR5TG9hZGVyLmxvYWRDb2RlKE1hdGguZnJvdW5kID8gciA6IFVuaXR5TG9hZGVyLlV0aWxzLm9wdGltaXplTWF0aEZyb3VuZChyKSwgZnVuY3Rpb24ocikgeyBlLmFzbSA9IFVuaXR5TG9hZGVyW3JdLCB0LmNvbXBsZXRlKCkgfSwgeyBNb2R1bGU6IGUsIHVybDogZS5hc21Db2RlVXJsIH0pIH0sDQogICAgcHJvY2Vzc0FzbUZyYW1ld29ya0pvYjogZnVuY3Rpb24oZSwgdCkgeyBVbml0eUxvYWRlci5sb2FkQ29kZShVbml0eUxvYWRlci5Kb2IucmVzdWx0KGUsICJkb3dubG9hZEFzbUZyYW1ld29yayIpLCBmdW5jdGlvbihyKSB7IFVuaXR5TG9hZGVyW3JdKGUpLCB0LmNvbXBsZXRlKCkgfSwgeyBNb2R1bGU6IGUsIHVybDogZS5hc21GcmFtZXdvcmtVcmwgfSkgfSwNCiAgICBwcm9jZXNzQXNtTWVtb3J5Sm9iOiBmdW5jdGlvbihlLCB0KSB7IGUubWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0LnN0YXR1cyA9IDIwMCwgZS5tZW1vcnlJbml0aWFsaXplclJlcXVlc3QucmVzcG9uc2UgPSBVbml0eUxvYWRlci5Kb2IucmVzdWx0KGUsICJkb3dubG9hZEFzbU1lbW9yeSIpLCBlLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdC5jYWxsYmFjayAmJiBlLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdC5jYWxsYmFjaygpLCB0LmNvbXBsZXRlKCkgfSwNCiAgICBwcm9jZXNzRGF0YUpvYjogZnVuY3Rpb24oZSwgdCkgeyB2YXIgciA9IFVuaXR5TG9hZGVyLkpvYi5yZXN1bHQoZSwgImRvd25sb2FkRGF0YSIpLA0KICAgICAgICAgICAgbiA9IG5ldyBEYXRhVmlldyhyLmJ1ZmZlciwgci5ieXRlT2Zmc2V0LCByLmJ5dGVMZW5ndGgpLA0KICAgICAgICAgICAgbyA9IDAsDQogICAgICAgICAgICBhID0gIlVuaXR5V2ViRGF0YTEuMFwwIjsgaWYgKCFTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHIuc3ViYXJyYXkobywgbyArIGEubGVuZ3RoKSkgPT0gYSkgdGhyb3cgInVua25vd24gZGF0YSBmb3JtYXQiOw0KICAgICAgICBvICs9IGEubGVuZ3RoOyB2YXIgaSA9IG4uZ2V0VWludDMyKG8sICEwKTsgZm9yIChvICs9IDQ7IG8gPCBpOykgeyB2YXIgcyA9IG4uZ2V0VWludDMyKG8sICEwKTsNCiAgICAgICAgICAgIG8gKz0gNDsgdmFyIGQgPSBuLmdldFVpbnQzMihvLCAhMCk7DQogICAgICAgICAgICBvICs9IDQ7IHZhciBsID0gbi5nZXRVaW50MzIobywgITApOw0KICAgICAgICAgICAgbyArPSA0OyB2YXIgdSA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgci5zdWJhcnJheShvLCBvICsgbCkpOw0KICAgICAgICAgICAgbyArPSBsOyBmb3IgKHZhciBmID0gMCwgYyA9IHUuaW5kZXhPZigiLyIsIGYpICsgMTsgYyA+IDA7IGYgPSBjLCBjID0gdS5pbmRleE9mKCIvIiwgZikgKyAxKSBlLkZTX2NyZWF0ZVBhdGgodS5zdWJzdHJpbmcoMCwgZiksIHUuc3Vic3RyaW5nKGYsIGMgLSAxKSwgITAsICEwKTsNCiAgICAgICAgICAgIGUuRlNfY3JlYXRlRGF0YUZpbGUodSwgbnVsbCwgci5zdWJhcnJheShzLCBzICsgZCksICEwLCAhMCwgITApIH0gZS5yZW1vdmVSdW5EZXBlbmRlbmN5KCJwcm9jZXNzRGF0YUpvYiIpLCB0LmNvbXBsZXRlKCkgfSwNCiAgICBkb3dubG9hZEpvYjogZnVuY3Rpb24oZSwgdCkgeyB2YXIgciA9IHQucGFyYW1ldGVycy5vYmpQYXJhbWV0ZXJzID8gbmV3IFVuaXR5TG9hZGVyLlhNTEh0dHBSZXF1ZXN0KHQucGFyYW1ldGVycy5vYmpQYXJhbWV0ZXJzKSA6IG5ldyBYTUxIdHRwUmVxdWVzdDsNCiAgICAgICAgci5vcGVuKCJHRVQiLCB0LnBhcmFtZXRlcnMudXJsKSwgci5yZXNwb25zZVR5cGUgPSAiYXJyYXlidWZmZXIiLCByLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBVbml0eUxvYWRlci5Db21wcmVzc2lvbi5kZWNvbXByZXNzKG5ldyBVaW50OEFycmF5KHIucmVzcG9uc2UpLCBmdW5jdGlvbihlKSB7IHQuY29tcGxldGUoZSkgfSkgfSwgdC5wYXJhbWV0ZXJzLm9ucHJvZ3Jlc3MgJiYgci5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsIHQucGFyYW1ldGVycy5vbnByb2dyZXNzKSwgdC5wYXJhbWV0ZXJzLm9ubG9hZCAmJiByLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0LnBhcmFtZXRlcnMub25sb2FkKSwgci5zZW5kKCkgfSwNCiAgICBzY2hlZHVsZUJ1aWxkRG93bmxvYWRKb2I6IGZ1bmN0aW9uKGUsIHQsIHIpIHsgVW5pdHlMb2FkZXIuUHJvZ3Jlc3MudXBkYXRlKGUsIHQpLCBVbml0eUxvYWRlci5Kb2Iuc2NoZWR1bGUoZSwgdCwgW10sIFVuaXR5TG9hZGVyLmRvd25sb2FkSm9iLCB7IHVybDogZS5yZXNvbHZlQnVpbGRVcmwoZVtyXSksIG9ucHJvZ3Jlc3M6IGZ1bmN0aW9uKHIpIHsgVW5pdHlMb2FkZXIuUHJvZ3Jlc3MudXBkYXRlKGUsIHQsIHIpIH0sIG9ubG9hZDogZnVuY3Rpb24ocikgeyBVbml0eUxvYWRlci5Qcm9ncmVzcy51cGRhdGUoZSwgdCwgcikgfSwgb2JqUGFyYW1ldGVyczogZS5jb21wYW55TmFtZSAmJiBlLnByb2R1Y3ROYW1lICYmIGUuY2FjaGVDb250cm9sICYmIGUuY2FjaGVDb250cm9sW3JdID8geyBjb21wYW55TmFtZTogZS5jb21wYW55TmFtZSwgcHJvZHVjdE5hbWU6IGUucHJvZHVjdE5hbWUsIGNhY2hlQ29udHJvbDogZS5jYWNoZUNvbnRyb2xbcl0gfSA6IG51bGwgfSkgfSwNCiAgICBsb2FkTW9kdWxlOiBmdW5jdGlvbihlKSB7IGlmIChlLnVzZVdhc20gPSBlLndhc21Db2RlVXJsICYmIFVuaXR5TG9hZGVyLlN5c3RlbUluZm8uaGFzV2FzbSwgZS51c2VXYXNtKSBVbml0eUxvYWRlci5zY2hlZHVsZUJ1aWxkRG93bmxvYWRKb2IoZSwgImRvd25sb2FkV2FzbUNvZGUiLCAid2FzbUNvZGVVcmwiKSwgVW5pdHlMb2FkZXIuSm9iLnNjaGVkdWxlKGUsICJwcm9jZXNzV2FzbUNvZGUiLCBbImRvd25sb2FkV2FzbUNvZGUiXSwgVW5pdHlMb2FkZXIucHJvY2Vzc1dhc21Db2RlSm9iKSwgVW5pdHlMb2FkZXIuc2NoZWR1bGVCdWlsZERvd25sb2FkSm9iKGUsICJkb3dubG9hZFdhc21GcmFtZXdvcmsiLCAid2FzbUZyYW1ld29ya1VybCIpLCBVbml0eUxvYWRlci5Kb2Iuc2NoZWR1bGUoZSwgInByb2Nlc3NXYXNtRnJhbWV3b3JrIiwgWyJkb3dubG9hZFdhc21GcmFtZXdvcmsiLCAicHJvY2Vzc1dhc21Db2RlIiwgInNldHVwSW5kZXhlZERCIl0sIFVuaXR5TG9hZGVyLnByb2Nlc3NXYXNtRnJhbWV3b3JrSm9iKTsNCiAgICAgICAgZWxzZSB7IGlmICghZS5hc21Db2RlVXJsKSB0aHJvdyAiV2ViQXNzZW1ibHkgc3VwcG9ydCBpcyBub3QgZGV0ZWN0ZWQgaW4gdGhpcyBicm93c2VyLiI7DQogICAgICAgICAgICBVbml0eUxvYWRlci5zY2hlZHVsZUJ1aWxkRG93bmxvYWRKb2IoZSwgImRvd25sb2FkQXNtQ29kZSIsICJhc21Db2RlVXJsIiksIFVuaXR5TG9hZGVyLkpvYi5zY2hlZHVsZShlLCAicHJvY2Vzc0FzbUNvZGUiLCBbImRvd25sb2FkQXNtQ29kZSJdLCBVbml0eUxvYWRlci5wcm9jZXNzQXNtQ29kZUpvYiksIFVuaXR5TG9hZGVyLnNjaGVkdWxlQnVpbGREb3dubG9hZEpvYihlLCAiZG93bmxvYWRBc21NZW1vcnkiLCAiYXNtTWVtb3J5VXJsIiksIFVuaXR5TG9hZGVyLkpvYi5zY2hlZHVsZShlLCAicHJvY2Vzc0FzbU1lbW9yeSIsIFsiZG93bmxvYWRBc21NZW1vcnkiXSwgVW5pdHlMb2FkZXIucHJvY2Vzc0FzbU1lbW9yeUpvYiksIGUubWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0ID0geyBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbih0LCByKSB7IGUubWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0LmNhbGxiYWNrID0gciB9IH0sIGUuYXNtTGlicmFyeVVybCAmJiAoZS5keW5hbWljTGlicmFyaWVzID0gW2UuYXNtTGlicmFyeVVybF0ubWFwKGUucmVzb2x2ZUJ1aWxkVXJsKSksIFVuaXR5TG9hZGVyLnNjaGVkdWxlQnVpbGREb3dubG9hZEpvYihlLCAiZG93bmxvYWRBc21GcmFtZXdvcmsiLCAiYXNtRnJhbWV3b3JrVXJsIiksIFVuaXR5TG9hZGVyLkpvYi5zY2hlZHVsZShlLCAicHJvY2Vzc0FzbUZyYW1ld29yayIsIFsiZG93bmxvYWRBc21GcmFtZXdvcmsiLCAicHJvY2Vzc0FzbUNvZGUiLCAic2V0dXBJbmRleGVkREIiXSwgVW5pdHlMb2FkZXIucHJvY2Vzc0FzbUZyYW1ld29ya0pvYikgfSBVbml0eUxvYWRlci5zY2hlZHVsZUJ1aWxkRG93bmxvYWRKb2IoZSwgImRvd25sb2FkRGF0YSIsICJkYXRhVXJsIiksIFVuaXR5TG9hZGVyLkpvYi5zY2hlZHVsZShlLCAic2V0dXBJbmRleGVkREIiLCBbXSwgVW5pdHlMb2FkZXIuc2V0dXBJbmRleGVkREJKb2IpLCBlLnByZVJ1bi5wdXNoKGZ1bmN0aW9uKCkgeyBlLmFkZFJ1bkRlcGVuZGVuY3koInByb2Nlc3NEYXRhSm9iIiksIFVuaXR5TG9hZGVyLkpvYi5zY2hlZHVsZShlLCAicHJvY2Vzc0RhdGEiLCBbImRvd25sb2FkRGF0YSJdLCBVbml0eUxvYWRlci5wcm9jZXNzRGF0YUpvYikgfSkgfSwNCiAgICBpbnN0YW50aWF0ZTogZnVuY3Rpb24oZSwgdCwgcikgew0KICAgICAgICBmdW5jdGlvbiBuKGUsIHIpIHsgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlICYmICEoZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpKSkgcmV0dXJuICExOw0KICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiIiwgZS5zdHlsZS5ib3JkZXIgPSBlLnN0eWxlLm1hcmdpbiA9IGUuc3R5bGUucGFkZGluZyA9IDAsICJzdGF0aWMiID09IGdldENvbXB1dGVkU3R5bGUoZSkuZ2V0UHJvcGVydHlWYWx1ZSgicG9zaXRpb24iKSAmJiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpLCBlLnN0eWxlLndpZHRoID0gci53aWR0aCB8fCBlLnN0eWxlLndpZHRoLCBlLnN0eWxlLmhlaWdodCA9IHIuaGVpZ2h0IHx8IGUuc3R5bGUuaGVpZ2h0LCByLmNvbnRhaW5lciA9IGU7IHZhciBuID0gci5Nb2R1bGU7IHJldHVybiBuLmNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLCBuLmNhbnZhcy5zdHlsZS53aWR0aCA9ICIxMDAlIiwgbi5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiLCBuLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpIH0pLCBuLmNhbnZhcy5pZCA9ICIjY2FudmFzIiwgZS5hcHBlbmRDaGlsZChuLmNhbnZhcyksIHIuY29tcGF0aWJpbGl0eUNoZWNrKHIsIGZ1bmN0aW9uKCkgeyB2YXIgdCA9IG5ldyBYTUxIdHRwUmVxdWVzdDsNCiAgICAgICAgICAgICAgICB0Lm9wZW4oIkdFVCIsIHIudXJsLCAhMCksIHQucmVzcG9uc2VUeXBlID0gInRleHQiLCB0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgbi5wcmludCgiQ291bGQgbm90IGRvd25sb2FkICIgKyByLnVybCksIDAgPT0gZG9jdW1lbnQuVVJMLmluZGV4T2YoImZpbGU6IikgJiYgYWxlcnQoIkl0IHNlZW1zIHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHJ1bm5pbmcgVW5pdHkgV2ViR0wgY29udGVudCBmcm9tIGZpbGU6Ly8gdXJscy4gUGxlYXNlIHVwbG9hZCBpdCB0byBhbiBodHRwIHNlcnZlciwgb3IgdHJ5IGEgZGlmZmVyZW50IGJyb3dzZXIuIikgfSwgdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsgdmFyIG8gPSBKU09OLnBhcnNlKHQucmVzcG9uc2VUZXh0KTsgZm9yICh2YXIgYSBpbiBvKSAidW5kZWZpbmVkIiA9PSB0eXBlb2YgblthXSAmJiAoblthXSA9IG9bYV0pOyBmb3IgKHZhciBpID0gITEsIHMgPSAwOyBzIDwgbi5ncmFwaGljc0FQSS5sZW5ndGg7IHMrKykgeyB2YXIgZCA9IG4uZ3JhcGhpY3NBUElbc107ICJXZWJHTCAyLjAiID09IGQgJiYgMiA9PSBVbml0eUxvYWRlci5TeXN0ZW1JbmZvLmhhc1dlYkdMID8gaSA9ICEwIDogIldlYkdMIDEuMCIgPT0gZCAmJiBVbml0eUxvYWRlci5TeXN0ZW1JbmZvLmhhc1dlYkdMID49IDEgPyBpID0gITAgOiBuLnByaW50KCJXYXJuaW5nOiBVbnN1cHBvcnRlZCBncmFwaGljcyBBUEkgIiArIGQpIH0gcmV0dXJuIGkgPyAoZS5zdHlsZS5iYWNrZ3JvdW5kID0gbi5iYWNrZ3JvdW5kVXJsID8gImNlbnRlci9jb3ZlciB1cmwoJyIgKyBuLnJlc29sdmVCdWlsZFVybChuLmJhY2tncm91bmRVcmwpICsgIicpIiA6IG4uYmFja2dyb3VuZENvbG9yID8gIiAiICsgbi5iYWNrZ3JvdW5kQ29sb3IgOiAiIiwgci5vblByb2dyZXNzKHIsIDApLCB2b2lkIFVuaXR5TG9hZGVyLmxvYWRNb2R1bGUobikpIDogdm9pZCByLnBvcHVwKCJZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBhbnkgb2YgdGhlIHJlcXVpcmVkIGdyYXBoaWNzIEFQSSBmb3IgdGhpcyBjb250ZW50OiAiICsgbi5ncmFwaGljc0FQSSwgW3sgdGV4dDogIk9LIiB9XSkgfSwgdC5zZW5kKCkgfSwgZnVuY3Rpb24oKSB7IG4ucHJpbnQoIkluc3RhbnRpYXRpb24gb2YgdGhlICciICsgdCArICInIHRlcm1pbmF0ZWQgZHVlIHRvIHRoZSBmYWlsZWQgY29tcGF0aWJpbGl0eSBjaGVjay4iKSB9KSwgITAgfSB2YXIgbyA9IHsgdXJsOiB0LCBvblByb2dyZXNzOiBVbml0eUxvYWRlci5Qcm9ncmVzcy5oYW5kbGVyLCBjb21wYXRpYmlsaXR5Q2hlY2s6IFVuaXR5TG9hZGVyLmNvbXBhdGliaWxpdHlDaGVjaywgTW9kdWxlOiB7IHByZVJ1bjogW10sIHBvc3RSdW46IFtdLCBwcmludDogZnVuY3Rpb24oZSkgeyBjb25zb2xlLmxvZyhlKSB9LCBwcmludEVycjogZnVuY3Rpb24oZSkgeyBjb25zb2xlLmVycm9yKGUpIH0sIEpvYnM6IHt9LCBidWlsZERvd25sb2FkUHJvZ3Jlc3M6IHt9LCByZXNvbHZlQnVpbGRVcmw6IGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUubWF0Y2goLyhodHRwfGh0dHBzfGZ0cHxmaWxlKTpcL1wvLykgPyBlIDogdC5zdWJzdHJpbmcoMCwgdC5sYXN0SW5kZXhPZigiLyIpICsgMSkgKyBlIH0gfSwgU2V0RnVsbHNjcmVlbjogZnVuY3Rpb24oKSB7IGlmIChvLk1vZHVsZS5TZXRGdWxsc2NyZWVuKSByZXR1cm4gby5Nb2R1bGUuU2V0RnVsbHNjcmVlbi5hcHBseShvLk1vZHVsZSwgYXJndW1lbnRzKSB9LCBTZW5kTWVzc2FnZTogZnVuY3Rpb24oKSB7IGlmIChvLk1vZHVsZS5TZW5kTWVzc2FnZSkgcmV0dXJuIG8uTW9kdWxlLlNlbmRNZXNzYWdlLmFwcGx5KG8uTW9kdWxlLCBhcmd1bWVudHMpIH0gfTsNCiAgICAgICAgby5Nb2R1bGUuZ2FtZUluc3RhbmNlID0gbywgby5wb3B1cCA9IGZ1bmN0aW9uKGUsIHQpIHsgcmV0dXJuIFVuaXR5TG9hZGVyLkVycm9yLnBvcHVwKG8sIGUsIHQpIH0sIG8uTW9kdWxlLnBvc3RSdW4ucHVzaChmdW5jdGlvbigpIHsgby5vblByb2dyZXNzKG8sIDEpIH0pOyBmb3IgKHZhciBhIGluIHIpDQogICAgICAgICAgICBpZiAoIk1vZHVsZSIgPT0gYSkNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHJbYV0pIG8uTW9kdWxlW2ldID0gclthXVtpXTsNCiAgICAgICAgICAgIGVsc2Ugb1thXSA9IHJbYV07IHJldHVybiBuKGUsIG8pIHx8IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsgbihlLCBvKSB9KSwgbyB9LA0KICAgIFN5c3RlbUluZm86IGZ1bmN0aW9uKCkgeyB2YXIgZSwgdCwgciwgbiA9ICItIiwNCiAgICAgICAgICAgIG8gPSBuYXZpZ2F0b3IuYXBwVmVyc2lvbiwNCiAgICAgICAgICAgIGEgPSBuYXZpZ2F0b3IudXNlckFnZW50LA0KICAgICAgICAgICAgaSA9IG5hdmlnYXRvci5hcHBOYW1lLA0KICAgICAgICAgICAgcyA9IG5hdmlnYXRvci5hcHBWZXJzaW9uLA0KICAgICAgICAgICAgZCA9IHBhcnNlSW50KG5hdmlnYXRvci5hcHBWZXJzaW9uLCAxMCk7DQogICAgICAgICh0ID0gYS5pbmRleE9mKCJPcGVyYSIpKSAhPSAtMSA/IChpID0gIk9wZXJhIiwgcyA9IGEuc3Vic3RyaW5nKHQgKyA2KSwgKHQgPSBhLmluZGV4T2YoIlZlcnNpb24iKSkgIT0gLTEgJiYgKHMgPSBhLnN1YnN0cmluZyh0ICsgOCkpKSA6ICh0ID0gYS5pbmRleE9mKCJNU0lFIikpICE9IC0xID8gKGkgPSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIiwgcyA9IGEuc3Vic3RyaW5nKHQgKyA1KSkgOiAodCA9IGEuaW5kZXhPZigiQ2hyb21lIikpICE9IC0xID8gKGkgPSAiQ2hyb21lIiwgcyA9IGEuc3Vic3RyaW5nKHQgKyA3KSkgOiAodCA9IGEuaW5kZXhPZigiU2FmYXJpIikpICE9IC0xID8gKGkgPSAiU2FmYXJpIiwgcyA9IGEuc3Vic3RyaW5nKHQgKyA3KSwgKHQgPSBhLmluZGV4T2YoIlZlcnNpb24iKSkgIT0gLTEgJiYgKHMgPSBhLnN1YnN0cmluZyh0ICsgOCkpKSA6ICh0ID0gYS5pbmRleE9mKCJGaXJlZm94IikpICE9IC0xID8gKGkgPSAiRmlyZWZveCIsIHMgPSBhLnN1YnN0cmluZyh0ICsgOCkpIDogYS5pbmRleE9mKCJUcmlkZW50LyIpICE9IC0xID8gKGkgPSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIiwgcyA9IGEuc3Vic3RyaW5nKGEuaW5kZXhPZigicnY6IikgKyAzKSkgOiAoZSA9IGEubGFzdEluZGV4T2YoIiAiKSArIDEpIDwgKHQgPSBhLmxhc3RJbmRleE9mKCIvIikpICYmIChpID0gYS5zdWJzdHJpbmcoZSwgdCksIHMgPSBhLnN1YnN0cmluZyh0ICsgMSksIGkudG9Mb3dlckNhc2UoKSA9PSBpLnRvVXBwZXJDYXNlKCkgJiYgKGkgPSBuYXZpZ2F0b3IuYXBwTmFtZSkpLCAociA9IHMuaW5kZXhPZigiOyIpKSAhPSAtMSAmJiAocyA9IHMuc3Vic3RyaW5nKDAsIHIpKSwgKHIgPSBzLmluZGV4T2YoIiAiKSkgIT0gLTEgJiYgKHMgPSBzLnN1YnN0cmluZygwLCByKSksIChyID0gcy5pbmRleE9mKCIpIikpICE9IC0xICYmIChzID0gcy5zdWJzdHJpbmcoMCwgcikpLCBkID0gcGFyc2VJbnQoIiIgKyBzLCAxMCksIGlzTmFOKGQpID8gKHMgPSAiIiArIHBhcnNlRmxvYXQobmF2aWdhdG9yLmFwcFZlcnNpb24pLCBkID0gcGFyc2VJbnQobmF2aWdhdG9yLmFwcFZlcnNpb24sIDEwKSkgOiBzID0gIiIgKyBwYXJzZUZsb2F0KHMpOyB2YXIgbCA9IC9Nb2JpbGV8bWluaXxGZW5uZWN8QW5kcm9pZHxpUChhZHxvZHxob25lKS8udGVzdChvKSwNCiAgICAgICAgICAgIHUgPSBuLA0KICAgICAgICAgICAgZiA9IFt7IHM6ICJXaW5kb3dzIDMuMTEiLCByOiAvV2luMTYvIH0sIHsgczogIldpbmRvd3MgOTUiLCByOiAvKFdpbmRvd3MgOTV8V2luOTV8V2luZG93c185NSkvIH0sIHsgczogIldpbmRvd3MgTUUiLCByOiAvKFdpbiA5eCA0LjkwfFdpbmRvd3MgTUUpLyB9LCB7IHM6ICJXaW5kb3dzIDk4IiwgcjogLyhXaW5kb3dzIDk4fFdpbjk4KS8gfSwgeyBzOiAiV2luZG93cyBDRSIsIHI6IC9XaW5kb3dzIENFLyB9LCB7IHM6ICJXaW5kb3dzIDIwMDAiLCByOiAvKFdpbmRvd3MgTlQgNS4wfFdpbmRvd3MgMjAwMCkvIH0sIHsgczogIldpbmRvd3MgWFAiLCByOiAvKFdpbmRvd3MgTlQgNS4xfFdpbmRvd3MgWFApLyB9LCB7IHM6ICJXaW5kb3dzIFNlcnZlciAyMDAzIiwgcjogL1dpbmRvd3MgTlQgNS4yLyB9LCB7IHM6ICJXaW5kb3dzIFZpc3RhIiwgcjogL1dpbmRvd3MgTlQgNi4wLyB9LCB7IHM6ICJXaW5kb3dzIDciLCByOiAvKFdpbmRvd3MgN3xXaW5kb3dzIE5UIDYuMSkvIH0sIHsgczogIldpbmRvd3MgOC4xIiwgcjogLyhXaW5kb3dzIDguMXxXaW5kb3dzIE5UIDYuMykvIH0sIHsgczogIldpbmRvd3MgOCIsIHI6IC8oV2luZG93cyA4fFdpbmRvd3MgTlQgNi4yKS8gfSwgeyBzOiAiV2luZG93cyAxMCIsIHI6IC8oV2luZG93cyAxMHxXaW5kb3dzIE5UIDEwLjApLyB9LCB7IHM6ICJXaW5kb3dzIE5UIDQuMCIsIHI6IC8oV2luZG93cyBOVCA0LjB8V2luTlQ0LjB8V2luTlR8V2luZG93cyBOVCkvIH0sIHsgczogIldpbmRvd3MgTUUiLCByOiAvV2luZG93cyBNRS8gfSwgeyBzOiAiQW5kcm9pZCIsIHI6IC9BbmRyb2lkLyB9LCB7IHM6ICJPcGVuIEJTRCIsIHI6IC9PcGVuQlNELyB9LCB7IHM6ICJTdW4gT1MiLCByOiAvU3VuT1MvIH0sIHsgczogIkxpbnV4IiwgcjogLyhMaW51eHxYMTEpLyB9LCB7IHM6ICJpT1MiLCByOiAvKGlQaG9uZXxpUGFkfGlQb2QpLyB9LCB7IHM6ICJNYWMgT1MgWCIsIHI6IC9NYWMgT1MgWC8gfSwgeyBzOiAiTWFjIE9TIiwgcjogLyhNYWNQUEN8TWFjSW50ZWx8TWFjX1Bvd2VyUEN8TWFjaW50b3NoKS8gfSwgeyBzOiAiUU5YIiwgcjogL1FOWC8gfSwgeyBzOiAiVU5JWCIsIHI6IC9VTklYLyB9LCB7IHM6ICJCZU9TIiwgcjogL0JlT1MvIH0sIHsgczogIk9TLzIiLCByOiAvT1NcLzIvIH0sIHsgczogIlNlYXJjaCBCb3QiLCByOiAvKG51aGt8R29vZ2xlYm90fFlhbW15Ym90fE9wZW5ib3R8U2x1cnB8TVNOQm90fEFzayBKZWV2ZXNcL1Rlb21hfGlhX2FyY2hpdmVyKS8gfV07IGZvciAodmFyIGMgaW4gZikgeyB2YXIgaCA9IGZbY107IGlmIChoLnIudGVzdChhKSkgeyB1ID0gaC5zOyBicmVhayB9IH0gdmFyIHAgPSBuOyBzd2l0Y2ggKC9XaW5kb3dzLy50ZXN0KHUpICYmIChwID0gL1dpbmRvd3MgKC4qKS8uZXhlYyh1KVsxXSwgdSA9ICJXaW5kb3dzIiksIHUpIHsNCiAgICAgICAgICAgIGNhc2UgIk1hYyBPUyBYIjoNCiAgICAgICAgICAgICAgICBwID0gL01hYyBPUyBYICgxMFtcLlxfXGRdKykvLmV4ZWMoYSlbMV07IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiQW5kcm9pZCI6DQogICAgICAgICAgICAgICAgcCA9IC9BbmRyb2lkIChbXC5cX1xkXSspLy5leGVjKGEpWzFdOyBicmVhazsNCiAgICAgICAgICAgIGNhc2UgImlPUyI6DQogICAgICAgICAgICAgICAgcCA9IC9PUyAoXGQrKV8oXGQrKV8/KFxkKyk/Ly5leGVjKG8pLCBwID0gcFsxXSArICIuIiArIHBbMl0gKyAiLiIgKyAoMCB8IHBbM10pIH0gcmV0dXJuIHsgd2lkdGg6IHNjcmVlbi53aWR0aCA/IHNjcmVlbi53aWR0aCA6IDAsIGhlaWdodDogc2NyZWVuLmhlaWdodCA/IHNjcmVlbi5oZWlnaHQgOiAwLCBicm93c2VyOiBpLCBicm93c2VyVmVyc2lvbjogcywgbW9iaWxlOiBsLCBvczogdSwgb3NWZXJzaW9uOiBwLCBncHU6IGZ1bmN0aW9uKCkgeyB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLA0KICAgICAgICAgICAgICAgICAgICB0ID0gZS5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKTsgaWYgKHQpIHsgdmFyIHIgPSB0LmdldEV4dGVuc2lvbigiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOyBpZiAocikgcmV0dXJuIHQuZ2V0UGFyYW1ldGVyKHIuVU5NQVNLRURfUkVOREVSRVJfV0VCR0wpIH0gcmV0dXJuIG4gfSgpLCBsYW5ndWFnZTogd2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSwgaGFzV2ViR0w6IGZ1bmN0aW9uKCkgeyBpZiAoIXdpbmRvdy5XZWJHTFJlbmRlcmluZ0NvbnRleHQpIHJldHVybiAwOyB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLA0KICAgICAgICAgICAgICAgICAgICB0ID0gZS5nZXRDb250ZXh0KCJ3ZWJnbDIiKTsgcmV0dXJuIHQgPyAyIDogKHQgPSBlLmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbDIiKSwgdCA/IDIgOiAodCA9IGUuZ2V0Q29udGV4dCgid2ViZ2wiKSwgdCB8fCAodCA9IGUuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIikpID8gMSA6IDApKSB9KCksIGhhc0N1cnNvckxvY2s6IGZ1bmN0aW9uKCkgeyB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOyByZXR1cm4gZS5yZXF1ZXN0UG9pbnRlckxvY2sgfHwgZS5tb3pSZXF1ZXN0UG9pbnRlckxvY2sgfHwgZS53ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2sgfHwgZS5tc1JlcXVlc3RQb2ludGVyTG9jayA/IDEgOiAwIH0oKSwgaGFzRnVsbHNjcmVlbjogZnVuY3Rpb24oKSB7IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7IHJldHVybiAoZS5yZXF1ZXN0RnVsbFNjcmVlbiB8fCBlLm1velJlcXVlc3RGdWxsU2NyZWVuIHx8IGUubXNSZXF1ZXN0RnVsbHNjcmVlbiB8fCBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKSAmJiAoaS5pbmRleE9mKCJTYWZhcmkiKSA9PSAtMSB8fCBzID49IDEwLjEpID8gMSA6IDAgfSgpLCBoYXNXYXNtOiAib2JqZWN0IiA9PSB0eXBlb2YgV2ViQXNzZW1ibHkgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgV2ViQXNzZW1ibHkudmFsaWRhdGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgV2ViQXNzZW1ibHkuY29tcGlsZSB9IH0oKSwNCiAgICBFcnJvcjogeyBpbml0OiBmdW5jdGlvbigpIHsgcmV0dXJuIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IDUwLCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBmdW5jdGlvbihlKSB7IHZhciB0ID0gVW5pdHlMb2FkZXIuRXJyb3IuZ2V0TW9kdWxlKGUpOyBpZiAoIXQpIHJldHVybiBVbml0eUxvYWRlci5FcnJvci5oYW5kbGVyKGUpOyB2YXIgciA9IHQudXNlV2FzbSA/IHQud2FzbVN5bWJvbHNVcmwgOiB0LmFzbVN5bWJvbHNVcmw7IGlmICghcikgcmV0dXJuIFVuaXR5TG9hZGVyLkVycm9yLmhhbmRsZXIoZSwgdCk7IHZhciBuID0gbmV3IFhNTEh0dHBSZXF1ZXN0Ow0KICAgICAgICAgICAgICAgIG4ub3BlbigiR0VUIiwgdC5yZXNvbHZlQnVpbGRVcmwocikpLCBuLnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciIsIG4ub25sb2FkID0gZnVuY3Rpb24oKSB7IFVuaXR5TG9hZGVyLmxvYWRDb2RlKFVuaXR5TG9hZGVyLkNvbXByZXNzaW9uLmRlY29tcHJlc3MobmV3IFVpbnQ4QXJyYXkobi5yZXNwb25zZSkpLCBmdW5jdGlvbihyKSB7IHQuZGVtYW5nbGVTeW1ib2wgPSBVbml0eUxvYWRlcltyXSgpLCBVbml0eUxvYWRlci5FcnJvci5oYW5kbGVyKGUsIHQpIH0pIH0sIG4uc2VuZCgpIH0pLCAhMCB9KCksIHN0YWNrVHJhY2VGb3JtYXQ6IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQ2hyb21lIikgIT0gLTEgPyAiKFxccythdFxccyspKChbXFx3XFxkX1xcLl0qPykoW1xcd1xcZF8kXSspKC9bXFx3XFxkX1xcLi9dK3wpKShcXHMrXFxbLipcXF18KVxccypcXCgoYmxvYjouKilcXCkiIDogIihcXHMqKSgoW1xcd1xcZF9cXC5dKj8pKFtcXHdcXGRfJF0rKSgvW1xcd1xcZF9cXC4vXSt8KSkoXFxzK1xcWy4qXFxdfClcXHMqQChibG9iOi4qKSIsIHN0YWNrVHJhY2VGb3JtYXRXYXNtOiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkNocm9tZSIpICE9IC0xID8gIigoXFxzK2F0XFxzKilcXHNcXCg8V0FTTT5cXFsoXFxkKylcXF1cXCtcXGQrXFwpKSgpIiA6ICIoKFxccyopd2FzbS1mdW5jdGlvblxcWyhcXGQrKVxcXSlAKGJsb2I6LiopIiwgYmxvYlBhcnNlUmVnRXhwOiBuZXcgUmVnRXhwKCJeKGJsb2I6LiopKDpcXGQrOlxcZCspJCIpLCBnZXRNb2R1bGU6IGZ1bmN0aW9uKGUpIHsgdmFyIHQgPSBlLm1lc3NhZ2UubWF0Y2gobmV3IFJlZ0V4cCh0aGlzLnN0YWNrVHJhY2VGb3JtYXQsICJnIikpOyBmb3IgKHZhciByIGluIHQpIHsgdmFyIG4gPSB0W3JdLm1hdGNoKG5ldyBSZWdFeHAoIl4iICsgdGhpcy5zdGFja1RyYWNlRm9ybWF0ICsgIiQiKSksDQogICAgICAgICAgICAgICAgICAgIG8gPSBuWzddLm1hdGNoKHRoaXMuYmxvYlBhcnNlUmVnRXhwKTsgaWYgKG8gJiYgVW5pdHlMb2FkZXIuQmxvYnNbb1sxXV0gJiYgVW5pdHlMb2FkZXIuQmxvYnNbb1sxXV0uTW9kdWxlKSByZXR1cm4gVW5pdHlMb2FkZXIuQmxvYnNbb1sxXV0uTW9kdWxlIH0gfSwgZGVtYW5nbGU6IGZ1bmN0aW9uKGUsIHQpIHsgdmFyIHIgPSBlLm1lc3NhZ2U7IHJldHVybiB0ID8gKHIgPSByLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLnN0YWNrVHJhY2VGb3JtYXQsICJnIiksIGZ1bmN0aW9uKGUpIHsgdmFyIHIgPSBlLm1hdGNoKG5ldyBSZWdFeHAoIl4iICsgdGhpcy5zdGFja1RyYWNlRm9ybWF0ICsgIiQiKSksDQogICAgICAgICAgICAgICAgICAgIG4gPSByWzddLm1hdGNoKHRoaXMuYmxvYlBhcnNlUmVnRXhwKSwNCiAgICAgICAgICAgICAgICAgICAgbyA9IHQuZGVtYW5nbGVTeW1ib2wgPyB0LmRlbWFuZ2xlU3ltYm9sKHJbNF0pIDogcls0XSwNCiAgICAgICAgICAgICAgICAgICAgYSA9IG4gJiYgVW5pdHlMb2FkZXIuQmxvYnNbblsxXV0gJiYgVW5pdHlMb2FkZXIuQmxvYnNbblsxXV0udXJsID8gVW5pdHlMb2FkZXIuQmxvYnNbblsxXV0udXJsIDogImJsb2IiOyByZXR1cm4gclsxXSArIG8gKyAoclsyXSAhPSBvID8gIiBbIiArIHJbMl0gKyAiXSIgOiAiIikgKyAiICgiICsgKG4gPyBhLnN1YnN0cihhLmxhc3RJbmRleE9mKCIvIikgKyAxKSArIG5bMl0gOiByWzddKSArICIpIiB9LmJpbmQodGhpcykpLCB0LnVzZVdhc20gJiYgKHIgPSByLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLnN0YWNrVHJhY2VGb3JtYXRXYXNtLCAiZyIpLCBmdW5jdGlvbihlKSB7IHZhciByID0gZS5tYXRjaChuZXcgUmVnRXhwKCJeIiArIHRoaXMuc3RhY2tUcmFjZUZvcm1hdFdhc20gKyAiJCIpKSwNCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuZGVtYW5nbGVTeW1ib2wgPyB0LmRlbWFuZ2xlU3ltYm9sKHJbM10pIDogclszXSwNCiAgICAgICAgICAgICAgICAgICAgbyA9IHJbNF0ubWF0Y2godGhpcy5ibG9iUGFyc2VSZWdFeHApLA0KICAgICAgICAgICAgICAgICAgICBhID0gbyAmJiBVbml0eUxvYWRlci5CbG9ic1tvWzFdXSAmJiBVbml0eUxvYWRlci5CbG9ic1tvWzFdXS51cmwgPyBVbml0eUxvYWRlci5CbG9ic1tvWzFdXS51cmwgOiAiYmxvYiI7IHJldHVybiAobiA9PSByWzNdID8gclsxXSA6IHJbMl0gKyBuICsgIiBbd2FzbToiICsgclszXSArICJdIikgKyAocls0XSA/ICIgKCIgKyAobyA/IGEuc3Vic3RyKGEubGFzdEluZGV4T2YoIi8iKSArIDEpICsgb1syXSA6IHJbNF0pICsgIikiIDogIiIpIH0uYmluZCh0aGlzKSkpLCByKSA6IHIgfSwgaGFuZGxlcjogZnVuY3Rpb24oZSwgdCkgeyB2YXIgciA9IHQgPyB0aGlzLmRlbWFuZ2xlKGUsIHQpIDogZS5tZXNzYWdlOyBpZiAoISh0ICYmIHQuZXJyb3JoYW5kbGVyICYmIHQuZXJyb3JoYW5kbGVyKHIsIGUuZmlsZW5hbWUsIGUubGluZW5vKSB8fCAoY29uc29sZS5sb2coIkludm9raW5nIGVycm9yIGhhbmRsZXIgZHVlIHRvXG4iICsgciksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGR1bXAgJiYgZHVtcCgiSW52b2tpbmcgZXJyb3IgaGFuZGxlciBkdWUgdG9cbiIgKyByKSwgci5pbmRleE9mKCJVbmtub3duRXJyb3IiKSAhPSAtMSB8fCByLmluZGV4T2YoIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoMCkiKSAhPSAtMSB8fCB0aGlzLmRpZFNob3dFcnJvck1lc3NhZ2UpKSkgeyB2YXIgciA9ICJBbiBlcnJvciBvY2N1cnJlZCBydW5uaW5nIHRoZSBVbml0eSBjb250ZW50IG9uIHRoaXMgcGFnZS4gU2VlIHlvdXIgYnJvd3NlciBKYXZhU2NyaXB0IGNvbnNvbGUgZm9yIG1vcmUgaW5mby4gVGhlIGVycm9yIHdhczpcbiIgKyByOw0KICAgICAgICAgICAgICAgIHIuaW5kZXhPZigiRElTQUJMRV9FWENFUFRJT05fQ0FUQ0hJTkciKSAhPSAtMSA/IHIgPSAiQW4gZXhjZXB0aW9uIGhhcyBvY2N1cnJlZCwgYnV0IGV4Y2VwdGlvbiBoYW5kbGluZyBoYXMgYmVlbiBkaXNhYmxlZCBpbiB0aGlzIGJ1aWxkLiBJZiB5b3UgYXJlIHRoZSBkZXZlbG9wZXIgb2YgdGhpcyBjb250ZW50LCBlbmFibGUgZXhjZXB0aW9ucyBpbiB5b3VyIHByb2plY3QgV2ViR0wgcGxheWVyIHNldHRpbmdzIHRvIGJlIGFibGUgdG8gY2F0Y2ggdGhlIGV4Y2VwdGlvbiBvciBzZWUgdGhlIHN0YWNrIHRyYWNlLiIgOiByLmluZGV4T2YoIkNhbm5vdCBlbmxhcmdlIG1lbW9yeSBhcnJheXMiKSAhPSAtMSA/IHIgPSAiT3V0IG9mIG1lbW9yeS4gSWYgeW91IGFyZSB0aGUgZGV2ZWxvcGVyIG9mIHRoaXMgY29udGVudCwgdHJ5IGFsbG9jYXRpbmcgbW9yZSBtZW1vcnkgdG8geW91ciBXZWJHTCBidWlsZCBpbiB0aGUgV2ViR0wgcGxheWVyIHNldHRpbmdzLiIgOiByLmluZGV4T2YoIkludmFsaWQgYXJyYXkgYnVmZmVyIGxlbmd0aCIpID09IC0xICYmIHIuaW5kZXhPZigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKSA9PSAtMSAmJiByLmluZGV4T2YoIm91dCBvZiBtZW1vcnkiKSA9PSAtMSB8fCAociA9ICJUaGUgYnJvd3NlciBjb3VsZCBub3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIFdlYkdMIGNvbnRlbnQuIElmIHlvdSBhcmUgdGhlIGRldmVsb3BlciBvZiB0aGlzIGNvbnRlbnQsIHRyeSBhbGxvY2F0aW5nIGxlc3MgbWVtb3J5IHRvIHlvdXIgV2ViR0wgYnVpbGQgaW4gdGhlIFdlYkdMIHBsYXllciBzZXR0aW5ncy4iKSwgKHIpLCB0aGlzLmRpZFNob3dFcnJvck1lc3NhZ2UgPSAhMCB9IH0sIHBvcHVwOiBmdW5jdGlvbihlLCB0LCByKSB7IHIgPSByIHx8IFt7IHRleHQ6ICJPSyIgfV07IHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICBuLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbGVmdDogNTAlOyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgdGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogNXB4OyBiYWNrZ3JvdW5kOiAjRThFOEU4IjsgdmFyIG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7DQogICAgICAgICAgICBvLnRleHRDb250ZW50ID0gdCwgbi5hcHBlbmRDaGlsZChvKSwgbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsgZm9yICh2YXIgYSA9IDA7IGEgPCByLmxlbmd0aDsgYSsrKSB7IHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7DQogICAgICAgICAgICAgICAgclthXS50ZXh0ICYmIChpLnRleHRDb250ZW50ID0gclthXS50ZXh0KSwgclthXS5jYWxsYmFjayAmJiAoaS5vbmNsaWNrID0gclthXS5jYWxsYmFjayksIGkuc3R5bGUubWFyZ2luID0gIjVweCIsIGkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsgZS5jb250YWluZXIucmVtb3ZlQ2hpbGQobikgfSksIG4uYXBwZW5kQ2hpbGQoaSkgfSBlLmNvbnRhaW5lci5hcHBlbmRDaGlsZChuKSB9IH0sDQogICAgSm9iOiB7IHNjaGVkdWxlOiBmdW5jdGlvbihlLCB0LCByLCBuLCBvKSB7IG8gPSBvIHx8IHt9OyB2YXIgYSA9IGUuSm9ic1t0XTsgaWYgKGEgfHwgKGEgPSBlLkpvYnNbdF0gPSB7IGRlcGVuZGVuY2llczoge30sIGRlcGVuZGFudHM6IHt9IH0pLCBhLmNhbGxiYWNrKSB0aHJvdyAiW1VuaXR5TG9hZGVyLkpvYi5zY2hlZHVsZV0gam9iICciICsgdCArICInIGhhcyBiZWVuIGFscmVhZHkgc2NoZWR1bGVkIjsgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIG4pIHRocm93ICJbVW5pdHlMb2FkZXIuSm9iLnNjaGVkdWxlXSBqb2IgJyIgKyB0ICsgIicgaGFzIGludmFsaWQgY2FsbGJhY2siOyBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIG8pIHRocm93ICJbVW5pdHlMb2FkZXIuSm9iLnNjaGVkdWxlXSBqb2IgJyIgKyB0ICsgIicgaGFzIGludmFsaWQgcGFyYW1ldGVycyI7DQogICAgICAgICAgICBhLmNhbGxiYWNrID0gZnVuY3Rpb24oZSwgdCkgeyBhLnN0YXJ0dGltZSA9IHBlcmZvcm1hbmNlLm5vdygpLCBuKGUsIHQpIH0sIGEucGFyYW1ldGVycyA9IG8sIGEuY29tcGxldGUgPSBmdW5jdGlvbihyKSB7IGEuZW5kdGltZSA9IHBlcmZvcm1hbmNlLm5vdygpLCBhLnJlc3VsdCA9IHsgdmFsdWU6IHIgfTsgZm9yICh2YXIgbiBpbiBhLmRlcGVuZGFudHMpIHsgdmFyIG8gPSBlLkpvYnNbbl07DQogICAgICAgICAgICAgICAgICAgIG8uZGVwZW5kZW5jaWVzW3RdID0gYS5kZXBlbmRhbnRzW25dID0gITE7IHZhciBpID0gImZ1bmN0aW9uIiAhPSB0eXBlb2Ygby5jYWxsYmFjazsgZm9yICh2YXIgcyBpbiBvLmRlcGVuZGVuY2llcykgaSA9IGkgfHwgby5kZXBlbmRlbmNpZXNbc107IGlmICghaSkgeyBpZiAoby5leGVjdXRlZCkgdGhyb3cgIltVbml0eUxvYWRlci5Kb2Iuc2NoZWR1bGVdIGpvYiAnIiArIHQgKyAiJyBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIG8uZXhlY3V0ZWQgPSAhMCwgc2V0VGltZW91dChvLmNhbGxiYWNrLmJpbmQobnVsbCwgZSwgbyksIDApIH0gfSB9OyB2YXIgaSA9ICExOw0KICAgICAgICAgICAgci5mb3JFYWNoKGZ1bmN0aW9uKHIpIHsgdmFyIG4gPSBlLkpvYnNbcl07DQogICAgICAgICAgICAgICAgbiB8fCAobiA9IGUuSm9ic1tyXSA9IHsgZGVwZW5kZW5jaWVzOiB7fSwgZGVwZW5kYW50czoge30gfSksIChhLmRlcGVuZGVuY2llc1tyXSA9IG4uZGVwZW5kYW50c1t0XSA9ICFuLnJlc3VsdCkgJiYgKGkgPSAhMCkgfSksIGkgfHwgKGEuZXhlY3V0ZWQgPSAhMCwgc2V0VGltZW91dChhLmNhbGxiYWNrLmJpbmQobnVsbCwgZSwgYSksIDApKSB9LCByZXN1bHQ6IGZ1bmN0aW9uKGUsIHQpIHsgdmFyIHIgPSBlLkpvYnNbdF07IGlmICghcikgdGhyb3cgIltVbml0eUxvYWRlci5Kb2IucmVzdWx0XSBqb2IgJyIgKyB0ICsgIicgZG9lcyBub3QgZXhpc3QiOyBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIHIucmVzdWx0KSB0aHJvdyAiW1VuaXR5TG9hZGVyLkpvYi5yZXN1bHRdIGpvYiAnIiArIHQgKyAiJyBoYXMgaW52YWxpZCByZXN1bHQiOyByZXR1cm4gci5yZXN1bHQudmFsdWUgfSB9LA0KICAgIFhNTEh0dHBSZXF1ZXN0OiBmdW5jdGlvbigpIHsNCiAgICAgICAgZnVuY3Rpb24gZShlKSB7IGNvbnNvbGUubG9nKCJbVW5pdHlDYWNoZV0gIiArIGUpIH0NCg0KICAgICAgICBmdW5jdGlvbiB0KGUpIHsgcmV0dXJuIHQubGluayA9IHQubGluayB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksIHQubGluay5ocmVmID0gZSwgdC5saW5rLmhyZWYgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHIoZSkgeyB2YXIgdCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLm1hdGNoKC9eW2Etel0rOlwvXC9bXlwvXSsvKTsgcmV0dXJuICF0IHx8IGUubGFzdEluZGV4T2YodFswXSwgMCkgfQ0KDQogICAgICAgIGZ1bmN0aW9uIG4oKSB7DQogICAgICAgICAgICBmdW5jdGlvbiB0KHQpIHsgaWYgKCJ1bmRlZmluZWQiID09IHR5cGVvZiByLmRhdGFiYXNlKQ0KICAgICAgICAgICAgICAgICAgICBmb3IgKHIuZGF0YWJhc2UgPSB0LCByLmRhdGFiYXNlIHx8IGUoImluZGV4ZWREQiBkYXRhYmFzZSBjb3VsZCBub3QgYmUgb3BlbmVkIik7IHIucXVldWUubGVuZ3RoOykgeyB2YXIgbiA9IHIucXVldWUuc2hpZnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHIuZGF0YWJhc2UgPyByLmV4ZWN1dGUuYXBwbHkociwgbikgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBuLm9uZXJyb3IgJiYgbi5vbmVycm9yKG5ldyBFcnJvcigib3BlcmF0aW9uIGNhbmNlbGxlZCIpKSB9IH0gdmFyIHIgPSB0aGlzOw0KICAgICAgICAgICAgci5xdWV1ZSA9IFtdOyB0cnkgeyB2YXIgbiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tc0luZGV4ZWREQiwNCiAgICAgICAgICAgICAgICAgICAgbyA9IG4ub3BlbihpKTsNCiAgICAgICAgICAgICAgICBvLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsgdmFyIHQgPSBlLnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUocywgeyBrZXlQYXRoOiAidXJsIiB9KTsNCiAgICAgICAgICAgICAgICAgICAgWyJ2ZXJzaW9uIiwgImNvbXBhbnkiLCAicHJvZHVjdCIsICJ1cGRhdGVkIiwgInJldmFsaWRhdGVkIiwgImFjY2Vzc2VkIl0uZm9yRWFjaChmdW5jdGlvbihlKSB7IHQuY3JlYXRlSW5kZXgoZSwgZSkgfSkgfSwgby5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7IHQoZS50YXJnZXQucmVzdWx0KSB9LCBvLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgdChudWxsKSB9LCBzZXRUaW1lb3V0KG8ub25lcnJvciwgMWUzKSB9IGNhdGNoIChlKSB7IHQobnVsbCkgfSB9DQoNCiAgICAgICAgZnVuY3Rpb24gbyhlLCB0LCByLCBuLCBvKSB7IHZhciBhID0geyB1cmw6IGUsIHZlcnNpb246IGQsIGNvbXBhbnk6IHQsIHByb2R1Y3Q6IHIsIHVwZGF0ZWQ6IG4sIHJldmFsaWRhdGVkOiBuLCBhY2Nlc3NlZDogbiwgcmVzcG9uc2VIZWFkZXJzOiB7fSwgeGhyOiB7fSB9OyByZXR1cm4gbyAmJiAoWyJMYXN0LU1vZGlmaWVkIiwgIkVUYWciXS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgYS5yZXNwb25zZUhlYWRlcnNbZV0gPSBvLmdldFJlc3BvbnNlSGVhZGVyKGUpIH0pLCBbInJlc3BvbnNlVVJMIiwgInN0YXR1cyIsICJzdGF0dXNUZXh0IiwgInJlc3BvbnNlIl0uZm9yRWFjaChmdW5jdGlvbihlKSB7IGEueGhyW2VdID0gb1tlXSB9KSksIGEgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGEodCkgeyB0aGlzLmNhY2hlID0geyBlbmFibGVkOiAhMSB9LCB0ICYmICh0aGlzLmNhY2hlLmNvbnRyb2wgPSB0LmNhY2hlQ29udHJvbCwgdGhpcy5jYWNoZS5jb21wYW55ID0gdC5jb21wYW55TmFtZSwgdGhpcy5jYWNoZS5wcm9kdWN0ID0gdC5wcm9kdWN0TmFtZSksIHRoaXMueGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KHQpLCB0aGlzLnhoci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7IHZhciB0ID0gdGhpcy54aHIsDQogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmNhY2hlOw0KICAgICAgICAgICAgICAgIHIuZW5hYmxlZCAmJiAhci5yZXZhbGlkYXRlZCAmJiAoMzA0ID09IHQuc3RhdHVzID8gKHIucmVzdWx0LnJldmFsaWRhdGVkID0gci5yZXN1bHQuYWNjZXNzZWQsIHIucmV2YWxpZGF0ZWQgPSAhMCwgbC5leGVjdXRlKCJwdXQiLCBbci5yZXN1bHRdKSwgZSgiJyIgKyByLnJlc3VsdC51cmwgKyAiJyBzdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQgYW5kIHNlcnZlZCBmcm9tIHRoZSBpbmRleGVkREIgY2FjaGUiKSkgOiAyMDAgPT0gdC5zdGF0dXMgPyAoci5yZXN1bHQgPSBvKHIucmVzdWx0LnVybCwgci5jb21wYW55LCByLnByb2R1Y3QsIHIucmVzdWx0LmFjY2Vzc2VkLCB0KSwgci5yZXZhbGlkYXRlZCA9ICEwLCBsLmV4ZWN1dGUoInB1dCIsIFtyLnJlc3VsdF0sIGZ1bmN0aW9uKHQpIHsgZSgiJyIgKyByLnJlc3VsdC51cmwgKyAiJyBzdWNjZXNzZnVsbHkgZG93bmxvYWRlZCBhbmQgc3RvcmVkIGluIHRoZSBpbmRleGVkREIgY2FjaGUiKSB9LCBmdW5jdGlvbih0KSB7IGUoIiciICsgci5yZXN1bHQudXJsICsgIicgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWQgYnV0IG5vdCBzdG9yZWQgaW4gdGhlIGluZGV4ZWREQiBjYWNoZSBkdWUgdG8gdGhlIGVycm9yOiAiICsgdCkgfSkpIDogZSgiJyIgKyByLnJlc3VsdC51cmwgKyAiJyByZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1czogIiArIHQuc3RhdHVzICsgIiAiICsgdC5zdGF0dXNUZXh0KSkgfS5iaW5kKHRoaXMpKSB9IHZhciBpID0gIlVuaXR5Q2FjaGUiLA0KICAgICAgICAgICAgcyA9ICJYTUxIdHRwUmVxdWVzdCIsDQogICAgICAgICAgICBkID0gMTsNCiAgICAgICAgbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uKGUsIHQsIHIsIG4pIHsgaWYgKHRoaXMuZGF0YWJhc2UpIHRyeSB7IHZhciBvID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbihbc10sIFsicHV0IiwgImRlbGV0ZSIsICJjbGVhciJdLmluZGV4T2YoZSkgIT0gLTEgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIpLm9iamVjdFN0b3JlKHMpOyAib3BlbktleUN1cnNvciIgPT0gZSAmJiAobyA9IG8uaW5kZXgodFswXSksIHQgPSB0LnNsaWNlKDEpKTsgdmFyIGEgPSBvW2VdLmFwcGx5KG8sIHQpOyAiZnVuY3Rpb24iID09IHR5cGVvZiByICYmIChhLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsgcihlLnRhcmdldC5yZXN1bHQpIH0pLCBhLm9uZXJyb3IgPSBuIH0NCiAgICAgICAgICAgIGNhdGNoIChlKSB7ICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gJiYgbihlKSB9IGVsc2UgInVuZGVmaW5lZCIgPT0gdHlwZW9mIHRoaXMuZGF0YWJhc2UgPyB0aGlzLnF1ZXVlLnB1c2goYXJndW1lbnRzKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gJiYgbihuZXcgRXJyb3IoImluZGV4ZWREQiBhY2Nlc3MgZGVuaWVkIikpIH07IHZhciBsID0gbmV3IG47DQogICAgICAgIGEucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbih0KSB7IHZhciBuID0gdGhpcy54aHIsDQogICAgICAgICAgICAgICAgbyA9IHRoaXMuY2FjaGUsDQogICAgICAgICAgICAgICAgYSA9IGFyZ3VtZW50czsgcmV0dXJuIG8uZW5hYmxlZCA9IG8uZW5hYmxlZCAmJiAiYXJyYXlidWZmZXIiID09IG4ucmVzcG9uc2VUeXBlICYmICF0LCBvLmVuYWJsZWQgPyB2b2lkIGwuZXhlY3V0ZSgiZ2V0IiwgW28ucmVzdWx0LnVybF0sIGZ1bmN0aW9uKHQpIHsgaWYgKCF0IHx8IHQudmVyc2lvbiAhPSBkKSByZXR1cm4gdm9pZCBuLnNlbmQuYXBwbHkobiwgYSk7IGlmIChvLnJlc3VsdCA9IHQsIG8ucmVzdWx0LmFjY2Vzc2VkID0gRGF0ZS5ub3coKSwgImltbXV0YWJsZSIgPT0gby5jb250cm9sKSBvLnJldmFsaWRhdGVkID0gITAsIGwuZXhlY3V0ZSgicHV0IiwgW28ucmVzdWx0XSksIG4uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImxvYWQiKSksIGUoIiciICsgby5yZXN1bHQudXJsICsgIicgc2VydmVkIGZyb20gdGhlIGluZGV4ZWREQiBjYWNoZSB3aXRob3V0IHJldmFsaWRhdGlvbiIpOw0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIoby5yZXN1bHQudXJsKSAmJiAoby5yZXN1bHQucmVzcG9uc2VIZWFkZXJzWyJMYXN0LU1vZGlmaWVkIl0gfHwgby5yZXN1bHQucmVzcG9uc2VIZWFkZXJzLkVUYWcpKSB7IHZhciBpID0gbmV3IFhNTEh0dHBSZXF1ZXN0Ow0KICAgICAgICAgICAgICAgICAgICBpLm9wZW4oIkhFQUQiLCBvLnJlc3VsdC51cmwpLCBpLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBvLnJldmFsaWRhdGVkID0gWyJMYXN0LU1vZGlmaWVkIiwgIkVUYWciXS5ldmVyeShmdW5jdGlvbihlKSB7IHJldHVybiAhby5yZXN1bHQucmVzcG9uc2VIZWFkZXJzW2VdIHx8IG8ucmVzdWx0LnJlc3BvbnNlSGVhZGVyc1tlXSA9PSBpLmdldFJlc3BvbnNlSGVhZGVyKGUpIH0pLCBvLnJldmFsaWRhdGVkID8gKG8ucmVzdWx0LnJldmFsaWRhdGVkID0gby5yZXN1bHQuYWNjZXNzZWQsIGwuZXhlY3V0ZSgicHV0IiwgW28ucmVzdWx0XSksIG4uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImxvYWQiKSksIGUoIiciICsgby5yZXN1bHQudXJsICsgIicgc3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBzZXJ2ZWQgZnJvbSB0aGUgaW5kZXhlZERCIGNhY2hlIikpIDogbi5zZW5kLmFwcGx5KG4sIGEpIH0sIGkuc2VuZCgpIH0gZWxzZSBvLnJlc3VsdC5yZXNwb25zZUhlYWRlcnNbIkxhc3QtTW9kaWZpZWQiXSA/IChuLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgby5yZXN1bHQucmVzcG9uc2VIZWFkZXJzWyJMYXN0LU1vZGlmaWVkIl0pLCBuLnNldFJlcXVlc3RIZWFkZXIoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKSkgOiBvLnJlc3VsdC5yZXNwb25zZUhlYWRlcnMuRVRhZyAmJiAobi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgby5yZXN1bHQucmVzcG9uc2VIZWFkZXJzLkVUYWcpLCBuLnNldFJlcXVlc3RIZWFkZXIoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKSksIG4uc2VuZC5hcHBseShuLCBhKSB9LCBmdW5jdGlvbihlKSB7IG4uc2VuZC5hcHBseShuLCBhKSB9KSA6IG4uc2VuZC5hcHBseShuLCBhKSB9LCBhLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24oZSwgciwgbiwgYSwgaSkgeyByZXR1cm4gdGhpcy5jYWNoZS5yZXN1bHQgPSBvKHQociksIHRoaXMuY2FjaGUuY29tcGFueSwgdGhpcy5jYWNoZS5wcm9kdWN0LCBEYXRlLm5vdygpKSwgdGhpcy5jYWNoZS5lbmFibGVkID0gWyJtdXN0LXJldmFsaWRhdGUiLCAiaW1tdXRhYmxlIl0uaW5kZXhPZih0aGlzLmNhY2hlLmNvbnRyb2wpICE9IC0xICYmICJHRVQiID09IGUgJiYgdGhpcy5jYWNoZS5yZXN1bHQudXJsLm1hdGNoKCJeaHR0cHM/Oi8vIikgJiYgKCJ1bmRlZmluZWQiID09IHR5cGVvZiBuIHx8IG4pICYmICJ1bmRlZmluZWQiID09IHR5cGVvZiBhICYmICJ1bmRlZmluZWQiID09IHR5cGVvZiBpLCB0aGlzLmNhY2hlLnJldmFsaWRhdGVkID0gITEsIHRoaXMueGhyLm9wZW4uYXBwbHkodGhpcy54aHIsIGFyZ3VtZW50cykgfSwgYS5wcm90b3R5cGUuc2V0UmVxdWVzdEhlYWRlciA9IGZ1bmN0aW9uKGUsIHQpIHsgcmV0dXJuIHRoaXMuY2FjaGUuZW5hYmxlZCA9ICExLCB0aGlzLnhoci5zZXRSZXF1ZXN0SGVhZGVyLmFwcGx5KHRoaXMueGhyLCBhcmd1bWVudHMpIH07IHZhciB1ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyBmb3IgKHZhciBmIGluIHUpIGEucHJvdG90eXBlLmhhc093blByb3BlcnR5KGYpIHx8ICEgZnVuY3Rpb24oZSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsIGUsICJmdW5jdGlvbiIgPT0gdHlwZW9mIHVbZV0gPyB7IHZhbHVlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMueGhyW2VdLmFwcGx5KHRoaXMueGhyLCBhcmd1bWVudHMpIH0gfSA6IHsgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuY2FjaGUucmV2YWxpZGF0ZWQgJiYgdGhpcy5jYWNoZS5yZXN1bHQueGhyLmhhc093blByb3BlcnR5KGUpID8gdGhpcy5jYWNoZS5yZXN1bHQueGhyW2VdIDogdGhpcy54aHJbZV0gfSwgc2V0OiBmdW5jdGlvbih0KSB7IHRoaXMueGhyW2VdID0gdCB9IH0pIH0oZik7IHJldHVybiBhIH0oKSwNCiAgICBVdGlsczogeyBhc3NlcnQ6IGZ1bmN0aW9uKGUsIHQpIHsgZSB8fCBhYm9ydCgiQXNzZXJ0aW9uIGZhaWxlZDogIiArIHQpIH0sIG9wdGltaXplTWF0aEZyb3VuZDogZnVuY3Rpb24oZSwgdCkgeyBjb25zb2xlLmxvZygib3B0aW1pemluZyBvdXQgTWF0aC5mcm91bmQgY2FsbHMiKTsgZm9yICh2YXIgciA9IHsgTE9PS0lOR19GT1JfTU9EVUxFOiAwLCBTQ0FOTklOR19NT0RVTEVfVkFSSUFCTEVTOiAxLCBTQ0FOTklOR19NT0RVTEVfRlVOQ1RJT05TOiAyIH0sIG4gPSBbIkVNU0NSSVBURU5fU1RBUlRfQVNNIiwgIkVNU0NSSVBURU5fU1RBUlRfRlVOQ1MiLCAiRU1TQ1JJUFRFTl9FTkRfRlVOQ1MiXSwgbyA9ICJ2YXIiLCBhID0gImdsb2JhbC5NYXRoLmZyb3VuZDsiLCBpID0gMCwgcyA9IHQgPyByLkxPT0tJTkdfRk9SX01PRFVMRSA6IHIuU0NBTk5JTkdfTU9EVUxFX1ZBUklBQkxFUywgZCA9IDAsIGwgPSAwOyBzIDw9IHIuU0NBTk5JTkdfTU9EVUxFX0ZVTkNUSU9OUyAmJiBpIDwgZS5sZW5ndGg7IGkrKykNCiAgICAgICAgICAgICAgICBpZiAoNDcgPT0gZVtpXSAmJiA0NyA9PSBlW2kgKyAxXSAmJiAzMiA9PSBlW2kgKyAyXSAmJiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGUuc3ViYXJyYXkoaSArIDMsIGkgKyAzICsgbltzXS5sZW5ndGgpKSA9PT0gbltzXSkgcysrOw0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHMgIT0gci5TQ0FOTklOR19NT0RVTEVfVkFSSUFCTEVTIHx8IGwgfHwgNjEgIT0gZVtpXSB8fCBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGUuc3ViYXJyYXkoaSArIDEsIGkgKyAxICsgYS5sZW5ndGgpKSAhPT0gYSkgeyBpZiAobCAmJiA0MCA9PSBlW2ldKSB7IGZvciAodmFyIHUgPSAwOyB1IDwgbCAmJiBlW2kgLSAxIC0gdV0gPT0gZVtkIC0gdV07KSB1Kys7IGlmICh1ID09IGwpIHsgdmFyIGYgPSBlW2kgLSAxIC0gdV07IGlmIChmIDwgMzYgfHwgMzYgPCBmICYmIGYgPCA0OCB8fCA1NyA8IGYgJiYgZiA8IDY1IHx8IDkwIDwgZiAmJiBmIDwgOTUgfHwgOTUgPCBmICYmIGYgPCA5NyB8fCAxMjIgPCBmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1OyB1LS0pIGVbaSAtIHVdID0gMzIgfSB9IH0gZWxzZSB7IGZvciAoZCA9IGkgLSAxOyAzMiAhPSBlW2QgLSBsXTspIGwrKzsNCiAgICAgICAgICAgICAgICBsICYmIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgZS5zdWJhcnJheShkIC0gbCAtIG8ubGVuZ3RoLCBkIC0gbCkpID09PSBvIHx8IChkID0gbCA9IDApIH0gcmV0dXJuIGUgfSB9LA0KICAgIENyeXB0b2dyYXBoeTogeyBjcmMzMjogZnVuY3Rpb24oZSkgeyB2YXIgdCA9IFVuaXR5TG9hZGVyLkNyeXB0b2dyYXBoeS5jcmMzMi5tb2R1bGU7IGlmICghdCkgeyB2YXIgciA9IG5ldyBBcnJheUJ1ZmZlcigxNjc3NzIxNiksDQogICAgICAgICAgICAgICAgICAgIG4gPSBmdW5jdGlvbihlLCB0LCByKSB7ICJ1c2UgYXNtIjsgdmFyIG4gPSBuZXcgZS5VaW50OEFycmF5KHIpOyB2YXIgbyA9IG5ldyBlLlVpbnQzMkFycmF5KHIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsgZSA9IGUgfCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0IHwgMDsgdmFyIHIgPSAwOyBmb3IgKHIgPSBvWzEwMjQgPj4gMl0gfCAwOyB0OyBlID0gZSArIDEgfCAwLCB0ID0gdCAtIDEgfCAwKSByID0gb1sociAmIDI1NSBeIG5bZV0pIDw8IDIgPj4gMl0gXiByID4+PiA4IF4gNDI3ODE5MDA4MDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvWzEwMjQgPj4gMl0gPSByIH0gcmV0dXJuIHsgcHJvY2VzczogYSB9IH0oeyBVaW50OEFycmF5OiBVaW50OEFycmF5LCBVaW50MzJBcnJheTogVWludDMyQXJyYXkgfSwgbnVsbCwgcik7DQogICAgICAgICAgICAgICAgdCA9IFVuaXR5TG9hZGVyLkNyeXB0b2dyYXBoeS5jcmMzMi5tb2R1bGUgPSB7IGJ1ZmZlcjogciwgSEVBUFU4OiBuZXcgVWludDhBcnJheShyKSwgSEVBUFUzMjogbmV3IFVpbnQzMkFycmF5KHIpLCBwcm9jZXNzOiBuLnByb2Nlc3MsIGNyYzMyOiAxMDI0LCBkYXRhOiAxMDI4IH07IGZvciAodmFyIG8gPSAwOyBvIDwgMjU2OyBvKyspIHsgZm9yICh2YXIgYSA9IDI1NSBeIG8sIGkgPSAwOyBpIDwgODsgaSsrKSBhID0gYSA+Pj4gMSBeICgxICYgYSA/IDM5ODgyOTIzODQgOiAwKTsNCiAgICAgICAgICAgICAgICAgICAgdC5IRUFQVTMyW29dID0gYSB9IH0gdC5IRUFQVTMyW3QuY3JjMzIgPj4gMl0gPSAwOyBmb3IgKHZhciBzID0gMDsgcyA8IGUubGVuZ3RoOykgeyB2YXIgZCA9IE1hdGgubWluKHQuSEVBUFU4Lmxlbmd0aCAtIHQuZGF0YSwgZS5sZW5ndGggLSBzKTsNCiAgICAgICAgICAgICAgICB0LkhFQVBVOC5zZXQoZS5zdWJhcnJheShzLCBzICsgZCksIHQuZGF0YSksIGNyYyA9IHQucHJvY2Vzcyh0LmRhdGEsIGQpLCBzICs9IGQgfSB2YXIgbCA9IHQuSEVBUFUzMlt0LmNyYzMyID4+IDJdOyByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2wgPj4gMjQsIGwgPj4gMTYsIGwgPj4gOCwgbF0pIH0sIG1kNTogZnVuY3Rpb24oZSkgeyB2YXIgdCA9IFVuaXR5TG9hZGVyLkNyeXB0b2dyYXBoeS5tZDUubW9kdWxlOyBpZiAoIXQpIHsgdmFyIHIgPSBuZXcgQXJyYXlCdWZmZXIoMTY3NzcyMTYpLA0KICAgICAgICAgICAgICAgICAgICBuID0gZnVuY3Rpb24oZSwgdCwgcikgeyAidXNlIGFzbSI7IHZhciBuID0gbmV3IGUuVWludDMyQXJyYXkocik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCkgeyBlID0gZSB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHQgfCAwOyB2YXIgciA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gblsxMjhdIHwgMCwgbyA9IG5bMTI5XSB8IDAsIGEgPSBuWzEzMF0gfCAwLCBpID0gblsxMzFdIHwgMDsgZm9yICg7IHQ7IGUgPSBlICsgNjQgfCAwLCB0ID0gdCAtIDEgfCAwKSB7IHMgPSByOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpOyBmb3IgKGMgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMgfCAwKSA8IDUxMjsgYyA9IGMgKyA4IHwgMCkgeyBwID0gbltjID4+IDJdIHwgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByICsgKG5bYyArIDQgPj4gMl0gfCAwKSArIChuW2UgKyAocCA+Pj4gMTQpID4+IDJdIHwgMCkgKyAoKGMgfCAwKSA8IDEyOCA/IGkgXiBvICYgKGEgXiBpKSA6IChjIHwgMCkgPCAyNTYgPyBhIF4gaSAmIChvIF4gYSkgOiAoYyB8IDApIDwgMzg0ID8gbyBeIGEgXiBpIDogYSBeIChvIHwgfmkpKSB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKHIgPDwgKHAgJiAzMSkgfCByID4+PiAzMiAtIChwICYgMzEpKSArIG8gfCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGggfSByID0gciArIHMgfCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbyArIGQgfCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYSArIGwgfCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIHUgfCAwIH0gblsxMjhdID0gcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuWzEyOV0gPSBvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bMTMwXSA9IGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgblsxMzFdID0gaSB9IHJldHVybiB7IHByb2Nlc3M6IG8gfSB9KHsgVWludDMyQXJyYXk6IFVpbnQzMkFycmF5IH0sIG51bGwsIHIpOw0KICAgICAgICAgICAgICAgIHQgPSBVbml0eUxvYWRlci5DcnlwdG9ncmFwaHkubWQ1Lm1vZHVsZSA9IHsgYnVmZmVyOiByLCBIRUFQVTg6IG5ldyBVaW50OEFycmF5KHIpLCBIRUFQVTMyOiBuZXcgVWludDMyQXJyYXkociksIHByb2Nlc3M6IG4ucHJvY2VzcywgbWQ1OiA1MTIsIGRhdGE6IDU3NiB9LCB0LkhFQVBVMzIuc2V0KG5ldyBVaW50MzJBcnJheShbNywgMzYxNDA5MDM2MCwgNjU1NDgsIDM5MDU0MDI3MTAsIDEzMTA4OSwgNjA2MTA1ODE5LCAxOTY2MzAsIDMyNTA0NDE5NjYsIDI2MjE1MSwgNDExODU0ODM5OSwgMzI3NjkyLCAxMjAwMDgwNDI2LCAzOTMyMzMsIDI4MjE3MzU5NTUsIDQ1ODc3NCwgNDI0OTI2MTMxMywgNTI0Mjk1LCAxNzcwMDM1NDE2LCA1ODk4MzYsIDIzMzY1NTI4NzksIDY1NTM3NywgNDI5NDkyNTIzMywgNzIwOTE4LCAyMzA0NTYzMTM0LCA3ODY0MzksIDE4MDQ2MDM2ODIsIDg1MTk4MCwgNDI1NDYyNjE5NSwgOTE3NTIxLCAyNzkyOTY1MDA2LCA5ODMwNjIsIDEyMzY1MzUzMjksIDY1NTQxLCA0MTI5MTcwNzg2LCAzOTMyMjUsIDMyMjU0NjU2NjQsIDcyMDkxMCwgNjQzNzE3NzEzLCAyMCwgMzkyMTA2OTk5NCwgMzI3Njg1LCAzNTkzNDA4NjA1LCA2NTUzNjksIDM4MDE2MDgzLCA5ODMwNTQsIDM2MzQ0ODg5NjEsIDI2MjE2NCwgMzg4OTQyOTQ0OCwgNTg5ODI5LCA1Njg0NDY0MzgsIDkxNzUxMywgMzI3NTE2MzYwNiwgMTk2NjIyLCA0MTA3NjAzMzM1LCA1MjQzMDgsIDExNjM1MzE1MDEsIDg1MTk3MywgMjg1MDI4NTgyOSwgMTMxMDgxLCA0MjQzNTYzNTEyLCA0NTg3NjYsIDE3MzUzMjg0NzMsIDc4NjQ1MiwgMjM2ODM1OTU2MiwgMzI3Njg0LCA0Mjk0NTg4NzM4LCA1MjQyOTksIDIyNzIzOTI4MzMsIDcyMDkxMiwgMTgzOTAzMDU2MiwgOTE3NTI3LCA0MjU5NjU3NzQwLCA2NTU0MCwgMjc2Mzk3NTIzNiwgMjYyMTU1LCAxMjcyODkzMzUzLCA0NTg3NjgsIDQxMzk0Njk2NjQsIDY1NTM4MywgMzIwMDIzNjY1NiwgODUxOTcyLCA2ODEyNzkxNzQsIDExLCAzOTM2NDMwMDc0LCAxOTY2MjQsIDM1NzI0NDUzMTcsIDM5MzIzOSwgNzYwMjkxODksIDU4OTgyOCwgMzY1NDYwMjgwOSwgNzg2NDQzLCAzODczMTUxNDYxLCA5ODMwNTYsIDUzMDc0MjUyMCwgMTMxMDk1LCAzMjk5NjI4NjQ1LCA2LCA0MDk2MzM2NDUyLCA0NTg3NjIsIDExMjY4OTE0MTUsIDkxNzUxOSwgMjg3ODYxMjM5MSwgMzI3NzAxLCA0MjM3NTMzMjQxLCA3ODY0MzgsIDE3MDA0ODU1NzEsIDE5NjYxOCwgMjM5OTk4MDY5MCwgNjU1Mzc1LCA0MjkzOTE1NzczLCA2NTU1NywgMjI0MDA0NDQ5NywgNTI0Mjk0LCAxODczMzEzMzU5LCA5ODMwNTAsIDQyNjQzNTU1NTIsIDM5MzIzMSwgMjczNDc2ODkxNiwgODUxOTg5LCAxMzA5MTUxNjQ5LCAyNjIxNTAsIDQxNDk0NDQyMjYsIDcyMDkwNiwgMzE3NDc1NjkxNywgMTMxMDg3LCA3MTg3ODcyNTksIDU4OTg0NSwgMzk1MTQ4MTc0NV0pKSB9IHQuSEVBUFUzMi5zZXQobmV3IFVpbnQzMkFycmF5KFsxNzMyNTg0MTkzLCA0MDIzMjMzNDE3LCAyNTYyMzgzMTAyLCAyNzE3MzM4NzhdKSwgdC5tZDUgPj4gMik7IGZvciAodmFyIG8gPSAwOyBvIDwgZS5sZW5ndGg7KSB7IHZhciBhID0gTWF0aC5taW4odC5IRUFQVTgubGVuZ3RoIC0gdC5kYXRhLCBlLmxlbmd0aCAtIG8pICYgLTY0OyBpZiAodC5IRUFQVTguc2V0KGUuc3ViYXJyYXkobywgbyArIGEpLCB0LmRhdGEpLCBvICs9IGEsIHQucHJvY2Vzcyh0LmRhdGEsIGEgPj4gNiksIGUubGVuZ3RoIC0gbyA8IDY0KSB7IGlmIChhID0gZS5sZW5ndGggLSBvLCB0LkhFQVBVOC5zZXQoZS5zdWJhcnJheShlLmxlbmd0aCAtIGEsIGUubGVuZ3RoKSwgdC5kYXRhKSwgbyArPSBhLCB0LkhFQVBVOFt0LmRhdGEgKyBhKytdID0gMTI4LCBhID4gNTYpIHsgZm9yICh2YXIgaSA9IGE7IGkgPCA2NDsgaSsrKSB0LkhFQVBVOFt0LmRhdGEgKyBpXSA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICB0LnByb2Nlc3ModC5kYXRhLCAxKSwgYSA9IDAgfSBmb3IgKHZhciBpID0gYTsgaSA8IDY0OyBpKyspIHQuSEVBUFU4W3QuZGF0YSArIGldID0gMDsgZm9yICh2YXIgcyA9IGUubGVuZ3RoLCBkID0gMCwgaSA9IDU2OyBpIDwgNjQ7IGkrKywgZCA9ICgyMjQgJiBzKSA+PiA1LCBzIC89IDI1NikgdC5IRUFQVThbdC5kYXRhICsgaV0gPSAoKDMxICYgcykgPDwgMykgKyBkOw0KICAgICAgICAgICAgICAgICAgICB0LnByb2Nlc3ModC5kYXRhLCAxKSB9IH0gcmV0dXJuIG5ldyBVaW50OEFycmF5KHQuSEVBUFU4LnN1YmFycmF5KHQubWQ1LCB0Lm1kNSArIDE2KSkgfSwgc2hhMTogZnVuY3Rpb24oZSkgeyB2YXIgdCA9IFVuaXR5TG9hZGVyLkNyeXB0b2dyYXBoeS5zaGExLm1vZHVsZTsgaWYgKCF0KSB7IHZhciByID0gbmV3IEFycmF5QnVmZmVyKDE2Nzc3MjE2KSwNCiAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKGUsIHQsIHIpIHsgInVzZSBhc20iOyB2YXIgbiA9IG5ldyBlLlVpbnQzMkFycmF5KHIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQpIHsgZSA9IGUgfCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0IHwgMDsgdmFyIHIgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5bODBdIHwgMCwgbyA9IG5bODFdIHwgMCwgYSA9IG5bODJdIHwgMCwgaSA9IG5bODNdIHwgMCwgcyA9IG5bODRdIHwgMDsgZm9yICg7IHQ7IGUgPSBlICsgNjQgfCAwLCB0ID0gdCAtIDEgfCAwKSB7IGQgPSByOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gczsgZm9yIChwID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwIHwgMCkgPCAzMjA7IHAgPSBwICsgNCB8IDAsIHMgPSBpLCBpID0gYSwgYSA9IG8gPDwgMzAgfCBvID4+PiAyLCBvID0gciwgciA9IGgpIHsgaWYgKChwIHwgMCkgPCA2NCkgeyBoID0gbltlICsgcCA+PiAyXSB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggPDwgMjQgJiA0Mjc4MTkwMDgwIHwgaCA8PCA4ICYgMTY3MTE2ODAgfCBoID4+PiA4ICYgNjUyODAgfCBoID4+PiAyNCAmIDI1NSB9IGVsc2UgeyBoID0gbltwIC0gMTIgPj4gMl0gXiBuW3AgLSAzMiA+PiAyXSBeIG5bcCAtIDU2ID4+IDJdIF4gbltwIC0gNjQgPj4gMl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggPDwgMSB8IGggPj4+IDMxIH0gbltwID4+IDJdID0gaDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoICsgKChyIDw8IDUgfCByID4+PiAyNykgKyBzKSArICgocCB8IDApIDwgODAgPyAobyAmIGEgfCB+byAmIGkgfCAwKSArIDE1MTg1MDAyNDkgfCAwIDogKHAgfCAwKSA8IDE2MCA/IChvIF4gYSBeIGkpICsgMTg1OTc3NTM5MyB8IDAgOiAocCB8IDApIDwgMjQwID8gKG8gJiBhIHwgbyAmIGkgfCBhICYgaSkgKyAyNDAwOTU5NzA4IHwgMCA6IChvIF4gYSBeIGkpICsgMzM5NTQ2OTc4MiB8IDApIHwgMCB9IHIgPSByICsgZCB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvICsgbCB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhICsgdSB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgZiB8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzICsgYyB8IDAgfSBuWzgwXSA9IHI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbls4MV0gPSBvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bODJdID0gYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuWzgzXSA9IGk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbls4NF0gPSBzIH0gcmV0dXJuIHsgcHJvY2VzczogbyB9IH0oeyBVaW50MzJBcnJheTogVWludDMyQXJyYXkgfSwgbnVsbCwgcik7DQogICAgICAgICAgICAgICAgdCA9IFVuaXR5TG9hZGVyLkNyeXB0b2dyYXBoeS5zaGExLm1vZHVsZSA9IHsgYnVmZmVyOiByLCBIRUFQVTg6IG5ldyBVaW50OEFycmF5KHIpLCBIRUFQVTMyOiBuZXcgVWludDMyQXJyYXkociksIHByb2Nlc3M6IG4ucHJvY2Vzcywgc2hhMTogMzIwLCBkYXRhOiAzODQgfSB9IHQuSEVBUFUzMi5zZXQobmV3IFVpbnQzMkFycmF5KFsxNzMyNTg0MTkzLCA0MDIzMjMzNDE3LCAyNTYyMzgzMTAyLCAyNzE3MzM4NzgsIDMyODUzNzc1MjBdKSwgdC5zaGExID4+IDIpOyBmb3IgKHZhciBvID0gMDsgbyA8IGUubGVuZ3RoOykgeyB2YXIgYSA9IE1hdGgubWluKHQuSEVBUFU4Lmxlbmd0aCAtIHQuZGF0YSwgZS5sZW5ndGggLSBvKSAmIC02NDsgaWYgKHQuSEVBUFU4LnNldChlLnN1YmFycmF5KG8sIG8gKyBhKSwgdC5kYXRhKSwgbyArPSBhLCB0LnByb2Nlc3ModC5kYXRhLCBhID4+IDYpLCBlLmxlbmd0aCAtIG8gPCA2NCkgeyBpZiAoYSA9IGUubGVuZ3RoIC0gbywgdC5IRUFQVTguc2V0KGUuc3ViYXJyYXkoZS5sZW5ndGggLSBhLCBlLmxlbmd0aCksIHQuZGF0YSksIG8gKz0gYSwgdC5IRUFQVThbdC5kYXRhICsgYSsrXSA9IDEyOCwgYSA+IDU2KSB7IGZvciAodmFyIGkgPSBhOyBpIDwgNjQ7IGkrKykgdC5IRUFQVThbdC5kYXRhICsgaV0gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgdC5wcm9jZXNzKHQuZGF0YSwgMSksIGEgPSAwIH0gZm9yICh2YXIgaSA9IGE7IGkgPCA2NDsgaSsrKSB0LkhFQVBVOFt0LmRhdGEgKyBpXSA9IDA7IGZvciAodmFyIHMgPSBlLmxlbmd0aCwgZCA9IDAsIGkgPSA2MzsgaSA+PSA1NjsgaS0tLCBkID0gKDIyNCAmIHMpID4+IDUsIHMgLz0gMjU2KSB0LkhFQVBVOFt0LmRhdGEgKyBpXSA9ICgoMzEgJiBzKSA8PCAzKSArIGQ7DQogICAgICAgICAgICAgICAgICAgIHQucHJvY2Vzcyh0LmRhdGEsIDEpIH0gfSBmb3IgKHZhciBsID0gbmV3IFVpbnQ4QXJyYXkoMjApLCBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspIGxbaV0gPSB0LkhFQVBVOFt0LnNoYTEgKyAoaSAmIC00KSArIDMgLSAoMyAmIGkpXTsgcmV0dXJuIGwgfSB9LA0KICAgIFByb2dyZXNzOiB7DQogICAgICAgIFN0eWxlczogew0KICAgICAgICAgICAgRGFyazogew0KICAgICAgICAgICAgICAgIHByb2dyZXNzTG9nb1VybDogImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSm9BQUFDQ0NBWUFBQUMrZXRIaEFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFJMlVsRVFWUjQydTJkN1ZYalNneUdwWnd0d0hSZ09qQVZZQ3JBVkxEWkNqWlVzS0dDc0JXRURoSXFpS2tnNlNCMFFEcVkreU9UZTNKOWllUFJmTWt6MGprY2ZrRHNHZnVKcEhrMUg2aVVBakV4M3phUlJ5QVd4SlJTLy82SWplSjlWVXFwbVZKcXBZNDJzMzN2SVg3d0hEQkVsRGZKRDZ3U0FHb0F1TmUveTg2L3RJajRRQUV0cEFsby9NQXFPbUJWVjE4aTRjV0ZCdTJIdkZvZTRSQUFtak80VEQ5ZkkyTEx1WThDV3J4d2VBNVdZWG5KUndBUTBBUXNWWFRBS2gzZm91YitEQ1JIOHdkWHJUM05vRHpMZ2QwZzRrRnl0RHp5ckhPNFFsc0RBRzhTT3RPVkhSNGQ1Vm0yZGkrZ3BTYzdOQjd5cktUek5NblJydWRaSjY5VmphREp0NGo0S1RuYWVQS3NrOWNhbXpVQThDb2VqVytlNVV0MkNHMXJSSHppNk5HeUJVMHB0UnFwMStxekF5TGVjQVF0eTJsQ1Nxa21RY2dBQUFvZC90blpKRVBJQ2dCWUpOekZSa0RqWWJNRWNyRSt1NWZCQUkva2Z3dnh4VlhmZHJVY0pUbWFYL3ZEQkxLRDUrdlhFanJqZWJNYUFLWVJ3Vm9Ed0RNQTNPbmZXWVhQbkFUYlA0SEJhZ0hnQTQ1VHJYZWR3Y2dtTjQrV0JXaEtxV21BaDM4Q2EzME8xb1hCaU8vd1hTbWx5cUhsS0JrTXVJR3MwQU9BMGhOWTdkQnAxSG93c2cvVTlWK0krTVpsTUpDRFIzTWxaeGlEOVkyRjFPOVlUUnRLMnFOWnloazdEZGU3aTRVZmVqQ3lDZGo5M25LVWVEUzN0akNBYk5meFdnY1BiYUhZR281VGxFeTljcUdVcXE3a2l3TGFXUkwvMCtUaHd2QjVZNzdCNnZhRFdvTjgxaVBtS1hIMHVlUHlNbGx1aWFDVW1pcTN0bGRLTFpSU2pSNGdCQnVNS0tXK2lHMmU2MnMweE0rdmhyejNFRDhzUVhNSTJaZStWaG14THd1TEwwWnhCaXZKQkxRd25xeUszSmZTb3UzVHpyVzJ4T3ZVSEVDYmNBdVhBTEIwcUNQRnprK29mV20vMGNEZWlkZXFKVWZ6NThtbURKNXJiZEgrMnVIMXRoSTZFNFZNOTJsUGJQK3k1NXJVUVVXUlBXaUpRamF6R0x3VVBkZGRFYS9iWkoyamVjakozaGhBVmdCOXBzamZLM29lTlU5N3pEWkhTOUdUMmNvWkhrZXgreXhEWjhLUTJjZ1p6Y0I3VUhPL01xdlFtV0s0ZENSbnJBZis3NXA0anpyMnR6Q1lSMHZWa3ptUU0wcUQremdwUnlVYk9sT0d6REtrTFFqM0lvMW9rd2ZOTVdSTGhwQjVrVE42N3JleExja2xsNk01enNuZUVQRVhNOGhzNUl3WDR2UWtxc3pSeEh4UTNqeGE2cDVNOTNIcHNqUTA4SjRWOFo2YjVFSm5KcEJWRm4ycUxlOU55Z21UQ3AycGg4c3pJMC9QZHJBT29TVytteWpoY3lLUWtmdlpFTFdwQTdoWnFmNUIvTng5ckFmbUxIVG1FQzRkeUJselY0TVFtOXh3dERsYVpwRE5iYWRuTzJvSGRkWnRNY29jTGFPYzdDUm4vQTRzWnpqTjAyTElIQk9CakRRQW9IaWwxa05kbHFxbmxhUEswUnlIeXkxendHemxqTXBUbXlpemJzdlJoRTdIbm13SEFBL0EzNmh5eHB2SGhUS200Zk1seWk1REZJL20ycE9GWE5CckkyZUVyR2NhdEd0R0dZeXdIM1ZtQ2xrUlc4N29hWnZKWk12cGR3NkdIV2c1UW1Zclp6RFM5RGFYSWhrcjBES0dyTFJZNWxZSGF1UENkREFTR3JRZlE4T2x3OFQvWkN2RmJHT1pIaW1BS21lMGdkcjRBY2NOQnkvWmEreFYrMWMzNHZNRVdRNTJHMnAwcDZQRDE0VS9IM1JiRGwyUHhrYXdGY2pJOWhwU1F0QVF0VDF5eGlIMkE1a0laTTd0QUFBdkVlNzczV3lPSFNLeU9MOXpJcEE1dCtkSUh1UzdaWGpQWEI3Sy8zSTBnY3pLZG9oNEYzR0UvSFUyY09tdEcwZk4wZlQ2UW9HTWJuOGozLzg4VDN2bjlHQW1uYVR5RXdCK0NTOWsreDM1L2lXanR2VG5hSG9xaThCR3N5clc0bVlkamM1RjJaclRRdXZKaGVHeXdFYTNSYVNxUjgyb0xjTkFFOWlzcklCK2xkNlhQVjVveXg4T0QwVXFBLzdzTnFSbzJ4bHhkdTJ1VzRJS1Blb2NkQmFVQjloMjRQOFVYcGNKZGtrWkFTTGlReURJS2ppZWVUVzRMY0hyekRKNzQzcVNIV3MxdWtFYjV5WnowYnJ2WGVhajhZRnR3WHcrMnBEZGhmNHowemUzR2JhcmtZQm1jNTdUTEVEYmpHZjdqbUlCY1U2TGhSMzAyZmVhQWRPMURPVm9RTXNZTnVySzhJWEhOcGx1bTdVWkZXZzV3bWE1VDYydmRaMlVSVFBOcUxaRWNDenFUcm5EcHFkbVUzZkZYbmlBakNxOVZERytwZGFidkdTMndZdjNzd1FNMmtMZE83ZVczWVFTMzAzSWNUc29aME45alM1SHl4VTJMZ3VLYlNTbDBlOWhteEZzVWVVT2k0SEpMQW5RTW9OdEU2dFBGdFdLTWhuUWNvRXRwdHhCMVBUMm82b01SSUp0emhTMkpiRS9td2dqMzJXU29IbUFiWnBZSFhRYStKazJ5WUtXQ1d4Qk4wKzI4S0pGMHFCbEFsc3d1WVBvUWJlWGhIcVYyZ25FS3Uzek9tMTJoQ3dON2xPNUFGcWxmQUt4NDlyb2toTnMrZ1RobHZCUjB3VWsxREpXRy91YktHZXF1K3VYOTBQSWlOcmRWOTk3VHk1MFpnSWJWVWpkRExnMjlWaWVWYmFncFFxYlQ3bkRJZytjWlExYXdyQjVPZnJhdHV5VU5XZ0p3K1pjN2lCZWMzOHROODhHTkErdzFReEFzNm1EbGo3S1R0bklHd0dsajVXdk9mb0cvV2t0SklXRlExbUR4ejVwWER5YUI4LzJGUnMyNVhDVk8zRTJyYnFVODJVYk9qM0Mxa1R1QzdVT3VuVmRkaExRL09kc1NndWQ4OUQ1bXd1NXd5TGZtM01CYmRCdVFqRmhBNENmeEk4WDBMK3NySVhqbHVuZVR6aFI5TjJZRGdCd3EwdFVsSzBWSGk3MVRYSGN0bXFzcHRYMm9SN01LM2c2akZGeXhsZmRCOVBQSGhEeHBzK2pDV2dPSlFZQW9NNWtkUXFlWlZzb3RrYkVKeTZnc2MzUkhQWnZ5U1hIYzlnV1V0bEpjalRQRWdNQStOaW56TmpqNmJac2dYWmFucW4xYm0wcUhvMlh4T0RjNHdWcXk5N2t2WXRIY3lneGFLOFdjb2ZKYnoyZWJzc1dhSnV6RExYZTQzbGtNTUJUWW5BT25vYk1aMXVlOUl4ZkFTMFNiRlNKWVd4MmMrMkVQY1hwWU5nRTdUbURQdTQ0SEFTYk5XaVdNeXJHWXU4Y0c1V2JSd05JLzlpaFZrRGo0ZFUrNFZqV1NkRU92dXUyQXBxWnZjQjRqZ2dhdlRmTEZqUkVQQldjN3pSMHFlUnRIMnlmZVU3eXhqWFRreVR2Z1RaYmdvTU5QbEZQZERRKzBCVnduS2QvQXE5azN1UlBSTHcxNkorQXhoUzhzZ01ldHdQVHJwYWRCTFJ4Z2xkcjRFN2d4YmFyWlNjQkxZMHdXMGZPNzI1TUtnSUNXanBodGc2WTMrMFE4YzZ3alFKYWd1QlZIZkJjNTNjdmlEZ1gwTVI4NTNjUHBoVUJBVTN5TzZlcm5RUTBNVmY1WGU5cUp5NmdaYkZtWU96NW5kNXZiWFZoeGZ2TTlyM0xtZ0d4dnZ6dVVZZlp3V1VuTnFGVFRNeVhUZVFSaUFsb1lzbllQNmIrN0I3akpkd0FBQUFBQUVsRlRrU3VRbUNDIiwNCiAgICAgICAgICAgICAgICBwcm9ncmVzc0VtcHR5VXJsOiAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFTQ0FZQUFBQm1ibDB6QUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFUVWxFUVZSbzN1M2FJUTRBSUF3RVFVcjQvNWNQaXlNVkJET2owTTJtQ0tna0dkQXdqWUN1ZFp6TE9MaUlUWVByQ2RFZ0drU0RhRUEwaUFiUklCcEVBNkpCTkh4MXZuTDdWNE5Od3hzYkNOTUdJM1lJbXUwQUFBQUFTVVZPUks1Q1lJST0iLA0KICAgICAgICAgICAgICAgIHByb2dyZXNzRnVsbFVybDogImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSTBBQUFBU0NBWUFBQUJtYmwwekFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFBTzBsRVFWUm8zdTNTUVJFQUFBakRNTUMvNTZFQjNvbUVYanRKQ2c1R0FreURhVEFOcHNFMFlCcE1nMmt3RGFZQjAyQWFUSU5wTUEyWWhyOEZPMThFSUJwWk1lUUFBQUFBU1VWT1JLNUNZSUk9Ig0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIExpZ2h0OiB7IHByb2dyZXNzTG9nb1VybDogImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSm9BQUFDQ0NBWUFBQUMrZXRIaEFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFJaFVsRVFWUjQydTJkelczYlNCVEgveUZjZ05JQmc1d0RNS2NjUGE1QVRBVnhLa2hVZ2EwS2JGZGdkbUNwZ2xESG5GWkF6c0d5QkhXZ1BZamNNSVFsa20rKzNzeThQN0FJbkkzdEdmS25OKzlyWnQ0Y2owZUlSTGFWeVNNUXVkQlYvNHYzSHo3SkUrR3ZBb0FDY0EyZ0JMQUM4RGozaC96KzlkTWZhQ0tXeW50Z3FmYnJ2cFlVMEx4YU5CRUxMUVpnRlNQL1hnVzNkSXE4TG9kbEQ2NjVVZ0JxQVUzMDJuTFlCMnVoK2ZPV0FwcW9XdzdMQzM2V3J0Z3Zud0thUGFuVzBrenhzMHdzdlFzQUJ3RXRuYlREMHBPRktRRlVBbHE4YVllbElUOUxWOWNDV254cGg5S0NueFcxbnlhZ2piKzh6bW9Wek1lYXQvODFBbG80ZmxabnRVSlRDYVpWZ3RSQnkzRzV2Qk9hcmdVMGZub0oxR29GNmFlbDJpWlVSZ2haRjdBVUFocWZsL0VRK1lkSVFHT2c3eEg0WW1OK21vREd3UG4vRnZrY0Zmd25qNU1IN1k3SlN6ZzRnRTFBOC9oSnYvVUkxZ2FudHV1UDdaOUpMWjhwcFRmdUhJTlZBOWkxZis0SHdjaVAxQ3hhS3FEZE9uajRIVmliQVZpdkJTTzJsKzhDek1wUktZQzJzR1ROK2hhcm5oR011TEtzQ295Nk9WSUF6VlE2Z3dMV1VDN3pkOWNDbWp2bG9LY3o5aTFRVzVqcHgxZHdtMHd0QVh3VjBOem9ZWVkvdEI5WXJZT0ZzVkMwNmZsY2MxMkdZc1JmRk5CNlR2d1h3c1BsQU5ad0h0UWE1S3IxNjI2SlZsUkFtL0J5bmczK3ZLYTFEaTdBR3NKUHRXYnJkdHhiSW1oczJvYXVJb2ZzMEZxRTJtT29UNjFHTkQxSXFENGltd0o3RmpGa0FIRFRSbDYrSU12YnFKZHF6UTY5RHd4MUNWUUNtbDNJdmpMd1Q2aHpxVjlKVFd3Rk5KNlFWWjdub3pSZTh2b01mQlF0QmJSNElkT3hadFVacUtnQlRBRUdIU3VaUUdaRjFHcEVGN3hjV2xLRFhENHpnY3hLT29OYXozd2FzVnBVUDIyWk1tZ3hRZ2JvcFRQdUp3UUpZdEVFTXExMHhtb2lqQTF4WEhscW9NVUttVTRBVU9OVXRaaWlEZkYzcUpSQWl4a3lwZkV5NTNSWjdFTDAwektCekxzMWU1eTVISXBGY3dSWnhSQXluWFRHbXJqVVVxTGhJbWJRVEVQMmxSbGtPdW1NZmoxempxaHBqakpXMEdLSERKalhYTm5YSHZRV25wcjRmZGN4Z3BZQ1pBWG9lMFYxOW5idVFVdHpxTmhBU3dHeXpwcFJ0SUgrUGdUcTk1ZXhnSllLWkNYUlFvelZNNmVLbXVhNGpnRzBWQ0RUc1daUE1OT0lHVlNhSXhQSVNMb0hMWjNSd0Z3UFA3WHIxa3ZiVUNhUXpkWUM5TDJpMUhSRzhINWFKcENSbHN3RkVZcks4RmlvK2JROE5OQk1RcllQQURKZjZZeEw4QjZJSCtoZ1FETU4yUTM0aXhvQVZMQzNVV2J1OHJtR2gxMWhHU1BJRHN3aDg1M09PS2M1YVE2VHdZaDEwRktFVEdlMytaUGwrYzFKYzZ4OVBldE1JSnNrYW5kR2cvSDJiRjAxRTVkQ0c4R0lGZEJTaFN6WFNHZTRDbTZtV0xXVno0ZDQ1UUd5VGk4SVE3bEdPcU4yTk1ZZEx1OVZlSVRuWGZ0WG5pQXJFTDljcG1ycWtXQms3ZnRoWkI0Z1MwRnoyN04xZGJnQW03Y0FZQ3BvQWhuOXBmdXdJTHN6dmpDTDg5RXlnY3k0VnA0c3lJWmJBREFHbWtDbUYwMVhIbjkzSC9ES1lUQXlHN1JjSU5QU2srZmYzd2RyeStuQkRFRnJ3TCt3elZtK2I4N0xHWTFsZE9tc0JEYXlkTG83VEVEV1R4c3BqMk9aSEF3SWJIUlIrOVYwcFJpTlpUSm9BaHRkQzlCUEZOTFI4c3hZN3JpREpyRFJkUWYzWGF6cXpOOS9CNE5LekpRU1ZCZXVtNHhHaDZFNForVkVhSjdocnBsemJNUEpBenczbGs0dHF0dUE3VFBDNmQ3NGwyaGhGTnprc3NvSlk3bEZJRzFDSnBmUkFxZGJlQmNCZ05hQVhzWnhsWk9jc2luWWEyQXd0L0hSTkd5aEpJZXBoZW5jUVdDd3dMUVdjMTlCQ2drMDA3Q1ZnY0NtMC9kUFBUeFpOd2pnRXFTUVFUTU4yMjBnc0ZXZ05RL2FUakhNUFRMME9TVFFVb1dOYXRWc3BoZ1U0ZDhIdDFNOU5kaHEwQTlYc1hHZmVrNWNDb3ZRUUVzUk5xcFZzMkZKU28wUFRIQ2dwUVpiQTNvSHJXbXJSam5yN0JBeWFLbkJSdDBUa01Qc1BrK0tSYXQ5UEREVEIvR2xBcHZPdm9Cdk1KUHVVTVR2MjhVQVdrcXdWYUNmOTI5aUNhWGVoTEtKQmJTVVlGdHJ6RWszOHFOWXRBYWU3cGZQTEgvaVRjSjJ6eEMwR3ZSQ3RZNVZ5NG1nMXI0ZWxPMExMVXpDZGdkR3JjazlVYmZYS1kzNVVQMnpiYXlnbVlidG1TRnNCOUIzUDFIcm9OUWozT3VZUVVzQnRudlEweDJVamdwS1dzTnJzNm5MYXhSamg0MWFNZmlHZVdVazZ2SHRYdmQ1dXI0WU5tYllxTmZ1ek8zdUNLYnM1Qk8wMkdHaldyWGJHUTUrTUdVbjM2REZESnZPNlQxVHJOb0N0SWl6OXYxZ01vKy9PMWJZcUczZmFzSWNGSEZNdTVSQml4VTJuVHJvMkFZU2FscGprenBvc2NKRzdlNFkyMEJDQ1FRYWVDbzdjUVBOQm15S3daeW84em0zZ1NRSHJadTI1dkNDdVlCbUdyWVgrRDhHb05aNHlRK0dyQm5BNUp3MFRxQ1poRzJCMHdabDM3QlI1L0xhZFVEQmxaMDRnMllEdHRMalhCcVlhL3VtdUFOc3pqamhDSnBwMkY0QUhGdm83ajM0YjQvRWw5MC8xRThod0xKVFgxZmdxNnI5ODRzR1pNTVRFQlgrSkVacm5QSkxPcjdVMUhUSENyVG16WWMyTlVIdHBxMjV2TXczeCtQeC95L2VmL2lFeVBSamhnV3pEZDQvUkoveHNaMURRUUQ4N2JuLytmdlhUd0hOb0ZRTEc5VWFtQVJQWnl3VWJYQTZHb3dGYUJuaVZnMTZxM1czelA0dzVPUHBqSVdpSGFjWEVidEZBK2dINmRtd2VIbTdoTG80cCt3ZExsUUV4S0x4U2pHWXRuZ04zRng2MFlCQjJTazEwSFJTRERiQWMzSHpYYzN0QmFRQ21zNUJlcWJCSzJELzlyc3R0eGVRZ285bUlzVVFtdDZPV1hEeDBleHFsY0FjV1I2dG54cG9jeUxFVUxYbE9LalVRQVBpdndtbUZ0QjRxQUdUNjU4dEJUMENHaU94dU5BK0ZXdVdNbWhkd2ZsakMxMHNmdHVPNjhDdWtMYjIrUHZ1Z0JLblRsYUZNTk1nR3dFdG5CZlZ2YXpGQUx3OEFOK3pFZERDWEY0ci9PbTR5QWZnY2Jzd2pmWHlud2xQczZQVno2MS9kOFBNdjl0eWZuaGkwZlFzU04xYlpwVm4vNjRXME5KWVp2ditYVDRBejdaL3gvNUdad0hOM2pMYjkrK0tBWGltL2JzdDl3Y2lvTGxSbDBicEtoSnFBRjdVeTZhQUZvZC9keERRUkM3OHV6cUVTUXBvNGZ0M093Rk5aTk8vVzdZUWJrS1l4Rit0M0NLUkxVbGxRQ1NnaWVMUmY4MHNTNWZDRFZiaUFBQUFBRWxGVGtTdVFtQ0MiLCBwcm9ncmVzc0VtcHR5VXJsOiAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFTQ0FZQUFBQm1ibDB6QUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFVVWxFUVZSbzN1M2FNUTRBRUF4QVVjUkp6R2IzdjFtdDNjUWdsdmNtYy9OVEEzWE1GUVV1TkNQZ1ZrL25haHdjaEUyRDZ3blJJQnBFZzJoQU5JZ0cwU0FhUkFPaVFUUjhsVis1L2F2QnB1R05EY3o2QTZvcTFDZ05BQUFBQUVsRlRrU3VRbUNDIiwgcHJvZ3Jlc3NGdWxsVXJsOiAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFTQ0FZQUFBQm1ibDB6QUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFRRWxFUVZSbzN1M1NNUkVBTUFnQXNWSXBuVHZqM3hsb2dEbVI4UGZ4ZnRhQmdTc0Jwc0UwbUFiVFlCb3dEYWJCTkpnRzA0QnBNQTJtd1RTWUJrekRYZ1AvaGdHbnI0UHBlQUFBQUFCSlJVNUVya0pnZ2c9PSIgfQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0KSB7IGlmIChlLk1vZHVsZSkgeyB2YXIgciA9IFVuaXR5TG9hZGVyLlByb2dyZXNzLlN0eWxlc1tlLk1vZHVsZS5zcGxhc2hTY3JlZW5TdHlsZV0sDQogICAgICAgICAgICAgICAgICAgIG4gPSBlLk1vZHVsZS5wcm9ncmVzc0xvZ29VcmwgPyBlLk1vZHVsZS5yZXNvbHZlQnVpbGRVcmwoZS5Nb2R1bGUucHJvZ3Jlc3NMb2dvVXJsKSA6IHIucHJvZ3Jlc3NMb2dvVXJsLA0KICAgICAgICAgICAgICAgICAgICBvID0gZS5Nb2R1bGUucHJvZ3Jlc3NFbXB0eVVybCA/IGUuTW9kdWxlLnJlc29sdmVCdWlsZFVybChlLk1vZHVsZS5wcm9ncmVzc0VtcHR5VXJsKSA6IHIucHJvZ3Jlc3NFbXB0eVVybCwNCiAgICAgICAgICAgICAgICAgICAgYSA9IGUuTW9kdWxlLnByb2dyZXNzRnVsbFVybCA/IGUuTW9kdWxlLnJlc29sdmVCdWlsZFVybChlLk1vZHVsZS5wcm9ncmVzc0Z1bGxVcmwpIDogci5wcm9ncmVzc0Z1bGxVcmwsDQogICAgICAgICAgICAgICAgICAgIGkgPSAicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRvcDogNTAlOyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsiOw0KICAgICAgICAgICAgICAgIGUubG9nbyB8fCAoZS5sb2dvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUubG9nby5zdHlsZS5jc3NUZXh0ID0gaSArICJiYWNrZ3JvdW5kOiB1cmwoJyIgKyBuICsgIicpIG5vLXJlcGVhdCBjZW50ZXIgLyBjb250YWluOyB3aWR0aDogMTU0cHg7IGhlaWdodDogMTMwcHg7IiwgZS5jb250YWluZXIuYXBwZW5kQ2hpbGQoZS5sb2dvKSksIGUucHJvZ3Jlc3MgfHwgKGUucHJvZ3Jlc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgZS5wcm9ncmVzcy5zdHlsZS5jc3NUZXh0ID0gaSArICIgaGVpZ2h0OiAxOHB4OyB3aWR0aDogMTQxcHg7IG1hcmdpbi10b3A6IDkwcHg7IiwgZS5wcm9ncmVzcy5lbXB0eSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCBlLnByb2dyZXNzLmVtcHR5LnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDogdXJsKCciICsgbyArICInKSBuby1yZXBlYXQgcmlnaHQgLyBjb3ZlcjsgZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IiwgZS5wcm9ncmVzcy5hcHBlbmRDaGlsZChlLnByb2dyZXNzLmVtcHR5KSwgZS5wcm9ncmVzcy5mdWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUucHJvZ3Jlc3MuZnVsbC5zdHlsZS5jc3NUZXh0ID0gImJhY2tncm91bmQ6IHVybCgnIiArIGEgKyAiJykgbm8tcmVwZWF0IGxlZnQgLyBjb3ZlcjsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAwJTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IiwgZS5wcm9ncmVzcy5hcHBlbmRDaGlsZChlLnByb2dyZXNzLmZ1bGwpLCBlLmNvbnRhaW5lci5hcHBlbmRDaGlsZChlLnByb2dyZXNzKSksIGUucHJvZ3Jlc3MuZnVsbC5zdHlsZS53aWR0aCA9IDEwMCAqIHQgKyAiJSIsIGUucHJvZ3Jlc3MuZW1wdHkuc3R5bGUud2lkdGggPSAxMDAgKiAoMSAtIHQpICsgIiUiLCAxID09IHQgJiYgKGUubG9nby5zdHlsZS5kaXNwbGF5ID0gZS5wcm9ncmVzcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiKSB9IH0sDQogICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZSwgdCwgcikgeyB2YXIgbiA9IGUuYnVpbGREb3dubG9hZFByb2dyZXNzW3RdOw0KICAgICAgICAgICAgbiB8fCAobiA9IGUuYnVpbGREb3dubG9hZFByb2dyZXNzW3RdID0geyBzdGFydGVkOiAhMSwgZmluaXNoZWQ6ICExLCBsZW5ndGhDb21wdXRhYmxlOiAhMSwgdG90YWw6IDAsIGxvYWRlZDogMCB9KSwgIm9iamVjdCIgIT0gdHlwZW9mIHIgfHwgInByb2dyZXNzIiAhPSByLnR5cGUgJiYgImxvYWQiICE9IHIudHlwZSB8fCAobi5zdGFydGVkIHx8IChuLnN0YXJ0ZWQgPSAhMCwgbi5sZW5ndGhDb21wdXRhYmxlID0gci5sZW5ndGhDb21wdXRhYmxlLCBuLnRvdGFsID0gci50b3RhbCksIG4ubG9hZGVkID0gci5sb2FkZWQsICJsb2FkIiA9PSByLnR5cGUgJiYgKG4uZmluaXNoZWQgPSAhMCkpOyB2YXIgbyA9IDAsDQogICAgICAgICAgICAgICAgYSA9IDAsDQogICAgICAgICAgICAgICAgaSA9IDAsDQogICAgICAgICAgICAgICAgcyA9IDAsDQogICAgICAgICAgICAgICAgZCA9IDA7IGZvciAodmFyIHQgaW4gZS5idWlsZERvd25sb2FkUHJvZ3Jlc3MpIHsgdmFyIG4gPSBlLmJ1aWxkRG93bmxvYWRQcm9ncmVzc1t0XTsgaWYgKCFuLnN0YXJ0ZWQpIHJldHVybiAwOw0KICAgICAgICAgICAgICAgIGkrKywgbi5sZW5ndGhDb21wdXRhYmxlID8gKG8gKz0gbi5sb2FkZWQsIGEgKz0gbi50b3RhbCwgcysrKSA6IG4uZmluaXNoZWQgfHwgZCsrIH0gdmFyIGwgPSBpID8gKGkgLSBkIC0gKGEgPyBzICogKGEgLSBvKSAvIGEgOiAwKSkgLyBpIDogMDsNCiAgICAgICAgICAgIGUuZ2FtZUluc3RhbmNlLm9uUHJvZ3Jlc3MoZS5nYW1lSW5zdGFuY2UsIC45ICogbCkgfQ0KICAgIH0sDQogICAgQ29tcHJlc3Npb246IHsNCiAgICAgICAgaWRlbnRpdHk6IHsgcmVxdWlyZTogZnVuY3Rpb24oKSB7IHJldHVybiB7fSB9LCBkZWNvbXByZXNzOiBmdW5jdGlvbihlKSB7IHJldHVybiBlIH0gfSwNCiAgICAgICAgZ3ppcDogeyByZXF1aXJlOiBmdW5jdGlvbihlKSB7IHZhciB0ID0geyAiaW5mbGF0ZS5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsgInVzZSBzdHJpY3QiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUpIHsgaWYgKCEodGhpcyBpbnN0YW5jZW9mIG4pKSByZXR1cm4gbmV3IG4oZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcy5hc3NpZ24oeyBjaHVua1NpemU6IDE2Mzg0LCB3aW5kb3dCaXRzOiAwLCB0bzogIiIgfSwgZSB8fCB7fSk7IHZhciB0ID0gdGhpcy5vcHRpb25zOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmF3ICYmIHQud2luZG93Qml0cyA+PSAwICYmIHQud2luZG93Qml0cyA8IDE2ICYmICh0LndpbmRvd0JpdHMgPSAtdC53aW5kb3dCaXRzLCAwID09PSB0LndpbmRvd0JpdHMgJiYgKHQud2luZG93Qml0cyA9IC0xNSkpLCAhKHQud2luZG93Qml0cyA+PSAwICYmIHQud2luZG93Qml0cyA8IDE2KSB8fCBlICYmIGUud2luZG93Qml0cyB8fCAodC53aW5kb3dCaXRzICs9IDMyKSwgdC53aW5kb3dCaXRzID4gMTUgJiYgdC53aW5kb3dCaXRzIDwgNDggJiYgMCA9PT0gKDE1ICYgdC53aW5kb3dCaXRzKSAmJiAodC53aW5kb3dCaXRzIHw9IDE1KSwgdGhpcy5lcnIgPSAwLCB0aGlzLm1zZyA9ICIiLCB0aGlzLmVuZGVkID0gITEsIHRoaXMuY2h1bmtzID0gW10sIHRoaXMuc3RybSA9IG5ldyBmLCB0aGlzLnN0cm0uYXZhaWxfb3V0ID0gMDsgdmFyIHIgPSBpLmluZmxhdGVJbml0Mih0aGlzLnN0cm0sIHQud2luZG93Qml0cyk7IGlmIChyICE9PSBsLlpfT0spIHRocm93IG5ldyBFcnJvcih1W3JdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlciA9IG5ldyBjLCBpLmluZmxhdGVHZXRIZWFkZXIodGhpcy5zdHJtLCB0aGlzLmhlYWRlcikgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQpIHsgdmFyIHIgPSBuZXcgbih0KTsgaWYgKHIucHVzaChlLCAhMCksIHIuZXJyKSB0aHJvdyByLm1zZyB8fCB1W3IuZXJyXTsgcmV0dXJuIHIucmVzdWx0IH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlLCB0KSB7IHJldHVybiB0ID0gdCB8fCB7fSwgdC5yYXcgPSAhMCwgbyhlLCB0KSB9IHZhciBpID0gZSgiLi96bGliL2luZmxhdGUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZSgiLi91dGlscy9jb21tb24iKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZSgiLi91dGlscy9zdHJpbmdzIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGUoIi4vemxpYi9jb25zdGFudHMiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZSgiLi96bGliL21lc3NhZ2VzIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGUoIi4vemxpYi96c3RyZWFtIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUoIi4vemxpYi9nemhlYWRlciIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOw0KICAgICAgICAgICAgICAgICAgICAgICAgbi5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGUsIHQpIHsgdmFyIHIsIG4sIG8sIGEsIHUsIGYsIGMgPSB0aGlzLnN0cm0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0aGlzLm9wdGlvbnMuY2h1bmtTaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdGhpcy5vcHRpb25zLmRpY3Rpb25hcnksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMTsgaWYgKHRoaXMuZW5kZWQpIHJldHVybiAhMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdCA9PT0gfn50ID8gdCA6IHQgPT09ICEwID8gbC5aX0ZJTklTSCA6IGwuWl9OT19GTFVTSCwgInN0cmluZyIgPT0gdHlwZW9mIGUgPyBjLmlucHV0ID0gZC5iaW5zdHJpbmcyYnVmKGUpIDogIltvYmplY3QgQXJyYXlCdWZmZXJdIiA9PT0gaC5jYWxsKGUpID8gYy5pbnB1dCA9IG5ldyBVaW50OEFycmF5KGUpIDogYy5pbnB1dCA9IGUsIGMubmV4dF9pbiA9IDAsIGMuYXZhaWxfaW4gPSBjLmlucHV0Lmxlbmd0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7IGlmICgwID09PSBjLmF2YWlsX291dCAmJiAoYy5vdXRwdXQgPSBuZXcgcy5CdWY4KHApLCBjLm5leHRfb3V0ID0gMCwgYy5hdmFpbF9vdXQgPSBwKSwgciA9IGkuaW5mbGF0ZShjLCBsLlpfTk9fRkxVU0gpLCByID09PSBsLlpfTkVFRF9ESUNUICYmIHcgJiYgKGYgPSAic3RyaW5nIiA9PSB0eXBlb2YgdyA/IGQuc3RyaW5nMmJ1Zih3KSA6ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIgPT09IGguY2FsbCh3KSA/IG5ldyBVaW50OEFycmF5KHcpIDogdywgciA9IGkuaW5mbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCBmKSksIHIgPT09IGwuWl9CVUZfRVJST1IgJiYgbSA9PT0gITAgJiYgKHIgPSBsLlpfT0ssIG0gPSAhMSksIHIgIT09IGwuWl9TVFJFQU1fRU5EICYmIHIgIT09IGwuWl9PSykgcmV0dXJuIHRoaXMub25FbmQociksIHRoaXMuZW5kZWQgPSAhMCwgITE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMubmV4dF9vdXQgJiYgKDAgIT09IGMuYXZhaWxfb3V0ICYmIHIgIT09IGwuWl9TVFJFQU1fRU5EICYmICgwICE9PSBjLmF2YWlsX2luIHx8IG4gIT09IGwuWl9GSU5JU0ggJiYgbiAhPT0gbC5aX1NZTkNfRkxVU0gpIHx8ICgic3RyaW5nIiA9PT0gdGhpcy5vcHRpb25zLnRvID8gKG8gPSBkLnV0Zjhib3JkZXIoYy5vdXRwdXQsIGMubmV4dF9vdXQpLCBhID0gYy5uZXh0X291dCAtIG8sIHUgPSBkLmJ1ZjJzdHJpbmcoYy5vdXRwdXQsIG8pLCBjLm5leHRfb3V0ID0gYSwgYy5hdmFpbF9vdXQgPSBwIC0gYSwgYSAmJiBzLmFycmF5U2V0KGMub3V0cHV0LCBjLm91dHB1dCwgbywgYSwgMCksIHRoaXMub25EYXRhKHUpKSA6IHRoaXMub25EYXRhKHMuc2hyaW5rQnVmKGMub3V0cHV0LCBjLm5leHRfb3V0KSkpKSwgMCA9PT0gYy5hdmFpbF9pbiAmJiAwID09PSBjLmF2YWlsX291dCAmJiAobSA9ICEwKSB9IHdoaWxlICgoYy5hdmFpbF9pbiA+IDAgfHwgMCA9PT0gYy5hdmFpbF9vdXQpICYmIHIgIT09IGwuWl9TVFJFQU1fRU5EKTsgcmV0dXJuIHIgPT09IGwuWl9TVFJFQU1fRU5EICYmIChuID0gbC5aX0ZJTklTSCksIG4gPT09IGwuWl9GSU5JU0ggPyAociA9IGkuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLCB0aGlzLm9uRW5kKHIpLCB0aGlzLmVuZGVkID0gITAsIHIgPT09IGwuWl9PSykgOiBuICE9PSBsLlpfU1lOQ19GTFVTSCB8fCAodGhpcy5vbkVuZChsLlpfT0spLCBjLmF2YWlsX291dCA9IDAsICEwKSB9LCBuLnByb3RvdHlwZS5vbkRhdGEgPSBmdW5jdGlvbihlKSB7IHRoaXMuY2h1bmtzLnB1c2goZSkgfSwgbi5wcm90b3R5cGUub25FbmQgPSBmdW5jdGlvbihlKSB7IGUgPT09IGwuWl9PSyAmJiAoInN0cmluZyIgPT09IHRoaXMub3B0aW9ucy50byA/IHRoaXMucmVzdWx0ID0gdGhpcy5jaHVua3Muam9pbigiIikgOiB0aGlzLnJlc3VsdCA9IHMuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLCB0aGlzLmNodW5rcyA9IFtdLCB0aGlzLmVyciA9IGUsIHRoaXMubXNnID0gdGhpcy5zdHJtLm1zZyB9LCByLkluZmxhdGUgPSBuLCByLmluZmxhdGUgPSBvLCByLmluZmxhdGVSYXcgPSBhLCByLnVuZ3ppcCA9IG8gfSwgInV0aWxzL2NvbW1vbi5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsgInVzZSBzdHJpY3QiOyB2YXIgbiA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBVaW50OEFycmF5ICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBVaW50MTZBcnJheSAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgSW50MzJBcnJheTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHIuYXNzaWduID0gZnVuY3Rpb24oZSkgeyBmb3IgKHZhciB0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsgdC5sZW5ndGg7KSB7IHZhciByID0gdC5zaGlmdCgpOyBpZiAocikgeyBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIHIpIHRocm93IG5ldyBUeXBlRXJyb3IociArICJtdXN0IGJlIG5vbi1vYmplY3QiKTsgZm9yICh2YXIgbiBpbiByKSByLmhhc093blByb3BlcnR5KG4pICYmIChlW25dID0gcltuXSkgfSB9IHJldHVybiBlIH0sIHIuc2hyaW5rQnVmID0gZnVuY3Rpb24oZSwgdCkgeyByZXR1cm4gZS5sZW5ndGggPT09IHQgPyBlIDogZS5zdWJhcnJheSA/IGUuc3ViYXJyYXkoMCwgdCkgOiAoZS5sZW5ndGggPSB0LCBlKSB9OyB2YXIgbyA9IHsgYXJyYXlTZXQ6IGZ1bmN0aW9uKGUsIHQsIHIsIG4sIG8pIHsgaWYgKHQuc3ViYXJyYXkgJiYgZS5zdWJhcnJheSkgcmV0dXJuIHZvaWQgZS5zZXQodC5zdWJhcnJheShyLCByICsgbiksIG8pOyBmb3IgKHZhciBhID0gMDsgYSA8IG47IGErKykgZVtvICsgYV0gPSB0W3IgKyBhXSB9LCBmbGF0dGVuQ2h1bmtzOiBmdW5jdGlvbihlKSB7IHZhciB0LCByLCBuLCBvLCBhLCBpOyBmb3IgKG4gPSAwLCB0ID0gMCwgciA9IGUubGVuZ3RoOyB0IDwgcjsgdCsrKSBuICs9IGVbdF0ubGVuZ3RoOyBmb3IgKGkgPSBuZXcgVWludDhBcnJheShuKSwgbyA9IDAsIHQgPSAwLCByID0gZS5sZW5ndGg7IHQgPCByOyB0KyspIGEgPSBlW3RdLCBpLnNldChhLCBvKSwgbyArPSBhLmxlbmd0aDsgcmV0dXJuIGkgfSB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7IGFycmF5U2V0OiBmdW5jdGlvbihlLCB0LCByLCBuLCBvKSB7IGZvciAodmFyIGEgPSAwOyBhIDwgbjsgYSsrKSBlW28gKyBhXSA9IHRbciArIGFdIH0sIGZsYXR0ZW5DaHVua3M6IGZ1bmN0aW9uKGUpIHsgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgZSkgfSB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgci5zZXRUeXBlZCA9IGZ1bmN0aW9uKGUpIHsgZSA/IChyLkJ1ZjggPSBVaW50OEFycmF5LCByLkJ1ZjE2ID0gVWludDE2QXJyYXksIHIuQnVmMzIgPSBJbnQzMkFycmF5LCByLmFzc2lnbihyLCBvKSkgOiAoci5CdWY4ID0gQXJyYXksIHIuQnVmMTYgPSBBcnJheSwgci5CdWYzMiA9IEFycmF5LCByLmFzc2lnbihyLCBhKSkgfSwgci5zZXRUeXBlZChuKSB9LCAidXRpbHMvc3RyaW5ncy5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsgInVzZSBzdHJpY3QiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUsIHQpIHsgaWYgKHQgPCA2NTUzNyAmJiAoZS5zdWJhcnJheSAmJiBpIHx8ICFlLnN1YmFycmF5ICYmIGEpKSByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBvLnNocmlua0J1ZihlLCB0KSk7IGZvciAodmFyIHIgPSAiIiwgbiA9IDA7IG4gPCB0OyBuKyspIHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTsgcmV0dXJuIHIgfSB2YXIgbyA9IGUoIi4vY29tbW9uIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICEwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhMDsgdHJ5IHsgU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBbMF0pIH0gY2F0Y2ggKGUpIHsgYSA9ICExIH0gdHJ5IHsgU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDhBcnJheSgxKSkgfSBjYXRjaCAoZSkgeyBpID0gITEgfSBmb3IgKHZhciBzID0gbmV3IG8uQnVmOCgyNTYpLCBkID0gMDsgZCA8IDI1NjsgZCsrKSBzW2RdID0gZCA+PSAyNTIgPyA2IDogZCA+PSAyNDggPyA1IDogZCA+PSAyNDAgPyA0IDogZCA+PSAyMjQgPyAzIDogZCA+PSAxOTIgPyAyIDogMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNbMjU0XSA9IHNbMjU0XSA9IDEsIHIuc3RyaW5nMmJ1ZiA9IGZ1bmN0aW9uKGUpIHsgdmFyIHQsIHIsIG4sIGEsIGksIHMgPSBlLmxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDA7IGZvciAoYSA9IDA7IGEgPCBzOyBhKyspIHIgPSBlLmNoYXJDb2RlQXQoYSksIDU1Mjk2ID09PSAoNjQ1MTIgJiByKSAmJiBhICsgMSA8IHMgJiYgKG4gPSBlLmNoYXJDb2RlQXQoYSArIDEpLCA1NjMyMCA9PT0gKDY0NTEyICYgbikgJiYgKHIgPSA2NTUzNiArIChyIC0gNTUyOTYgPDwgMTApICsgKG4gLSA1NjMyMCksIGErKykpLCBkICs9IHIgPCAxMjggPyAxIDogciA8IDIwNDggPyAyIDogciA8IDY1NTM2ID8gMyA6IDQ7IGZvciAodCA9IG5ldyBvLkJ1ZjgoZCksIGkgPSAwLCBhID0gMDsgaSA8IGQ7IGErKykgciA9IGUuY2hhckNvZGVBdChhKSwgNTUyOTYgPT09ICg2NDUxMiAmIHIpICYmIGEgKyAxIDwgcyAmJiAobiA9IGUuY2hhckNvZGVBdChhICsgMSksIDU2MzIwID09PSAoNjQ1MTIgJiBuKSAmJiAociA9IDY1NTM2ICsgKHIgLSA1NTI5NiA8PCAxMCkgKyAobiAtIDU2MzIwKSwgYSsrKSksIHIgPCAxMjggPyB0W2krK10gPSByIDogciA8IDIwNDggPyAodFtpKytdID0gMTkyIHwgciA+Pj4gNiwgdFtpKytdID0gMTI4IHwgNjMgJiByKSA6IHIgPCA2NTUzNiA/ICh0W2krK10gPSAyMjQgfCByID4+PiAxMiwgdFtpKytdID0gMTI4IHwgciA+Pj4gNiAmIDYzLCB0W2krK10gPSAxMjggfCA2MyAmIHIpIDogKHRbaSsrXSA9IDI0MCB8IHIgPj4+IDE4LCB0W2krK10gPSAxMjggfCByID4+PiAxMiAmIDYzLCB0W2krK10gPSAxMjggfCByID4+PiA2ICYgNjMsIHRbaSsrXSA9IDEyOCB8IDYzICYgcik7IHJldHVybiB0IH0sIHIuYnVmMmJpbnN0cmluZyA9IGZ1bmN0aW9uKGUpIHsgcmV0dXJuIG4oZSwgZS5sZW5ndGgpIH0sIHIuYmluc3RyaW5nMmJ1ZiA9IGZ1bmN0aW9uKGUpIHsgZm9yICh2YXIgdCA9IG5ldyBvLkJ1ZjgoZS5sZW5ndGgpLCByID0gMCwgbiA9IHQubGVuZ3RoOyByIDwgbjsgcisrKSB0W3JdID0gZS5jaGFyQ29kZUF0KHIpOyByZXR1cm4gdCB9LCByLmJ1ZjJzdHJpbmcgPSBmdW5jdGlvbihlLCB0KSB7IHZhciByLCBvLCBhLCBpLCBkID0gdCB8fCBlLmxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG5ldyBBcnJheSgyICogZCk7IGZvciAobyA9IDAsIHIgPSAwOyByIDwgZDspDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtyKytdLCBhIDwgMTI4KSBsW28rK10gPSBhOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID0gc1thXSwgaSA+IDQpIGxbbysrXSA9IDY1NTMzLCByICs9IGkgLSAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBmb3IgKGEgJj0gMiA9PT0gaSA/IDMxIDogMyA9PT0gaSA/IDE1IDogNzsgaSA+IDEgJiYgciA8IGQ7KSBhID0gYSA8PCA2IHwgNjMgJiBlW3IrK10sIGktLTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA+IDEgPyBsW28rK10gPSA2NTUzMyA6IGEgPCA2NTUzNiA/IGxbbysrXSA9IGEgOiAoYSAtPSA2NTUzNiwgbFtvKytdID0gNTUyOTYgfCBhID4+IDEwICYgMTAyMywgbFtvKytdID0gNTYzMjAgfCAxMDIzICYgYSkgfSByZXR1cm4gbihsLCBvKSB9LCByLnV0Zjhib3JkZXIgPSBmdW5jdGlvbihlLCB0KSB7IHZhciByOyBmb3IgKHQgPSB0IHx8IGUubGVuZ3RoLCB0ID4gZS5sZW5ndGggJiYgKHQgPSBlLmxlbmd0aCksIHIgPSB0IC0gMTsgciA+PSAwICYmIDEyOCA9PT0gKDE5MiAmIGVbcl0pOykgci0tOyByZXR1cm4gciA8IDAgPyB0IDogMCA9PT0gciA/IHQgOiByICsgc1tlW3JdXSA+IHQgPyByIDogdCB9IH0sICJ6bGliL2luZmxhdGUuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7ICJ1c2Ugc3RyaWN0IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7IHJldHVybiAoZSA+Pj4gMjQgJiAyNTUpICsgKGUgPj4+IDggJiA2NTI4MCkgKyAoKDY1MjgwICYgZSkgPDwgOCkgKyAoKDI1NSAmIGUpIDw8IDI0KSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oKSB7IHRoaXMubW9kZSA9IDAsIHRoaXMubGFzdCA9ICExLCB0aGlzLndyYXAgPSAwLCB0aGlzLmhhdmVkaWN0ID0gITEsIHRoaXMuZmxhZ3MgPSAwLCB0aGlzLmRtYXggPSAwLCB0aGlzLmNoZWNrID0gMCwgdGhpcy50b3RhbCA9IDAsIHRoaXMuaGVhZCA9IG51bGwsIHRoaXMud2JpdHMgPSAwLCB0aGlzLndzaXplID0gMCwgdGhpcy53aGF2ZSA9IDAsIHRoaXMud25leHQgPSAwLCB0aGlzLndpbmRvdyA9IG51bGwsIHRoaXMuaG9sZCA9IDAsIHRoaXMuYml0cyA9IDAsIHRoaXMubGVuZ3RoID0gMCwgdGhpcy5vZmZzZXQgPSAwLCB0aGlzLmV4dHJhID0gMCwgdGhpcy5sZW5jb2RlID0gbnVsbCwgdGhpcy5kaXN0Y29kZSA9IG51bGwsIHRoaXMubGVuYml0cyA9IDAsIHRoaXMuZGlzdGJpdHMgPSAwLCB0aGlzLm5jb2RlID0gMCwgdGhpcy5ubGVuID0gMCwgdGhpcy5uZGlzdCA9IDAsIHRoaXMuaGF2ZSA9IDAsIHRoaXMubmV4dCA9IG51bGwsIHRoaXMubGVucyA9IG5ldyB5LkJ1ZjE2KDMyMCksIHRoaXMud29yayA9IG5ldyB5LkJ1ZjE2KDI4OCksIHRoaXMubGVuZHluID0gbnVsbCwgdGhpcy5kaXN0ZHluID0gbnVsbCwgdGhpcy5zYW5lID0gMCwgdGhpcy5iYWNrID0gMCwgdGhpcy53YXMgPSAwIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7IHZhciB0OyByZXR1cm4gZSAmJiBlLnN0YXRlID8gKHQgPSBlLnN0YXRlLCBlLnRvdGFsX2luID0gZS50b3RhbF9vdXQgPSB0LnRvdGFsID0gMCwgZS5tc2cgPSAiIiwgdC53cmFwICYmIChlLmFkbGVyID0gMSAmIHQud3JhcCksIHQubW9kZSA9IEksIHQubGFzdCA9IDAsIHQuaGF2ZWRpY3QgPSAwLCB0LmRtYXggPSAzMjc2OCwgdC5oZWFkID0gbnVsbCwgdC5ob2xkID0gMCwgdC5iaXRzID0gMCwgdC5sZW5jb2RlID0gdC5sZW5keW4gPSBuZXcgeS5CdWYzMih3ZSksIHQuZGlzdGNvZGUgPSB0LmRpc3RkeW4gPSBuZXcgeS5CdWYzMihtZSksIHQuc2FuZSA9IDEsIHQuYmFjayA9IC0xLCBPKSA6IFIgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsgdmFyIHQ7IHJldHVybiBlICYmIGUuc3RhdGUgPyAodCA9IGUuc3RhdGUsIHQud3NpemUgPSAwLCB0LndoYXZlID0gMCwgdC53bmV4dCA9IDAsIGEoZSkpIDogUiB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCkgeyB2YXIgciwgbjsgcmV0dXJuIGUgJiYgZS5zdGF0ZSA/IChuID0gZS5zdGF0ZSwgdCA8IDAgPyAociA9IDAsIHQgPSAtdCkgOiAociA9ICh0ID4+IDQpICsgMSwgdCA8IDQ4ICYmICh0ICY9IDE1KSksIHQgJiYgKHQgPCA4IHx8IHQgPiAxNSkgPyBSIDogKG51bGwgIT09IG4ud2luZG93ICYmIG4ud2JpdHMgIT09IHQgJiYgKG4ud2luZG93ID0gbnVsbCksIG4ud3JhcCA9IHIsIG4ud2JpdHMgPSB0LCBpKGUpKSkgOiBSIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlLCB0KSB7IHZhciByLCBuOyByZXR1cm4gZSA/IChuID0gbmV3IG8sIGUuc3RhdGUgPSBuLCBuLndpbmRvdyA9IG51bGwsIHIgPSBzKGUsIHQpLCByICE9PSBPICYmIChlLnN0YXRlID0gbnVsbCksIHIpIDogUiB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgeyByZXR1cm4gZChlLCB5ZSkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsgaWYgKGdlKSB7IHZhciB0OyBmb3IgKG0gPSBuZXcgeS5CdWYzMig1MTIpLCBiID0gbmV3IHkuQnVmMzIoMzIpLCB0ID0gMDsgdCA8IDE0NDspIGUubGVuc1t0KytdID0gODsgZm9yICg7IHQgPCAyNTY7KSBlLmxlbnNbdCsrXSA9IDk7IGZvciAoOyB0IDwgMjgwOykgZS5sZW5zW3QrK10gPSA3OyBmb3IgKDsgdCA8IDI4ODspIGUubGVuc1t0KytdID0gODsgZm9yIChVKEUsIGUubGVucywgMCwgMjg4LCBtLCAwLCBlLndvcmssIHsgYml0czogOSB9KSwgdCA9IDA7IHQgPCAzMjspIGUubGVuc1t0KytdID0gNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVShrLCBlLmxlbnMsIDAsIDMyLCBiLCAwLCBlLndvcmssIHsgYml0czogNSB9KSwgZ2UgPSAhMSB9IGUubGVuY29kZSA9IG0sIGUubGVuYml0cyA9IDksIGUuZGlzdGNvZGUgPSBiLCBlLmRpc3RiaXRzID0gNSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCwgciwgbikgeyB2YXIgbywgYSA9IGUuc3RhdGU7IHJldHVybiBudWxsID09PSBhLndpbmRvdyAmJiAoYS53c2l6ZSA9IDEgPDwgYS53Yml0cywgYS53bmV4dCA9IDAsIGEud2hhdmUgPSAwLCBhLndpbmRvdyA9IG5ldyB5LkJ1ZjgoYS53c2l6ZSkpLCBuID49IGEud3NpemUgPyAoeS5hcnJheVNldChhLndpbmRvdywgdCwgciAtIGEud3NpemUsIGEud3NpemUsIDApLCBhLnduZXh0ID0gMCwgYS53aGF2ZSA9IGEud3NpemUpIDogKG8gPSBhLndzaXplIC0gYS53bmV4dCwgbyA+IG4gJiYgKG8gPSBuKSwgeS5hcnJheVNldChhLndpbmRvdywgdCwgciAtIG4sIG8sIGEud25leHQpLCBuIC09IG8sIG4gPyAoeS5hcnJheVNldChhLndpbmRvdywgdCwgciAtIG4sIG4sIDApLCBhLnduZXh0ID0gbiwgYS53aGF2ZSA9IGEud3NpemUpIDogKGEud25leHQgKz0gbywgYS53bmV4dCA9PT0gYS53c2l6ZSAmJiAoYS53bmV4dCA9IDApLCBhLndoYXZlIDwgYS53c2l6ZSAmJiAoYS53aGF2ZSArPSBvKSkpLCAwIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlLCB0KSB7IHZhciByLCBvLCBhLCBpLCBzLCBkLCBsLCBjLCBoLCBwLCB3LCBtLCBiLCB3ZSwgbWUsIGJlLCB5ZSwgZ2UsIHZlLCBBZSwgVWUsIHhlLCBFZSwga2UsIEJlID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGUgPSBuZXcgeS5CdWY4KDQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZSA9IFsxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1XTsgaWYgKCFlIHx8ICFlLnN0YXRlIHx8ICFlLm91dHB1dCB8fCAhZS5pbnB1dCAmJiAwICE9PSBlLmF2YWlsX2luKSByZXR1cm4gUjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zdGF0ZSwgci5tb2RlID09PSBqICYmIChyLm1vZGUgPSBYKSwgcyA9IGUubmV4dF9vdXQsIGEgPSBlLm91dHB1dCwgbCA9IGUuYXZhaWxfb3V0LCBpID0gZS5uZXh0X2luLCBvID0gZS5pbnB1dCwgZCA9IGUuYXZhaWxfaW4sIGMgPSByLmhvbGQsIGggPSByLmJpdHMsIHAgPSBkLCB3ID0gbCwgeGUgPSBPOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IGZvciAoOzspIHN3aXRjaCAoci5tb2RlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSByLndyYXApIHsgci5tb2RlID0gWDsgYnJlYWsgfSBmb3IgKDsgaCA8IDE2OykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLS0sIGMgKz0gb1tpKytdIDw8IGgsIGggKz0gOCB9IGlmICgyICYgci53cmFwICYmIDM1NjE1ID09PSBjKSB7IHIuY2hlY2sgPSAwLCBMZVswXSA9IDI1NSAmIGMsIExlWzFdID0gYyA+Pj4gOCAmIDI1NSwgci5jaGVjayA9IHYoci5jaGVjaywgTGUsIDIsIDApLCBjID0gMCwgaCA9IDAsIHIubW9kZSA9IFA7IGJyZWFrIH0gaWYgKHIuZmxhZ3MgPSAwLCByLmhlYWQgJiYgKHIuaGVhZC5kb25lID0gITEpLCAhKDEgJiByLndyYXApIHx8ICgoKDI1NSAmIGMpIDw8IDgpICsgKGMgPj4gOCkpICUgMzEpIHsgZS5tc2cgPSAiaW5jb3JyZWN0IGhlYWRlciBjaGVjayIsIHIubW9kZSA9IGNlOyBicmVhayB9IGlmICgoMTUgJiBjKSAhPT0gVCkgeyBlLm1zZyA9ICJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsIHIubW9kZSA9IGNlOyBicmVhayB9IGlmIChjID4+Pj0gNCwgaCAtPSA0LCBVZSA9ICgxNSAmIGMpICsgOCwgMCA9PT0gci53Yml0cykgci53Yml0cyA9IFVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoVWUgPiByLndiaXRzKSB7IGUubXNnID0gImludmFsaWQgd2luZG93IHNpemUiLCByLm1vZGUgPSBjZTsgYnJlYWsgfSByLmRtYXggPSAxIDw8IFVlLCBlLmFkbGVyID0gci5jaGVjayA9IDEsIHIubW9kZSA9IDUxMiAmIGMgPyBHIDogaiwgYyA9IDAsIGggPSAwOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGggPCAxNjspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBpZiAoci5mbGFncyA9IGMsICgyNTUgJiByLmZsYWdzKSAhPT0gVCkgeyBlLm1zZyA9ICJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsIHIubW9kZSA9IGNlOyBicmVhayB9IGlmICg1NzM0NCAmIHIuZmxhZ3MpIHsgZS5tc2cgPSAidW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0Iiwgci5tb2RlID0gY2U7IGJyZWFrIH0gci5oZWFkICYmIChyLmhlYWQudGV4dCA9IGMgPj4gOCAmIDEpLCA1MTIgJiByLmZsYWdzICYmIChMZVswXSA9IDI1NSAmIGMsIExlWzFdID0gYyA+Pj4gOCAmIDI1NSwgci5jaGVjayA9IHYoci5jaGVjaywgTGUsIDIsIDApKSwgYyA9IDAsIGggPSAwLCByLm1vZGUgPSBEOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaCA8IDMyOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLS0sIGMgKz0gb1tpKytdIDw8IGgsIGggKz0gOCB9IHIuaGVhZCAmJiAoci5oZWFkLnRpbWUgPSBjKSwgNTEyICYgci5mbGFncyAmJiAoTGVbMF0gPSAyNTUgJiBjLCBMZVsxXSA9IGMgPj4+IDggJiAyNTUsIExlWzJdID0gYyA+Pj4gMTYgJiAyNTUsIExlWzNdID0gYyA+Pj4gMjQgJiAyNTUsIHIuY2hlY2sgPSB2KHIuY2hlY2ssIExlLCA0LCAwKSksIGMgPSAwLCBoID0gMCwgci5tb2RlID0gRjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGggPCAxNjspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSByLmhlYWQgJiYgKHIuaGVhZC54ZmxhZ3MgPSAyNTUgJiBjLCByLmhlYWQub3MgPSBjID4+IDgpLCA1MTIgJiByLmZsYWdzICYmIChMZVswXSA9IDI1NSAmIGMsIExlWzFdID0gYyA+Pj4gOCAmIDI1NSwgci5jaGVjayA9IHYoci5jaGVjaywgTGUsIDIsIDApKSwgYyA9IDAsIGggPSAwLCByLm1vZGUgPSBxOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHE6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMTAyNCAmIHIuZmxhZ3MpIHsgZm9yICg7IGggPCAxNjspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtLSwgYyArPSBvW2krK10gPDwgaCwgaCArPSA4IH0gci5sZW5ndGggPSBjLCByLmhlYWQgJiYgKHIuaGVhZC5leHRyYV9sZW4gPSBjKSwgNTEyICYgci5mbGFncyAmJiAoTGVbMF0gPSAyNTUgJiBjLCBMZVsxXSA9IGMgPj4+IDggJiAyNTUsIHIuY2hlY2sgPSB2KHIuY2hlY2ssIExlLCAyLCAwKSksIGMgPSAwLCBoID0gMCB9IGVsc2Ugci5oZWFkICYmIChyLmhlYWQuZXh0cmEgPSBudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIubW9kZSA9IFY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxMDI0ICYgci5mbGFncyAmJiAobSA9IHIubGVuZ3RoLCBtID4gZCAmJiAobSA9IGQpLCBtICYmIChyLmhlYWQgJiYgKFVlID0gci5oZWFkLmV4dHJhX2xlbiAtIHIubGVuZ3RoLCByLmhlYWQuZXh0cmEgfHwgKHIuaGVhZC5leHRyYSA9IG5ldyBBcnJheShyLmhlYWQuZXh0cmFfbGVuKSksIHkuYXJyYXlTZXQoci5oZWFkLmV4dHJhLCBvLCBpLCBtLCBVZSkpLCA1MTIgJiByLmZsYWdzICYmIChyLmNoZWNrID0gdihyLmNoZWNrLCBvLCBtLCBpKSksIGQgLT0gbSwgaSArPSBtLCByLmxlbmd0aCAtPSBtKSwgci5sZW5ndGgpKSBicmVhayBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5sZW5ndGggPSAwLCByLm1vZGUgPSBaOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFo6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMjA0OCAmIHIuZmxhZ3MpIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gVWUgPSBvW2kgKyBtKytdLCByLmhlYWQgJiYgVWUgJiYgci5sZW5ndGggPCA2NTUzNiAmJiAoci5oZWFkLm5hbWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShVZSkpOyB3aGlsZSAoVWUgJiYgbSA8IGQpOyBpZiAoNTEyICYgci5mbGFncyAmJiAoci5jaGVjayA9IHYoci5jaGVjaywgbywgbSwgaSkpLCBkIC09IG0sIGkgKz0gbSwgVWUpIGJyZWFrIGUgfSBlbHNlIHIuaGVhZCAmJiAoci5oZWFkLm5hbWUgPSBudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIubGVuZ3RoID0gMCwgci5tb2RlID0gWTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBZOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQwOTYgJiByLmZsYWdzKSB7IGlmICgwID09PSBkKSBicmVhayBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIFVlID0gb1tpICsgbSsrXSwgci5oZWFkICYmIFVlICYmIHIubGVuZ3RoIDwgNjU1MzYgJiYgKHIuaGVhZC5jb21tZW50ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoVWUpKTsgd2hpbGUgKFVlICYmIG0gPCBkKTsgaWYgKDUxMiAmIHIuZmxhZ3MgJiYgKHIuY2hlY2sgPSB2KHIuY2hlY2ssIG8sIG0sIGkpKSwgZCAtPSBtLCBpICs9IG0sIFVlKSBicmVhayBlIH0gZWxzZSByLmhlYWQgJiYgKHIuaGVhZC5jb21tZW50ID0gbnVsbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLm1vZGUgPSB6Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHo6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNTEyICYgci5mbGFncykgeyBmb3IgKDsgaCA8IDE2OykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBpZiAoYyAhPT0gKDY1NTM1ICYgci5jaGVjaykpIHsgZS5tc2cgPSAiaGVhZGVyIGNyYyBtaXNtYXRjaCIsIHIubW9kZSA9IGNlOyBicmVhayB9IGMgPSAwLCBoID0gMCB9IHIuaGVhZCAmJiAoci5oZWFkLmhjcmMgPSByLmZsYWdzID4+IDkgJiAxLCByLmhlYWQuZG9uZSA9ICEwKSwgZS5hZGxlciA9IHIuY2hlY2sgPSAwLCByLm1vZGUgPSBqOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGggPCAzMjspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBlLmFkbGVyID0gci5jaGVjayA9IG4oYyksIGMgPSAwLCBoID0gMCwgci5tb2RlID0gSjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHIuaGF2ZWRpY3QpIHJldHVybiBlLm5leHRfb3V0ID0gcywgZS5hdmFpbF9vdXQgPSBsLCBlLm5leHRfaW4gPSBpLCBlLmF2YWlsX2luID0gZCwgci5ob2xkID0gYywgci5iaXRzID0gaCwgTjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYWRsZXIgPSByLmNoZWNrID0gMSwgci5tb2RlID0gajsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBqOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT09IEwgfHwgdCA9PT0gVykgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBYOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIubGFzdCkgeyBjID4+Pj0gNyAmIGgsIGggLT0gNyAmIGgsIHIubW9kZSA9IGxlOyBicmVhayB9IGZvciAoOyBoIDwgMzspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBzd2l0Y2ggKHIubGFzdCA9IDEgJiBjLCBjID4+Pj0gMSwgaCAtPSAxLCAzICYgYykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb2RlID0gSzsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShyKSwgci5tb2RlID0gcmUsIHQgPT09IFcpIHsgYyA+Pj49IDIsIGggLT0gMjsgYnJlYWsgZSB9IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb2RlID0gJDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1zZyA9ICJpbnZhbGlkIGJsb2NrIHR5cGUiLCByLm1vZGUgPSBjZSB9IGMgPj4+PSAyLCBoIC09IDI7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEs6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPj4+PSA3ICYgaCwgaCAtPSA3ICYgaDsgaCA8IDMyOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLS0sIGMgKz0gb1tpKytdIDw8IGgsIGggKz0gOCB9IGlmICgoNjU1MzUgJiBjKSAhPT0gKGMgPj4+IDE2IF4gNjU1MzUpKSB7IGUubXNnID0gImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiLCByLm1vZGUgPSBjZTsgYnJlYWsgfSBpZiAoci5sZW5ndGggPSA2NTUzNSAmIGMsIGMgPSAwLCBoID0gMCwgci5tb2RlID0gUSwgdCA9PT0gVykgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBROg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb2RlID0gXzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBfOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0gPSByLmxlbmd0aCkgeyBpZiAobSA+IGQgJiYgKG0gPSBkKSwgbSA+IGwgJiYgKG0gPSBsKSwgMCA9PT0gbSkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LmFycmF5U2V0KGEsIG8sIGksIG0sIHMpLCBkIC09IG0sIGkgKz0gbSwgbCAtPSBtLCBzICs9IG0sIHIubGVuZ3RoIC09IG07IGJyZWFrIH0gci5tb2RlID0gajsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBoIDwgMTQ7KSB7IGlmICgwID09PSBkKSBicmVhayBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtLSwgYyArPSBvW2krK10gPDwgaCwgaCArPSA4IH0gaWYgKHIubmxlbiA9ICgzMSAmIGMpICsgMjU3LCBjID4+Pj0gNSwgaCAtPSA1LCByLm5kaXN0ID0gKDMxICYgYykgKyAxLCBjID4+Pj0gNSwgaCAtPSA1LCByLm5jb2RlID0gKDE1ICYgYykgKyA0LCBjID4+Pj0gNCwgaCAtPSA0LCByLm5sZW4gPiAyODYgfHwgci5uZGlzdCA+IDMwKSB7IGUubXNnID0gInRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzIiwgci5tb2RlID0gY2U7IGJyZWFrIH0gci5oYXZlID0gMCwgci5tb2RlID0gZWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgci5oYXZlIDwgci5uY29kZTspIHsgZm9yICg7IGggPCAzOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSByLmxlbnNbV2Vbci5oYXZlKytdXSA9IDcgJiBjLCBjID4+Pj0gMywgaCAtPSAzIH0gZm9yICg7IHIuaGF2ZSA8IDE5Oykgci5sZW5zW1dlW3IuaGF2ZSsrXV0gPSAwOyBpZiAoci5sZW5jb2RlID0gci5sZW5keW4sIHIubGVuYml0cyA9IDcsIEVlID0geyBiaXRzOiByLmxlbmJpdHMgfSwgeGUgPSBVKHgsIHIubGVucywgMCwgMTksIHIubGVuY29kZSwgMCwgci53b3JrLCBFZSksIHIubGVuYml0cyA9IEVlLmJpdHMsIHhlKSB7IGUubXNnID0gImludmFsaWQgY29kZSBsZW5ndGhzIHNldCIsIHIubW9kZSA9IGNlOyBicmVhayB9IHIuaGF2ZSA9IDAsIHIubW9kZSA9IHRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIuaGF2ZSA8IHIubmxlbiArIHIubmRpc3Q7KSB7IGZvciAoOyBCZSA9IHIubGVuY29kZVtjICYgKDEgPDwgci5sZW5iaXRzKSAtIDFdLCBtZSA9IEJlID4+PiAyNCwgYmUgPSBCZSA+Pj4gMTYgJiAyNTUsIHllID0gNjU1MzUgJiBCZSwgIShtZSA8PSBoKTspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtLSwgYyArPSBvW2krK10gPDwgaCwgaCArPSA4IH0gaWYgKHllIDwgMTYpIGMgPj4+PSBtZSwgaCAtPSBtZSwgci5sZW5zW3IuaGF2ZSsrXSA9IHllOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBpZiAoMTYgPT09IHllKSB7IGZvciAoa2UgPSBtZSArIDI7IGggPCBrZTspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBpZiAoYyA+Pj49IG1lLCBoIC09IG1lLCAwID09PSByLmhhdmUpIHsgZS5tc2cgPSAiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsIHIubW9kZSA9IGNlOyBicmVhayB9IFVlID0gci5sZW5zW3IuaGF2ZSAtIDFdLCBtID0gMyArICgzICYgYyksIGMgPj4+PSAyLCBoIC09IDIgfSBlbHNlIGlmICgxNyA9PT0geWUpIHsgZm9yIChrZSA9IG1lICsgMzsgaCA8IGtlOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLS0sIGMgKz0gb1tpKytdIDw8IGgsIGggKz0gOCB9IGMgPj4+PSBtZSwgaCAtPSBtZSwgVWUgPSAwLCBtID0gMyArICg3ICYgYyksIGMgPj4+PSAzLCBoIC09IDMgfSBlbHNlIHsgZm9yIChrZSA9IG1lICsgNzsgaCA8IGtlOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLS0sIGMgKz0gb1tpKytdIDw8IGgsIGggKz0gOCB9IGMgPj4+PSBtZSwgaCAtPSBtZSwgVWUgPSAwLCBtID0gMTEgKyAoMTI3ICYgYyksIGMgPj4+PSA3LCBoIC09IDcgfSBpZiAoci5oYXZlICsgbSA+IHIubmxlbiArIHIubmRpc3QpIHsgZS5tc2cgPSAiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsIHIubW9kZSA9IGNlOyBicmVhayB9IGZvciAoOyBtLS07KSByLmxlbnNbci5oYXZlKytdID0gVWUgfSB9IGlmIChyLm1vZGUgPT09IGNlKSBicmVhazsgaWYgKDAgPT09IHIubGVuc1syNTZdKSB7IGUubXNnID0gImludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayIsIHIubW9kZSA9IGNlOyBicmVhayB9IGlmIChyLmxlbmJpdHMgPSA5LCBFZSA9IHsgYml0czogci5sZW5iaXRzIH0sIHhlID0gVShFLCByLmxlbnMsIDAsIHIubmxlbiwgci5sZW5jb2RlLCAwLCByLndvcmssIEVlKSwgci5sZW5iaXRzID0gRWUuYml0cywgeGUpIHsgZS5tc2cgPSAiaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0Iiwgci5tb2RlID0gY2U7IGJyZWFrIH0gaWYgKHIuZGlzdGJpdHMgPSA2LCByLmRpc3Rjb2RlID0gci5kaXN0ZHluLCBFZSA9IHsgYml0czogci5kaXN0Yml0cyB9LCB4ZSA9IFUoaywgci5sZW5zLCByLm5sZW4sIHIubmRpc3QsIHIuZGlzdGNvZGUsIDAsIHIud29yaywgRWUpLCByLmRpc3RiaXRzID0gRWUuYml0cywgeGUpIHsgZS5tc2cgPSAiaW52YWxpZCBkaXN0YW5jZXMgc2V0Iiwgci5tb2RlID0gY2U7IGJyZWFrIH0gaWYgKHIubW9kZSA9IHJlLCB0ID09PSBXKSBicmVhayBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHJlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb2RlID0gbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbmU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA+PSA2ICYmIGwgPj0gMjU4KSB7IGUubmV4dF9vdXQgPSBzLCBlLmF2YWlsX291dCA9IGwsIGUubmV4dF9pbiA9IGksIGUuYXZhaWxfaW4gPSBkLCByLmhvbGQgPSBjLCByLmJpdHMgPSBoLCBBKGUsIHcpLCBzID0gZS5uZXh0X291dCwgYSA9IGUub3V0cHV0LCBsID0gZS5hdmFpbF9vdXQsIGkgPSBlLm5leHRfaW4sIG8gPSBlLmlucHV0LCBkID0gZS5hdmFpbF9pbiwgYyA9IHIuaG9sZCwgaCA9IHIuYml0cywgci5tb2RlID09PSBqICYmIChyLmJhY2sgPSAtMSk7IGJyZWFrIH0gZm9yIChyLmJhY2sgPSAwOyBCZSA9IHIubGVuY29kZVtjICYgKDEgPDwgci5sZW5iaXRzKSAtIDFdLCBtZSA9IEJlID4+PiAyNCwgYmUgPSBCZSA+Pj4gMTYgJiAyNTUsIHllID0gNjU1MzUgJiBCZSwgIShtZSA8PSBoKTspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBpZiAoYmUgJiYgMCA9PT0gKDI0MCAmIGJlKSkgeyBmb3IgKGdlID0gbWUsIHZlID0gYmUsIEFlID0geWU7IEJlID0gci5sZW5jb2RlW0FlICsgKChjICYgKDEgPDwgZ2UgKyB2ZSkgLSAxKSA+PiBnZSldLCBtZSA9IEJlID4+PiAyNCwgYmUgPSBCZSA+Pj4gMTYgJiAyNTUsIHllID0gNjU1MzUgJiBCZSwgIShnZSArIG1lIDw9IGgpOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBjID4+Pj0gZ2UsIGggLT0gZ2UsIHIuYmFjayArPSBnZSB9IGlmIChjID4+Pj0gbWUsIGggLT0gbWUsIHIuYmFjayArPSBtZSwgci5sZW5ndGggPSB5ZSwgMCA9PT0gYmUpIHsgci5tb2RlID0gZGU7IGJyZWFrIH0gaWYgKDMyICYgYmUpIHsgci5iYWNrID0gLTEsIHIubW9kZSA9IGo7IGJyZWFrIH0gaWYgKDY0ICYgYmUpIHsgZS5tc2cgPSAiaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIiwgci5tb2RlID0gY2U7IGJyZWFrIH0gci5leHRyYSA9IDE1ICYgYmUsIHIubW9kZSA9IG9lOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG9lOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuZXh0cmEpIHsgZm9yIChrZSA9IHIuZXh0cmE7IGggPCBrZTspIHsgaWYgKDAgPT09IGQpIGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtLSwgYyArPSBvW2krK10gPDwgaCwgaCArPSA4IH0gci5sZW5ndGggKz0gYyAmICgxIDw8IHIuZXh0cmEpIC0gMSwgYyA+Pj49IHIuZXh0cmEsIGggLT0gci5leHRyYSwgci5iYWNrICs9IHIuZXh0cmEgfSByLndhcyA9IHIubGVuZ3RoLCByLm1vZGUgPSBhZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBhZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBCZSA9IHIuZGlzdGNvZGVbYyAmICgxIDw8IHIuZGlzdGJpdHMpIC0gMV0sIG1lID0gQmUgPj4+IDI0LCBiZSA9IEJlID4+PiAxNiAmIDI1NSwgeWUgPSA2NTUzNSAmIEJlLCAhKG1lIDw9IGgpOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLS0sIGMgKz0gb1tpKytdIDw8IGgsIGggKz0gOCB9IGlmICgwID09PSAoMjQwICYgYmUpKSB7IGZvciAoZ2UgPSBtZSwgdmUgPSBiZSwgQWUgPSB5ZTsgQmUgPSByLmRpc3Rjb2RlW0FlICsgKChjICYgKDEgPDwgZ2UgKyB2ZSkgLSAxKSA+PiBnZSldLCBtZSA9IEJlID4+PiAyNCwgYmUgPSBCZSA+Pj4gMTYgJiAyNTUsIHllID0gNjU1MzUgJiBCZSwgIShnZSArIG1lIDw9IGgpOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBjID4+Pj0gZ2UsIGggLT0gZ2UsIHIuYmFjayArPSBnZSB9IGlmIChjID4+Pj0gbWUsIGggLT0gbWUsIHIuYmFjayArPSBtZSwgNjQgJiBiZSkgeyBlLm1zZyA9ICJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLCByLm1vZGUgPSBjZTsgYnJlYWsgfSByLm9mZnNldCA9IHllLCByLmV4dHJhID0gMTUgJiBiZSwgci5tb2RlID0gaWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5leHRyYSkgeyBmb3IgKGtlID0gci5leHRyYTsgaCA8IGtlOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSByLm9mZnNldCArPSBjICYgKDEgPDwgci5leHRyYSkgLSAxLCBjID4+Pj0gci5leHRyYSwgaCAtPSByLmV4dHJhLCByLmJhY2sgKz0gci5leHRyYSB9IGlmIChyLm9mZnNldCA+IHIuZG1heCkgeyBlLm1zZyA9ICJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsIHIubW9kZSA9IGNlOyBicmVhayB9IHIubW9kZSA9IHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGwpIGJyZWFrIGU7IGlmIChtID0gdyAtIGwsIHIub2Zmc2V0ID4gbSkgeyBpZiAobSA9IHIub2Zmc2V0IC0gbSwgbSA+IHIud2hhdmUgJiYgci5zYW5lKSB7IGUubXNnID0gImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIiwgci5tb2RlID0gY2U7IGJyZWFrIH0gbSA+IHIud25leHQgPyAobSAtPSByLnduZXh0LCBiID0gci53c2l6ZSAtIG0pIDogYiA9IHIud25leHQgLSBtLCBtID4gci5sZW5ndGggJiYgKG0gPSByLmxlbmd0aCksIHdlID0gci53aW5kb3cgfSBlbHNlIHdlID0gYSwgYiA9IHMgLSByLm9mZnNldCwgbSA9IHIubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA+IGwgJiYgKG0gPSBsKSwgbCAtPSBtLCByLmxlbmd0aCAtPSBtOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gYVtzKytdID0gd2VbYisrXTsgd2hpbGUgKC0tbSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSByLmxlbmd0aCAmJiAoci5tb2RlID0gbmUpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBkZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBsKSBicmVhayBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtzKytdID0gci5sZW5ndGgsIGwtLSwgci5tb2RlID0gbmU7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGxlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIud3JhcCkgeyBmb3IgKDsgaCA8IDMyOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjIHw9IG9baSsrXSA8PCBoLCBoICs9IDggfSBpZiAodyAtPSBsLCBlLnRvdGFsX291dCArPSB3LCByLnRvdGFsICs9IHcsIHcgJiYgKGUuYWRsZXIgPSByLmNoZWNrID0gci5mbGFncyA/IHYoci5jaGVjaywgYSwgdywgcyAtIHcpIDogZyhyLmNoZWNrLCBhLCB3LCBzIC0gdykpLCB3ID0gbCwgKHIuZmxhZ3MgPyBjIDogbihjKSkgIT09IHIuY2hlY2spIHsgZS5tc2cgPSAiaW5jb3JyZWN0IGRhdGEgY2hlY2siLCByLm1vZGUgPSBjZTsgYnJlYWsgfSBjID0gMCwgaCA9IDAgfSByLm1vZGUgPSB1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB1ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLndyYXAgJiYgci5mbGFncykgeyBmb3IgKDsgaCA8IDMyOykgeyBpZiAoMCA9PT0gZCkgYnJlYWsgZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0tLCBjICs9IG9baSsrXSA8PCBoLCBoICs9IDggfSBpZiAoYyAhPT0gKDQyOTQ5NjcyOTUgJiByLnRvdGFsKSkgeyBlLm1zZyA9ICJpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrIiwgci5tb2RlID0gY2U7IGJyZWFrIH0gYyA9IDAsIGggPSAwIH0gci5tb2RlID0gZmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZmU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZSA9IE07IGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgY2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZSA9IEM7IGJyZWFrIGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaGU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBwZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5uZXh0X291dCA9IHMsIGUuYXZhaWxfb3V0ID0gbCwgZS5uZXh0X2luID0gaSwgZS5hdmFpbF9pbiA9IGQsIHIuaG9sZCA9IGMsIHIuYml0cyA9IGgsIChyLndzaXplIHx8IHcgIT09IGUuYXZhaWxfb3V0ICYmIHIubW9kZSA8IGNlICYmIChyLm1vZGUgPCBsZSB8fCB0ICE9PSBCKSkgJiYgZihlLCBlLm91dHB1dCwgZS5uZXh0X291dCwgdyAtIGUuYXZhaWxfb3V0KSA/IChyLm1vZGUgPSBoZSwgSCkgOiAocCAtPSBlLmF2YWlsX2luLCB3IC09IGUuYXZhaWxfb3V0LCBlLnRvdGFsX2luICs9IHAsIGUudG90YWxfb3V0ICs9IHcsIHIudG90YWwgKz0gdywgci53cmFwICYmIHcgJiYgKGUuYWRsZXIgPSByLmNoZWNrID0gci5mbGFncyA/IHYoci5jaGVjaywgYSwgdywgZS5uZXh0X291dCAtIHcpIDogZyhyLmNoZWNrLCBhLCB3LCBlLm5leHRfb3V0IC0gdykpLCBlLmRhdGFfdHlwZSA9IHIuYml0cyArIChyLmxhc3QgPyA2NCA6IDApICsgKHIubW9kZSA9PT0gaiA/IDEyOCA6IDApICsgKHIubW9kZSA9PT0gcmUgfHwgci5tb2RlID09PSBRID8gMjU2IDogMCksICgwID09PSBwICYmIDAgPT09IHcgfHwgdCA9PT0gQikgJiYgeGUgPT09IE8gJiYgKHhlID0gUyksIHhlKSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGgoZSkgeyBpZiAoIWUgfHwgIWUuc3RhdGUpIHJldHVybiBSOyB2YXIgdCA9IGUuc3RhdGU7IHJldHVybiB0LndpbmRvdyAmJiAodC53aW5kb3cgPSBudWxsKSwgZS5zdGF0ZSA9IG51bGwsIE8gfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUsIHQpIHsgdmFyIHI7IHJldHVybiBlICYmIGUuc3RhdGUgPyAociA9IGUuc3RhdGUsIDAgPT09ICgyICYgci53cmFwKSA/IFIgOiAoci5oZWFkID0gdCwgdC5kb25lID0gITEsIE8pKSA6IFIgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQpIHsgdmFyIHIsIG4sIG8sIGEgPSB0Lmxlbmd0aDsgcmV0dXJuIGUgJiYgZS5zdGF0ZSA/IChyID0gZS5zdGF0ZSwgMCAhPT0gci53cmFwICYmIHIubW9kZSAhPT0gSiA/IFIgOiByLm1vZGUgPT09IEogJiYgKG4gPSAxLCBuID0gZyhuLCB0LCBhLCAwKSwgbiAhPT0gci5jaGVjaykgPyBDIDogKG8gPSBmKGUsIHQsIGEsIGEpKSA/IChyLm1vZGUgPSBoZSwgSCkgOiAoci5oYXZlZGljdCA9IDEsIE8pKSA6IFIgfSB2YXIgbSwgYiwgeSA9IGUoIi4uL3V0aWxzL2NvbW1vbiIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlKCIuL2FkbGVyMzIiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZSgiLi9jcmMzMiIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBlKCIuL2luZmZhc3QiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gZSgiLi9pbmZ0cmVlcyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSA0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSA1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcgPSA2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gPSAyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSAtMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gLTMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSCA9IC00LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSAtNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0gMywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGID0gNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWID0gNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaID0gNywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZID0gOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ID0gOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHID0gMTAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IDExLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAxMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYID0gMTMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSyA9IDE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEgPSAxNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gMTYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCA9IDE3LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVlID0gMTgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGUgPSAxOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZSA9IDIwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lID0gMjEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2UgPSAyMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZSA9IDIzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllID0gMjQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2UgPSAyNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZSA9IDI2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlID0gMjcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWUgPSAyOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZSA9IDI5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlID0gMzAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGUgPSAzMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZSA9IDMyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlID0gODUyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lID0gNTkyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlID0gMTUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWUgPSBiZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZSA9ICEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgci5pbmZsYXRlUmVzZXQgPSBpLCByLmluZmxhdGVSZXNldDIgPSBzLCByLmluZmxhdGVSZXNldEtlZXAgPSBhLCByLmluZmxhdGVJbml0ID0gbCwgci5pbmZsYXRlSW5pdDIgPSBkLCByLmluZmxhdGUgPSBjLCByLmluZmxhdGVFbmQgPSBoLCByLmluZmxhdGVHZXRIZWFkZXIgPSBwLCByLmluZmxhdGVTZXREaWN0aW9uYXJ5ID0gdywgci5pbmZsYXRlSW5mbyA9ICJwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIiB9LCAiemxpYi9jb25zdGFudHMuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7ICJ1c2Ugc3RyaWN0IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHQuZXhwb3J0cyA9IHsgWl9OT19GTFVTSDogMCwgWl9QQVJUSUFMX0ZMVVNIOiAxLCBaX1NZTkNfRkxVU0g6IDIsIFpfRlVMTF9GTFVTSDogMywgWl9GSU5JU0g6IDQsIFpfQkxPQ0s6IDUsIFpfVFJFRVM6IDYsIFpfT0s6IDAsIFpfU1RSRUFNX0VORDogMSwgWl9ORUVEX0RJQ1Q6IDIsIFpfRVJSTk86IC0xLCBaX1NUUkVBTV9FUlJPUjogLTIsIFpfREFUQV9FUlJPUjogLTMsIFpfQlVGX0VSUk9SOiAtNSwgWl9OT19DT01QUkVTU0lPTjogMCwgWl9CRVNUX1NQRUVEOiAxLCBaX0JFU1RfQ09NUFJFU1NJT046IDksIFpfREVGQVVMVF9DT01QUkVTU0lPTjogLTEsIFpfRklMVEVSRUQ6IDEsIFpfSFVGRk1BTl9PTkxZOiAyLCBaX1JMRTogMywgWl9GSVhFRDogNCwgWl9ERUZBVUxUX1NUUkFURUdZOiAwLCBaX0JJTkFSWTogMCwgWl9URVhUOiAxLCBaX1VOS05PV046IDIsIFpfREVGTEFURUQ6IDggfSB9LCAiemxpYi9tZXNzYWdlcy5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsgInVzZSBzdHJpY3QiOw0KICAgICAgICAgICAgICAgICAgICAgICAgdC5leHBvcnRzID0geyAyOiAibmVlZCBkaWN0aW9uYXJ5IiwgMTogInN0cmVhbSBlbmQiLCAwOiAiIiwgIi0xIjogImZpbGUgZXJyb3IiLCAiLTIiOiAic3RyZWFtIGVycm9yIiwgIi0zIjogImRhdGEgZXJyb3IiLCAiLTQiOiAiaW5zdWZmaWNpZW50IG1lbW9yeSIsICItNSI6ICJidWZmZXIgZXJyb3IiLCAiLTYiOiAiaW5jb21wYXRpYmxlIHZlcnNpb24iIH0gfSwgInpsaWIvenN0cmVhbS5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsgInVzZSBzdHJpY3QiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgeyB0aGlzLmlucHV0ID0gbnVsbCwgdGhpcy5uZXh0X2luID0gMCwgdGhpcy5hdmFpbF9pbiA9IDAsIHRoaXMudG90YWxfaW4gPSAwLCB0aGlzLm91dHB1dCA9IG51bGwsIHRoaXMubmV4dF9vdXQgPSAwLCB0aGlzLmF2YWlsX291dCA9IDAsIHRoaXMudG90YWxfb3V0ID0gMCwgdGhpcy5tc2cgPSAiIiwgdGhpcy5zdGF0ZSA9IG51bGwsIHRoaXMuZGF0YV90eXBlID0gMiwgdGhpcy5hZGxlciA9IDAgfSB0LmV4cG9ydHMgPSBuIH0sICJ6bGliL2d6aGVhZGVyLmpzIjogZnVuY3Rpb24oZSwgdCwgcikgeyAidXNlIHN0cmljdCI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7IHRoaXMudGV4dCA9IDAsIHRoaXMudGltZSA9IDAsIHRoaXMueGZsYWdzID0gMCwgdGhpcy5vcyA9IDAsIHRoaXMuZXh0cmEgPSBudWxsLCB0aGlzLmV4dHJhX2xlbiA9IDAsIHRoaXMubmFtZSA9ICIiLCB0aGlzLmNvbW1lbnQgPSAiIiwgdGhpcy5oY3JjID0gMCwgdGhpcy5kb25lID0gITEgfSB0LmV4cG9ydHMgPSBuIH0sICJ6bGliL2FkbGVyMzIuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7ICJ1c2Ugc3RyaWN0IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlLCB0LCByLCBuKSB7IGZvciAodmFyIG8gPSA2NTUzNSAmIGUgfCAwLCBhID0gZSA+Pj4gMTYgJiA2NTUzNSB8IDAsIGkgPSAwOyAwICE9PSByOykgeyBpID0gciA+IDJlMyA/IDJlMyA6IHIsIHIgLT0gaTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbyA9IG8gKyB0W24rK10gfCAwLCBhID0gYSArIG8gfCAwOyB3aGlsZSAoLS1pKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyAlPSA2NTUyMSwgYSAlPSA2NTUyMSB9IHJldHVybiBvIHwgYSA8PCAxNiB8IDAgfSB0LmV4cG9ydHMgPSBuIH0sICJ6bGliL2NyYzMyLmpzIjogZnVuY3Rpb24oZSwgdCwgcikgeyAidXNlIHN0cmljdCI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7IGZvciAodmFyIGUsIHQgPSBbXSwgciA9IDA7IHIgPCAyNTY7IHIrKykgeyBlID0gcjsgZm9yICh2YXIgbiA9IDA7IG4gPCA4OyBuKyspIGUgPSAxICYgZSA/IDM5ODgyOTIzODQgXiBlID4+PiAxIDogZSA+Pj4gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtyXSA9IGUgfSByZXR1cm4gdCB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCwgciwgbikgeyB2YXIgbyA9IGEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuICsgcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlIF49IC0xOyBmb3IgKHZhciBzID0gbjsgcyA8IGk7IHMrKykgZSA9IGUgPj4+IDggXiBvWzI1NSAmIChlIF4gdFtzXSldOyByZXR1cm4gZSBeIC0xIH0gdmFyIGEgPSBuKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB0LmV4cG9ydHMgPSBvIH0sICJ6bGliL2luZmZhc3QuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7ICJ1c2Ugc3RyaWN0IjsgdmFyIG4gPSAzMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMTI7DQogICAgICAgICAgICAgICAgICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7IHZhciByLCBhLCBpLCBzLCBkLCBsLCB1LCBmLCBjLCBoLCBwLCB3LCBtLCBiLCB5LCBnLCB2LCBBLCBVLCB4LCBFLCBrLCBCLCBMLCBXOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnN0YXRlLCBhID0gZS5uZXh0X2luLCBMID0gZS5pbnB1dCwgaSA9IGEgKyAoZS5hdmFpbF9pbiAtIDUpLCBzID0gZS5uZXh0X291dCwgVyA9IGUub3V0cHV0LCBkID0gcyAtICh0IC0gZS5hdmFpbF9vdXQpLCBsID0gcyArIChlLmF2YWlsX291dCAtIDI1NyksIHUgPSByLmRtYXgsIGYgPSByLndzaXplLCBjID0gci53aGF2ZSwgaCA9IHIud25leHQsIHAgPSByLndpbmRvdywgdyA9IHIuaG9sZCwgbSA9IHIuYml0cywgYiA9IHIubGVuY29kZSwgeSA9IHIuZGlzdGNvZGUsIGcgPSAoMSA8PCByLmxlbmJpdHMpIC0gMSwgdiA9ICgxIDw8IHIuZGlzdGJpdHMpIC0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiBkbyB7IG0gPCAxNSAmJiAodyArPSBMW2ErK10gPDwgbSwgbSArPSA4LCB3ICs9IExbYSsrXSA8PCBtLCBtICs9IDgpLCBBID0gYlt3ICYgZ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IGZvciAoOzspIHsgaWYgKFUgPSBBID4+PiAyNCwgdyA+Pj49IFUsIG0gLT0gVSwgVSA9IEEgPj4+IDE2ICYgMjU1LCAwID09PSBVKSBXW3MrK10gPSA2NTUzNSAmIEE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgaWYgKCEoMTYgJiBVKSkgeyBpZiAoMCA9PT0gKDY0ICYgVSkpIHsgQSA9IGJbKDY1NTM1ICYgQSkgKyAodyAmICgxIDw8IFUpIC0gMSldOyBjb250aW51ZSB0IH0gaWYgKDMyICYgVSkgeyByLm1vZGUgPSBvOyBicmVhayBlIH0gZS5tc2cgPSAiaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIiwgci5tb2RlID0gbjsgYnJlYWsgZSB9IHggPSA2NTUzNSAmIEEsIFUgJj0gMTUsIFUgJiYgKG0gPCBVICYmICh3ICs9IExbYSsrXSA8PCBtLCBtICs9IDgpLCB4ICs9IHcgJiAoMSA8PCBVKSAtIDEsIHcgPj4+PSBVLCBtIC09IFUpLCBtIDwgMTUgJiYgKHcgKz0gTFthKytdIDw8IG0sIG0gKz0gOCwgdyArPSBMW2ErK10gPDwgbSwgbSArPSA4KSwgQSA9IHlbdyAmIHZdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IGZvciAoOzspIHsgaWYgKFUgPSBBID4+PiAyNCwgdyA+Pj49IFUsIG0gLT0gVSwgVSA9IEEgPj4+IDE2ICYgMjU1LCAhKDE2ICYgVSkpIHsgaWYgKDAgPT09ICg2NCAmIFUpKSB7IEEgPSB5Wyg2NTUzNSAmIEEpICsgKHcgJiAoMSA8PCBVKSAtIDEpXTsgY29udGludWUgciB9IGUubXNnID0gImludmFsaWQgZGlzdGFuY2UgY29kZSIsIHIubW9kZSA9IG47IGJyZWFrIGUgfSBpZiAoRSA9IDY1NTM1ICYgQSwgVSAmPSAxNSwgbSA8IFUgJiYgKHcgKz0gTFthKytdIDw8IG0sIG0gKz0gOCwgbSA8IFUgJiYgKHcgKz0gTFthKytdIDw8IG0sIG0gKz0gOCkpLCBFICs9IHcgJiAoMSA8PCBVKSAtIDEsIEUgPiB1KSB7IGUubXNnID0gImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIiwgci5tb2RlID0gbjsgYnJlYWsgZSB9IGlmICh3ID4+Pj0gVSwgbSAtPSBVLCBVID0gcyAtIGQsIEUgPiBVKSB7IGlmIChVID0gRSAtIFUsIFUgPiBjICYmIHIuc2FuZSkgeyBlLm1zZyA9ICJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsIHIubW9kZSA9IG47IGJyZWFrIGUgfSBpZiAoayA9IDAsIEIgPSBwLCAwID09PSBoKSB7IGlmIChrICs9IGYgLSBVLCBVIDwgeCkgeyB4IC09IFU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIFdbcysrXSA9IHBbaysrXTsgd2hpbGUgKC0tVSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBzIC0gRSwgQiA9IFcgfSB9IGVsc2UgaWYgKGggPCBVKSB7IGlmIChrICs9IGYgKyBoIC0gVSwgVSAtPSBoLCBVIDwgeCkgeyB4IC09IFU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIFdbcysrXSA9IHBbaysrXTsgd2hpbGUgKC0tVSk7IGlmIChrID0gMCwgaCA8IHgpIHsgVSA9IGgsIHggLT0gVTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIFdbcysrXSA9IHBbaysrXTsgd2hpbGUgKC0tVSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcyAtIEUsIEIgPSBXIH0gfSB9IGVsc2UgaWYgKGsgKz0gaCAtIFUsIFUgPCB4KSB7IHggLT0gVTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBXW3MrK10gPSBwW2srK107IHdoaWxlICgtLVUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBzIC0gRSwgQiA9IFcgfSBmb3IgKDsgeCA+IDI7KSBXW3MrK10gPSBCW2srK10sIFdbcysrXSA9IEJbaysrXSwgV1tzKytdID0gQltrKytdLCB4IC09IDM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICYmIChXW3MrK10gPSBCW2srK10sIHggPiAxICYmIChXW3MrK10gPSBCW2srK10pKSB9IGVsc2UgeyBrID0gcyAtIEU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBXW3MrK10gPSBXW2srK10sIFdbcysrXSA9IFdbaysrXSwgV1tzKytdID0gV1trKytdLCB4IC09IDM7IHdoaWxlICh4ID4gMik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICYmIChXW3MrK10gPSBXW2srK10sIHggPiAxICYmIChXW3MrK10gPSBXW2srK10pKSB9IGJyZWFrIH0gfSBicmVhayB9IH0gd2hpbGUgKGEgPCBpICYmIHMgPCBsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gbSA+PiAzLCBhIC09IHgsIG0gLT0geCA8PCAzLCB3ICY9ICgxIDw8IG0pIC0gMSwgZS5uZXh0X2luID0gYSwgZS5uZXh0X291dCA9IHMsIGUuYXZhaWxfaW4gPSBhIDwgaSA/IDUgKyAoaSAtIGEpIDogNSAtIChhIC0gaSksIGUuYXZhaWxfb3V0ID0gcyA8IGwgPyAyNTcgKyAobCAtIHMpIDogMjU3IC0gKHMgLSBsKSwgci5ob2xkID0gdywgci5iaXRzID0gbSB9IH0sICJ6bGliL2luZnRyZWVzLmpzIjogZnVuY3Rpb24oZSwgdCwgcikgeyAidXNlIHN0cmljdCI7IHZhciBuID0gZSgiLi4vdXRpbHMvY29tbW9uIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDE1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSA4NTIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDU5MiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gWzMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTMsIDE1LCAxNywgMTksIDIzLCAyNywgMzEsIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gWzE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAxNiwgNzIsIDc4XSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gWzEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LCA4MTkzLCAxMjI4OSwgMTYzODUsIDI0NTc3LCAwLCAwXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gWzE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE4LCAxOCwgMTksIDE5LCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLCAyMywgMjMsIDI0LCAyNCwgMjUsIDI1LCAyNiwgMjYsIDI3LCAyNywgMjgsIDI4LCAyOSwgMjksIDY0LCA2NF07DQogICAgICAgICAgICAgICAgICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCByLCBwLCB3LCBtLCBiLCB5KSB7IHZhciBnLCB2LCBBLCBVLCB4LCBFLCBrLCBCLCBMLCBXID0geS5iaXRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCA9IG51bGwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gbmV3IG4uQnVmMTYobyArIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWID0gbmV3IG4uQnVmMTYobyArIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IDA7IGZvciAoTyA9IDA7IE8gPD0gbzsgTysrKSBxW09dID0gMDsgZm9yIChNID0gMDsgTSA8IHA7IE0rKykgcVt0W3IgKyBNXV0rKzsgZm9yIChDID0gVywgUiA9IG87IFIgPj0gMSAmJiAwID09PSBxW1JdOyBSLS0pOyBpZiAoQyA+IFIgJiYgKEMgPSBSKSwgMCA9PT0gUikgcmV0dXJuIHdbbSsrXSA9IDIwOTcxNTIwLCB3W20rK10gPSAyMDk3MTUyMCwgeS5iaXRzID0gMSwgMDsgZm9yIChOID0gMTsgTiA8IFIgJiYgMCA9PT0gcVtOXTsgTisrKTsgZm9yIChDIDwgTiAmJiAoQyA9IE4pLCBUID0gMSwgTyA9IDE7IE8gPD0gbzsgTysrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVCA8PD0gMSwgVCAtPSBxW09dLCBUIDwgMCkgcmV0dXJuIC0xOyBpZiAoVCA+IDAgJiYgKGUgPT09IHMgfHwgMSAhPT0gUikpIHJldHVybiAtMTsgZm9yIChWWzFdID0gMCwgTyA9IDE7IE8gPCBvOyBPKyspIFZbTyArIDFdID0gVltPXSArIHFbT107IGZvciAoTSA9IDA7IE0gPCBwOyBNKyspIDAgIT09IHRbciArIE1dICYmIChiW1ZbdFtyICsgTV1dKytdID0gTSk7IGlmIChlID09PSBzID8gKEQgPSBaID0gYiwgRSA9IDE5KSA6IGUgPT09IGQgPyAoRCA9IHUsIEYgLT0gMjU3LCBaID0gZiwgWSAtPSAyNTcsIEUgPSAyNTYpIDogKEQgPSBjLCBaID0gaCwgRSA9IC0xKSwgUCA9IDAsIE0gPSAwLCBPID0gTiwgeCA9IG0sIEggPSBDLCBTID0gMCwgQSA9IC0xLCBJID0gMSA8PCBDLCBVID0gSSAtIDEsIGUgPT09IGQgJiYgSSA+IGEgfHwgZSA9PT0gbCAmJiBJID4gaSkgcmV0dXJuIDE7IGZvciAoOzspIHsgayA9IE8gLSBTLCBiW01dIDwgRSA/IChCID0gMCwgTCA9IGJbTV0pIDogYltNXSA+IEUgPyAoQiA9IFpbWSArIGJbTV1dLCBMID0gRFtGICsgYltNXV0pIDogKEIgPSA5NiwgTCA9IDApLCBnID0gMSA8PCBPIC0gUywgdiA9IDEgPDwgSCwgTiA9IHY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHYgLT0gZywgd1t4ICsgKFAgPj4gUykgKyB2XSA9IGsgPDwgMjQgfCBCIDw8IDE2IHwgTCB8IDA7IHdoaWxlICgwICE9PSB2KTsgZm9yIChnID0gMSA8PCBPIC0gMTsgUCAmIGc7KSBnID4+PSAxOyBpZiAoMCAhPT0gZyA/IChQICY9IGcgLSAxLCBQICs9IGcpIDogUCA9IDAsIE0rKywgMCA9PT0gLS1xW09dKSB7IGlmIChPID09PSBSKSBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSB0W3IgKyBiW01dXSB9IGlmIChPID4gQyAmJiAoUCAmIFUpICE9PSBBKSB7IGZvciAoMCA9PT0gUyAmJiAoUyA9IEMpLCB4ICs9IE4sIEggPSBPIC0gUywgVCA9IDEgPDwgSDsgSCArIFMgPCBSICYmIChUIC09IHFbSCArIFNdLCAhKFQgPD0gMCkpOykgSCsrLCBUIDw8PSAxOyBpZiAoSSArPSAxIDw8IEgsIGUgPT09IGQgJiYgSSA+IGEgfHwgZSA9PT0gbCAmJiBJID4gaSkgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gUCAmIFUsIHdbQV0gPSBDIDw8IDI0IHwgSCA8PCAxNiB8IHggLSBtIHwgMCB9IH0gcmV0dXJuIDAgIT09IFAgJiYgKHdbeCArIFBdID0gTyAtIFMgPDwgMjQgfCA2NCA8PCAxNiB8IDApLCB5LmJpdHMgPSBDLCAwIH0gfSB9OyBmb3IgKHZhciByIGluIHQpIHRbcl0uZm9sZGVyID0gci5zdWJzdHJpbmcoMCwgci5sYXN0SW5kZXhPZigiLyIpICsgMSk7IHZhciBuID0gZnVuY3Rpb24oZSkgeyB2YXIgciA9IFtdOyByZXR1cm4gZSA9IGUuc3BsaXQoIi8iKS5ldmVyeShmdW5jdGlvbihlKSB7IHJldHVybiAiLi4iID09IGUgPyByLnBvcCgpIDogIi4iID09IGUgfHwgIiIgPT0gZSB8fCByLnB1c2goZSkgfSkgPyByLmpvaW4oIi8iKSA6IG51bGwsIGUgPyB0W2VdIHx8IHRbZSArICIuanMiXSB8fCB0W2UgKyAiL2luZGV4LmpzIl0gOiBudWxsIH0sDQogICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbihlLCB0KSB7IHJldHVybiBlID8gbihlLmZvbGRlciArICJub2RlX21vZHVsZXMvIiArIHQpIHx8IG8oZS5wYXJlbnQsIHQpIDogbnVsbCB9LA0KICAgICAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24oZSwgdCkgeyB2YXIgciA9IHQubWF0Y2goL15cLy8pID8gbnVsbCA6IGUgPyB0Lm1hdGNoKC9eXC5cLj9cLy8pID8gbihlLmZvbGRlciArIHQpIDogbyhlLCB0KSA6IG4odCk7IGlmICghcikgdGhyb3cgIm1vZHVsZSBub3QgZm91bmQ6ICIgKyB0OyByZXR1cm4gci5leHBvcnRzIHx8IChyLnBhcmVudCA9IGUsIHIoYS5iaW5kKG51bGwsIHIpLCByLCByLmV4cG9ydHMgPSB7fSkpLCByLmV4cG9ydHMgfTsgcmV0dXJuIGEobnVsbCwgZSkgfSwgZGVjb21wcmVzczogZnVuY3Rpb24oZSkgeyB0aGlzLmV4cG9ydHMgfHwgKHRoaXMuZXhwb3J0cyA9IHRoaXMucmVxdWlyZSgiaW5mbGF0ZS5qcyIpKTsgdHJ5IHsgcmV0dXJuIHRoaXMuZXhwb3J0cy5pbmZsYXRlKGUpIH0gY2F0Y2ggKGUpIHt9IH0sIGhhc1VuaXR5TWFya2VyOiBmdW5jdGlvbihlKSB7IHZhciB0ID0gMTAsDQogICAgICAgICAgICAgICAgICAgIHIgPSAiVW5pdHlXZWIgQ29tcHJlc3NlZCBDb250ZW50IChnemlwKSI7IGlmICh0ID4gZS5sZW5ndGggfHwgMzEgIT0gZVswXSB8fCAxMzkgIT0gZVsxXSkgcmV0dXJuICExOyB2YXIgbiA9IGVbM107IGlmICg0ICYgbikgeyBpZiAodCArIDIgPiBlLmxlbmd0aCkgcmV0dXJuICExOyBpZiAodCArPSAyICsgZVt0XSArIChlW3QgKyAxXSA8PCA4KSwgdCA+IGUubGVuZ3RoKSByZXR1cm4gITEgfSBpZiAoOCAmIG4pIHsgZm9yICg7IHQgPCBlLmxlbmd0aCAmJiBlW3RdOykgdCsrOyBpZiAodCArIDEgPiBlLmxlbmd0aCkgcmV0dXJuICExOw0KICAgICAgICAgICAgICAgICAgICB0KysgfSByZXR1cm4gMTYgJiBuICYmIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgZS5zdWJhcnJheSh0LCB0ICsgci5sZW5ndGggKyAxKSkgPT0gciArICJcMCIgfSB9LA0KICAgICAgICBicm90bGk6IHsNCiAgICAgICAgICAgIHJlcXVpcmU6IGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICB2YXIgdCA9IHsNCiAgICAgICAgICAgICAgICAgICAgImRlY29tcHJlc3MuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7IHQuZXhwb3J0cyA9IGUoIi4vZGVjL2RlY29kZSIpLkJyb3RsaURlY29tcHJlc3NCdWZmZXIgfSwNCiAgICAgICAgICAgICAgICAgICAgImRlYy9iaXRfcmVhZGVyLmpzIjogZnVuY3Rpb24oZSwgdCwgcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7IHRoaXMuYnVmXyA9IG5ldyBVaW50OEFycmF5KGEpLCB0aGlzLmlucHV0XyA9IGUsIHRoaXMucmVzZXQoKSB9IGNvbnN0IG8gPSA0MDk2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSA4MjI0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSA4MTkxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgVWludDMyQXJyYXkoWzAsIDEsIDMsIDcsIDE1LCAzMSwgNjMsIDEyNywgMjU1LCA1MTEsIDEwMjMsIDIwNDcsIDQwOTUsIDgxOTEsIDE2MzgzLCAzMjc2NywgNjU1MzUsIDEzMTA3MSwgMjYyMTQzLCA1MjQyODcsIDEwNDg1NzUsIDIwOTcxNTEsIDQxOTQzMDMsIDgzODg2MDcsIDE2Nzc3MjE1XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBuLlJFQURfU0laRSA9IG8sIG4uSUJVRl9NQVNLID0gaSwgbi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHsgdGhpcy5idWZfcHRyXyA9IDAsIHRoaXMudmFsXyA9IDAsIHRoaXMucG9zXyA9IDAsIHRoaXMuYml0X3Bvc18gPSAwLCB0aGlzLmJpdF9lbmRfcG9zXyA9IDAsIHRoaXMuZW9zXyA9IDAsIHRoaXMucmVhZE1vcmVJbnB1dCgpOyBmb3IgKHZhciBlID0gMDsgZSA8IDQ7IGUrKykgdGhpcy52YWxfIHw9IHRoaXMuYnVmX1t0aGlzLnBvc19dIDw8IDggKiBlLCArK3RoaXMucG9zXzsgcmV0dXJuIHRoaXMuYml0X2VuZF9wb3NfID4gMCB9LCBuLnByb3RvdHlwZS5yZWFkTW9yZUlucHV0ID0gZnVuY3Rpb24oKSB7IGlmICghKHRoaXMuYml0X2VuZF9wb3NfID4gMjU2KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZW9zXykgeyBpZiAodGhpcy5iaXRfcG9zXyA+IHRoaXMuYml0X2VuZF9wb3NfKSB0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0ICIgKyB0aGlzLmJpdF9wb3NfICsgIiAiICsgdGhpcy5iaXRfZW5kX3Bvc18pIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgdmFyIGUgPSB0aGlzLmJ1Zl9wdHJfLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuaW5wdXRfLnJlYWQodGhpcy5idWZfLCBlLCBvKTsgaWYgKHQgPCAwKSB0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0Iik7IGlmICh0IDwgbykgeyB0aGlzLmVvc18gPSAxOyBmb3IgKHZhciByID0gMDsgciA8IDMyOyByKyspIHRoaXMuYnVmX1tlICsgdCArIHJdID0gMCB9IGlmICgwID09PSBlKSB7IGZvciAodmFyIHIgPSAwOyByIDwgMzI7IHIrKykgdGhpcy5idWZfWzgxOTIgKyByXSA9IHRoaXMuYnVmX1tyXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnVmX3B0cl8gPSBvIH0gZWxzZSB0aGlzLmJ1Zl9wdHJfID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iaXRfZW5kX3Bvc18gKz0gdCA8PCAzIH0gfSwgbi5wcm90b3R5cGUuZmlsbEJpdFdpbmRvdyA9IGZ1bmN0aW9uKCkgeyBmb3IgKDsgdGhpcy5iaXRfcG9zXyA+PSA4OykgdGhpcy52YWxfID4+Pj0gOCwgdGhpcy52YWxfIHw9IHRoaXMuYnVmX1t0aGlzLnBvc18gJiBpXSA8PCAyNCwgKyt0aGlzLnBvc18sIHRoaXMuYml0X3Bvc18gPSB0aGlzLmJpdF9wb3NfIC0gOCA+Pj4gMCwgdGhpcy5iaXRfZW5kX3Bvc18gPSB0aGlzLmJpdF9lbmRfcG9zXyAtIDggPj4+IDAgfSwgbi5wcm90b3R5cGUucmVhZEJpdHMgPSBmdW5jdGlvbihlKSB7IDMyIC0gdGhpcy5iaXRfcG9zXyA8IGUgJiYgdGhpcy5maWxsQml0V2luZG93KCk7IHZhciB0ID0gdGhpcy52YWxfID4+PiB0aGlzLmJpdF9wb3NfICYgc1tlXTsgcmV0dXJuIHRoaXMuYml0X3Bvc18gKz0gZSwgdCB9LCB0LmV4cG9ydHMgPSBuIH0sDQogICAgICAgICAgICAgICAgICAgICJkZWMvY29udGV4dC5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHIubG9va3VwID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDQsIDAsIDAsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgsIDEyLCAxNiwgMTIsIDEyLCAyMCwgMTIsIDE2LCAyNCwgMjgsIDEyLCAxMiwgMzIsIDEyLCAzNiwgMTIsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAzMiwgMzIsIDI0LCA0MCwgMjgsIDEyLCAxMiwgNDgsIDUyLCA1MiwgNTIsIDQ4LCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAyNCwgMTIsIDI4LCAxMiwgMTIsIDEyLCA1NiwgNjAsIDYwLCA2MCwgNTYsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDI0LCAxMiwgMjgsIDEyLCAwLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCAxLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA3LCAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDU2LCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA3LCA3LCA3LCA3LCA4LCA4LCA4LCA4LCA5LCA5LCA5LCA5LCAxMCwgMTAsIDEwLCAxMCwgMTEsIDExLCAxMSwgMTEsIDEyLCAxMiwgMTIsIDEyLCAxMywgMTMsIDEzLCAxMywgMTQsIDE0LCAxNCwgMTQsIDE1LCAxNSwgMTUsIDE1LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAyMiwgMjIsIDIyLCAyMiwgMjMsIDIzLCAyMywgMjMsIDI0LCAyNCwgMjQsIDI0LCAyNSwgMjUsIDI1LCAyNSwgMjYsIDI2LCAyNiwgMjYsIDI3LCAyNywgMjcsIDI3LCAyOCwgMjgsIDI4LCAyOCwgMjksIDI5LCAyOSwgMjksIDMwLCAzMCwgMzAsIDMwLCAzMSwgMzEsIDMxLCAzMSwgMzIsIDMyLCAzMiwgMzIsIDMzLCAzMywgMzMsIDMzLCAzNCwgMzQsIDM0LCAzNCwgMzUsIDM1LCAzNSwgMzUsIDM2LCAzNiwgMzYsIDM2LCAzNywgMzcsIDM3LCAzNywgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOSwgMzksIDM5LCA0MCwgNDAsIDQwLCA0MCwgNDEsIDQxLCA0MSwgNDEsIDQyLCA0MiwgNDIsIDQyLCA0MywgNDMsIDQzLCA0MywgNDQsIDQ0LCA0NCwgNDQsIDQ1LCA0NSwgNDUsIDQ1LCA0NiwgNDYsIDQ2LCA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNDksIDQ5LCA0OSwgNTAsIDUwLCA1MCwgNTAsIDUxLCA1MSwgNTEsIDUxLCA1MiwgNTIsIDUyLCA1MiwgNTMsIDUzLCA1MywgNTMsIDU0LCA1NCwgNTQsIDU0LCA1NSwgNTUsIDU1LCA1NSwgNTYsIDU2LCA1NiwgNTYsIDU3LCA1NywgNTcsIDU3LCA1OCwgNTgsIDU4LCA1OCwgNTksIDU5LCA1OSwgNTksIDYwLCA2MCwgNjAsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYzLCA2MywgNjMsIDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5sb29rdXBPZmZzZXRzID0gbmV3IFVpbnQxNkFycmF5KFsxMDI0LCAxNTM2LCAxMjgwLCAxNTM2LCAwLCAyNTYsIDc2OCwgNTEyXSkNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgImRlYy9kZWNvZGUuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUpIHsgdmFyIHQ7IHJldHVybiAwID09PSBlLnJlYWRCaXRzKDEpID8gMTYgOiAodCA9IGUucmVhZEJpdHMoMyksIHQgPiAwID8gMTcgKyB0IDogKHQgPSBlLnJlYWRCaXRzKDMpLCB0ID4gMCA/IDggKyB0IDogMTcpKSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSkgeyBpZiAoZS5yZWFkQml0cygxKSkgeyB2YXIgdCA9IGUucmVhZEJpdHMoMyk7IHJldHVybiAwID09PSB0ID8gMSA6IGUucmVhZEJpdHModCkgKyAoMSA8PCB0KSB9IHJldHVybiAwIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHsgdGhpcy5tZXRhX2Jsb2NrX2xlbmd0aCA9IDAsIHRoaXMuaW5wdXRfZW5kID0gMCwgdGhpcy5pc191bmNvbXByZXNzZWQgPSAwLCB0aGlzLmlzX21ldGFkYXRhID0gITEgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsgdmFyIHQsIHIsIG4sIG8gPSBuZXcgYTsgaWYgKG8uaW5wdXRfZW5kID0gZS5yZWFkQml0cygxKSwgby5pbnB1dF9lbmQgJiYgZS5yZWFkQml0cygxKSkgcmV0dXJuIG87IGlmICh0ID0gZS5yZWFkQml0cygyKSArIDQsIDcgPT09IHQpIHsgaWYgKG8uaXNfbWV0YWRhdGEgPSAhMCwgMCAhPT0gZS5yZWFkQml0cygxKSkgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJlc2VydmVkIGJpdCIpOyBpZiAociA9IGUucmVhZEJpdHMoMiksIDAgPT09IHIpIHJldHVybiBvOyBmb3IgKG4gPSAwOyBuIDwgcjsgbisrKSB7IHZhciBpID0gZS5yZWFkQml0cyg4KTsgaWYgKG4gKyAxID09PSByICYmIHIgPiAxICYmIDAgPT09IGkpIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzaXplIGJ5dGUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubWV0YV9ibG9ja19sZW5ndGggfD0gaSA8PCA4ICogbiB9IH0gZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgdDsgKytuKSB7IHZhciBzID0gZS5yZWFkQml0cyg0KTsgaWYgKG4gKyAxID09PSB0ICYmIHQgPiA0ICYmIDAgPT09IHMpIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzaXplIG5pYmJsZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5tZXRhX2Jsb2NrX2xlbmd0aCB8PSBzIDw8IDQgKiBuIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKytvLm1ldGFfYmxvY2tfbGVuZ3RoLCBvLmlucHV0X2VuZCB8fCBvLmlzX21ldGFkYXRhIHx8IChvLmlzX3VuY29tcHJlc3NlZCA9IGUucmVhZEJpdHMoMSkpLCBvIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlLCB0LCByKSB7IHZhciBuOyByZXR1cm4gci5maWxsQml0V2luZG93KCksIHQgKz0gci52YWxfID4+PiByLmJpdF9wb3NfICYgRCwgbiA9IGVbdF0uYml0cyAtIFAsIG4gPiAwICYmIChyLmJpdF9wb3NfICs9IFAsIHQgKz0gZVt0XS52YWx1ZSwgdCArPSByLnZhbF8gPj4+IHIuYml0X3Bvc18gJiAoMSA8PCBuKSAtIDEpLCByLmJpdF9wb3NfICs9IGVbdF0uYml0cywgZVt0XS52YWx1ZSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoZSwgdCwgciwgbikgeyBmb3IgKHZhciBvID0gMCwgYSA9IE4sIGkgPSAwLCBzID0gMCwgZCA9IDMyNzY4LCBsID0gW10sIHUgPSAwOyB1IDwgMzI7IHUrKykgbC5wdXNoKG5ldyBCKDAsIDApKTsgZm9yIChMKGwsIDAsIDUsIGUsIHEpOyBvIDwgdCAmJiBkID4gMDspIHsgdmFyIGYsIGMgPSAwOyBpZiAobi5yZWFkTW9yZUlucHV0KCksIG4uZmlsbEJpdFdpbmRvdygpLCBjICs9IG4udmFsXyA+Pj4gbi5iaXRfcG9zXyAmIDMxLCBuLmJpdF9wb3NfICs9IGxbY10uYml0cywgZiA9IDI1NSAmIGxbY10udmFsdWUsIGYgPCBSKSBpID0gMCwgcltvKytdID0gZiwgMCAhPT0gZiAmJiAoYSA9IGYsIGQgLT0gMzI3NjggPj4gZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyB2YXIgaCwgcCwgdyA9IGYgLSAxNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMDsgaWYgKGYgPT09IFIgJiYgKG0gPSBhKSwgcyAhPT0gbSAmJiAoaSA9IDAsIHMgPSBtKSwgaCA9IGksIGkgPiAwICYmIChpIC09IDIsIGkgPDw9IHcpLCBpICs9IG4ucmVhZEJpdHModykgKyAzLCBwID0gaSAtIGgsIG8gKyBwID4gdCkgdGhyb3cgbmV3IEVycm9yKCJbUmVhZEh1ZmZtYW5Db2RlTGVuZ3Roc10gc3ltYm9sICsgcmVwZWF0X2RlbHRhID4gbnVtX3N5bWJvbHMiKTsgZm9yICh2YXIgYiA9IDA7IGIgPCBwOyBiKyspIHJbbyArIGJdID0gczsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gKz0gcCwgMCAhPT0gcyAmJiAoZCAtPSBwIDw8IDE1IC0gcykgfSB9IGlmICgwICE9PSBkKSB0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVMZW5ndGhzXSBzcGFjZSA9ICIgKyBkKTsgZm9yICg7IG8gPCB0OyBvKyspIHJbb10gPSAwIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0LCByLCBuKSB7IHZhciBvLCBhID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBVaW50OEFycmF5KGUpOyBpZiAobi5yZWFkTW9yZUlucHV0KCksIG8gPSBuLnJlYWRCaXRzKDIpLCAxID09PSBvKSB7IGZvciAodmFyIHMsIGwgPSBlIC0gMSwgdSA9IDAsIGYgPSBuZXcgSW50MzJBcnJheSg0KSwgYyA9IG4ucmVhZEJpdHMoMikgKyAxOyBsOykgbCA+Pj0gMSwgKyt1OyBmb3IgKHMgPSAwOyBzIDwgYzsgKytzKSBmW3NdID0gbi5yZWFkQml0cyh1KSAlIGUsIGlbZltzXV0gPSAyOyBzd2l0Y2ggKGlbZlswXV0gPSAxLCBjKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZbMF0gPT09IGZbMV0gfHwgZlswXSA9PT0gZlsyXSB8fCBmWzFdID09PSBmWzJdKSB0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgc3ltYm9scyIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZlswXSA9PT0gZlsxXSkgdGhyb3cgbmV3IEVycm9yKCJbUmVhZEh1ZmZtYW5Db2RlXSBpbnZhbGlkIHN5bWJvbHMiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpW2ZbMV1dID0gMTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZbMF0gPT09IGZbMV0gfHwgZlswXSA9PT0gZlsyXSB8fCBmWzBdID09PSBmWzNdIHx8IGZbMV0gPT09IGZbMl0gfHwgZlsxXSA9PT0gZlszXSB8fCBmWzJdID09PSBmWzNdKSB0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgc3ltYm9scyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVhZEJpdHMoMSkgPyAoaVtmWzJdXSA9IDMsIGlbZlszXV0gPSAzKSA6IGlbZlswXV0gPSAyIH0gfSBlbHNlIHsgdmFyIHMsIGggPSBuZXcgVWludDhBcnJheShxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAzMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IFtuZXcgQigyLCAwKSwgbmV3IEIoMiwgNCksIG5ldyBCKDIsIDMpLCBuZXcgQigzLCAyKSwgbmV3IEIoMiwgMCksIG5ldyBCKDIsIDQpLCBuZXcgQigyLCAzKSwgbmV3IEIoNCwgMSksIG5ldyBCKDIsIDApLCBuZXcgQigyLCA0KSwgbmV3IEIoMiwgMyksIG5ldyBCKDMsIDIpLCBuZXcgQigyLCAwKSwgbmV3IEIoMiwgNCksIG5ldyBCKDIsIDMpLCBuZXcgQig0LCA1KV07IGZvciAocyA9IG87IHMgPCBxICYmIHAgPiAwOyArK3MpIHsgdmFyIGIsIHkgPSBWW3NdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5maWxsQml0V2luZG93KCksIGcgKz0gbi52YWxfID4+PiBuLmJpdF9wb3NfICYgMTUsIG4uYml0X3Bvc18gKz0gbVtnXS5iaXRzLCBiID0gbVtnXS52YWx1ZSwgaFt5XSA9IGIsIDAgIT09IGIgJiYgKHAgLT0gMzIgPj4gYiwgKyt3KSB9IGlmICgxICE9PSB3ICYmIDAgIT09IHApIHRocm93IG5ldyBFcnJvcigiW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBudW1fY29kZXMgb3Igc3BhY2UiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZChoLCBlLCBpLCBuKSB9IGlmIChhID0gTCh0LCByLCBQLCBpLCBlKSwgMCA9PT0gYSkgdGhyb3cgbmV3IEVycm9yKCJbUmVhZEh1ZmZtYW5Db2RlXSBCdWlsZEh1ZmZtYW5UYWJsZSBmYWlsZWQ6ICIpOyByZXR1cm4gYSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCwgcikgeyB2YXIgbiwgbzsgcmV0dXJuIG4gPSBzKGUsIHQsIHIpLCBvID0gTy5rQmxvY2tMZW5ndGhQcmVmaXhDb2RlW25dLm5iaXRzLCBPLmtCbG9ja0xlbmd0aFByZWZpeENvZGVbbl0ub2Zmc2V0ICsgci5yZWFkQml0cyhvKSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCwgcikgeyB2YXIgbjsgcmV0dXJuIGUgPCBaID8gKHIgKz0gWVtlXSwgciAmPSAzLCBuID0gdFtyXSArIHpbZV0pIDogbiA9IGUgLSBaICsgMSwgbiB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgeyBmb3IgKHZhciByID0gZVt0XSwgbiA9IHQ7IG47IC0tbikgZVtuXSA9IGVbbiAtIDFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbMF0gPSByIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7IHZhciByLCBuID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsgZm9yIChyID0gMDsgciA8IDI1NjsgKytyKSBuW3JdID0gcjsgZm9yIChyID0gMDsgciA8IHQ7ICsrcikgeyB2YXIgbyA9IGVbcl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbcl0gPSBuW29dLCBvICYmIGMobiwgbykgfSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSwgdCkgeyB0aGlzLmFscGhhYmV0X3NpemUgPSBlLCB0aGlzLm51bV9odHJlZXMgPSB0LCB0aGlzLmNvZGVzID0gbmV3IEFycmF5KHQgKyB0ICogR1tlICsgMzEgPj4+IDVdKSwgdGhpcy5odHJlZXMgPSBuZXcgVWludDMyQXJyYXkodCkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQpIHsgdmFyIHIsIG4sIGEsIGkgPSB7IG51bV9odHJlZXM6IG51bGwsIGNvbnRleHRfbWFwOiBudWxsIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVhZE1vcmVJbnB1dCgpOyB2YXIgdSA9IGkubnVtX2h0cmVlcyA9IG8odCkgKyAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaS5jb250ZXh0X21hcCA9IG5ldyBVaW50OEFycmF5KGUpOyBpZiAodSA8PSAxKSByZXR1cm4gaTsgZm9yIChyID0gdC5yZWFkQml0cygxKSwgciAmJiAoZCA9IHQucmVhZEJpdHMoNCkgKyAxKSwgbiA9IFtdLCBhID0gMDsgYSA8IEY7IGErKykgblthXSA9IG5ldyBCKDAsIDApOyBmb3IgKGwodSArIGQsIG4sIDAsIHQpLCBhID0gMDsgYSA8IGU7KSB7IHZhciBjOyBpZiAodC5yZWFkTW9yZUlucHV0KCksIGMgPSBzKG4sIDAsIHQpLCAwID09PSBjKSBmW2FdID0gMCwgKythOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjIDw9IGQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMSArICgxIDw8IGMpICsgdC5yZWFkQml0cyhjKTsgLS1wOykgeyBpZiAoYSA+PSBlKSB0aHJvdyBuZXcgRXJyb3IoIltEZWNvZGVDb250ZXh0TWFwXSBpID49IGNvbnRleHRfbWFwX3NpemUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmW2FdID0gMCwgKythIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBmW2FdID0gYyAtIGQsICsrYSB9IHJldHVybiB0LnJlYWRCaXRzKDEpICYmIGgoZiwgZSksIGkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUsIHQsIHIsIG4sIG8sIGEsIGkpIHsgdmFyIGQsIGwgPSAyICogciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBzKHQsIHIgKiBGLCBpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMCA9PT0gZiA/IG9bbCArICgxICYgYVt1XSldIDogMSA9PT0gZiA/IG9bbCArIChhW3VdIC0gMSAmIDEpXSArIDEgOiBmIC0gMiwgZCA+PSBlICYmIChkIC09IGUpLCBuW3JdID0gZCwgb1tsICsgKDEgJiBhW3VdKV0gPSBkLCArK2FbdV0gfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGUsIHQsIHIsIG4sIG8sIGEpIHsgdmFyIGksIHMgPSBvICsgMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHIgJiBvLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5wb3NfICYgRS5JQlVGX01BU0s7IGlmICh0IDwgOCB8fCBhLmJpdF9wb3NfICsgKHQgPDwgMykgPCBhLmJpdF9lbmRfcG9zXykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQtLSA+IDA7KSBhLnJlYWRNb3JlSW5wdXQoKSwgbltkKytdID0gYS5yZWFkQml0cyg4KSwgZCA9PT0gcyAmJiAoZS53cml0ZShuLCBzKSwgZCA9IDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBpZiAoYS5iaXRfZW5kX3Bvc18gPCAzMikgdGhyb3cgbmV3IEVycm9yKCJbQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXRdIGJyLmJpdF9lbmRfcG9zXyA8IDMyIik7IGZvciAoOyBhLmJpdF9wb3NfIDwgMzI7KSBuW2RdID0gYS52YWxfID4+PiBhLmJpdF9wb3NfLCBhLmJpdF9wb3NfICs9IDgsICsrZCwgLS10OyBpZiAoaSA9IGEuYml0X2VuZF9wb3NfIC0gYS5iaXRfcG9zXyA+PiAzLCBsICsgaSA+IEUuSUJVRl9NQVNLKSB7IGZvciAodmFyIHUgPSBFLklCVUZfTUFTSyArIDEgLSBsLCBmID0gMDsgZiA8IHU7IGYrKykgbltkICsgZl0gPSBhLmJ1Zl9bbCArIGZdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSB1LCBkICs9IHUsIHQgLT0gdSwgbCA9IDAgfSBmb3IgKHZhciBmID0gMDsgZiA8IGk7IGYrKykgbltkICsgZl0gPSBhLmJ1Zl9bbCArIGZdOyBpZiAoZCArPSBpLCB0IC09IGksIGQgPj0gcykgeyBlLndyaXRlKG4sIHMpLCBkIC09IHM7IGZvciAodmFyIGYgPSAwOyBmIDwgZDsgZisrKSBuW2ZdID0gbltzICsgZl0gfSBmb3IgKDsgZCArIHQgPj0gczspIHsgaWYgKGkgPSBzIC0gZCwgYS5pbnB1dF8ucmVhZChuLCBkLCBpKSA8IGkpIHRocm93IG5ldyBFcnJvcigiW0NvcHlVbmNvbXByZXNzZWRCbG9ja1RvT3V0cHV0XSBub3QgZW5vdWdoIGJ5dGVzIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLndyaXRlKG4sIHMpLCB0IC09IGksIGQgPSAwIH0gaWYgKGEuaW5wdXRfLnJlYWQobiwgZCwgdCkgPCB0KSB0aHJvdyBuZXcgRXJyb3IoIltDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dF0gbm90IGVub3VnaCBieXRlcyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnJlc2V0KCkgfSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHkoZSkgeyB2YXIgdCA9IGUuYml0X3Bvc18gKyA3ICYgLTgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnJlYWRCaXRzKHQgLSBlLmJpdF9wb3NfKTsgcmV0dXJuIDAgPT0gciB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSkgeyB2YXIgdCA9IG5ldyBVKGUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbmV3IEUodCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbihyKTsgdmFyIG8gPSBpKHIpOyByZXR1cm4gby5tZXRhX2Jsb2NrX2xlbmd0aCB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYoZSwgdCkgeyB2YXIgciA9IG5ldyBVKGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gdCAmJiAodCA9IGcoZSkpOyB2YXIgbiA9IG5ldyBVaW50OEFycmF5KHQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbmV3IHgobik7IHJldHVybiBBKHIsIG8pLCBvLnBvcyA8IG8uYnVmZmVyLmxlbmd0aCAmJiAoby5idWZmZXIgPSBvLmJ1ZmZlci5zdWJhcnJheSgwLCBvLnBvcykpLCBvLmJ1ZmZlciB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEEoZSwgdCkgeyB2YXIgciwgYSwgZCwgYywgaCwgZywgdiwgQSwgVSwgeCA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAgPSBbMTYsIDE1LCAxMSwgNF0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgViA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFkgPSBbbmV3IHAoMCwgMCksIG5ldyBwKDAsIDApLCBuZXcgcCgwLCAwKV07IGNvbnN0IHogPSAxMjggKyBFLlJFQURfU0laRTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gbmV3IEUoZSksIE4gPSBuKFUpLCBhID0gKDEgPDwgTikgLSAxNiwgZCA9IDEgPDwgTiwgYyA9IGQgLSAxLCBoID0gbmV3IFVpbnQ4QXJyYXkoZCArIHogKyBrLm1heERpY3Rpb25hcnlXb3JkTGVuZ3RoKSwgZyA9IGQsIHYgPSBbXSwgQSA9IFtdOyBmb3IgKHZhciBHID0gMDsgRyA8IDMyNDA7IEcrKykgdltHXSA9IG5ldyBCKDAsIDApLCBBW0ddID0gbmV3IEIoMCwgMCk7IGZvciAoOyAhTDspIHsgdmFyIEosIGosIFgsIEssIFEsIF8sICQsIGVlLCB0ZSwgcmUgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmUgPSBbMSA8PCAyOCwgMSA8PCAyOCwgMSA8PCAyOF0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZSA9IFswXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlID0gWzEsIDEsIDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWUgPSBbMCwgMSwgMCwgMSwgMCwgMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZSA9IFswXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVlID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllID0gMDsgZm9yIChyID0gMDsgciA8IDM7ICsrcikgWVtyXS5jb2RlcyA9IG51bGwsIFlbcl0uaHRyZWVzID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5yZWFkTW9yZUlucHV0KCk7IHZhciBnZSA9IGkoVSk7IGlmIChyZSA9IGdlLm1ldGFfYmxvY2tfbGVuZ3RoLCB4ICsgcmUgPiB0LmJ1ZmZlci5sZW5ndGgpIHsgdmFyIHZlID0gbmV3IFVpbnQ4QXJyYXkoeCArIHJlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlLnNldCh0LmJ1ZmZlciksIHQuYnVmZmVyID0gdmUgfSBpZiAoTCA9IGdlLmlucHV0X2VuZCwgSiA9IGdlLmlzX3VuY29tcHJlc3NlZCwgZ2UuaXNfbWV0YWRhdGEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHkoVSk7IHJlID4gMDsgLS1yZSkgVS5yZWFkTW9yZUlucHV0KCksIFUucmVhZEJpdHMoOCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKDAgIT09IHJlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEopIFUuYml0X3Bvc18gPSBVLmJpdF9wb3NfICsgNyAmIC04LCBiKHQsIHJlLCB4LCBoLCBjLCBVKSwgeCArPSByZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBmb3IgKHIgPSAwOyByIDwgMzsgKytyKSBhZVtyXSA9IG8oVSkgKyAxLCBhZVtyXSA+PSAyICYmIChsKGFlW3JdICsgMiwgdiwgciAqIEYsIFUpLCBsKFMsIEEsIHIgKiBGLCBVKSwgbmVbcl0gPSB1KEEsIHIgKiBGLCBVKSwgc2Vbcl0gPSAxKTsgZm9yIChVLnJlYWRNb3JlSW5wdXQoKSwgaiA9IFUucmVhZEJpdHMoMiksIFggPSBaICsgKFUucmVhZEJpdHMoNCkgPDwgaiksIEsgPSAoMSA8PCBqKSAtIDEsIFEgPSBYICsgKDQ4IDw8IGopLCBsZSA9IG5ldyBVaW50OEFycmF5KGFlWzBdKSwgciA9IDA7IHIgPCBhZVswXTsgKytyKSBVLnJlYWRNb3JlSW5wdXQoKSwgbGVbcl0gPSBVLnJlYWRCaXRzKDIpIDw8IDE7IHZhciBBZSA9IHcoYWVbMF0gPDwgVCwgVSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IEFlLm51bV9odHJlZXMsIGRlID0gQWUuY29udGV4dF9tYXA7IHZhciBVZSA9IHcoYWVbMl0gPDwgSSwgVSk7IGZvciAoJCA9IFVlLm51bV9odHJlZXMsIHVlID0gVWUuY29udGV4dF9tYXAsIFlbMF0gPSBuZXcgcChDLCBfKSwgWVsxXSA9IG5ldyBwKEgsIGFlWzFdKSwgWVsyXSA9IG5ldyBwKFEsICQpLCByID0gMDsgciA8IDM7ICsrcikgWVtyXS5kZWNvZGUoVSk7IGZvciAoY2UgPSAwLCB3ZSA9IDAsIGVlID0gbGVbb2VbMF1dLCBiZSA9IFcubG9va3VwT2Zmc2V0c1tlZV0sIHllID0gVy5sb29rdXBPZmZzZXRzW2VlICsgMV0sIHRlID0gWVsxXS5odHJlZXNbMF07IHJlID4gMDspIHsgdmFyIHhlLCBFZSwga2UsIEJlLCBMZSwgV2UsIE9lLCBNZSwgTmUsIFJlLCBDZTsgZm9yIChVLnJlYWRNb3JlSW5wdXQoKSwgMCA9PT0gbmVbMV0gJiYgKG0oYWVbMV0sIHYsIDEsIG9lLCBpZSwgc2UsIFUpLCBuZVsxXSA9IHUoQSwgRiwgVSksIHRlID0gWVsxXS5odHJlZXNbb2VbMV1dKSwgLS1uZVsxXSwgeGUgPSBzKFlbMV0uY29kZXMsIHRlLCBVKSwgRWUgPSB4ZSA+PiA2LCBFZSA+PSAyID8gKEVlIC09IDIsIE9lID0gLTEpIDogT2UgPSAwLCBrZSA9IE8ua0luc2VydFJhbmdlTHV0W0VlXSArICh4ZSA+PiAzICYgNyksIEJlID0gTy5rQ29weVJhbmdlTHV0W0VlXSArICg3ICYgeGUpLCBMZSA9IE8ua0luc2VydExlbmd0aFByZWZpeENvZGVba2VdLm9mZnNldCArIFUucmVhZEJpdHMoTy5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZVtrZV0ubmJpdHMpLCBXZSA9IE8ua0NvcHlMZW5ndGhQcmVmaXhDb2RlW0JlXS5vZmZzZXQgKyBVLnJlYWRCaXRzKE8ua0NvcHlMZW5ndGhQcmVmaXhDb2RlW0JlXS5uYml0cyksIHEgPSBoW3ggLSAxICYgY10sIFYgPSBoW3ggLSAyICYgY10sIFJlID0gMDsgUmUgPCBMZTsgKytSZSkgVS5yZWFkTW9yZUlucHV0KCksIDAgPT09IG5lWzBdICYmIChtKGFlWzBdLCB2LCAwLCBvZSwgaWUsIHNlLCBVKSwgbmVbMF0gPSB1KEEsIDAsIFUpLCBmZSA9IG9lWzBdIDw8IFQsIGNlID0gZmUsIGVlID0gbGVbb2VbMF1dLCBiZSA9IFcubG9va3VwT2Zmc2V0c1tlZV0sIHllID0gVy5sb29rdXBPZmZzZXRzW2VlICsgMV0pLCBOZSA9IFcubG9va3VwW2JlICsgcV0gfCBXLmxvb2t1cFt5ZSArIFZdLCBoZSA9IGRlW2NlICsgTmVdLCAtLW5lWzBdLCBWID0gcSwgcSA9IHMoWVswXS5jb2RlcywgWVswXS5odHJlZXNbaGVdLCBVKSwgaFt4ICYgY10gPSBxLCAoeCAmIGMpID09PSBjICYmIHQud3JpdGUoaCwgZCksICsreDsgaWYgKHJlIC09IExlLCByZSA8PSAwKSBicmVhazsgaWYgKE9lIDwgMCkgeyB2YXIgTmU7IGlmIChVLnJlYWRNb3JlSW5wdXQoKSwgMCA9PT0gbmVbMl0gJiYgKG0oYWVbMl0sIHYsIDIsIG9lLCBpZSwgc2UsIFUpLCBuZVsyXSA9IHUoQSwgMjE2MCwgVSksIHBlID0gb2VbMl0gPDwgSSwgd2UgPSBwZSksIC0tbmVbMl0sIE5lID0gMjU1ICYgKFdlID4gNCA/IDMgOiBXZSAtIDIpLCBtZSA9IHVlW3dlICsgTmVdLCBPZSA9IHMoWVsyXS5jb2RlcywgWVsyXS5odHJlZXNbbWVdLCBVKSwgT2UgPj0gWCkgeyB2YXIgSGUsIFNlLCBUZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZSAtPSBYLCBTZSA9IE9lICYgSywgT2UgPj49IGosIEhlID0gKE9lID4+IDEpICsgMSwgVGUgPSAoMiArICgxICYgT2UpIDw8IEhlKSAtIDQsIE9lID0gWCArIChUZSArIFUucmVhZEJpdHMoSGUpIDw8IGopICsgU2UgfSB9IGlmIChNZSA9IGYoT2UsIFAsIEQpLCBNZSA8IDApIHRocm93IG5ldyBFcnJvcigiW0Jyb3RsaURlY29tcHJlc3NdIGludmFsaWQgZGlzdGFuY2UiKTsgaWYgKFIgPSB4IDwgYSAmJiBSICE9PSBhID8geCA6IGEsIENlID0geCAmIGMsIE1lID4gUikgeyBpZiAoIShXZSA+PSBrLm1pbkRpY3Rpb25hcnlXb3JkTGVuZ3RoICYmIFdlIDw9IGsubWF4RGljdGlvbmFyeVdvcmRMZW5ndGgpKSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlLiBwb3M6ICIgKyB4ICsgIiBkaXN0YW5jZTogIiArIE1lICsgIiBsZW46ICIgKyBXZSArICIgYnl0ZXMgbGVmdDogIiArIHJlKTsgdmFyIFRlID0gay5vZmZzZXRzQnlMZW5ndGhbV2VdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEllID0gTWUgLSBSIC0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZSA9IGsuc2l6ZUJpdHNCeUxlbmd0aFtXZV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGUgPSAoMSA8PCBQZSkgLSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlID0gSWUgJiBEZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxZSA9IEllID4+IFBlOyBpZiAoVGUgKz0gRmUgKiBXZSwgIShxZSA8IE0ua051bVRyYW5zZm9ybXMpKSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlLiBwb3M6ICIgKyB4ICsgIiBkaXN0YW5jZTogIiArIE1lICsgIiBsZW46ICIgKyBXZSArICIgYnl0ZXMgbGVmdDogIiArIHJlKTsgdmFyIFZlID0gTS50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChoLCBDZSwgVGUsIFdlLCBxZSk7IGlmIChDZSArPSBWZSwgeCArPSBWZSwgcmUgLT0gVmUsIENlID49IGcpIHsgdC53cml0ZShoLCBkKTsgZm9yICh2YXIgWmUgPSAwOyBaZSA8IENlIC0gZzsgWmUrKykgaFtaZV0gPSBoW2cgKyBaZV0gfSB9IGVsc2UgeyBpZiAoT2UgPiAwICYmIChQWzMgJiBEXSA9IE1lLCArK0QpLCBXZSA+IHJlKSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlLiBwb3M6ICIgKyB4ICsgIiBkaXN0YW5jZTogIiArIE1lICsgIiBsZW46ICIgKyBXZSArICIgYnl0ZXMgbGVmdDogIiArIHJlKTsgZm9yIChSZSA9IDA7IFJlIDwgV2U7ICsrUmUpIGhbeCAmIGNdID0gaFt4IC0gTWUgJiBjXSwgKHggJiBjKSA9PT0gYyAmJiB0LndyaXRlKGgsIGQpLCArK3gsIC0tcmUgfSBxID0gaFt4IC0gMSAmIGNdLCBWID0gaFt4IC0gMiAmIGNdIH0geCAmPSAxMDczNzQxODIzIH0gfSB0LndyaXRlKGgsIHggJiBjKSB9IHZhciBVID0gZSgiLi9zdHJlYW1zIikuQnJvdGxpSW5wdXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGUoIi4vc3RyZWFtcyIpLkJyb3RsaU91dHB1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gZSgiLi9iaXRfcmVhZGVyIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGUoIi4vZGljdGlvbmFyeSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBlKCIuL2h1ZmZtYW4iKS5IdWZmbWFuQ29kZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMID0gZSgiLi9odWZmbWFuIikuQnJvdGxpQnVpbGRIdWZmbWFuVGFibGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgVyA9IGUoIi4vY29udGV4dCIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBlKCIuL3ByZWZpeCIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSBlKCIuL3RyYW5zZm9ybSIpOyBjb25zdCBOID0gOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gMTYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IDI1NiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gNzA0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSAyNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0gMjU1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYgPSAxMDgwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEgPSAxOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDMsIDQsIDAsIDUsIDE3LCA2LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFogPSAxNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZID0gbmV3IFVpbnQ4QXJyYXkoWzMsIDIsIDEsIDAsIDMsIDMsIDMsIDMsIDMsIDMsIDIsIDIsIDIsIDIsIDIsIDJdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ID0gbmV3IEludDhBcnJheShbMCwgMCwgMCwgMCwgLTEsIDEsIC0yLCAyLCAtMywgMywgLTEsIDEsIC0yLCAyLCAtMywgM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcgPSBuZXcgVWludDE2QXJyYXkoWzI1NiwgNDAyLCA0MzYsIDQ2OCwgNTAwLCA1MzQsIDU2NiwgNTk4LCA2MzAsIDY2MiwgNjk0LCA3MjYsIDc1OCwgNzkwLCA4MjIsIDg1NCwgODg2LCA5MjAsIDk1MiwgOTg0LCAxMDE2LCAxMDQ4LCAxMDgwXSk7DQogICAgICAgICAgICAgICAgICAgICAgICBwLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihlKSB7IHZhciB0LCByLCBuID0gMDsgZm9yICh0ID0gMDsgdCA8IHRoaXMubnVtX2h0cmVlczsgKyt0KSB0aGlzLmh0cmVlc1t0XSA9IG4sIHIgPSBsKHRoaXMuYWxwaGFiZXRfc2l6ZSwgdGhpcy5jb2RlcywgbiwgZSksIG4gKz0gciB9LCByLkJyb3RsaURlY29tcHJlc3NlZFNpemUgPSBnLCByLkJyb3RsaURlY29tcHJlc3NCdWZmZXIgPSB2LCByLkJyb3RsaURlY29tcHJlc3MgPSBBLCBrLmluaXQoKSB9LA0KICAgICAgICAgICAgICAgICAgICAiZGVjL2RpY3Rpb25hcnkuanMiOiBmdW5jdGlvbihlLCB0LCByKSB7IHZhciBuID0gZSgiLi9kaWN0aW9uYXJ5LWJyb3dzZXIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHIuaW5pdCA9IGZ1bmN0aW9uKCkgeyByLmRpY3Rpb25hcnkgPSBuLmluaXQoKSB9LCByLm9mZnNldHNCeUxlbmd0aCA9IG5ldyBVaW50MzJBcnJheShbMCwgMCwgMCwgMCwgMCwgNDA5NiwgOTIxNiwgMjE1MDQsIDM1ODQwLCA0NDAzMiwgNTMyNDgsIDYzNDg4LCA3NDc1MiwgODcwNDAsIDkzNjk2LCAxMDA4NjQsIDEwNDcwNCwgMTA2NzUyLCAxMDg5MjgsIDExMzUzNiwgMTE1OTY4LCAxMTg1MjgsIDExOTg3MiwgMTIxMjgwLCAxMjIwMTZdKSwgci5zaXplQml0c0J5TGVuZ3RoID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDAsIDAsIDAsIDEwLCAxMCwgMTEsIDExLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDksIDksIDgsIDcsIDcsIDgsIDcsIDcsIDYsIDYsIDUsIDVdKSwgci5taW5EaWN0aW9uYXJ5V29yZExlbmd0aCA9IDQsIHIubWF4RGljdGlvbmFyeVdvcmRMZW5ndGggPSAyNCB9LA0KICAgICAgICAgICAgICAgICAgICAiZGVjL2RpY3Rpb25hcnkuYmluLmpzIjogZnVuY3Rpb24oZSwgdCwgcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgdC5leHBvcnRzID0gIlc1L2ZjUUxuNWdLZjJYVWJBaVExWFVMWCtUWno2QURUb0RzZ3FrNnFWZmVDMGU0bTZPTzJ3Y1ExSjc2WkJWUlYxZlJrRXNkdS8vNjJ6UXNGRVpXU1RDbk1oY3NRS2xTMnFPaHVWWVlNR0NrVjBmWFdFb01GYkVTWHJLRVo5d2RVRXN5dzlnNGJKbEV0MVk2b1ZNeE1SVEVWYkNJd1p6Snpib0s1ajhtNFlIMDJxZ1hZaHYxVitQTTQzNXNMVnh5SEppaGFKUkVFaFpHcUwwM3R4R0ZRTG03NmNhR08vb3Z4S3Z6Q2J5LzN2TVR0WC80NTlmMGlnaTdXdXRuS2lNUTZ3T0RTb1JoLzhMeDFWM1E5OU12S3R3QjZiSGRFUllSWTBoU3RKb01qTmVUc05YN2JuK1k3ZTRFUTNiZjh4QmM3TDBCc3lmRlBLNDNkR1NYcEw2Y2xZQy9JMzI4aDU0L1ZZclE1aTA2NDhGZ2JHdGw4MzdzdkozNUwzTW90LytuUGxOcFdnS3gxZ0dYUVlxWDZuK2JiWjd3dXlDSEtjVW9rMTJYanF1YjdOWFpHenFCeDBTRCt1emlOZjg3dDd2ZTQyanhTS1FvVzNueXhWcldJR2xGU2hoQ0t4anBaWjVNZUduYTArbEJraytrYU44RjlxRkJBRmdFb2d5TUJkY1gvVDFXL1duTU9pLzd5Y1dVUWxvRUJLR2VDNDhNa2l3cUprSk8rMTJlUWlPRkhNbWNrNnEvSWpXVzNSWmxhbnkyM1RCbStjTnIvODQvb2k1R0dtR0JaV3JaNmorenlrVm96ejVmVC9RSC9EYTZXVGJaWVlQeW5WTk83a3h6dU5OMmt4S0tXY2hlNVd2ZWl0UEtBZWNCOFljQUh6Lyt6WExqY0x6a2REU2t0TklEd1pFOUo5WCt0dG80M29KeTY1d0FwTTNtRHpZdEN3WDlsTStONVZSM2tYWW8wWjN0MFR0WGZnQkZnN2dVOG9OMERnbDdmWmxVYmhObGwrMHV1b2hSVktqckVkOGVnclNuZHk1L1RnZDJncWpBNENBVnVDN0VTVW1MM0Rab0duZmhRVjh1d25waThFR3ZBVlZzb3dOUnhQdWRjazcrb3FBVURrd1pvcFdxRm5XMXJpc3MwdDF6NmlDSVNWS3JlWUdOdlFjWHYrMUw5K2piUDhjZC9kUFVpcUJzbzJxKzdaeUZCdkVOQ2trVnI0NGl5UGJ0T29Pb0NlY1dzaXVxTVNNTDVsdit2TjVNelVyK0RuaDczRzdRMVluUllKVllYSFJKYU5BT0J5aWFLNkN1c2dGZEJQRTQwcjBydnFYVjd0a3NLTzJEckhZWEJUdjhQNXlzcXhFeDhWRFhVRERxa1BINk5OT1YvYTJXSDh6bGtYUkVMU2E4UCtoZU55SkJCUDdQZ3NHMUV0V3ROZWY2L2krbGNheXpRd1FDc2R1aWRwYktmaFdVRGdBRW15aEd1L3pWVGFjSTZSUzB6VEFCck9ZdWVlbW5WYTE5dTlmVDIzTi9UYTZSdlRwb2Y1RFd5Z3FyZUNxckRBZ000TElEMSsxVC90YVU2eVRGVkxxWE92Ky9NdVFPRm5hRjh2TE1LRDd0S1dEb0JkQUxneEYzM3pRY2NDY2RIeDhmS0lWZFc2OU83cUh0WHBlR3I5amJicEZBK3FSTVdyNWhwMHM2N0ZQYzdIQWlMVjBnMC9wZVpsVzdoSlBZRWhaeWhwU3dhaG5mOTMvdFpnZnFaV1hGZG1kWEJ6cXhHSExyUUt4b0FZNmZSb0JoZ0NSUG1tR3VlWVo1SmV4VFZES1VJWHprRy9mcXAvMFUzaEFnUWRKOXp1bXV0SzZucVdiYXF2bTFwZ3UwM0lZUitHKzhzMGpEQkJ6OGNBcFpGU0JldVdhc3lxbzJPTURLQVpDb3pTK0dXU3ZML0hzRTlySHhvb2UxN1Uzcy9sVEUrVlpBazRqM2RwNnVJR2FDMEpNaXFSNUNVc2FiUHlNMGRPWURSN0VhN2lwNFVTWmx5YTM4WWZQdHZyWC90QmxoSGlsajU1bloxbmZOMjRBT0FpOUJWdHovTWJuOEFFREpDcUpnc1ZVYTZuUW5TeHYyRnM3bC9ObEN6cGZZRWptUHJOeWliLyt0MGVpMmVFTWp2TmhMa0hDWmxjaTRXaEJlN2VQWlRtellxbFk5KzFweHRTNEdCKzVsTTFCSFQ5dFMyNzBFV1VEWUZxMUkweVkvZk5pQWs0Yms5eUJnbWVmL2YyazZBbFlRWkhzTkZuVzh3QlF4Q2Q2OGlXdjcvMzViWGZ6M0pabWZHbGlnV0FLUmpJczNJcHp4UTI3dkFnbEhTaU96Q1l6SjlMOUExQ2RpeUZ2eVI2NnVjQTRqS2lmdTVlaHdFUjI2eVY3SGpLcW41TWZvem83Q294eHQ4TFdXUFQ0N0JlTXhYOHAwUGpiN2habis2Ync3ejNMdys3NjUzajVzSThDTHU1a1RocE1sajFtNGMyY2gzakdjUDFGc1QxM3Z1SzNxamVjS1RaazJrSGNPWlk0MFVYK3FkYXhzdFpxc3FRcWdYeitRR0Y5OVpKTHFyM1ZZdTRhZWNsMUFiNUdtcVM4ay9HVjViOTV6eFE1ZDRFZlhVSjZrVFMvQ1hGL2FpcUtET1QxVDdKejV6MFB3RFVjd3I5Y2xMTjFPSkdDaUtmcXZhaCtoM1h6ckJPaUxPVzh3dm44Z1c2cUU4dlB4aStFZnYrVUg1NVQ3UFFGVk1oNmNaMXBaUWx6SnBLWjdQN3VXdndQR0o2RFRsUjZ3YnlqM0l2Mkh5ZWZuUm8vZHY3ZE54K3FhYTBOMzhpQnNSKytVaWw3V2Q0YWZ3RE5zcnpEQUs0Zlhad3ZFWS9qZEt1SUtYbGZyUWQyQzM5ZFc3bnRuUmJJcDlPdEd5OXBQQm4vVjJBU29pLzJVSlpmUyt4dUdMSDhibkx1UGx6ZFROUzZ6ZHlrOER0L2g2c2ZPVzVteXhoMWYremYzelozTVgvbU85Y1FQcDVwT3g5NjdaQTYvcHFIdmNsTmZuVUZGK3JxK1ZkN2FsS3I2S1dQY0lEaHBuNnYySzZObFV1NkxyS284Yi9wWXBVL0dhemZ2dHdobjd0RU9VdVhodDVyVUpkU2Y2c0xqWWYwVlRZRGd3SjgxeWFxS1RVWWVqL3RiSGNrU1JiL0haaWN3R0pxaDFtQUhCL0l1TnM5ZGM5eXV2RjNENVhvY20zZWxXRmRxNW9FeTcwZFlGaXQ3OXlhTGlOalBqNVVVY1ZtWlVWaFFFaFc1VjJaNkNtNEhWSC9SOHFsYW1SWXdCaWxldWgwN0NiRWNlM1RYYTJKbVhXQmYrb3p0MzE5cHNib29iZVpoVm53aE1aek9lUUp6aHBURGJQNzFUdjhIdVp4eFVJLyttYTNYVzZERkREczQrcW1wRVJ3SEdCZDJlZHh3VUtsT0RSZFVXWi9nMEdPZXpyYnpPWmF1Rk1haTRRVTZHVkhWNmFQTkJpQm5kSFNzVjRJenB2VWlpWXlnNk95eXJMNERqNXEvTHczTjVrQXdmdEVWbDlyTmQ3Sms1UERpajJoVEg2d0lYbnN5WGtLZVB4Ym1IWWdDOEE2YW41Rm9iL0tINUd0QzBsNGVGc28rVnB4ZWR0SkhkSHBObStCdnk0Qzc5eVZPa3Jac0xyUTNPSENlQjBSYStrQklSbGRVR2xEQ0VtcTJSd1huZnloNkR6K2FsazZlZnRJMm42c2FzdFJyR3did3N6QmVEUlMvRmEvS3dSSmtDelRzTHIvSkNzNWhPUEUvTVBMWWRaMUYxZnY3RCtWbXlzWDZOcE9DOGFVOUY0UXM2SHZEeVV5OVB2RkdES1ovUDUxMDFUWUhGbDhwamo2d20vcXlTNzVldFpoaGZnMFVFTDRPWW1IazZtNmRPMTkyQXpvSXlQU1Y5UWVkREE0TWwyM3JSYnF4TVBNeGY3RkpuRGM1RlRFbFZTL1B5cWdlUHptd1ZaMjZOV2hSRFErb2FUN2x5N2VsbDRzM0R5cFMxczBnK3RPcjdYSHJya1pqOSt4L21KQnR0ckx4OThsRklhUlp6SHo0YUM3cjUyL0pRNFZqSGFoWTIvWVZYWm4vUUMyenRRYi9zWTN1Umx5YzV2UVM4bkxQR1QvbjI3NDk1aThIUEExNTJ6N0ZoNWFGcHluMUdQSktIdVBMOEl3OTREdVczS2prVVJBV1pYbjRFUXk4OXhpS0VITjFtay90a000Z1lEQnh3Tm9ZdlJmRTZMRnFzeFdKdFByREdic25MTWFwM0thM01Vb3l0VzBjdmllb3pPbWRFUm1oY3F6RyszSG1adjJ5WmVpSWVRVEtHZFJUNEhITnhla20xdFkrL24wNnJHbUZsZXFMc2NTRVJ6Y3RUS002RzlQMFBjMVJtVnZyYXNjSXhhTzFDUUNpWVBFMTViRDdjM3hTZVc3Z1h4WWpneGNyVWxjYkl2TzByK1lwbGh4MGtUdDNxYWZET21GeU1qZ0d4WHU3M3JkZE1IcFYxd011YnlBR2NmL3Y1ZExyNVA3MlRhOWxCRitmek1Kck15Y3d2Kzl2blUzQU5JbDFjSDl0Zlc3YWY4dTAvSEcwdlY0N2pORlh6RlR0YWhhMXh2emUvczhLTXRDWXVjWGMxbnpmZC9NUXlkVVhuL2I3MlJCdDV3Ty8zalJjTUg5QmRoQy95Y3RLQkl2ZVJZUHJOcERXcUJzTzhWTW1QK1d2UmFPY0E0elJNUjFQdlNvTzkyclM3cFlFditmWmZFZlRNekVkTSs2WDV0TGx5eEV4aHFMUmttczVFdUxvdkxmeDY2ZGU1ZkwyL3lYMDJINTJGUFZ3YWhyUHFtTi9FMG9WWG5zQ0toYmkveVJ4WDgzblJiVUtXaHpZY2VYT250ZnVYbjUxTnN6SjZNTzczcFFmNVBsNGluM2VjNEpVOGhGN3BwVjM0K21tOXIxTFkwZWUvaTFPMXdwZDgremZMenRFMGNxQnhnZ2lCaTVCdTk1djlsM3I5ci9VNWh3ZUxuK1RiZnhvd3JXRHFkSmF1S2Q4K3EvZEg4c2JQa2M5dHR1eU85NGY3L1hLL25IWDQ2TVBGTEViNXFRbE5QdmhKNTAvNTl0OWZ0M0xYdTd1VmFXYU8yYkRyRENuUlN6WnlXdkZLeE8xK3ZUOE13d3VuUjNiWDBDa2ZQanFiNEs5TzE5dG41WDUwUHZtWXBFd0h0aVc5V3R6dVYvczc2QjF6dkxMTmtWaU5kOHlTeElsLzNvcmZxUDkwVHlUR2FmNy9yeDhqUXplSEpYZG1oL042WUR2YnZtVEJ3Q2R4ZkVRMU5jTDZ3Tk1kU0lYTnE3YjFFVXpSeTEvQXhzeWs1cDIyR01HMWIrR3hGZ2JIRXJaaDkyd3V2Y28wQXVPTFhjdDlodncybncvTHFJY0RSUm1KbW1aemNnVWE3SnBNL1dWL1M5SVVmYkY1NlRMMm9yenF3ZWJkUkQ4bklZTko0MUQvaHozN0ZvMTFwMlkyMXd6UGNuNzEzcVZHaHF0ZXZTdFlmR0g0bjY5T0VKdFB2YmJMWVd2c2NEcWMzSGdudTE2Nit0QXlMbnhyWDBZNXpvWWpWKysxc0k3dDVrTXIwMktULyt1d3RrYytyWkxPZi9xbi9zM25ZQ2YxM0RnOC9zQjJkaUpnakdxalErVExoeGJ6eXVlMk9iN1g2LzlsVXdXN2ErbGJ6bkh6T1l5OExLVzFDL3VSUGJRWTNLVy8wZ085TFh1bkhMdlBMOTdhZmJhOWJGdGM5aG16N0dBdHRqVllsQ3ZRQWlPd0FrL2dDNStoa0xFczZ0cjNBWkt4TEp0T0V3azJkTHhUWVdzSUIvai9Ub1d0SVd6bzkwNkZyU0c4aWFxcXFxcXFpSWlJaUFnek16TXpOeitBeUsrMDEvemk4bjhTK1kxTWpvUmFRODBXVS9HOE1CbE8rNTNWUFhBTnJXbTR3ekdVVlpVampCSlpWZGhwY2ZranNtY1dhTytVRWxkWGkxZSt6cStIT3NDcGtuWXNodWg4cE9MSVNKdW43VE4wRUlHVzJ4VG5sT0ltZWVjbm9HVzRyYXhlMkcxVDNIRXZmWVVZTWhHK2dBRk9Bd2g1bks4bVpod0pNbU43cjIyNFFWc05Gdlo4N1owcWF0dmtua2x5UERLM0h5NDVQZ1ZLWGppNTJXZW40ZDRQbEZWVllHbk5hcCtmU3BGYks5MHJZbmhVYzZuOTFRM0FZOUUwdEpPRnJjZlp0bS80OTFYYmNHL2pzVmlVUFBYNzZxbWV1aXorcVkxSGs3LzFWUE00MDV6V1Z1b2hlTFVpbXBXWWRWekNtVWRLSGViTWR6Z3JZcmI4bUwyZWVMU25SV0hkb25mWmE4UnNPVTlGMzd3KzU5MWw1RkxZSGlPcVdlSHRFL2xXckJIY1JLcDN1aHRyOHlYbThMVS81bXMrTk02WktzcXU5MGNGWjRvNTgrazRyZHJ0Qjk3TkFERmJ3bUVHN2xYcXZpcmhPVE9xVTE0eHVVRjJteUlqVVJjUEhyUE9RNGxtTTNQZU1nN2JVdWswbm5aaTY3YlhzVTZIOGxocUlvOFRhT3JFYWZDTzFBUks5UGpDMFFPb3EyQnhtTWRnWUI5Ry9sSWI5KytmcU5KMnM3QkhHRnlCTm1aQVI4SjNLQ28wMTJpa2FTUDhCQ3JmNlZJMFg1eGRuYmhISU8rQjVyYk95QjU0elhremZPYnlKNGVjd3hmcUJKTUxGYzdtNTlyTmN3N2hvSG5GWjBiMDB6ZWUrZ1RxdmptNjFQYjR4bjBrY0RYNGp2SE0wckJYWnlwRzNEQ0tuRC9XYWEvWnRIbXRGUGdPNWVFVHgrazdSclZnM2FTd20yWW9OWG5DczNYUFFEaE5uK0ZpYTZJbE9PdUlHNlZKSDdUUDZhdmEyNmVoS0hRYTJUNE4wdGNaOWRQQ0dvM1pkbk5sdHNIUWJlWXQ1dlBuSmV6Vi9jQWVOeXBkbWwxdkNISThNODFuU1JQNVFpMittSTh2L3N4aVpydTkxODduUnRwM2YvNDJOZW1jT05hKzRlVkMzUENaemM4OGFaaDg1MUNxU3NzaGU3MHVQeGVOL2RtWXdsd2IzdHJ3TXJOMUdxOGpibkFwY1ZEeC95RFBlWXM1LzdyNjJ0c1E2bExnK0RpRlhURWh6UjlkSHF2MGlUNHRnajgyNVcrSDNYaVJVTlVaVDJrUjlSaTArbHArVU0zaVF0Uzh1T0UyM0x5NEtZdHZxSDEzamdoVW50SlJBZXd1ek5MRFhwOFJ4ZGNhQTNjTVk2VE8ySWVTRlJYZXplV0lqQ3F5aHNVZE1ZdUNnWVRaU0twQnlwZTF6UmZxOEZzaHZmQlBjNkJBUVdsNy9ReElEcDNWR28xSjN2bjQyT0VzM3F6bndzK1lMUlhieW15QjE5YTlYQng2bi9vd2N5eGxFWXlGV0NpK2tHOUYrRXlELzR5bjgwK2FnYVo5UDdheTJEbnk5OWFLMm85MUZrZkVPWThoQnd5Zmk1dXd4Mnk1U2FIbUcrb3EvemwxRlgvOGlyT2Y4WTN2QWNYLzZ1TFA2QTZudk1PMjRlZFNHUGpRYzgyN1J3MmF0WCt6MmJLcTBDbVc5bU90WW5yNS9BZkRhMVpmUGFYbkt0bFdib3J1cDdRWXgrT3IydVdiK04zTi8vMit5RGNYTXFJSmRmNTV4bDcvdnNqNFdvUFBseEx4dFZya0o0dy90VGUzbUxkQVRPT1l3eGNxNTJ3NVd4ejVNYlBkVnM1TzgvbGhmRTdkUGowYklpUFEzUVYwaXFtNG0zWVg4aFJmYzZqUTNmV2VwZXZNcVVESmQ4Nlo0dndNNDBDV0hubitXcGhzR0hmaWVGMDJEM3RtWnZwV0Qra0JwTkNGY0xuWmhjbW1yaHBHenpiZEErc1ExYXIxOE9KRDg3SU9LT0ZvUk56bmFIUE5IVWZVTmh2WTFpVSt1aHZFdnBLSGFVbjNxSzNleFZWeVg0am9pcHAzdW03Rm1ZSldtQStXYklEc2hScGJWUng1L25xc3RDZ3k4N0ZHYmZWQjh5REdDcVMrMnFDc25Sd25TQU42emd6eGZkQjJuQlQvdlo0LzZ1eGI2b0g4YjRWQlJ4aUlCOTN3TGE0N2hHM3cyU0wvMloyN3lPWEpGd1pwU0phQll5dmFqQTd2UlJZTktxbGpYS3B0L0NGRC90U01yMThES0tid0IweGdnQmVQYXRsMW5raTB5dnFXNXpjaGx5Wm1KME9UeEozRCtmc1lKcy9teFlONStMZTVvYWd0Y2wrWXNWdnk4a1NqSTJZR3ZHanZtcGtSUzlXMmR0WHFXblZ1eFVoVVJtMWxLdG91L2hkRXExOVZCcDlPakd2SEVRU21ycHVmMlIyNG1YR2hlaWw4S2VpQU5ZOGZXMVZFUlVmQkltYjY0ajEyY2FCWm1SVmlaSGJlVk1qQ3JQRGc5QTkwSVhydG5zWUN1WnRSUTBQeXJLRGpCTk9zUGZLc2cxcEEwMmdIbFZyME9YaUZodHA2bkpxWFZ6Y2JmTTBLbnpDM2dnT0VOUEU5VkJkbUhLTjZMWWFpamI0d1h4Sm41QTBGU0RGNWoraDFvb1p4ODg1SnQzWkt6TzVuN1o1V2ZORU90eXlQcVFFbm43V0x2NUZpczNQZGdNc2hqRjFGUnlkYk55ZUJieUtJMW9OMVRSVnJWSzdrZ3NiL3pqWDRORFBJUk1jdFZlYXhWQjM4VmgxeDVLYmVKYlUxMzhBTTVLem1adTN1bnkwRXJ5Z3hpSkY3R1ZYVXJQekZ4cmx4MXVGZEFhWkZETjljdkliNzRxRDl0ekJNbzdMN1dJRVlLK3NsYTFEVk1IcEYwRjdiMytZNlMremp2TGVETUNwYXBtSm8xd2VCV3V4S0Yzck9vY2loMWd1bjRCb0poMWtXblYvSm1pcTZ1T2hLM1ZmS3hFSEVrYWZqTGdLM291amFQelk2U1hnOHBoaEw0VE5SMXh2SmQxV2EwYVlGZlBVTUxyTkJEQ2g0QXVHUlRidEtNYzZaMVVkajhldlkvWnBDdU1BVWVmZG82OURaVW5nb3FFMVA5QTNQSmZPZjdXaXhDRWorWTZ0N2ZZZUhiYnhVQW9GVjNNODljQ0tmbWEzZmMxK2pLUmU3TUZXRWJRcUVmeXpPMngvd3JPMlZZSDdpWWRROUJrUHlJOC8za1hCcExhQ3BVN2VDMFl2L2FtL3RFRHU3SFpwcWcwRXZIbzBuZi9SL2dSelVXeTMzL0hYTUpRZXUxR3lsS21Pa1h6bENmR0ZydUFjUFBoYUdxWk90dTE5enNKMVNPMkp6NFp0dGg1Y0JYNm1SUXdXbUR3cnlHOUZVTWxaek5ja01kSytJb01KdjFyT1duQmFtUzJ3MktIaWFQTVBMQzE1aENabTRLVHBvWnlqNEUyVHFDL1A2cjcvRWhuRE1oS2ljWloxWnd4dUM3RFB6REdzNTNxOGdYYUk5a0ZUSysyTFRxN2Jod3NUYnJNVjhSc2Z1YTVsTVMwRndiVGl0VVZuVmExeVRiNUlYNTFtbVluVWNQOXdQcjhKaTF0aVlKZUpWOUdaVHJRaEY3dnZkVTJPVFU0Mm9nSjlGRHdobXljSTJMSWcrKzAzQzZzY1loVXlVdU1WNXRrdzZrR1VvTCttak5DMzgrd01kV05sam42dEdQcFJFUzd2ZXFyU241VFJ1ditkaDZKVkwvaURIVTFkYjRjOVdLMysrT3JIM1BxemlGOTE2VU1VS244RzY3bk42MEdmV2lIclhZaFVHM3lWV215WWFrNTlOSGo4dDFzbUc0VURpV3oyclBITnJLbk40Wm8xTEJicjIvZUY5WVowbjBibHgybkc0WCtFS0Z4dlMzVzI4SkVTRCtGV2s2MVZDRDN6L1VSR0hpSmwrKzdUZEJ3a0NqNnRHT0gzcURiMFFxY09GOUt6cGowSFViL0t5RlczWWhqMlZNS0pxR1psZUZCSDd2cXZmN1dxTEMzWE11SFY4cThhNHNURnV4VXRrRC82SklCdkthVmp2OTZuZGdydUtaMWsvQkh6cWYySzlmTGs3SEdYQU55TERkMXZ4a0svaTA1NXBuemwrenc2ekxud1hsVllWdGZtYWNKZ0VwUlAxaGJHZ3JZUFZONnYybEcraWRRTkdtd2NLWHUvOHhFai9QNnFlL3NCMldtd05wNnBwOGphSVNNa3dkbGVGWFlLNTVOSFdMVFRidXRTVXFqQmZER1dvL1lnOTE4cVErOEJSWlNBSFpiZnVOWnoyTzBzb3YxVWU0Q1dsVmczckZoTTNLbGpqOWtzR2QvTlVoazRuSCthNVVOMisxaTgrTk0zdlJOcDd1UTZzcWV4U0N1a0VWbFZacmlITnFGaTVyTG05VE1XYTRxbTNpZEpxcHBRQUNvbDJsNFZTdXZXTGZ0YTRKY1h5M2JST1BOYlhPZ2RPaEc0N0xDMEN3Vy9kTWxTeDRKZjE3YUVVM3lBMXg5cCtZYzBqdXBYZ2NNdVlOa3U2NGlZT2tHVG9WRHVKdmxiRUtsSnFzbWlIYnZOcklWWkVIK3lGZEY4RGJsZVo2aU5pV3dNcXZ0TXAvbVNwd3g1S3hSclQ5cDNNQVBUSEd0TWJmdmRGaHlqOXZoYUtjbjNBdDhMYzE2QWkrdkJjU3AxenRYaTdyQ0paeC9xbDdUWGNjbHE2UTc2VWVLV0R5OWJvUzBXSElqVXVXaFBHOExCbVc1eTJyaHVUcE01dnNMdCtIT0xoMVlmMERxWGE5dHNmQytrYUt0Mmh0QTBhaS9MMmk3UktvTmpFd3p0a21SVTBHZmdXMVR4VXZQRmhnMFY3RGRmV0prNWdmcmNjcFl2K01BOU0wZGtHVExFQ2VZd1VpeFJ6alJGZG1qRzd6ZFpJbDNYS0I5WWxpTktJMzFsZmE3aTJKRzVDOFNzK3JIZTBEN1o2OTYvVjNERUFPV0huUTl5TmFoTVVsNWtFTldTNnBIS0twMkQxQmFTcnJIZEUxdzJxTnhJenRwWGdVSXJGMGJtMTVZTUw0YjZWMWsrR3BOeXNUYWhLTVZyclM4NWxUVm85T0dKOTZJNDdlQXk1cllXcFJmL21JemVvWVUxREthUUNUVVZ3cmhIZXlOb0RxSGVsK2xMeHI5V0t6aFNZdzd2clI2K1Y1cTBwZmkyazNMMXpxa3ViWTZycmQ5Wkx2U3VXTmYwdXFua1krRnBUdkZ6U1c5RnAwYjlsOEpBN1RIVjllQ2kvUFkvU0NaSVVZeDNCVTJhbGo3Q20zVlY2ZVlwaW9zNGI2V3VOT0pkWVhVSzN6VHFqNUNWRzJGcVlNNFo3Q3VJVTBxTzA1WFIwZDcxRkhNMFloWm1KbVRSZkxsWEV1bU44MkJHdHpkWDBTMTl0MWUrYlVpZUs4elJtcXBhNFFjNVRTamlmbWFRc1kyRVRMamhJMzZnTVIxKzdxcGpkWFhIaWNlVWVrZkJhdWNIU2hBT2lGWG12M3NObUdReVU1aVZnbm9vY3VvblFYRVBURndzbEh0UzhSK0E0N1N0STl3ajBpU3J0Ymk1ck15c2N6RmlJbXNRK2JkRkNsbkZqanBYWHdNeTZPN3Fmak9yOEZiMGE3T0RJdGlzam5uM0VRTzE2K3lwZDFjd3lhQVc1WXp4ejVRa25mTU83NjQzZlhXL0k5eTNVMnhIMjdPYXBxcjU2Wi90RXpnbGo2SWJUNkhFSGpvcGlYcWVSYmU1bVFRdnh0Y2JET1Z2ZXJOMFpnTWR6cVJZUmphWHRNUmQ1NlE0Y1pTbWRQdlpKZFNyaEoxRDl6TlhQcUFFcVBJYXZQZGZ1YnQ1b2tlMmttdjBkenRJc3pTdjJWWXVveWYxVXVvcGJzWWIrdVg5aDZXcHdqcGd0WjZmTk5hd05KNHE4TzNDRm9TYmlvQWFPU1pNeDJHWWFQWUIrckViNnFqUWlOUkZRNzZUdndORlZLRCtCaEg5VmhjS0dzWHptTUk3QnB0VS9DTldvbE03WXpST3ZwRkFudHNpV0pwNmVSMmQzR2FyY1lTaFZZU1VxaG1ZT1dqNUU5Nk5LMld2bVlOVGVZN1pzNFJVRWR2OWg5UVQ0RXNlS3Q2THpMcnFFT3MzaHhBWTFNYU5XcFNhNnpaeDhGM1lPVmVDWU1TODhXK0NZSER1V2U0eW9jNllLK2RqRHVFT3JCUjVsdmgwcitROXVNODhscmp4OXg5QXRncFFWTkU4ciszTzZHdnc1OUQra0JGL1VNWHlobGlZVXRQam12WEdZNkRrM3gra0VPVytHdGRNVkM0RVpUcW9TL2ptUjBQMExTNzVET2MvdzJ2bnJpOTdNNFNkYlo4cWVVN2dnOERWYkVSa1U1Z2VhTVFPM21ZclNZeUFuZ2VVUXFyTjBDMC92c0ZtY2dXTlhOZWlkc1RBajcvNE1uY0pSMGNhYUJVcGJMSzF5QkNCTlJqRXY2S3Z1VlNkcFBuRU1KZHNSUnRxSitVOHROMWdYQTRlUEhjNlpUMGV2aUk3M1VPSkYwZkVaOFlhbmVBUXFRZEdwaE52d000bklxUG5YeFYweEEwZm5DVCtvQWhKdXl3L3E4ak8weThDalN0ZVpFeHdCcElONlN2TnA2QTVHL2FiaTZlZ2VORC8xR1RndWh1TmphVWJiblNiR2Q0TDg5MzdFem0zNEV5aTZuMW1hZU9CeGgzUEkwanpKRGY1bWgvQnNMRDdGMkdPS3ZsQS81Z3R2eEkzL2VWNHNMZktXNVd5K29pbytlcy91NlQ4VVUrbnNvZnk1N0ljYi9KbFpIUEZ0Q2dkL3grYnd0M1pUK3hYVHRUdFRyR0FiNFFlaEM2WDlHKzhZVCtvemNMeERzZENqc3VPcXdQRm5yZExZYUZjOTJVaTBtNGZyMzlsWW1sQ2FxVGl0N0c2Ty8za1dEa2d0WGpOSDRCaUVtLytqZWdRbmloT3RmZmZuMzNXeHNGamhmTWQ0OEhUK2Y2bzZYNjVqN1hSOFdMU0hNRmt4YnZPWXNyUnNGMWJvd0R1U1ExOE1reGs0cXoyem9HUEw1ZnU5aDJIcW10MWFzbDNRM1l1M3N6T2Mrc3BpQ21YNEFFVEJNM3BMb1RZU3Azc1Z4YWh5aEw4ZUM0bVBOOWsyeDNvMHhraWl4SXpNM0NaRnpmNW9SNG1lY1E1K2F4MndDYWgzL2NybW5Ib3FSMCtLTWFPUHhSaWYxb0VGUkZPTy9rVFBQbXR3dytOZk1YeEVLNmduNmlVMzJVNmZGcnVJejhRNFdnbGp0bmFDVlRCZ1d4N2RpVWRzaEM5WkVhNXlLcFJCQmVXMTJyL2lOYy8rRWdOcW1oc3dOQjhTQm9paEhYZURGN3JyV0RMY210M1Y4R1lZTjdwWFJ5NERaamo0REp1VUJMNWlDM0RRQWFvbzR2a2Z0cVZUWVJHTFMzbUhaN2dkbWRUVHFiZ05OL1BUZFRDT1RnWG9sYzg4TWhYQUVVTWRYMGl5MUpNdWs1d0xzZ2V1MFFVWWx6MlM0c2tUV3dKejZwT20vOGlocm1nR2ZGZ3JpK1pXVUsyZ0FQSGdiV2E4amFvY2RTdU00RkpZb0tpY1lYL1pTRU5rZzlRMVp6SmZ3U2NmVm5SMkRlZ09Hd0N2bW9nYVdKQ0xRZXB2OVdObFU2UWdzbU93SUNxdVUyOE1sazNkOVc1RTgxbFUvNUV6MExjWDZsd0tNV0RObHVOS2ZCRFV5L3BoSmdCY01uZmtoOWlSeHJkT3pnczA4SmRQQjg1THdvK0dVU2I0dDNuQyswYnlxTVp0TzJmUUo0VTJ6R0lyNDl0LzI4cW1tR3YyUmFuREQ3YTNGRWNkdHV0a1c4dHd3d2xVU3BiOFFhbG9kZGRiQmZOSEtEUTgyOEJkRTdPQmdGZGlLWW9oTGF3RllxcHliUW94QVRacmhlTGhkSTcrMFpsdTlRMW15UmNkMTVyOVVJbThLMkxHSnhxVGVnbnRxTlZNS25mMWE4elFpeVVSMXJ4b3FqaUZ4ZUh4cUZjWVVUSGZEdTdyaGJXbmc2cU94T3NJKzVBMXA5bVJ5RVBkVmtUbEUyNHZZNTRXN2JXYzZqTWdadk5YZGZDOS85cTc0MDhLRHNiZEw3VXR6N1FGU0RldHoycGljQXJ6cmRwTDhPYUNIQzlWMjZScm9lbXREWjV5Tk0vS0drV015VG1mbkluRXZ3dFNEMjNVY0ZjamhhRTNWS3prb2FFTUtHQmZ0NFhiSU82Zm9yVFkxbG1HUXdWbUtpY0JDaUFyRHpFKzFvSXhFMDhmV2V2aUlPRDVUem5xSCtPb0hhZHZvT1AyMGRyTVBlNUlyZzNYQlF6aVcyWER1SFl6anFRUTR3eVNzc2pYVXM1SCt0M0ZXWU1IcHBVbkJITXgvbllJVDVkN09takRiZ0Q5RjZuYTNtNGw3S2RrZVNPM2tURVBYYWZpV2lub2dhZzdiNTJ0YWlaaEwxVFN2QkZtRVphZkZxMkg4a2hRYVpYdWl0Q2V3VDVGQmdWdFBLMGo0eFVIUGZVejNRMjhlYWMxWjEzOURBUDIzZGdraTk0RUM4dmJEUFRRQzk3SFBQU1dqVU5HNXRXS01zYXhBRU1LQzA2NjVYdm8xTnRkMDd3Q0xOZjhRNTZtckVQVnBDeGxJTVZsUWxXUnhNM29BZnBnSWMrOEtDM3JFWFVvZzVnMDZ2dDd6Z1hZOGdySDdoaHdWU2FldXZDMDZZWVJBd3BieWsvVW56ajloTEVaTnMyb3hQUUI5eWMrR25MNnpUZ3E3ckkrK0tESndYMlNQOFNkNll6VHV3NWxWL2tVNmVReFJEMTJvbWZRQVc2Y2FUUjRMaWtZa0JCMUNNT3J2Z1JyL1ZZNzUrTlNCNDBDbmk2YkFEQXRhSyt2eXhWV3BmOU5lS0p4TjJLWVE4UTJ4UEIzSzFzN2Z1aHZXYnIyWHBnVzA0NFZENkRSczBxWG9xS2YxTkZzYUd2S0pjNDdsZVVWM3BwcFAvNVZUS0ZoYUd1b2w0RXNmamY1enlDeVVIbUh0aENoY1loNGhZTFFGK0FGV3N1cTR0MHdKeVdnZHdRVk9aaVYwZWZSSFBvSzUrRTF2ano5d1RKbVZrSVRDOW9Fc3RBc3laU2dFL2RiaWN3S3I4OVlVeEtaSStvd0QyMDVUbTVsbm5tRFJ1UC9Kbnp4WDNnTXRscmNYMFVlc1pkeHlRcVlRdUVXNFI1MXZtUTV4T1p0ZVVkOFNKcnVNbFRVemh0VncvTnE3ZVVCY3FOMi9IVm90Z2ZuZ2lmNjB5S0V0b1V4M1dZT1psVkp1Sk9oOHU1OWZ6U0RQRll0UWdxRFVBR3lHaFFPQXZLcm9YTWNPWVkwcWpuU3RKUi9HM2FQK0p0MXNMVmxHVjhQT3dyLzZPR3NxZXRueUYzVG1UcVpqRU5mblhoNTFveGU5cVZVdzJNNzhFekFKK0lNOGxaMU1CUFE5WldTVmM0SjNtV1NyTEtyTUhSZUE1cWRHb3owT0RSc2FBK3Z3eFhBMmNBTTRxbGZ6QkpBNjU4MW00aHp4SXRRdzVkeHJyQkwzWTZrQ2JVY0Z4bzFTOGp5VjQ0cS8vKzdBU05OdWRaNnhlYU5PU0lVZmZxTW40QTlsSWpGY3RZbjJncEVQQWIzZjdwM2lJQk44SDE0RlVHUTljdDJoUHNMK2NFc1RnVXJSNDd1SlZONG40d3Qvd2dmd3dIdU9uTGQ0eW9ia29meThKdnhTUVRBN3JNcERJYzYwOFNsWkZKZlpZY21iVDB0QUhwUEU4TXJ0UTQyc2lUVU5XeHF2V1pPbXZ1OWYwSlBvUW1nKzZsN3NaV3d5Zmk2UFhreEpud0JyYVVHME1ZRzR6WUhRejNpZ3kvWHNGa3g1dE5ReHc0M3F2STlkVTNmMERkaE9VbEhLam1pMVZBcjJLaXkwSFp3RDhWZUViaGgwT2lEZE1Zc3BvbFFzWWRTd2pDY2plb3dJWE5aVlVQbUwyd3dJa1lobVhLaEdvemRDSjRsUktic2Y0TkJoL1huUW9TOTJOSkVXT1ZPRnMyWWhOOGM1UVpGZUswcFJkQUc0MGhxdkxibW9TQTh4UW16T09FYzd3TGNtZTlKT3NqUENFZ3BDd1VzOUUyRG9oTUhSaFVleUdJTjZURnZyYm55OG5EdWlsc0RwenJINW1TNzZBUG9JRUptSXRTNjdzUUorbmZ3ZGR6bWpQeGNCRUJCQ3cwa1dEd2QwRVpDa05lT0Q3Tk5RaHRCbTdLSEw5bVJ4ajZVMXlXVTJwdXpsSUR0cFl4ZEg0WlBlWEJKa1RHQUpmVXIvb1RDei9peXBZNnVYYVIyVjFkb1B4SllscncyZ2hIMEQ1Z2JyaEZjSXh6WXdpNGEvNGhxVmRmMkRkeEJwNnZHWURqYXZ4TUFBb3krMSszYWlPNlMzVy9RQUtOVlhhZ0R0dnNOdHg3S3MrSEtnbzZVMjFCK1FTWmdJb2dWNUJ0K0JuWGlzZFZmeTlWeVhWKzJQNWZNdXZkcEFqTTFvL0s5WitYbkU0RU9DcnVlK2tjZFlIcUFRMC9ZL09tTmxRNk9JMzNqSC91RDFSYWxQYUhwSkFtMmF2MC94dHBxZFhWS05EcmM5RjJpem8yM1d1N2ZpcmdiVVJGRE5YOWVHR2VZQmhpeXB5WFpmdDJqM2hUdnpFNlBNV0tzb2QvL3JFSUxEa3pCWGZpN3hoMGVGa2ZiMy8xenpQSy9QSTVOazNGYlp5VGw0bXE1QmZCb1ZvcWlQSE80UTRRS1pBbHJRM01kTmZpM294SWp2c00za0FGdjNmZHVmdXJxWVIzUFN3WC9tcEd5L0dGSS9CMk1OUGlOZE9wcFdWYnMvZ2pGM1lIK1FBOWpNaGxBYmh2YXNBSHN0QjBJSmV3MDlpQWttWEhsMS9URWoranZIT3BPR3JQUlFYYlBBRE0rSWcyL09FY1VjcGdQVEl0TXRXNERkcWdmWVZJLys0aEFGV1lqVUdwT1AvVXdOdUI3K0JiS09jQUxiam9iZGd6ZUJRZmpnTlNwMkdPcHh6R0xqNzBWdnE1Y3cyQW9ZRU53S0xVdEpVWDhzR1JveDRkVmEvVE40eEt3YUtjbDlYYXdRUi91TnVzNzAwSGYxN3B5Tm5lenJVZ2FZOWU0TUFEaEVEQnBzSlQ2eTFnREpzMXE2d2x3R2h1VXpHUjdDOGtncGpQeUhXd3N2cmYzeW4xekpFSVJhNWVTeG9MQVpPQ1I5eGJ1enR4RlJKVzlabU1ZZkNGSjBldm05RjJmVm51amU5MlJjNFBsNkE4Ymx1TjhNWnl5SkdaMCtzTlNiLy9EdkFGeEMyQnFsRXNGd2NjV2VBbDZDeUJjUVYxYng0bVFNQlAxSnhxazFFVUFETkxlaWVTMmRVRmJRL2Mva3Z3SXRiWjd0eDBzdDE2dmlxZDUzV3NSbVBUS3YyQUQ4Q1VuaHRQV2c1YVVlZ05wc1lnYXNhdzIrRVZvb2VOS21yVzNNRnRqNzZiWUhKbTVLOWdwQVhaWHNFNVU4RE04WG1WT1NKMUYxV25MeTZuUXVwK2p4NTJiQWIrckNxNnk5V1hsMkIyb1pEaGZEa1c3SDNvWWZULzR4eDVWbmNCdXhNWFAybE5maFVWUWpTU3pTUmJ1WkZFNHZGYXdsenZlWHhhWUtWczhMcHZBYjhJUllGM1pIaVJubTBBRGVOUFdvY3d4U3pOc2VHN05yU0VWWm9IZEtXcWFHRUJ6MU44UHQ3a0ZicWgzTFltQWJtOWkxSUNoSXBMcE01QVM2bXI2T0FQSE13d3puVnk2MVlwQllYOHhaRE4vYStsdDduK3g1ajRiTk9WdGVaOGxqM2hwQUhTeDFWUjh2WkhlYzRBSE85WEZDZGpaOWVSa1NWNjVsak1tWlZ6YWVqMnFGbi9xdDFsdld6TlpFZkh4SzNxT0pySEw2Y3JyMENSek1veDVmMmU4QUxCQjRVR0ZaS0EzdE42RjZJWGQzMkdUSlhHUTdEVGk5ai9kTmNMRjlqQ2JEY1dHS3hvS1RZYmxJd2JMRFJlTDAwTFJjRFBNY1F1WExNaDVZemd0ZmprRksxRFAxaUR6ellZVlp6NU0va1dZUmxScGlnMWh0VlJqVkNrbm0raDFNNUxpRURYT3lIUkVodnpDR3BGWmpIUzBSc0syN28yYXZnZGlsckprYWxXcVBXM0Q5Z213VjM3SEttZk0zRjhZWmoyYXIrdkhGdmYzQjhDUm9INGtESElLOW1yQWcrb3dpRXdOampkOVYrRnNRS1lSOGN6SnJVa2Y3UW9pMllhVzZFVkRacDV6WWxxaVl0dVhPVEhrNGZBY1o3cUJiZExEaUpxMFdOVjFsMitIbnRrMW1NV3Z4clltYzhrSXg4RzNyVzM2SjZSYTRsTHJUT0NnaU9paG1vdytZbnpVVDE5amJWMkIzUldxU0h5eGtobWdzQnFNWVd2T2NVb20xakRRNDM2K2ZjYnUzeGYyYmJlcVUvY2ErQzRET0tFK2UzcXZtZU1xVzNBeGVqZnpCUkZWY3dWWVBxNEwwQVBTV1dvSnUrNVVZWDRxZzVVNllUaW9xUUdQRzlYcm51Wi9Ca3h1WXBlNkxpODcrMThFc2t5UVcvdUErdWsycnBIcHI2aHV0MlRsVmJLZ1drRnB4K0FaZmZ3ZWl3MitWaXR0a0V5Zi9pZmluUy8wSXRSTDJKcTN0UU9jeFBhV08yeHJHNjhHZEZvVXBaZ0ZYYVAyd1lWdFJjNnhZQ2ZJMUNhQnF5V3BnNGJ4OE9IQlF3c1Y0WFdNaWJaWjBMWWpXRXkySXhRMW1acmYxL1VOYllDSnBsV3Uzblo0V3BvZElHVkEwNWQrUldTUytFVDl0SDNSZkdHbU5JMWNJWTdldlpacTdvK2EwYmpqeWdwbVIzbVZmYWxrVC9TWkdUMjdROFFHYWx3R2xET1M5VkhDeUZBSUwwYTFRN0ppVzNzYXo5Z3FZOGxxS3luRnJQQ3p4a1U0U0lmTGM5VmZDSTVlZGdSaERYczBlZE85OTJuaFRLSHJpUkVQMU5KQzZTUk9NZ1EweE81a05OWk9oTU9JVDk5QVVFbGJ4cWVaRjhBM3hyZkRKc1d0RG5VZW5BSGRZV1N3QWJZakZxUVorRDVnaTNoTks4Q1N4VTlpNmY2Q2xMOUlHbGoxT1BNUUFzcjg0WUc2aWpzSnBDYUdXajc1YzN5T1pLQkI5bU5wUU5QVUtrSzBENndnTEg4TUdveVJ4VFg2WTA1UTRBbllOWE1ad1hNNGVpai85V3BzTS85Q29SbkZRWEdSNk1FYVkrRlh2WEVPM1JPMEphU3RrNk9YdUhWQVRISkUrMVcrVFUzYlNaMmtzTXRxak8wemZTSkNkQnY3eTJkOERNeDZUZlZtZTNxMFpwVEtNTXU0WUwvdDdjaVROdGREa3dQb2doM0Nuang3cWswOFNId2YrZGtzWjdNMnZDT2xmc0YwaFE2SjRlaFBDYUhUTnJNL3pCU09xRDgzZEJFQkNXL0YvTEVtZWgwbk9IZDdvVmwzL1FvLzlHVURra2JqN3l6KzljdnZ1K2REQXR4OE56Q0RUUDRpS2Radms5TVdpaXp2dElMTGVweXNmbFN2VExGQlozN1JMd2lyaXF5UnhZdi96cmdGZC85WFZIaC9PbXpCdkRYNG1pdE1SL2xVYXZzMlZ4NmNSOTRsekFrcGxtM0lSTnk0VEZmdTQ3dHVZczlFUVBJUFZ0YTRQNjR0VitzWjduM3VlZDNjZ0V4MllLK1FMNSt4bXM2b3NrOHFRYlR5dUtWR2RhWDlGUXFrNnFmRG5UNXlreGswVks3S1o2MmI2RE5EVWZRbHFHSHhTTUt2MVAwWE41QnFNZUtHMVA0V3A1UWZaRFVDRWxkcHBvWDBVNnNzMmpJa28yWHBVUktDSWhmYU9xTFBmU2hkdFMzN1pyVCtqRlJTSDJ4WVZWMXJtVC9NQnRSUWh4aU80TVEzaUFHbGFaaSs5UFdCRUlYT1ZudTlqTjFmOTIxbFdMWmt5OWJxYk0zSjJNQUFJOWptdUF4M2d5b0VVYTZQMml2czBFZU52L09SK0FYNnE1U1c2bDVIYW9GdVM2anI2eWc5bGltdStQMEtZS3pmTVhXY1FTZlRYenBPektFS3B3STNZR1hacFNTeTJMVGxNZ2ZtRkEzQ0Y2UjVjOXhXRXRSdUNnMlpQVVEyTmI2ZFJGVE5kNFRmR0hybkVXU0tIUHVSeWlKU0RBWitLWDBWeG1TSGpHUGJRVExWcHFpeGlhMnV5aFEzOTRnQk10N0MzWkFteG4vREpTK2wxZkJzQW8yRWlyL0Mwakc5Y3NkNCsvdHAxMnBQYy9CVkpHYUs5bWZ2cjdNL0NlenRybUNPNXFZMDZFZGk0eEFHdGlFaG5XQWJ6THkyVkV5YXpFMUo1blBtZ1U0UnBXNFNhMFRuT1Q2dzVsZ3QzL3RNcFJPaWdISG1leEJHQU1ZMG1kY0RiRHhXSXo0MU5nZEQ2b3hnSHNKUmdyNVJuVDZ3WkFrVE9jU3RVNE5NT1FOZW1TTzdneEdhaGRFc0MrTlJWR3hNVWhRbW1NMGxsV1JiYm1GR0h6RXFMTTRJdzBINzU3N0t5bytaZisyY1VGSU93OTNnRVkxNzF2UWFNMEhMd3BqcGRSUjZKejdWMGNrRTdYellKMFRtWTl6bkxkemt2YTB2TnJBR0dUNVNVWjV1YUhEa2NHdkkweVNwd2thc0VnWlBNc2VZY3U4NXc4SFBkU05pKzRUNkE4M2lBd0RieGdlRmNCMVpNMmlHWHpGY0VPVWxZVnJFY2thT3lvZGZ2YVlTUTdHdUI0SVNFMG5ZSmMxNVgvMWNpRFRQYlBDZ1lKSzU1VmtFb3I0THZ6TDlTMldEeTR4ais2Rk9xVnlUQUMyWk5vd2hlZWVTSTVoQS8wMmw4VVlrdjRuazlpYVZuK2tDVkVVc3RnazVIeXErZ0ptNlI5dkczcmh1TTkwNGhlL2hGbU5RYVVJQVRCMXkzdncrT214UDRYNVlpNkE1STVqSnVmSENqRjkrQUdOd25FbGxaalVjbzZYaHNPNVQ1K1IzeXh6NXlMVk9uQW4wenVTKzZ6ZGowblRKYkVaQ2JYSmR0cGZZWmZDZUNPcUpIb0UydlBQRlM2ZVJMaklKbEc2OVg5M25mUjBteFNGWHpwMVpjMGx0L1ZhZkRhSW1oVU10Ym5xV1ZiOU00bkdOUUxONjhCSFA3QVI4SWw5ZGtjeHptQnY4UENabHc5Z3VZMGx1cmJCc21OWWx3SlpzQS9CMTUvSGZrYmpid1BkZGFWZWNscy9lbG1ESE5XMnI0Y3JBeDQzZmVOa2ZSd3NhTnEveXlKMGQvcDVoWjZBWmFqejdEQmZVb2swWlU2MmdDeno3eDhlVmZKVEtBOElXbjQ1dklOTFNNMXErSEY5Q1Y5cUYzelA2TWwyMWtQUEwzQ1h6a3VZVWxuU3FUK0lqNHRJL29kNUt3SXMrdERhakRzNjRvd043dE9BZDZldWNHeitLZk8yNmlOY0JGcGJXQTU3MzJiQk5XTzRrSE5wcjlEOTU1TDYxYnZIQ0YvbXdTcno2ZVFhRGpmREVBTnFHTWtGYytOR3hwS1p6Q0Qyc2ovSnJIZCt6bFBROEl6N1ErMkpWSWlWQ3VDS29LL2hsQUVIenZrL1BpcTNtUkwxclQvZkVoOWhvVDVHSm1lWXN3ZzFvdGlLeWRpekovZlMyU2VLSFZ1NlozSkVIamlXOE5hVFFnUDV4ZEJsaThuQzU3WGlOOWhycXVCdTk5aG45enF3bzkyK1BNMkpYdHBlVlpTMFBkcVI1bUR5RHJlTU10RXdzK0Nwd2FSeXl6b1l0ZmN2dDlQSklXMGZKVk5OaS9GRnlSc2VhN3BlTHZKckwrNWI0R09YSjh0QXIrQVRrOWY4S21pSXNSaHFSeTB2Rnp3UlYzWjVkWjNRcUlVOEpRL3VRcGtKYmpNVU1GajJGOXNDRmVhQmpJNCtmTC9vTjMrTFFnakk0enVBZlErM0lQSVBGUUJjY2YwY2xKcHNmcG5CeEQ4NGF0d3R1cGtHcUt2ckg3Y0dObC9RY1djU2k2d2NWRE1MNmxqT2dZYm8rMkJPQVdOTmpsVUJQaXlpdFVBd2JuaEZ2TGJucXc0MmtSM1lwMmt2MmRNZURkY0dPWDVrVDRTNk00NEtIRUIvU3BDZmw3eGdzVXZzK0pOWTlHM08yWC82RkV0OUZ5QW41N2xyYml1K3RsODNzQ3ltU3ZxOWVaYmU5bWNoTDdNVGYvVGE3OGU4MHpTZjBoWVk1ZVVVNytmZjE0anY3WHk4cWp6Znp6enZhSm5ySWR2RmI1QkxXS2NXR3k1L3c3K3ZWMmN2SWZ3SHFkVEIrUnVKSzVvajltYnQwSHk5NEFtak1qandZTlpsTlM2dWl5eE5ud055dDNnZHJlTGI2NHAvMyswOG5Ya2I5MkxUa2tSZ0ZPd2sxb0dFVmxsY09qNWx2MWhmQVp5d0Rvd3MwOTQ0VTh2VUZ3K0EvbnVWcS9VQ3lnc3JtV0lCbkh5VTAxZDBYSlB3cmlFT3Z4L0lTSzZQazR5MncwZ21valpzN2xVOFR0YWtCQWRuZTR2L2FOeG1NcEs0VmNHTXA3c2kweXFzaW9sWFJ1T2kxWjFQN1NxRDNabXAwQ1djeUs0VWJtcDJTWGlYdUk1bkdMQ2llRkhLSE5SSWxjWTNQeXMyZHdNVFlDYXFseVdTSVR3cjJvR1h2eVUzaDFQZjhlUTN3MWJuRDdpbG9jVmpZRGtjWFIzT28xQlhnTUxUVWpOdzJ4TVZ3anRwOTlOaFNWYzVhSVdyRFFUNURIUEt0Q3RoZUJQNHpIY3c0ZHoyZVJkVE1hbWhsSGh0ZmdxSkpISTdOR0RVdzFYTDh2c1NlU0h5S3FEdHFvQW1yUXFzWXd2d2k3SFczb2pXeWhJYTVvejV4SlRhcTE0TkF6RkxqVkxSMTJyUk5VUTZ4b2hEbnJXRmI1Ykc5eWY4YUNEOGQ1cGhvYWNrY05KcCtEdzNEdWUzUk0rNVJpZDdFdUlnc253Z3BYMHJVV2gvbnFQdEJ5TWhNWlo2OU5wZ3ZSVEtaNjJWaVorUTdEcDVyNEswZDdFZkp1aXkwNkt1SVlhdVJoNUVjcmhkdDJRcFRTMWsxQXNjRUh2YXBOYlUzSEwxRjJURnlSMzNXeGI1TXZINWlac3JuM1NEY3N4bG5uc2hPOFBMd21kR04rcGFXblF1T1J0WkdYMzd1aEZUNjRTZXVQc3g4VU9va1k2T044NVdkUTFka2k1ekVyc0pHYXpjQk9kZFdKRUtxTlBpSnBzTUQxR3JWTHJWWStBT2RQV1FuZVR5eVAxaFJYL2xNTTRab2dHR09oWXVBZHI3Ri9ET2lBb2MrK2NuNXZsZjB6a01VSjQwWjFybGd2OUJlbFBxVk9weEtlT3B6S2RGOG1hSysxVnYyM01POWsvOCtxcExveHJJR0gyRURRbG5HbUg4Q0QzMUc4UXFseVFJY3BtUjVid21TVnc5L05zNklIZ3VsQ1JlaHZaLytWck02MEN1L3IzQW9udEZmcmxqZXc3NHNrWWUydXluN0pLUXRGUUJRUko5cnlHaWMvelFPc2JTNHNjVUJjdEE4Y1BUb1EzeDZaQlF1NkRQdTVtMWJuQ3RQOFRsbExZQTBVVFFOVnF6YTVuZmV3M01vcHkxR1BVd0c1anNsME9WWG5pUG1BY21McU81SEc4SHYzblNMZWNFOW9PalBEWGNzVHhvQ0J4WXl6QmRqNHdtbnlFVjRrdkZEdW5pcFM4U1NrdmRhTW5UQk45YnJIVVI4eGRtbUVBcC9QZHFrOXVleHRwMXQrSnJ0WHdwTi9NRzJ3L3FoUk1wU054UTF1aGcva0tPMzBlUS9GeUhVRGtXSFQ4VjZnR1JVNERoRE14WnU3eFhpajlVaTZqbHBXbVFDcUpnM0ZrT1RxM1dLbmVDUllaeEJYTU5BVkxRZ0hYU0NHU3FOZGplYlk5NG95SXBWak1ZZWhBaUZ4L3RxekJYRkhaYUw1UGVlRDc0clc1T3lzRm9VWFk4c2ViVVpsZUZUVWEvK3pCS1ZURkRvcFRSZVhOdVpxNDdRamtXbnhqaXJDb21tTzRML0dyRnRWVjIxRXBNeXc4d3lUaEw1WTU5ZDg4eHRseDFnMXR0U0lDRHdub2Y2bHQvNnpsaVB6Z1ZVTDhqV0JqQzBvMkQ2S2crak51VGhrQWxhREpzcS9BRzJhS0EvL0E3NmF2dzJLTnF0djIyM1ArV3EzU3RSREROS0ZGZ3RzRnVrWXQxR0ZEV29vRlZYaXRhTmhiM1JDeUppNGNNZU5qUk9pUEVEYjRrK0czK2hEOHRzZys1aGhtU2MvOHQySlRTd1lvQ3pBSTc1ZG9xOFFUSGUrRS9UdzBSUVNVRGxVKzZ1QmVOTjNoNmpKR1gvbUg4b2owaTNjYUNOc2p2VG5vaDczQnR5WnBzZmxITHE2QWZ3Sk5DRFg0Uzk4aDQrcENPaEdLRGhWM3J0a0tITWEzRUc0Sjl5OHpGV0k0VXNmTnpDL1JsNW1pZE5uN2d3b045ajIzSEdDUVErT0FacFRUUE1kaVZvdzc0MGdJeXVFdGQwcVZ4TXlOWGhIY251WFJLZHc1d0RVU0wzNThrdGpNWG1Ba3ZJQjczQkxhMXZmRjlCQVVaSW5QWUppd3hxRldRUUJWazdnUUg0b2pmVVEvS0VqbitBL1dSNkVFZTRDdGJwb0xlMW16SGthamdUSW9FMFNMREhWYXVLaHJxMTJ6ckFYQkdiUFBXS0N0NERHZWRxM0p5R1JibVBGVzMyYkU3VDIwKzczQmF0Vi9xUWhoQldmV0JGSGZoWVdYakFMdHMzOEZlbW5vVCs5Ym4xakRCTWNVTW1ZZ1NjMGU3R1FqdjJNVUJ3TFU4aW9uQ3BnVitRcmhnN2lVSWZVWTZKRnhSMFkrWlRDUE0rclZ1cTBHTkx5SlhYNm5yVVR0OEh6RkJSWTFFL0ZJbTJFZVZBOU5jWHJqN1M2WVlJQ2hWUUNXci9tMmZZVWpDNGowWExrelo4R0NTTGZta1czUEIveHErbmxYc0tWQk9qN3ZUdnFLQ09NcTdadHFyM2NRK044Z0JuUGFBcHMrb0d3V09rYnV4blJZai94L1dqaURjbFZyczIyeE1LNHFBckUxWnRrMTQ1NmtpSnJpdzZhYmtOZVJIb2dhUFJCZ2JnRjlaOGkvdGJ6V0VMTjRDdmJxdHJxVjlUdEdTbm1QUzJGOWtxT0lCYWF6SFlhSjliaTNBb0RCdmxaYXNNbHV4dDBCRFhmaHAwMkpuNDExYVZ0NlM0VFVCOFpnRkRrSTZUUDZnd1BZODV3K29VUVNzakllWFZtaW5yd0lkSzJaQWF3YjhTZTZYT0piT2FsaVF4SFNybkFlT05ETHVDbkZlaklicDRZRHRCY1FDd01zWWlSWmZIZWZ1RUpxSmN3S1RUSjhzeDVoakhtSkkxc1BGSE9yNlc5QWhaMk5Bb2QzOG1uTFFrMWdPejJMQ0FvaG9RYmdNYlVLOVJNRUEzTGtpRjdTcjl0TFpwNmxrY2lJR2hFMlY1NDZ3M01hbTUzVnRWa0diQjl3MFlrMlhpUm5DbWJweG1IcjJrNGVTQzBSdU5iak5zVWZESWZjOERadlJ2Z1VEZTFJbEtkWlR6Y1Q0WkdFYjUzZHA4VnRzb1pseVh6TEhPZEFic3AxTFBUVmFIdkxBMEdZREZNYkFXL1dVQmZVQWRId3FMRkFWKzN1SHZZV3JDZmhVT1IyaTg5cXZDQm9PYjQ4dXNBR2RjRjJNNGFLbjc5ay80M1d6QloreFIxTDB1WmZpYTcwWFA5c29RUmVldWhaaVVuWEZERzFUOC9PWE5tc3NUU25ZTysza1ZMQWdlaVk3MTl1RHdMOUZReWNnTFBlc3NOaWhNWmJBS0c3cXdQWnlHMTFHMStaQTNqQVgyeWRkcFlmbWFLQmxtZmNLL1YwbXdJUlVEQzBuSlNPUFVsMktCOGgxM0Y0ZGxWWmlSaGRHWTVmYXJ3TitmOWhFYjFjUmk0MVpjR0RuNlhlOU1NU1RPWTgxVUxKeVhJSFNXRklRSHN0VllMaUpFaVVqa3RsSGlHam50TjUvYnRCOEZ1K3ZwMjh6bDJmWlhOK2RKRHlONkVYaFMrMHl6cXBsL0xTSk5FVVZ4bXU3QnNOZGpBWTBqVnNBaGtOdXVZMEUxRzQ4ZWoyNW1TdCswMHlQYlE0U1JDVmtJd2I2SVN2WXRtSlJQejladDVkazc2YmxmK2xKd0FQSDVLREYrdkhBbUFDTG9DZEcyQWRpaTZkT0huTkpuVG1adG9PR084UTFqeTF2ZU13NmdiTEZUb1FtZkphN25UN0FsODltUmJSa1paUXhKVEtnSzVLYzlJTnptVEpGcDB0cEFQek5teUwvRjA4YlgzbmhDdW1NL2NSLzJSUG45ZW1aM1Zsam9rdHRaRDF6VldYbFVJcUVVN1NMazVJMGxGUlUwQWNFTlhCWWF6TmFWenNWSEEvc0QzbzlobTQyd2JISVJiL0JCUVRLekFpOHMzK2JNdHBPT1pnTGRRekNZUGZYM1VVeEtkMVdZVmtHSDdsaC9SQkJnTVpad1h6VTkrR1l4ZEJxbEdzMExQK0RaNWcyQldOaDZGQWNSOTQ0QitLL0pUV0kzdDlZeVZ5UmhsUDRDQ29Vay9tbUY3K3IycGlsVkJqeFhCSEZhQmZCdHI5aGJWbjJ6RHVJMGtFT0cza0J4OENHZFBPalgxcGgxUE9PWkpVTzFKRUdHMGp6VXkydEs0WDBDZ1ZOWWhta3FxUXlzUk50S3VQZENKcUszV1c1N2thVjE3dlhnaXlQcmw0S0VFV2dpR0YxZXVJNFFrU0ZIRmYwVERyb1FpTE5LSmlMYmRoSDBZQmhyaVJOQ0hQeFNxSm1OTm9rZXRhaW9vaHFNZ2xoNndMdEVHV1NNMUVaYlFnNzJoMFVKQUlQVkZDQUpPVGhwUUdHZEtmRm92Y3dFZWlCdVpITjJPYjR1Vk03K2d3Wkx6MUQ5RTd0YTRSbU1aMjRPQkJBZzdFaDZkTFhHb2ZaNFUyVEZPQ1FNS2p3aFZja2pyeWRSUytZYXFDdzFrWXQ2VWV4dXpiTkVEeVlMVFpuclkxUHpzSFpKVDRVK2F3TzJ4bHFUU1l1Nm4vVTI5TzJ3UFhnR09FS0RNU3ErelRVdHljOCs2aUxwMGl2YXY0Rkt4K3h4Vnk0RnhoSUYvcHVjVkRxcHNWZTJqRk9mZFpoVHpMejJRanR6dnNUQ3ZEUFU3YnpESDJlWFZLVVY5VForcUZ0YVNTeG5ZZ1lkWEt3VnJlSWd2V2hUOWVHREIyT3ZuV3lQTGZJSUlmTm5mSXhVOG5XN01iY0gwNW5obHNZdGFXOUVaUnN4V2NLZEVxSW5xMURpWlBLQ3o3aUdtQVU5L2Njbm5RdWQycE5nSUdGWU9UQVdqaElyZDYzYVBEZ2ZqOC9zZGxENGwrVVRsY3hUSTlqYmFNcXFOMGdReFNIczYwSUFjVzNjSDRwM1YxYVNjaVRLQjI5TDF0ejJlVVFoUmlUZ1R2bXFjK3NHdEJOaDRreTBtUUpHc2R5Y0JSRVArZkFhU3MxRVJFRFZvNWd2Z2k1K2FDTjdORUN3MzBvd2JDYzFtU3BqaWFoeU5Wd0pkMWppR2d6U3dmVHB6ZjJjNVhKdkcvZzFuMGZIODhLSE5uZit1N1ppUk1sWHVlU0lzbG9KQlV0VzllenZzeDlncmZzWC9GTnhuYnhVMUx2ZzBoTHhpeHlwSEtHRkFhUHUweENEOG9EVGVGU3lmUlQ2czgxMDlHTVVaTDhtMnhYcDhYMmRwUENXV2RYODRpZ2E0QnJUbE9mcW94NHNocUVnaC9IdDRxUnN0NTJjQTF4T0lVdU94Z2ZVaXZwNnY1ZjhJVnlhcnlFZHBWazcyRVJBd2RUNGFvWTF1c0JnbVArMG0wNlEyMTZIL251YnROWXhIYU9JWWpjYWNoM0E4RXovemMwS2NTaGhlbDBIQ1lqRnNBMEZqWXF5SjVaVUgxYVp3Myt6V0MwaExwTTZHRGZjQWRuOWZxMm9yUG1aYlc2WFhyZitLcmM5UnR2SUk1amVEM2RGb1QxS3daSnd4ZlVNdmM1S0xmbjhyUk9XMjNKdzg5c0oyYTVkcEIzcVdEVUJXRjJpWDhPQ3VLcHJIb3NKMm1mbEJSK1dxczg2VnZnSS9YTW5zcWI5NytWbEtkUFZ5c2N6UGo4Smh6ZitXQ3ZHQkhpakFxWWxhdmJGNjBzb01XbEhidktUK1NjdmhwcmdlVGxuNTF4WDBzRitFYWRjL2wyczJhNUJna1ZiSFl5ejBFODVwMExzdHFIK2dFR2lSODRuQlJSRkluOGhMU1pyR3dxalozRTI5Y3VHaSs1WjVicDdFTThNV0ZhOXNzUy92eTRWckRmRUNTdjdEU1U4NERhUDBzWEkzQXA0bFd6blE2NW5Rb1RLUldVMzBnZDdObjhab3dVdkdJeDRhcXlYR3dtQS9QQjRxTjhtc0pVT0RlelVIRWwwVlA5dW8rY1o4dlBGb2RTSUI0QzdsUVlqRUZqOHl1NDlDMktJVjNxeE1GWVRldkc4S3FBcjBUUGxrYnpISG5UcERwdnB6emlBaU5GaDh4aVQ3Qy9UaXlIMEVndVV3NHZ4QWdwbkUyN1dJeXBWK3VGTjJ6Vzd4bmlGL243NXRyczlJSjVhbUIxelhYWjFMRmtKNkdiUy9kRm9remw0Y2MybWFtVndoTDRYVTBBdjVnRFdBbCthRVdoQVA3dDJWSXdVK0VwdmZPUERjTEFTWDdIN2xacFhBMlhRZmJTbEQ0cVUxOE5mZk5Qb0FLTU5TY2NCZk85WVZWZ21sVzRSeWRCcWZIQVY3K2hyWjg0V0pHaG82Yk5UMFlNaHh4TGRPeC9kd0dqMG95YWs5YUFrTko4bFJKelV1QThzUitmUHlpeVRnVUhpbzUrUHArWWFLbEhyaFI0MWpZNU5FU1BTM3grelRNZTBTMkhuTE9LQ09RUHBkeEt5dmlCdmRIckNEUnFPK2w5NkhoaE5CTFhXdjR5RU11RVVZbzhrWG5ZSk04b0lnVk00WEoreFhPZXY0WWJXZXFzdmdxMGxtdzQvUGlZcjlzWUx0K1c1RUF1WVNGbkpFYW44Q3dKd2J0QVNCZkxCQnBKWmlSUG9yL2FDSkJac00rTWh2UzdaZXB5SHZVOG01V1NtYVpueHVMdHM4b2psNktrUzhvU0FIa3E1R1dsQ0IvTmdKNVczck8yQ2oxTUs3YWh4c0NyYlRUM2EwVi9RUUgrc0VyeFY0WFVXREh4MGtrRnkyNWJQbUJNQlE2QlUzSG9IaGhZY0pCOUpoUDZOWFVXS3huRTByYVhIQjZVOUtIcFdkUUNRSTcycWV2cDVmTXpjbStBdkM4NXJzeW5WUWhydURBOWZwOUNPZTdONTZjZzFVS0dTYXM4OXZyTitXbEdMWVR3aTVXKzB4WWRLRUd0R0NlTkp3WEtEVTBYcVU1dVFZbldzTXdURU5MR3RiUU12b0dqSUZJRU16Q1JhbDRybkJBZzdEL0NTbjhNc0N2UytGREpKQXpvaWlvSkVoWkpnQXA5bjIrMVl6bnI3SCs2ZVQ0WWtKOU1wajYwSW1jVzRpNGlIRExuOVJ5ZEI4ZHgzUVltM3JzWDZuNFZSclpEc1lLNkRDR3drd2Q1bjMvSU5GRXBrMTZmWXBQNkp0TVFwcUVNemNPZlFHQUhYQlRFR3p1TEowM0dZUUw5Ym1WMi83RXhEbFJmK1V2ZjFzTTJmclJ0Q1dtYWwxMnBNZ3RvbnZTQ3RSNG4xQ0xVWlJkVEhESFAxT3R3cWQrcmNkbGF2bktqVUIvT1lYUUhVSnpwTnlGb0twUUsrMk9nckVLcEd5SWdJQmduMnk5UUhuVEppaFpPcEV2T0tJb0hBTUdBWEhtajIxTHltMzlNYmlvdzRJRis3N3hOdWV3emlOVkJ4cjZLRDVlKzlIelpTQklsVWEvQW1zREZKRlhleXJRYWtSM0Z3b3dUR2NBREpIY0VmaEdrWFlOR1NZbzRkaDRieHdMTSsyOHhqaXFrZG4wLzNSNFVFa3ZjQnJCZm4vU3pCYzFYaEtNMlZQbEpnS1NvcmpEYWM5NlYyVW5RWVhsMS95WlBUNERWZWxnTytzb01qZXhYd1lPNThWTGw1eEluUVVaSThqYzNIMkNQbkNOYjlYMDVuT3hJeTRNbGVjYXNUcUdLNnMyYXo0UmpwRjJjUVAyRzI4Uis3d0RQc1pEWkMva1d0amRvSEM3U3BkUG1xUXJVQWhNd0tWdXhDbVlUaUQ5cS9PN0dIdFp2UFNOMENBVVFOL3J5bVhaTm5pWUxsSkRFNzBic2s2WHhzaDRrRE9keGU3QTJ3bzdQOUY1WXZxcVJESTZicmY3OXlQQ1NwNEkwalZvTzRZbkxZdFg1bnpzcFI1V0I0QUtPWXRSMXVqWGJPUXBQeVlEdmZSRTNGTjV6dzBpN3JlZWhkaTd5VjBZRFJLUmxsR0NHUms1WXorVXYxZllsMlp3cm5Hc3FzamdBVm8weEVVYmE4b2hqYU5NSk53VHdaQS93QkRXRlNDcGcxZVVIOE1ZTDJ6ZGlveFJUcWdHUXJEWnhReU56eUJKUFhaRjArb3hJVEpBYmo3b05DNUp3Z0RNVUphTTVHcWxHQ1djLy9LQ0lySSthY2xFZTRJQTB1enY3Y3VqNkdDZGFKT05waTEzTzU0NHZidElIQkYrQStKZURGVVFOeTYxR2tpM3J0eVE0YVV5d242cnUzMTQvZGtHaVA4SXdqbzBKLzJUeHM0OVprd0VsNG14K2lZVVVPNTVJNnBKelU0UCs3UlJzK0RYWmt5S1VZWnFWV3JQRjRJOTRtNFd4MXRYZUU3NG85R3VYOTc3eXZKL2prZGFrOCtBbW9IVmpJMTVWK1d3QmRBUkZWMklQaXJKZ1ZNZHNnMVBlejJWTkhxYTdFSFdkVGtsM1hUY3lqRzlCaXVlV0Z2UWZYSThhV1NrdXVSbXFpL0hVdXpxeXZMSmZOZnMwdHhNcWxkWVlmbFdCMUJTMzFXa3VQSkdHd1hVQ3BqaVFTa3RrdUJNV3dIalNrUXhlZWhxdzFLZ3owVHJ6bTdRYnRneGlFUERWbVdDTkNBZUNmUk9UcGhkMVpOT2h6THk2WGZKeUc2WGdkNU1DQVp3NHhpZTBTajVBblkxL2FrRGdOUzlZRmwzWTA2dmQ2RkFzZzJnVlFKdHpHN0xWcTFPSDJmcmJYTkhXSC9OWTg5Tk5aNFFVU0pxTDJ5RWNHQURiVDM4WDBiR2R1a3FZbFNvbGlLT2NzU1R1cWhjYWVtVWVZTExvSTgrTVpvcjJSeFhUUlRoRjFMckhmcWYvNUxjTEFqZGw0RUVSZ1V5c1lTMmdlRSt5RmRhc1U5MVVnVURzYzJjU1ExWm9UOSt1TE93ZGdBbWlmd1FxRjAyOElOYzJJUUVEZlRtVXczZVp4dno3VWQxejN4YzFQUWZlQ3ZmS3NCOWpPaFJqN3JGeWI5WGNEV0xjWWowYkJ5b3N5Y2hNZXpNTFZrRmlZY2RCQlF0dkk2SzBLUnVPWlFIMmtCc1lISmFYVGt1cDhGMGVJaE8xL0djSXdXS3ByMm1vdUI3ZzVUVURKTnZPUlhQWGEvbVU4YmgyN1RBWllCZTJzS3g0TlN2NU9qbkhJV0QyUnV5c0N6QmxVZmVOWGhEZDJqeG5Ib1VsaGVKM2pCQXB6VVJ5MGZ3bTJGd3dzU1UwY2FRR2wwS3Y4aG9wUlFFMjExTm52dExSc21DTnJoaHBFRG9OaVpFekQyUWRKV0tiUlJXbmFGZWRYSEFFTFNOMHQwYmZzQ3NNZjBrdGZCb1hCb05BK25aTjkrcFNsbXV6c3BGZXZtc3FxY01sbHp6dmt5WHJ6b0ErUnlvMWVQWHBkR09vSnZoeXJ1K0VCUnNtT3A3TVhaMHZOVU1VcUhMVW9LZ2xnMXA3M3NXZVptUGMrS0F3MHBFMnpJc0ZGRTVINDE5Mkt3RHZEeGR4RVlvREJETlpqYmcyYm1BRFRlVUtLNTdJUEQ0ZlRZRjRjNkVuWHgvdGVZTU9SQkR0SWhQSm5laVpueTdOdi96RytZbWVrSUtDb3hyNmthdUUyYlp0Qkx1ZmV0TkcwQnRCWTdmKy9JbVV5cE1CdmRXdS9RN3ZUTVJ6dzVhUUdaV3VjMVYwSEVzSXRGWU1JQm5vS0daMHhjYXJiYS9UWVpxNTBrQ2FmbEZ5c1lqQTRFREtIcUdkcFlXZEtZbW0rYTdUQURtVzM1eWZuT1lwWllya3BWRXRpcUYwRXVqSTAwYWVwbE5zMmsrcXlGWk5lRTNDRFBMOVA2YjRQUS9rYXRhSGtWcExTRVZHSzdFWDZyQWE3SVZOcnZadEZ2T0E2b2tLdkJnTXRGREFHWk94ODhNZUJjSjhBUjNBZ1VVZUl6bkFONnRqQ1VpcEdEWk9ObTFGaldKcDRBM1FJelNhSU9tWjdEdkYveXNZWWJNL2ZGRE9WMGpudEFqUmRhcHhKeEwwZVRocEVoS09qQ0REcTJrcyszR3J3eHFJRktMZTFXZE96SUk4WElPUEdud3k2TEtYVmZwU0RPVEVmYVJzR3VqaHBTNGhCSXNNT3FIYmwxNlBKeGM0RWthVnU5d3BFWWxGLzg0TlN2NVp1bTRkck1mcDl5WGJ6ekFPSnFxUzRZa0k0Y0JyRnJDN2JNUGlDZmdJM25OWkFxa2szUU9acVIreXlxeCtuRFFLQkJCWjdRS3JmR01DTCtYcHFGYUJKVTB3cGtCZEFoYlI0aEpzbVQ1YXlubHZrb3VveG0vTmpENW9lNkJ6VklPOXVrdE0rLzVkRUM1UDd2WnZhcm11Ty9sS1h6NHNCYWJWUElBVHVLVHJ3YkpQOFhVa2RNNnVFY3RIS1hJQ1VKR2phWklXUmJacDhjenF1UVlmWTZ5bkJVQ2ZJVStnRzZ3cVNJQm1ZSW05cFpwWGRhTDEyMVY3cTBWakRqbVFuWHZNZTd5c29FWm5aTDE1QjBTcHhTMWpqZDgzdU5JT0tad3U1TVB6ZzJOaE94M3hNT1BZd0VuMkNVemJTcndBczVPQXRyejNHQWFVa0pPVTc0WHdqYVlVbUdKZFpCUzFOSlZrR1lyVG9JTkxLRGp4Y3VJbHlmVnNLUVNHL0c0RHlpTzJTbFF2SjBkME90MXVPRzVJRlNBa3ErUFJWTWdWTUR2T0lKTWRxamVDRktVR1JXQlc5d2lnWXZjYlU3Q1FMLzdtZUYyS1pBYVdsKzR5OXVob3dBWDdlbG9nQXZJdEFBeG8yK1NGeEdSc0hHRVc5Qm5obFR1V2lnWXhSY25WVUJSUUhWNDFMVitGcjVDSllWN3NIZmV5d3N3eDRYTXRVeDZFa0JoUitxOEFYWFVBOHVQSjczUGI0OWk5S0c5Zk9sanZYZXlGajlpeGdibzZDY2JBSjdXSFdxS0h5L2grWWpCd3A2VmNON004OUZHelEwNHFiclF0Z3JPRnliZzNnUVJUWUc1eG43M0Fya2ZRV2pDSlJPd3kzSjM4RHgvRDdqT2E2QkJOc2l0RXcxd0dxNzgwRUVpb09lRCtaR3AySjY2QURpVkdNYXlpSFl1Y01rOG5USzJ6elQ5Q25FcmFBazk1a1FqeTRrMEdSRWxMTDVZQUtMUUVySjVycDFlYXk5TzRGYjZ5SkdtOVU0RmFNd1BHeHRLRDZvZElJSEtvV25oS28xVThLSXBGQytNVm41OVpYbWM3WlRCWmZzZzZGUThXMTBZZlRyNHUwbllycEhaYloxalhpTG1vb0YwY09tMCttUG5KQlhRdGVwYzduMEJxT2lwTkNxSTZ5eWxvVGVSU2hOS0gwNEZJbzBnY01rMEgveFRoeU40cFBBV2pERGtFcDNsTk5QUk5WZnBNSTQ0Q1dSbFJnVmlQNjRlSzBKU1JwMFdVdkNXWXVtbFcvYzU4VmN6L3lNd1ZjVzVvWWI5KzI2VEVod3ZieGlOZzQ4aGwxVkkxVVhUVS8vRXRhK0JNS25HVWl2Y3RmTDV3SU5ERDBnaVFMMWlwdDZVN0M5Y2Q0K2xncVkybE1VWjAyVXY2UHJzK1pFWmVyN1pmV0JYVmdobGZPT3JDbHdzb09GS3pXRWZ6NlJadTFlQ3MrSzhmTHZrdHM1K0JYMGd5ckZZdmUwQzNxSHJuNVUvT2g2RC9DaWhtV0lyWTdIVVpSaEpheGRlK3RsZHU2YWRZSitMZVh1cFF3MFhFeEMzNlJFVGRORnhjcTlnbE11NGNOUVNYOWNxUi9HUVlwK0l4VWtJY05HV1ZVN1p0R2E2UDNYQXlvZFJ0MFhlUzNUcDAxQW5DaDBaYlVoNFZyU1plVjlSV2ZTb1d5eG5ZM2h6Y1ozMEcvSW5EcTR3eFJyRWVqcmVCeG5oSVFia3hlbnhrYXhsK2s3ZUxVUWtVUjZ2S0oyaURGTkdYM1dtVkExeWFPSCttdmhCZCtzRTZ2YWNRekZvYndZNUJxRUFGbWVqd1c1bmU3SHRWTm9sT1VnSmM4Q3NVeG1jL0xCaThONW11OVZzSUE1SHlFcm5TNnplQ3o3VkxJOStuL2hiVDZoVG9rTVhUVnlYSlJLU0cyaGQybGFiWFRidG1LNGZOSDNJWkJQcmVTQTRGTWVWb3VWTjN6RzV4OUNpR3BMdy8zcGNlbzRxR3FwK3JWcCt6Kzd5UTk4b0VmK255SDRGMytKOUloZURCYTk0V2k2M3pKYkxCQ0labTdQMGFzSEdwSUp0M1B6RTNtMFM0WUlXeVhCQ1ZYR2lrajhNdWREUEIvNk5tMnY0SXhKNWdVMGlpMGd1eTVTVUhxR1VZelRQMGpJSlU1RTgyUkhVWHRYNGxEZHJpaEJMZFAxWWFHMUFHVUMxMnJRS3VJYUd2Q3BNalpDOWJXU0NZbmpEbHZwV2JrZFhNVE5lQkhMS2l1b296TUdJdmtjem1QMGFSSlNKOFBZbkxDVk5oS0hYQk5ja0g3OWU4WjhLYzJ3VWVqNHNRWm9IOHFEUkdrZzg2bWFXL1pRV0dObkxjWG1xM0ZsWE02c3NSLzNQNkUvYkhNdm02SExydjF5Uml4aXQyNUpzSDMvSU9yMlVWNEJXSmh4WFc1Qko2WGRyMDduOWtGM1pOQWs2L1hwYzVNU0ZtWUoyUjdiZEw4S2s3cTFPVTlFbGcvdEN4SjhnaVQyN3dTVHlTRjBHT3hnNFBiWUpkaS9OeWlhOU5uODlDR0R1bGZKZW1tMWFpRXIvZWxlR1NOKzVNUnJWSjRLNmxneVRUSVczaTljUTBkQWk2Rkh0MFlNYkgzd0RTQXRHTFNBY2Nlenp4SGl0dDFRZGhXMzZDUWdQY0E4dklJQmgzL0pOamYvT2JtYzJ5enBrOGVkU2xTNGxWZHdnVzV2emJZRXlGb0Y0R0NCQmJ5MWtlVk51ZUhBSCtldmkrSDdvT1ZmUzNYdVBRU05UWE9PTkFiekplU2I1c3R3ZFFIbDFaanJHb0U0OUk4K0E5ajN0K2FoaFFqNzRGQ1NXcFpyajd3UlNGSkpubndpMVQ5SEw1cXJDRlcvSlpxNlA2MlhrTVdUYit1NGxHcEtmbW13aUpXeDE3OEdPRzdLYnJaR3F5V3dtdXlLV1BrTnN3a1oxcTh1cHRVbHZpSWkrQVhoMmJPT1RPTHNydE5rZnFiUUplaDI0cmVlYmtJTkxranV0NXI0ZDlHUi9yOENCYTlTVTBVUWhzblpwNWNQK1JxV0NpeFJtN2k0WVJGYnRaNEVBa2h0TmE2akhiNmdQWVF2N01LcWtQTFJtWDNkRnNLOFhzUkxWWjZJRVZyQ2JtTkRjOG81bXFzb2dqQVFmb0M5QmM3UjZnZncwM20rbFFwdjZrVGZoeHNjRElYNnMwdytmQnh0a2hqWEFYcjEwVW91V0N4M0MvcC9GWXdKUlMvQVhSS2tqT2I1Q0xtSzRYUmUwK3hlRER3VmtKUFphdTUyYnpMRURIQ3FWMGY0NHBQZ0tPa1lLZ1RaSjMzZm1rM1R1OFNkeEowMlNITThGZW01U01zV3FSeWkyRjF5bmZSSnN6Y0ZLeWtkV2xOcWdEQS9MOWxLWUJtYzdadS9xOWlpMUZQRjQ3VkprcWhpclVvYjUzem9pSnRWVlJWd01SMzRnVjlpcWNCYUhiUnU5a2t2cWszeU1wZlJGRzQ5cEtLaklpcTdoL1ZwUndQR1RIb1k0Y2cwNVg1MDI4aUhzTHZVVy91eitralB5SUVoaGNLVXdDa0pBd2JSOXBJRUdPbjh6NnN2QU84aTg5c0ozZEw1cURXRlliUytIR1BSTXhZd0pJdEZRTjg2WUVTZUpRaG4ydXJHaUxSZmZRZUxwdERsOGRBZ2IrVHA0N1VRUHhXT3cxN09lQ2hMTjFXbnpsa1BMMVQ1TytPM01lbnBuNEMzSVk1TEVlcEhwblBlWkhidnVXZmVWdFBsa0g0TFpqUGJCcmtKVDNOb1JKekJ0ODZDTzBYcTU5b1ErOGRzbTB5bVJjbVF5bjh3NzFtaG1jdUVJNWJ5dUYrQzg4VlBZbHkyc0V6amx6QVEzdmRuLzErSHpndXc2cUZOTmJxZW5oWkdiZGlHNlJ3WmFURzdqVEEyWDlSZFhqRE45eWoxdVFweU80THg4S1JBY1pjYlpNYWZwNHdQT2Q1TWRYb0ZZNTJWMUE4TTloaTNzc285Myt1cHJFMHFZTk1qa0UyMkN2SzRIdVV4cU43b0l6NXBXdUVUcTFsUUFqcWxTbHFkRDJSbnIvZ2dwL1RWa1FZam45bE1mWWVsazJzSDVIUGRvcFlvN01Id2xWMW9yOUJ4ZitRQ3lMem05MnZ6RzJ3amlJakMvWkhFSnplcm9KbDZiZEZQVHBaaG81TVYyVTg2ZkxRcXhObEdJTXFDR3krOVdZaEo4b2IxcjArV2h4ZGU5TDJQZHlzRVR2OTdPK3hWdytWTk4xVFpTUU41STZsOW01SXA2cExJcUxtNGExQjFmZkg2Z0h5cVQ5cDgyTk9qbnRSV0dJb2ZPM2JKejVHaGt2U1dic1h1ZVRBTWFKRG91OTlrR0xxRGxod0JaTkVRNG1LUHVEdlZ3U0s0V21MbHVIeWhBOTdwWmlWZThnK0p4bW5KRjhJa1YvdENzNEpxL0hnT29BRUdSOXRDRHNEYkRtaTNPdmlVUXBHNUQ4WG1LY1NBVWFGTFJYYjJsbUpUTllkaHRZeWZqQllaUW1ONXFUNUNOdWFEM0JWbmxrQ2s3YnNNVzNBdFhrTk1NVHVXNEhqVUVSU0puVlEwdnNCR2Exd28zUWg3MTE1WEdlVEYzTlR6OHcwNDQwQWdVN2MzYlNYTy9LTUlOYUlXWGQwb0xwb3EvMC9RSnhDUVNKOVhuWXkxVzdUWUxCSnBIc1ZXRDFhaHNBN0ZqTnZSZDZteENpSHNtOGc2WjBwbnpxSXBGMWRIVXRQMklUVTVaMWhaSGJ1K0wzQkVFU3RCYkw5WFl2R2ZFYWt2MWJtZitiT1pHbm9pdUhFZGxCbmFDaHhZS056QjIzYjhzdzhZeVQ3QWp4Zms0OWVKSUF2ZGJWa2RGQ2UySjBnTWVmaFEwYklaeGh4M2Z6TUl5c1FOaU44UGdPVUt4T011cjEwTGR1aWdSRURSTVp5UDRvR1dyUDFHRlk0dDZncm9BU3NaNDIxb3M0OHdBZG5yYm92TmhMdDdTY05VTGt3WjVBSVpKVHJiYUtZVExqQTFvSjNzSXVOL2FZb2NtLzl1b1FIRUlsYWNGMXMvVE0xZkxjUFRMMzhPOWZPc2pNRUl3b1BLZnZ0N29wdUk5RzJIZi9QUjRhQ0xEUTd3Tm1JZEV1WEovUU5MNzJrNXE0TmVqQWxkUGZlM1VWVnF6a3lzOFlaL2pZT0dPcDZjK1l6UkNyQ3VxME0xMXk3VGlONnFrN1lYUk1uL2d1a3hyRWltYk1RanIzandSTTZkS1ZaNFJVZldRcjhub1BYTEpxNnloNVIzRUgxSVZPSEVTc3QvTEl0YkcyRDJ2UnNaUmtBT2J6dlFBQUQzbWIzL0c0TnpvcEkwRkFpSGZicHEwWDcyYWRnNlNSais4T0hNU2h0Rnh4TFpsZi9uTGdSTGJDbHdsNVdtYVlTcyt5RWprcTQ4dFk3WjJiRTBOOTFtSnd0K3VhME5sUkpJRGgwSGlrRjRVdlNWb3JGajJZVnU5WWVTNXRmdmxWalBTb051L1p1NmRFVWZCT1Q1NTVoYWhCZE4zU2E1WHVqMlJ2YXUxbFFOSWFDOTQ0eTBSV2o5VWlORHNrQUsxV29MK0VmWGNDNkliQlhGUnlWZlgvV0tYeFBBd1V5SUFHVzhnZ1owOGhjaWpLVHQxWUtuVU82UVB2Y3JtRFZBYjBGQ0xJWG41aWQ0ZkQvSng0dHcvZ2JYczdXRjliMlJnWHRQaExCRzl2RjVGRWtkSEFLclFIWkFKQy9IV3ZrN252enpEeklYWmxmRlRKb0MzSnBHZ0xQQlk3U1FUakdsVXZHNTc3eU51dFoxaFRmczkvMW5rU1hLOXp6S0xSWjNWT0RlS1VvdkplMFdDcTF6Vk1ZeENKTWVubU56UElVMlM4VEE0RTd3V21iTmt4cTlySTJkZDZ2MFZwY0FQVk14bkRzdldUV0ZheXlxdktaTzdaMDhhNjJpL29IMi9qeGY4cnBtZk82NGluM0ZMaUwxR1g4SUd0VkU5TTIzeUdzSXFKYnhEVHkrTHRhTVdEYVBxa3ltYjVWclFkek92cWxkZVUwU1VpNklpckc4VVozamNwUmJ3SGExQzBEd3c5Ry9TRlgzZ1B2VEpRRStreXorZzFCZU1JTEtLTytvbGNIemN0T1dnenhZSG5PRDdkcENSdHVaRVhBQ2pncWVzWk1hc29QZ251REM0blV2aUFBeERjNXBuZ2pvQUlUSWt2aEt3ZzVkNjA4cGRyWmNBK3FuNVRNVDZVby9RekJhT3hCQ0xUSlgzTWdrODVyTWZzbld4ODZvTHhmN3AyUFg1T05xaWVUYS9xTTN0UHc0Wlh2bEFwODNOU0Q4RjcrWmdjdEsxVHBvWXd0aVUyaDAySENHaW9INXRrVkNxTlZUTUg1cDAwc1J5MkpVMXF5REJQMkNJSS9EZzRXRHNJbCt6Z2VYNzU4OXNyeDZZT1JSUU1CZktib2RiQjc0M1RsNFdMS09FbndXVVZCc205NFNPbENyYWNVNzJNU3lqMDY4d2RwWWp5ejFGd0MyYmpRbnhuQjZNcC9wWit5eVpYdGd1RWFZQitrcWhqUTZVVW13U0Zhek9iK3JoWWpMYW9pTSthTjkvOEtLbjB6YUNURnBOOWVLd1d5Ny91NEVIek80NlRkRlNOak1mbjJpUFNKd0RQQ0ZIYzBJMSt2amRBWnc1WmpxUi91emk5Wm4yMG9BYTVKbkxFay9FQTNWUldFN0ovWHJ1cGZGSlB0Q1V1cUhQcG5sTDdJU0p0UnBTVmNCOHFzWkNtMlFFa1dvUk90Q0tLeFVoM3lFY01iV1lKd2s2RGxFQkcwYlpQNmVnMDZGTDN2NlJQYjdvZEd1d203Rk44Zkc0d29xdEI4ZTdNNWtsUHBvOTdHb09iTnd0K2x1ZFRBbXh5QzVobWNGeCtkSXZFWktJNmlnRktIcUxIMDFpWTFvNzkwM1Z6RzlRR2V0eVZ4NVJObUJZVVUrekl1U3ZhL3lJY0VDVWk0cFJtRTNWa0YyYXZxdWxRRVVZNHlaL3dtTmJvQnpQbUFQZXkzK2RTWXRCWlVqZVdXVDBwUHdDejRWb3p4cDl4ZUNsSVU2MHF2RUZNUUNhUHZQYUE3MFdsT1A5Zi9leTM5bWFjdnBHQ1ZhK3pmYThnTzQ0d2J4cEpVbEM4R04vcFJNVFF0elk4WjgvaGlOclUrWnE2NFpmRkdJa2RqN203YWJjSzFFQnR3czFYNEovaG5xdmFzUHZ2RFNEWVdOK1FjUVZHTXFYYWxrRHRUYWQ1cllZMFRJUjFFcW94M2N6d1BNaktQdkY1c0Z2MTdUaHVqcjFJWjFZdGw0VlgxSjB2alhLbUxZNGxtWGlwUkFybzBxVkdFY1h4RVZNTUVsNTRqUU1kNEo3Umpnb21VMGoxcHRqeXhZK2NMaVN5WFBmaUVjSVMybFdESzNJU0F5NlVaM0hiNXZuUG5jQTk0NDExamN5NzVheTZCNkRTVHpLNlVUQ1pSOXVEQU50UEJydklEZ2pzZmFyTWl3b2F4Mk9sTHhhU29ZbjRpUmdrcEVHcUVrd294NXR5SThhS2tMbGZaMTJsTzExVHhzcVJNWTg5ajVKYU81NVhmUEpQREwxTEdTbkM4OFJlOUFpK051NWJaanR3UnJ2RklUVUZIUFI0Wm14R3NsUU1lY2diWk83bkhrMzJxSHhZa2R2V3B1cDA3b2pjTUNhVnJwRkF5RlpKSmJOdkJwWmZkZjM5SGRvMmtQdFQ3djAvZjhSL0I1Tno0ZjF0OS8zek5NLzduNlNVSGZjV2s1ZGZRRkp2Y0pNZ1BvbEdDcE9GYi9XQzBGR1dVMmFzdVF5VCtybTg4WktaNzhDZWkvQ0FoOTM5Q0gwSllicFpJUHR4YzJ1ZlhxalMzcEhIOWxuV0s0aUo3T2pSL0VFU3BDbzJSM01ZS3lFN3JIZmhUdldobzRjTDFRZE40akZUeVI2c3lNd0ZtMTI0VFZERFJYTU52ZUkxRHAvbnR3ZHo4azhreHc3aUZTeDYrWXg2TysxTHpNVnJOMEJCenppWmk5a25lWlN6Z29sbEJuVndCaDZvU09QSFhyZ2xyT2orUW1SL0FFU3JoRHBLcldUKzgvQWlNRHhTLzV3d1JOdUdRUExsSjlvdm9taEpXbjhzTUxWSXRROE4vN0lYdnREOGtkT29IYXcrdkJTYkZJbVFzdi9PQ0FJdWk5OUUrWVNJT01sTXZCWGtBdCtOQVpLOHdCOUpmOENQdEIrVE9VT1IrejcxZC9BRlhwUEJUNitBNUZManhNakxJRW9KenJRZnF1dnhFSWkrV29VekdSMUl6UUZOdmJZT254YjJQeVEwa0dkeVhLelcyYXhRTDhsTkFYUGs2TkVqcXJSRDFvWnRLTGxGb29mclh3MGRDTldBU0h6eSs3UFN6T1VKM1h0YVBac3hMRGpyK280MWZLdUtXTm1qaVp0ZmtPekl0dmxWMk1ER1NoZUdGMG1hMDRxRTNUVUVmcUpNclhGbTdEcEsrMjdEU3ZDVVZmN3JiTm9salBoaGE1VzdLQnFWcTBTaFVTVGJSbXVxUHRRcmVWV0g0SkVUNXlNaHVxTW9TZDRyL044c0RtZVFpUVF2aTF0Y1p2N01vYzdkVDVYNUF0Q0Q2a05FR1pPelZjTllscFg0QWJUc0xnU1lZbGlpUHlWb25pdVlZeVN4c0J5NWNnYjNwRCtFSzBHcGIwd0pnMDMxZFBnYUw4Slp0NnNJdnpOUEVIZlZQT2pYbWFYajRiZDR2b1h6cFo1R0FwTWhJTGdNYkNFV1oyendnZGVRZ2pOSExiUEl0K0txeFJ3V1BMVE42SHdaME91aWpqNFVGK1NnMEF1OFh1SUtXMFd4bGV4ZHJGckRjWko4U2hhdWF0M1gwWG1IeWdxZ0wxbkF1MmhySkZiNHdaWGtjUytpMzZLTXlVMXlGdll2MjNiUVVKaS8zeVFwcXIvbmFVT29pRVdPeGNreXEvZ3E0M2RGb3UxRFZEYVlNWks5dGhvNytJWFhva0JDczVHUmZPY0JLN2czQStqWFEzOUs0WUE4UEJSVzRtNSt5UjBaQXhXSm5jalJWYklUdklBUEhZUnQxRUozWUxpVWJxSXZvS0h0ekhLdFV5MWRkUlVRMEFVTzQxdm9uWkRVT1crbXJzencrU1cvNlEvSVVnTnBjWEZqa003RjRDU1NRMkV4Wmc4NW90c01zN2txc1FENE94WWVCTkRjU3BpZmpNb0xiN0dFYkdXVHdhc1ZPYm1CL2JmUGNVbHEwd1loWENZRURXUlcwMlRQNWJCcllzS1RHV2puV0RESjFGN3pXYWkwelcvMlhzQ3V2QlFqUEZjVFlhUVgzdFNYUlNtOGhzQW9EZGpBcksvT0ZwNnZjV1lPRTdsaXpQMFljKzhwMTZpNy9OaVhJaWlRVHA3YzdYdXM5MjVWRXRsS0FqVWRGaHlhaUxUN1Z4RGFncHJNRndpeDR3WjA1dTBxajdjRFdGZDBXOU9ZSEl1M0piSktNWFJKMWFZTm92dWdnK1FxUk43Zk5IU2kyNlZTZ0JwbitKZk11UG8zYWVxUFdpay93STVSejNCV2FyUFFYNGk1K2RNMG5wd1ZPc1grS3NPaEM3dkRnK09Kc3o0UTV6bG5JZWZsVVdMNlFZTWJmOVdEZkxtb3NMRjRRZXYzbUppT3VIam9vci9kTWVCcEE5aUtEa01qWUJOYlJvNDE0SEN4anNIckI0RVhOYkh6Tk1ESENMdU5CRzZTZitKNE1aL0VsVnNEU0x4aklpR3NUUGh3OEJQanhiZlF0c2tqK2R5Tk1LT09jVVlJUkJFSXFiYXp6M2xtamxSUWhwbHhxNjczVmtsTU1ZNjU5N3Z1K2Q4OWVjL3pxN01pNGdRdmg4N2VoWWJwT3VaRVhqNWcvUTdTN0JGREFBQjlEekczNVNDODUzeHRXVmNuWlFvSDU0amVPcVlMUjlORHV3eHNWdGhUVjdWOTluL0I3SFNiQXl0YkV5VlR6LzVOaEo4Z0dJakcwRTVqM2dyaVVMVWQ1Umc3dFFSKzkwaEpnTlFLUUgyYnRiU2ZQY2FUT2ZJZXhjMWRiMUJ4VU9oTTF2V0NwTGFZdUtyM0ZkTlR0L1QzUFdDcEVVV0RLRXR6WXJqcHpsTC93cmkzTUlUS3NGdnRGOFFWVi9OaFZvOTdhS0lCZ2RsaU5jMTBkV2RYVkRwVnRzTm4rMlVJb2xyZ3FkV0E0RVk4c28wWXZCNGErYUx6TVhpTUF1T0hRclhZMHRyK0NMMTBKYnZaemdqSkp1QjFjUmtkVDdEVXFUdm5zd1ZVcDVra1VTRlZ0SUlGWUswNSt0UXhUNjk5MkhITldWaFd4VXNEMVBrY2VJcmxYdVVWUm9nd21mZGh5cmY2enphTDgrYzBMN0dYTVpPdGVBaEFWUVZ3ZEpoKzduclg3eDRMYUlJZnoyRjJ2N0RnL3VEZnoyRmErNGdGbTJ6SEFvcjhVcWltSkczVlRKdFpFb0ZYaG5EWVh2eE1KRmM2a3UyYmhiQ3h6aWoyejVVTnVLMGptcDFtbnZrVk5VZlIrU0VtajFMcjk0THltNzVQTzdGczBNSXIzR2RzV1hSWFNmZ0xUVlkwRkxxYmE5N3UxSW44TkFjWTdJQzZUaldMaWd3S0VJbTQzTnhUZGFWVHY5bWNLa3p1ekJrS2Q4eC94dDFwLzlCYlA3V3liNGJwbzFLMWduT3BiTHZLejU4cFdsM0I1NVJKL1o1bVJETFB0TlFnMTRqZE9FczkraC9WNVVWcHdyQUk4a0diWDhLUFZQRElNZklxS0RqSkQ5VXlET1BoalozdkZBeWVjd3lxNGFrVUU5bURPdEpFSzFocER5aTZBZTg3c1dBQ2xYR1Rpd1B3TjdQWFd3anhhUjc5QXJIUklQZVlLVHVuVlcyNHNQci8zSFB6Mkl3SDhvS0g0T2xXRW10NEJMTTZXNWc0a01jWWJMd2oydXNvZEQxMDg4c3RaQTdWT3NVU3BFVmw0dzdOTWIxRVVITVJ4QXhMRjBDSVYrMEwzaVpiK2VrQjF2U0RTRmpBWjNoZkxKZjdnRmFYck9LbittaFIrcld3L2VUWEljQWdsNEh2RnVCZzFMT21PQXdKSDNlb1ZFamp3aGVLQTRpY2JyUUNtdkF0cFEwbVhHMGFnWXA1bWo0UmI2bWRRK1JWNFFCUGJ4TXFoOUM3bzhuUDBXa28yb2NuQ0hlUkdoTjFYVnlUMmI5QUNzTCs2eWxVeSt5QzNRRW5hS1JJSks5MVl0YW9TcmNXWk1Nd3h1TTBFOUo2OForWXlqQTBnOHAxUGZIQUFJUk95NlNhMDRWWE91VDZBMzUxRk9XaEtmVEdzRkozUlRKR1dZUG9MazVGVks0T2FZUjloa0p2ZXp3Rjl2UU4xMTI2cjZpc01HWFdUcUZXKzNITDNJL2p1cmxJZERXSVZ2WVkrczZ5cTdsckZTUEFHUmRuVTdQVndZL1N2V2JaR3BYenkzQlEyTG1BSmxyT05Vc1pzNG9Ha2x5MFYyNjd4YkQ1S01ZOHdvTk5zbVdHMVZWZ0xDcmE4YVFCQmNJNERQMkJsTnd4aGlDdEhsYXo2T1dGb0NXMHZNUjNFcnJHN0p5TWpUU0NudlJjc0VIZ21QbndBNmlOcEoyRHJGYjRnTGxoS0p5WkdhV2tBOTdINkZGZHdFY0xUNkRSUVFMKytmT2tWQzRjWUdXMVRHLzNpSzVkU2hSU3VpQnVsbWlocWdqUjQ1VmkwM28yUmJRYlAzc3h0OTBWeFE2dnpkbEdma1htbUttak9pMDgwSlNIa0xudGp2c0JKbnY3Z0tzY09hVE9rRWFSUXFBbkNBNEhXdEI0WG5NdE9ocFJtSDJGSDh0VFhySWpBR05XRW11ZFFMQ2tjVmxHVFE5NjVLaDBINml4WGJnSW1RUDZiNDJCNDlzTzVDOHBjN2lSbGd5dlNZdmNuSDlGZ1EzYXpMYlFHMmNVVzk2U0RvalRRU3R4a09KeU91REdUSEFubldrejI5YUV3TjlGVDhFSjR5aFhPZytqTFRyQ1BLZUVvSjlhN2xEWE9qRXI4QWdYNEJtbk1RNjY4b1cwellQeVFpVk1QeEtSSHRwZm5FRXlhS2hkek5WVGhseHhEUU5kckhlWmlVRmI2Tm9ZMkt3dlNiN0JuUmNwSnkrL2cvekFZeDNmWVNONVFFYVZEMlkxVnNOV3hCMEJTTzEyTVJzUlk4SkxmQWV6Uk16NWxVUnVMVW5HMVRvS2s2UTMwRnVnaHFXTjZnQk5jRnhQL25ZL2l2K2lhVVFPYSsyTnV5bTQ2d3RJL0R2U2Z6U3AxakVpNFNkWUJFN1loVGlWVjVjWDlnd2JvVkRNVmdacDVZQlFsSE9RdmFETmZjQ29DSnVZaGY1a3o1a3dpSUtQanpncGNSSkhQYk9oSmFqZW9lUkw1M2N1TWFoaFY4WjdJUnI2TTRoVzBKelQ3bXphTVV6UXBtODY2endNN0NzMDdmSllYdVd2akFNa2JlNU82VjRidTcxc09HNkpRNG9MOHpJZVhIaGVGVmF2enhtbEl5QmtnYzlJWmxFRHBsTVByOHhsY3lzczRwVlVkd0sxZTdDSzJrVHNTZHE3ZzVTSFJBbDNwWVVCOUtvNGZzaDRxbGVPeUp2MXozS0ZTVFN2d0VjUk8vRXc4b3pFRFlaU3FwZm9WVzl1aEpmWXJOQVhSMFozVm1lb0FEK3JWV3R3UC8xM3NFLzNJQ1gzSGhERzNDTWM0NzZkRUVDMEszdW1TQUQ0aitaUUxWZEZPc1dMMkMxVEg1KzRLaVNXSCtsTWlibytCNTVoUjNHcTQwRzFuMjVzR2NOMG1FY29VMndOOUZDVnlRTEJoWU91OWFIVkxXakVLeDJKSVVaaTV5U29IVUFJOWI4aEd6YUxNeENaRE1MaHY4TWtjcFRxRXd6OUtGRHBDcHFRaFZtc0dRTjhtMjR3eUI4MkZBS05tamdmS1JzWFJtc1NFU292QXdYakJJb01LU0c1MXA2VW04YjNpN0dJU3M3a2pUcS9QWm9pb0NmSnpmS2RKVE4wUTQ1a1FFUXVoOUg4OE0zeUVzM0RidFJUS0FMcmFNMFlDOGxhaU1pT09lNkFEbVRjQ2lSRWVBV1plbEJhRVhSYVN1ajJseDB4SGFSWXFGNjVPMExvNU9DRlUxOEE4Y01ERTRNTFltOXcyUVNyOU5nUUFJY1J4WnNOcEE3VUpSMGU3MUpMK1ZVK0lTV0ZrNUk5N2xyYTh1R2c3R2xRWWhHZDRHYzZyeHNMRlJpSWVHTzRhYlA0UzRla1ExZmlxREN5ODdHWkhkNTJmbjVhYURHdXZPbUlvZnJ6cFZ3TXZ0YnJlWi84NTVPYVhUUmNOaU5FMHd6R1pTeGJqZzI2djhrbzhMNTM3di9YQ0NXUDJNRmFBckpwdm5rZXAwcEErTzg2TVdqUkFaUFFSZnpuWmlTSWFUcHB5Nm0zcDZIck5Tc1k3ZkR0ejdDbDRWL0RKQWpRRG95aUwydXdmMVVIVmQyQUlyekJVU2xKYVRqNGs2Tkw5N2EvR3FoV0tVOVJVbWpuWUtwbTJyK0pZVWNya0N1Wkt2Y1l2cmc4cERvVUtReXdZOUdEV2cwM0RVRlNpcmxVWEJTNVNXbi9LQW50bmYwSWRIR0wvN213WHFERytMWllqYkVkUW1xVXFxNHk1NFRObVdVUDdJZ2NBdzU4MTZZQnp3aU5JSmlFOU00bFBDemVJL0ZHQmVZeTNwNklBbUg0QWpYWG12UTRJeTBZODJOVG9iY0FnZ1QyQ2RxejZNeDRUZEdvcTlmbjJldHJXS1VORnlhdEFIeWRRVFZVUTJTNU9XVlVsdWdjTnZvVXJsQThjSkp6OU1xT2EvVzNpVm5vNHpESGZFN3pob1k1ZjVsUlRWWkRoclFiUjhMUzRlUkx6OGlQTXlCTDZvNFBpTGxwODlGamRva1FMYVNCbUtIVXdXcDBuYTVmRTN2OXpueTJZY0RYRy9qZkk5c2N0dWxIUmJka0k1YTRHT1BKeDRvQUpRelZaL3lZQWFkbzhLTlpVZEVGczlaUGlCc2F1c290WE1OZWJFZ3IwZHlvcHVxZlNjRkozT0ROUEhnY2xBQ1BkY2N3djBZSkdRZHNOMmxob1Y0SFZHQnhjRVVlVVgvYWxyNG5xcGNjMUNDUjN2UjdnNDB6dGVRZy9KdldtRmxVRTRtQWlUcEhsWUdyQjd3K1UyS2RTd1F6MlFKS0JlLzVlaWl4V2lwbWZQMTVBRldySzhTaDFHQkJZTGd6a2kxd1RNaEdRbWFnWHFKMitGdXFKOGYwWHpYQ1ZKRkhRZE1Bdzh4Y28xMUhoTTM0N2FsckF1K3dtWDNwREZBQk92a0MrV1BYMFVoZzFaNU1WSEtOUk94YVI4NFlWM3MxMlVjTSs3MGNKNDYwU3pFYUtMeWg0NzJ2T01EM1huYUs3enhaY1hsV3FlbkV2Y2ptZ0dOUjJPS2JJMXM4VStpd2lXK0hvdEhhbHAzZTFNR0R5NkJNVkl2YWpuQXprRkhiZVZzZ2ptSlVrclA5T0F3bkVIWVhWQnFZeDNxN0x2WGpvVlIwbVk4aCtaYU9uaDA1M3Bkc0drbWJxaHlyeU4wMWVWSHlTcitDa0RZa1NNZVoxeGpQTlZNK2dWTFRES3UyVkdzTVVKcVdPNFR3UERQMFZPZzIvOElUYkFVYU1HYjRMakw3TCtQaTExbEVWTVhUWUlsQVovUUhtVEVOanl4M2tEa0JkZmN2dlF0NnRLazZqWUZNNEVHNVVYRFRhRjUrMVpqUno2VzdNZEpQQyt3VGtiRFVpbTRwNVFRSDNiOWtHazJCa2lseWV1cjhCYzIwd201dUpTQk85NUdmWURJMUVaaXBvUmFIN3VWdmVuZXF6NDN0bFRaR1JRNGE3Q05tTUhnWHlPUVFPTDZXUWtnTVVUUURUOHZoMjFhU2R6N0VSaVpUMWpLOUYrdjZ3Z0Z2dUVtR25nU3ZJVVIyQ0prYzV0eDFReWdmWm5BcnVPTm9iQjFpZENMQjFGQ2ZPN04xWmRSb2NUOC9XeWUrRW5EaU85cHpxSXBuTERsNGJrYVJLVytla0JWd0huNDZTaHcxWDB0Y2x0LzBST2lqdVVCNGtJSW5yVkpVNGJ1V2Y0WUlUSnRqT0o2aUtkcjF1K2ZsZ1FlRkg3MEd4S2poZGd0L01yd2ZCNEsvc1hjelErOXpZY3JENGRoWTZxWmhaMDEwcnJ4Z2dXQThKYVp5ZzJwWWlqOGllWUVnMWFaSmtaSzlPMVJlN3NCMGlvdWY2MHJLMEdkK0FZbHA3c29xQ0JDREd3ZktlVVFoQ0JuMEUwbzBHUzZQZG1qTGkwVHRDWVplcWF6cXdOK3lOSU5JQThMazNpUERuV1VpSVBMR05jSG1aRHhmZUswaUFkeG0vVDdMbk4rZ2VtUkw2MWhISWMwTkNBWmFpWUpSK09IbkxXU2U4c0xySzkwNUI1ZUVKSE5sV3E0Um1FWElhRlRtbzQ5Zjh3NjErTndmRVV5dUpBd1ZxWkNMRmN5SEJLQWNJVmozc056ZkVPWHpWS0luZHhIdytBUjkzb3doYkN4VVpmNkdzOGN6Ni8xVmRyRkVQcnYzMzArOXM2QnRNVlBKM3psL1VmOXJVaTBaL29wZXhmZEwzeWtGNzZlOTk5R1BmVnY4Zkp2L1kvKy81aEVNb24xdHFORnlWUmV2Vjl5OS91SXZzRzNkYkI4R1JScmdhRVhmaHgrMnhlT0Z0K2NFbjNSWmFuTnhkRWUyK0I2TUhwTmJyUkU1M1BsRGlmUHZGY3A0a083OElMUjBUNHh5Vy9XR1B5QnNxR2RvQTd6SkpDdTFUS2JHZmhucWduUmJ4YkIyQjNVWm9lUTJiejJzVFZuVXdva1RjVFUyMVJ4TjFQWVBTM1NhcjdUMGVSSXN5Q05vd3I5YW13b01VL29kOXMyQVB0aUtOTDZFTk9seUtBRHN0QUVXS0Erc2RLRGhySjZCT2hSSm1aK1FKYkFhWjMvNUZxMC9sdW1DZ0V6R0VidTN5aTBZNEk0RWdWQWpxeGg0SGJ1UW4wR3JSaE9XeUFmc2dsUUpBVkwxeS82eWV6UzJrOFJFMk1zdEpMaDkyTk9CM0dDWWdGWHpuRjRkMjVxaVA0WkN5STRSWUdlc3V0NkZYSzZHd1BwS0s4V0hFa2hZdWkwQXlFbXI1TWwzdUJGdFBGZG5pb0k4UmlDb29hN1oxRzFXdXlJaTNuU05nbHV0Yyt4WThCa2VXM0pKWFBLNmpkMlZJTXBhU3hwVnRGcStSK3lTSzlKNldHNVF2dCtDK1FIMWh5WVVPVks3ODU3bkZteURCWWdaL28rQW5pYnpOVnF5WUNKUXZ5RFhEVEsraVhka0E3MWJZN1RMM2J2dUx4TEJROGtiVHZURVk5YXFrUTMrTWlMV2JFZ2pMek9IK2xYZ2NvMUVSZ3pkODByREN5bWxwYVJRYk9ZbktHL09Eb0ZsNDZselQwY2pNNUZZVnZ2MHFMVWJENWx5SnRNVWFDMXBGbFRrTk9OeDZsbGlhWDlvMGkvMXZ3czViTktuNU91RU5RRUttTGxjUDRvMlptSmpENHp6ZDNGazMydVE0dVJXa1BTVXFiNExCZTNFWEhkT1JOQjJCV3N3czVkYVJuTWZOVlg3aXNQU2IxaE1RZEFKaTEvcW1ETWZSVWxDVTc0cG1uempiWGZMOFBWRzhOc1c2SVFNMk5lMjNpQ1BJcHJ5SmpZYlZubTVoQ3ZLcE1hN0hMVmlOaU5jK3hUZkRJYUttM2pjdFZpRDhBMU05WVBKTmswMDNWVnI0Wm8yTXVHVzh2aWw4U0xhR3BQWHFHN0k0RExkdGw4YTRSYngxTHQ0dzVIdXFhYTFYelpCdGoyMDhFSlZHY21LWUV1YWVOMjd6VDlFRTZhMDlKZXJYZEVicGFOZ05xWUpkaFAxTmRxaVBLc2JEUlVpODZYdnZOQzdyTUU1bXJTUXRyekFaVm5kdFNqQ01xZDhCbWFlR1I0bDRZRlVMR1JCZVhJVjlZNHl4TEZkeW9VTnBpeTJJaGVQU1d6Qm9mWVBQMGVJYTJxNUpQNGo5RzhhdC9BcW9Tc0xBVXVSWHR2Z3NxWC96WXdzRStvZjZvU0RiVU9vNFJNSncrRE9VVEpxK2hucXdLaW05WXkvbmFweVpOVGMyckNxNlY5akh0SmJ4R1BEd2x6V2ovU2szekYvQkhPbFQvZlNqU3E3RnFsUEkxcTZKK3J1OEFrdTAwOFNGSU5YWmZPZm5aTk92R1BNdEVtbjJnTFB0K0g0UUxBKy9TWWU0ajM5OGF1emhLSXAyUG9rM21QQzVxMUlOMUhnUittbkVmYzROZWVIWXdkMi9rcHN6UjNjQm43bmk5TmJJcWh0U1dGVzh4YlVKdVVQVk9lZVh1M2owSUdabUZOaXdhTlo2ckg0L3pRMk9EejZ0RnhSTHNVWVp1MWJmZDF1SXZmUUR0NFlEL2VmS1l2OFZGOGJIR0RnSzIydzJXcXdwaTQzdk5DT1hGSlpDR01xV2lQYkw4bWlsNnRzbU9UWEFXQ3lNQ3c3M2UyckFEWmoySUs2cnFrc00zRVhGMmNiTGI0dmpCMTR3YS95WEs1dndVKzA1TXpFUko1blhzWHNXMjFvN00rZ08wanMyT3lLY2lQNXVGMmlYeWIyRGlwdHdRZUhlcXlna3JOc3FWQ1NsbGR4Qk1wd0hpMXZmYzhSS3BQLzRMM0xtcHE2RFpjdmhERGZ4VENFM3NwbGFjVGNPdFhkSzJnMzAzZElXQlZlMndEL0d2amExY0NsRlE2N2d3MHQxWlV0dHNVZ1ExVmVreThvT3BTNmtzWUVjNGJxc2VDYlp5NzY2U3ZMM0ZvZG1uYWhsV0pSZ1ZDTmpQeGhML2ZrMnd5dmxLaElUSC9WUUNpcE9JMGROY1JhNUIxTTVIbU9CalRMZVpRSnkyMzdlMm1vYndtRHlKTkhlUGhkRG1pa252TEthRGJTaEwrSXMxWFRDSnVMUWQyd21kSkw3K21LdnMyOTR3aFhRRCt2dGQ4OEtLazBEWFA4QjFYdTlKK3hvNjlWT3VGZ2V4Z1RyY3ZJNlN5bHR1TGl4OU9QdUU2L2lSSllvQk1FWHhVNHNoUU1mNEZqcXdmMVB0bkovd1dTWmQyOXJoWmpSbVRHZ2lHVEFVUXFSeituQ2RqZU1mWWhzQkQ1THY2MEtJTFdFdk5FSGZtc0RzMkwwQTI1MjM1MWVVb1l4QXlzVmFDSlZMZEg5UUZXQW1xSkRDT0RVY2RvbzEyK2dkNmJXMmJvWTBwQlZIV0w2TFFESzViWVdoMVY4dkZ2aTBjUnBmd3Y3Y0ppTVgzQVpOSnVUZGRIZWhUSWRVMFlRL3NRMWRMb0YyeFFQY0N1SEtpdUNXT1kzMERIZTFPd2NDbExBaHFBS3lxbG5JYkgvOHU5U2NKcGNTNGtncDZIS0RVZGlPZ1JhUkdTaVVDUkJqekk1Z1Nrc01aS3F5N1NkNTFhZWcwdGdKK3gwVEg5WUgyTWdzYXA5TjdFTlpkRUIwYmV5MkRNVHJCQTFobjU2U0VyTkhmM3RLdHF5TDliNnlYRVA5Ny9yYytqZ0QyTjFMTlVINlJNOUF6UDNrU2lwcjA2UmtLT29sUjdITzc2OGpqV2lIMVg5MmpBN2RrZzdnY05janFzWkNnZnFXdzB0UFhkTGcyMGNGNnZuUXlwZzdnTHRrYXpySEFvZHlZZkVOUFFac2RmbmpNWmlOdTRuSk85N0QxL3NRRSszdk5GenJTRE9LdytrZUxFQ1lmN1JKd1ZIZVAvajc5ODMzb1owZWdvbllCMkZsRkU1cWowMkIvTFZPTUpRbHNCOHVOZzNMZWc0cXRad250c09TTmlkUjBhYmJabUFLNHNDenZ0OFlpdXoyeXJOQ0pvSDVPOFh2WC92TGVSL0JCWVRXajBzT1BZTS9qeXhSZDUrL0p6aUtBQUJhUGN3LzM0VUEzYWovZ0xaeFpnUkNXTjZtNG0zZGVtYW5OZ3N4MFAyMzcvUStFdzVWWW5KUGt5Q1kwY0lWSG9GbjJBeS9lN1U0UDE5QVBiUEZYRUhYOTRONktoRU1QRzdpd0IzK0krTzFqZDVuNlZTZ0hlZ3hnYVNhd082aVFDWUZnRHNQU01zTk9jVWo0cTNzRjZLekdhSC8wdTVQUW9Bai84enE2VWM5TW9OckdxaFllYjJqUW8wV2xHbFhqeHRhblpMUzI0L09JTjVHeC8yZzY4NEJQRFFwd2xxbmtGY3hwbVAvb3NuT1hyRnV1NFBxaWZvdVFIMGVGNXFDa3ZJVFFiSncvWnZ5NW1BSFdDOW9VK2NUaVloSm1TZktzQ3l0MWNHVnhpc0t1K055bUVRSUF5YUNndWQvVjA5cVQzbmsvOXMvU1dzWXRoYTd5TnB6QklNTTQwckNTR2FKOXU2bEVrbDAwdlhCaUV0N3A5UDVJQkNpYXZ5bkVPdjdGZ0xxUGRlcXhSaUN3dUZWTW9sU0lVQmNveWZVQzJlMkZKU0FVZ1lkVkdGZjBiMEtuMkVabEs5N3l5eHJUMk1WZ3Z0UmlrZmRhQVc4UndFRWZOK0I3L2VLOGJCZHA3VVJwYnFuMXhjckM2ZDJVamRzS2J6Q2pCRnFrS2tvWnQ3TXJoZzZZYWdFN3Nwa3FqMGpPcldNK1VHUTBNVWxHMmV2UDF1RTFwMnhTdjRkTUswZG5hNkVOY05VRit4a2FKN0I3NjROZHhMQ3B1dmhibGx0VlJBZjd2SzVxUHR0Si85UllGVVVTR2NMZGlibno2bWY3V2tQTzNNa1VVaFIybUFPdUd2OElXdzVYRzFadm9WTW5qU0FaZTZUN1dZQTk5R0VOeG9Ia01pS3hIbEN1SzVHZDBJTnJJU0ltSFFyUW12NkY0bXFVL1RUUThuSE1EekNSaXZLeVNROGRxa3BRZ25VTW53SWthQXVjNi9GR3ExaHczYjJTYmEzOThCaFV3VVpTQUlPOFhadm51TGRZMm42aE9Yd3MrZ3E5QkhVS2NLRkE2a3o2RkRucHhMUElDYTNxR2huYzk3Ym8xRlQvWEprNDhMcmtISjJDQXRCdjBSdE45N04yMXBsZnBYSHZaOGdNSmI3WmM0Y2ZJNk1iUHdzVzdBaWxDU1hNRklFVUVtaXI4WExFa2xBMHp0WWJHcFRUR3F0dHA1aHBGVFRJcVV5YUFJcXZNVDlBL3grSmk1ZWpBNEJoeGIvY2wxcFVkT0Q2ZXBkM3lpbElkTzZqMjk3eElub2lCUHVFRFcyL1Vmc2xEeWhHa1FzN1d5MjUzYlZubFQrU1dnODl6WUlLLzlLWEZsNWZlK2pvdzJyZDVGWHY4ekRQcm1mTVhpVVB0OVFCTy9pSzRRR2JYNWovN1J4MWMxdnpzWThPTmJQM2xWSWFQcmhMNCsxUXJFQ1ROM255S2F2R0cwZ0JCdEh2VEtoR29CSGdNWEhTdEZvd04rSEtyUHJpWXUrT1owNUZybjhva1FyUGFheG9LUDFVTENTL2NtS0ZOM2djSDdIUWxWanJhQ2VRbXRqZzFwU1F4ZXVxWGlTS2dMcHhjLzFPaVpzVTQrbjRsejRocGFoR3lXQlVSTGk0NjQybjFnbjlxejliSXNhQ2VFUEowdUptZW5NV3AydEptSXdMUTZWU2dEWUVyT2VCQ2ZTajlQNEcvdkk3b0lGK2wvbjVmcDk1NlFneEd2dXI3N3luYXdBdTNHOU1kRmJKYnU0OU5abldubkZjUUhqeFJ1aFVZdmcxVS9lODRONEpUZWNjaURBS2IvS1lJRlh6bG95dUUxZVlYZjU0TW1oalRxN0IveUJUb0R6enB4M3RKQ1RvM0hDbVZQWWZtdEJSZTNtUFlFRS82UmxUSXhiZjRmU09jYUtGR2s0Z2JhVVdlNDRoVms5U1p6aFc4MHlmVzVRV0JIeG10VXp2TWhmVlFsaTRnWlRrdElPWmQ5bWpKNWhzYm16dHRhSFFCMjlBbTNkWmtteDNnL3F2WW9jeWhaMlBYQVdzTlFpSWFmK1E4Vy9NV1BJSzcvVGp2Q3g1cTJYUnA0bFZXeWRNYzJ3SVFraGFkREIweHNudy9rU0V5R2pMS2pJNGNvVkl3dHViVEYzRTdNSjZMUzZVT3NKS2o4MlhWQVZQSkpjZXBmZXdiekU5MWl2WFp2T3ZZZnNtTWV2d3RQcGZNekdtQzdXSmx5VzJqMGpoN0FGMUpMbXdFSlNLWXdJdnU2REhjM1lueUxIOVpkSUJuUStuT1ZEUmlQK1JFcHF2Kyt0eXBZSEl2b0p5SUNHQTQwZDhiUjdIUjJrN2RvNlVRVEhGNG9yaVllSVFieEtlNFRoNisvbDFCalV0UzlocU9SaDNNYmd2WXJTdFhUZlN3YUJPbUFWUVp6cFlOcXNBbVF5alk1Nk1VcXR5M2MveEg2R3VoTnZOYUc5dkdiRzZjUHRCTThVQTNlOHI1MUQwQVI5a296S3VHR1NNZ0x6M25BSHhETm5jN0dUd3BMajcvNkhlV3AxaWtzRGVUandDTHB4ZWp1TXRwTW5HSmdzaWt1MXNPQUN3UTl1a3pFU2lEUk43N1lORVN4UjVMcGhPbGNBU1hBNXVJdHMxTG5CSWNuMUo3QkxXczQ5RE1BTFNudXo5NWdkT3JUWnIwdTFTZVlIaW5uby9wRTU4eFlvWGJWTy9TK0ZFTU1zNXF5V2tNbnA4UTNDbHlUbFpQNTJZOW5xN2I4ZklUUHVWWFVrOW9oRzVFRkh3NGdBRWNqRnhmS2IzeHVBc0VqeDJ6MXd4TmJTWk1jZ1M5R0t5VzNSNkt3Sk9OZ3RBNjRMVHl4V204QnZ1ZHAwTTFGZEpQRUdvcE00RnZnN0cvaHNwdGtoQ2ZIRmVndjRFTnd4UGVYbVloeHdaeTdqcytCZU0yN3Q5T0RCTXluVkNMSjdSV2NCTXRlWkp0dmpPWUhiNWxPbkNMWVdORU1LQzU5QkE3Y292dTFjQU5hMlBYTDA1aUdkdWZPemtnRnFxSEJPcmdRVlVtTEVjK01rejRScThPNldrTnI3YXROa0g0TThkK1NEMXQvdFN6dDNvRnFsK25lVnMrQXdFSTVKYUJKYXhBUnRZMlo0bUtvVXF4ZHM0VXBaMHN2M3pJYk5vbzBKNGZpaGxkUVRYM1hOY3VOY1ptY3JCNUxUV01kemVSdUF0QmszY1pIWVFGNmdUaTNQTnVESjBubVIrNExQTG9IdnhRSXhSZ0o5aU5OWHFmMlNZSmhjdkN0SmlWV284NVRzeUZPdXE3RXlCUEpyQWRoRWdFMGNUcTE2RlFYaFlQSkZxU2ZpVm4wSVFuUE95MExiVTRCZUc5NFFqZFlOQjBDaVEzUWF4UXFEMmViU01pTmphVmF3OFdhTTRaNVduemNWRHNyNGVHd2VTTGEyREUzQldWaWF4aFpGSWNTVGpneE5DQWZlbGcraHpuVk9Zb2U1VnFUWXMxZzdXdGZUbTNlNC9XZHVDNnArcXFBTThINFp5ckpDR3Bld1RoVERQZTZIN0N6WC96UThUbStyNjVIZVpuK01zbXhVY2lFV1BsQVZhSy9WQmFRQldmb0cvYVJML2pTWklRZmVwLzg5R2phc1dtYmFXemVFWjJSMUZPanZ5SlQzN085QjgwNDZTUlNLVkVuWFdsQnFia2I1WENTM3FGZXVFOXhiOStmckVrbnhXQjVoMUQvaHJ1ejJpVkRFQVM3K3FrRXo1T3Q1YWdISmM3V0NkWTk0V3M2MXNVUmNYNW5HOFVFTEdCQUhaM2krM1Z1bEF5VDBuS05OejRLMkxCSEJXSmNUQlgxd3pmKy8vdS9qLzkrLy92ODcrOS9sOUxiaC9ML3V5TllpVHNXVjJMd3NqYUE2TXhUdXpGTXFteFc4SncvK0lwcGRYOHQvQ2xnaTFySTFTTjBVQy9yNnRYLzRsVWMyVlYxT1FSZVNlQ3NqVXBLWmNodzRYVWNqSGZ3NnJ5Q1YzUjhzNlZYbTY3dnA0bitsY1BWOWdKd21iS1FFc21ySmk5YzJ2a3dybThIRmJWWU5UYVJHcThEOTF0OW41K1UrYUQvaE50TjNIakMvbkMvdlVvR0ZTQ2tYUCtObFJjbUxVcUxiaVVCbDRMWWYxVS9DQ3Z3dGQzcnlDSDhnVW1HSVRBeGlIMU81cm5HVHo3eTFMdUZqbW5GR1ExVVd1TTdId2ZYdFdsMmZQRktrbFl3TlVwRjJJTC9UbWFSRVRqUWlNNVNKYWNJKzNHdjVNQlU4bFA1SW82Z1drYXdweXpORVZHcU9keDRZbE8xZEN2amJXRlpXYkNtZWlGS1BTbE1LdEtjTUZMcy9LUXh0Z0FIaTdOWk5DUTMyYkJBVzJtYkhmbFZaOHdYS2kxSktWSGtXMjBibllubDNkS1dKZVdKT2lYM29LUEJENlpiaTBadlNJdVdrdFVIQjhxRFI4RE1NaDFaZmtCTDlGUzl4NXIwaEJHTEo4cFVDSnYzTllIK0FlOHA0MG1aV2Q1bTVmaG9iRmpRZVF2cVRUNFZLV0lZZlJMMHRmYVhLaVZsNzVoSFJldVRKRWNxVmx1ZytlT0lJYzRiZEl5ZHRuMkswaU5aUHNZV1F2UWlvMnFiTzNPcUFsUEhERE9CN0RmakdFZlZGNTFGcXFOYWNkNlFtZ0ZLSnBNZkxwNURIVHY0d1hsT05LVlhGOXpUSnBEVjRtMXNZWnFKUGhvdGNzbGlaTTh5a3NLa0NrenBpWHQrRWNSUXZTUXFtQlM5V2RXa3hNVEpYUFN3OTRqcUkzdmFyQ2pReFRhempsTUg4alRTOGlsYVc4MDE0L3Z3QS9MTmErWWlGb3l5eDNzL0tzd1AzTzhRVzFqdHE0NXlUTS9EWDlhOE00dm9UVmFPMmVidncxRW9vRHcveWc2WTFmYVkrV3dyZFZzNVl0MGhRNUV3UmZZWFNGeHJheTFZdlNNK2tZbWxwTEcyLzltbTFNZm1iS0hYcjQ0SWg4blZLYjFNNTM3WkFOVWtDdGRzUFo4MEpWS1ZLYWJWSENhZGFMWGcrSVY4aTVHU3dwWnRpMGg2ZGlUYUtzOXNkcFVLRXBkN2pEVXBZbUh0aVgzM1NLaU8zdHV5ZGtheEE3cEVjOVhJUUVPZldKbHN6ajVZcEw1YktlUXlUN2FaU0JPYW12U0hsOHhzV3ZnbzI2SVAvYnFrKzBFSlV6K2dra2N2bFVseVBwMmtkS0Z0dDd5NWFDZGtzOVpKSmNGcDVaV2VhV0tndG5YTU4zT1J3R0xCRTBQdGtFSWVrNUZZMmFWc3NVWkh0c1dJdm5sak1WSnR1VklqcFp1cC81VkwxeVBPSFdXSGtPTWM2WXlTV01ja2N6RDVqVWoybWxMVnF1RmFNVThsZUdWYXFlWGlzK2FSUkw4em00V3VCazZjeVdmR014Z3RyOHVzZVFFeDdrL1B2Um9aeWQ5bmRlMUdVQ1Y4NGdNWDhPZ3UvQldlellQU1IyN2xselFuQTk3b28wcFl5eG9iWVVKZnNqK3lzVG05ekorUzRwazBUR285VlRHMEtqcVloVG1BTGZvRFpWS2xhMmI1eWh2MjQxUHhGYUxKczNpMDVLMEFBSWRjR3hDSlptVDNaZFQ3Q2xpUjdxK2t1cjdXZFFqeWdZdE9XUkw5QjhFNHM0TEk4S3BBajdiRTBkZzdETE9hWCtNR2VBaTBoTU1TU1daRXorUnVkWGJaQ3NHWVMwUXFpWGpIOVhRYmQ4c0NCK25JVlRxNy9UL0ZEUyt6V1k5cTdaMmZkcTF0ZExiNnYzaEtLVkRBdzVnamo2bzlyMXdIRlJPZEhjMThNSnA0U0oyVWN2dStpUTlFZ2tla1c4VkNNK3BzTTZ5Ky8yU0J5OHROTjRhM0wxTXpQK09Mc3l2RVNvNWdTN0lRT25JcU1tdmlKQlZjNnpiVkcxbjhlWGlBM2o0NmttdnZ0Smxld3dORHJ4azRTYkpPdFAvVFYvbElWSzl1ZVNoTmJiTUhmd25MVExMaGJadU83OWVjNVh2ZmdSd0xGSyt3MXI1WldXMTVyVkZackUrd0txTlJ2NUtxc0xOZnBHZ25vVVU2WTcxTnhFbU43TXlxd3FBUXFvSVVMT3cvTGJ1VUIyK3VFNzVnSnQra3ExcVk0TG94VitxUi96YWx1cGVhM0Q1K1dNZWFSSW4wc0FJNkREV0RoMTU4ZnFVYjRZaEF4aFJFYlVOMHF5eUpZa0JVNFYyS0FSWERUNjVnVzNnUnNpdjd4U1BZRUtMd3pncmlXY1dnUHIwc2JabnY3bTFYSE5GVzZ4UGRHTlpVZHhGaVVZbG1YTmpEVld1dTdMQ2tYL25Wa3JYYUpoaVlrdEJJU0MyeGdCWFFuTkVQK2NwdFdsMWVHNjJhN0NQWHJucmtUUTVCUUFTYkVxVVpXTURpWlVpc0t5SERlTEZPYUpJTFVvNWY2aUR0NFpPOE1scWFLTHRvMEFtVEhWVmJrR3V5UGExUi95d1pzV1JvUkRvUmROTU1Id1lUc2tsTVZubEFkMlMwMjgyYmdNSThmaUpwRGg2OU9TTDZLM3FibzIwS2ZwTk11cm5ZR1FTci9zdEZxWjdoWXN4S2xMbktBS2hzbUI4QUlwRVE0YmQvTnJUTFRYZWZzRTZDaFJtS1dqWEtWZ3BHb1BzOEdBaWNnS1Z3NEswcWdEZ3kxQTZoRnExV1JhdDNmSEYrRmtVK2I2SDROV3BPVTNLWFR4ckliMnFTSEFiK3FobThoaVNST2kvOW9mYXBqeGh5S3h4bnRQcGdlNktMNVo0K1dCTVlrQWNFNiswSGQzWWgyekJzSzJNVjNpVzBZNmN2T0Nyb1hsUmIyTU1KdGRXeCszZGtGekdoMlBlM0RaOVFwU3FwYVIvckUxSW1PckhxWVl5Y2NwaUxDMjJhbUpJalJXVkFoZXJUZnBRTG1vNi9LMnBuYTg1R3JEdVFQbEgxVHNhcjhpc0FKYlhMYWZTd09vZjRnZzlSa0FHbS9vWXBCUVFpUFVveURrMkJDUTFrK0tJTHE0OEVyRm80V1NSaEhMcS95N21ndzMrTDg1UHBQNnhXcjZjZ3A5c09qWWpLYWdPcnhGMTQ4dWh1YVd0amV0OTUzZmgxSVFpRXpnQytkMklnQkNjVVpxZ1RBSUNtMmJSOG9DakRMQnNtZytUaHloZkQrekJhbHNLQlkxQ2U1NFkvdDljd2ZiTHU5U0Z3RWdwaGZvcE5BM3lOeGd5RGFmVU0zbVlUb3ZaTmdQR2RkNFpGRk9qMXZ0ZkZXM3U3TitpSEVOMUhrZWVzRE1YS1B5b0NEQ0dWTW80R0NDRDZQQmhRM2RSWklIeTBZLzNNYUU1elU5bVRDcnd3blpvanRFK3FOcE1Ta0pTcG1HZTBFekx5RmVsTUpxaGZGUTdhNTB1WHhaOHBDYzJ3eHRBS1dnSG9lYW1SMk83UiticTdJYlBZSXRPMGVzZFJnb1RhWTM4aFpMSjV5MDJvSVZ3b1Bva0dJenhBTUR1YW5RMXZuMldEUTAwUmg2bzVRT2FDUnU5OWZ3RGJRY04wWEF1cWtGcHhUL2NmejNzbEdSVm9rck5VMGlxaU1BSkZFYktTY1pkbVNrVFV6bkMwVStNZndGT0dkTGdzZXdSeVBLd0JaWVNteTZVMzI1aVVoQlFOeGJBQzNGTEtEVjlWU091UXBPT3VrSi9HQW11L3R5RWJYOURnRXA2ZHYxem9VMElxenBHNmdzc1NqSVlSVlBHZ1UxUUFRWVJnSVQ4Z0VWMEVYcjFzcWVoMkk2clhqdG1vQ1l5RURDZS9Qa0ZFaS9RNDhGdVQyOXA1NTdpTitMQ3drNUNLL0NaMldkQWRmUVpoMlo5UUdyelBMU05SajVpZ1VXemw5VmkwckNxSDhHMUtwNFFNTGt1d01DQXlwZHZpRFh5T0lrMEFIVE04SEJZS2gzYjAvRitEeG9OajRaZG9aZkNwUVZkblphcnFvTWFIV25NTE5WY3lldnl0R3NyWFFFb0lidWJxV1lObzdOUkh6ZGMwenZUMjFmV1Zpcmo3ZzM2aXk2cHhvZ2Z2Z0hwMXhIMVR1cmJ6OFF5eUhuWGVCSmljcFlVY3RiekFwd3paMUhUK0ZQRVhNQWdVWmV0Z2VHTXd0NEcrREhpRFQyTHUrUFQyMWZqSkNBZlYxNmEvV3UxUHFPa1VIU1RLWWhXVzZQaGhIVWxOdFd6Rm5BN01iWStyNjR2a3dkcGZOQjJKZldnV1hBdmt6ZDQySzRsTjl4N1dyZzRrSUtnWENiNG1jVzU5NU1DUEovY1RmUEFNUU1GV3ducXdkZTR3OEhaWUpGcFF3Y1NNaGpWejRCOHA2bmNTQ04xWDRrbHhvSUg0Qk4ySjZ0YUJNajZsSGtBT3M4SkpBbVhxNXhzUXRyUElQSUlwL0hHNmkyMXhNR2NGZ3FEWFNSRjB4UWcxNGQydXk2SGdLRTEzTFN2UWU1Mm9TaEY1SngxUjZhdnlMNHRoaFhRWkhmQzk0b1p6dVBVQktGWWYxVnZEYXhJcnRWNmROR1N4N0RPMGkxcDZDekJrdUFtRXF5V2NlUVk3RjkrVTBPYllEem9hMWlLYW8vY09EL3Y2UTlnSHJycjF1Q2VPazhmU1Q5TUcyM1VsMEttTTNyK1duNkhpNldBY0w3Z0VlYXlraWN2Z2p6a2pTd0ZzQVhJUjgxWng0UUo2b29zVnlKa0NjVCs0eEFsZENjaWhxdlRmOTRISFVQWFlwM1JFSWFSNGRocFFGNitGSzFIMGk5aTdQdmg4b3d1M2xPNFBUMWl1cXUrRGtMMkJqOStrZGZHQWcyVFh3MDNpTkh5b2J4b2ZMRTJpYmpzWURQZ2VFUWxSTVI3YWZYYlNHUWNuUGpJMkQrc2R0bXVRNzcxZGJBU1VzRG5kVTd0NThqcnJOR1J6SVN2d2lvQWxIczVGQStjQkU1Q2N6bmtkOE5NVjZCUjZrc25LTFBabk1VYXdSRFUxTVovaWIzeENka1RibEhLdTRibE5peWxINW4yMTN5TTB6dWJFaWUwbzRKaHpjZkF5M0g1cWgybDE3dUxvb0JOTGFPK2d6b25USDJ1RjhQUXU5RXlIK3BqR3NBQ1RNeTRjSHpzUGR5bVVTWFlKT01QM3lUa1hxdk8vbHB2dDBjWDVla0RFdTlQVWZCZVpPRGtGdUFqWENhR2RpNmV3NHF4SjhQbUZmd21QcGtnUWpRbFdxb21GWTZVa2ptY25BdEpHNzVFVlIrTnB6R3BQMUVmNXFVVWJmb3dyQzN6Y1NMWDNCeGdXRWdFeC92OWNQOEg4dTFNdnQ5L3JNRFlmNnNqd1UxeFNPUEJnekZFZUpMTVJWRnRLbzVRSHNVWVQ4WlJMQ2FoMjc1OTlFdXFvQzlQWWpZTzZhb0FNSEI4WDFPSHdFQVlvdUhmSEIzbnliMkIrU25aeE0vdncvYkN0T1JqTE1TeTVhWm9FcHZnZEd2bEpmTlBGVXUvcDdaNFZWSzFoaUkwL1VUdUIzWlBxNG9oRWJtN01udGdjMWV2RXRrbmFvc2daU3duREMyQmRNbWlicGVnNDhYOEl4bCsvOCt4WGRic2hRWFVQUHZ4OGpUM2ZrRUxpdkhTbXFiaGJsZk5GU2hXQXlRbkozV0JVNlNNWVNJcFREbUhqZExWQWRsQURkejlnQ3BsWnc2bVRpSHFEd0lzeGJtOUVyR3VzaVZwZzJ3OFEza2hLVi9SOU9qOFBGZUY0M2htVy9uU2Q5OW5aemh5akNYM1FPWmtrQjZCc0g0SDg2NldHeXY5RTBoVkF6UFlhaDJ0a1JmUVpNbVAycmluZk9lUWFsZ2Uwb3ZoZHVCakpzOWExR0J3UmVlcmNlaWZ5NDljdE9oNS82NUFUWXVNc0FrVmx0bXZUTEJrNG9IcGRsNmkrcDhEb05qNEZiMnZoZEZZZXIySlNFaWxFd1BkNW41ek5vR0JYRWpyZWcvd2gyTkZuTlJhSVVIU09YYTRlSlJ3eWdab1g2dm5XbnFWZENSVDFBUnhlRnJOQkordHNkb29Nd3FuWWhFN3pJeG5EOHBaSCtQME51MXdXeENQVEFEZk5XbXF4NjI2SUJKSnE2TmVhcGNHZU9tYnRYdmwwVGVXRzBZN09HR1Y0K0VIVHROQklUNVdkMEJ1amw3aW5YZ1pnZlhUTTVlZkQzcURUSjU0Tzl2M0Jrdit0ZElSbHExa1hjVkQwQkVNaXJtRnhnbE5QdDVwZWRiMUFueHVDWU1DaFV5a3dzVElXcVQyM1hEcHZUaUtFcnUxY1RjRU1lbmlCK0hRRGVoeFBYTm1rb3RGZHdVUG5pbEIvdTROeDVYYzZsOEo5akgxRWdLWlVVdDh0OGN5b1psZURCRXQ4b2liRG1KUkFvTUtKNU9lOUNTV1M1Wk1FSnZhY3NHVmRYRFdqcC9ZcGU1eDBwOVBYQjJQQXd0MkxSRDNkK2Z0TmdwdXl2eGxQOHBCODRvQjFpNzN2QVZwd3lybVhXNzJoZlc2RHpuOUprajQrKzBWUTRkMEtTeDFBc0RBNE90WFhEbzYzL3crR0QrekM3dzVTSmF4c21ubFlSUTRkZ2RqQTd0VGwyS05MbnBKK212a29EeHR0MWE0b1BhWDNFVnFqOTZvOXNSS0JRcVU3Wk9pdXBlQUl5TE1EK1kzWXdIeDMwWFdIQjVDUWl3N3EzbWoxRURsUDJlQnNaYno3OWF5VU1ieUhRN3M4Z3U0TGdpcDFMaUdKajdOUWo5MDUvK3JnVVlLQUE1cWRybEhLSWtuV21xZnVSK1BCOFJkQmtEZy9OZ25sVDg5RzcyaDJOdnlTbmo3VXlCd0QrbWkvSVdzMXhXYnh1VndVSVZYdW41Y01xQnRGYnJjY0krRElManNWUWc2ZWVxMGl0aVJmZWRuODlDdnlGdHBreGFhdUV2U0FOdVptQjFwOEZHUGJVOTRKOW1lZHdzWjlIa1VZam1JN09INUh1eGVuZExieFRhWXJQdUlmRTJmZlhGS2hvTkJVcDMzSHNGQVhtQ1YvVnhwcTVBWWdGb1JyNUF5OTNaTFJsZ2FJUGpoWmpYWlpDaFQrYUU1aVdBWE1YMG9TRlFFdHdqaXVoUVFJdFRRWDVJWXJLZktCK3F1ZVROcGxSMUhvZmxvNS9JNmFQUG1BQ3dRQ0UyalRPWW81RHoxY3M3U29kMEtURy8za0VER2sza1VhVUNPTjE5eFNKQ2FiM2tOcFdaaFNXa084bCtTcFc3MFduM2cwY2lPSUpPNUpYbWE2ZGJvczZqeWlzdXhYd1VVaGoyKzF1R2hjdnVsaUt0V3dzVVR3NGdpMWMvZGlFRXBaSG9Lb3hUQmVNRG1oUGhLVHg3VFhXUmFrVjhpbUpSMzU1RGNJSGtSOUlSRUh4b2hQNFRieVI1THRGVTI0dW1SUFJtRVlIYnBlMUxnaHl4UHg3WWdVSGpOYmJRRlJRaGg0S2VVMUVhYlh4OEZTM0pBeHAycndSRG9lV2tKZ1dSVVNLdzZnR1A1VTJQdU85VjRadWlLWEdHekZRdVJ1Zit0a1NTc2JCdFJKS2hDaTNFTnVMbFhoUGJqVEtENGRqWFZuZlhGZHM2WmIrMVhpVXJSZnlheUd4SnExK1NZQkVmYktsZ2ppU21rMG9yZ1RxelNTK0RaNXJUcXNKYnR0aU50cCtLTXFHRTJBSEdGdzZqUXFNNXZENnZNcHRtWFY5T0FqcTQ5VWYvTHg5T3BhbStIbjVPOXA4cW9CQkFRaXh6UVo0ZU5Wa085c1B6SkFNeVIxeTQvUkNRUTFzMHBWNUtBVTVzS0x3M3RrY0ZiSS9KcXJqQ3NLNE13K1c4YW9kNGxpb1l1YXdVaUN5VldCRS9xUGFGaTVibmtncGZ1L2FlNDcxNzRySTFmcVFvVGJXMEhyVTZGQWVqcTdCeU0wVjR6a1pUZzAyL1lKSzJON2hVUVJDZVo0QklnU0VxZ0Q4WHNqekc2TElzU2J1SG9JZHovTGhGemJObjFjbGNpMU5IV0owLzYvTzhISk1kSXBFWmJxaTFScnJGZm9vL3JJLzd1Zm0yTVBHNWxVSTBJWUo0TUFpSFJUU09GSjJvVHZlckZIWVhUaGtZRklveUZ4NnJNWUZnYU9LTTR4TldkbE9uSWNLYi9zdXB0cHRnVE9UZFZJZjRZZ2RhQWpKbklBbTRxTk5ITlFxcUF6dmk1M0dreVJDRW9zZVVCckhvaFpzalVia1I4Z2ZLdGMvK09hNzJsd3hKOE1xNkhEZkRBVGJmYkpoemVJdUZRSlNpdzF1WnBySGx6VWY5MFdncUc3NnpPMGVDQjFXZFB2MUlUNnNOeHhoOTFHRUwyWXBnQzk3aWtGSHlvYUg5Mm5kd2R1cVo2SVlqa2cyMERYMzNNV2RvWms3UWtjS1VDZ2lzSVlzbE9hYUx5dklJcVJLV1FqMTZqRTFEbFFXSkphUG9wV1RKalhmaXhFalJKSm84ZzQrK3d1UWpicStXVllqc3FDdU5JUVczWWpueEtlMk01WktFcXErY1g3WlZnbmtic1UzUldJeVhBMXJ4djRrR2Vyc1lKakQvL2F1bGRYR21jRWJjZlRlRjE2WTE3MDhGQjFISWZtV3Y2ZFNGaTZvRDRFK1JJakNzRVora1k3ZEtud1JlSkp3M3hDakt2aTNrR040MnJ2eWhVbEl6MEJwK2ZOU1Y1eHdGaXVCekcyOTZlNXMvb0hvRnRVeVVwbG1QdWxJUGwrZTFDUUlRVnRqbHpMenp6YlYrRC9PVlF0WXpvNWl4dE1pNUJtSHVHNE4vdUtmSms1VUlSRXA3KzEyb1psS3RQQm9tWFN6QVkwS2d0YlB6elpvSFF4dWpuUkVVZ0JVK08vaktLaGd4VmhSUHRicXlIaVVhUndScEh2N3BnUlB5VXJuRTdmWWtWYmxHbWZUWTI4dEZDdmxJTEMwNFR6M2l2a05XVmF6QStPc1lyeHZSTS9oaU5uOEZjNGJRQmVVWkFCR3g1Uy94RmY5TGJibWsyOThYN2lGZzJ5ZWltdnNRcXFKK2hZYnQ2dXErWmY5akMrSmN3aWNjZDYxTktRdEZ2R1dyZ0ppSEI1bHdpNmZSOEt6WVM3RWFFSGYva2E5RUM3SDhEK1dFYTNURUFDSEJrTlNqL2NYeEZlcTRSbGxDK2ZVRm0yeHRzdFlMTDJub3MxRGZ6c0M5dnFERGRSVmNQQTNIbzk1YUVRSHZFeFZUaFhQcXltNjVsbGtLbGZSWGJQVFJpRGVwZHlsSGptVjlZVFdBRWpsRDlEZFFuQ2VtN0FqL21sNThPbjM2NjM5MjIxNEI1enJtUXovOXlTRzJtRnFFd2pxNXNGbDV0WUpQdzVoTno4bHlaUFVUc3I1RTBGMkM5Vk1Qblpja1dQNyttYndwL0JpTjdmNGtmN3Z0R25aRjJKR3ZqSy9zRFgxUnRjRlk1b1BRbkU0bElBWVY0OVUzQzlTUDBMQ1kvOWkvV0lGSzlPUmp6TTlrRy9LR3JBdXdGbWdkRXBkTGFpcVFOcENUR1pWdUFPNjVhZmtZMWgzM2hycXlMalp5OTJKSzMvdHdkajlwYWZGY3dmWE9ObVBRV2xkUGxNZTdqbFAyNEpzMHY5bThiSUo5VGdTMkl1UnZFOVpWUmFDd1NKWU90QWZMNUgvWVM0RmZ6S1dLYmVrK0dGdWxoZXlLdERObEJ0cmRtcitLVStpYkhUZGFsekZVbU1meHczZjM2eCszY1FiSkxJdFNpbFc5Y3V2WkVNakt3OTg3anlrWlJsc0gvVUkrSGxLZm8ydEx3ZW1CRWVCRnRteEYyeG1JdEEvZEFJZlErclhubTg4ZHF2WGErR2FwT1lWdC8yd2FGaW1YRngzVEMyTVVpT2k1L01sKzNyai9ZVTZJaHgyaFhnaURYRnNVZVFrUkFENndGM1NDUGkyZmxrN1h3S0FBNHpib3F5bnVFTEQzMTJFSjg4bG1ERVZPTWExVy9LL2E4dEd5bFpSTXJNb0lMeW9NUXp6YkRKSE5acmhINzdMOXFTQzQySFZtS2laNVMwMDE2VVRwODNnT2hDd3o5WEl0SzlmZ1hmSzNGNWQ3blpDQlVla29MeHJ1dFFhUEhhMTZSanNhMGdUcnp5anFUbm1jSWNyeGc2WDZka0tpdWN1ZGMwREQ1VzRwSlBmMHZ1RFc4cjUvdXcyNFlmTXV4RlJwRDJvdlQybUZYNzl4SDZKZitNVmR2MlRZcVI2Lzk1NVFnVlBlM0pDRC9XakFZY0xBOXRwWGdGaUVqZ2UySjVsamVJL2lVemc5MUtRdUhrSUk0bW1IWnhDM1hRT1JMQUM2Rzd1Rm41TE9tbG5Ya2pGZG9POTc2bW9OVHhFbFM4SGR4V29QQWtqam9jRFIxMzZtMmwrZjV0NnhhYU5nZG9kT3ZUdTByaWV2bmhOQUI3OVdOclZzNkVzUGdrZ2ZhaEY5Z1NGenpBZCtySlNyYXc1TWxsaXQ3dlVQNVl4QTg0M2xVcHU2LzVqQVIwUnZINHJSWGtTZzNuRStPNUdGeWZlK0wwczVyM2swNUZ5Z2hTRm5LbzRUVGdzMDdxajRuVExxT1lqNnFhVzlrbkpURGtGNU9GTVlibUNQKzhIMTZUeTQ4Mk9qdkVSVjZPRnl3MDQzTDl3M2hvSmk0MDhzUitTR28xV3ZpWFV1OGQ3cVMrZWhLanBLd3hlQ3Roc20yTEJGU0ZlZXR4MHg0QWFLUHh0cDNDeGRXcUNzTHJCMXMvajVUQWhjMWpOWnNYV2w2dGpvL1dEb2V3eHpnOFQ4Tm5oWjFuaVV3TC9uaGZ5Z0xhbkNuUndhRkdEeUx3K3NmWmh5WjFVdFlUcDhUWUI2ZEU3UjNWc0tLSDk1Q1V4Sjh1OE4rOXUyLzlIVU5LSFczeDN3NUdRcmZPUGFmazJ3NXFacThNYUhUMGViZVkzd0lzcDNyTjlscnBJc1c5YzF3czNWTlYrSndOejBMbzkrVjd6WnI2R0Q1NldlNmdXVkl2dG1hbTVHUFBrVkFicjc0cjZTd2h1TCtUUlh0Vy8wcGd5WDE2Vk5sNC9FQUQ1MFRuVVB1d3JXNk9jVU8yVmxXWFMwaW5xODcya2s3R1VsVzZvL296RktxK1NpcDZMY1R0U0RmRHJQVGNDSGh4NzVIOEJlUm9uK0tHMndSd3pmRGdXaEFMbWlXT01PNmgzcG0xVUNaRVBFalNjeWs3dGRMeDZXcmRBMk4xUVRQRU52Tm5oQ1FqVzZrbDA1Ny9xdjdJd1JyeUhyWkJDd1ZTYkxMbkZSaUhkVHdrOG1sWWl4RnQxc2xFY1BEN0ZWaHQxM0h5cVZleUQ1NUhPWHJoMkVsQXhKeWluR2VvRnp3S0E5MXpmcmRMdkR4SlNqem1JbWZ2VGlzcmVJMjVFRGNWZkdzbXhMVmJmVThQR2UvN05tV1dLalhjZFRKMTFqQWxWSVkvQnYvbWN4Zy9RMTB2Q0h3S0cxR1cvWGJKcTVueERoeUxxaW9ybjdXZDdWRVZMOFVnVnpwSE1qUStaOERVZ1N1a2lWd1dBS2tlVGxWVmVaN3QxREduQ2dKVklkQlBaQUVLNWY4Q0R5RE5vN3RLNC81REJqZEQ1TVBWODZUYUVoR3NMVkZQUVNJNjhLbEJZeTg0RmlldmRVOWdXaDZYWnJ1Z3Z0Q1ptaTl2ZmQ2ZGI2VjdGbW9FY1JIbkczNlZaSDhONGFaYWxkcTl6WmF3dDF1QkZneFlZeCtHcy9xVzFqd0FOZUZ5K0xDb3lteU02emdHN2o4Ykd6VXlMaHZyYkprVFlBRWRJQ0ViNGtNS3VzS1Q5VjNlSXdNTHNqZFVkZ2lqTWMrN2lLcnIrVHhyVldHMFUrVzk1U0dyeG54R3JFNGVhSkZmZ3ZBalVNNFNBeThVYVJ3RTlqNlpRSDVxWUFXR3RYQnl2RGlMU0RmT0QweUZBM1VDTUtTeVEzMGZ5eTFtSVJnNFpjZ1pITE5IV2wrYzlTZWlqT3ZiT0p4b1F5N2xUTjJyM1k4cDZvdnh2VVk3NGFPWWJ1VmV6cnlxWEE2VStmY3A2d1NWOVg1L09aS1AxOHRCNTZVYTBnTXl4Skk3WHlOVDdJcnFOOEdzQjlyTC9rUDVLTXJqWHhncUtMRGErVjVPQ0g2YTVobU9XZW1NVXNlYTl2UWw5dDVPY2U3NlByVHlUdjUwRXhPcW5nRTNQSFBmU0wvL0FJdFBkQjdrR255VFJoVlVVRk5kSkoyejdSdGt0WndnbVF6aEJHL0c3UXNqWm1KZkNFN2s3NUVtZElLSDd4bG5tRHJOTS9YYlRUNkZ6bGRjSC9yY1JHeGxQcnY0cURTY3FFN0pTbVFBQkpXcVJUL1RVY0pTd29RTSsxanZEaWd2cmpqSDhvZUsyaW4xUysveU8xajh4QXdzL1Q1dTBWbkl2QVBxYUUxYXROdU4wY3VSbGlMY0gyajBuVEw0SnBjUjd3OVF5YTBKb2FIZ3NPaUFMTENDelJrbDFVVUVTeit6ZS9nSVhIR3REd2dZcks2cENGS0oxd2ViU0RvZzR6VGxQa2dYWnF4bFFEaVlNamhEcHdUdEJXMld4dGhXYm92OWR0Mlg5WEZMRm1jRitlRWMxVWFRNzRncVppWnNkajYzcEgxcWN2M1Z5OEpZY2lvZ0lWS3NKOFl5M0o5dy9HaGpXVlNRQW1yUzBCUE9XSytSS1YrMGxXcVhnWU1uSUZ3cGNaVkQ3elBTcDU0N2k5SGxmbEI4Z1ZuU1RHbW1xMUNsTzA4MU9XL1VIMTFwRVFNZmtFZERGempMQzFDZG8vQmRMM3M3Y1hiOEorK0h6ejFyaE9VVlpGSVBlaFJpWjhWWXU2KzdFcjdqNVBTWnU5Zy9HQmRtTnpKbXlDRDl3aXN3ajlCWncrVDNpQnJnODFyZTM2aWhNTGpvVkxvV2MrNjJhMVUvN3FWWDVDcHZUVkY3cm9jU0FLd3Y0Y0JWcVptN2xMRFMvcW9YczRmTXMvVlFpNkJ0VmJOQTN1U3pLcFFmakgxbzN4NExydmtPbjQwemhtNmhqZHVEZ2x6SlV3QTBQT2FiZ2RYSW5kcDlmemhPbzIzUGUrUms5R1NMWDBkNzFQb3FyeThOUURUek5sc2ErSlRORzkrVXJFZituZ3hDakdFc0RDYzBieit1ZFZSeUhRSTFqbUVPM1MrSU9ReWNFcTdYd0I2ejN3Zk1mYTczbThQVlJwK2lPZ3RaZmVTQmwwMXhuMDN2TWFRSmt5ajd2bmhHQ2tsc0NXVlJVbDR5KzVvTlV6UTYzQjJkYmpERjN2aWtkLzNSVU1pZlBZblg1R2xmdWsyRnNWLzdScWpJOXlLVGJFOHdKWSs3NHA3cVhPOCtkSVlnanRMRC9OOFRKdFJoMDROOXRYSkE0SDU5SWtNbUxFbGd2cjBRNU9DZVZmZEF0KzVoa2g0cFFnZlJNSHBMNzRYYXRMUXBQaU95SFJzL09kbUh0QmY4bk9aY3hWS3pkR2NsSU4xNmxFN2tKK3BWTWpzcE9JKzUrVHFMUk82bTBacE5YSm9aUnY5TVBEUmNBZkpVdE5aSHlpZy9zMnd3UmVha0ZnUFBKd0NRbXUxSTMwL3RjQmJqaStOYTUzaTFXMU4rQnFvWTdaeG8rVS9NOVh5SjRPazJTU2tCdG9Pcnd1aEFZM2EwM0V1Nmw4d0ZkSUcxY04rZThob3BUa2lLRjA5M0t1SC9CY0IzOXJNaUdETG42WFZoR0tFYWFUL3ZxYi9sdWZ1QWRwR0V4ZXZGMStKOWl0a0ZoQ2Z5bVdyOXZHYjNCVEs0ajU5OHpSSDcrZStNVTltYXJ1WnFiMHBrR3hSRFJFMUNENFo4TFY0dmhnUGlkazV3MkJxODE2ZzNuSHcxLy9qM0pTdHo3TlI5SElXRUxPOFRNbjNRclAvelpwLy8rRHY5cDQyOS9vZ3YrR0FUUituL1VkRituczl4TmtYWlFKWFk0dDlqTWtKTlVGeWdBdHpuZFh3anNzK3lXSDlIQW5MUVFmaEFza2RaUzJsMDFITFd2N0w3dXM1dVRINDA5cHFpdHZmU09RZy9jK1p0N2s4NzlQM0s5K1dWNjhuNyszY1pmdVJkL2REUFAvMDNybitkKy9uQnZXZmdEbHQ4K0x6anFKL3Z4M0NuTk93aVhoaG83NzhDOTZpRCsxVEJ2UlpZZVArRUg4MUxFMHZWd09Pcm1DTEIzaUt6STF4K3ZKRXNyUEg0dUYwVUI0VEo0WDN1RGZPQ28zUFlwWWUwTUY0Ym91aDBEUS9sNDNmeFVGN1krZHBXdXZUU2ZmQjB5TzJVUVVFVEkvTHdDWkUzQnZuZXZKN2M5elVsWTNINTh4emtlNkRORkRRRzhuMFd0RE40TEFZTjRub2dLYXYxZXpPZksveit0NnRzQ1RwK2RoeDR5bWpXdUNKazFkRVVpZkRQK0h5UzRpUC9WZzlCMmpUbzlMNE5iaUJ1RFM0bnV1SFc2SCtKRFFuMkp0cVJLR2tFUVBFWUU3dXphelhJa2N4SUFxVXExZXNhc1pCRVRsRVpZN3k3Sm8rUm9WL0lzalk5ZUlNa1V2cjQySGMweHF0c2F2WnZoejFPTHdTeE1PVHVxemxoYjBXYmRPd0JIOUVZaXlCamF0ejQwYlV4VEhiaVd4cUowdW1hMTlxaFBydXZjV0psYmlTU0g0OE9MRERwYUhQc3p2eWN0NDFaZlR1MTArdmpveDZrT3FLNnYwSy9nRVBwaEV2TWwvdndTditBNEhobTM2SlNQOUlYVHlDWkRtNGtLc3FENWF5OGIxU2FkL3ZhaXlPNU4vc0RmRVY2WjRxOTVFK3lmanhwcUJvQkVUVzJDN3hsNHBJTzJiRE9EREZ1clVQd0U3RVdDMlVwbHErQUhtQkh2aXIyUFNna1IxMi9SeTY1TzBhWnRRUGVYaTltVGxGL1dqNUdRK3ZGa1l5aFhzTFRqckJTUDlod2s0R1BxRFA1ckJuNS9sOGIwbUxSQXZSU3pYSGMyOTNiczNzOEVzZEUzbTJleHhpZFdWQjRqb0hSK1MrZHo1L1crdjAwSzNUcU4xNENEQnRoOGVXY3NUYml3WFBzeWdIZEdpZDBQRWR5NkhIbTJ2L0lVdVY1UlZhcFltekdzWDkwbXBuSWROR2NPT3E2NERiYzVHVWJZcEQ5TTdTKzZjTFkvL1FtanhGTFA1Y3VURlJtM3ZBNXJrRlpyb0ZuTzNiakhGMzV1VTNzOG12TDdUcDlueVRjNG15bVRKNXNMSXA3dW1TbkdrTzIzZmFlaHR6M21tVFM3ZmJWeDVyUDd4M0hYSWpSTmVxL0EzeENzOUpOQjA4YzlTOUJGMk8zYk91cjBJdHNsRnhYZ1JQZGFhcEJJaTRkUnBLR3hWejdpcjY5dC9iYzlxVHhqdnRPeUdPZmlMR0RoUjRmWXl3SHYxV2RPcGx4SVY4N1RwTEJ5M1djMFFQMFA5czRHN0ZCTk9kSVRTL3RlcDNvM2gxVEVhNVhERGlpN2ZXdHFSelVFUmVQMmZieHo3YkhXV0pkYklPeE9VSlp0SXROWnBURlJmajZ2bTlzWWpSeFFWTytXVGRpT2hkUGVUSis4WWlyUHZvZUw4OGw1aUxZT0hkM2IvSW1rcSsxWk4xRWwzVWlraGZ0dXRlRVl4ZjFXdWpvZjhQcjRJQ1R1NWV6WnlaNHRIUU14bHpVSExZTzJWTU9vTk1HTC8yMFM1aTJvMm9iZmsrOHFxZFI3eHpiUkRiZ1UwbG51SWd6NExlbFE1WFM3eGJMdVNRdE5TOTV2M1pVT2RhVXgvUWQ4cXhDdDZ4ZjJFNjJ5Yi9IdWtMTzZSeW9yVjhLZ1lsNVlOYzc1eStLdmVmcnhZK2xjLzY0eTlrdldQMGEwYkR6L3JvanErUldqTzA2V2VydVdxTkZVN3IzSFBJY0xXUnFsOElDWnN6MkxzL3FPbS9DTG42KytYK1FmN21Hc3BZQ3Jab2QvbHBsNlJ3NHhOL3l1cThncVY0QjZhSGsxaFZFMVNmSUx4V3U1Z3ZYcWJmQVJZUXBzcGN4S3AxRi9jOFhPUHprWnZtb1N3K3ZFcUJMZHJxMWZyM3dBUHY1Tm5NOWk4RitqZEF1eGtQNVo3MWM2dWhLM2VubG5HeW1yN1VzV1pLQzEycWdVaUc4WFhHUTlteG5xejRHU0lseWJGOWVYbWJxajJzSFgrYTFqZjBnUm9PTkhSZFJTcklxMDNUeTg5ZVExR2JWL0JrK2R1NCtWMTV6bHMrdnZFUnZaNEU3WmJueFdUVmpEamI0by9rOGpsdzQ0cFRJclVHeHh1SnZCZU8raGV1aE9qcEZzTzZsVkovYVhuSkRhL2JNMFFsMWNMYlhFL1BidjNFWjN2ajNpVnJCNWlyanVwWlR6bG52Njc3TnJJOVVOWU5xYlBncC9IWlhTK2xKbWs4N3dlYys3WU94VERvMmF3MmwzTmZEcjM0Vk5sdnFXSkJrbnVLN29TbFo2L1QxMHp1T29QWk9lb0lrODFOK3NMODQzV0oyUTRaMGZaM3Njc3FDL0pWMmZ1aFdpMWpHVVJTS1pWNjM3bGY1M1hubngxNi92S0VYWTg5YVZKMGZ2OTFqR2RmRytHNCtzbml3SGVzNGhTK3VkT3I0UmZoRmhHL0Y1Z1VHMzVRYVUrTWN1TG1jbGI1WldtUitzRzVWNm5mK1B4WXpscm5GR3hwWmFLOGVxcVZvME5mbUFXb0dmWERpVC9GblViV3Z6R0RPVHI4YWt0T1pXZzRCWXZ6NVlIMTJaYmZDY0d0TmsrZERBWk5HV3ZIb3YrUElPblk5UHJqZzhoL3dMUnJUNjlzdWFNVlo1Yk51SzAwbFNWcG5xU1gxTk9OLzgxRm9QOTJyWW5kaW9ud2dPaUE4V01mNHZjOGwxNUtxRUVHNHlBbTIrV0FONUJyZnUxc3E5c3VXWXFnb2FqZ09ZdC9KQ2sxZ0M4d1BrSytYS0N0Ulg2VEF0Z3ZybnVCZ05SbW42SThsVkRpcE9WQjlrWDZPeGtwNFpLeWQxTTZHajgvdjJVN2srWVFCTDk1S2I5UFFFTnVjSmIwSmxXM2I1dE9iTjdtL1oxajFldjM4OGQ3bzE1emdYc0k5Q2lrQUdBVmlSNmxrSnY3bmI0QWs0ME0yRzhUSjQ0N2tOK3B2ZkhpT0ZqU1VTUDZQTStRZmJBeXdLSkNCYXhTVnhwaXpIc2VaVXlVQmhxNTl2Rndya3lHb1JpSGJvMGFwd2VFWmVTTHVOaVErSEFla09uYXJGZzAwZFpOWGFQZW9IUFRSUjBGbUV5cVlFeE9WYWFhTzhjMHVGVWg3VTRlL1V4ZEJtdGhsQkRnZzI1N1EzM2oxaEE3SFR4U2VUVFN1Vm5QWmJnVzFub2R3bUcxNmFLQkRLeEVldHY3RDlPak8wSmhyYkpUbm9lK2tjR29ESmF6RlNPOC9mVU45SnkvZzRYSzVQVWt3MmRnUERHcEpxQmZoZTdHQStjanpmRS9FR3NNTStGVjluajlJQWhyU2ZUL0ozUUU1VEVJWXlrNVVqc0k2WlpjQ1ByNkE4RlpVRjRnOW5ucFZtalg5ME1MU1F5c0lQRDBuRnpxd0NjU0ptSWI1bVl2MkNtaytDMU1ERmtaUXlDQnE0Yy9ZYWk5TEo2eFlrR1MveDJzNS9mcklXMnZtRzJXcnYwQVBwQ2RnQ0E5c25GdmZwZTh1YzBPd2RSczRHOTk3M1BHRUJuUUI1cUtyQ1E2bTZYL0g3TkluWjd5LzE2NzQvWlhPVnA3T2V1Q1JrOEpGUzUxNlZIcm5IMUhrSVVJbFRJbGpqSGFRdEV0a0p0b3NZdWw3N2NWd2prM2dXMUFqYWE2eldleUhHTGxwazNWSEUyVkZ6VDJ5SS9FdmxHVVN6Mkg5ellFMXM0bnNLTXRNcU55S050TC81OUNwRkpraTVGb3U2VlhHbTh2V0FURVB3clVWT0x2b0E4akx1d096VkJDZ0hCMkNyNVY2T3dFV3RKRUtva0prZmM4N2grc05IVHZNYjBLVlRwNTI4NFFUUHVwb1d2UVZVd1Vlb2daUjNrQk1FU1lvMG1mdWtld1JWUEtoNStyekxRYjdIS2pGRklnV2hqMXczeU4vcUNOb1BJOFhGaVVnQk5UMWhDSEJzQXo4TDdPeXQ4d1FXVUZqOTJPTm4vQVB5SkZnOGh6dWVxb0pkTmo1N1JPckZiZmZ1Uy9YeHJTWExUUmdqNXV4WmpwZ1FZY2VlTWMyd0pyYWhSZVNLcG0zUWpIZnFFeFRMQUIyaXBWdW1FOHBxY1p2OExZWFFpUEhIc2diNUJNVzh6TTVwdlFpdCttUXg4WEdhVkRjZlZiTHlNVGxZOHhjZm1tL1JTQVQvSDA5VVFvbDVnSXo3ckVTRG1uclE0YlVSSUI0aVJYTURRd3hnZXgxR2d0RHhLcDJIYXlJa1IrRS9hRG1DdHRObTJDNmx5dFdkZk9WekQ2WDJTcERXalFEbE1SdkFwMXN5bVd2NG15MWJQQ0QrRTFFbUduTUdXaE53bXljSm5EVjJXclFOeE80NXVrRWIwOEFBZmZpellLVlVMcDE1STR2Yk5LNUR6V3dDU1VBRGZtS2hmR1NVcWlpMUwyVXNFOHJCN21MdUh1VUpaT3g0K1dpaXpIQkovaHdib2FCemhwTk9WdmdGVGY1Y0pzSGVmN0wxSENJOWRPVVViYitZeFVKV242ZFlPTHorVEhpOTFrelk1ZHRPNWMrZ3JYN3YwakVic3VvT0dub0lyZURJZy9zRk15RytUeUNMSWNBV2QxSVoxVU5GeEU4VWllMTN1Y200MFUyZmN4QzB1M1dMdkxPeHd1K0Y3TVdVc0hzZHRGUVo3VytubGZDQVNpQUt5aDhyblAzRXlEQnl2dEpiNktheDYvSGtMelQ5U3lFeVRNVk0xelB0TTBNSlkxNERtc1doNE1nRDE1RWE5SGQwMEFka1RaMEVpRzVOQUd1SUJ6UUpKMEpSMG5hK09CN2xRQTZVS3hNZmloSVE3R0NDblZ6Njk0UXZ5a1dYVHhwUzJzb0R1K3NtcnUxVWRJeFN2QXN6QkZEMWM4YzZaT29iQThiSmlKSXZ1eWNnSVhCUUlYV3doeVRnWkRReEpUUlhnRXdSTkFhd0dTWE8wYTFES2pkaWhMVk5wL3RhRS94WWhzZ3dlK1ZwS0VFQjRMbHJhUXlFODRnRWloeENuYmZveU91SklFWHkyRklZdytKalJ1c3liS2xVMmcvdmhUU0dUeWR2Q3ZYaFlCZHRBWHRTMnY3TGtIdG1YaC84Zmx5MWRvOEZJL0QwZjhVYnpWYjVoK0tSaE1HU0FtUjJtaGkwWUcvdWo3d2d4Y2Z6Q3JNdmRqaXRVSXBYRFg4YWUySmNGLzM2cVVXSU13TjZKc2phUkdOaitqRXRlR0RjRnlUVWI4WC9OSFN1Y0tNSnA3cGR1eHRENkt1eFZseXh4d2FlaUMxRmJHQkVTTzg0bGJ5ckF1Z1l4ZGwrMk44LzZBZ1dwby9JZW9BT2NzRzM1SUEvYjNBdVN5b2E1NUw3bGxCTGxhV2xFV3Z1Q0ZkOGY4TmZjVFVnekp2NkNiQis2b2hXd29kbGs5bkdXRnBCQU9hejV1RVc1eEJ2bWpuSEZlRHNiMG1Yd2F5ajNtZFlxNWd4eE5mM0gzL3RuQ2dId2pTcnBTZ1Z4TG1pVHR1c3pkUlVGSXNuNkxpTVBqTDgwOHZMMXVRaERiTTdhQTQzbUlTWFJlcWpTc2t5bklSY0hDSjlxZUZvcEpmeDl0cXlVb0diU3dKZXgvMGFERTNwbEJQR3ROQllnV2JkTG9tMytRL2JqZGl6UjIvQVMvYy9kSC9kM0c3cHlsMXFEWGd0T0Z0RXFpZHdMcXhQWXRyTkV2ZWFzV3EzdlBVVXRxVGV1OGdwb3Y0YmRPUVJJMmtuZUZ2Uk5NclNoeVZlRXVwSzFQb0xEUE1TZldNSUpjczI2N21HQjhYOUNlaFFDRjBnSXlocFAxMG1ieU03bHdXMWU2VEd2SEJWMXNnL1V5VGdoSFBHUnFNeWFlYkM2cGJCMVdLTkNRdGxhaTFHR3ZtcTl6VUthVXpMYVhzWEVCWXRIeG1GYkVaMmtKaFIxNjRMaFdXMlRscDFkaHNHRTdaZ0lXUkJPeDNaY3UyRHhnSCtHODNXVFBjZUtHMFRnUUtLaWlOTk9sV2d2cU5FYm5yazZmVkQrQXFSYW0yT2d1WmIwWVdTVFg4OE4raS9FTFN4YmFVVXBQeDR2SlV6WWcvV29uU2VBOHhVSzZ1N0RQSGdwcVdwRWU2RDRjWGc1dUs5RklZVmJhNDdWL25iK3d5T3RrK3pHOFJyUzRFQTBvdXdhMDRpQnlSTFN2b0pBMkZ6YW9iYlp0WG5xOEdkYmZxRXA1STJkcGZwajU5VENWaWY2K0U3NXA2NjVmYWlYOGdTMjEzUnFCeFRacWZIUDQ2bkY2TlNlbk9uZXVUK3ZnYkxVYmRUSDIvdDBSRUZYWkpPRUI2REh2eDZONmc5OTU2Q1lyWS9BWWNtOWdFTEpYWWtyU2krMEYwZ2VLRFpnT0NJWWtMVS8rR09XNWFHajhtdkxGZ3RGSDUrWEM4aHZBRTNDdkhSZmw0b2ZNL1F3azR4MkErUitueWM5Z051LzlUZW03WFc0WFJueVJ5bWY1MnowOWNUT2RyK1BHNitQL1ZiNFFpWGx3YXVjNVdCMXozbytJSmpsYnhJOE15V3RTelQrazRzS1ZiaEYzeGErdkR0czNOeFhhODdpaXUreFJIOWNBcHJuT0wyaDZ2VjU0aVFSWHVPQWoxczhuTEZLOGdaNzBUaElRY1dkRjE5LzJ4YUptVDBlZnJrTkRrV2JwQVFQZG85Mlo4K0huL2FMamJPekI5QUkvazEyZlBzOUhoVU5ESjF1NmF4MlZ4RDNSNlB5d043QnJMSjI2ejZzM1FvTXA3NnF6endldHJEQUJLU0drZlc1UHdTMUd2WU5VYks2dVJxeGZ5VkdOeUZCMEUrT3VnTU04a0t3bUptdXB1UldPOFhrWFhYUUVDeVJWdzlVeUlydEN0Y2M0b05xWHFyN0FVUkJtS242S2h6M2VCTjk2THdJSnJBR1A5bXIvNTl1VE9TeDYzMXN1eVQrUXVqRGQ0YmVVRnBaMGtKRUVuamxQK1gvS3Iya0NLaG5FTlRnNEJzTVRPbU1xbGoyV01GTFJVbFZHMGZ6ZENCZ1V0YTlvZHJKZnBWZEZvbVRpNmFrMHRGalhUY2RxcXZXQkF6alk2aFZySDlzYnQzWjlnbitBVkRwVGNRSW1lZmJCNGVkaXJqenJzTmlldnZlNFpUNEVVWldWM1R4RXNJVys5TVQvUkpvS2ZaWllTUkdmQzFDd1BHLzlyZE1PTThxUi9MVVl2dzVmL2VtVVNvRDdZU0Z1T29xY2hkVWcyVWVQZDFlQ3RGU0tneExTWjc2NG95NGx2UkNJSDZib3dQeFpXd3hORmN0a3NMZWlsNDdwZmV2Y0JpcGtrQkljNG5nWkcra3hHWjcxYTcyS1E3VmFaNk1aT1prUUpaWE02a2IvQWMwL1hrSng4ZHZ5ZkpjV2JJM3pPTkVhRVBJVzhHYmtZanNaY3d5K2VNb0tyWWpEbXZFRWl4SHprQ1NDUlBSemhPZkpadUxkY2J4MTlFTDIzTUE4cm5qVFpaNzg3RkdNbmtxbnB1ekI1LzkwdzFndFVTUmFXY2IwZXRhODE5OFZFZVpNVVNmSWh5dWM0L255d0ZROXVxbjdqZHFYaCs1d3d2K1JLOVhvdU5QYllkb0VlbE5HbzM0S3l5U3dpZ3NyZkNlMHYvUGxXUHZRdlFnOFIwS2dITzE4bVRWVGhoUXJsYkVRMEtwL0p4UGRqSHlSN0UxUVB3L3V0MHIrSERERzdCd1pGbTlJcUVVWlJwdjJXcHpsTWtPZW1lTGNBdDVDc3J6c2tMR2FWT0F4eXlTelpWL0QyRVk3eWROWk1mOGU4VmhIY0tHSEFXTnN6ZjFFT3E4Zk5zdGlqTVk0Slh5QVR3VGRuY0ZGcWNORGZEbyttV0Z2eEpKcGM0c0VadGpYeUJkb0ZjeGJVbW5pQ29LcTVqeWRVSE5qWUp4TXFOMUt6WVY2Mk11Z2NFTFZoUzNCbmQrVExMT2g3ZHdzL3pTWFd6eEViNE5qNGFGdW41eDRrRFdMSzVUVUYveUNYQi9jWll2STlrUGdWc0cyalNodFhreGZnVCt4empKb2ZYcVBFbklYSVExbG5JZG1WekJPTTkwRVh2SlVXNmEwblovN1hqSkdsOFRvTzNIL2ZkeG54bVROS0JaeG5rcFhMVmdMWENaeXdHVDNZeVM3NXcvUEFINUkvak11UnNwZWo4eFpPYlU5a1JFYlJBK2txam1LUkZhS0dXQW1GUXNwQytRTGJLUGYwUmFLM09YdkJTV3FvNDZwNzB3cy9lWnB1NmpDdFpVZ1F5NnI0dEhNUFVkQWdXR0dVWU5idXYvMWE2SytNVkZzZDNUMTgzK1Q4Y2FwU282bTArU2g1N2ZFZUcvOTVkeWtHSkJRTWowOURTVzJiWTBtVW9uRHk5YTh0ckxubkw1QjVMVzNObDhySlpOeXNPOFpiKzgwelh4cVVHRnB1ZDNRendiN2JmKzhtcTZ4MFRBbkpVOXBEUVI5WVFtWmhsbmEyeHV4SnQwYUNPL2YxU1U4Z2JsT3JiSXlNc3hUbFZVVzY5VkpQellVMkhsUlhjcUUybExMeG5PYlp1ejJ0VDlDaXZmVEFVWWZtekpsdC9sT1Bnc1I2Vk42NC94UWQ0SmxrL1JWN1VLVnYyR3gvQVdzbVRBdUNXS2hkd0MrNEhtS0VLWVpoMlhpczRLc1VSMUJlT2JzMWMxM3dxRlJub2NkbXVoZWFUVjMwZ3ZWWFpjb3V6SEtLNXp3ck41MmpYSkV1WDZkR3gzQkNwVi8rKzRmM2h5YVcvY1FKTEZLcWFzanNNdU8zQjNXbE1xMmd5WWZkSzFlN0wycE8vdFJ5ZTJtd3p3WlBmZFVNcmw1d2RMcWRkMkt2L3dWdG5weVdZaGQ0OUw2cnNPVis4SFhQcldIMkt1cDg5bDJ0ejZiZjgwaVlTZCtWNExST1NPSGVhbXZleFI1MjRxNHI0M3JUbXRGelF2QXJwdldmTFlGWnJiRnNwQnNYTlVxcWVuanhOTnNGWGF0WnZsSWhrN3RlVVBmSytZTDMyRjhNY1RuanYwQlpOcHBiK3ZzaG9DcnRMWGpJV3EzRUpYcFZYSWxHNlpOTDBkaDZxRW0yV013RGpEM0xmT2ZrR2gxL2N6WWMvMHFoaUQyb3pObkg0ODgyTVZWdDNKYlZGa2J3b3dOQ08zS0w1SW9ZVzV3bFZlR0NWaU91djFzdlp4N0ZienhLekE0ekdxQmxSUmFSV0NvYlhhVnE0eVlDV2JaZjhlaUp3dDNPWStNRmlTSmVuZ2NGUDJ0MEpNZnpPaUo3Y0VDdnB4N25lZzFSYzV4KzdteVBKT1h0MkZvaFZSeVh0RCsvckRvVE95R1lJbkplbFpNam9sZWNWSFVoVU5xdmRaV2cySjJ0MGpQbWlMRmVSRC84Zk9UNG8rTkdJTGIrVHVmQ285Y2VCQm0zSkxWbitNTzI2NzVuN3FpRVgvNlcrMTg4Y1lnM1puNU5TVGpnT0tmV0ZTQUFOYTZyYUN4U29WVTg1MW9KTFkxMVdJb1lLMGR1MGVjNUU0dENuQVBvS2g3MXJpVHNqVklwM2dLdkJiRVlRaU5Zcm1IMjJvTFFXQTJBZHdNbklENlBYOWI1OGRSMlFLbzRxYWcxRDFaK0wvRndFS1RSN29zT1pQV0VDUEpJSFFxUFVzTTVpL0NINVl1cFZQZkZBNXBIVUJjc2VzaDhlTzVZaHlXbmFWUlBabi9CbWRYVnVtWldQeE1QNWUyOHptMnVxSGdGb1Q5Q3ltSFlOTnJ6cnJqbFhaTTA2SG56RHhZTmxJNWIvUW9zeExtbXJxREZxbW9nUWRxazBXTGtVY2VvQXZReEhna0l5dldVNjlCUEZyMjRWQjYrbHg3NVJuYTZkR3RybU94RG52Qm9qdmkxLzRkSGpWZWc4b3dvZlBlMWNPbnhVMWlvaDAxNnMvVnVkdjltaFY5ZjM1QXQrU2gyOGgxYnBwOHhocjA5K3ZmNDdFbHgzTXM2aHlwNlF2QjN0MHZuTGJPaHdvNjYwY3A3SzB2dmVwYWJLN1lKZnhFV1dmckMyWXpKZllPanlnUHdmd2QvMWFtVHFhMGhaNXVlZWJoV1lWTXViUlR3SWpqKzBPcTBvaFUzemZSZnVMOGd0NTlYc0hkd0t0eFRRUTRZMnF6Nmdpc3hubTJVZGxtcEVrZ09zWno3aUVrNlFPdDhCdVB3citOUjAxTFRxWG1KbzFDNzZvMU4yNzR0d0p2bCtJMDY5VGlMcGVuSy9taVJ4aHlZOGp2WVY2VzFXdVN3aEg5cTdrdXduSk10bTdJV2NxczdIc255SFNxV1hMU3BZdFpHYVIxVjN0MGdhdW5pbkZQWkd0V3NrRjY1cnR0aTQ4VVY5dVY5S004a2ZEWXMwcGdCMDBTK1RselRYVjZQOG14cTE1YjlFbjhzejNqV1NzemNpZlphL051dWZQTm5OVGIwMzFwcHR0MCtzUlNILzdVRzhwemJzZ3R0M09HM3V0N0I5SnpETXQybVRadXlSTklWOEQ1NFR1VHJwTmNIdGdtTWxZSmVpWTlYUzgzTllKaWNqUmp0SlNmOUJaTHNRdjYyOVFkRHNLUWhUSzVDblhocGs3dk1Oa0h6UGhtMEV4Vy9WQ0dBcEhmUHlCYWd0WlFUUW1QSHg3ZzVJWFhzclFEUHpJVmh2MkxCNkloMTM4aVNEd3cxSk5IckR2elV4dnA3M01zUUJWaFc4RWJyUmVhVlVjTEIxUjNQVVh5YVlHNEhwSlVjTFZ4TWdEeGNQa1ZSUXBMN1ZUQUdhYkR6YktjdmcxMnQ1UDhUU0dRa3JqL2dPcnBuYmlESHdsdUE3M3hiWHRzL0w3dTQ2OGNSV1NXUnRnVHdsUW5BNDdFS2cwT2laRGdGeEFLUVFVY3NiR29tSVRnZVhVQUF5S2UwM2VBN01wNGdueUtRbW0wTFhKdEVrNmRka3NNSkN1eERtbUh6bVZoTytYYU4yQTU0TUloM25pdzVDRjdQd2lYRlpybkE4d09kZUhMdnZoZG9xSURHOVBESTdVbldXSHE1MjZUOHk2aXhKUGhrdVZLWm5vVXJ1T3BVZ09PcDNpSUtCamsreWkxdkhvNWNJdEhYYjFQSUt6R2FabFJTMGc1ZDNNVjJwRDhGUWRHWUxaNzNhYWUvZUVJVWVQTWM0TkZ6OHBJVWZMQ3JyRjRqVldINWdRbmVOM1M4dkFOQm1VWHJFY0tHbjZoSVVOOTV5MXZwc3ZMd2JHcHpWOUwwWktUYW42VERYTTA1MjM2dUxKY0lFTUtWQXhLTlQwSzhXbGp1d05ueTNCTlFSZnpvdkE4NWJlSTl6cjFBR05ZbllDVmtSMWFHbmdXVVJVcmdxUitnUnJRaHhXODFsM0NIZXZqdkdFUHpQTVR4ZHNJZkI5ZGZHUmJaVTBjZy8xbWN1YnRFQ1g0dHZhZWRtTkF2VHhDSnRjMlFhb1VhbEdmRU5DR0s3SVMvTzhDUnBkT1ZjYThFV0NSd3Yyc1NXRThDSlBXNVBDdWdqQ1hQZDNoNlU2MGNQRCtiZGh0WFp1WUI2c3Rjb3ZlRTdTbTVNTTJ5dmZVSFhGU1c3S3pMbWk3L0VlRVdMMHdxY09IOU1PU0tqaENISG13K0pHTGNZRS83U0JaUUNSZ2dveDBaWlRBeHJsek5OWFlYTDVmTklqa2RUNFlNcVZVejZwOFlEdDA0OXY0T1hHZGczcVRydExCVVhPWmY3YWhQbFpBWS9PKzdTcDBidkdTSGR5UThCMUxPc3BscU1iOVNlOFZBRTdnSWRTWnZ4YlJTcmZsK0xrNVFhcWk1UUpjZXFqaXRkRXJjSFhnLzNNcnlsalBTSUFNYWFsb0ZtMWNWd0JKOERObWtEcW9HUk9TSEZldHJnalE1Q2FodUtrZEg1cFJQaWdNcmdUdGxGSTh1ZkpQSlNVbEdnVGpiQlN2cFJjMHp5cGlVbjZVNUtacWNSb3lydHpobUo3L2NhZVprbVZSd0pRZUxPRzhMWTZ2UDVDaHBLaGM4SnMwRWwrbjZGWHFieDlJdGR0THRZUDkya0tmYVRMdENpOFN0TFpkRU5KYTlFeDFuT296MWtRN3F4b2laRktSeUxmNE80Q0hSVDBULzBXOUY4ZXBOS1ZvZXl4VVhoeTNzUU1Nc0pqUUpFeU1Pam1PaE1GZ09tbWxzY1Y0ZUZpMUNsZFU5Mnlqd2xlaXJFS1BXM2JQQXVFaFJaVjdKc0tWM0xyNWNFVEFpRnVYNU53NVVsRjdkMkhaOTZCaDBzZ0ZJTDVLR2FLU29WWVZsdmRLcFpKVlA1K05aN3hERWtRaG1EZ3NES2NpYXpKQ1hKNlpOMkIzRlkyZjZWWnlHbC90NGF1bkdJQWsvQkhhUytpK1NwZFJmbkIvT2t0T3Z5amluV05mTTlLc3I2V3d0Q2ExaENtZVJJNmljcEZNNG84cXVDTHNpa1UwdE1vWkkvOUVxWFJNcEtHYVd6b2ZsNG5RdVZRbTE3ZDVmVTVxWENRZUNEcVZhTDlYSjlxSjA4bjNHM0VGWlMyOFNIRWIzY2RSQmR0TzBZY1R6aWwzUWtuTktFZS9zbVExZlRiMFhicHlOQjV4QWV1SWxmKzVLV2xFWTBEcUpic256SmxReEpQT1Z5SGlLTXg1WHU5RmNFdjFGYmc2RmhtNHQrSnl5NUpDMVczWU84ZFlMc08wUFhQYnhvZEJndHRUYkgzcnQ5Q3AxbEpJazJyM08xWnF1OTRlUmJuSXoyZjUwbFdvbFl6dUtzajRQTW9rNGFiSExPOE5BQzg4NGhpWHg1Rnk1cFdLTzBiV0w3dUVHWGFKQ3R6bmhQNjdTbFE0eGpXSWZncTZFcFoyOFFNdHVaSzdKQzBSR2JsOW5BNFh0Rkx1Zy9OTE1vSDFwR3Q5SW9uQUpxY0VETHlINlREUk9jYnNtR1BhR0l4TW80MUlVQW5RVlBNUEdCeXA0bU9taDlaUU1rQkFja3NVSzU1THNaajdFNXo1WHVab3lXQ0t1Nm5IbURxMjJ4SS85WjhZZHhKeTRrV3BEMTZqTFZycHdHTFdmeU9EMFdkK2NCekZCeFZhR3Y3UzVrOXF3aC81dC9MUUVYc1JxSTNROVJtM1FJb2FaVzlHbHNEYUtPVXl5a3lXdWhOT3ByU0VpMHMxRzRyZ29pWDFWNzQzRUVMdGkrcEp1NW9nNlgwZzZvVHluVXFsaEg5azZlenlSaTA1TkdaSHowbnZwM0hPSnI3ZWJyQVVGckRqYmtGQk9iRXZkUVdra1ViTDBwRXZNVTQ2WDU4dkY5ajlGM2o2a3B5ZXROVUJJdHJFdWJXOVp2TVBNNHFOcUxsc1NCSnFPSDNYYk53di9jWERYTnhOOGlGTHpVaHRlaXNZWStSbEhZT3VQMjkvQ2IrTCt4diszNVJ2N3h1ZG5aNm9oSzRjTVBmQ0c4S0k3ZE5tak5rL0g0ZTg0cE94bi9zWkhLOXBzZnZqOG5jQThxSno3Tzh4cWJ4RVNEaXZHSk9aekY3bzVQSkxRN2czNHFBV295dUEreDNidFU5OExUNlp5R3ljZUlYanJxb2IyQ0FWcWw0Vk9UUVBVUVl2SFYvZzR6QXVDWkd2WVFCdGYwd21kNWxpbHJ2dUVuMUJYTG55MDFCNGg0U01EbFlzbk5wbTlkN205aDU3OHVmcGVmOVo0V3BscVdRdnFvNTJmeVVBN0oyNGVaRDVhdjZTeUdJVjlrcG1ITnF5dmRmemNwRU13OTdCdmtuVjJmcStNRkh1bjlCVDNMc2Y4cGJ6dmlzV2lJUXZZa25nKzhWeGsxVitkbGkxdTU2a1k1MExSamFQZG90dlQ1QndxdHd5RitlbW8vejlKM3lWVVZHZktyeFF0Sk1PQVFXb1FpaS80ZHA5d2d5YlNhNW1rdWNtUkx0RVFaL3B6MHRML05WY2dXQWQ5NW5FUTNUZzZ0TmJ1eW4zSWVwejY1TDNodU1VVUJudGxsV3V1NERidE9GU01TYnBJTFY0Znk2d2xNMFNPdmk2Q3BMaDgxYzFMcmVJdktkNjF1RVdCY0R3MWxVQlVXMUkwWittL1BhUmxYK1BRL294ZzBZZTZLVWlJaVRGNEFETms1OVlkcHQ1L3JreG1xOXRWNUtjcC9lUUxVVlZtQnpRTlZ1eXRRQ1A2RXpkMEc4ZUx4V3lIcG1aV0ozYkF6a1dUdGc0bFpsdzQyU1FlekVtaVVQYUpVdVIvcWtsVkEvODdTNEFyRkNwQUxkWTNRUmRVdzNHM1hiV1VwNmFxOXowelVpemNQYTczNTFwOUpYT1p5ZmRaQkZucXQ5MFZ6UW5kWEIvbXdmOExDOVNUajVrZW5WcE51cU9RUVAzbUlSSmo3ZVYyMUZ4RzhWQXhLckVuM2MrWGZtWjgwMEVQYjkvNWxJbGlqc2NVYkI2ZGEwUlFhTW9vazB6dWcxRzB0S2kvSkJDNHJ3Ny9EM200QVJ6QWt6TWNWckRjVDJTeUZ0VWRXQXNGbHNQREZxVjNOK0VqeVhhb0VlUHdyb2FaQ2lMcUV6YjhNVytQTkU5VG1UQzAxRXpXbGk1MVB6WnZVcWtteXVST1UrVjZpaytMZS85cVQ2bnd6VXpmOXRQNjh0WWVpMFlhREd4NmtBZDdqbjFjS3FPQ3VZYmlFTEg5ellxY2M0TW5SSmprZUdpcWFHd0xJbWh5ZUtzK3hLSk1CbE9KMDVvdzlnR0NLWjFWcG5NS29TQ1RiTVMrWCsyM3kwNDJ6T2I1TXRjWS82b0JlQW8xVnk4OU9UeWhwYXZGUDc4alhDY0ZIMHQ3R3gyNGhNRU9tMmdzRWZHYWJWcFFndkZxYlFLTXNrbkZSUm11UEhjWnUwU3UvV01GcGhadkIyci9FR2JHNzJycEdHaG8zaCtNc3owdUd6SjdoTksydXFRaUUxcW1uMHpnYWNLWVlaQkNxc3hWK3NqYnBvVmRTaWxXL2I5NG4yeE5iNjQ4Vm1OSW9penFFV2hCbnNlbitkMGtiQ1BtUkl0ZldxU0JlT2Q5V25lM2M2YmNkNnV2WE9KNldkaVNzdVhxMG5kaHFyUTRRb1dVakNqWXRaMEVBaG5TT1AxbTQ0eGtmME83alhnaHJ6U0pXeFA0YS90NzJqVTI5VnUycnZ1NG43SGZIa2ttUU9NR1NTK05QZUxHTzVJNzNtQzJCNytsTWlCUVFaUk05LzlsaUxJZm93dXBVRkFiUEJiUitseERNNk04UHRnaDFwYUpxNVJ2czd5RXVMUXYvN2Qxb1Uyd29GU2IzRk1QV1FPS011Q3VKN3BERGpwSWNsdXM1VGVFb01CeTJZZFZCNGZ4bWVzYUNlTU5zRWdUSEtTNVdEU0d5TlVPb0VwY0MyT0ZXdElSZjB3MjdjazM0L0RqeFJUVkljYzkra3FaRTZpTVNpVkRzaUtkUC9YejVYZkVobS9zQmhPNTBwMXJ2SkRsa3l5eHVKOVNQZ3M3WWVVSkJqWGRlQWtFK1A5T1FKbTZTWm5uMXN2Y2R1STc4ZFltYmtFMm10emlQcmNqVmlzWEc3OHNwTHZiWmFTRngvUmtzOXpQNExLbjBDZHovM0pzZXRrVDA2QThmL3lDZ01PNk1iMUhtZTBKSjdiMndaejFxbGVxVHVLQkdva2hQVlVaMGRWdSt0blFZTkVZMWZta1pTejYrRUdaNUV6TDc2NTdtcmVaR1IzalVmYUVrNDU4UERuaUJ6c1NtQktoRFJ6ZlhhbWVyeUp2OS9ENW02SElxWjBSK291Q0U1NER6cDRJSnV1RDFlNERjNWkrUHBTT1JKZkcyM3VWZ3FpeEFNRHZjaE1SMG5aZEg1YnJjbFl3Um9KUld2L3JseEdSSTVmZkQ1TlBHbUlEdDd2REUxNDM0cFlkVlpJRmg4OUJzOTRIR0dKYlR3ck44VDZsaDFIWkZUT0I0bFd6V2o2RVZxeFNNdkMwL2xqV0JRM0Yya2MvbU8yYjZ0V29uVDJKRXFFd0Z0czhyejJoK29XTmRzOWNlUjJjYjd6WnZKVERwcEhhRWhLNWF2V3Fzc2VXYTJEdDVCQmhhYmRXU2t0Uzgwb01Rckw0VHZBTTliNUhNbXlEbk8rT2trYk1YZlVKRzdlWHFUSUc2bHFTT0VicVZSK3FZZFA3dVdiNTdXRUpxenloNDExR0FWc0RpblBzN0t2VWVYSXRsY01kT1VXelhCSDZ6c2N5bVYxTExWQ3RjOEllUG9qelhIRjltNWI1ekd3QlJkemN5VUpraXU5MzhBcG1BYXlSZEpyWDFQbVZndVdVdnQyVGhRNjJjekl0VHlXSk1XMkFuL2hkRGZNSzdTaUZRbEdJZEFibHRIejN5Y29oN2o5VjdHeE5XQnBidGNTZHFtNFh4UndUYXdjM2NiWit4ZlN2OXFRZkVrREtmWlR3Q2txV0dJL3VyMjUwSXRYbE1saDZ2VU5XRVlJZzlBM0d6YmdtYnF2VE44anMyWU1vODdDVTV5Nm5aNGRiSkxEUUpqOWZjN3lNN3RaekpEWkZ0cU9jVTgrbVpqWWxxNFZtaWZJMjNpSGIxWm9UOUUra1QyZG9sblAxQWZpT2t0N1BRQ1N5a0JpWHk1bXY2MzdJZWdXU0tqOUlLcllaZjRMdTkrSTd1Yitta1JkbHZZemVoaC9qYUo5bjdIVUg1YjJJYmdlTmRrWTd3eDF5Vnp4UzdwYnZreTYrbm1WVXRSbGxFRmZ3ZVVRMC9uRzAxN1dvVVlTeHMrajJCNEZWL0Y2MkV0SGxNV1pYWXJqR0hwdGhuTmIxeDY2TEtaMFFlOTJJTldIZGZSL3ZxcDAyd01TOHIxRzRkSnFIb2s4S21RNzk0N0cxM2E0WVhic0dnSGNCdlJ1VnUxZUFpNC9BNStaaXhtZFNYTTczTHVwQi9MSDdPOXl4TFRWWEpUeUJiSTFTNDlUSVJPcmZWQ09iL2N6WjlwTTRKc1p4OGtVejhkUUd2N2dVV0t4WHZUSDdRTS8zSjJPdVhYZ2NpVWhxWStjZ3RhT2xpUVFWT1l0aEJMVjN4cEVTWlQzcm1mRVlOWnhtcEJiYjI0Q1Jhbzg2cHJuK2k5VE5PaDhWeFJKR1hKZlhIQVRKSHMxVDV0eGdjL29wWXJZOFhqbEdRUWJSY294SUJjblZzTWptVTF5bW1JVUw0ZHZpSlhuZE1BSjBZZXQrYzdPNTIvcDk4eXRsbUFzR0JhVEFtTWhpbUFudnAxVFdOR005QnB1aXRHait0ODEwQ1UyVWhvcnJqUEtHdFRoVkM4V2FYdzA0V0ZuVDVmVGpxbVB5clEwdE4zQ2tMc2N0VnkyeHIwWldnaVdWWjFPcmxGamp4SllzT2ladjJjQW9PdkUrN3NZMEkvVHdXY1pxTW95SUtOT2Z0d1A3dysrUmZnNjdsamZvdktZYTUwaWYzZnpFLzhhUFlWZXkvTnEzNStuSDJzTFBoL2ZQNVRzeWxTS0dPWjRrNjlkMlBuSDQzK2txKytzUlhIUXFHQXJXZHdoeCtocHdRQzZKZ1QydXhlaFlVNFpidzdvTmI2L0hMaWtQeUpST0dLMm91eXIrdnpzZUVTcDlHNTBUNEF5RnJTcU9RMHJyb0NZUDRzTURGQnJIbjM0MkV5WlRNbFN5azQ3ckhTcTg5WTkvbkkzekc1bFgxNlo1bHhwaGd1TE9jWlVuZEw4d05jcmt5akg4MmpxZzhCbzhPWWt5bnJ4WnZiRm5vNWxVUzNPUHI4S28zbVg5Tm9SUGRZT0tLakQwN2J2Z0ZncFovUkYrWXprV3ZKL0hzL3RVYmZlR3pHV0x4TkFqZkR6SEhNVlNEd0I1U2FiUUxzSVpIaUJwNDNGakdrYWllbllvRGQxOGh1MkJHd09LN1UzbzcwSy9XWS9rdXVLZG1kcnlrSUJVZEcybXZFOTFMMUp0VGJoMjBtT0xiazF2Q0FhbXU3dXRsWGVHVTJvb1Zpa2JVL2FjdGNnbXNDMUZLazJxbWozR1dlSVdiajR0R0l4RTdCTGNCV1V2dmNuZC9sWXhzTVY0RjkxN2ZXZUZCL1hiSU5OM3FHdkl5VHBDYWx6MWxWZXdkSUdxZUFTL2dCOE1pK3NBK0JxRGlYM1ZHRDJlVXVuVFJiU1krQXVEeTRFM1F4M2hBaHduU1hYK0IwenVqM2VRMW1pUzhWdXgyei9sNi9Ca1d0aktHVTcyYUprT0NXaEdjU2YzK2tGa2tCMTV2R09zUXJTZEZyNnFUajBnQllpT2xuQk80MTE3MGdPV0hTVW9CVlJVMkpqd3BwWWRoSUZEZnU3dElSSGNjU05NNUtaT0ZEUHowVEdNQWp6ekVwZUx3VFdwK2tuMjAxa1U2TmpiaU1RSng4MytMWDFlMXRaMTBrdUNoSlovWEJVUTFkd2FCSGpUREpEcU95bXBFazhYMk0zVnRWdzIxSmtzQ2hBOHcxdFRlZk8zUkoxRk1icVowMWJISGt1ZERCL09oTGZlN1A1R09IYUkyOFpYS1RNdXFvMGhMV1E0SGFiQnNHRzdOYlAxUmlYdEVUejA3NGVyNncvT2VySldFcWpta3EyeTUxcTFCVkkrSlV1ZG5WYTNvZ0JwemRoRkU3ZkM3a3lickF0Mlo2UnFEakFUQVVFWWVZSzQ1V011cEJLUVJ0UWxVK3VOc2puemo2Wm1HcmV6QStBU3JXeFE2TE1rSFJYcVh3TnE3ZnR2MjhkVXgvWlNKY2lEWFAyU1dKc1dhTjBGalBYOVlrbzZMb2JaN2FZVy9JZFVrdEk5YXBUTHlIUzhEeVdQeXVvWnl4TjFUSy92dGZ4azNId1doNkpjelpDOEZ0bjBiSUpheTJnK241d2Q3bG05ckVzS08rc3ZxVm1pK2Mxajg4aFNDeGJ6cmc0K0hFUDBOdDEvQjZZVzFYVm0wOVQxQ3BBS2pjOW4xOGhqcXNhRkdkZnl2YTFaRzBYdTNpcDZONkpHcHlUU3FZNWg0Qk9scExQYU9ueXc0NVBkWFROK0R0QUtnN0RMckxGVG5XdXNvU0JIazNzMGQ3WW91SkhxODUvUjA5VGZjMzdFTlhaRjQ4ZUFZTG5xOUdMaW9OY3dEWnJDNkZXNmdvZEI4Sm5xWVVQdm4wcFdMZlF6MGxNMFl5OE15YmduODREczNROWJEUDEwYkx5T1YrcXp4YTRSZDlEaHU3Y2p1OG1NYU9OWEszVXFtQlE5cUlnN2V0SXdFcU0va0VDay9EemphNEJzMXhSK1EvdENiYzhJS3JTR3NUZEpKMHZnZTdJRzIwVzY4N3VWbUs2aWNXUTZjRDNsd0Z6Z05NR3RGdk81cXlKZUtmbEdMQUFjUVpPcmt4Vnd5M2NXdnFsR3B2am1mOVFlNkFwMjBNUGJWOTJEUFYwT2hGTTRrejhZcjBmZkMyekxXU1Exa3FZNlFkUXJ0dFIza2gxWUx0UWQxa0NFdjVoVm9QSVJXbDVFUmNVVHR0QklyV3A2WHM1RWhoNU9VVXdJNWFFQnZ1aURtVW9FTm1uVncxRm9oQ3JiUnAxQTFFK1hTbFdWT1RpN0FEVys1T2hiOXoxdks0cXg1UjVsUGRHQ1BCSlowMG1DK1NzcDhWVWJncEdBdlhXTXVXUVFSYkNxSTZScjJqdHhaeHRmUDdXLzhvbnoreXowR3M3NkxhVDVIWDllY3lpWkNCL1pSL2dGdE14UHNEd29ob2VDUnRpdUx4RTFHTTF2VUVVZ0J2ODYrZWVoTDU4L1A1NlFGR1EvTXFPZS92Qzc2TDYzanptZWF4NGV4ZC9PS1RVdmtYZytmT0pVSHljaDl4dC85Z29KTXJhcFNndlhyajgrOHZrL044MGYyMlNld2o2Y3lHcXQxQjZtenRvZWtsVkhIcmFvdWh2SEphRy9PdUJ6NkRIS01wRm1RVUxVMWJSV2x5WUUwUlBYWVlrVXljSWVtTjdUTHRnTkNKWDZCcWR5eERLa2VnTzduSks1eFE3T1ZZRFpUTWY5YlZIaWR0azZEUVg5RXQrVjlNN2VzZ2JzWUJkRWVVcHNCMFh2dzJrZDkrckk3VittNDd1K08vdHE3bXc3MjYySFUxV2xTOXVGenNWNkp4SUhObVVDeTBRUzllMDc3SkdSRmJHNjV6My9kT0tCL1prK3lEZEtwVW1kWGpuL2FTM041bnY0Zks3Yk1ISG1QbEhkNEUyK2lUYlY1cnB6U2NSbnhrNktBUnVEVEo4UTFMcEsybVA4Z2oxRWJ1SjlSSXlZK0VXSzRoQ2lJREJBUzFUbTJJRVhBRmZnS1BnZEw5TzZtQWEwNndqQ2NVQUw2RXN4UFFXTzlWTmVnQlBtLzBHZ2taYkR4Q3lueHVqWC85MnZtR2NqWlJNQVk0NXB1YWsyc0ZMQ0xTd1hwRXN5eTVmbkYwakdKQmhtK2ZOU0hLS1VVZnkrMjc2QTcvZmVMT0Z4eFV1SFJOSkkyT3Nlbnh5dmY4REFHT2JUNjBwZlRUbGhFZzl1L0tLa2hKcW01VTEvK0JFY1NrcEZEQTVYZUNxeHdYbVBhYzFqY3VaM0pXUStwME5kV3piLzV2MVp2RjhHdE1URkZFZFFqcExPMGJ3UGIwQkhOV25pcDNsaURYSTJmWGYwNWpqdmZKME5wakxDVWdmVGg5Q01GWVZGS0VkNFovT0cvMkMrTjQzNW1uSys5dDFndkNpVmNhYUg3cks0K1BqQ3ZwVk5peit0MlF5cUgxTzh4M0pLWlZsNlErTHAvWEs4d01qVk1zbE9xOUZkU3c1RnRVcy9DcHRYSDlQVyt3YldIZ3JWMTdSNWpUVk90R3RLRnUzbmI4MFQrRTB0djlRa3pXM0oyZGJhdy84ZGRBS1owcHhJYUVxTGpsUHJqaTNWZ0ozR3ZkRnZscUQ4MDc1d294aDRmVnQwSlpFMEtWRnNBdnFoZTBkcU45YjM1anRTcG5ZTVhrVSt2WnErSUFIYWQzSUhjMnMvTFlybkQxYW5mRzQ2SUZpTUlyOW9OYlpEV3Z3dGhxWU5xT2lnYUtkL1hsTFU0WEhmay9QWElqUHNMeS85L2tBdFErL3dLSCtoSS9JUk9XajVGUHZUWkFUOWY3ajRaWFF5RzRNMFR1ak1BRlhZa0t2RUh2MXhoeVNla2dYR0dxTnhXZVdLbGY4ZERBbEx1QjFjYi9xT0Qrcms3Y213dCsxeUtwazljdWRxQmFuVGk2elRiWFJ0VjhxeWxOdGp5T1ZLeTFIVHowR1c5cmp0NnNTakFaY1Q1UitLZHR5WWIwenlxRzlwU0x1Q3c1V0J3QW43ZmpCaktMTG94TFhNSSs1Mkw5Y0x3SVIyQjZPbGxKWkxISjh2RHhtV2R0RitRSm5tdDFyc0hQSVdZMjBsZnRrOGZZZVBrQUlnNkhnbjUzMlFvSXBlZ014aVdnQU9mZTUvVTQ0QVBSOEFjME5lWnJWaDNnRWhzMTJXK3RWU2lXaVVRZWtmL1lCRUNVeTVmZFliQTA4ZGQ3VnpQQVA5YWlWY0lCOWs2dFk3V2RKMXdOVitiSGV5ZE50bUM2RzVJQ3RGQzFad21KVS9qOGhmMEk4VFJWS1NpejVvWUlhOTNFcFVJNzhYOEdZSUFaYWJ4NDcvbjhMREFBSjBuTnRQMXJwUk9wcnFLTUJSZWNTaGNhNnFYdVRTSTNqWkJMT0IzVnAzODFCNXJDR2hqU3ZoL05TVmtZcDJxSWRQL0JnPSI7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICJkZWMvZGljdGlvbmFyeS1icm93c2VyLmpzIjogZnVuY3Rpb24oZSwgdCwgcikgeyB2YXIgbiA9IGUoImJhc2U2NC1qcyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgci5pbml0ID0gZnVuY3Rpb24oKSB7IHZhciB0ID0gZSgiLi9kZWNvZGUiKS5Ccm90bGlEZWNvbXByZXNzQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi50b0J5dGVBcnJheShlKCIuL2RpY3Rpb25hcnkuYmluLmpzIikpOyByZXR1cm4gdChyKSB9IH0sDQogICAgICAgICAgICAgICAgICAgICJkZWMvaHVmZm1hbi5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCkgeyB0aGlzLmJpdHMgPSBlLCB0aGlzLnZhbHVlID0gdCB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCkgeyBmb3IgKHZhciByID0gMSA8PCB0IC0gMTsgZSAmIHI7KSByID4+PSAxOyByZXR1cm4gKGUgJiByIC0gMSkgKyByIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlLCB0LCByLCBvLCBhKSB7IGRvIG8gLT0gciwgZVt0ICsgb10gPSBuZXcgbihhLmJpdHMsIGEudmFsdWUpOyB3aGlsZSAobyA+IDApIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0LCByKSB7IGZvciAodmFyIG4gPSAxIDw8IHQgLSByOyB0IDwgcyAmJiAobiAtPSBlW3RdLCAhKG4gPD0gMCkpOykgKyt0LCBuIDw8PSAxOyByZXR1cm4gdCAtIHIgfSByLkh1ZmZtYW5Db2RlID0gbjsgY29uc3QgcyA9IDE1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgci5Ccm90bGlCdWlsZEh1ZmZtYW5UYWJsZSA9IGZ1bmN0aW9uKGUsIHQsIHIsIGQsIGwpIHsgdmFyIHUsIGYsIGMsIGgsIHAsIHcsIG0sIGIsIHksIGcsIHYsIEEgPSB0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gbmV3IEludDMyQXJyYXkoMTYpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gbmV3IEludDMyQXJyYXkoMTYpOyBmb3IgKHYgPSBuZXcgSW50MzJBcnJheShsKSwgYyA9IDA7IGMgPCBsOyBjKyspIFVbZFtjXV0rKzsgZm9yICh4WzFdID0gMCwgZiA9IDE7IGYgPCBzOyBmKyspIHhbZiArIDFdID0geFtmXSArIFVbZl07IGZvciAoYyA9IDA7IGMgPCBsOyBjKyspIDAgIT09IGRbY10gJiYgKHZbeFtkW2NdXSsrXSA9IGMpOyBpZiAoYiA9IHIsIHkgPSAxIDw8IGIsIGcgPSB5LCAxID09PSB4W3NdKSB7IGZvciAoaCA9IDA7IGggPCBnOyArK2gpIGVbdCArIGhdID0gbmV3IG4oMCwgNjU1MzUgJiB2WzBdKTsgcmV0dXJuIGcgfSBmb3IgKGggPSAwLCBjID0gMCwgZiA9IDEsIHAgPSAyOyBmIDw9IHI7ICsrZiwgcCA8PD0gMSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IFVbZl0gPiAwOyAtLVVbZl0pIHUgPSBuZXcgbigyNTUgJiBmLCA2NTUzNSAmIHZbYysrXSksIGEoZSwgdCArIGgsIHAsIHksIHUpLCBoID0gbyhoLCBmKTsgZm9yIChtID0gZyAtIDEsIHcgPSAtMSwgZiA9IHIgKyAxLCBwID0gMjsgZiA8PSBzOyArK2YsIHAgPDw9IDEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBVW2ZdID4gMDsgLS1VW2ZdKShoICYgbSkgIT09IHcgJiYgKHQgKz0geSwgYiA9IGkoVSwgZiwgciksIHkgPSAxIDw8IGIsIGcgKz0geSwgdyA9IGggJiBtLCBlW0EgKyB3XSA9IG5ldyBuKGIgKyByICYgMjU1LCB0IC0gQSAtIHcgJiA2NTUzNSkpLCB1ID0gbmV3IG4oZiAtIHIgJiAyNTUsIDY1NTM1ICYgdltjKytdKSwgYShlLCB0ICsgKGggPj4gciksIHAsIHksIHUpLCBoID0gbyhoLCBmKTsgcmV0dXJuIGcgfSB9LA0KICAgICAgICAgICAgICAgICAgICAiZGVjL3ByZWZpeC5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCkgeyB0aGlzLm9mZnNldCA9IGUsIHRoaXMubmJpdHMgPSB0IH0gci5rQmxvY2tMZW5ndGhQcmVmaXhDb2RlID0gW25ldyBuKDEsIDIpLCBuZXcgbig1LCAyKSwgbmV3IG4oOSwgMiksIG5ldyBuKDEzLCAyKSwgbmV3IG4oMTcsIDMpLCBuZXcgbigyNSwgMyksIG5ldyBuKDMzLCAzKSwgbmV3IG4oNDEsIDMpLCBuZXcgbig0OSwgNCksIG5ldyBuKDY1LCA0KSwgbmV3IG4oODEsIDQpLCBuZXcgbig5NywgNCksIG5ldyBuKDExMywgNSksIG5ldyBuKDE0NSwgNSksIG5ldyBuKDE3NywgNSksIG5ldyBuKDIwOSwgNSksIG5ldyBuKDI0MSwgNiksIG5ldyBuKDMwNSwgNiksIG5ldyBuKDM2OSwgNyksIG5ldyBuKDQ5NywgOCksIG5ldyBuKDc1MywgOSksIG5ldyBuKDEyNjUsIDEwKSwgbmV3IG4oMjI4OSwgMTEpLCBuZXcgbig0MzM3LCAxMiksIG5ldyBuKDg0MzMsIDEzKSwgbmV3IG4oMTY2MjUsIDI0KV0sIHIua0luc2VydExlbmd0aFByZWZpeENvZGUgPSBbbmV3IG4oMCwgMCksIG5ldyBuKDEsIDApLCBuZXcgbigyLCAwKSwgbmV3IG4oMywgMCksIG5ldyBuKDQsIDApLCBuZXcgbig1LCAwKSwgbmV3IG4oNiwgMSksIG5ldyBuKDgsIDEpLCBuZXcgbigxMCwgMiksIG5ldyBuKDE0LCAyKSwgbmV3IG4oMTgsIDMpLCBuZXcgbigyNiwgMyksIG5ldyBuKDM0LCA0KSwgbmV3IG4oNTAsIDQpLCBuZXcgbig2NiwgNSksIG5ldyBuKDk4LCA1KSwgbmV3IG4oMTMwLCA2KSwgbmV3IG4oMTk0LCA3KSwgbmV3IG4oMzIyLCA4KSwgbmV3IG4oNTc4LCA5KSwgbmV3IG4oMTA5MCwgMTApLCBuZXcgbigyMTE0LCAxMiksIG5ldyBuKDYyMTAsIDE0KSwgbmV3IG4oMjI1OTQsIDI0KV0sIHIua0NvcHlMZW5ndGhQcmVmaXhDb2RlID0gW25ldyBuKDIsIDApLCBuZXcgbigzLCAwKSwgbmV3IG4oNCwgMCksIG5ldyBuKDUsIDApLCBuZXcgbig2LCAwKSwgbmV3IG4oNywgMCksIG5ldyBuKDgsIDApLCBuZXcgbig5LCAwKSwgbmV3IG4oMTAsIDEpLCBuZXcgbigxMiwgMSksIG5ldyBuKDE0LCAyKSwgbmV3IG4oMTgsIDIpLCBuZXcgbigyMiwgMyksIG5ldyBuKDMwLCAzKSwgbmV3IG4oMzgsIDQpLCBuZXcgbig1NCwgNCksIG5ldyBuKDcwLCA1KSwgbmV3IG4oMTAyLCA1KSwgbmV3IG4oMTM0LCA2KSwgbmV3IG4oMTk4LCA3KSwgbmV3IG4oMzI2LCA4KSwgbmV3IG4oNTgyLCA5KSwgbmV3IG4oMTA5NCwgMTApLCBuZXcgbigyMTE4LCAyNCldLCByLmtJbnNlcnRSYW5nZUx1dCA9IFswLCAwLCA4LCA4LCAwLCAxNiwgOCwgMTYsIDE2XSwgci5rQ29weVJhbmdlTHV0ID0gWzAsIDgsIDAsIDgsIDE2LCAwLCAxNiwgOCwgMTZdIH0sDQogICAgICAgICAgICAgICAgICAgICJkZWMvc3RyZWFtcy5qcyI6IGZ1bmN0aW9uKGUsIHQsIHIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSkgeyB0aGlzLmJ1ZmZlciA9IGUsIHRoaXMucG9zID0gMCB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSkgeyB0aGlzLmJ1ZmZlciA9IGUsIHRoaXMucG9zID0gMCB9IG4ucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihlLCB0LCByKSB7IHRoaXMucG9zICsgciA+IHRoaXMuYnVmZmVyLmxlbmd0aCAmJiAociA9IHRoaXMuYnVmZmVyLmxlbmd0aCAtIHRoaXMucG9zKTsgZm9yICh2YXIgbiA9IDA7IG4gPCByOyBuKyspIGVbdCArIG5dID0gdGhpcy5idWZmZXJbdGhpcy5wb3MgKyBuXTsgcmV0dXJuIHRoaXMucG9zICs9IHIsIHIgfSwgci5Ccm90bGlJbnB1dCA9IG4sIG8ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oZSwgdCkgeyBpZiAodGhpcy5wb3MgKyB0ID4gdGhpcy5idWZmZXIubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoIk91dHB1dCBidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCIpOyByZXR1cm4gdGhpcy5idWZmZXIuc2V0KGUuc3ViYXJyYXkoMCwgdCksIHRoaXMucG9zKSwgdGhpcy5wb3MgKz0gdCwgdCB9LCByLkJyb3RsaU91dHB1dCA9IG8gfSwNCiAgICAgICAgICAgICAgICAgICAgImRlYy90cmFuc2Zvcm0uanMiOiBmdW5jdGlvbihlLCB0LCByKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUsIHQsIHIpIHsgdGhpcy5wcmVmaXggPSBuZXcgVWludDhBcnJheShlLmxlbmd0aCksIHRoaXMudHJhbnNmb3JtID0gdCwgdGhpcy5zdWZmaXggPSBuZXcgVWludDhBcnJheShyLmxlbmd0aCk7IGZvciAodmFyIG4gPSAwOyBuIDwgZS5sZW5ndGg7IG4rKykgdGhpcy5wcmVmaXhbbl0gPSBlLmNoYXJDb2RlQXQobik7IGZvciAodmFyIG4gPSAwOyBuIDwgci5sZW5ndGg7IG4rKykgdGhpcy5zdWZmaXhbbl0gPSByLmNoYXJDb2RlQXQobikgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQpIHsgcmV0dXJuIGVbdF0gPCAxOTIgPyAoZVt0XSA+PSA5NyAmJiBlW3RdIDw9IDEyMiAmJiAoZVt0XSBePSAzMiksIDEpIDogZVt0XSA8IDIyNCA/IChlW3QgKyAxXSBePSAzMiwgMikgOiAoZVt0ICsgMl0gXj0gNSwgMykgfSB2YXIgYSA9IGUoIi4vZGljdGlvbmFyeSIpOyBjb25zdCBpID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gNywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMTAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDExLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAxMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMTMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IDE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAxNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gMTYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDE3LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSAxOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMjA7IHZhciBCID0gW25ldyBuKCIiLCBpLCAiIiksIG5ldyBuKCIiLCBpLCAiICIpLCBuZXcgbigiICIsIGksICIgIiksIG5ldyBuKCIiLCB5LCAiIiksIG5ldyBuKCIiLCBtLCAiICIpLCBuZXcgbigiIiwgaSwgIiB0aGUgIiksIG5ldyBuKCIgIiwgaSwgIiIpLCBuZXcgbigicyAiLCBpLCAiICIpLCBuZXcgbigiIiwgaSwgIiBvZiAiKSwgbmV3IG4oIiIsIG0sICIiKSwgbmV3IG4oIiIsIGksICIgYW5kICIpLCBuZXcgbigiIiwgZywgIiIpLCBuZXcgbigiIiwgcywgIiIpLCBuZXcgbigiLCAiLCBpLCAiICIpLCBuZXcgbigiIiwgaSwgIiwgIiksIG5ldyBuKCIgIiwgbSwgIiAiKSwgbmV3IG4oIiIsIGksICIgaW4gIiksIG5ldyBuKCIiLCBpLCAiIHRvICIpLCBuZXcgbigiZSAiLCBpLCAiICIpLCBuZXcgbigiIiwgaSwgJyInKSwgbmV3IG4oIiIsIGksICIuIiksIG5ldyBuKCIiLCBpLCAnIj4nKSwgbmV3IG4oIiIsIGksICJcbiIpLCBuZXcgbigiIiwgbCwgIiIpLCBuZXcgbigiIiwgaSwgIl0iKSwgbmV3IG4oIiIsIGksICIgZm9yICIpLCBuZXcgbigiIiwgdiwgIiIpLCBuZXcgbigiIiwgZCwgIiIpLCBuZXcgbigiIiwgaSwgIiBhICIpLCBuZXcgbigiIiwgaSwgIiB0aGF0ICIpLCBuZXcgbigiICIsIG0sICIiKSwgbmV3IG4oIiIsIGksICIuICIpLCBuZXcgbigiLiIsIGksICIiKSwgbmV3IG4oIiAiLCBpLCAiLCAiKSwgbmV3IG4oIiIsIEEsICIiKSwgbmV3IG4oIiIsIGksICIgd2l0aCAiKSwgbmV3IG4oIiIsIGksICInIiksIG5ldyBuKCIiLCBpLCAiIGZyb20gIiksIG5ldyBuKCIiLCBpLCAiIGJ5ICIpLCBuZXcgbigiIiwgVSwgIiIpLCBuZXcgbigiIiwgeCwgIiIpLCBuZXcgbigiIHRoZSAiLCBpLCAiIiksIG5ldyBuKCIiLCB1LCAiIiksIG5ldyBuKCIiLCBpLCAiLiBUaGUgIiksIG5ldyBuKCIiLCBiLCAiIiksIG5ldyBuKCIiLCBpLCAiIG9uICIpLCBuZXcgbigiIiwgaSwgIiBhcyAiKSwgbmV3IG4oIiIsIGksICIgaXMgIiksIG5ldyBuKCIiLCBoLCAiIiksIG5ldyBuKCIiLCBzLCAiaW5nICIpLCBuZXcgbigiIiwgaSwgIlxuXHQiKSwgbmV3IG4oIiIsIGksICI6IiksIG5ldyBuKCIgIiwgaSwgIi4gIiksIG5ldyBuKCIiLCBpLCAiZWQgIiksIG5ldyBuKCIiLCBrLCAiIiksIG5ldyBuKCIiLCBFLCAiIiksIG5ldyBuKCIiLCBjLCAiIiksIG5ldyBuKCIiLCBpLCAiKCIpLCBuZXcgbigiIiwgbSwgIiwgIiksIG5ldyBuKCIiLCBwLCAiIiksIG5ldyBuKCIiLCBpLCAiIGF0ICIpLCBuZXcgbigiIiwgaSwgImx5ICIpLCBuZXcgbigiIHRoZSAiLCBpLCAiIG9mICIpLCBuZXcgbigiIiwgZiwgIiIpLCBuZXcgbigiIiwgdywgIiIpLCBuZXcgbigiICIsIG0sICIsICIpLCBuZXcgbigiIiwgbSwgJyInKSwgbmV3IG4oIi4iLCBpLCAiKCIpLCBuZXcgbigiIiwgYiwgIiAiKSwgbmV3IG4oIiIsIG0sICciPicpLCBuZXcgbigiIiwgaSwgJz0iJyksIG5ldyBuKCIgIiwgaSwgIi4iKSwgbmV3IG4oIi5jb20vIiwgaSwgIiIpLCBuZXcgbigiIHRoZSAiLCBpLCAiIG9mIHRoZSAiKSwgbmV3IG4oIiIsIG0sICInIiksIG5ldyBuKCIiLCBpLCAiLiBUaGlzICIpLCBuZXcgbigiIiwgaSwgIiwiKSwgbmV3IG4oIi4iLCBpLCAiICIpLCBuZXcgbigiIiwgbSwgIigiKSwgbmV3IG4oIiIsIG0sICIuIiksIG5ldyBuKCIiLCBpLCAiIG5vdCAiKSwgbmV3IG4oIiAiLCBpLCAnPSInKSwgbmV3IG4oIiIsIGksICJlciAiKSwgbmV3IG4oIiAiLCBiLCAiICIpLCBuZXcgbigiIiwgaSwgImFsICIpLCBuZXcgbigiICIsIGIsICIiKSwgbmV3IG4oIiIsIGksICI9JyIpLCBuZXcgbigiIiwgYiwgJyInKSwgbmV3IG4oIiIsIG0sICIuICIpLCBuZXcgbigiICIsIGksICIoIiksIG5ldyBuKCIiLCBpLCAiZnVsICIpLCBuZXcgbigiICIsIG0sICIuICIpLCBuZXcgbigiIiwgaSwgIml2ZSAiKSwgbmV3IG4oIiIsIGksICJsZXNzICIpLCBuZXcgbigiIiwgYiwgIiciKSwgbmV3IG4oIiIsIGksICJlc3QgIiksIG5ldyBuKCIgIiwgbSwgIi4iKSwgbmV3IG4oIiIsIGIsICciPicpLCBuZXcgbigiICIsIGksICI9JyIpLCBuZXcgbigiIiwgbSwgIiwiKSwgbmV3IG4oIiIsIGksICJpemUgIiksIG5ldyBuKCIiLCBiLCAiLiIpLCBuZXcgbigiXHhjMlx4YTAiLCBpLCAiIiksIG5ldyBuKCIgIiwgaSwgIiwiKSwgbmV3IG4oIiIsIG0sICc9IicpLCBuZXcgbigiIiwgYiwgJz0iJyksIG5ldyBuKCIiLCBpLCAib3VzICIpLCBuZXcgbigiIiwgYiwgIiwgIiksIG5ldyBuKCIiLCBtLCAiPSciKSwgbmV3IG4oIiAiLCBtLCAiLCIpLCBuZXcgbigiICIsIGIsICc9IicpLCBuZXcgbigiICIsIGIsICIsICIpLCBuZXcgbigiIiwgYiwgIiwiKSwgbmV3IG4oIiIsIGIsICIoIiksIG5ldyBuKCIiLCBiLCAiLiAiKSwgbmV3IG4oIiAiLCBiLCAiLiIpLCBuZXcgbigiIiwgYiwgIj0nIiksIG5ldyBuKCIgIiwgYiwgIi4gIiksIG5ldyBuKCIgIiwgbSwgJz0iJyksIG5ldyBuKCIgIiwgYiwgIj0nIiksIG5ldyBuKCIgIiwgbSwgIj0nIildOw0KICAgICAgICAgICAgICAgICAgICAgICAgci5rVHJhbnNmb3JtcyA9IEIsIHIua051bVRyYW5zZm9ybXMgPSBCLmxlbmd0aCwgci50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZCA9IGZ1bmN0aW9uKGUsIHQsIHIsIG4sIGkpIHsgdmFyIHMsIGQgPSBCW2ldLnByZWZpeCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IEJbaV0uc3VmZml4LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gQltpXS50cmFuc2Zvcm0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1IDwgeSA/IDAgOiB1IC0gMTEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID4gbiAmJiAoZiA9IG4pOyBmb3IgKHZhciBwID0gMDsgcCA8IGQubGVuZ3RoOykgZVt0KytdID0gZFtwKytdOyBmb3IgKHIgKz0gZiwgbiAtPSBmLCB1IDw9IHcgJiYgKG4gLT0gdSksIGMgPSAwOyBjIDwgbjsgYysrKSBlW3QrK10gPSBhLmRpY3Rpb25hcnlbciArIGNdOyBpZiAocyA9IHQgLSBuLCB1ID09PSBtKSBvKGUsIHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHUgPT09IGIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBuID4gMDspIHsgdmFyIGcgPSBvKGUsIHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSBnLCBuIC09IGcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHYgPSAwOyB2IDwgbC5sZW5ndGg7KSBlW3QrK10gPSBsW3YrK107IHJldHVybiB0IC0gaCB9IH0sDQogICAgICAgICAgICAgICAgICAgICJub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIjogZnVuY3Rpb24oZSwgdCwgcikgeyAidXNlIHN0cmljdCI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSkgeyB2YXIgdCA9IGUubGVuZ3RoOyBpZiAodCAlIDQgPiAwKSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTsgcmV0dXJuICI9IiA9PT0gZVt0IC0gMl0gPyAyIDogIj0iID09PSBlW3QgLSAxXSA/IDEgOiAwIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlKSB7IHJldHVybiAzICogZS5sZW5ndGggLyA0IC0gbihlKSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgeyB2YXIgdCwgciwgbywgYSwgaSwgcywgZCA9IGUubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKGUpLCBzID0gbmV3IGYoMyAqIGQgLyA0IC0gaSksIG8gPSBpID4gMCA/IGQgLSA0IDogZDsgdmFyIGwgPSAwOyBmb3IgKHQgPSAwLCByID0gMDsgdCA8IG87IHQgKz0gNCwgciArPSAzKSBhID0gdVtlLmNoYXJDb2RlQXQodCldIDw8IDE4IHwgdVtlLmNoYXJDb2RlQXQodCArIDEpXSA8PCAxMiB8IHVbZS5jaGFyQ29kZUF0KHQgKyAyKV0gPDwgNiB8IHVbZS5jaGFyQ29kZUF0KHQgKyAzKV0sIHNbbCsrXSA9IGEgPj4gMTYgJiAyNTUsIHNbbCsrXSA9IGEgPj4gOCAmIDI1NSwgc1tsKytdID0gMjU1ICYgYTsgcmV0dXJuIDIgPT09IGkgPyAoYSA9IHVbZS5jaGFyQ29kZUF0KHQpXSA8PCAyIHwgdVtlLmNoYXJDb2RlQXQodCArIDEpXSA+PiA0LCBzW2wrK10gPSAyNTUgJiBhKSA6IDEgPT09IGkgJiYgKGEgPSB1W2UuY2hhckNvZGVBdCh0KV0gPDwgMTAgfCB1W2UuY2hhckNvZGVBdCh0ICsgMSldIDw8IDQgfCB1W2UuY2hhckNvZGVBdCh0ICsgMildID4+IDIsIHNbbCsrXSA9IGEgPj4gOCAmIDI1NSwgc1tsKytdID0gMjU1ICYgYSksIHMgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsgcmV0dXJuIGxbZSA+PiAxOCAmIDYzXSArIGxbZSA+PiAxMiAmIDYzXSArIGxbZSA+PiA2ICYgNjNdICsgbFs2MyAmIGVdIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlLCB0LCByKSB7IGZvciAodmFyIG4sIG8gPSBbXSwgYSA9IHQ7IGEgPCByOyBhICs9IDMpIG4gPSAoZVthXSA8PCAxNikgKyAoZVthICsgMV0gPDwgOCkgKyBlW2EgKyAyXSwgby5wdXNoKGkobikpOyByZXR1cm4gby5qb2luKCIiKSB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoZSkgeyBmb3IgKHZhciB0LCByID0gZS5sZW5ndGgsIG4gPSByICUgMywgbyA9ICIiLCBhID0gW10sIGkgPSAxNjM4MywgZCA9IDAsIHUgPSByIC0gbjsgZCA8IHU7IGQgKz0gaSkgYS5wdXNoKHMoZSwgZCwgZCArIGkgPiB1ID8gdSA6IGQgKyBpKSk7IHJldHVybiAxID09PSBuID8gKHQgPSBlW3IgLSAxXSwgbyArPSBsW3QgPj4gMl0sIG8gKz0gbFt0IDw8IDQgJiA2M10sIG8gKz0gIj09IikgOiAyID09PSBuICYmICh0ID0gKGVbciAtIDJdIDw8IDgpICsgZVtyIC0gMV0sIG8gKz0gbFt0ID4+IDEwXSwgbyArPSBsW3QgPj4gNCAmIDYzXSwgbyArPSBsW3QgPDwgMiAmIDYzXSwgbyArPSAiPSIpLCBhLnB1c2gobyksIGEuam9pbigiIikgfSByLmJ5dGVMZW5ndGggPSBvLCByLnRvQnl0ZUFycmF5ID0gYSwgci5mcm9tQnl0ZUFycmF5ID0gZDsgZm9yICh2YXIgbCA9IFtdLCB1ID0gW10sIGYgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgVWludDhBcnJheSA/IFVpbnQ4QXJyYXkgOiBBcnJheSwgYyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIiwgaCA9IDAsIHAgPSBjLmxlbmd0aDsgaCA8IHA7ICsraCkgbFtoXSA9IGNbaF0sIHVbYy5jaGFyQ29kZUF0KGgpXSA9IGg7DQogICAgICAgICAgICAgICAgICAgICAgICB1WyItIi5jaGFyQ29kZUF0KDApXSA9IDYyLCB1WyJfIi5jaGFyQ29kZUF0KDApXSA9IDYzIH0NCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkgdFtyXS5mb2xkZXIgPSByLnN1YnN0cmluZygwLCByLmxhc3RJbmRleE9mKCIvIikgKyAxKTsNCiAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUpIHsgdmFyIHIgPSBbXTsgcmV0dXJuIGUgPSBlLnNwbGl0KCIvIikuZXZlcnkoZnVuY3Rpb24oZSkgeyByZXR1cm4gIi4uIiA9PSBlID8gci5wb3AoKSA6ICIuIiA9PSBlIHx8ICIiID09IGUgfHwgci5wdXNoKGUpIH0pID8gci5qb2luKCIvIikgOiBudWxsLCBlID8gdFtlXSB8fCB0W2UgKyAiLmpzIl0gfHwgdFtlICsgIi9pbmRleC5qcyJdIDogbnVsbCB9LA0KICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgeyByZXR1cm4gZSA/IG4oZS5mb2xkZXIgKyAibm9kZV9tb2R1bGVzLyIgKyB0KSB8fCBvKGUucGFyZW50LCB0KSA6IG51bGwgfSwNCiAgICAgICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKGUsIHQpIHsgdmFyIHIgPSB0Lm1hdGNoKC9eXC8vKSA/IG51bGwgOiBlID8gdC5tYXRjaCgvXlwuXC4/XC8vKSA/IG4oZS5mb2xkZXIgKyB0KSA6IG8oZSwgdCkgOiBuKHQpOyBpZiAoIXIpIHRocm93ICJtb2R1bGUgbm90IGZvdW5kOiAiICsgdDsgcmV0dXJuIHIuZXhwb3J0cyB8fCAoci5wYXJlbnQgPSBlLCByKGEuYmluZChudWxsLCByKSwgciwgci5leHBvcnRzID0ge30pKSwgci5leHBvcnRzIH07DQogICAgICAgICAgICAgICAgcmV0dXJuIGEobnVsbCwgZSkNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBkZWNvbXByZXNzOiBmdW5jdGlvbihlKSB7IHRoaXMuZXhwb3J0cyB8fCAodGhpcy5leHBvcnRzID0gdGhpcy5yZXF1aXJlKCJkZWNvbXByZXNzLmpzIikpOyB0cnkgeyByZXR1cm4gdGhpcy5leHBvcnRzKGUpIH0gY2F0Y2ggKGUpIHt9IH0sDQogICAgICAgICAgICBoYXNVbml0eU1hcmtlcjogZnVuY3Rpb24oZSkgeyB2YXIgdCA9ICJVbml0eVdlYiBDb21wcmVzc2VkIENvbnRlbnQgKGJyb3RsaSkiOyBpZiAoIWUubGVuZ3RoKSByZXR1cm4gITE7IHZhciByID0gMSAmIGVbMF0gPyAxNCAmIGVbMF0gPyA0IDogNyA6IDEsDQogICAgICAgICAgICAgICAgICAgIG4gPSBlWzBdICYgKDEgPDwgcikgLSAxLA0KICAgICAgICAgICAgICAgICAgICBvID0gMSArIChNYXRoLmxvZyh0Lmxlbmd0aCAtIDEpIC8gTWF0aC5sb2coMikgPj4gMyk7IGlmIChjb21tZW50T2Zmc2V0ID0gciArIDEgKyAyICsgMSArIDIgKyAobyA8PCAzKSArIDcgPj4gMywgMTcgPT0gbiB8fCBjb21tZW50T2Zmc2V0ID4gZS5sZW5ndGgpIHJldHVybiAhMTsgZm9yICh2YXIgYSA9IG4gKyAoNiArIChvIDw8IDQpICsgKHQubGVuZ3RoIC0gMSA8PCA2KSA8PCByKSwgaSA9IDA7IGkgPCBjb21tZW50T2Zmc2V0OyBpKyssIGEgPj4+PSA4KQ0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtpXSAhPSAoMjU1ICYgYSkpIHJldHVybiAhMTsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgZS5zdWJhcnJheShjb21tZW50T2Zmc2V0LCBjb21tZW50T2Zmc2V0ICsgdC5sZW5ndGgpKSA9PSB0IH0NCiAgICAgICAgfSwNCiAgICAgICAgZGVjb21wcmVzczogZnVuY3Rpb24oZSwgdCkgeyB2YXIgciA9IHRoaXMuZ3ppcC5oYXNVbml0eU1hcmtlcihlKSA/IHRoaXMuZ3ppcCA6IHRoaXMuYnJvdGxpLmhhc1VuaXR5TWFya2VyKGUpID8gdGhpcy5icm90bGkgOiB0aGlzLmlkZW50aXR5OyBpZiAodGhpcy5zZXJ2ZXJTZXR1cFdhcm5pbmdFbmFibGVkICYmIHIgIT0gdGhpcy5pZGVudGl0eSAmJiAoY29uc29sZS5sb2coIllvdSBjYW4gcmVkdWNlIHlvdXIgc3RhcnR1cCB0aW1lIGlmIHlvdSBjb25maWd1cmUgeW91ciB3ZWIgc2VydmVyIHRvIGhvc3QgLnVuaXR5d2ViIGZpbGVzIHVzaW5nICIgKyAociA9PSB0aGlzLmd6aXAgPyAiZ3ppcCIgOiAiYnJvdGxpIikgKyAiIGNvbXByZXNzaW9uLiIpLCB0aGlzLnNlcnZlclNldHVwV2FybmluZ0VuYWJsZWQgPSAhMSksICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQpIHJldHVybiByLmRlY29tcHJlc3MoZSk7IGlmICghci53b3JrZXIpIHsgdmFyIG4gPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFsidGhpcy5yZXF1aXJlID0gIiwgci5yZXF1aXJlLnRvU3RyaW5nKCksICI7IHRoaXMuZGVjb21wcmVzcyA9ICIsIHIuZGVjb21wcmVzcy50b1N0cmluZygpLCAiOyB0aGlzLm9ubWVzc2FnZSA9ICIsIGZ1bmN0aW9uKGUpIHsgdmFyIHQgPSB7IGlkOiBlLmRhdGEuaWQsIGRlY29tcHJlc3NlZDogdGhpcy5kZWNvbXByZXNzKGUuZGF0YS5jb21wcmVzc2VkKSB9Ow0KICAgICAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSh0LCB0LmRlY29tcHJlc3NlZCA/IFt0LmRlY29tcHJlc3NlZC5idWZmZXJdIDogW10pIH0udG9TdHJpbmcoKSwgIjsgcG9zdE1lc3NhZ2UoeyByZWFkeTogdHJ1ZSB9KTsiXSwgeyB0eXBlOiAidGV4dC9qYXZhc2NyaXB0IiB9KSk7DQogICAgICAgICAgICAgICAgci53b3JrZXIgPSBuZXcgV29ya2VyKG4pLCByLndvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7IHJldHVybiBlLmRhdGEucmVhZHkgPyB2b2lkIFVSTC5yZXZva2VPYmplY3RVUkwobikgOiAodGhpcy5jYWxsYmFja3NbZS5kYXRhLmlkXShlLmRhdGEuZGVjb21wcmVzc2VkKSwgdm9pZCBkZWxldGUgdGhpcy5jYWxsYmFja3NbZS5kYXRhLmlkXSkgfSwgci53b3JrZXIuY2FsbGJhY2tzID0ge30sIHIud29ya2VyLm5leHRDYWxsYmFja0lkID0gMCB9IHZhciBvID0gci53b3JrZXIubmV4dENhbGxiYWNrSWQrKzsNCiAgICAgICAgICAgIHIud29ya2VyLmNhbGxiYWNrc1tvXSA9IHQsIHIud29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IG8sIGNvbXByZXNzZWQ6IGUgfSwgW2UuYnVmZmVyXSkgfSwNCiAgICAgICAgc2VydmVyU2V0dXBXYXJuaW5nRW5hYmxlZDogITANCiAgICB9DQp9Ow0KZTwvc2NyaXB0Pg0KICAgIDxzY3JpcHQ+DQogICAgICB2YXIgZ2FtZUluc3RhbmNlID0gVW5pdHlMb2FkZXIuaW5zdGFudGlhdGUoImdhbWVDb250YWluZXIiLCAiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1JlbmVUaXJhZG8xNC9sYmFubmFuYUAzYWQ1YmY3ZWFiMWE0NzY2MGFjZDhmYmUwYzI0ZDExMTljN2EwYjZkL2h0bWwvc2xvcGUvQnVpbGQvc2xvcGUuanNvbiIsIHtvblByb2dyZXNzOiBVbml0eVByb2dyZXNzLE1vZHVsZTp7b25SdW50aW1lSW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uKCkge1VuaXR5UHJvZ3Jlc3MoZ2FtZUluc3RhbmNlLCAiY29tcGxldGUiKX19fSk7DQogICAgPC9zY3JpcHQ+DQoJPHNjcmlwdD5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpeyFmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3QudHlwZT0idGV4dC9jc3MiLHQuc3R5bGVTaGVldD90LnN0eWxlU2hlZXQuY3NzVGV4dD1lOnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpO2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQodCl9KCIjYnV0dG9uIHtcbiAgZGlzcGxheTpub25lO1xufVxuLmltZ2JfdmlzIHtcbiAgYW5pbWF0aW9uOiBpbWdiLWFuaW1hdGlvbiA3cyBsaW5lYXI7XG59XG5Aa2V5ZnJhbWVzIGltZ2ItYW5pbWF0aW9uIHtcbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwcHgpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMHB4KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbn0iKTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmlkPSJidXR0b24iLGUuY2xhc3NOYW1lPSJpbWdiIixlLnN0eWxlPSJwb3NpdGlvbjpmaXhlZDt0b3A6MTAlO2xlZnQ6LTEwMHB4O3otaW5kZXg6MTAiLGUuaW5uZXJIVE1MPSc8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL3ZpZXcvY2xhc3Nyb29tNngvIiB0aXRsZT0iTW9yZSBvZiBiZXN0IENsYXNzcm9vbSA2eCBVbmJsb2NrZWQgR2FtZXMiPjxpbWcgc3JjPSJodHRwczovL2xoNC5nb29nbGV1c2VyY29udGVudC5jb20vbFVFV3JYTVZFcjRBZGpLSVN5SmFoRFJKNjFid2Z2SGRwZVltODZEam41VThvQ205ZEk2ME5HWFNCcWFkOUhVdnpUWGdxbGtvc0FfaFdWLVZ1WFBqenJrR3ZoM19rTlNnWWs4eVNXelhuRHBiQkNCaW9veUJiVThvQnkzWUJaTURrVzhSY1JWbUR1QzByYW9lcVpCbThrQmxxczZjNW1kZmtKZU4yYUU2OGxYU19sY09aNV9GN2xJdU02cUxWZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIzMCIgc3R5bGU9ImN1cnNvcjpwb2ludGVyOyIgYWx0PSJNb3JlIFVuYmxvY2tlZCBHYW1lcyA2eCI+PC9hPicsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uIiksbj0wLG89WyJibG9jayIsIm5vbmUiXSxhPVs3ZTMsMTZlNF07IWZ1bmN0aW9uIGUoKXtuXj0xO3Quc3R5bGUuZGlzcGxheT1vW25dO3NldFRpbWVvdXQoZSxhW25dKX0oKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaW1nYiIpLmNsYXNzTGlzdC5hZGQoImltZ2JfdmlzIil9KTs8L3NjcmlwdD4NCiAgICA8ZGl2IGNsYXNzPSJ3ZWJnbC1jb250ZW50Ij4NCiAgICAgICAgPGRpdiBpZD0iZ2FtZUNvbnRhaW5lciIgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0OiAxMDB2aDsgcGFkZGluZzogMHB4OyBtYXJnaW46IDBweDsgYm9yZGVyOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYmFja2dyb3VuZDogcmdiKDM1LCAzMSwgMzIpOyI+PGNhbnZhcyBpZD0iI2NhbnZhcyIgc3R5bGU9ImN1cnNvcjogZGVmYXVsdDsiID48L2NhbnZhcz48ZGl2IGNsYXNzPSJsb2dvIERhcmsiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9kaXY+PGRpdiBjbGFzcz0icHJvZ3Jlc3MgRGFyayIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48ZGl2IGNsYXNzPSJlbXB0eSIgc3R5bGU9IndpZHRoOiAwJTsiPjwvZGl2PjxkaXYgY2xhc3M9ImZ1bGwiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPjwvZGl2PjwvZGl2PjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KXV0mZ3Q7PC9jb250ZW50Pg0KPC9tb2R1bGVwcmVmcz48L21vZHVsZT4NCjwvYm9keT48L2h0bWw+
Add Comment
Please, Sign In to add comment