PGh0bWw+DQoNCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+DQo8bWV0YSBuYW1lPVByb2dJZCBjb250ZW50PVBvd2VyUG9pbnQuU2xpZGU+DQo8bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgUG93ZXJQb2ludCA5Ij4NCjxsaW5rIGlkPU1haW4tRmlsZSByZWw9TWFpbi1GaWxlIGhyZWY9Ii4uL2Z1aml0c3UuaHRtIj4NCjxsaW5rIHJlbD1QcmV2aWV3IGhyZWY9cHJldmlldy53bWY+DQo8bWV0YSBuYW1lPVJvYm90cyBjb250ZW50PU5vSW5kZXg+DQo8c2NyaXB0IHNyYz1zY3JpcHQuanM+PC9zY3JpcHQ+PHNjcmlwdD48IS0tDQoNCmlmKCAhKElzV2luKCJQUFRPdGwiKXx8SXNXaW4oIlBQVE5hdiIpfHxJc1dpbigiUFBUT3RsTmF2IikpICkNCnsNCglvYmogPSBkb2N1bWVudC5hbGwuaXRlbSgiTWFpbi1GaWxlIikNCglwYXJlbnQubG9jYXRpb24uaHJlZj1vYmouaHJlZg0KfQ0KDQp2YXIgZ090bEhpbGl0ZUNscj0iIixnT3RsTm9ybWFsQ2xyPSIiLGdPdGxBY3RpdmVDbHI9IiIsZ1NlbGVjdGVkPSIiLGdUeHRTdGF0ZT1mYWxzZSxnQ2hpbGRFbnRyeVRhYmxlPW5ldyBBcnJheSgpDQoNCmZ1bmN0aW9uIExvYWQoKQ0Kew0KCWlmKCBJc1dpbigiUFBUT3RsIiApICl7IExvYWRPdGwoKTsgcGFyZW50LmdPdGxMb2FkZWQ9dHJ1ZTsgcmV0dXJuIH0NCglpZiggSXNXaW4oIlBQVE5hdiIgKSApeyBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdik7IHBhcmVudC5nTmF2TG9hZGVkPXRydWU7IHJldHVybiB9DQoJaWYoIElzV2luKCJQUFRPdGxOYXYiICkgKXsgTG9hZE5hdigiT3RsTmF2T2JqIixVcGRPdGxOYXYpOyBwYXJlbnQuZ090bE5hdkxvYWRlZD10cnVlOyByZXR1cm4gfQ0KfQ0KZnVuY3Rpb24gVXBkKCl7IGlmKCBJc1dpbigiUFBUTmF2IikgKSBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdikgfQ0KZnVuY3Rpb24gTG9hZE5hdiggb0lkLFVwZEZ1bmMgKQ0Kew0KCWRvY3VtZW50Lm9uZHJhZ3N0YXJ0PUNhbmNlbERyYWcNCglkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PUNhbmNlbERyYWcNCglkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbj0yDQoJVXBkRnVuYygpDQoJb2JqPWRvY3VtZW50LmFsbC5pdGVtKG9JZCkNCglvYmouc3R5bGUuZGlzcGxheT0iYmxvY2siDQoJb2JqLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiDQoJZG9jdW1lbnQuYmdDb2xvcj0idGhyZWVkZmFjZSINCn0NCmZ1bmN0aW9uIExvYWRPdGwoKQ0Kew0KCWRvY3VtZW50Lm9uZHJhZ3N0YXJ0PUNhbmNlbERyYWcNCglkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PUNhbmNlbERyYWcNCglPdGxPYmouc3R5bGUuZGlzcGxheT0iYmxvY2siDQoJT3RsT2JqLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiDQoJaWYoIGdPdGxBY3RpdmVDbHIgPT0gIiIgKSBnT3RsQWN0aXZlQ2xyPWRvY3VtZW50LmxpbmtDb2xvcg0KCWlmKCBnT3RsSGlsaXRlQ2xyID09ICIiICkgZ090bEhpbGl0ZUNscj1kb2N1bWVudC5mZ0NvbG9yDQoJaWYoIGdPdGxOb3JtYWxDbHIgPT0gIiIgKQ0KCQlnT3RsTm9ybWFsQ2xyPWRvY3VtZW50LmJnQ29sb3INCgllbHNlDQoJCWRvY3VtZW50LmJnQ29sb3I9Z090bE5vcm1hbENsciAgDQoNCglJbml0QXJyYXkoKQ0KDQoJaWYoIE9iakV4aXN0cyggcGFyZW50LmdDdXJTbGQgKSApIHsNCgkJQ2hhbmdlU3RhdGUoIHBhcmVudC5nQ3VyU2xkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApDQoJCWdTZWxlY3RlZD1wYXJlbnQuZ0N1clNsZA0KCX0NCgllbHNlIGdTZWxlY3RlZCA9IC0xDQoNCglVcGRPdGwoKQ0KfQ0KZnVuY3Rpb24gVXBkT3RsKCl7IFVwZElkeChwYXJlbnQuZ0N1clNsZCkgfQ0KZnVuY3Rpb24gVXBkSWR4KCBpZHggKQ0Kew0KCWlmKCBnU2VsZWN0ZWQgIT0gaWR4ICkgew0KCQlpZiggZ1NlbGVjdGVkID4gMCApDQoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxIaWxpdGVDbHIsZ090bE5vcm1hbENsciApDQoNCgkJaWYoIE9iakV4aXN0cyggaWR4ICkgKSB7DQoJCQlnU2VsZWN0ZWQgPSBpZHgNCgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bE5vcm1hbENscixnT3RsSGlsaXRlQ2xyICkNCgkJfQ0KCQllbHNlIGdTZWxlY3RlZCA9IC0xDQoJfQ0KDQoJaWYoIGdUeHRTdGF0ZSAhPSBwYXJlbnQuZ090bFR4dEV4cCApIHsNCgkJc3RhdGUgPSAiYmxvY2siDQoJCWlmKCAhcGFyZW50LmdPdGxUeHRFeHAgKQ0KCQkJc3RhdGU9Im5vbmUiDQoNCgkJZm9yKGlpPTA7IGlpPGdDaGlsZEVudHJ5VGFibGUubGVuZ3RoOyBpaSsrKSB7DQoJCQlvYmo9Z0NoaWxkRW50cnlUYWJsZVtpaV07DQoJCQlpZiggb2JqLmlkID09IG51bGwgKSBjb250aW51ZTsNCg0KCQkJaWYoIG9iai5pZC5pbmRleE9mKCJQUFRDIikgPj0gMCApDQoJCQkJb2JqLnN0eWxlLmRpc3BsYXk9c3RhdGU7DQoJCX0gDQoJCWdUeHRTdGF0ZT1wYXJlbnQuZ090bFR4dEV4cA0KCQlpZiggT2JqRXhpc3RzKCBnU2VsZWN0ZWQgKSApDQoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApDQoJfQ0KfQ0KZnVuY3Rpb24gSW5pdEFycmF5KCkNCnsNCgljb3VudD0wDQoJZm9yKGlpPTA7IGlpPGRvY3VtZW50LmFsbC50YWdzKCJESVYiKS5sZW5ndGg7IGlpKyspIHsNCgkJb2JqPWRvY3VtZW50LmFsbC50YWdzKCJESVYiKS5pdGVtKGlpKQ0KCQlpZiggb2JqLmlkID09IG51bGwgKSBjb250aW51ZQ0KDQoJCWlmKCBvYmouaWQuaW5kZXhPZigiUFBUQyIpID49IDAgKSB7ICAgDQoJCQlnQ2hpbGRFbnRyeVRhYmxlW2NvdW50KytdPW9iag0KCQkJb2JqLmNoaWxkcmVuLnRhZ3MoIlRBQkxFIikuaXRlbSgwKS5zdHlsZS5ib3JkZXJDb2xvcj1nT3RsTm9ybWFsQ2xyDQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBDaGFuZ2VTdGF0ZSggaWR4LGZnQ29sb3IsYmdDb2xvciApDQp7DQoJb2JqPWRvY3VtZW50LmFsbC5pdGVtKCJQUFRMIitpZHgpDQoJb2JqLnN0eWxlLmNvbG9yPWZnQ29sb3INCg0KCW9iaj1kb2N1bWVudC5hbGwuaXRlbSgiUFBUUCIraWR4KQ0KCW9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9YmdDb2xvcg0KDQoJb2JqPWRvY3VtZW50LmFsbC5pdGVtKCJQUFRCIitpZHgpDQoJaWYoIG9iaiApDQoJCW9iai5zdHlsZS5ib3JkZXJMZWZ0Q29sb3I9b2JqLnN0eWxlLmJvcmRlckJvdHRvbUNvbG9yPWJnQ29sb3INCn0NCmZ1bmN0aW9uIENoZ0NsciggbyxjbHIgKXsgaWYoIG8uaWQgIT0gIlBQVEwiK2dTZWxlY3RlZCApIG8uc3R5bGUuY29sb3I9Y2xyIH0NCmZ1bmN0aW9uIE92ZXIoIG9iaiApeyBDaGdDbHIob2JqLGdPdGxBY3RpdmVDbHIpIH0NCmZ1bmN0aW9uIE91dCggb2JqICl7IENoZ0NscihvYmosZ090bEhpbGl0ZUNscikgfQ0KZnVuY3Rpb24gT2JqRXhpc3RzKCBpaSApIHsgb2JqPWRvY3VtZW50LmFsbCgiUFBUUCIraWkgKTsgcmV0dXJuKCBvYmogKSB9DQpmdW5jdGlvbiBHb1RvU2xkKCBocmVmICl7IFVwZElkeChwYXJlbnQuR2V0U2xkTnVtKGhyZWYpKTsgcGFyZW50LkdvVG9TbGQoIGhyZWYgKSB9DQpmdW5jdGlvbiBDYW5jZWxEcmFnKCl7IHdpbmRvdy5ldmVudC5jYW5jZWxCdWJibGU9dHJ1ZTt3aW5kb3cuZXZlbnQucmV0dXJuVmFsdWU9ZmFsc2V9DQoNCmZ1bmN0aW9uIFVwZE5hdigpDQp7DQoJdHh0ID0gIjxjZW50ZXI+IjsNCglpZiggcGFyZW50LkdldEhyZWZPYmooIHBhcmVudC5nQ3VyU2xkICkubU9yaWdWaXMgPT0gMSApDQoJCXR4dCArPSAiU2xpZGUgIiArIHBhcmVudC5HZXRDdXJTbGROdW0oKSArICIgb2YgIiArIHBhcmVudC5HZXROdW1TbGRzKCkNCgllbHNlDQoJCXR4dCArPSAiSGlkZGVuIFNsaWRlIg0KCXR4dCArPSAiPC9jZW50ZXI+IjsNCgluYXZfdGV4dC5pbm5lckhUTUwgPSB0eHQ7DQoNCglpZiggIXBhcmVudC5IYXNQcmV2U2xkKCkgKQ0KCQlnQnRuQXJyWyJuYl9wcmV2Il0uRW5hYmxlZCgwKQ0KCWVsc2UNCgkJZ0J0bkFyclsibmJfcHJldiJdLkVuYWJsZWQoMSkNCg0KCWlmKCAhcGFyZW50Lkhhc05leHRTbGQoKSApDQoJCWdCdG5BcnJbIm5iX25leHQiXS5FbmFibGVkKDApDQoJZWxzZQ0KCQlnQnRuQXJyWyJuYl9uZXh0Il0uRW5hYmxlZCgxKQ0KCWdCdG5BcnJbIm5iX250cyJdLlNldEVuYWJsZWQoKQ0KCWdCdG5BcnJbIm5iX250cyJdLlNldEZsYWcoIHBhcmVudC5nSGFzTnRzICkNCg0KCWdCdG5BcnJbIm5iX3NsZHNodyJdLkVuYWJsZWQoMSkNCglnQnRuQXJyWyJuYl92b2ljZSJdLkVuYWJsZWQoMSkNCn0NCg0KZnVuY3Rpb24gVXBkT3RsTmF2KCkNCnsNCglnQnRuQXJyWyJuYl9vdGwiXS5TZXRFbmFibGVkKCk7DQoNCglpZiggcGFyZW50LmdPdGxPcGVuICkNCgkJZ0J0bkFyclsibmJfb3RsVHh0Il0uRW5hYmxlZCggdHJ1ZSApOw0KCWVsc2UNCgkJZG9jdW1lbnQuYWxsLml0ZW0oIm5iX290bFR4dEJvcmRlciIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsNCn0NCg0KDQoNCi8vLS0+DQo8L3NjcmlwdD4NCjxzdHlsZT4NCjwhLS0uUFR4dA0KCXtwb3NpdGlvbjpyZWxhdGl2ZTsNCgl3aWR0aDoxMDAlOw0KCW1hcmdpbi10b3A6NXB4Ow0KCXBhZGRpbmctbGVmdDo1cHg7DQoJZm9udC13ZWlnaHQ6Ym9sZDt9DQouQ1R4dA0KCXtwb3NpdGlvbjpyZWxhdGl2ZTsNCgl3aWR0aDoxMDAlOw0KCXBhZGRpbmctbGVmdDoxMHB4O30NCi5DQm9yZGVyDQoJe3Bvc2l0aW9uOnJlbGF0aXZlOw0KCXdpZHRoOjEwMCU7DQoJYm9yZGVyLXN0eWxlOnNvbGlkOw0KCWJvcmRlci13aWR0aDoxcHg7DQoJYm9yZGVyLWNvbG9yOmJsYWNrOw0KCXBhZGRpbmctYm90dG9tOjVweDt9DQphDQoJe2NvbG9yOmJsYWNrOw0KCXRleHQtZGVjb3JhdGlvbjpub25lO30NCi5idXR0b24NCgl7cG9zaXRpb246YWJzb2x1dGU7DQoJd2lkdGg6MzJweDsNCgloZWlnaHQ6MjBweDsNCglib3JkZXItc3R5bGU6c29saWQ7DQoJYm9yZGVyLXdpZHRoOjFweDsNCglib3JkZXItY29sb3I6dGhyZWVkZmFjZTt9DQotLT4NCjwvc3R5bGU+DQo8L2hlYWQ+DQoNCjxib2R5IG9ubG9hZD0iTG9hZCgpIj4NCg0KPGRpdiBpZD1OYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSINCm9ubW91c2Vkb3duPSJCdG5PbkRvd24oKSIgb25tb3VzZW91dD0iQnRuT25PdXQoKSIgb25tb3VzZXVwPSJCdG5PblVwKCkiDQpvbmtleXByZXNzPSJfS1BIKCkiIHN0eWxlPSdkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4nPg0KDQo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjcwcHg7dmlzaWJpbGl0eTpoaWRkZW4nIGFsaWduPWxlZnQNCiBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+DQogPHRkIG5vd3JhcD4NCiA8ZGl2IGlkPSJuYl9udHNFbGVtIiBhbGlnbj1jZW50ZXIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6M3B4Ow0KIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+PGltZyBzcmM9Im5vdGVzX2ZsYWcuZ2lmIg0KIGJvcmRlcj0wIGlkPSJub3Rlc19mbGFnIiBzdHlsZT0nZGlzcGxheTpub25lJz48c3BhbiBzdHlsZT0ibXNvLXNwYWNlcnVuOg0KIHllcyI+oCA8L3NwYW4+Tm90ZXM8L2Rpdj4NCiA8ZGl2IHRpdGxlPSJTaG93L0hpZGUgTm90ZXMiIGlkPSJuYl9udHMiIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MCU7DQogbGVmdDowJTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlJz48L2Rpdj4NCiA8L3RkPg0KPC90YWJsZT4NCg0KPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZScgYWxpZ249cmlnaHQgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPg0KIDx0ZD4NCiA8ZGl2IGlkPSJuYl9zbGRzaHdCb3JkZXIiIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0yMHB4O3dpZHRoOjIwcHg7DQogaGVpZ2h0OjIwcHgnPg0KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDE4cHgsIDE4cHgsIDBweCknPjxpbWcNCiBzcmM9YnV0dG9ucy5naWYgaWQ9Im5iX3NsZHNodyIgdGl0bGU9IkZ1bGwgU2NyZWVuIFNsaWRlIFNob3ciDQogc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTI1NHB4Jz48L2Rpdj4NCiA8L2Rpdj4NCiA8L3RkPg0KIDx0ZD4NCiA8ZGl2IGlkPSJuYl92b2ljZUJvcmRlciIgc3R5bGU9J2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi00MHB4Ow0KIHdpZHRoOjIwcHg7aGVpZ2h0OjIwcHgnPg0KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDE4cHgsIDE4cHgsIDBweCknPjxpbWcNCiBzcmM9YnV0dG9ucy5naWYgaWQ9Im5iX3ZvaWNlIiB0aXRsZT0iUGF1c2UvUGxheSBOYXJyYXRpb24iIHN0eWxlPSdwb3NpdGlvbjoNCiByZWxhdGl2ZTtsZWZ0Oi0yOTBweCc+PC9kaXY+DQogPC9kaXY+DQogPC90ZD4NCjwvdGFibGU+DQoNCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+DQogPHRkIG5vd3JhcD4NCiA8ZGl2IGlkPSJuYl9wcmV2Qm9yZGVyIiBjbGFzcz1idXR0b24gc3R5bGU9J2xlZnQ6LTMwcHgnPg0KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDMwcHgsIDE4cHgsIDBweCknPjxpbWcNCiBzcmM9YnV0dG9ucy5naWYgaWQ9Im5iX3ByZXYiIHRpdGxlPSJQcmV2aW91cyBTbGlkZSIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOw0KIGxlZnQ6MHB4Jz48L2Rpdj4NCiA8L2Rpdj4NCiA8c3BhbiBpZD0ibmF2X3RleHQiIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6M3B4O3dpZHRoOjEwMHB4O2ZvbnQtZmFtaWx5Og0KIEFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+PC9zcGFuPg0KIDxkaXYgaWQ9Im5iX25leHRCb3JkZXIiIGNsYXNzPWJ1dHRvbj4NCiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAzMHB4LCAxOHB4LCAwcHgpJz48aW1nDQogc3JjPWJ1dHRvbnMuZ2lmIGlkPSJuYl9uZXh0IiB0aXRsZT0iTmV4dCBTbGlkZSIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOw0KIGxlZnQ6LTkwcHgnPjwvZGl2Pg0KIDwvZGl2Pg0KIDwvdGQ+DQo8L3RhYmxlPg0KDQo8L2Rpdj4NCg0KPGRpdiBpZD1PdGxOYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSINCm9ubW91c2Vkb3duPSJCdG5PbkRvd24oKSIgb25tb3VzZW91dD0iQnRuT25PdXQoKSIgb25tb3VzZXVwPSJCdG5PblVwKCkiDQpvbmtleXByZXNzPSJfS1BIKCkiIHN0eWxlPSdkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4nPg0KDQo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjcwcHgnIGFsaWduPWxlZnQgY2VsbHBhZGRpbmc9MA0KIGNlbGxzcGFjaW5nPTA+DQogPHRkIG5vd3JhcD4NCiA8ZGl2IGlkPSJuYl9vdGxFbGVtIiBhbGlnbj1jZW50ZXIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6M3B4Ow0KIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+T3V0bGluZTwvZGl2Pg0KIDxkaXYgdGl0bGU9IlNob3cvSGlkZSBPdXRsaW5lIiBpZD0ibmJfb3RsIiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7DQogdG9wOjAlO2xlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJSc+PC9kaXY+DQogPC90ZD4NCjwvdGFibGU+DQoNCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+DQogPHRkPg0KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTE4cHg7d2lkdGg6MjRweDtoZWlnaHQ6MjBweDtib3JkZXItc3R5bGU6DQogc29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6dGhyZWVkZmFjZScgaWQ9Im5iX290bFR4dEJvcmRlciI+DQogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMjJweCwgMThweCwgMHB4KSc+PGltZw0KIHNyYz1idXR0b25zLmdpZiBpZD0ibmJfb3RsVHh0IiB0aXRsZT0iRXhwYW5kL0NvbGxhcHNlIE91dGxpbmUiDQogc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTE1N3B4Jz48L2Rpdj4NCiA8L2Rpdj4NCiA8L3RkPg0KPC90YWJsZT4NCg0KPC9kaXY+DQoNCjxkaXYgaWQ9T3RsT2JqIHN0eWxlPSdkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4nPg0KDQo8dGFibGUgd2lkdGg9IjEwMCUiIHN0eWxlPSdmb250LWZhbWlseTpBcmlhbDtmb250LXNpemU6OXB0Jz4NCiA8dHI+DQogIDx0ZD4NCiAgPGRpdiBpZD1QUFRQMSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQ0KICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAwMS5odG0nKTsiIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIg0KICBpZD1QUFRMMSBvbm1vdXNlb3V0PSJPdXQodGhpcykiPkZ1aml0c3UgTGltaXRlZDwvYT48L2ZvbnQ+PC9kaXY+DQogIDwvdGQ+DQogPC90cj4NCiA8dHI+DQogIDx0ZD4NCiAgPGRpdiBpZD1QUFRQMiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQ0KICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAwOS5odG0nKTsiIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIg0KICBpZD1QUFRMMiBvbm1vdXNlb3V0PSJPdXQodGhpcykiPkZ1aml0c3WScyBDb3JlIEJ1c2luZXNzPC9hPjwvZm9udD48L2Rpdj4NCiAgPGRpdiBpZD1QUFRDMiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPg0KICA8dGFibGUgaWQ9UFBUQjIgY2xhc3M9Q0JvcmRlcj4NCiAgIDx0cj4NCiAgICA8dGQgd2lkdGg9NSBub3dyYXA+PC90ZD4NCiAgICA8dGQgd2lkdGg9IjEwMCUiPjwvdGQ+DQogICA8L3RyPg0KICAgPHRyPg0KICAgIDx0ZCBjb2xzcGFuPTE+PC90ZD4NCiAgICA8dGQgY29sc3Bhbj0xPjwvdGQ+DQogICA8L3RyPg0KICA8L3RhYmxlPg0KICA8L2Rpdj4NCiAgPC90ZD4NCiA8L3RyPg0KIDx0cj4NCiAgPHRkPg0KICA8ZGl2IGlkPVBQVFAzIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhDQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDA2Lmh0bScpOyIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiDQogIGlkPVBQVEwzIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSI+U29mdHdhcmUgR3JvdXAgUHJvZHVjdHM8L2E+PC9mb250PjwvZGl2Pg0KICA8L3RkPg0KIDwvdHI+DQogPHRyPg0KICA8dGQ+DQogIDxkaXYgaWQ9UFBUUDQgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGENCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMjEuaHRtJyk7IiBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSINCiAgaWQ9UFBUTDQgb25tb3VzZW91dD0iT3V0KHRoaXMpIj5Ib3cgZG9lcyBGdWppdHN1IHVzZSBFY2xpcHNlPzwvYT48L2ZvbnQ+PC9kaXY+DQogIDwvdGQ+DQogPC90cj4NCiA8dHI+DQogIDx0ZD4NCiAgPGRpdiBpZD1QUFRQNSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQ0KICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAxOS5odG0nKTsiIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIg0KICBpZD1QUFRMNSBvbm1vdXNlb3V0PSJPdXQodGhpcykiPldoYXQgZG9lcyBGdWppdHN1IGNvbnRyaWJ1dGUgdG8gRWNsaXBzZT88L2E+PC9mb250PjwvZGl2Pg0KICA8L3RkPg0KIDwvdHI+DQogPHRyPg0KICA8dGQ+DQogIDxkaXYgaWQ9UFBUUDYgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGENCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMTYuaHRtJyk7IiBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSINCiAgaWQ9UFBUTDYgb25tb3VzZW91dD0iT3V0KHRoaXMpIj5XaGF0IGlzIEFQV09SS1M/PC9hPjwvZm9udD48L2Rpdj4NCiAgPC90ZD4NCiA8L3RyPg0KIDx0cj4NCiAgPHRkPg0KICA8ZGl2IGlkPVBQVFA3IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhDQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDE3Lmh0bScpOyIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiDQogIGlkPVBQVEw3IG9ubW91c2VvdXQ9Ik91dCh0aGlzKSI+RGV2ZWxvcG1lbnQgdG9vbHMgZm9yIElOVEVSU1RBR0U8L2E+PC9mb250PjwvZGl2Pg0KICA8L3RkPg0KIDwvdHI+DQogPHRyPg0KICA8dGQ+DQogIDxkaXYgaWQ9UFBUUDggY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGENCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMjIuaHRtJyk7IiBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSINCiAgaWQ9UFBUTDggb25tb3VzZW91dD0iT3V0KHRoaXMpIj5FeGFtcGxlIG9mIENPQk9MIERldmVsb3BtZW50IHRvb2xzIGJ1aWx0IG9uDQogIEVjbGlwc2U8L2E+PC9mb250PjwvZGl2Pg0KICA8L3RkPg0KIDwvdHI+DQogPHRyPg0KICA8dGQ+DQogIDxkaXYgaWQ9UFBUUDkgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGENCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMjQuaHRtJyk7IiBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSINCiAgaWQ9UFBUTDkgb25tb3VzZW91dD0iT3V0KHRoaXMpIj5Sb25hbGQgQWxlcGluLSBCaW9ncmFwaHk8L2E+PC9mb250PjwvZGl2Pg0KICA8ZGl2IGlkPVBQVEM5IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+DQogIDx0YWJsZSBpZD1QUFRCOSBjbGFzcz1DQm9yZGVyPg0KICAgPHRyPg0KICAgIDx0ZCB3aWR0aD01IG5vd3JhcD48L3RkPg0KICAgIDx0ZCB3aWR0aD0iMTAwJSI+PC90ZD4NCiAgIDwvdHI+DQogICA8dHI+DQogICAgPHRkIGNvbHNwYW49MT48L3RkPg0KICAgIDx0ZCBjb2xzcGFuPTE+PC90ZD4NCiAgIDwvdHI+DQogICA8dHI+DQogICAgPHRkIGNvbHNwYW49MT48L3RkPg0KICAgIDx0ZCBjb2xzcGFuPTE+PC90ZD4NCiAgIDwvdHI+DQogICA8dHI+DQogICAgPHRkIGNvbHNwYW49MT48L3RkPg0KICAgIDx0ZCBjb2xzcGFuPTE+PC90ZD4NCiAgIDwvdHI+DQogIDwvdGFibGU+DQogIDwvZGl2Pg0KICA8L3RkPg0KIDwvdHI+DQo8L3RhYmxlPg0KDQo8L2Rpdj4NCg0KPC9ib2R5Pg0KDQo8L2h0bWw+DQo=