PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CjxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9UG93ZXJQb2ludC5TbGlkZT4KPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFBvd2VyUG9pbnQgMTAiPgo8bGluayBpZD1NYWluLUZpbGUgcmVsPU1haW4tRmlsZSBocmVmPSIuLi9FY2xpcHNlQ29uMjAwNV9Qcm9qZWN0U3ByaW50Lmh0bWwiPgo8bGluayByZWw9UHJldmlldyBocmVmPXByZXZpZXcud21mPgo8bWV0YSBuYW1lPVJvYm90cyBjb250ZW50PU5vSW5kZXg+CjxzY3JpcHQgc3JjPXNjcmlwdC5qcz48L3NjcmlwdD48c2NyaXB0PjwhLS0KaWYoICEoSXNXaW4oIlBQVE90bCIpfHxJc1dpbigiUFBUTmF2Iil8fElzV2luKCJQUFRPdGxOYXYiKSkgKQp7CglvYmogPSBHZXRPYmooIk1haW4tRmlsZSIpCglwYXJlbnQubG9jYXRpb24uaHJlZj1vYmouaHJlZgp9CnZhciBnT3RsSGlsaXRlQ2xyPSIjZmZmZmZmIixnT3RsTm9ybWFsQ2xyPSIjMDAwMDAwIixnT3RsQWN0aXZlQ2xyPSIjZmZmZjAwIixnU2VsZWN0ZWQ9IiIsZ1R4dFN0YXRlPWZhbHNlLGdDaGlsZEVudHJ5VGFibGU9bmV3IEFycmF5KCkKZnVuY3Rpb24gTG9hZCgpCnsKCWlmKCBJc1dpbigiUFBUT3RsIiApICl7IExvYWRPdGwoKTsgcGFyZW50LmdPdGxMb2FkZWQ9dHJ1ZTsgcmV0dXJuIH0KCWlmKCBnX3N1cHBvcnRzUFBUSFRNTCApIHsKCQlpZiggSXNXaW4oIlBQVE5hdiIgKSApeyBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdik7IHBhcmVudC5nTmF2TG9hZGVkPXRydWU7IHJldHVybiB9CgkJaWYoIElzV2luKCJQUFRPdGxOYXYiICkgKXsgTG9hZE5hdigiT3RsTmF2T2JqIixVcGRPdGxOYXYpOyBwYXJlbnQuZ090bE5hdkxvYWRlZD10cnVlOyByZXR1cm4gfQoJfQp9CmZ1bmN0aW9uIFVwZCgpeyBpZiggSXNXaW4oIlBQVE5hdiIpICkgTG9hZE5hdigiTmF2T2JqIixVcGROYXYpIH0KZnVuY3Rpb24gTG9hZE5hdiggb0lkLFVwZEZ1bmMgKQp7Cglkb2N1bWVudC5vbmRyYWdzdGFydD1DYW5jZWxEcmFnCglkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PUNhbmNlbERyYWcKCWRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luPTIKCVVwZEZ1bmMoKQoJb2JqPWRvY3VtZW50LmFsbC5pdGVtKG9JZCkKCW9iai5zdHlsZS5kaXNwbGF5PSJibG9jayIKCW9iai5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIgoJZG9jdW1lbnQuYmdDb2xvcj0idGhyZWVkZmFjZSIKCWlmKCBwYXJlbnQuZnJhbWVzWyJQUFROdHMiXSApCgkJbm90ZXNCdG4uc3R5bGUuZGlzcGxheSA9ICIiCglpZiggcGFyZW50LmdIYXNOYXJyYXRpb24gKQoJCW5iX3ZvaWNlQm9yZGVyLnN0eWxlLmRpc3BsYXkgPSAiIgp9CmZ1bmN0aW9uIExvYWRPdGwoKQp7Cgl2YXIgb3RsPUdldE9iaigiT3RsT2JqIikKCW90bC5zdHlsZS5kaXNwbGF5PSJibG9jayIKCW90bC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIgoJaWYoIGdPdGxBY3RpdmVDbHIgPT0gIiIgKSBnT3RsQWN0aXZlQ2xyPWRvY3VtZW50LmxpbmtDb2xvcgoJaWYoIGdPdGxIaWxpdGVDbHIgPT0gIiIgKSBnT3RsSGlsaXRlQ2xyPWRvY3VtZW50LmZnQ29sb3IKCWlmKCBnT3RsTm9ybWFsQ2xyID09ICIiICkKCQlnT3RsTm9ybWFsQ2xyPWRvY3VtZW50LmJnQ29sb3IKCWVsc2UKCQlkb2N1bWVudC5iZ0NvbG9yPWdPdGxOb3JtYWxDbHIKCUluaXRBcnJheSgpCglpZiggT2JqRXhpc3RzKCBwYXJlbnQuZ0N1clNsZCApICkgewoJCUNoYW5nZVN0YXRlKCBwYXJlbnQuZ0N1clNsZCxnT3RsTm9ybWFsQ2xyLGdPdGxIaWxpdGVDbHIgKQoJCWdTZWxlY3RlZD1wYXJlbnQuZ0N1clNsZAoJfQoJZWxzZSBnU2VsZWN0ZWQgPSAtMQoJVXBkT3RsKCkKfQpmdW5jdGlvbiBVcGRPdGwoKXsgVXBkSWR4KHBhcmVudC5nQ3VyU2xkKSB9CmZ1bmN0aW9uIFVwZElkeCggaWR4ICkKewoJaWYoIGdTZWxlY3RlZCAhPSBpZHggKSB7CgkJaWYoIGdTZWxlY3RlZCA+IDAgKQoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxIaWxpdGVDbHIsZ090bE5vcm1hbENsciApCgkJaWYoIE9iakV4aXN0cyggaWR4ICkgKSB7CgkJCWdTZWxlY3RlZCA9IGlkeAoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApCgkJfQoJCWVsc2UgZ1NlbGVjdGVkID0gLTEKCX0KCWlmKCBnVHh0U3RhdGUgIT0gcGFyZW50LmdPdGxUeHRFeHAgKSB7CgkJc3RhdGUgPSAiYmxvY2siCgkJaWYoICFwYXJlbnQuZ090bFR4dEV4cCApCgkJCXN0YXRlPSJub25lIgoJCWZvcihpaT0wOyBpaTxnQ2hpbGRFbnRyeVRhYmxlLmxlbmd0aDsgaWkrKykgewoJCQlvYmo9Z0NoaWxkRW50cnlUYWJsZVtpaV07CgkJCWlmKCBvYmouaWQgPT0gbnVsbCApIGNvbnRpbnVlOwoJCQlpZiggb2JqLmlkLmluZGV4T2YoIlBQVEMiKSA+PSAwICkKCQkJCW9iai5zdHlsZS5kaXNwbGF5PXN0YXRlOwoJCX0KCQlnVHh0U3RhdGU9cGFyZW50LmdPdGxUeHRFeHAKCQlpZiggT2JqRXhpc3RzKCBnU2VsZWN0ZWQgKSApCgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bE5vcm1hbENscixnT3RsSGlsaXRlQ2xyICkKCX0KfQpmdW5jdGlvbiBJbml0QXJyYXkoKQp7Cgljb3VudD0wCgl2YXIgbGlzdD1HZXRUYWdzKGRvY3VtZW50LCJESVYiKTsKCWZvcihpaT0wOyBpaTxsaXN0Lmxlbmd0aDsgaWkrKykgewoJCW9iaj1saXN0Lml0ZW0oaWkpCgkJaWYoIG9iai5pZCA9PSBudWxsICkgY29udGludWUKCQlpZiggb2JqLmlkLmluZGV4T2YoIlBQVEMiKSA+PSAwICkKCQkJZ0NoaWxkRW50cnlUYWJsZVtjb3VudCsrXT1vYmoKCX0KfQpmdW5jdGlvbiBDaGFuZ2VTdGF0ZSggaWR4LGZnQ29sb3IsYmdDb2xvciApCnsKCW9iaj1HZXRPYmooIlBQVEwiK2lkeCkKCW9iai5zdHlsZS5jb2xvcj1mZ0NvbG9yCglvYmo9R2V0T2JqKCJQUFRQIitpZHgpCglvYmouc3R5bGUuYmFja2dyb3VuZENvbG9yPWJnQ29sb3IKfQpmdW5jdGlvbiBDaGdDbHIoIG8sY2xyICl7IGlmKCBvLmlkICE9ICJQUFRMIitnU2VsZWN0ZWQgKSBvLnN0eWxlLmNvbG9yPWNsciB9CmZ1bmN0aW9uIE92ZXIoIHNyYyApeyBDaGdDbHIoR2V0TGluayhzcmMpLGdPdGxBY3RpdmVDbHIpIH0KZnVuY3Rpb24gT3V0KCBzcmMgKXsgQ2hnQ2xyKEdldExpbmsoc3JjKSxnT3RsSGlsaXRlQ2xyKSB9CmZ1bmN0aW9uIEZvbGxvdyhzcmMpeyB3aW5kb3cubG9jYXRpb24uaHJlZiA9IEdldExpbmsoc3JjKS5ocmVmOyB9CmZ1bmN0aW9uIE9iakV4aXN0cyggaWkgKSB7IG9iaj1HZXRPYmooIlBQVFAiK2lpICk7IHJldHVybiggb2JqICkgfQpmdW5jdGlvbiBHb1RvU2xkKCBocmVmICl7IFVwZElkeChwYXJlbnQuR2V0U2xkTnVtKGhyZWYpKTsgcGFyZW50LkdvVG9TbGQoIGhyZWYgKSB9CmZ1bmN0aW9uIENhbmNlbERyYWcoKXsgd2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZT10cnVlO3dpbmRvdy5ldmVudC5yZXR1cm5WYWx1ZT1mYWxzZX0KZnVuY3Rpb24gR2V0TGluayhzcmMpCnsKICAgaWYoc3JjLnRhZ05hbWU9PSJBIikgcmV0dXJuIHNyYwogICBlbHNlIHJldHVybiBHZXRUYWdzKHNyYywiQSIpLml0ZW0oMCkKfQpmdW5jdGlvbiBVcGROYXYoKQp7Cgl0eHQgPSAiPGNlbnRlcj4iOwoJaWYoIHBhcmVudC5HZXRIcmVmT2JqKCBwYXJlbnQuZ0N1clNsZCApLm1PcmlnVmlzID09IDEgKQoJCXR4dCArPSAiU2xpZGUgIiArIHBhcmVudC5HZXRDdXJTbGROdW0oKSArICIgb2YgIiArIHBhcmVudC5HZXROdW1TbGRzKCkKCWVsc2UKCQl0eHQgKz0gIkhpZGRlbiBTbGlkZSIKCXR4dCArPSAiPC9jZW50ZXI+IjsKCW5hdl90ZXh0LmlubmVySFRNTCA9IHR4dDsKCWlmKCAhcGFyZW50Lkhhc1ByZXZTbGQoKSApCgkJZ0J0bkFyclsibmJfcHJldiJdLkVuYWJsZWQoMCkKCWVsc2UKCQlnQnRuQXJyWyJuYl9wcmV2Il0uRW5hYmxlZCgxKQoJaWYoICFwYXJlbnQuSGFzTmV4dFNsZCgpICkKCQlnQnRuQXJyWyJuYl9uZXh0Il0uRW5hYmxlZCgwKQoJZWxzZQoJCWdCdG5BcnJbIm5iX25leHQiXS5FbmFibGVkKDEpCglnQnRuQXJyWyJuYl9udHMiXS5TZXRFbmFibGVkKCkKCWdCdG5BcnJbIm5iX250cyJdLlNldEZsYWcoIHBhcmVudC5nSGFzTnRzICkKCWdCdG5BcnJbIm5iX3NsZHNodyJdLkVuYWJsZWQoMSkKCWdCdG5BcnJbIm5iX3ZvaWNlIl0uRW5hYmxlZCgxKQp9CmZ1bmN0aW9uIFVwZE90bE5hdigpCnsKCWdCdG5BcnJbIm5iX290bCJdLlNldEVuYWJsZWQoKTsKCWlmKCBwYXJlbnQuZ090bE9wZW4gKQoJCWdCdG5BcnJbIm5iX290bFR4dCJdLkVuYWJsZWQoIHRydWUgKTsKCWVsc2UKCQlkb2N1bWVudC5hbGwuaXRlbSgibmJfb3RsVHh0Qm9yZGVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwp9CgovLy0tPjwvc2NyaXB0Pgo8c3R5bGU+CjwhLS0uUFR4dAoJe3Bvc2l0aW9uOnJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCW1hcmdpbi10b3A6NXB4OwoJcGFkZGluZy1sZWZ0OjJweDsKCWZvbnQtd2VpZ2h0OmJvbGQ7fQouQ1R4dAoJe3Bvc2l0aW9uOnJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCW1hcmdpbi10b3A6NXB4O30KYQoJe2NvbG9yOndoaXRlOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7fQp1bAoJe2NvbG9yOndoaXRlOwoJbWFyZ2luLWJvdHRvbTowcHg7CgltYXJnaW4tbGVmdDoyMHB4O30KLnNsZE51bQoJe21hcmdpbi10b3A6NXB4OwoJY29sb3I6d2hpdGU7fQouYnV0dG9uCgl7cG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDozMnB4OwoJaGVpZ2h0OjIwcHg7Cglib3JkZXItc3R5bGU6c29saWQ7Cglib3JkZXItd2lkdGg6MXB4OwoJYm9yZGVyLWNvbG9yOnRocmVlZGZhY2U7fQotLT4KPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHkgb25sb2FkPSJMb2FkKCkiIHN0eWxlPSdtYXJnaW46MnB4Jz4KCjxkaXYgaWQ9TmF2T2JqIG9ubG9hZD0iTG9hZCgpIiBvbm1vdXNlb3Zlcj0iQnRuT25PdmVyKCkiCm9ubW91c2Vkb3duPSJCdG5PbkRvd24oKSIgb25tb3VzZW91dD0iQnRuT25PdXQoKSIgb25tb3VzZXVwPSJCdG5PblVwKCkiCm9ua2V5cHJlc3M9Il9LUEgoKSIgc3R5bGU9J2Rpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbic+Cjx0YWJsZSBpZD0ibm90ZXNCdG4iIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5Om5vbmU7d2lkdGg6NzBweCcgYWxpZ249bGVmdCBjZWxscGFkZGluZz0wCiBjZWxsc3BhY2luZz0wPgogPHRkIG5vd3JhcD4KIDxkaXYgaWQ9Im5iX250c0VsZW0iIGFsaWduPWNlbnRlciBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzozcHg7CiBmb250LWZhbWlseTpBcmlhbDtjb2xvcjpidXR0b250ZXh0O2ZvbnQtc2l6ZTo5cHQnPjxpbWcgc3JjPSJub3Rlc19mbGFnLmdpZiIKIGJvcmRlcj0wIGlkPSJub3Rlc19mbGFnIiBzdHlsZT0nZGlzcGxheTpub25lJz48c3BhbgpzdHlsZT0nbXNvLXNwYWNlcnVuOnllcyc+oCA8L3NwYW4+Tm90ZXM8L2Rpdj4KIDxkaXYgdGl0bGU9IlNob3cvSGlkZSBOb3RlcyIgaWQ9Im5iX250cyIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTsKIGxlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJSc+PC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo3MHB4JyBhbGlnbj1yaWdodCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfc2xkc2h3VGV4dCIgdGl0bGU9IkZ1bGwKU2NyZWVuIFNsaWRlIFNob3ciIGFsaWduPWNlbnRlciBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWxlZnQ6MjBweDtwYWRkaW5nOjNweDsKIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdDtjdXJzb3I6ZGVmYXVsdCc+U2xpZGUKU2hvdzwvZGl2PgogPGRpdiBpZD0ibmJfc2xkc2h3Qm9yZGVyIiB0aXRsZT0iRnVsbCBTY3JlZW4gU2xpZGUgU2hvdyIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTtsZWZ0OjAlO3dpZHRoOjEwMCU7aGVpZ2h0OjIwcHgnPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMThweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX3NsZHNodyIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTI1NHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KIDx0ZD4KIDxkaXYgaWQ9Im5iX3ZvaWNlQm9yZGVyIiBzdHlsZT0nZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTQwcHg7CiB3aWR0aDoyMHB4O2hlaWdodDoyMHB4Jz4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDE4cHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl92b2ljZSIgdGl0bGU9IlBhdXNlL1BsYXkgTmFycmF0aW9uIiBzdHlsZT0ncG9zaXRpb246CiByZWxhdGl2ZTtsZWZ0Oi0yOTBweCc+PC9kaXY+CiA8L2Rpdj4KIDwvdGQ+CjwvdGFibGU+Cgo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlJyBhbGlnbj1jZW50ZXIgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgogPHRkIG5vd3JhcD4KIDxkaXYgaWQ9Im5iX3ByZXZCb3JkZXIiIGNsYXNzPWJ1dHRvbiBzdHlsZT0nbGVmdDotMzBweCc+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAzMHB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9ImJ1dHRvbnMuZ2lmIiBpZD0ibmJfcHJldiIgdGl0bGU9IlByZXZpb3VzIFNsaWRlIiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7CiBsZWZ0OjBweCc+PC9kaXY+CiA8L2Rpdj4KIDxzcGFuIGlkPSJuYXZfdGV4dCIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDozcHg7d2lkdGg6MTAwcHg7Zm9udC1mYW1pbHk6CiBBcmlhbDtjb2xvcjpidXR0b250ZXh0O2ZvbnQtc2l6ZTo5cHQnPjwvc3Bhbj4KIDxkaXYgaWQ9Im5iX25leHRCb3JkZXIiIGNsYXNzPWJ1dHRvbj4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDMwcHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl9uZXh0IiB0aXRsZT0iTmV4dCBTbGlkZSIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOwogbGVmdDotOTBweCc+PC9kaXY+CiA8L2Rpdj4KIDwvdGQ+CjwvdGFibGU+CjwvZGl2PgoKPGRpdiBpZD1PdGxOYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSIKb25tb3VzZWRvd249IkJ0bk9uRG93bigpIiBvbm1vdXNlb3V0PSJCdG5Pbk91dCgpIiBvbm1vdXNldXA9IkJ0bk9uVXAoKSIKb25rZXlwcmVzcz0iX0tQSCgpIiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuJz4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NzBweCcgYWxpZ249bGVmdCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPjxkaXYgdGl0bGU9IlNob3cvSGlkZQpPdXRsaW5lIiBpZD0ibmJfb3RsIgogc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTtsZWZ0OjAlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Y3Vyc29yOmRlZmF1bHQnPgogPGRpdiBpZD0ibmJfb3RsRWxlbSIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjNweDtmb250LWZhbWlseTpBcmlhbDsKIGNvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+T3V0bGluZTwvZGl2PjwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQ+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xOHB4O3dpZHRoOjI0cHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXN0eWxlOgogc29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6dGhyZWVkZmFjZScgaWQ9Im5iX290bFR4dEJvcmRlciI+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAyMnB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9YnV0dG9ucy5naWYgaWQ9Im5iX290bFR4dCIgdGl0bGU9IkV4cGFuZC9Db2xsYXBzZSBPdXRsaW5lIgogc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTE1N3B4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjwvZGl2PgoKPGRpdiBpZD1PdGxPYmogc3R5bGU9J2Rpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbjsnPgoKCjx0YWJsZSB3aWR0aD0iMTAwJSIgc3R5bGU9J2ZvbnQtZmFtaWx5OkFyaWFsO2ZvbnQtc2l6ZTo5cHQnPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkIHdpZHRoPSIxMDAlIj4KICA8ZGl2IGlkPVBQVFAxIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNDMuaHRtbCcpOyIgaWQ9UFBUTDE+VU1MMiBQcm9qZWN0IFNwcmludDwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5LZW5uIEh1c3NleTwvbGk+CiAgIDxsaT5VTUwyIFByb2plY3QgTGVhZDwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjI8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDQ4Lmh0bWwnKTsiIGlkPVBQVEwyPkNvbnRlbnRzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPk92ZXJ2aWV3PC9saT4KICAgPGxpPkdvYWxzPC9saT4KICAgPGxpPkNoYWxsZW5nZXM8L2xpPgogICA8bGk+U3RhdHVzPC9saT4KICAgPGxpPk1pbGVzdG9uZXM8L2xpPgogICA8bGk+RGV2ZWxvcG1lbnQgUGxhbnM8L2xpPgogICA8bGk+SG93IENhbiBZb3UgSGVscD88L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4zPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA0OS5odG1sJyk7IiBpZD1QUFRMMz5PdmVydmlldzwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5BbiBFY2xpcHNlIE1vZGVsaW5nIERldmVsb3BtZW50IFRvb2xzIHN1YmNvbXBvbmVudCBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL21vZGVsaW5nL21kdC8/cHJvamVjdD11bWwyI3VtbDI8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFuIEVNRi1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVU1MmSAyLjAgbWV0YW1vZGVsIGZvciB0aGUgRWNsaXBzZQogICAgICAgcGxhdGZvcm08L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlByb2plY3QgbGVhZCBpcyBLZW5uIEh1c3NleSAoa2h1c3NleUBjYS5pYm0uY29tKTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VXNlcnMgaW5jbHVkZSBJQk0gKFJhdGlvbmFsIFNvZnR3YXJlIEFyY2hpdGVjdCkgYW5kIE9tb25kbyAoRWNsaXBzZVVNTDIpPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+NDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA0IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNTAuaHRtbCcpOyIgaWQ9UFBUTDQ+R29hbHM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzQgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+UHJvdmlkZSBhIHVzZWFibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1ldGFtb2RlbCB0byBzdXBwb3J0IHRoZQogICAgICAgZGV2ZWxvcG1lbnQgb2YgbW9kZWxpbmcgdG9vbHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlByb3ZpZGUgYSBjb21tb24gWE1JIHNjaGVtYSB0byBmYWNpbGl0YXRlIGludGVyY2hhbmdlIG9mIHNlbWFudGljIG1vZGVsczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UHJvdmlkZSB0ZXN0IGNhc2VzIGFzIGEgbWVhbnMgb2YgdmFsaWRhdGluZyB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKICAgICAgIGltcGxlbWVudGF0aW9uPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Qcm92aWRlIHZhbGlkYXRpb24gcnVsZXMgYXMgYSBtZWFucyBvZiBkZWZpbmluZyBhbmQgZW5mb3JjaW5nIGxldmVscyBvZgogICAgICAgY29tcGxpYW5jZTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDUxLmh0bWwnKTsiIGlkPVBQVEw1PkNoYWxsZW5nZXM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzUgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+U2luY2UgdGhlIHNwZWNpZmljYXRpb24gaXNuknQgZmluYWxpemVkLCB0aGUgQVBJIGlzIGEgbW92aW5nIHRhcmdldDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+QXNwZWN0cyBvZiB0aGUgc3RhbmRhcmQgbWV0YW1vZGVsIChyZWRlZmluaXRpb24sIHN1YnNldHMvc3VwZXJzZXRzKSBtYWtlCiAgICAgICB0aGUgbWFwcGluZyB0byBKYXZhIGFuZCBYTUkgZGlmZmljdWx0PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5UaGVyZSBhcmUgYSBudW1iZXIgb2YgZXJyb3JzIGluIHRoZSBzcGVjaWZpY2F0aW9uIHdoaWNoLCB1bnRpbCBmaXhlZCwKICAgICAgIG1ha2UgdGhlIEFQSSBhbmQgWE1JIHNjaGVtYSBkaWZmaWN1bHQgdG8gdXNlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Db21wbGlhbmNlIHBvaW50cyBmb3IgVU1MmSAyLjAgYXJlIGEgc3ViamVjdCBvZiBtdWNoIGRlYmF0ZSB3aXRoaW4gdGhlCiAgICAgICBtb2RlbGluZyBjb21tdW5pdHk8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj42PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDYgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA1Mi5odG1sJyk7IiBpZD1QUFRMNj5TdGF0dXMgliBNZXRhbW9kZWw8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzYgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+RU1GLWdlbmVyYXRlZCBBUEkgYmFzZWQgb24gYSBjb2xsYXBzZWQgdmVyc2lvbiBvZiB0aGUgbWV0YW1vZGVsIGluIHdoaWNoCiAgICAgICBwYWNrYWdlIG1lcmdlcyBhbmQgYSBtYWpvcml0eSBvZiB0aGUgcmVkZWZpbml0aW9ucyBoYXZlIGJlZW4gZmFjdG9yZWQKICAgICAgIG91dDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+SW5jbHVkZXMgbWVjaGFuaXNtcyB0byBzdXBwb3J0IGRlcml2ZWQgdW5pb24sIHJlZGVmaW5lcywgYW5kIHN1YnNldHMKICAgICAgIGNvbnN0cmFpbnRzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5HZW5lcmF0ZWQgdXNpbmcgYSBjdXN0b21pemVkIEVjb3JlIJNidWlsZGVylCBhbmQgSkVUIHRlbXBsYXRlczwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjc8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNyBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDUzLmh0bWwnKTsiIGlkPVBQVEw3PlN0YXR1cyCWIEludGVyY2hhbmdlPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEM3IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkRlZmF1bHQgWE1JIHNjaGVtYSBnZW5lcmF0ZWQgdXNpbmcgRU1GPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5EZWZpbmVzIG9uZSBuYW1lc3BhY2UgKGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8xLjAuMC9VTUwpIGZvciBhbGwKICAgICAgIGVsZW1lbnRzLCB0aHVzIHN1cHBvcnRpbmcgaW50ZXJjaGFuZ2U8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkVsZW1lbnRzIGlkZW50aWZpZWQgdXNpbmcgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXJzIChVVUlEcyk8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPldpbGwgc3VwcG9ydCBpbXBvcnQvZXhwb3J0IGZyb20vdG8gT01HIFhNSSBmb3IgVU1MmSAyLjAgb25jZSB0aGUKICAgICAgIHNwZWNpZmljYXRpb24gaXMgZmluYWxpemVkPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+ODwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA4IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNTQuaHRtbCcpOyIgaWQ9UFBUTDg+U3RhdHVzIJYgU3BlY2lmaWNhdGlvbjwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDOCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5VTUyZIDIuMCBTdXBlcnN0cnVjdHVyZSBGVEYgaGFzIGRlbGl2ZXJlZCBmaW5hbCBkcmFmdCBhbmQgcmVwb3J0IHRvIE9NRzwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RXJyb3JzIGRpc2NvdmVyZWQgd2hpbGUgdXNpbmcgdGhlIEFQSSBhbmQvb3IgWE1JIHNjaGVtYSBhcmUgbm93IGJlaW5nCiAgICAgICBmaXhlZCBhbmQgc3VibWl0dGVkIGFzIGlzc3VlcyB0byB0aGUgVU1MmSAyLjAgU3VwZXJzdHJ1Y3R1cmUgYW5kCiAgICAgICBJbmZyYXN0cnVjdHVyZSBSZXZpc2lvbiBUYXNrIEZvcmNlIChSVEYpPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5VTUyZIDIuMCBTdXBlcnN0cnVjdHVyZSBhbmQgSW5mcmFzdHJ1Y3R1cmUgUlRGIGFscmVhZHkgaGFzIGEgbnVtYmVyIG9mCiAgICAgICBvcGVuIGlzc3VlcywgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub21nLm9yZy9pc3N1ZXMvdW1sMi1ydGYub3Blbi5odG1sPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5GaW5hbGl6YXRpb24gZGF0ZSBmb3IgVU1MmSAyLjAgU3BlY2lmaWNhdGlvbiBpcyBUQkQgKHNvb24hKTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjk8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQOSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDU1Lmh0bWwnKTsiIGlkPVBQVEw5PlN0YXR1cyCWIENvbXBsaWFuY2U8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzkgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VmFsaWRhdGlvbiBydWxlcyBldmFsdWF0ZWQgdXNpbmcgRU1GIHZhbGlkYXRvciBtZWNoYW5pc208L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlZhbGlkYXRvcnMgaW1wbGVtZW50ZWQgYmFzZWQgb24gc2V0cyBvZiBPQ0wgY29uc3RyYWludHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkNvcnJlc3BvbmQgdG8gY29tcGxpYW5jZSBsZXZlbHM8L2xpPgogICA8YnI+CiAgIDxicj4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTAgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA1Ni5odG1sJyk7IiBpZD1QUFRMMTA+TWlsZXN0b25lczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTAgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+TWFpbnRlbmFuY2UgcmVsZWFzZSAxLjAuMiB0byBjb2luY2lkZSB3aXRoIEVjbGlwc2UgMy4wLjIgYW5kIEVNRiAyLjAuMjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UmVsZWFzZSAxLjEgdG8gY29pbmNpZGUgd2l0aCBFY2xpcHNlIDMuMSBhbmQgRU1GIDIuMTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UmVsZWFzZSAyLjAgdG8gY29pbmNpZGUgd2l0aCBFY2xpcHNlIDMuMiBhbmQgRU1GIDIueDwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjExPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDExIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNTguaHRtbCcpOyIgaWQ9UFBUTDExPkRldmVsb3BtZW50IFBsYW5zIJYKICAxLjE8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzExIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlRoZW1lOiBSZWxlYXNlIEN1cnJlbmN5PC9saT4KICAgPHVsPgogICAgPGxpPkVjbGlwc2UgMy4xIC8gRU1GIDIuMSBDb21wYXRpYmlsaXR5PC9saT4KICAgPC91bD4KICAgPGJyPgogICA8bGk+VGhlbWU6IEJ1aWx0IFRvIExhc3Q8L2xpPgogICA8dWw+CiAgICA8bGk+TWlncmF0aW9uIEZyYW1ld29yazwvbGk+CiAgICA8bGk+UmVzb3VyY2UgTG9jYWxpemF0aW9uPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTI8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTIgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA2MC5odG1sJyk7IiBpZD1QUFRMMTI+RGV2ZWxvcG1lbnQgUGxhbnMglgogIDEuMSAoQ29udGludWVkKTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTIgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlbWU6IFNpbXBsZSBUbyBVc2U8L2xpPgogICA8dWw+CiAgICA8bGk+VXBkYXRlIFNpdGUgU3VwcG9ydDwvbGk+CiAgICA8bGk+SW5zdGFuY2UgQ3JlYXRpb24gU3VwcG9ydDwvbGk+CiAgICA8bGk+TW9yZSBFeGFtcGxlczwvbGk+CiAgICA8bGk+RU1GIEdlbmVyYXRvciBFeHRlbnNpb25zPC9saT4KICAgIDxsaT5JbXByb3ZlZCBEb2N1bWVudGF0aW9uPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTM8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA1OS5odG1sJyk7IiBpZD1QUFRMMTM+RGV2ZWxvcG1lbnQgUGxhbnMglgogIDIuMDwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTMgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlbWU6IFJlbGVhc2UgQ3VycmVuY3k8L2xpPgogICA8dWw+CiAgICA8bGk+RWNsaXBzZSAzLjIgLyBFTUYgMi54IENvbXBhdGliaWxpdHk8L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT5UaGVtZTogQ29tcGxldGVuZXNzPC9saT4KICAgPHVsPgogICAgPGxpPlVNTJkgMi4wIENvbmZvcm1hbmNlPC9saT4KICAgIDxsaT5VTUyZIDIuMCBJbnRlcmNoYW5nZTwvbGk+CiAgICA8bGk+VmFsaWRhdGlvbiBSdWxlczwvbGk+CiAgICA8bGk+VW5pdCBUZXN0czwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPlRoZW1lOiBCdWlsdCBUbyBMYXN0PC9saT4KICAgPHVsPgogICAgPGxpPlJlZHVjZWQgTWVtb3J5IEZvb3RwcmludDwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE0PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDE0IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNjEuaHRtbCcpOyIgaWQ9UFBUTDE0PkRldmVsb3BtZW50IFBsYW5zIJYKICAyLjAgKENvbnRpbnVlZCk8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzE0IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlRoZW1lOiBTaW1wbGUgVG8gVXNlPC9saT4KICAgPHVsPgogICAgPGxpPlJlc291cmNlIEZyYWdtZW50czwvbGk+CiAgICA8bGk+RGVyaXZlZCBGZWF0dXJlczwvbGk+CiAgICA8bGk+SmF2YWRvYzwvbGk+CiAgICA8bGk+SW1wcm92ZWQgQ29udmVuaWVuY2UgTWV0aG9kczwvbGk+CiAgICA8bGk+RW5oYW5jZWQgSWNvbnM8L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT5UaGVtZTogQnJvYWRlbmluZyBUaGUgQ29tbXVuaXR5PC9saT4KICAgPHVsPgogICAgPGxpPlRvb2xzPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTUgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA1Ny5odG1sJyk7IiBpZD1QUFRMMTU+SG93IENhbiBZb3UgSGVscD88L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzE1IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkRldmVsb3AgdG9vbHMgYmFzZWQgb24gVU1MMjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UmVwb3J0IGJ1Z3M8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlBhcnRpY2lwYXRlIGluIG5ld3Nncm91cCBkaXNjdXNzaW9uczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+V3JpdGUgYXJ0aWNsZXM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkJlY29tZSBhIFVNTDIgY29udHJpYnV0b3IhPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KPC90YWJsZT4KCgoKPC9kaXY+Cgo8ZGl2IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxhIGhyZWY9bWFzdGVyMDguaHRtbD48L2E+PGEgaHJlZj1tYXN0ZXIwOC54bWw+PC9hPjxhCmhyZWY9cHJldmlldy53bWY+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDAxLmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDAyLmpwZyI+PC9hPjxhIGhyZWY9bWFzdGVyMDkuaHRtbD48L2E+PGEKaHJlZj1tYXN0ZXIwOS54bWw+PC9hPjxhIGhyZWY9Im1hc3RlcjA5X2ltYWdlMDAzLmpwZyI+PC9hPjxhCmhyZWY9bWFzdGVyMDIuaHRtbD48L2E+PGEgaHJlZj1wcmVzLnhtbD48L2E+PGEgaHJlZj1lZGl0ZGF0YS5tc28+PC9hPjxhCmhyZWY9c2xpZGUwMDQzLmh0bWw+PC9hPjxhIGhyZWY9Im1hc3RlcjA5X2ltYWdlMDA0LmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA5X2ltYWdlMDA1LmpwZyI+PC9hPjxhIGhyZWY9c2xpZGUwMDQ4Lmh0bWw+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDA2LmpwZyI+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDA3LmdpZiI+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDA4LmpwZyI+PC9hPjxhIGhyZWY9c2xpZGUwMDQ5Lmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDUwLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDUxLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDUyLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDUzLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDU0Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDU1Lmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDU2Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDU4Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDYwLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDU5Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDYxLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDU3Lmh0bWw+PC9hPjxhCmhyZWY9bWFzdGVyMDEuaHRtbD48L2E+PGEgaHJlZj0ibWFzdGVyMDhfc3R5bGVzaGVldC5jc3MiPjwvYT48YSBocmVmPXNjcmlwdC5qcz48L2E+PGEKaHJlZj0iLi4vRWNsaXBzZUNvbjIwMDVfUHJvamVjdFNwcmludC5odG1sIj48L2E+PGEgaHJlZj1mdWxsc2NyZWVuLmh0bWw+PC9hPjxhCmhyZWY9YnV0dG9ucy5naWY+PC9hPjxhIGhyZWY9ZnJhbWUuaHRtbD48L2E+PGEgaHJlZj1vdXRsaW5lLmh0bWw+PC9hPjwvZGl2PgoKPC9ib2R5PgoKPC9odG1sPgo=