play-cljc.gl.core
play-cljc.gl.entities-2d
play-cljc.gl.entities-3d
play-cljc.gl.example-data
play-cljc.gl.example-fonts
play-cljc.gl.example-utils
play-cljc.gl.examples-2d
play-cljc.gl.examples-3d
play-cljc.gl.examples-advanced
play-cljc.gl.examples-text
play-cljc.gl.text
play-cljc.gl.utils
play-cljc.instances
play-cljc.macros-common
play-cljc.macros-java
play-cljc.macros-js
play-cljc.math
play-cljc.primitives-2d
play-cljc.primitives-3d
play-cljc.text
play-cljc.transforms
(game-loop f game)
Source
(
defn
game-loop
[
f
game
]
#?(:clj {:f f, :game game} :cljs (let [game (f game)] (js/requestAnimationFrame (fn [ts] (let [ts (* ts 0.001)] (game-loop f (assoc game :delta-time (- ts (:total-time game)) :total-time ts)))))))
)
ezpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi90eXBlIDpjbGpzLCA6ZHluYWRvYy5jb21tb24vbnNlcyAoezp2YXItc3ltcyBbLT5nYW1lIGNvbXBpbGUgcmVuZGVyXSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmNvcmV9IHs6dmFyLXN5bXMgWy0+Y2FtZXJhIC0+ZW50aXR5IC0+aW1hZ2UtZW50aXR5XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmVudGl0aWVzLTJkfSB7OnZhci1zeW1zIFstPmNhbWVyYSAtPmVudGl0eV0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZH0gezp2YXItc3ltcyBbYWR2YW5jZWQtdmVydGV4LXNoYWRlciBmLTNkIHRleHR1cmUtZnJhZ21lbnQtc2hhZGVyIGYtMmQgZi10ZXhjb29yZHMgZi0zZC1jb2xvcnMgdGV4dHVyZS12ZXJ0ZXgtc2hhZGVyIGFkdmFuY2VkLWZyYWdtZW50LXNoYWRlciBjdWJlLXRleGNvb3JkcyBjdWJlXSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGUtZGF0YX0gezp2YXItc3ltcyBbYml0bWFwcyBmb250LWhlaWdodCBiYWtlZC1mb250cyBiaXRtYXAtc2l6ZSBsb2FkLWZvbnQtY2xqcyBsb2FkLWZvbnQtY2xqXSwgOnR5cGUgOmNsaiwgOnN5bSBwbGF5LWNsamMuZ2wuZXhhbXBsZS1mb250c30gezp2YXItc3ltcyBbdGV4dHVyZXMgbGlzdGVuLWZvci1tb3VzZSBnZXQtc2l6ZSBnZXQtd2lkdGggY29zIHJlc2l6ZS1leGFtcGxlIGdldC1pbWFnZSBnZXQtaGVpZ2h0IFBJIGluaXQtZXhhbXBsZSBnYW1lLWxvb3Agc2luXSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHN9IHs6dmFyLXN5bXMgW3JhbmQtcmVjdHMtZXhhbXBsZSBpbWFnZS1leGFtcGxlIHRyYW5zbGF0aW9uLWV4YW1wbGUgcm90YXRpb24tZXhhbXBsZSBzY2FsZS1leGFtcGxlIHJvdGF0aW9uLW11bHRpLWV4YW1wbGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmR9IHs6dmFyLXN5bXMgW3NjYWxlLTNkLWV4YW1wbGUgcGVyc3BlY3RpdmUtdGV4dHVyZS1tZXRhLTNkLWV4YW1wbGUgcGVyc3BlY3RpdmUtdGV4dHVyZS1kYXRhLTNkLWV4YW1wbGUgcGVyc3BlY3RpdmUtM2QtZXhhbXBsZSByb3RhdGlvbi0zZC1leGFtcGxlIHBlcnNwZWN0aXZlLXRleHR1cmUtM2QtZXhhbXBsZSBwZXJzcGVjdGl2ZS1jYW1lcmEtdGFyZ2V0LTNkLWV4YW1wbGUgdHJhbnNsYXRpb24tM2QtZXhhbXBsZSBwZXJzcGVjdGl2ZS1jYW1lcmEtM2QtZXhhbXBsZSBwZXJzcGVjdGl2ZS1hbmltYXRpb24tM2QtZXhhbXBsZV0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZH0gezp2YXItc3ltcyBbY3Jlc2NlbnQtM2QtaW5pdCBiYWxscy0zZCBwbGFuZXMtM2QtaW5pdCBwbGFuZXMtM2QgZGlzYy0zZC1pbml0IGFkdmFuY2VkLXJlbmRlciBjdWJlcy0zZC1pbml0IGN1YmVzLTNkIGN5bGluZGVyLTNkIHRvcnVzLTNkIGNyZXNjZW50LTNkIGJhbGxzLTNkLWluaXQgc2hhcGUtZW50aXR5IGN5bGluZGVyLTNkLWluaXQgZGlzYy0zZCB0b3J1cy0zZC1pbml0XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkfSB7OnZhci1zeW1zIFtsb2FkLXJvYm90byBpbml0XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGVzLXRleHR9IHs6dmFyLXN5bXMgWy0+Zm9udC1lbnRpdHkgLT50ZXh0LWVudGl0eV0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5nbC50ZXh0fSB7OnZhci1zeW1zIFtjcmVhdGUtYnVmZmVyIGZsb2F0LXNpemUgY3JlYXRlLXByb2dyYW0gbWVyZ2UtYXR0cmlidXRlLW9wdHMgc2V0LWFycmF5LWJ1ZmZlciBnZXQtYXR0cmlidXRlLXR5cGUgZGVmYXVsdC1vcHRzIGdldC11bmlmb3JtLXR5cGUgdHlwZS0+YXR0cmlidXRlLW9wdHMgZGlzc29jLWluc3RhbmNlLWF0dHIgZ2V0LWF0dHJpYnV0ZS1uYW1lcyBhc3NvYy1pbnN0YW5jZS1hdHRyIHNldC1pbmRleC1idWZmZXJdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMuZ2wudXRpbHN9IHs6dmFyLXN5bXMgWy0+aW5zdGFuY2VkLWVudGl0eSBJSW5zdGFuY2UgYXNzb2MgZGlzc29jIElJbnN0YW5jZWRdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMuaW5zdGFuY2VzfSB7OnZhci1zeW1zIFttdWwtbWF0LWZuIGludi1tYXQtZm5dLCA6dHlwZSA6Y2xqLCA6c3ltIHBsYXktY2xqYy5tYWNyb3MtY29tbW9ufSB7OnZhci1zeW1zIFttYXRoIHRyYW5zZm9ybSBnbF0sIDp0eXBlIDpjbGosIDpzeW0gcGxheS1jbGpjLm1hY3Jvcy1qYXZhfSB7OnZhci1zeW1zIFttYXRoIHRyYW5zZm9ybSBnbF0sIDp0eXBlIDpjbGosIDpzeW0gcGxheS1jbGpjLm1hY3Jvcy1qc30gezp2YXItc3ltcyBbaW52ZXJzZS1tYXRyaXggaWRlbnRpdHktbWF0cml4IHZlY3Rvci0+YXJyYXkgZGVnLT5yYWQgdHJhbnNmb3JtLXZlY3RvciB4LXJvdGF0aW9uLW1hdHJpeC0zZCBwZXJzcGVjdGl2ZS1tYXRyaXgtM2Qgc2NhbGluZy1tYXRyaXggei1yb3RhdGlvbi1tYXRyaXgtM2Qgcm90YXRpb24tbWF0cml4IHRyYW5zbGF0aW9uLW1hdHJpeCB0cmFuc2xhdGlvbi1tYXRyaXgtM2QgcHJvamVjdGlvbi1tYXRyaXggbXVsdGlwbHktbWF0cmljZXMtM2QgaW52ZXJzZS1tYXRyaXgtM2QgdmVjdG9yLT4yZC1hcnJheSBsb29rLWF0LW1hdHJpeCBtdWx0aXBseS1tYXRyaWNlcyBvcnRoby1tYXRyaXgtM2QgbG9vay1hdC1tYXRyaXgtM2QgeS1yb3RhdGlvbi1tYXRyaXgtM2Qgc2NhbGluZy1tYXRyaXgtM2QgdHJhbnNwb3NlLW1hdHJpeC0zZF0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5tYXRofSB7OnZhci1zeW1zIFtyZWN0XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLnByaW1pdGl2ZXMtMmR9IHs6dmFyLXN5bXMgW3BsYW5lIHNwaGVyZSBjdWJlLWZhY2UtaW5kaWNlcyBjdWJlIGN5bGluZGVyIGNyZXNjZW50IHRvcnVzIGRpc2NdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMucHJpbWl0aXZlcy0zZH0gezp2YXItc3ltcyBbLT5iYWtlZC1mb250IC0+Yml0bWFwIGJpdG1hcC0+ZGF0YS11cmldLCA6dHlwZSA6Y2xqLCA6c3ltIHBsYXktY2xqYy50ZXh0fSB7OnZhci1zeW1zIFtJUm90YXRlIGNyb3AgSUludmVydCBpbnZlcnQgbG9vay1hdCBJQ2FtZXJhIHRyYW5zZm9ybSBjb2xvciBJU2NhbGUgc2NhbGUgSVByb2plY3QgSUNvbG9yIElDcm9wIHByb2plY3QgSVRyYW5zbGF0ZSBwYXJzZSByb3RhdGUgdHJhbnNmb3JtLWVudGl0eSBjYW1lcmEgdHJhbnNsYXRlIElMb29rQXRdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMudHJhbnNmb3Jtc30pLCA6ZHluYWRvYy5jb21tb24vdmFycyBbezpzeW0gZ2FtZS1sb29wLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2YgZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnYW1lLWxvb3BcbiBbZiBnYW1lXVxuICM/KDpjbGogezpmIGYsIDpnYW1lIGdhbWV9IDpjbGpzIChsZXQgW2dhbWUgKGYgZ2FtZSldIChqcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKGZuIFt0c10gKGxldCBbdHMgKCogdHMgMC4wMDEpXSAoZ2FtZS1sb29wIGYgKGFzc29jIGdhbWUgOmRlbHRhLXRpbWUgKC0gdHMgKDp0b3RhbC10aW1lIGdhbWUpKSA6dG90YWwtdGltZSB0cykpKSkpKSkpXG4ifV0sIDpkeW5hZG9jLmNvbW1vbi9ucy1tZXRhIG5pbCwgOmR5bmFkb2MuY29tbW9uL25zLXN5bSBwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscywgOmR5bmFkb2MuY29tbW9uL3JlbC1wYXRoICIuLi8uLi8iLCA6ZHluYWRvYy5jb21tb24vaGlkZS1iYWRnZT8gdHJ1ZSwgOmR5bmFkb2MuY29tbW9uL2NsanMtbnNlcy1hbmQtdmFycyB7ZXZhbC1zb3VwLmNvcmUgKHs6c3ltIGNvZGUtPnJlc3VsdHMsIDptZXRhIHs6ZG9jICJFdmFsdWF0ZXMgZWFjaCBmb3JtLCBwcm92aWRpbmcgdGhlIHJlc3VsdHMgaW4gYSBjYWxsYmFjay5cbiAgSWYgYW55IG9mIHRoZSBmb3JtcyBhcmUgc3RyaW5ncywgaXQgd2lsbCByZWFkIHRoZW0gZmlyc3QuIiwgOmFyZ2xpc3RzIFtbZm9ybXMgY2JdIFtmb3JtcyBjYiB7OmtleXMgWypjdXJyZW50LW5zICpzdGF0ZSBjdXN0b20tbG9hZCB0aW1lb3V0IGRpc2FibGUtdGltZW91dD9dLCA6b3IgeypjdXJyZW50LW5zIChhdG9tIChxdW90ZSBjbGpzLnVzZXIpKSwgKnN0YXRlICpjbGpzLXN0YXRlLCBjdXN0b20tbG9hZCBjdXN0b20tbG9hZCEsIHRpbWVvdXQgNDAwMCwgZGlzYWJsZS10aW1lb3V0PyBmYWxzZX0sIDphcyBvcHRzfV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2RlLT5yZXN1bHRzXG4gXCJFdmFsdWF0ZXMgZWFjaCBmb3JtLCBwcm92aWRpbmcgdGhlIHJlc3VsdHMgaW4gYSBjYWxsYmFjay5cXG4gIElmIGFueSBvZiB0aGUgZm9ybXMgYXJlIHN0cmluZ3MsIGl0IHdpbGwgcmVhZCB0aGVtIGZpcnN0LlwiXG4gKFtmb3JtcyBjYl0gKGNvZGUtPnJlc3VsdHMgZm9ybXMgY2Ige30pKVxuIChbZm9ybXNcbiAgIGNiXG4gICB7OmtleXMgWypjdXJyZW50LW5zICpzdGF0ZSBjdXN0b20tbG9hZCB0aW1lb3V0IGRpc2FibGUtdGltZW91dD9dLFxuICAgIDpvclxuICAgIHsqY3VycmVudC1ucyAoYXRvbSAnY2xqcy51c2VyKSxcbiAgICAgKnN0YXRlICpjbGpzLXN0YXRlLFxuICAgICBjdXN0b20tbG9hZCBjdXN0b20tbG9hZCEsXG4gICAgIHRpbWVvdXQgNDAwMCxcbiAgICAgZGlzYWJsZS10aW1lb3V0PyBmYWxzZX0sXG4gICAgOmFzIG9wdHN9XVxuICAobGV0XG4gICBbZm9ybXNcbiAgICAobWFwdlxuICAgICAoZm4qXG4gICAgICBbcDFfXzQ1NDY5I11cbiAgICAgIChpZlxuICAgICAgIChzdHJpbmc/IHAxX180NTQ2OSMpXG4gICAgICAgKHN0ci0+Zm9ybSBAKmN1cnJlbnQtbnMgcDFfXzQ1NDY5IylcbiAgICAgICBwMV9fNDU0NjkjKSlcbiAgICAgZm9ybXMpXG4gICAgaW5pdC1mb3Jtc1xuICAgICh2ZWNcbiAgICAgKGNvbmNhdFxuICAgICAgWycobnMgY2xqcy51c2VyKV1cbiAgICAgICh3aGVuLW5vdFxuICAgICAgIGRpc2FibGUtdGltZW91dD9cbiAgICAgICBbJyhkZWYgcHMtbGFzdC10aW1lIChhdG9tIDApKVxuICAgICAgICAnKGRlZm5cbiAgICAgICAgICBwcy1yZXNldC10aW1lb3V0IVxuICAgICAgICAgIFtdXG4gICAgICAgICAgKHJlc2V0ISBwcy1sYXN0LXRpbWUgKC5nZXRUaW1lIChqcy9EYXRlLikpKSlcbiAgICAgICAgJyhkZWZuXG4gICAgICAgICAgcHMtY2hlY2stZm9yLXRpbWVvdXQhXG4gICAgICAgICAgW3RpbWVvdXRdXG4gICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgKD4gKC0gKC5nZXRUaW1lIChqcy9EYXRlLikpIEBwcy1sYXN0LXRpbWUpIHRpbWVvdXQpXG4gICAgICAgICAgICh0aHJvdyAoanMvRXJyb3IuIFwiRXhlY3V0aW9uIHRpbWVkIG91dC5cIikpKSldKVxuICAgICAgWycoc2V0ISAqcHJpbnQtZXJyLWZuKiAoZm4gW19dKSkgKGxpc3QgJ25zIEAqY3VycmVudC1ucyldKSlcbiAgICB0aW1lb3V0LWNiXG4gICAgKGZuXG4gICAgIFtyZXN1bHRzXVxuICAgICAoZXZhbC1mb3Jtc1xuICAgICAgKGFkZC10aW1lb3V0cy1pZi1uZWNlc3NhcnkgdGltZW91dCBmb3JtcyByZXN1bHRzKVxuICAgICAgY2JcbiAgICAgICpzdGF0ZVxuICAgICAgKmN1cnJlbnQtbnNcbiAgICAgIGN1c3RvbS1sb2FkKSlcbiAgICBpbml0LWNiXG4gICAgKGZuXG4gICAgIFtyZXN1bHRzXVxuICAgICAoZXZhbC1mb3Jtc1xuICAgICAgKGlmIGRpc2FibGUtdGltZW91dD8gZm9ybXMgKG1hcCB3cmFwLW1hY3JvZXhwYW5kIGZvcm1zKSlcbiAgICAgIChpZiBkaXNhYmxlLXRpbWVvdXQ/IGNiIHRpbWVvdXQtY2IpXG4gICAgICAqc3RhdGVcbiAgICAgICpjdXJyZW50LW5zXG4gICAgICBjdXN0b20tbG9hZCkpXVxuICAgKGV2YWwtZm9ybXMgaW5pdC1mb3JtcyBpbml0LWNiICpzdGF0ZSAqY3VycmVudC1ucyBjdXN0b20tbG9hZCkpKSlcbiJ9KSwgY2xqcy5jb21waWxlciAoezpzeW0gcHJvdG9jb2wtcHJlZml4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvdG9jb2wtcHJlZml4XG4gW3BzeW1dXG4gKHN5bWJvbFxuICAoc3RyXG4gICAoLT5cbiAgICAoc3RyIHBzeW0pXG4gICAgKC5yZXBsYWNlICM/KDpjbGogXFwuIDpjbGpzIChqcy9SZWdFeHAuIFwiXFxcXC5cIiBcImdcIikpIFxcJClcbiAgICAoLnJlcGxhY2UgXFwvIFxcJCkpXG4gICBcIiRcIikpKVxuIn0gezpzeW0gZW1pdC1hcmd1bWVudHMtdG8tYXJyYXksIDptZXRhIHs6ZG9jICJFbWl0IGNvZGUgdGhhdCBjb3BpZXMgZnVuY3Rpb24gYXJndW1lbnRzIGludG8gYW4gYXJyYXkgc3RhcnRpbmcgYXQgYW4gaW5kZXguXG4gIFJldHVybnMgbmFtZSBvZiB2YXIgaG9sZGluZyB0aGUgYXJyYXkuIiwgOmFyZ2xpc3RzIChbc3RhcnRzbGljZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWFyZ3VtZW50cy10by1hcnJheVxuIFwiRW1pdCBjb2RlIHRoYXQgY29waWVzIGZ1bmN0aW9uIGFyZ3VtZW50cyBpbnRvIGFuIGFycmF5IHN0YXJ0aW5nIGF0IGFuIGluZGV4LlxcbiAgUmV0dXJucyBuYW1lIG9mIHZhciBob2xkaW5nIHRoZSBhcnJheS5cIlxuIFtzdGFydHNsaWNlXVxuIChhc3NlcnQgKGFuZCAoPj0gc3RhcnRzbGljZSAwKSAoaW50ZWdlcj8gc3RhcnRzbGljZSkpKVxuIChsZXRcbiAgW21uYW1lIChtdW5nZSAoZ2Vuc3ltKSkgaSAoc3RyIG1uYW1lIFwiX19pXCIpIGEgKHN0ciBtbmFtZSBcIl9fYVwiKV1cbiAgKGVtaXRsblxuICAgXCJ2YXIgXCJcbiAgIGlcbiAgIFwiID0gMCwgXCJcbiAgIGFcbiAgIFwiID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAgXCJcbiAgIHN0YXJ0c2xpY2VcbiAgIFwiKTtcIilcbiAgKGVtaXRsblxuICAgXCJ3aGlsZSAoXCJcbiAgIGlcbiAgIFwiIDwgXCJcbiAgIGFcbiAgIFwiLmxlbmd0aCkge1wiXG4gICBhXG4gICBcIltcIlxuICAgaVxuICAgXCJdID0gYXJndW1lbnRzW1wiXG4gICBpXG4gICBcIiArIFwiXG4gICBzdGFydHNsaWNlXG4gICBcIl07ICsrXCJcbiAgIGlcbiAgIFwiO31cIilcbiAgYSkpXG4ifSB7OnN5bSBlbWl0LWpzLW9iamVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBlbWl0LWpzLW9iamVjdC12YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1qcy1vYmplY3RcbiBbaXRlbXMgZW1pdC1qcy1vYmplY3QtdmFsXVxuIChlbWl0cyBcIih7XCIpXG4gKHdoZW4tbGV0XG4gIFtpdGVtcyAoc2VxIGl0ZW1zKV1cbiAgKGxldFxuICAgW1tbayB2XSAmIHJdIGl0ZW1zXVxuICAgKGVtaXRzIFwiXFxcIlwiIChuYW1lIGspIFwiXFxcIjogXCIgKGVtaXQtanMtb2JqZWN0LXZhbCB2KSlcbiAgIChkb3NlcVxuICAgIFtbayB2XSByXVxuICAgIChlbWl0cyBcIiwgXFxcIlwiIChuYW1lIGspIFwiXFxcIjogXCIgKGVtaXQtanMtb2JqZWN0LXZhbCB2KSkpKSlcbiAoZW1pdHMgXCJ9KVwiKSlcbiJ9IHs6c3ltIGRpc3RpbmN0LWtleXM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3Qta2V5cz9cbiBba2V5c11cbiAobGV0XG4gIFtrZXlzIChtYXAgYW5hL3Vud3JhcC1xdW90ZSBrZXlzKV1cbiAgKGFuZFxuICAgKGV2ZXJ5PyAoZm4qIFtwMV9fNDUyNjkjXSAoPSAoOm9wIHAxX180NTI2OSMpIDpjb25zdCkpIGtleXMpXG4gICAoPSAoY291bnQgKGludG8gI3t9IGtleXMpKSAoY291bnQga2V5cykpKSkpXG4ifSB7OnN5bSBtdW5nZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tzXSBbcyByZXNlcnZlZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZVxuIChbc10gKG11bmdlIHMganMtcmVzZXJ2ZWQpKVxuIChbcyByZXNlcnZlZF1cbiAgKGlmXG4gICAjPyg6Y2xqIChtYXA/IHMpIDpjbGpzIChhbmEuaW1wbC9jbGpzLW1hcD8gcykpXG4gICAobGV0XG4gICAgW25hbWUtdmFyXG4gICAgIHNcbiAgICAgbmFtZVxuICAgICAoOm5hbWUgbmFtZS12YXIpXG4gICAgIGZpZWxkXG4gICAgICg6ZmllbGQgbmFtZS12YXIpXG4gICAgIGluZm9cbiAgICAgKDppbmZvIG5hbWUtdmFyKV1cbiAgICAoaWYtbm90XG4gICAgIChuaWw/ICg6Zm4tc2VsZi1uYW1lIGluZm8pKVxuICAgICAoZm4tc2VsZi1uYW1lIHMpXG4gICAgIChsZXRcbiAgICAgIFtkZXB0aFxuICAgICAgIChzaGFkb3ctZGVwdGggcylcbiAgICAgICBjb2RlXG4gICAgICAgKGhhc2gtc2NvcGUgcylcbiAgICAgICByZW5hbWVkXG4gICAgICAgKGdldCAqbGV4aWNhbC1yZW5hbWVzKiBjb2RlKVxuICAgICAgIG5hbWVcbiAgICAgICAoY29uZFxuICAgICAgICAodHJ1ZT8gZmllbGQpXG4gICAgICAgIChzdHIgXCJzZWxmX18uXCIgbmFtZSlcbiAgICAgICAgKG5vdCAobmlsPyByZW5hbWVkKSlcbiAgICAgICAgcmVuYW1lZFxuICAgICAgICA6ZWxzZVxuICAgICAgICBuYW1lKVxuICAgICAgIG11bmdlZC1uYW1lXG4gICAgICAgKG11bmdlIG5hbWUgcmVzZXJ2ZWQpXVxuICAgICAgKGlmXG4gICAgICAgKG9yICh0cnVlPyBmaWVsZCkgKHplcm8/IGRlcHRoKSlcbiAgICAgICBtdW5nZWQtbmFtZVxuICAgICAgIChzeW1ib2wgKHN0ciBtdW5nZWQtbmFtZSBcIl9fJFwiIGRlcHRoKSkpKSkpXG4gICAobGV0XG4gICAgW3NzXG4gICAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIHMpIFwiLi5cIiBcIl9ET1RfX0RPVF9cIilcbiAgICAgc3NcbiAgICAgKHN0cmluZy9yZXBsYWNlXG4gICAgICBzc1xuICAgICAgIz8oOmNsaiAjXCJcXC8oLilcIiA6Y2xqcyAoanMvUmVnRXhwLiBcIlxcXFwvKC4pXCIpKVxuICAgICAgXCIuJDFcIilcbiAgICAgcmZcbiAgICAgKG11bmdlLXJlc2VydmVkIHJlc2VydmVkKVxuICAgICBzc1xuICAgICAobWFwIHJmIChzdHJpbmcvc3BsaXQgc3MgI1wiXFwuXCIpKVxuICAgICBzc1xuICAgICAoc3RyaW5nL2pvaW4gXCIuXCIgc3MpXG4gICAgIG1zXG4gICAgICM/KDpjbGogKGNsb2p1cmUubGFuZy5Db21waWxlci9tdW5nZSBzcykgOmNsanMgKCh2YXIgY2xqcy5jb3JlL211bmdlLXN0cikgc3MpKV1cbiAgICAoaWYgKHN5bWJvbD8gcykgKHN5bWJvbCBtcykgbXMpKSkpKVxuIn0gezpzeW0gZ2V0LWRlZmluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttbmFtZSBqc2RvY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZGVmaW5lXG4gW21uYW1lIGpzZG9jXVxuIChsZXRcbiAgW29wdHMgKGdldCBAZW52Lypjb21waWxlciogOm9wdGlvbnMpXVxuICAoYW5kXG4gICAoc29tZVxuICAgICM/KDpjbGogKGZuKiBbcDFfXzQ1Mjc0I10gKC5zdGFydHNXaXRoIHAxX180NTI3NCMgXCJAZGVmaW5lXCIpKSA6Y2xqcyAoZm4qIFtwMV9fNDUyNzUjXSAoZ3N0cmluZy9zdGFydHNXaXRoIHAxX180NTI3NSMgXCJAZGVmaW5lXCIpKSlcbiAgICBqc2RvYylcbiAgIG9wdHNcbiAgICg9ICg6b3B0aW1pemF0aW9ucyBvcHRzKSA6bm9uZSlcbiAgIChsZXRcbiAgICBbZGVmaW5lIChnZXQtaW4gb3B0cyBbOmNsb3N1cmUtZGVmaW5lcyAoc3RyIG1uYW1lKV0pXVxuICAgICh3aGVuICh2YWxpZC1kZWZpbmUtdmFsdWU/IGRlZmluZSkgKHByLXN0ciBkZWZpbmUpKSkpKSlcbiJ9IHs6c3ltIHZhbGlkLWRlZmluZS12YWx1ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YWxpZC1kZWZpbmUtdmFsdWU/XG4gW3hdXG4gKG9yIChzdHJpbmc/IHgpICh0cnVlPyB4KSAoZmFsc2U/IHgpIChudW1iZXI/IHgpKSlcbiJ9IHs6c3ltIGVtaXQtc2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcCBkaXN0aW5jdC1jb25zdGFudHM/XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtc2V0XG4gW2l0ZW1zIGNvbW1hLXNlcCBkaXN0aW5jdC1jb25zdGFudHM/XVxuIChjb25kXG4gIChlbXB0eT8gaXRlbXMpXG4gIChlbWl0cyBcImNsanMuY29yZS5QZXJzaXN0ZW50SGFzaFNldC5FTVBUWVwiKVxuICAoZGlzdGluY3QtY29uc3RhbnRzPyBpdGVtcylcbiAgKGVtaXRzXG4gICBcIm5ldyBjbGpzLmNvcmUuUGVyc2lzdGVudEhhc2hTZXQobnVsbCwgbmV3IGNsanMuY29yZS5QZXJzaXN0ZW50QXJyYXlNYXAobnVsbCwgXCJcbiAgIChjb3VudCBpdGVtcylcbiAgIFwiLCBbXCJcbiAgIChjb21tYS1zZXAgKGludGVybGVhdmUgaXRlbXMgKHJlcGVhdCBcIm51bGxcIikpKVxuICAgXCJdLCBudWxsKSwgbnVsbClcIilcbiAgOmVsc2VcbiAgKGVtaXRzXG4gICBcImNsanMuY29yZS5QZXJzaXN0ZW50SGFzaFNldC5jcmVhdGVBc0lmQnlBc3NvYyhbXCJcbiAgIChjb21tYS1zZXAgaXRlbXMpXG4gICBcIl0pXCIpKSlcbiJ9IHs6c3ltIGVtaXRzLWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba3ddKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdHMta2V5d29yZFxuIFtrd11cbiAobGV0XG4gIFtucyAobmFtZXNwYWNlIGt3KSBuYW1lIChuYW1lIGt3KV1cbiAgKGVtaXRzIFwibmV3IGNsanMuY29yZS5LZXl3b3JkKFwiKVxuICAoZW1pdC1jb25zdGFudCBucylcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCBuYW1lKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IChpZiBucyAoc3RyIG5zIFwiL1wiIG5hbWUpIG5hbWUpKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IChoYXNoIGt3KSlcbiAgKGVtaXRzIFwiKVwiKSkpXG4ifSB7OnN5bSAqbGV4aWNhbC1yZW5hbWVzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxleGljYWwtcmVuYW1lcyoge30pXG4ifSB7OnN5bSBlbWl0LWxldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7ZXhwciA6Ym9keSwgOmtleXMgW2JpbmRpbmdzIGVudl19IGlzLWxvb3BdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1sZXRcbiBbe2V4cHIgOmJvZHksIDprZXlzIFtiaW5kaW5ncyBlbnZdfSBpcy1sb29wXVxuIChsZXRcbiAgW2NvbnRleHQgKDpjb250ZXh0IGVudildXG4gICh3aGVuICg9IDpleHByIGNvbnRleHQpIChlbWl0cyBcIihmdW5jdGlvbiAoKXtcIikpXG4gIChiaW5kaW5nXG4gICBbKmxleGljYWwtcmVuYW1lcypcbiAgICAoaW50b1xuICAgICAqbGV4aWNhbC1yZW5hbWVzKlxuICAgICAod2hlblxuICAgICAgKD0gOnN0YXRlbWVudCBjb250ZXh0KVxuICAgICAgKG1hcFxuICAgICAgIChmblxuICAgICAgICBbYmluZGluZ11cbiAgICAgICAgKGxldFxuICAgICAgICAgW25hbWUgKDpuYW1lIGJpbmRpbmcpXVxuICAgICAgICAgKHZlY3RvciAoaGFzaC1zY29wZSBiaW5kaW5nKSAoZ2Vuc3ltIChzdHIgbmFtZSBcIi1cIikpKSkpXG4gICAgICAgYmluZGluZ3MpKSldXG4gICAoZG9zZXFcbiAgICBbezprZXlzIFtpbml0XSwgOmFzIGJpbmRpbmd9IGJpbmRpbmdzXVxuICAgIChlbWl0cyBcInZhciBcIilcbiAgICAoZW1pdCBiaW5kaW5nKVxuICAgIChlbWl0bG4gXCIgPSBcIiBpbml0IFwiO1wiKSlcbiAgICh3aGVuIGlzLWxvb3AgKGVtaXRsbiBcIndoaWxlKHRydWUpe1wiKSlcbiAgIChlbWl0cyBleHByKVxuICAgKHdoZW4gaXMtbG9vcCAoZW1pdGxuIFwiYnJlYWs7XCIpIChlbWl0bG4gXCJ9XCIpKSlcbiAgKHdoZW4gKD0gOmV4cHIgY29udGV4dCkgKGVtaXRzIFwifSkoKVwiKSkpKVxuIn0gezpzeW0gc3VibGliLXNlbGVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdWJsaWJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3VibGliLXNlbGVjdFxuIFtzdWJsaWJdXG4gKHdoZW5cbiAgc3VibGliXG4gIChsZXRcbiAgIFt4cyAoc3RyaW5nL3NwbGl0IHN1YmxpYiAjXCJcXC5cIildXG4gICAoYXBwbHkgc3RyIChtYXAgKGZuKiBbcDFfXzQ1MjgxI10gKHN0ciBcIlsnXCIgcDFfXzQ1MjgxIyBcIiddXCIpKSB4cykpKSkpXG4ifSB7OnN5bSBhbGwtZGlzdGluY3Q/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hzXSl9LCA6c291cmNlICIoZGVmbiBhbGwtZGlzdGluY3Q/IFt4c10gKGFwcGx5IGRpc3RpbmN0PyB4cykpXG4ifSB7OnN5bSBjbGpzLXJlc2VydmVkLWZpbGUtbmFtZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGNsanMtcmVzZXJ2ZWQtZmlsZS1uYW1lcyAje1wiZGVwcy5jbGpzXCJ9KVxuIn0gezpzeW0gYmFzZS10eXBlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBiYXNlLXR5cGVzXG4gI3tcImJvb2xlYW5cIlxuICAgXCJvYmplY3RcIlxuICAgXCIqXCJcbiAgIFwic3RyaW5nXCJcbiAgIFwiT2JqZWN0XCJcbiAgIFwiTnVtYmVyXCJcbiAgIFwibnVsbFwiXG4gICBcIkRhdGVcIlxuICAgXCJudW1iZXJcIlxuICAgXCJTdHJpbmdcIlxuICAgXCJSZWdFeHBcIlxuICAgXCIuLi4qXCJcbiAgIFwiQXJyYXlcIlxuICAgXCJhcnJheVwiXG4gICBcIkJvb2xlYW5cIn0pXG4ifSB7OnN5bSByZXNvbHZlLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS10eXBlXG4gW2VudiB0XVxuIChjb25kXG4gIChnZXQgYmFzZS10eXBlcyB0KVxuICB0XG4gIChnZXQgbWFwcGVkLXR5cGVzIHQpXG4gIChnZXQgbWFwcGVkLXR5cGVzIHQpXG4gICM/KDpjbGogKC5zdGFydHNXaXRoIHQgXCIhXCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdCBcIiFcIikpXG4gIChzdHIgXCIhXCIgKHJlc29sdmUtdHlwZSBlbnYgKHN1YnMgdCAxKSkpXG4gICM/KDpjbGogKC5zdGFydHNXaXRoIHQgXCJ7XCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdCBcIntcIikpXG4gIHRcbiAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdCBcImZ1bmN0aW9uXCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdCBcImZ1bmN0aW9uXCIpKVxuICAobGV0XG4gICBbaWR4XG4gICAgKC5sYXN0SW5kZXhPZiB0IFwiOlwiKVxuICAgIFtmc3RyIHJzdHJdXG4gICAgKGlmLW5vdFxuICAgICAoPT0gLTEgaWR4KVxuICAgICBbKHN1YnMgdCAwIGlkeCkgKHN1YnMgdCAoaW5jIGlkeCkgKGNvdW50IHQpKV1cbiAgICAgW3QgbmlsXSlcbiAgICByZXQtdFxuICAgICh3aGVuIHJzdHIgKHJlc29sdmUtdHlwZSBlbnYgcnN0cikpXG4gICAgYXhzdHJcbiAgICAoc3VicyBmc3RyIDkgKGRlYyAoY291bnQgZnN0cikpKVxuICAgIGFyZ3MtdHNcbiAgICAod2hlbi1ub3RcbiAgICAgKHN0cmluZy9ibGFuaz8gYXhzdHIpXG4gICAgIChtYXBcbiAgICAgIChjb21wXG4gICAgICAgKGZuKiBbcDFfXzQ1MjcxI10gKHJlc29sdmUtdHlwZSBlbnYgcDFfXzQ1MjcxIykpXG4gICAgICAgc3RyaW5nL3RyaW0pXG4gICAgICAoc3RyaW5nL3NwbGl0IGF4c3RyICNcIixcIikpKV1cbiAgIChjb25kLT5cbiAgICAoc3RyIFwiZnVuY3Rpb24oXCIgKHN0cmluZy9qb2luIFwiLFwiIGFyZ3MtdHMpIFwiKVwiKVxuICAgIHJldC10XG4gICAgKHN0ciBcIjpcIiByZXQtdCkpKVxuICAjPyg6Y2xqICguZW5kc1dpdGggdCBcIj1cIikgOmNsanMgKGdzdHJpbmcvZW5kc1dpdGggdCBcIj1cIikpXG4gIChzdHIgKHJlc29sdmUtdHlwZSBlbnYgKHN1YnMgdCAwIChkZWMgKGNvdW50IHQpKSkpIFwiPVwiKVxuICA6ZWxzZVxuICAobXVuZ2UgKHN0ciAoOm5hbWUgKGFuYS9yZXNvbHZlLXZhciBlbnYgKHN5bWJvbCB0KSkpKSkpKVxuIn0gezpzeW0gKnNvdXJjZS1tYXAtZGF0YS1nZW4tY29sKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnNvdXJjZS1tYXAtZGF0YS1nZW4tY29sKiBuaWwpXG4ifSB7OnN5bSBlbWl0LXdpdGgtbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHByIG1ldGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC13aXRoLW1ldGFcbiBbZXhwciBtZXRhXVxuIChlbWl0cyBcImNsanMuY29yZS53aXRoX21ldGEoXCIgZXhwciBcIixcIiBtZXRhIFwiKVwiKSlcbiJ9IHs6c3ltIGVtaXQtdmFyaWFkaWMtZm4tbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3tleHByIDpib2R5LCBtYXgtZml4ZWQtYXJpdHkgOmZpeGVkLWFyaXR5LCB2YXJpYWRpYyA6dmFyaWFkaWM/LCA6a2V5cyBbdHlwZSBuYW1lIHBhcmFtcyBlbnYgcmVjdXJzXSwgOmFzIGZ9XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtdmFyaWFkaWMtZm4tbWV0aG9kXG4gW3tleHByIDpib2R5LFxuICAgbWF4LWZpeGVkLWFyaXR5IDpmaXhlZC1hcml0eSxcbiAgIHZhcmlhZGljIDp2YXJpYWRpYz8sXG4gICA6a2V5cyBbdHlwZSBuYW1lIHBhcmFtcyBlbnYgcmVjdXJzXSxcbiAgIDphcyBmfV1cbiAoZW1pdC13cmFwXG4gIGVudlxuICAobGV0XG4gICBbbmFtZVxuICAgIChvciBuYW1lIChnZW5zeW0pKVxuICAgIG1uYW1lXG4gICAgKG11bmdlIG5hbWUpXG4gICAgZGVsZWdhdGUtbmFtZVxuICAgIChzdHIgbW5hbWUgXCJfX2RlbGVnYXRlXCIpXVxuICAgKGVtaXRsbiBcIihmdW5jdGlvbigpIHsgXCIpXG4gICAoZW1pdHMgXCJ2YXIgXCIgZGVsZWdhdGUtbmFtZSBcIiA9IGZ1bmN0aW9uIChcIilcbiAgIChkb3NlcVxuICAgIFtwYXJhbSBwYXJhbXNdXG4gICAgKGVtaXQgcGFyYW0pXG4gICAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKVxuICAgKGVtaXRsbiBcIil7XCIpXG4gICAod2hlbiB0eXBlIChlbWl0bG4gXCJ2YXIgc2VsZl9fID0gdGhpcztcIikpXG4gICAod2hlbiByZWN1cnMgKGVtaXRsbiBcIndoaWxlKHRydWUpe1wiKSlcbiAgIChlbWl0cyBleHByKVxuICAgKHdoZW4gcmVjdXJzIChlbWl0bG4gXCJicmVhaztcIikgKGVtaXRsbiBcIn1cIikpXG4gICAoZW1pdGxuIFwifTtcIilcbiAgIChlbWl0bG5cbiAgICBcInZhciBcIlxuICAgIG1uYW1lXG4gICAgXCIgPSBmdW5jdGlvbiAoXCJcbiAgICAoY29tbWEtc2VwXG4gICAgIChpZiB2YXJpYWRpYyAoY29uY2F0IChidXRsYXN0IHBhcmFtcykgWyd2YXJfYXJnc10pIHBhcmFtcykpXG4gICAgXCIpe1wiKVxuICAgKHdoZW4gdHlwZSAoZW1pdGxuIFwidmFyIHNlbGZfXyA9IHRoaXM7XCIpKVxuICAgKHdoZW5cbiAgICB2YXJpYWRpY1xuICAgIChlbWl0cyBcInZhciBcIilcbiAgICAoZW1pdCAobGFzdCBwYXJhbXMpKVxuICAgIChlbWl0bG4gXCIgPSBudWxsO1wiKVxuICAgIChlbWl0bG4gXCJpZiAoYXJndW1lbnRzLmxlbmd0aCA+IFwiIChkZWMgKGNvdW50IHBhcmFtcykpIFwiKSB7XCIpXG4gICAgKGxldFxuICAgICBbYSAoZW1pdC1hcmd1bWVudHMtdG8tYXJyYXkgKGRlYyAoY291bnQgcGFyYW1zKSkpXVxuICAgICAoZW1pdGxuXG4gICAgICBcIiAgXCJcbiAgICAgIChsYXN0IHBhcmFtcylcbiAgICAgIFwiID0gbmV3IGNsanMuY29yZS5JbmRleGVkU2VxKFwiXG4gICAgICBhXG4gICAgICBcIiwwLG51bGwpO1wiKSlcbiAgICAoZW1pdGxuIFwifSBcIikpXG4gICAoZW1pdHMgXCJyZXR1cm4gXCIgZGVsZWdhdGUtbmFtZSBcIi5jYWxsKHRoaXMsXCIpXG4gICAoZG9zZXFcbiAgICBbcGFyYW0gcGFyYW1zXVxuICAgIChlbWl0IHBhcmFtKVxuICAgICh3aGVuLW5vdCAoPSBwYXJhbSAobGFzdCBwYXJhbXMpKSAoZW1pdHMgXCIsXCIpKSlcbiAgIChlbWl0cyBcIik7XCIpXG4gICAoZW1pdGxuIFwifTtcIilcbiAgIChlbWl0bG4gbW5hbWUgXCIuY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgPSBcIiBtYXgtZml4ZWQtYXJpdHkgXCI7XCIpXG4gICAoZW1pdHMgbW5hbWUgXCIuY2xqcyRsYW5nJGFwcGx5VG8gPSBcIilcbiAgIChlbWl0LWFwcGx5LXRvIChhc3NvYyBmIDpuYW1lIG5hbWUpKVxuICAgKGVtaXRsbiBcIjtcIilcbiAgIChlbWl0bG5cbiAgICBtbmFtZVxuICAgIFwiLmNsanMkY29yZSRJRm4kX2ludm9rZSRhcml0eSR2YXJpYWRpYyA9IFwiXG4gICAgZGVsZWdhdGUtbmFtZVxuICAgIFwiO1wiKVxuICAgKGVtaXRsbiBcInJldHVybiBcIiBtbmFtZSBcIjtcIilcbiAgIChlbWl0bG4gXCJ9KSgpXCIpKSkpXG4ifSB7OnN5bSBqcy1yZXNlcnZlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYganMtcmVzZXJ2ZWQgYW5hL2pzLXJlc2VydmVkKVxuIn0gezpzeW0gKnJlY29tcGlsZWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVjb21waWxlZCogbmlsKVxuIn0gezpzeW0gZW1pdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbYV0gW2EgYl0gW2EgYiBjXSBbYSBiIGMgZF0gW2EgYiBjIGQgZV0gW2EgYiBjIGQgZSAmIHhzXV19LCA6c291cmNlICIoZGVmblxuIGVtaXRzXG4gKFtdKVxuIChbYV1cbiAgKGNvbmRcbiAgIChuaWw/IGEpXG4gICBuaWxcbiAgICM/KDpjbGogKG1hcD8gYSkgOmNsanMgKGFuYS5pbXBsL2NsanMtbWFwPyBhKSlcbiAgIChlbWl0IGEpXG4gICAjPyg6Y2xqIChzZXE/IGEpIDpjbGpzIChhbmEuaW1wbC9jbGpzLXNlcT8gYSkpXG4gICAoYXBwbHkgZW1pdHMgYSlcbiAgICM/KDpjbGogKGZuPyBhKSA6Y2xqcyAoanMtZm4/IGEpKVxuICAgKGEpXG4gICA6ZWxzZVxuICAgKGxldFxuICAgIFtzIChjb25kLT4gYSAobm90IChzdHJpbmc/IGEpKSAudG9TdHJpbmcpXVxuICAgICM/KDpjbGogKHdoZW4tc29tZSBbZ2VuLWNvbCAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqXSAoLmFkZEFuZEdldCBnZW4tY29sICgubGVuZ3RoIHMpKSkgOmNsanMgKHdoZW4tc29tZSBbc20tZGF0YSAqc291cmNlLW1hcC1kYXRhKl0gKHN3YXAhIHNtLWRhdGEgdXBkYXRlIDpnZW4tY29sIChmbiogW3AxX180NTI2NiNdICgrIHAxX180NTI2NiMgKC4tbGVuZ3RoIHMpKSkpKSlcbiAgICAjPyg6Y2xqICgud3JpdGUgKm91dCogcykgOmNsanMgKHByaW50IHMpKSkpXG4gIG5pbClcbiAoW2EgYl0gKGVtaXRzIGEpIChlbWl0cyBiKSlcbiAoW2EgYiBjXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChlbWl0cyBjKSlcbiAoW2EgYiBjIGRdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpIChlbWl0cyBkKSlcbiAoW2EgYiBjIGQgZV0gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykgKGVtaXRzIGQpIChlbWl0cyBlKSlcbiAoW2EgYiBjIGQgZSAmIHhzXVxuICAoZW1pdHMgYSlcbiAgKGVtaXRzIGIpXG4gIChlbWl0cyBjKVxuICAoZW1pdHMgZClcbiAgKGVtaXRzIGUpXG4gIChkb3NlcSBbeCB4c10gKGVtaXRzIHgpKSkpXG4ifSB7OnN5bSBlbWl0LWNvbnN0YW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1jb25zdGFudFxuIFt2XVxuIChsZXRcbiAgW20gKGFuYS9lbGlkZS1pcnJlbGV2YW50LW1ldGEgKG1ldGEgdikpXVxuICAoaWZcbiAgIChzb21lPyAoc2VxIG0pKVxuICAgKGVtaXQtd2l0aC1tZXRhXG4gICAgKGZuKiBbXSAoZW1pdC1jb25zdGFudC1uby1tZXRhIHYpKVxuICAgIChmbiogW10gKGVtaXQtY29uc3RhbnQtbm8tbWV0YSBtKSkpXG4gICAoZW1pdC1jb25zdGFudC1uby1tZXRhIHYpKSkpXG4ifSB7OnN5bSBlbWl0LWRvdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3RhcmdldCBmaWVsZCBtZXRob2QgYXJncyBlbnZdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWRvdFxuIFt7OmtleXMgW3RhcmdldCBmaWVsZCBtZXRob2QgYXJncyBlbnZdfV1cbiAoZW1pdC13cmFwXG4gIGVudlxuICAoaWZcbiAgIGZpZWxkXG4gICAoZW1pdHMgdGFyZ2V0IFwiLlwiIChtdW5nZSBmaWVsZCAje30pKVxuICAgKGVtaXRzIHRhcmdldCBcIi5cIiAobXVuZ2UgbWV0aG9kICN7fSkgXCIoXCIgKGNvbW1hLXNlcCBhcmdzKSBcIilcIikpKSlcbiJ9IHs6c3ltIGVtaXQtY29uc3RhbnRzLXRhYmxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhYmxlXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtY29uc3RhbnRzLXRhYmxlXG4gW3RhYmxlXVxuIChlbWl0bG4gXCJnb29nLnByb3ZpZGUoJ1wiIChtdW5nZSBhbmEvY29uc3RhbnRzLW5zLXN5bSkgXCInKTtcIilcbiAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdjbGpzLmNvcmUnKTtcIilcbiAoZG9zZXFcbiAgW1tzeW0gdmFsdWVdIHRhYmxlXVxuICAobGV0XG4gICBbbnMgKG5hbWVzcGFjZSBzeW0pIG5hbWUgKG5hbWUgc3ltKV1cbiAgIChlbWl0cyBcImNsanMuY29yZS5cIiB2YWx1ZSBcIiA9IFwiKVxuICAgKGNvbmRcbiAgICAoa2V5d29yZD8gc3ltKVxuICAgIChlbWl0cy1rZXl3b3JkIHN5bSlcbiAgICAoc3ltYm9sPyBzeW0pXG4gICAgKGVtaXRzLXN5bWJvbCBzeW0pXG4gICAgOmVsc2VcbiAgICAodGhyb3dcbiAgICAgKGV4LWluZm9cbiAgICAgIChzdHIgXCJDYW5ub3QgZW1pdCBjb25zdGFudCBmb3IgdHlwZSBcIiAodHlwZSBzeW0pKVxuICAgICAgezplcnJvciA6aW52YWxpZC1jb25zdGFudC10eXBlLFxuICAgICAgIDpjbG9qdXJlLmVycm9yL3BoYXNlIDpjb21waWxhdGlvbn0pKSlcbiAgIChlbWl0cyBcIjtcXG5cIikpKSlcbiJ9IHs6c3ltIGVtaXQtbGlzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBjb21tYS1zZXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1saXN0XG4gW2l0ZW1zIGNvbW1hLXNlcF1cbiAoaWZcbiAgKGVtcHR5PyBpdGVtcylcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLkxpc3QuRU1QVFlcIilcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLmxpc3QoXCIgKGNvbW1hLXNlcCBpdGVtcykgXCIpXCIpKSlcbiJ9IHs6c3ltIGdldC1maXJzdC1ucy1zZWdtZW50LCA6bWV0YSB7OmRvYyAiR2V0cyB0aGUgcGFydCB1cCB0byB0aGUgZmlyc3QgYC5gIG9mIGEgbmFtZXNwYWNlLlxuICAgUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nIGZvciBuaWwuXG4gICBSZXR1cm5zIHRoZSBlbnRpcmUgc3RyaW5nIGlmIG5vIGAuYCBpbiBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZmlyc3QtbnMtc2VnbWVudFxuIFwiR2V0cyB0aGUgcGFydCB1cCB0byB0aGUgZmlyc3QgYC5gIG9mIGEgbmFtZXNwYWNlLlxcbiAgIFJldHVybnMgdGhlIGVtcHR5IHN0cmluZyBmb3IgbmlsLlxcbiAgIFJldHVybnMgdGhlIGVudGlyZSBzdHJpbmcgaWYgbm8gYC5gIGluIG5hbWVzcGFjZVwiXG4gW25zXVxuIChsZXRcbiAgW25zIChzdHIgbnMpIGlkeCAoLmluZGV4T2YgbnMgXCIuXCIpXVxuICAoaWYgKD09IC0xIGlkeCkgbnMgKHN1YnMgbnMgMCBpZHgpKSkpXG4ifSB7OnN5bSBlbWl0LWZuLXBhcmFtcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXJhbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1mbi1wYXJhbXNcbiBbcGFyYW1zXVxuIChkb3NlcVxuICBbcGFyYW0gcGFyYW1zXVxuICAoZW1pdCBwYXJhbSlcbiAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKSlcbiJ9IHs6c3ltIG11bmdlLXJlc2VydmVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jlc2VydmVkXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlLXJlc2VydmVkXG4gW3Jlc2VydmVkXVxuIChmbiBbc10gKGlmLW5vdCAobmlsPyAoZ2V0IHJlc2VydmVkIHMpKSAoc3RyIHMgXCIkXCIpIHMpKSlcbiJ9IHs6c3ltIGZuLXNlbGYtbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW25hbWUgaW5mb10sIDphcyBuYW1lLXZhcn1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZm4tc2VsZi1uYW1lXG4gW3s6a2V5cyBbbmFtZSBpbmZvXSwgOmFzIG5hbWUtdmFyfV1cbiAobGV0XG4gIFtuYW1lXG4gICAoc3RyaW5nL3JlcGxhY2UgKHN0ciBuYW1lKSBcIi4uXCIgXCJfRE9UX19ET1RfXCIpXG4gICB7OmtleXMgW25zIGZuLXNjb3BlXX1cbiAgIGluZm9cbiAgIHNjb3BlZC1uYW1lXG4gICAoYXBwbHlcbiAgICBzdHJcbiAgICAoaW50ZXJwb3NlIFwiXyRfXCIgKGNvbmNhdCAobWFwIChjb21wIHN0ciA6bmFtZSkgZm4tc2NvcGUpIFtuYW1lXSkpKV1cbiAgKHN5bWJvbFxuICAgKG11bmdlIChzdHIgKHN0cmluZy9yZXBsYWNlIChzdHIgbnMpIFwiLlwiIFwiJFwiKSBcIiRcIiBzY29wZWQtbmFtZSkpKSkpXG4ifSB7OnN5bSBsb2FkLWxpYnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGlicyBzZWVuIHJlbG9hZHMgZGVwcyBucy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGxvYWQtbGlic1xuIFtsaWJzIHNlZW4gcmVsb2FkcyBkZXBzIG5zLW5hbWVdXG4gKGxldFxuICBbezprZXlzIFtvcHRpb25zIGpzLWRlcGVuZGVuY3ktaW5kZXhdfVxuICAgQGVudi8qY29tcGlsZXIqXG4gICB7OmtleXMgW3RhcmdldCBub2RlanMtcnQgb3B0aW1pemF0aW9uc119XG4gICBvcHRpb25zXG4gICBsb2FkZWQtbGlic1xuICAgKG11bmdlICdjbGpzLmNvcmUuKmxvYWRlZC1saWJzKilcbiAgIGxvYWRlZC1saWJzLXRlbXBcbiAgIChtdW5nZSAoZ2Vuc3ltICdjbGpzLmNvcmUuKmxvYWRlZC1saWJzKikpXG4gICBbbm9kZS1saWJzIGxpYnMtdG8tbG9hZF1cbiAgIChsZXRcbiAgICBbbGlicyAocmVtb3ZlIChzZXQgKHZhbHMgc2VlbikpIChmaWx0ZXIgKHNldCAodmFscyBsaWJzKSkgZGVwcykpXVxuICAgIChpZlxuICAgICAoPSA6bm9kZWpzIHRhcmdldClcbiAgICAgKGxldFxuICAgICAgW3tub2RlLWxpYnMgdHJ1ZSwgbGlicy10by1sb2FkIGZhbHNlfVxuICAgICAgIChncm91cC1ieSBhbmEvbm9kZS1tb2R1bGUtZGVwPyBsaWJzKV1cbiAgICAgIFtub2RlLWxpYnMgbGlicy10by1sb2FkXSlcbiAgICAgW25pbCBsaWJzXSkpXG4gICBbZ29vZy1tb2R1bGVzIGxpYnMtdG8tbG9hZF1cbiAgIChsZXRcbiAgICBbe2dvb2ctbW9kdWxlcyB0cnVlLCBsaWJzLXRvLWxvYWQgZmFsc2V9XG4gICAgIChncm91cC1ieSBhbmEvZ29vZy1tb2R1bGUtZGVwPyBsaWJzLXRvLWxvYWQpXVxuICAgIFtnb29nLW1vZHVsZXMgbGlicy10by1sb2FkXSlcbiAgIGdsb2JhbC1leHBvcnRzLWxpYnNcbiAgIChmaWx0ZXIgYW5hL2RlcC1oYXMtZ2xvYmFsLWV4cG9ydHM/IGxpYnMtdG8tbG9hZCldXG4gICh3aGVuXG4gICAoLT4gbGlicyBtZXRhIDpyZWxvYWQtYWxsKVxuICAgKGVtaXRsblxuICAgIFwiaWYoIUNPTVBJTEVEKSBcIlxuICAgIGxvYWRlZC1saWJzLXRlbXBcbiAgICBcIiA9IFwiXG4gICAgbG9hZGVkLWxpYnNcbiAgICBcIiB8fCBjbGpzLmNvcmUuc2V0KFtcXFwiY2xqcy5jb3JlXFxcIl0pO1wiKVxuICAgKGVtaXRsblxuICAgIFwiaWYoIUNPTVBJTEVEKSBcIlxuICAgIGxvYWRlZC1saWJzXG4gICAgXCIgPSBjbGpzLmNvcmUuc2V0KFtcXFwiY2xqcy5jb3JlXFxcIl0pO1wiKSlcbiAgKGRvc2VxXG4gICBbbGliIGxpYnMtdG8tbG9hZF1cbiAgIChjb25kXG4gICAgIz9AKDpjbGogWyhhbmEvZm9yZWlnbi1kZXA/IGxpYikgKHdoZW4gKGFuZCAoPSA6bm9uZSBvcHRpbWl6YXRpb25zKSAobm90IChjb250YWlucz8gb3B0aW9ucyA6bW9kdWxlcykpKSAobGV0IFtbbGliIF9dIChhbmEvbGliJnN1YmxpYiBsaWIpXSAoaWYgbm9kZWpzLXJ0IChsZXQgW2lqcyAoZ2V0IGpzLWRlcGVuZGVuY3ktaW5kZXggKG5hbWUgbGliKSldIChlbWl0bG4gXCJjbGpzLmNvcmUubG9hZF9maWxlKFwiICgtPiAoaW8vZmlsZSAodXRpbC9vdXRwdXQtZGlyZWN0b3J5IG9wdGlvbnMpIChvciAoZGVwcy8tcmVsYXRpdmUtcGF0aCBpanMpICh1dGlsL3JlbGF0aXZlLW5hbWUgKDp1cmwgaWpzKSkpKSBzdHIgZXNjYXBlLXN0cmluZyB3cmFwLWluLWRvdWJsZS1xdW90ZXMpIFwiKTtcIikpIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ1wiIChtdW5nZSBsaWIpIFwiJyk7XCIpKSkpXSA6Y2xqcyBbKGFuZCAoYW5hL2ZvcmVpZ24tZGVwPyBsaWIpIChub3QgKGtleXdvcmQtaWRlbnRpY2FsPyBvcHRpbWl6YXRpb25zIDpub25lKSkpIG5pbF0pXG4gICAgKG9yICgtPiBsaWJzIG1ldGEgOnJlbG9hZCkgKD0gKGdldCByZWxvYWRzIGxpYikgOnJlbG9hZCkpXG4gICAgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgKG11bmdlIGxpYikgXCInLCAncmVsb2FkJyk7XCIpXG4gICAgKG9yICgtPiBsaWJzIG1ldGEgOnJlbG9hZC1hbGwpICg9IChnZXQgcmVsb2FkcyBsaWIpIDpyZWxvYWQtYWxsKSlcbiAgICAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdcIiAobXVuZ2UgbGliKSBcIicsICdyZWxvYWQtYWxsJyk7XCIpXG4gICAgOmVsc2VcbiAgICAod2hlbi1ub3RcbiAgICAgKD0gbGliICdnb29nKVxuICAgICAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdcIiAobXVuZ2UgbGliKSBcIicpO1wiKSkpKVxuICAoZG9zZXFcbiAgIFtsaWIgbm9kZS1saWJzXVxuICAgKGxldFxuICAgIFtbbGliJyBzdWJsaWJdIChhbmEvbGliJnN1YmxpYiBsaWIpXVxuICAgIChlbWl0bG5cbiAgICAgKG11bmdlIG5zLW5hbWUpXG4gICAgIFwiLlwiXG4gICAgIChhbmEvbXVuZ2Utbm9kZS1saWIgbGliKVxuICAgICBcIiA9IHJlcXVpcmUoJ1wiXG4gICAgIGxpYidcbiAgICAgXCInKVwiXG4gICAgIChzdWJsaWItc2VsZWN0IHN1YmxpYilcbiAgICAgXCI7XCIpKSlcbiAgKGRvc2VxXG4gICBbbGliIGdvb2ctbW9kdWxlc11cbiAgIChsZXRcbiAgICBbW2xpYicgc3VibGliXSAoYW5hL2xpYiZzdWJsaWIgbGliKV1cbiAgICAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdcIiBsaWInIFwiJyk7XCIpXG4gICAgKGVtaXRsbiBcImdvb2cuc2NvcGUoZnVuY3Rpb24oKXtcIilcbiAgICAoZW1pdGxuXG4gICAgIChtdW5nZSBucy1uYW1lKVxuICAgICBcIi5cIlxuICAgICAoYW5hL211bmdlLWdvb2ctbW9kdWxlLWxpYiBsaWIpXG4gICAgIFwiID0gZ29vZy5tb2R1bGUuZ2V0KCdcIlxuICAgICBsaWInXG4gICAgIFwiJylcIlxuICAgICAoc3VibGliLXNlbGVjdCBzdWJsaWIpXG4gICAgIFwiO1wiKVxuICAgIChlbWl0bG4gXCJ9KTtcIikpKVxuICAoZG9zZXFcbiAgIFtsaWIgZ2xvYmFsLWV4cG9ydHMtbGlic11cbiAgIChsZXRcbiAgICBbezprZXlzIFtnbG9iYWwtZXhwb3J0c119XG4gICAgIChnZXQganMtZGVwZW5kZW5jeS1pbmRleCAobmFtZSAoLT4gbGliIGFuYS9saWImc3VibGliIGZpcnN0KSkpXVxuICAgIChlbWl0LWdsb2JhbC1leHBvcnQgbnMtbmFtZSBnbG9iYWwtZXhwb3J0cyBsaWIpKSlcbiAgKHdoZW5cbiAgICgtPiBsaWJzIG1ldGEgOnJlbG9hZC1hbGwpXG4gICAoZW1pdGxuXG4gICAgXCJpZighQ09NUElMRUQpIFwiXG4gICAgbG9hZGVkLWxpYnNcbiAgICBcIiA9IGNsanMuY29yZS5pbnRvKFwiXG4gICAgbG9hZGVkLWxpYnMtdGVtcFxuICAgIFwiLCBcIlxuICAgIGxvYWRlZC1saWJzXG4gICAgXCIpO1wiKSkpKVxuIn0gezpzeW0gbXVuZ2UtcGFyYW0tcmV0dXJuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlLXBhcmFtLXJldHVyblxuIFtlbnYgbGluZV1cbiAoY29uZFxuICAocmUtZmluZCAjXCJAcGFyYW1cIiBsaW5lKVxuICAobGV0XG4gICBbW3AgdHMgbiAmIHhzXVxuICAgIChtYXAgc3RyaW5nL3RyaW0gKHN0cmluZy9zcGxpdCAoc3RyaW5nL3RyaW0gbGluZSkgI1wiIFwiKSldXG4gICAoaWZcbiAgICAoYW5kXG4gICAgICg9IFwiQHBhcmFtXCIgcClcbiAgICAgdHNcbiAgICAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdHMgXCJ7XCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdHMgXCJ7XCIpKSlcbiAgICAoc3RyaW5nL2pvaW4gXCIgXCIgKGNvbmNhdCBbcCAocmVzb2x2ZS10eXBlcyBlbnYgdHMpIChtdW5nZSBuKV0geHMpKVxuICAgIGxpbmUpKVxuICAocmUtZmluZCAjXCJAcmV0dXJuXCIgbGluZSlcbiAgKGxldFxuICAgW1twIHRzICYgeHNdXG4gICAgKG1hcCBzdHJpbmcvdHJpbSAoc3RyaW5nL3NwbGl0IChzdHJpbmcvdHJpbSBsaW5lKSAjXCIgXCIpKV1cbiAgIChpZlxuICAgIChhbmRcbiAgICAgKD0gXCJAcmV0dXJuXCIgcClcbiAgICAgdHNcbiAgICAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdHMgXCJ7XCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdHMgXCJ7XCIpKSlcbiAgICAoc3RyaW5nL2pvaW4gXCIgXCIgKGNvbmNhdCBbcCAocmVzb2x2ZS10eXBlcyBlbnYgdHMpXSB4cykpXG4gICAgbGluZSkpXG4gIDplbHNlXG4gIGxpbmUpKVxuIn0gezpzeW0gZW1pdC1qcy1hcnJheSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBjb21tYS1zZXBdKX0sIDpzb3VyY2UgIihkZWZuIGVtaXQtanMtYXJyYXkgW2l0ZW1zIGNvbW1hLXNlcF0gKGVtaXRzIFwiW1wiIChjb21tYS1zZXAgaXRlbXMpIFwiXVwiKSlcbiJ9IHs6c3ltIGZpbmQtbnMtc3RhcnRzLXdpdGgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmVlZGxlXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtbnMtc3RhcnRzLXdpdGhcbiBbbmVlZGxlXVxuIChyZWR1Y2Uta3ZcbiAgKGZuXG4gICBbeHMgbnMgX11cbiAgICh3aGVuICg9IG5lZWRsZSAoZ2V0LWZpcnN0LW5zLXNlZ21lbnQgbnMpKSAocmVkdWNlZCBuZWVkbGUpKSlcbiAgbmlsXG4gICg6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIEBlbnYvKmNvbXBpbGVyKikpKVxuIn0gezpzeW0gY2hlY2tpbmctdHlwZXM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVja2luZy10eXBlcz9cbiBbXVxuICgjezp3YXJuaW5nIDplcnJvcn1cbiAgKGdldC1pbiBAZW52Lypjb21waWxlciogWzpvcHRpb25zIDpjbG9zdXJlLXdhcm5pbmdzIDpjaGVjay10eXBlc10pKSlcbiJ9IHs6c3ltIGVtaXQtZm4tbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3tleHByIDpib2R5LCA6a2V5cyBbdHlwZSBuYW1lIHBhcmFtcyBlbnYgcmVjdXJzXX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1mbi1tZXRob2RcbiBbe2V4cHIgOmJvZHksIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdfV1cbiAoZW1pdC13cmFwXG4gIGVudlxuICAoZW1pdHMgXCIoZnVuY3Rpb24gXCIgKG11bmdlIG5hbWUpIFwiKFwiKVxuICAoZW1pdC1mbi1wYXJhbXMgcGFyYW1zKVxuICAoZW1pdGxuIFwiKXtcIilcbiAgKHdoZW4gdHlwZSAoZW1pdGxuIFwidmFyIHNlbGZfXyA9IHRoaXM7XCIpKVxuICAod2hlbiByZWN1cnMgKGVtaXRsbiBcIndoaWxlKHRydWUpe1wiKSlcbiAgKGVtaXRzIGV4cHIpXG4gICh3aGVuIHJlY3VycyAoZW1pdGxuIFwiYnJlYWs7XCIpIChlbWl0bG4gXCJ9XCIpKVxuICAoZW1pdHMgXCJ9KVwiKSkpXG4ifSB7OnN5bSBlbWl0LWNvbW1lbnQsIDptZXRhIHs6ZG9jICJFbWl0IGEgbmljZWx5IGZvcm1hdHRlZCBjb21tZW50IHN0cmluZy4iLCA6YXJnbGlzdHMgW1tkb2MganNkb2NdIFtlbnYgZG9jIGpzZG9jXV19LCA6c291cmNlICIoZGVmblxuIGVtaXQtY29tbWVudFxuIFwiRW1pdCBhIG5pY2VseSBmb3JtYXR0ZWQgY29tbWVudCBzdHJpbmcuXCJcbiAoW2RvYyBqc2RvY10gKGVtaXQtY29tbWVudCBuaWwgZG9jIGpzZG9jKSlcbiAoW2VudiBkb2MganNkb2NdXG4gIChsZXRcbiAgIFtkb2NzXG4gICAgKHdoZW4gZG9jIFtkb2NdKVxuICAgIGRvY3NcbiAgICAoaWYganNkb2MgKGNvbmNhdCBkb2NzIGpzZG9jKSBkb2NzKVxuICAgIGRvY3NcbiAgICAocmVtb3ZlIG5pbD8gZG9jcyldXG4gICAobGV0Zm5cbiAgICBbKHByaW50LWNvbW1lbnQtbGluZXNcbiAgICAgIFtlXVxuICAgICAgKGxldFxuICAgICAgIFtbeCAmIHlzXVxuICAgICAgICAobWFwXG4gICAgICAgICAoZm4qXG4gICAgICAgICAgW3AxX180NTI3MyNdXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChjaGVja2luZy10eXBlcz8pXG4gICAgICAgICAgIChtdW5nZS1wYXJhbS1yZXR1cm4gZW52IHAxX180NTI3MyMpXG4gICAgICAgICAgIHAxX180NTI3MyMpKVxuICAgICAgICAgKHN0cmluZy9zcGxpdC1saW5lcyBlKSldXG4gICAgICAgKGVtaXRsbiBcIiAqIFwiIChzdHJpbmcvcmVwbGFjZSB4IFwiKi9cIiBcIiogL1wiKSlcbiAgICAgICAoZG9zZXFcbiAgICAgICAgW25leHQtbGluZSB5c11cbiAgICAgICAgKGVtaXRsblxuICAgICAgICAgXCIgKiBcIlxuICAgICAgICAgKC0+XG4gICAgICAgICAgbmV4dC1saW5lXG4gICAgICAgICAgKHN0cmluZy9yZXBsYWNlICNcIl4gICBcIiBcIlwiKVxuICAgICAgICAgIChzdHJpbmcvcmVwbGFjZSBcIiovXCIgXCIqIC9cIikpKSkpKV1cbiAgICAod2hlblxuICAgICAoc2VxIGRvY3MpXG4gICAgIChlbWl0bG4gXCIvKipcIilcbiAgICAgKGRvc2VxIFtlIGRvY3NdICh3aGVuIGUgKHByaW50LWNvbW1lbnQtbGluZXMgZSkpKVxuICAgICAoZW1pdGxuIFwiICovXCIpKSkpKSlcbiJ9IHs6c3ltIGhhc2gtc2NvcGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLXNjb3BlXG4gW3NdXG4gKGhhc2gtY29tYmluZVxuICAjPyg6Y2xqIChoYXNoICg6bmFtZSBzKSkgOmNsanMgKC1oYXNoICg6bmFtZSBzKSkpXG4gIChzaGFkb3ctZGVwdGggcykpKVxuIn0gezpzeW0gZW1pdC1hcHBseS10bywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW25hbWUgcGFyYW1zIGVudl19XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtYXBwbHktdG9cbiBbezprZXlzIFtuYW1lIHBhcmFtcyBlbnZdfV1cbiAobGV0XG4gIFthcmdsaXN0XG4gICAoZ2Vuc3ltIFwiYXJnbGlzdF9fXCIpXG4gICBkZWxlZ2F0ZS1uYW1lXG4gICAoc3RyIChtdW5nZSBuYW1lKSBcIl9fZGVsZWdhdGVcIildXG4gIChlbWl0bG4gXCIoZnVuY3Rpb24gKFwiIGFyZ2xpc3QgXCIpe1wiKVxuICAoZG9zZXFcbiAgIFtbaSBwYXJhbV0gKG1hcC1pbmRleGVkIHZlY3RvciAoZHJvcC1sYXN0IDIgcGFyYW1zKSldXG4gICAoZW1pdHMgXCJ2YXIgXCIpXG4gICAoZW1pdCBwYXJhbSlcbiAgIChlbWl0cyBcIiA9IGNsanMuY29yZS5maXJzdChcIilcbiAgIChlbWl0bG4gYXJnbGlzdCBcIik7XCIpXG4gICAoZW1pdGxuIGFyZ2xpc3QgXCIgPSBjbGpzLmNvcmUubmV4dChcIiBhcmdsaXN0IFwiKTtcIikpXG4gIChpZlxuICAgKDwgMSAoY291bnQgcGFyYW1zKSlcbiAgIChkb1xuICAgIChlbWl0cyBcInZhciBcIilcbiAgICAoZW1pdCAobGFzdCAoYnV0bGFzdCBwYXJhbXMpKSlcbiAgICAoZW1pdGxuIFwiID0gY2xqcy5jb3JlLmZpcnN0KFwiIGFyZ2xpc3QgXCIpO1wiKVxuICAgIChlbWl0cyBcInZhciBcIilcbiAgICAoZW1pdCAobGFzdCBwYXJhbXMpKVxuICAgIChlbWl0bG4gXCIgPSBjbGpzLmNvcmUucmVzdChcIiBhcmdsaXN0IFwiKTtcIilcbiAgICAoZW1pdHMgXCJyZXR1cm4gXCIgZGVsZWdhdGUtbmFtZSBcIihcIilcbiAgICAoZG9zZXFcbiAgICAgW3BhcmFtIHBhcmFtc11cbiAgICAgKGVtaXQgcGFyYW0pXG4gICAgICh3aGVuLW5vdCAoPSBwYXJhbSAobGFzdCBwYXJhbXMpKSAoZW1pdHMgXCIsXCIpKSlcbiAgICAoZW1pdGxuIFwiKTtcIikpXG4gICAoZG9cbiAgICAoZW1pdHMgXCJ2YXIgXCIpXG4gICAgKGVtaXQgKGxhc3QgcGFyYW1zKSlcbiAgICAoZW1pdGxuIFwiID0gY2xqcy5jb3JlLnNlcShcIiBhcmdsaXN0IFwiKTtcIilcbiAgICAoZW1pdHMgXCJyZXR1cm4gXCIgZGVsZWdhdGUtbmFtZSBcIihcIilcbiAgICAoZG9zZXFcbiAgICAgW3BhcmFtIHBhcmFtc11cbiAgICAgKGVtaXQgcGFyYW0pXG4gICAgICh3aGVuLW5vdCAoPSBwYXJhbSAobGFzdCBwYXJhbXMpKSAoZW1pdHMgXCIsXCIpKSlcbiAgICAoZW1pdGxuIFwiKTtcIikpKVxuICAoZW1pdHMgXCJ9KVwiKSkpXG4ifSB7OnN5bSBlbWl0cy1zeW1ib2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXRzLXN5bWJvbFxuIFtzeW1dXG4gKGxldFxuICBbbnNcbiAgIChuYW1lc3BhY2Ugc3ltKVxuICAgbmFtZVxuICAgKG5hbWUgc3ltKVxuICAgc3ltc3RyXG4gICAoaWYtbm90IChuaWw/IG5zKSAoc3RyIG5zIFwiL1wiIG5hbWUpIG5hbWUpXVxuICAoZW1pdHMgXCJuZXcgY2xqcy5jb3JlLlN5bWJvbChcIilcbiAgKGVtaXQtY29uc3RhbnQgbnMpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgbmFtZSlcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCBzeW1zdHIpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgKGhhc2ggc3ltKSlcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCBuaWwpXG4gIChlbWl0cyBcIilcIikpKVxuIn0gezpzeW0gZmFsc2V5LWNvbnN0YW50PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHByXSl9LCA6c291cmNlICIoZGVmblxuIGZhbHNleS1jb25zdGFudD9cbiBbZXhwcl1cbiAobGV0XG4gIFt7OmtleXMgW29wIGZvcm0gY29uc3QtZXhwcl19IChhbmEvdW53cmFwLXF1b3RlIGV4cHIpXVxuICAob3JcbiAgIChhbmQgKD0gb3AgOmNvbnN0KSAob3IgKGZhbHNlPyBmb3JtKSAobmlsPyBmb3JtKSkpXG4gICAoYW5kIChzb21lPyBjb25zdC1leHByKSAoZmFsc2V5LWNvbnN0YW50PyBjb25zdC1leHByKSkpKSlcbiJ9IHs6c3ltIGVtaXQtY29uc3RhbnRzLWNvbW1hLXNlcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWNvbnN0YW50cy1jb21tYS1zZXBcbiBbY3NdXG4gKGZuXG4gIFtdXG4gIChkb2FsbFxuICAgKG1hcC1pbmRleGVkXG4gICAgKGZuIFtpIG1dIChpZiAoZXZlbj8gaSkgKGVtaXQtY29uc3RhbnQgbSkgKGVtaXRzIG0pKSlcbiAgICAoY29tbWEtc2VwIGNzKSkpKSlcbiJ9IHs6c3ltICpzb3VyY2UtbWFwLWRhdGEqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqc291cmNlLW1hcC1kYXRhKiBuaWwpXG4ifSB7OnN5bSBlbWl0LXJlY29yZC12YWx1ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBuYW1lIGl0ZW1zXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtcmVjb3JkLXZhbHVlXG4gW25zIG5hbWUgaXRlbXNdXG4gKGVtaXRzIG5zIFwiLm1hcF9fR1RfXCIgbmFtZSBcIihcIiBpdGVtcyBcIilcIikpXG4ifSB7OnN5bSBlbWl0LXZhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2luZm8gZW52IGZvcm1dLCA6YXMgYXN0fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LXZhclxuIFt7OmtleXMgW2luZm8gZW52IGZvcm1dLCA6YXMgYXN0fV1cbiAoaWYtbGV0XG4gIFtjb25zdC1leHByICg6Y29uc3QtZXhwciBhc3QpXVxuICAoZW1pdCAoYXNzb2MgY29uc3QtZXhwciA6ZW52IGVudikpXG4gIChsZXRcbiAgIFt7OmtleXMgW29wdGlvbnNdLCA6YXMgY2Vudn1cbiAgICBAZW52Lypjb21waWxlcipcbiAgICB2YXItbmFtZVxuICAgICg6bmFtZSBpbmZvKVxuICAgIGluZm9cbiAgICAoaWZcbiAgICAgKD0gKG5hbWVzcGFjZSB2YXItbmFtZSkgXCJqc1wiKVxuICAgICAobGV0XG4gICAgICBbanMtbW9kdWxlLW5hbWVcbiAgICAgICAoZ2V0LWluIGNlbnYgWzpqcy1tb2R1bGUtaW5kZXggKG5hbWUgdmFyLW5hbWUpIDpuYW1lXSldXG4gICAgICAob3IganMtbW9kdWxlLW5hbWUgKG5hbWUgdmFyLW5hbWUpKSlcbiAgICAgaW5mbyldXG4gICAoaWZcbiAgICAoOmJpbmRpbmctZm9ybT8gYXN0KVxuICAgIChlbWl0cyAobXVuZ2UgYXN0KSlcbiAgICAod2hlbi1ub3RcbiAgICAgKD0gOnN0YXRlbWVudCAoOmNvbnRleHQgZW52KSlcbiAgICAgKGxldFxuICAgICAgW3Jlc2VydmVkXG4gICAgICAgKGNvbmQtPlxuICAgICAgICBqcy1yZXNlcnZlZFxuICAgICAgICAoYW5kXG4gICAgICAgICAoZXM1Pj0gKDpsYW5ndWFnZS1vdXQgb3B0aW9ucykpXG4gICAgICAgICAoc29tZT8gKG5hbWVzcGFjZSB2YXItbmFtZSkpKVxuICAgICAgICAoc2V0L2RpZmZlcmVuY2UgYW5hL2VzNS1hbGxvd2VkKSlcbiAgICAgICBqcy1tb2R1bGVcbiAgICAgICAoZ2V0LWluXG4gICAgICAgIGNlbnZcbiAgICAgICAgWzpqcy1uYW1lc3BhY2VzIChvciAobmFtZXNwYWNlIHZhci1uYW1lKSAobmFtZSB2YXItbmFtZSkpXSlcbiAgICAgICBpbmZvXG4gICAgICAgKGNvbmQtPiBpbmZvIChub3Q9IGZvcm0gJ2pzLy1JbmZpbml0eSkgKG11bmdlIHJlc2VydmVkKSldXG4gICAgICAoZW1pdC13cmFwXG4gICAgICAgZW52XG4gICAgICAgKGNhc2VcbiAgICAgICAgKDptb2R1bGUtdHlwZSBqcy1tb2R1bGUpXG4gICAgICAgIDpjb21tb25qc1xuICAgICAgICAoaWZcbiAgICAgICAgIChuYW1lc3BhY2UgdmFyLW5hbWUpXG4gICAgICAgICAoZW1pdHNcbiAgICAgICAgICAobXVuZ2UgKG5hbWVzcGFjZSB2YXItbmFtZSkgcmVzZXJ2ZWQpXG4gICAgICAgICAgXCJbXFxcImRlZmF1bHRcXFwiXS5cIlxuICAgICAgICAgIChtdW5nZSAobmFtZSB2YXItbmFtZSkgcmVzZXJ2ZWQpKVxuICAgICAgICAgKGVtaXRzIChtdW5nZSAobmFtZSB2YXItbmFtZSkgcmVzZXJ2ZWQpIFwiW1xcXCJkZWZhdWx0XFxcIl1cIikpXG4gICAgICAgIDplczZcbiAgICAgICAgKGlmXG4gICAgICAgICAoYW5kIChuYW1lc3BhY2UgdmFyLW5hbWUpICg9IFwiZGVmYXVsdFwiIChuYW1lIHZhci1uYW1lKSkpXG4gICAgICAgICAoZW1pdHMgKG11bmdlIChuYW1lc3BhY2UgdmFyLW5hbWUpIHJlc2VydmVkKSBcIltcXFwiZGVmYXVsdFxcXCJdXCIpXG4gICAgICAgICAoZW1pdHMgaW5mbykpXG4gICAgICAgIChlbWl0cyBpbmZvKSkpKSkpKSkpXG4ifSB7OnN5bSBtYXBwZWQtdHlwZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1hcHBlZC10eXBlcyB7XCJuaWxcIiBcIm51bGxcIn0pXG4ifSB7OnN5bSByZXNvbHZlLXR5cGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXR5cGVzXG4gW2VudiB0c11cbiAobGV0XG4gIFt0c1xuICAgKC0+IHRzIHN0cmluZy90cmltIChzdWJzIDEgKGRlYyAoY291bnQgdHMpKSkpXG4gICB4c1xuICAgKHN0cmluZy9zcGxpdCB0cyAjXCJcXHxcIildXG4gIChzdHJcbiAgIFwie1wiXG4gICAoc3RyaW5nL2pvaW5cbiAgICBcInxcIlxuICAgIChtYXAgKGZuKiBbcDFfXzQ1MjcyI10gKHJlc29sdmUtdHlwZSBlbnYgcDFfXzQ1MjcyIykpIHhzKSlcbiAgIFwifVwiKSkpXG4ifSB7OnN5bSAqaW5wdXRzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmlucHV0cyogbmlsKVxuIn0gezpzeW0gZW1pdC1zdHIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm4gZW1pdC1zdHIgW2V4cHJdICh3aXRoLW91dC1zdHIgKGVtaXQgZXhwcikpKVxuIn0gezpzeW0gZW1pdC1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5cyB2YWxzIGNvbW1hLXNlcCBkaXN0aW5jdC1rZXlzP10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LW1hcFxuIFtrZXlzIHZhbHMgY29tbWEtc2VwIGRpc3RpbmN0LWtleXM/XVxuIChjb25kXG4gICh6ZXJvPyAoY291bnQga2V5cykpXG4gIChlbWl0cyBcImNsanMuY29yZS5QZXJzaXN0ZW50QXJyYXlNYXAuRU1QVFlcIilcbiAgKDw9IChjb3VudCBrZXlzKSBhcnJheS1tYXAtdGhyZXNob2xkKVxuICAoaWZcbiAgIChkaXN0aW5jdC1rZXlzPyBrZXlzKVxuICAgKGVtaXRzXG4gICAgXCJuZXcgY2xqcy5jb3JlLlBlcnNpc3RlbnRBcnJheU1hcChudWxsLCBcIlxuICAgIChjb3VudCBrZXlzKVxuICAgIFwiLCBbXCJcbiAgICAoY29tbWEtc2VwIChpbnRlcmxlYXZlIGtleXMgdmFscykpXG4gICAgXCJdLCBudWxsKVwiKVxuICAgKGVtaXRzXG4gICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEFycmF5TWFwLmNyZWF0ZUFzSWZCeUFzc29jKFtcIlxuICAgIChjb21tYS1zZXAgKGludGVybGVhdmUga2V5cyB2YWxzKSlcbiAgICBcIl0pXCIpKVxuICA6ZWxzZVxuICAoZW1pdHNcbiAgIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRIYXNoTWFwLmZyb21BcnJheXMoW1wiXG4gICAoY29tbWEtc2VwIGtleXMpXG4gICBcIl0sW1wiXG4gICAoY29tbWEtc2VwIHZhbHMpXG4gICBcIl0pXCIpKSlcbiJ9IHs6c3ltIGVtaXQtdmVjdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LXZlY3RvclxuIFtpdGVtcyBjb21tYS1zZXBdXG4gKGlmXG4gIChlbXB0eT8gaXRlbXMpXG4gIChlbWl0cyBcImNsanMuY29yZS5QZXJzaXN0ZW50VmVjdG9yLkVNUFRZXCIpXG4gIChsZXRcbiAgIFtjbnQgKGNvdW50IGl0ZW1zKV1cbiAgIChpZlxuICAgICg8IGNudCAzMilcbiAgICAoZW1pdHNcbiAgICAgXCJuZXcgY2xqcy5jb3JlLlBlcnNpc3RlbnRWZWN0b3IobnVsbCwgXCJcbiAgICAgY250XG4gICAgIFwiLCA1LCBjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3Rvci5FTVBUWV9OT0RFLCBbXCJcbiAgICAgKGNvbW1hLXNlcCBpdGVtcylcbiAgICAgXCJdLCBudWxsKVwiKVxuICAgIChlbWl0c1xuICAgICBcImNsanMuY29yZS5QZXJzaXN0ZW50VmVjdG9yLmZyb21BcnJheShbXCJcbiAgICAgKGNvbW1hLXNlcCBpdGVtcylcbiAgICAgXCJdLCB0cnVlKVwiKSkpKSlcbiJ9IHs6c3ltIHRydXRoeS1jb25zdGFudD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cnV0aHktY29uc3RhbnQ/XG4gW2V4cHJdXG4gKGxldFxuICBbezprZXlzIFtvcCBmb3JtIGNvbnN0LWV4cHJdfSAoYW5hL3Vud3JhcC1xdW90ZSBleHByKV1cbiAgKG9yXG4gICAoYW5kXG4gICAgKD0gb3AgOmNvbnN0KVxuICAgIGZvcm1cbiAgICAobm90XG4gICAgIChvclxuICAgICAgKGFuZCAoc3RyaW5nPyBmb3JtKSAoPSBmb3JtIFwiXCIpKVxuICAgICAgKGFuZCAobnVtYmVyPyBmb3JtKSAoemVybz8gZm9ybSkpKSkpXG4gICAoYW5kIChzb21lPyBjb25zdC1leHByKSAodHJ1dGh5LWNvbnN0YW50PyBjb25zdC1leHByKSkpKSlcbiJ9IHs6c3ltIGVtaXRsbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFthXSBbYSBiXSBbYSBiIGNdIFthIGIgYyBkXSBbYSBiIGMgZCBlXSBbYSBiIGMgZCBlICYgeHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdGxuXG4gKFtdIChfZW1pdGxuKSlcbiAoW2FdIChlbWl0cyBhKSAoX2VtaXRsbikpXG4gKFthIGJdIChlbWl0cyBhKSAoZW1pdHMgYikgKF9lbWl0bG4pKVxuIChbYSBiIGNdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpIChfZW1pdGxuKSlcbiAoW2EgYiBjIGRdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpIChlbWl0cyBkKSAoX2VtaXRsbikpXG4gKFthIGIgYyBkIGVdXG4gIChlbWl0cyBhKVxuICAoZW1pdHMgYilcbiAgKGVtaXRzIGMpXG4gIChlbWl0cyBkKVxuICAoZW1pdHMgZSlcbiAgKF9lbWl0bG4pKVxuIChbYSBiIGMgZCBlICYgeHNdXG4gIChlbWl0cyBhKVxuICAoZW1pdHMgYilcbiAgKGVtaXRzIGMpXG4gIChlbWl0cyBkKVxuICAoZW1pdHMgZSlcbiAgKGRvc2VxIFt4IHhzXSAoZW1pdHMgeCkpXG4gIChfZW1pdGxuKSkpXG4ifSB7OnN5bSBlbWl0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0XG4gW2FzdF1cbiAod2hlblxuICAqc291cmNlLW1hcC1kYXRhKlxuICAobGV0XG4gICBbezprZXlzIFtlbnZdfSBhc3RdXG4gICAod2hlblxuICAgICg6bGluZSBlbnYpXG4gICAgKGxldFxuICAgICBbezprZXlzIFtsaW5lIGNvbHVtbl19IGVudl1cbiAgICAgKHN3YXAhXG4gICAgICAqc291cmNlLW1hcC1kYXRhKlxuICAgICAgKGZuXG4gICAgICAgW21dXG4gICAgICAgKGxldFxuICAgICAgICBbbWluZm9cbiAgICAgICAgIChjb25kLT5cbiAgICAgICAgICB7Omdjb2xcbiAgICAgICAgICAgIz8oOmNsaiAoLmdldCAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqKSA6Y2xqcyAoOmdlbi1jb2wgbSkpLFxuICAgICAgICAgICA6Z2xpbmUgKDpnZW4tbGluZSBtKX1cbiAgICAgICAgICAoI3s6YmluZGluZyA6dmFyIDpqcy12YXIgOmxvY2FsfSAoOm9wIGFzdCkpXG4gICAgICAgICAgKGFzc29jIDpuYW1lIChzdHIgKC0+IGFzdCA6aW5mbyA6bmFtZSkpKSldXG4gICAgICAgICh1cGRhdGUtaW5cbiAgICAgICAgIG1cbiAgICAgICAgIFs6c291cmNlLW1hcCAoZGVjIGxpbmUpXVxuICAgICAgICAgKGZuaWxcbiAgICAgICAgICAoZm5cbiAgICAgICAgICAgW2xpbmVdXG4gICAgICAgICAgICh1cGRhdGUtaW5cbiAgICAgICAgICAgIGxpbmVcbiAgICAgICAgICAgIFsoaWYgY29sdW1uIChkZWMgY29sdW1uKSAwKV1cbiAgICAgICAgICAgIChmbmlsIChmbiBbY29sdW1uXSAoY29uaiBjb2x1bW4gbWluZm8pKSBbXSkpKVxuICAgICAgICAgIChzb3J0ZWQtbWFwKSkpKSkpKSkpKVxuIChlbWl0KiBhc3QpKVxuIn0gezpzeW0gc2FmZS10ZXN0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzYWZlLXRlc3Q/XG4gW2VudiBlXVxuIChsZXRcbiAgW3RhZyAoYW5hL2luZmVyLXRhZyBlbnYgZSldXG4gIChvciAoI3snc2VxICdib29sZWFufSB0YWcpICh0cnV0aHktY29uc3RhbnQ/IGUpKSkpXG4ifSB7OnN5bSBlbWl0LWV4dGVybnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZXh0ZXJuc10gW3ByZWZpeCBleHRlcm5zIHRvcC1sZXZlbCBrbm93bi1leHRlcm5zXV19LCA6c291cmNlICIoZGVmblxuIGVtaXQtZXh0ZXJuc1xuIChbZXh0ZXJuc11cbiAgKGVtaXQtZXh0ZXJuc1xuICAgW11cbiAgIGV4dGVybnNcbiAgIChhdG9tICN7fSlcbiAgICh3aGVuIGVudi8qY29tcGlsZXIqIChhbmEvZ2V0LWV4dGVybnMpKSkpXG4gKFtwcmVmaXggZXh0ZXJucyB0b3AtbGV2ZWwga25vd24tZXh0ZXJuc11cbiAgKGxvb3BcbiAgIFtrcyAoc2VxIChrZXlzIGV4dGVybnMpKV1cbiAgICh3aGVuXG4gICAga3NcbiAgICAobGV0XG4gICAgIFtrIChmaXJzdCBrcykgW3RvcCA6YXMgcHJlZml4J10gKGNvbmogcHJlZml4IGspXVxuICAgICAod2hlblxuICAgICAgKGFuZCAobm90PSAncHJvdG90eXBlIGspIChuaWw/IChnZXQtaW4ga25vd24tZXh0ZXJucyBwcmVmaXgnKSkpXG4gICAgICAoaWYtbm90XG4gICAgICAgKG9yIChjb250YWlucz8gQHRvcC1sZXZlbCB0b3ApIChjb250YWlucz8ga25vd24tZXh0ZXJucyB0b3ApKVxuICAgICAgIChkb1xuICAgICAgICAoZW1pdGxuIFwidmFyIFwiIChzdHJpbmcvam9pbiBcIi5cIiAobWFwIG11bmdlIHByZWZpeCcpKSBcIjtcIilcbiAgICAgICAgKHN3YXAhIHRvcC1sZXZlbCBjb25qIHRvcCkpXG4gICAgICAgKGVtaXRsbiAoc3RyaW5nL2pvaW4gXCIuXCIgKG1hcCBtdW5nZSBwcmVmaXgnKSkgXCI7XCIpKSlcbiAgICAgKGxldFxuICAgICAgW20gKGdldCBleHRlcm5zIGspXVxuICAgICAgKHdoZW4tbm90XG4gICAgICAgKGVtcHR5PyBtKVxuICAgICAgIChlbWl0LWV4dGVybnMgcHJlZml4JyBtIHRvcC1sZXZlbCBrbm93bi1leHRlcm5zKSkpKVxuICAgIChyZWN1ciAobmV4dCBrcykpKSkpKVxuIn0gezpzeW0gZW1pdC1nbG9iYWwtZXhwb3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zLW5hbWUgZ2xvYmFsLWV4cG9ydHMgbGliXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtZ2xvYmFsLWV4cG9ydFxuIFtucy1uYW1lIGdsb2JhbC1leHBvcnRzIGxpYl1cbiAobGV0XG4gIFtbbGliJyBzdWJsaWJdIChhbmEvbGliJnN1YmxpYiBsaWIpXVxuICAoZW1pdGxuXG4gICAobXVuZ2UgbnMtbmFtZSlcbiAgIFwiLlwiXG4gICAoYW5hL211bmdlLWdsb2JhbC1leHBvcnQgbGliKVxuICAgXCIgPSBnb29nLmdsb2JhbFwiXG4gICAoLT4+XG4gICAgKHN0cmluZy9zcGxpdFxuICAgICAobmFtZVxuICAgICAgKG9yXG4gICAgICAgKGdldCBnbG9iYWwtZXhwb3J0cyAoc3ltYm9sIGxpYicpKVxuICAgICAgIChnZXQgZ2xvYmFsLWV4cG9ydHMgKG5hbWUgbGliJykpKSlcbiAgICAgI1wiXFwuXCIpXG4gICAgKG1hcCAoZm4gW3Byb3BdIChzdHIgXCJbXFxcIlwiIHByb3AgXCJcXFwiXVwiKSkpXG4gICAgKGFwcGx5IHN0cikpXG4gICAoc3VibGliLXNlbGVjdCBzdWJsaWIpXG4gICBcIjtcIikpKVxuIn0gezpzeW0gZGlzdGluY3QtY29uc3RhbnRzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXN0aW5jdC1jb25zdGFudHM/XG4gW2l0ZW1zXVxuIChsZXRcbiAgW2l0ZW1zIChtYXAgYW5hL3Vud3JhcC1xdW90ZSBpdGVtcyldXG4gIChhbmRcbiAgIChldmVyeT8gKGZuKiBbcDFfXzQ1MjcwI10gKD0gKDpvcCBwMV9fNDUyNzAjKSA6Y29uc3QpKSBpdGVtcylcbiAgICg9IChjb3VudCAoaW50byAje30gaXRlbXMpKSAoY291bnQgaXRlbXMpKSkpKVxuIn0gezpzeW0gc2hhZG93LWRlcHRoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hhZG93LWRlcHRoXG4gW3NdXG4gKGxldFxuICBbezprZXlzIFtuYW1lIGluZm9dfSBzXVxuICAobG9vcFxuICAgW2QgMCB7OmtleXMgW3NoYWRvd119IGluZm9dXG4gICAoY29uZFxuICAgIHNoYWRvd1xuICAgIChyZWN1ciAoaW5jIGQpIHNoYWRvdylcbiAgICAoZmluZC1ucy1zdGFydHMtd2l0aCAoc3RyIG5hbWUpKVxuICAgIChpbmMgZClcbiAgICA6ZWxzZVxuICAgIGQpKSkpXG4ifSksIGNsanMuc291cmNlLW1hcC5iYXNlNjQgKHs6c3ltIGNoYXJzNjQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY2hhcnM2NFxuIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiKVxuIn0gezpzeW0gY2hhci0+aW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjaGFyLT5pbnQgKHppcG1hcCBjaGFyczY0IChyYW5nZSAwIDY0KSkpXG4ifSB7OnN5bSBpbnQtPmNoYXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGludC0+Y2hhciAoemlwbWFwIChyYW5nZSAwIDY0KSBjaGFyczY0KSlcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGVuY29kZVxuIFtuXVxuIChsZXRcbiAgW2UgKGZpbmQgaW50LT5jaGFyIG4pXVxuICAoaWZcbiAgIGVcbiAgIChzZWNvbmQgZSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJNdXN0IGJlIGJldHdlZW4gMCBhbmQgNjM6IFwiIG4pKSkpKSlcbiJ9IHs6c3ltIGRlY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxuIGRlY29kZVxuIFtjXVxuIChsZXRcbiAgW2UgKGZpbmQgY2hhci0+aW50IGMpXVxuICAoaWZcbiAgIGVcbiAgIChzZWNvbmQgZSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJOb3QgYSB2YWxpZCBiYXNlIDY0IGRpZ2l0OiBcIiBjKSkpKSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwudXRpbHMgKHs6c3ltIHJlYWRlci1jb25kaXRpb25hbCwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwuXG4gIElmIHRydWUsIHNwbGljaW5nPyBpbmRpY2F0ZXMgcmVhZC1jb25kLXNwbGljaW5nLiIsIDphcmdsaXN0cyAoW2Zvcm0gc3BsaWNpbmc/XSl9LCA6c291cmNlICIoZGVmblxuIHJlYWRlci1jb25kaXRpb25hbFxuIFwiQ29uc3RydWN0IGEgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbC5cXG4gIElmIHRydWUsIHNwbGljaW5nPyBpbmRpY2F0ZXMgcmVhZC1jb25kLXNwbGljaW5nLlwiXG4gW2Zvcm0gc3BsaWNpbmc/XVxuIChSZWFkZXJDb25kaXRpb25hbC4gc3BsaWNpbmc/IGZvcm0pKVxuIn0gezpzeW0gd2hpdGVzcGFjZT8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlIiwgOmFyZ2xpc3RzIChbY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2hpdGVzcGFjZT9cbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2VcIlxuIFtjaF1cbiAod2hlbi1ub3QgKG5pbD8gY2gpIChpZiAoaWRlbnRpY2FsPyBjaCBcXCwpIHRydWUgKC50ZXN0IHdzLXJ4IGNoKSkpKVxuIn0gezpzeW0gY2hhci1jb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NoIGJhc2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhci1jb2RlXG4gW2NoIGJhc2VdXG4gKGxldCBbY29kZSAoanMvcGFyc2VJbnQgY2ggYmFzZSldIChpZiAoanMvaXNOYU4gY29kZSkgLTEgY29kZSkpKVxuIn0gezpzeW0gbGFzdC1pZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbGFzdC1pZCAoYXRvbSAwKSlcbiJ9IHs6c3ltIGNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gY2hhciBbeF0gKHdoZW4tbm90IChuaWw/IHgpIChjbGpzLmNvcmUvY2hhciB4KSkpXG4ifSB7OnN5bSBudW1lcmljPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWMiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudW1lcmljP1xuIFwiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgbnVtZXJpY1wiXG4gW2NoXVxuICh3aGVuLW5vdCAobmlsPyBjaCkgKGdzdHJpbmcvaXNOdW1lcmljIGNoKSkpXG4ifSB7OnN5bSBzZWNvbmQnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1thIGJdXSl9LCA6c291cmNlICIoZGVmbiBzZWNvbmQnIFtbYSBiXV0gKHdoZW4tbm90IGEgYikpXG4ifSB7OnN5bSBkZXN1Z2FyLW1ldGEsIDptZXRhIHs6ZG9jICJSZXNvbHZlcyBzeW50YWN0aWNhbCBzdWdhciBpbiBtZXRhZGF0YSIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzdWdhci1tZXRhXG4gXCJSZXNvbHZlcyBzeW50YWN0aWNhbCBzdWdhciBpbiBtZXRhZGF0YVwiXG4gW2ZdXG4gKGNvbmRcbiAgKGtleXdvcmQ/IGYpXG4gIHtmIHRydWV9XG4gIChzeW1ib2w/IGYpXG4gIHs6dGFnIGZ9XG4gIChzdHJpbmc/IGYpXG4gIHs6dGFnIGZ9XG4gIDplbHNlXG4gIGYpKVxuIn0gezpzeW0gbmV4dC1pZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIG5leHQtaWQgW10gKHN3YXAhIGxhc3QtaWQgaW5jKSlcbiJ9IHs6c3ltIGV4LWluZm8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmbiBleC1pbmZvPyBbZXhdIChpbnN0YW5jZT8gY2xqcy5jb3JlLkV4Y2VwdGlvbkluZm8gZXgpKVxuIn0gezpzeW0gcmVhZGVyLWNvbmRpdGlvbmFsPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbCIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWRlci1jb25kaXRpb25hbD9cbiBcIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbFwiXG4gW3ZhbHVlXVxuIChpbnN0YW5jZT8gUmVhZGVyQ29uZGl0aW9uYWwgdmFsdWUpKVxuIn0gezpzeW0gbmV3bGluZT8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZSIsIDphcmdsaXN0cyAoW2NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmV3bGluZT9cbiBcIkNoZWNrcyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXCJcbiBbY11cbiAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGMpIChpZGVudGljYWw/IFwiXFxuXCIgYykgKG5pbD8gYykpKVxuIn0gezpzeW0gbmFtZXNwYWNlLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbnMga2V5c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYW1lc3BhY2Uta2V5c1xuIFtucyBrZXlzXVxuIChmb3JcbiAgW2tleSBrZXlzXVxuICAoaWZcbiAgIChvciAoc3ltYm9sPyBrZXkpIChrZXl3b3JkPyBrZXkpKVxuICAgKGxldFxuICAgIFtba2V5LW5zIGtleS1uYW1lXVxuICAgICAoKGp1eHQgbmFtZXNwYWNlIG5hbWUpIGtleSlcbiAgICAgLT5rZXlcbiAgICAgKGlmIChzeW1ib2w/IGtleSkgc3ltYm9sIGtleXdvcmQpXVxuICAgIChjb25kXG4gICAgIChuaWw/IGtleS1ucylcbiAgICAgKC0+a2V5IG5zIGtleS1uYW1lKVxuICAgICAoPSBcIl9cIiBrZXktbnMpXG4gICAgICgtPmtleSBrZXktbmFtZSlcbiAgICAgOmVsc2VcbiAgICAga2V5KSlcbiAgIGtleSkpKVxuIn0gezpzeW0gd3MtcngsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHdzLXJ4ICNcIltcXHNdXCIpXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLmNoYW5uZWxzICh7OnN5bSBib3gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsXSl9LCA6c291cmNlICIoZGVmbiBib3ggW3ZhbF0gKHJlaWZ5IGNsanMuY29yZS9JRGVyZWYgKC1kZXJlZiBbX10gdmFsKSkpXG4ifSB7OnN5bSBwdXQtYWN0aXZlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtib3hdKX0sIDpzb3VyY2UgIihkZWZuIHB1dC1hY3RpdmU/IFtib3hdIChpbXBsL2FjdGl2ZT8gKC4taGFuZGxlciBib3gpKSlcbiJ9IHs6c3ltIE1BWF9ESVJUWSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTUFYX0RJUlRZIDY0KVxuIn0gezpzeW0gYWJvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIE1NQ30gezpzeW0gTU1DLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoYWJvcnQpfSB7OnN5bSBjaGFuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2J1Zl0gW2J1ZiB4Zm9ybV0gW2J1ZiB4Zm9ybSBleGhdXX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhblxuIChbYnVmXSAoY2hhbiBidWYgbmlsKSlcbiAoW2J1ZiB4Zm9ybV0gKGNoYW4gYnVmIHhmb3JtIG5pbCkpXG4gKFtidWYgeGZvcm0gZXhoXVxuICAoTWFueVRvTWFueUNoYW5uZWwuXG4gICAoYnVmZmVycy9yaW5nLWJ1ZmZlciAzMilcbiAgIDBcbiAgIChidWZmZXJzL3JpbmctYnVmZmVyIDMyKVxuICAgMFxuICAgYnVmXG4gICBmYWxzZVxuICAgKGxldFxuICAgIFthZGQhIChpZiB4Zm9ybSAoeGZvcm0gaW1wbC9hZGQhKSBpbXBsL2FkZCEpXVxuICAgIChmblxuICAgICAoW2J1Zl0gKHRyeSAoYWRkISBidWYpIChjYXRjaCA6ZGVmYXVsdCB0IChoYW5kbGUgYnVmIGV4aCB0KSkpKVxuICAgICAoW2J1ZiB2YWxdXG4gICAgICAodHJ5IChhZGQhIGJ1ZiB2YWwpIChjYXRjaCA6ZGVmYXVsdCB0IChoYW5kbGUgYnVmIGV4aCB0KSkpKSkpKSkpXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLmRpc3BhdGNoICh7OnN5bSB0YXNrcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdGFza3MgKGJ1ZmZlcnMvcmluZy1idWZmZXIgMzIpKVxuIn0gezpzeW0gcnVubmluZz8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJ1bm5pbmc/IGZhbHNlKVxuIn0gezpzeW0gcXVldWVkPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgcXVldWVkPyBmYWxzZSlcbiJ9IHs6c3ltIFRBU0tfQkFUQ0hfU0laRSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgVEFTS19CQVRDSF9TSVpFIDEwMjQpXG4ifSB7OnN5bSBwcm9jZXNzLW1lc3NhZ2VzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm9jZXNzLW1lc3NhZ2VzXG4gW11cbiAoc2V0ISBydW5uaW5nPyB0cnVlKVxuIChzZXQhIHF1ZXVlZD8gZmFsc2UpXG4gKGxvb3BcbiAgW2NvdW50IDBdXG4gIChsZXRcbiAgIFttICgucG9wIHRhc2tzKV1cbiAgICh3aGVuLW5vdFxuICAgIChuaWw/IG0pXG4gICAgKG0pXG4gICAgKHdoZW4gKDwgY291bnQgVEFTS19CQVRDSF9TSVpFKSAocmVjdXIgKGluYyBjb3VudCkpKSkpKVxuIChzZXQhIHJ1bm5pbmc/IGZhbHNlKVxuICh3aGVuICg+ICguLWxlbmd0aCB0YXNrcykgMCkgKHF1ZXVlLWRpc3BhdGNoZXIpKSlcbiJ9IHs6c3ltIHF1ZXVlLWRpc3BhdGNoZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHF1ZXVlLWRpc3BhdGNoZXJcbiBbXVxuICh3aGVuLW5vdFxuICAoYW5kIHF1ZXVlZD8gcnVubmluZz8pXG4gIChzZXQhIHF1ZXVlZD8gdHJ1ZSlcbiAgKGdvb2cuYXN5bmMubmV4dFRpY2sgcHJvY2Vzcy1tZXNzYWdlcykpKVxuIn0gezpzeW0gcnVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuIHJ1biBbZl0gKC51bmJvdW5kZWQtdW5zaGlmdCB0YXNrcyBmKSAocXVldWUtZGlzcGF0Y2hlcikpXG4ifSB7OnN5bSBxdWV1ZS1kZWxheSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIGRlbGF5XSl9LCA6c291cmNlICIoZGVmbiBxdWV1ZS1kZWxheSBbZiBkZWxheV0gKGpzL3NldFRpbWVvdXQgZiBkZWxheSkpXG4ifSksIHBhcmVuLXNvdXAuY29yZSAoezpzeW0gY2FuLXVuZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiBjYW4tdW5kbyBbZWRpdG9yXSAoY2FuLXVuZG8/IGVkaXRvcikpXG4ifSB7OnN5bSBzaG93LWVycm9yLW1lc3NhZ2UhLCA6bWV0YSB7OmRvYyAiU2hvd3MgYSBwb3B1cCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChbcGFyZW50LWVsZW0gZXZlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hvdy1lcnJvci1tZXNzYWdlIVxuIFwiU2hvd3MgYSBwb3B1cCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuXCJcbiBbcGFyZW50LWVsZW0gZXZlbnRdXG4gKGxldFxuICBbZWxlbVxuICAgKC4tdGFyZ2V0IGV2ZW50KVxuICAgeFxuICAgKC4tY2xpZW50WCBldmVudClcbiAgIHlcbiAgICguLWNsaWVudFkgZXZlbnQpXG4gICBwb3B1cFxuICAgKC5jcmVhdGVFbGVtZW50IGpzL2RvY3VtZW50IFwiZGl2XCIpXVxuICAoc2V0ISAoLi10ZXh0Q29udGVudCBwb3B1cCkgKC0+IGVsZW0gLi1kYXRhc2V0IC4tbWVzc2FnZSkpXG4gIChzZXQhICguLXRvcCAoLi1zdHlsZSBwb3B1cCkpIChzdHIgeSBcInB4XCIpKVxuICAoc2V0ISAoLi1sZWZ0ICguLXN0eWxlIHBvcHVwKSkgKHN0ciB4IFwicHhcIikpXG4gIChzZXQhICguLWNsYXNzTmFtZSBwb3B1cCkgXCJlcnJvci10ZXh0XCIpXG4gICguYXBwZW5kQ2hpbGQgcGFyZW50LWVsZW0gcG9wdXApKSlcbiJ9IHs6c3ltIGZvY3VzZWQtdGV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGZvY3VzZWQtdGV4dCBbXSAoc29tZS0+IChkb20vZ2V0LWZvY3VzZWQtZm9ybSkgLi10ZXh0Q29udGVudCkpXG4ifSB7OnN5bSBzZWxlY3RlZC10ZXh0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZWxlY3RlZC10ZXh0XG4gW11cbiAobGV0XG4gIFtzICgtPiBqcy93aW5kb3cgLmdldFNlbGVjdGlvbiAudG9TdHJpbmcpXVxuICAod2hlbi1ub3QgKGVtcHR5PyBzKSBzKSkpXG4ifSB7OnN5bSBjYW4tcmVkbz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gY2FuLXJlZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiBjYW4tcmVkbyBbZWRpdG9yXSAoY2FuLXJlZG8/IGVkaXRvcikpXG4ifSB7OnN5bSByYWluYm93LWRlbGltaXRlcnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIGVsZW1lbnRzIGFuZCBjbGFzcyBuYW1lcy4iLCA6YXJnbGlzdHMgW1twYXJlbnQgbGV2ZWxdIFtwYXJlbnQgbGV2ZWwgbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiByYWluYm93LWRlbGltaXRlcnNcbiBcIlJldHVybnMgYSBtYXAgb2YgZWxlbWVudHMgYW5kIGNsYXNzIG5hbWVzLlwiXG4gKFtwYXJlbnQgbGV2ZWxdXG4gIChwZXJzaXN0ZW50ISAocmFpbmJvdy1kZWxpbWl0ZXJzIHBhcmVudCBsZXZlbCAodHJhbnNpZW50IHt9KSkpKVxuIChbcGFyZW50IGxldmVsIG1dXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFttIGVsZW1dXG4gICAgKGxldFxuICAgICBbY2xhc3NlcyAoLi1jbGFzc0xpc3QgZWxlbSldXG4gICAgIChjb25kXG4gICAgICAoLmNvbnRhaW5zIGNsYXNzZXMgXCJkZWxpbWl0ZXJcIilcbiAgICAgIChhc3NvYyEgbSBlbGVtIChzdHIgXCJyYWluYm93LVwiIChtb2QgbGV2ZWwgcmFpbmJvdy1jb3VudCkpKVxuICAgICAgKC5jb250YWlucyBjbGFzc2VzIFwiY29sbGVjdGlvblwiKVxuICAgICAgKHJhaW5ib3ctZGVsaW1pdGVycyBlbGVtIChpbmMgbGV2ZWwpIG0pXG4gICAgICA6ZWxzZVxuICAgICAgbSkpKVxuICAgbVxuICAgKC0+IHBhcmVudCAuLWNoaWxkcmVuIGFycmF5LXNlcSkpKSlcbiJ9IHs6c3ltIHVwISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGFsdD9dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2ghLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgc3RhdGVdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHVuZG8hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2gtY3Vyc29yLXBvc2l0aW9uISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IHs6a2V5cyBbY3JvcHBlZC1zdGF0ZV0sIDphcyBzdGF0ZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1jdXJzb3ItcG9zaXRpb24hXG4gW2NvbnRlbnQgezprZXlzIFtjcm9wcGVkLXN0YXRlXSwgOmFzIHN0YXRlfV1cbiAoaWZcbiAgKHNvbWUtPj4gY3JvcHBlZC1zdGF0ZSA6ZWxlbWVudCAoLmNvbnRhaW5zIGNvbnRlbnQpKVxuICAoc29tZS0+XG4gICBjcm9wcGVkLXN0YXRlXG4gICA6ZWxlbWVudFxuICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISAoOmN1cnNvci1wb3NpdGlvbiBjcm9wcGVkLXN0YXRlKSkpXG4gIChpZlxuICAgKGFuZCAoOnNlbGVjdGlvbi1jaGFuZ2U/IHN0YXRlKSAoOm9yaWdpbmFsLWN1cnNvci1wb3NpdGlvbiBzdGF0ZSkpXG4gICAoZG9tL3NldC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gc3RhdGUpKVxuICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50ICg6Y3Vyc29yLXBvc2l0aW9uIHN0YXRlKSkpKSlcbiJ9IHs6c3ltIGtleS1uYW1lPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgc3VwcGxpZWQga2V5IGV2ZW50IGludm9sdmVzIHRoZSBrZXkocykgZGVzY3JpYmVkIGJ5IGtleS1uYW1lLiIsIDphcmdsaXN0cyAoW2V2ZW50IGtleS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGtleS1uYW1lP1xuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSBzdXBwbGllZCBrZXkgZXZlbnQgaW52b2x2ZXMgdGhlIGtleShzKSBkZXNjcmliZWQgYnkga2V5LW5hbWUuXCJcbiBbZXZlbnQga2V5LW5hbWVdXG4gKGxldFxuICBbY29kZSAoa2V5LWNvZGUgZXZlbnQpXVxuICAoY2FzZVxuICAga2V5LW5hbWVcbiAgIDp1bmRvLW9yLXJlZG9cbiAgIChhbmQgKG9yICguLW1ldGFLZXkgZXZlbnQpICguLWN0cmxLZXkgZXZlbnQpKSAoPSBjb2RlIDkwKSlcbiAgIDp0YWJcbiAgICg9IGNvZGUgOSlcbiAgIDplbnRlclxuICAgKD0gY29kZSAxMylcbiAgIDphcnJvd3NcbiAgIChjb250YWlucz8gI3szOSA0MCAzOCAzN30gY29kZSlcbiAgIDp1cC1hcnJvd1xuICAgKD0gY29kZSAzOClcbiAgIDpkb3duLWFycm93XG4gICAoPSBjb2RlIDQwKVxuICAgOmdlbmVyYWxcbiAgIChub3RcbiAgICAob3JcbiAgICAgKGNvbnRhaW5zPyAjezAgOTEgOTMgMTcgMTYgMTh9IGNvZGUpXG4gICAgICguLWN0cmxLZXkgZXZlbnQpXG4gICAgICguLW1ldGFLZXkgZXZlbnQpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBldmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvciBmb3JtIGNhbGxiYWNrXSl9LCA6c291cmNlICIoZGVmbiBldmFsIFtlZGl0b3IgZm9ybSBjYWxsYmFja10gKGV2YWwhIGVkaXRvciBmb3JtIGNhbGxiYWNrKSlcbiJ9IHs6c3ltIGNoYW5uZWw/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNoYW5uZWw/XG4gKGZuKlxuICBbcDFfXzQ1MDM0I11cbiAgKGluc3RhbmNlP1xuICAgY2xqcy5jb3JlLmFzeW5jLmltcGwuY2hhbm5lbHMuTWFueVRvTWFueUNoYW5uZWxcbiAgIHAxX180NTAzNCMpKSlcbiJ9IHs6c3ltIGNyZWF0ZS1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHMgY29udGVudCBldmVudHMtY2hhbiB7OmtleXMgW2hpc3RvcnktbGltaXQgYXBwZW5kLWxpbWl0IGNvbXBpbGVyLWZuIGNvbnNvbGUtY2FsbGJhY2sgZGlzYWJsZS1jbGo/IGVkaXQtaGlzdG9yeSBmb2N1cz8gZml4LWluZGVudC1vbi1pbml0P10sIDpvciB7aGlzdG9yeS1saW1pdCAxMDAsIGFwcGVuZC1saW1pdCA1MDAwLCBmb2N1cz8gZmFsc2V9LCA6YXMgb3B0c31dKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLWVkaXRvclxuIFtwc1xuICBjb250ZW50XG4gIGV2ZW50cy1jaGFuXG4gIHs6a2V5c1xuICAgW2hpc3RvcnktbGltaXRcbiAgICBhcHBlbmQtbGltaXRcbiAgICBjb21waWxlci1mblxuICAgIGNvbnNvbGUtY2FsbGJhY2tcbiAgICBkaXNhYmxlLWNsaj9cbiAgICBlZGl0LWhpc3RvcnlcbiAgICBmb2N1cz9cbiAgICBmaXgtaW5kZW50LW9uLWluaXQ/XSxcbiAgIDpvciB7aGlzdG9yeS1saW1pdCAxMDAsIGFwcGVuZC1saW1pdCA1MDAwLCBmb2N1cz8gZmFsc2V9LFxuICAgOmFzIG9wdHN9XVxuIChsZXRcbiAgW2Nsaj9cbiAgIChub3QgZGlzYWJsZS1jbGo/KVxuICAgZWRpdG9yP1xuICAgKG5vdCBjb25zb2xlLWNhbGxiYWNrKVxuICAgY29tcGlsZXItZm5cbiAgIChvciBjb21waWxlci1mbiAoaXIvY3JlYXRlLWNvbXBpbGVyLWZuIG9wdHMpKVxuICAgKmVkaXQtaGlzdG9yeVxuICAgKGRvdG9cbiAgICAob3IgZWRpdC1oaXN0b3J5IChtd20vY3JlYXRlLWVkaXQtaGlzdG9yeSkpXG4gICAgKHN3YXAhIGFzc29jIDpsaW1pdCBoaXN0b3J5LWxpbWl0KSlcbiAgIHJlZnJlc2gtaW5zdGFyZXBsLXdpdGgtZGVsYXkhXG4gICAoZGVib3VuY2UgcmVmcmVzaC1pbnN0YXJlcGwhIDMwMClcbiAgICpjb25zb2xlLWhpc3RvcnlcbiAgIChjb25zb2xlL2NyZWF0ZS1jb25zb2xlLWhpc3RvcnkpXG4gICAqbGFzdC1oaWdobGlnaHQtZWxlbVxuICAgKGF0b20gbmlsKVxuICAgKmFsbG93LXRhYj9cbiAgIChhdG9tIGZhbHNlKVxuICAgKmZpcnN0LXJlZnJlc2g/XG4gICAoYXRvbSB0cnVlKV1cbiAgKHdoZW4tbm90XG4gICBlZGl0b3I/XG4gICAoc2V0LXZhbGlkYXRvciFcbiAgICAqZWRpdC1oaXN0b3J5XG4gICAgKGZuXG4gICAgIFt7OmtleXMgW2N1cnJlbnQtc3RhdGUgc3RhdGVzXX1dXG4gICAgIChpZi1sZXRcbiAgICAgIFtzdGF0ZSAoZ2V0IHN0YXRlcyBjdXJyZW50LXN0YXRlKV1cbiAgICAgICgtPlxuICAgICAgIHN0YXRlXG4gICAgICAgOmN1cnNvci1wb3NpdGlvblxuICAgICAgIGZpcnN0XG4gICAgICAgKD49IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpKSlcbiAgICAgIHRydWUpKSkpXG4gIChyZWlmeVxuICAgRWRpdG9yXG4gICAodW5kbyFcbiAgICBbdGhpc11cbiAgICAoc29tZS0+PiAqZWRpdC1oaXN0b3J5IG13bS91bmRvISAocmVmcmVzaCEgdGhpcykpXG4gICAgKGRvbS9zY3JvbGwtdG8tbmVhcmVzdC1lbGVtKSlcbiAgIChyZWRvIVxuICAgIFt0aGlzXVxuICAgIChzb21lLT4+ICplZGl0LWhpc3RvcnkgbXdtL3JlZG8hIChyZWZyZXNoISB0aGlzKSlcbiAgICAoZG9tL3Njcm9sbC10by1uZWFyZXN0LWVsZW0pKVxuICAgKGNhbi11bmRvPyBbdGhpc10gKG13bS9jYW4tdW5kbz8gKmVkaXQtaGlzdG9yeSkpXG4gICAoY2FuLXJlZG8/IFt0aGlzXSAobXdtL2Nhbi1yZWRvPyAqZWRpdC1oaXN0b3J5KSlcbiAgICh1cGRhdGUtY3Vyc29yLXBvc2l0aW9uIVxuICAgIFt0aGlzIHBvc2l0aW9uXVxuICAgICh0cnlcbiAgICAgKG13bS91cGRhdGUtY3Vyc29yLXBvc2l0aW9uISAqZWRpdC1oaXN0b3J5IHBvc2l0aW9uKVxuICAgICAoY2F0Y2hcbiAgICAgIGpzL0Vycm9yXG4gICAgICBfXG4gICAgICAod2hlblxuICAgICAgIChhcHBseSA9IHBvc2l0aW9uKVxuICAgICAgIChsZXRcbiAgICAgICAgW3N0YXJ0IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXVxuICAgICAgICAoZG9tL3NldC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgW3N0YXJ0IHN0YXJ0XSlcbiAgICAgICAgKG13bS91cGRhdGUtY3Vyc29yLXBvc2l0aW9uISAqZWRpdC1oaXN0b3J5IFtzdGFydCBzdGFydF0pKSkpKVxuICAgICh1cGRhdGUtaGlnaGxpZ2h0ISBjb250ZW50ICpsYXN0LWhpZ2hsaWdodC1lbGVtKSlcbiAgIChyZXNldC1lZGl0LWhpc3RvcnkhXG4gICAgW3RoaXMgc3RhcnRdXG4gICAgKGNvbnNvbGUvdXBkYXRlLWNvbnNvbGUtc3RhcnQhICpjb25zb2xlLWhpc3Rvcnkgc3RhcnQpXG4gICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50IFtzdGFydCBzdGFydF0pXG4gICAgKGxldFxuICAgICBbKm5ldy1lZGl0LWhpc3RvcnlcbiAgICAgIChtd20vY3JlYXRlLWVkaXQtaGlzdG9yeSlcbiAgICAgIHN0YXRlXG4gICAgICB7OmN1cnNvci1wb3NpdGlvbiBbc3RhcnQgc3RhcnRdLCA6dGV4dCAoLi10ZXh0Q29udGVudCBjb250ZW50KX1dXG4gICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5ISAqbmV3LWVkaXQtaGlzdG9yeSBzdGF0ZSlcbiAgICAgKHJlc2V0ISAqZWRpdC1oaXN0b3J5IEAqbmV3LWVkaXQtaGlzdG9yeSkpKVxuICAgKGFwcGVuZC10ZXh0IVxuICAgIFt0aGlzIHRleHRdXG4gICAgKGxldFxuICAgICBbbm9kZVxuICAgICAgKC5jcmVhdGVUZXh0Tm9kZSBqcy9kb2N1bWVudCB0ZXh0KVxuICAgICAgX1xuICAgICAgKC5hcHBlbmRDaGlsZCBjb250ZW50IG5vZGUpXG4gICAgICBhbGwtdGV4dFxuICAgICAgKC4tdGV4dENvbnRlbnQgY29udGVudClcbiAgICAgIGNoYXItY291bnRcbiAgICAgIChtYXggMCAoLSAoY291bnQgYWxsLXRleHQpIGFwcGVuZC1saW1pdCkpXG4gICAgICBuZXctYWxsLXRleHRcbiAgICAgIChzdWJzIGFsbC10ZXh0IGNoYXItY291bnQpXG4gICAgICBjaGFyLWNvdW50XG4gICAgICAoaWZcbiAgICAgICAoLmVuZHNXaXRoIG5ldy1hbGwtdGV4dCBcIlxcblwiKVxuICAgICAgIChkZWMgKGNvdW50IG5ldy1hbGwtdGV4dCkpXG4gICAgICAgKGNvdW50IG5ldy1hbGwtdGV4dCkpXVxuICAgICAod2hlblxuICAgICAgKG5vdD0gYWxsLXRleHQgbmV3LWFsbC10ZXh0KVxuICAgICAgKHNldCEgKC4tdGV4dENvbnRlbnQgY29udGVudCkgbmV3LWFsbC10ZXh0KSlcbiAgICAgKHJlc2V0LWVkaXQtaGlzdG9yeSEgdGhpcyBjaGFyLWNvdW50KSkpXG4gICAoZW50ZXIhXG4gICAgW3RoaXNdXG4gICAgKGlmXG4gICAgIGVkaXRvcj9cbiAgICAgKC5leGVjQ29tbWFuZCBqcy9kb2N1bWVudCBcImluc2VydEhUTUxcIiBmYWxzZSBcIlxcblwiKVxuICAgICAobGV0XG4gICAgICBbdGV4dFxuICAgICAgICh0cmltciAoLi10ZXh0Q29udGVudCBjb250ZW50KSlcbiAgICAgICBwb3N0LXRleHRcbiAgICAgICAoc3VicyB0ZXh0IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpKV1cbiAgICAgIChyZXNldC1lZGl0LWhpc3RvcnkhIHRoaXMgKGNvdW50IHRleHQpKVxuICAgICAgKGNvbnNvbGUvdXBkYXRlLWNvbnNvbGUtaGlzdG9yeSEgKmNvbnNvbGUtaGlzdG9yeSBwb3N0LXRleHQpXG4gICAgICAoY29uc29sZS1jYWxsYmFjayBwb3N0LXRleHQpKSkpXG4gICAodXAhXG4gICAgW3RoaXMgYWx0P11cbiAgICAoaWZcbiAgICAgYWx0P1xuICAgICAod2hlbi1sZXRcbiAgICAgIFtlbGVtIChkb20vZ2V0LWZvY3VzZWQtZm9ybSldXG4gICAgICAod2hlbi1sZXRcbiAgICAgICBbc3RhdGUgKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KV1cbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW2VsZW1cbiAgICAgICAgIChpZlxuICAgICAgICAgIChhbmRcbiAgICAgICAgICAgKDpzZWxlY3Rpb24tY2hhbmdlPyBzdGF0ZSlcbiAgICAgICAgICAgKD0gZWxlbSAoc29tZS0+IHN0YXRlIDpjcm9wcGVkLXN0YXRlIDplbGVtZW50KSkpXG4gICAgICAgICAgKGRvbS9nZXQtcGFyZW50IGVsZW0gXCJjb2xsZWN0aW9uXCIpXG4gICAgICAgICAgZWxlbSldXG4gICAgICAgIChsZXRcbiAgICAgICAgIFt0ZXh0ICguLXRleHRDb250ZW50IGVsZW0pIHBvcyBbMCAoY291bnQgdGV4dCldXVxuICAgICAgICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBlbGVtIHBvcylcbiAgICAgICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5IVxuICAgICAgICAgICplZGl0LWhpc3RvcnlcbiAgICAgICAgICAoYXNzb2NcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgOnNlbGVjdGlvbi1jaGFuZ2U/XG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICAgOmNyb3BwZWQtc3RhdGVcbiAgICAgICAgICAgezpjdXJzb3ItcG9zaXRpb24gcG9zLCA6dGV4dCB0ZXh0LCA6ZWxlbWVudCBlbGVtfSkpXG4gICAgICAgICAodXBkYXRlLWhpZ2hsaWdodCEgY29udGVudCAqbGFzdC1oaWdobGlnaHQtZWxlbSkpKSkpXG4gICAgICh3aGVuLW5vdFxuICAgICAgZWRpdG9yP1xuICAgICAgKGxldFxuICAgICAgIFt0ZXh0XG4gICAgICAgICguLXRleHRDb250ZW50IGNvbnRlbnQpXG4gICAgICAgIHN0YXJ0XG4gICAgICAgIChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXG4gICAgICAgIHByZS10ZXh0XG4gICAgICAgIChzdWJzIHRleHQgMCAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KSlcbiAgICAgICAgbGluZVxuICAgICAgICAob3IgKGNvbnNvbGUvdXAhICpjb25zb2xlLWhpc3RvcnkpIFwiXCIpXG4gICAgICAgIHN0YXRlXG4gICAgICAgIHs6Y3Vyc29yLXBvc2l0aW9uIFtzdGFydCBzdGFydF0sXG4gICAgICAgICA6dGV4dCAoc3RyIHByZS10ZXh0IGxpbmUgXFxuZXdsaW5lKX1dXG4gICAgICAgKC0+PlxuICAgICAgICBzdGF0ZVxuICAgICAgICAodXBkYXRlLWVkaXQtaGlzdG9yeSEgKmVkaXQtaGlzdG9yeSlcbiAgICAgICAgKHJlZnJlc2ghIHRoaXMpKSkpKSlcbiAgIChkb3duIVxuICAgIFt0aGlzIGFsdD9dXG4gICAgKGlmXG4gICAgIGFsdD9cbiAgICAgKHdoZW5cbiAgICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSlcbiAgICAgICh1bmRvISB0aGlzKSlcbiAgICAgKHdoZW4tbm90XG4gICAgICBlZGl0b3I/XG4gICAgICAobGV0XG4gICAgICAgW3RleHRcbiAgICAgICAgKC4tdGV4dENvbnRlbnQgY29udGVudClcbiAgICAgICAgc3RhcnRcbiAgICAgICAgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSlcbiAgICAgICAgcHJlLXRleHRcbiAgICAgICAgKHN1YnMgdGV4dCAwIHN0YXJ0KVxuICAgICAgICBsaW5lXG4gICAgICAgIChvciAoY29uc29sZS9kb3duISAqY29uc29sZS1oaXN0b3J5KSBcIlwiKVxuICAgICAgICBzdGF0ZVxuICAgICAgICB7OmN1cnNvci1wb3NpdGlvbiBbc3RhcnQgc3RhcnRdLFxuICAgICAgICAgOnRleHQgKHN0ciBwcmUtdGV4dCBsaW5lIFxcbmV3bGluZSl9XVxuICAgICAgICgtPj5cbiAgICAgICAgc3RhdGVcbiAgICAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkpXG4gICAgICAgIChyZWZyZXNoISB0aGlzKSkpKSkpXG4gICAodGFiISBbdGhpc10gKHdoZW4gZWRpdG9yPyAocmVzZXQhICphbGxvdy10YWI/IHRydWUpKSlcbiAgIChyZWZyZXNoIVxuICAgIFt0aGlzIHN0YXRlXVxuICAgIChsZXRcbiAgICAgW3N0YXRlXG4gICAgICAoY29uZFxuICAgICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpXG4gICAgICAgc3RhdGVcbiAgICAgICBlZGl0b3I/XG4gICAgICAgKHJlZnJlc2gtY29udGVudCEgY29udGVudCBzdGF0ZSBjbGo/KVxuICAgICAgIDplbHNlXG4gICAgICAgKHJlZnJlc2gtY29uc29sZS1jb250ZW50IVxuICAgICAgICBjb250ZW50XG4gICAgICAgIHN0YXRlXG4gICAgICAgIChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXG4gICAgICAgIGNsaj8pKV1cbiAgICAgKHdoZW5cbiAgICAgIChvciBmb2N1cz8gKG5vdCBAKmZpcnN0LXJlZnJlc2g/KSlcbiAgICAgIChyZWZyZXNoLWN1cnNvci1wb3NpdGlvbiEgY29udGVudCBzdGF0ZSkpXG4gICAgICh3aGVuIGNsaj8gKHJlZnJlc2gtZXJyb3JzLWFuZC1kZWxpbWl0ZXJzISBjb250ZW50IGV2ZW50cy1jaGFuKSlcbiAgICAgKHdoZW5cbiAgICAgIGVkaXRvcj9cbiAgICAgIChzb21lLT5cbiAgICAgICAoLnF1ZXJ5U2VsZWN0b3IgcHMgXCIubnVtYmVyc1wiKVxuICAgICAgIChyZWZyZXNoLW51bWJlcnMhIChjb3VudCAocmUtc2VxICNcIlxcblwiICg6dGV4dCBzdGF0ZSkpKSkpXG4gICAgICAod2hlblxuICAgICAgIGNsaj9cbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW2VsZW0gKC5xdWVyeVNlbGVjdG9yIHBzIFwiLmluc3RhcmVwbFwiKV1cbiAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAoLT4gZWxlbSAuLXN0eWxlIC4tZGlzcGxheSAoPSBcIm5vbmVcIikpXG4gICAgICAgICAocmVmcmVzaC1pbnN0YXJlcGwtd2l0aC1kZWxheSFcbiAgICAgICAgICBlbGVtXG4gICAgICAgICAgY29udGVudFxuICAgICAgICAgIGNvbXBpbGVyLWZuXG4gICAgICAgICAgYXBwZW5kLWxpbWl0KSkpKSlcbiAgICAgKHVwZGF0ZS1oaWdobGlnaHQhIGNvbnRlbnQgKmxhc3QtaGlnaGxpZ2h0LWVsZW0pKSlcbiAgIChlZGl0LWFuZC1yZWZyZXNoIVxuICAgIFt0aGlzIHN0YXRlXVxuICAgIChhcy0+XG4gICAgIHN0YXRlXG4gICAgICRcbiAgICAgKGFkZC1uZXdsaW5lICQpXG4gICAgIChpZlxuICAgICAgY2xqP1xuICAgICAgKGFkZC1wYXJpbmZlclxuICAgICAgICRcbiAgICAgICAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KVxuICAgICAgIChpZiBmaXgtaW5kZW50LW9uLWluaXQ/IEAqZmlyc3QtcmVmcmVzaD8gZmFsc2UpKVxuICAgICAgJClcbiAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkgJClcbiAgICAgKHJlZnJlc2ghIHRoaXMgJCkpKVxuICAgKGluaXRpYWxpemUhXG4gICAgW3RoaXNdXG4gICAgKHdoZW5cbiAgICAgZWRpdG9yP1xuICAgICAoLT4+IChpbml0LXN0YXRlIGNvbnRlbnQgZmFsc2UgZmFsc2UpIChlZGl0LWFuZC1yZWZyZXNoISB0aGlzKSkpXG4gICAgKHJlc2V0ISAqZmlyc3QtcmVmcmVzaD8gZmFsc2UpKVxuICAgKHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50IVxuICAgIFt0aGlzIGV2ZW50XVxuICAgIChsZXRcbiAgICAgW3RhYj9cbiAgICAgIChrZXktbmFtZT8gZXZlbnQgOnRhYilcbiAgICAgIHN0YXRlXG4gICAgICAoaW5pdC1zdGF0ZSBjb250ZW50IGVkaXRvcj8gdGFiPyldXG4gICAgICh3aGVuLW5vdFxuICAgICAgKGFuZCB0YWI/IChub3QgQCphbGxvdy10YWI/KSlcbiAgICAgIChlZGl0LWFuZC1yZWZyZXNoIVxuICAgICAgIHRoaXNcbiAgICAgICAoY2FzZVxuICAgICAgICAoa2V5LWNvZGUgZXZlbnQpXG4gICAgICAgIDEzXG4gICAgICAgIChhc3NvYyBzdGF0ZSA6aW5kZW50LXR5cGUgOnJldHVybilcbiAgICAgICAgOVxuICAgICAgICAoYXNzb2NcbiAgICAgICAgIHN0YXRlXG4gICAgICAgICA6aW5kZW50LXR5cGVcbiAgICAgICAgIChpZiAoLi1zaGlmdEtleSBldmVudCkgOmJhY2sgOmZvcndhcmQpKVxuICAgICAgICAoYXNzb2Mgc3RhdGUgOmluZGVudC10eXBlIDpub3JtYWwpKSkpXG4gICAgICh3aGVuIHRhYj8gKHJlc2V0ISAqYWxsb3ctdGFiPyBmYWxzZSkpKSlcbiAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSFcbiAgICBbdGhpc11cbiAgICAoZWRpdC1hbmQtcmVmcmVzaCFcbiAgICAgdGhpc1xuICAgICAoYXNzb2MgKGluaXQtc3RhdGUgY29udGVudCBmYWxzZSBmYWxzZSkgOmluZGVudC10eXBlIDpub3JtYWwpKSlcbiAgIChldmFsIVxuICAgIFt0aGlzIGZvcm0gY2FsbGJhY2tdXG4gICAgKGNvbXBpbGVyLWZuXG4gICAgIFtmb3JtXVxuICAgICAoZm4qIFtwMV9fNDUwNDMjXSAoY2FsbGJhY2sgKGZpcnN0IHAxX180NTA0MyMpKSkpKSkpKVxuIn0gezpzeW0ga2V5LWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXZlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LWNvZGVcbiBbZXZlbnRdXG4gKGxldCBbY29kZSAoLi1rZXlDb2RlIGV2ZW50KV0gKGlmIChwb3M/IGNvZGUpIGNvZGUgKC4td2hpY2ggZXZlbnQpKSkpXG4ifSB7OnN5bSByZWRvISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSB0YWIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHRyYW5zaWVudC1tYXA/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRyYW5zaWVudC1tYXA/XG4gKGZuKlxuICBbcDFfXzQ1MDM1I11cbiAgKG9yXG4gICAoaW5zdGFuY2U/IGNsanMuY29yZS9UcmFuc2llbnRBcnJheU1hcCBwMV9fNDUwMzUjKVxuICAgKGluc3RhbmNlPyBjbGpzLmNvcmUvVHJhbnNpZW50SGFzaE1hcCBwMV9fNDUwMzUjKSkpKVxuIn0gezpzeW0gcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhLCA6bWV0YSB7OmRvYyAiUmVwbGFjZXMgYSBzaW5nbGUgbm9kZSBpbiB0aGUgY29udGVudCwgYW5kIHNpYmxpbmdzIGlmIG5lY2Vzc2FyeS4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW2VsZW1lbnQgdGV4dF0sIDphcyBjcm9wcGVkLXN0YXRlfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZyZXNoLWNvbnRlbnQtZWxlbWVudCFcbiBcIlJlcGxhY2VzIGEgc2luZ2xlIG5vZGUgaW4gdGhlIGNvbnRlbnQsIGFuZCBzaWJsaW5ncyBpZiBuZWNlc3NhcnkuXCJcbiBbezprZXlzIFtlbGVtZW50IHRleHRdLCA6YXMgY3JvcHBlZC1zdGF0ZX1dXG4gKGxldFxuICBbcGFyZW50XG4gICAoLi1wYXJlbnRFbGVtZW50IGVsZW1lbnQpXG4gICBsYXN0LWVsZW1cbiAgICguLWxhc3RDaGlsZCBwYXJlbnQpXG4gICBsYXN0LWVycm9yXG4gICAobG9vcFxuICAgIFtjdXJyZW50LWVsZW0gbGFzdC1lbGVtXVxuICAgIChjb25kXG4gICAgIChkb20vZXJyb3Itbm9kZT8gY3VycmVudC1lbGVtKVxuICAgICBjdXJyZW50LWVsZW1cbiAgICAgKG9yIChuaWw/IGN1cnJlbnQtZWxlbSkgKD0gZWxlbWVudCBjdXJyZW50LWVsZW0pKVxuICAgICBuaWxcbiAgICAgOmVsc2VcbiAgICAgKHJlY3VyICguLXByZXZpb3VzU2libGluZyBjdXJyZW50LWVsZW0pKSkpXG4gICBsYXN0LWVsZW0tdG8tcmVmcmVzaFxuICAgKHdoZW5cbiAgICBsYXN0LWVycm9yXG4gICAgKGxvb3BcbiAgICAgW2N1cnJlbnQtZWxlbSBsYXN0LWVycm9yXVxuICAgICAoaWYtbGV0XG4gICAgICBbc2libGluZyAoLi1uZXh0U2libGluZyBjdXJyZW50LWVsZW0pXVxuICAgICAgKGlmIChkb20vY29sbC1ub2RlPyBzaWJsaW5nKSBjdXJyZW50LWVsZW0gKHJlY3VyIHNpYmxpbmcpKVxuICAgICAgY3VycmVudC1lbGVtKSkpXG4gICBvbGQtZWxlbXNcbiAgIChsb29wXG4gICAgW2VsZW1zIFtlbGVtZW50XSBjdXJyZW50LWVsZW0gZWxlbWVudF1cbiAgICAoY29uZFxuICAgICAoPSBsYXN0LWVsZW0tdG8tcmVmcmVzaCBjdXJyZW50LWVsZW0pXG4gICAgIGVsZW1zXG4gICAgIChvciAoc29tZT8gbGFzdC1lbGVtLXRvLXJlZnJlc2gpIChkb20vdGV4dC1ub2RlPyBjdXJyZW50LWVsZW0pKVxuICAgICAoaWYtbGV0XG4gICAgICBbc2libGluZyAoLi1uZXh0U2libGluZyBjdXJyZW50LWVsZW0pXVxuICAgICAgKHJlY3VyIChjb25qIGVsZW1zIHNpYmxpbmcpIHNpYmxpbmcpXG4gICAgICBlbGVtcylcbiAgICAgOmVsc2VcbiAgICAgZWxlbXMpKVxuICAgX1xuICAgKHNldCEgKC4tdGV4dENvbnRlbnQgZWxlbWVudCkgdGV4dClcbiAgIHRleHRcbiAgIChqb2luIChtYXAgKGZuKiBbcDFfXzQ1MDQxI10gKC4tdGV4dENvbnRlbnQgcDFfXzQ1MDQxIykpIG9sZC1lbGVtcykpXG4gICB0ZW1wLWVsZW1cbiAgICguY3JlYXRlRWxlbWVudCBqcy9kb2N1bWVudCBcInNwYW5cIilcbiAgIF9cbiAgIChzZXQhICguLWlubmVySFRNTCB0ZW1wLWVsZW0pIChocy9jb2RlLT5odG1sIHRleHQpKVxuICAgbmV3LWVsZW1zXG4gICAoZG9hbGxcbiAgICAoZm9yXG4gICAgIFtpIChyYW5nZSAoLT4gdGVtcC1lbGVtIC4tY2hpbGROb2RlcyAuLWxlbmd0aCkpXVxuICAgICAoLT4gdGVtcC1lbGVtIC4tY2hpbGROb2RlcyAoLml0ZW0gaSkpKSldXG4gIChkb3NlcSBbbmV3LWVsZW0gbmV3LWVsZW1zXSAoLmluc2VydEJlZm9yZSBwYXJlbnQgbmV3LWVsZW0gZWxlbWVudCkpXG4gIChkb3NlcSBbb2xkLWVsZW0gb2xkLWVsZW1zXSAoLnJlbW92ZUNoaWxkIHBhcmVudCBvbGQtZWxlbSkpXG4gIChhc3NvYyBjcm9wcGVkLXN0YXRlIDplbGVtZW50IChmaXJzdCBuZXctZWxlbXMpKSkpXG4ifSB7OnN5bSBlbGVtPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZWxlbT8gKGZuKiBbcDFfXzQ1MDM2I10gKGluc3RhbmNlPyBqcy9FbGVtZW50IHAxX180NTAzNiMpKSlcbiJ9IHs6c3ltIGVudGVyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBhcHBlbmQtdGV4dCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB0ZXh0XSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBsaW5lLW51bWJlcnMsIDptZXRhIHs6ZG9jICJBZGRzIGxpbmUgbnVtYmVycyB0byB0aGUgbnVtYmVycy4iLCA6YXJnbGlzdHMgKFtsaW5lLWNvdW50XSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtbnVtYmVyc1xuIFwiQWRkcyBsaW5lIG51bWJlcnMgdG8gdGhlIG51bWJlcnMuXCJcbiBbbGluZS1jb3VudF1cbiAoam9pbiAoZm9yIFtpIChyYW5nZSBsaW5lLWNvdW50KV0gKHN0ciBcIjxkaXY+XCIgKGluYyBpKSBcIjwvZGl2PlwiKSkpKVxuIn0gezpzeW0gdXBkYXRlLWhpZ2hsaWdodCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29udGVudCAqbGFzdC1lbGVtXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1oaWdobGlnaHQhXG4gW2NvbnRlbnQgKmxhc3QtZWxlbV1cbiAod2hlbi1sZXRcbiAgW2VsZW0gQCpsYXN0LWVsZW1dXG4gIChzZXQhICguLWJhY2tncm91bmRDb2xvciAoLi1zdHlsZSBlbGVtKSkgbmlsKVxuICAocmVzZXQhICpsYXN0LWVsZW0gbmlsKSlcbiAod2hlbi1sZXRcbiAgW2VsZW0gKGRvbS9nZXQtZm9jdXNlZC1mb3JtKV1cbiAgKHdoZW4tbGV0XG4gICBbY29sb3JcbiAgICAoLmdldFByb3BlcnR5VmFsdWVcbiAgICAgKC5nZXRDb21wdXRlZFN0eWxlIGpzL3dpbmRvdyAoLi1maXJzdENoaWxkIGVsZW0pKVxuICAgICBcImNvbG9yXCIpXVxuICAgKGxldFxuICAgIFtuZXctY29sb3IgKC0+IGNvbG9yIChyZXBsYWNlICNcInJnYlxcKFwiIFwiXCIpIChyZXBsYWNlICNcIlxcKVwiIFwiXCIpKV1cbiAgICAoc2V0IVxuICAgICAoLi1iYWNrZ3JvdW5kQ29sb3IgKC4tc3R5bGUgZWxlbSkpXG4gICAgIChzdHIgXCJyZ2JhKFwiIG5ldy1jb2xvciBcIiwgMC4xKVwiKSlcbiAgICAocmVzZXQhICpsYXN0LWVsZW0gZWxlbSkpKSkpXG4ifSB7OnN5bSBpbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BzIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdFxuIFtwcyBvcHRzXVxuICguaW5pdCBqcy9yYW5neSlcbiAobGV0XG4gIFtvcHRzXG4gICAoanMtPmNsaiBvcHRzIDprZXl3b3JkaXplLWtleXMgdHJ1ZSlcbiAgIGNvbnRlbnRcbiAgICgucXVlcnlTZWxlY3RvciBwcyBcIi5jb250ZW50XCIpXG4gICBldmVudHMtY2hhblxuICAgKGNoYW4pXG4gICBlZGl0b3JcbiAgIChjcmVhdGUtZWRpdG9yIHBzIGNvbnRlbnQgZXZlbnRzLWNoYW4gb3B0cyldXG4gIChzZXQhICguLXNwZWxsY2hlY2sgcHMpIGZhbHNlKVxuICAod2hlbi1ub3RcbiAgIGNvbnRlbnRcbiAgICh0aHJvdyAoanMvRXJyb3IuIFwiQ2FuJ3QgZmluZCBhIGRpdiB3aXRoIGNsYXNzICdjb250ZW50J1wiKSkpXG4gIChpbml0aWFsaXplISBlZGl0b3IpXG4gIChhZGQtZXZlbnQtbGlzdGVuZXJzISBjb250ZW50IGV2ZW50cy1jaGFuIG9wdHMpXG4gIChnb1xuICAgKHdoaWxlXG4gICAgdHJ1ZVxuICAgIChsZXRcbiAgICAgW2V2ZW50ICg8ISBldmVudHMtY2hhbildXG4gICAgICh3aGVuLW5vdFxuICAgICAgKHNvbWUtPlxuICAgICAgIG9wdHNcbiAgICAgICA6YmVmb3JlLWNoYW5nZS1jYWxsYmFja1xuICAgICAgICgoZm4qIFtwMV9fNDUwNDgjXSAocDFfXzQ1MDQ4IyBldmVudCkpKSlcbiAgICAgIChjYXNlXG4gICAgICAgKC4tdHlwZSBldmVudClcbiAgICAgICBcImtleWRvd25cIlxuICAgICAgIChjb25kXG4gICAgICAgIChhbmRcbiAgICAgICAgIChrZXktbmFtZT8gZXZlbnQgOnVuZG8tb3ItcmVkbylcbiAgICAgICAgICgtPiBvcHRzIDpkaXNhYmxlLXVuZG8tcmVkbz8gbm90KSlcbiAgICAgICAgKGlmICguLXNoaWZ0S2V5IGV2ZW50KSAocmVkbyEgZWRpdG9yKSAodW5kbyEgZWRpdG9yKSlcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6ZW50ZXIpXG4gICAgICAgIChlbnRlciEgZWRpdG9yKVxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDp1cC1hcnJvdylcbiAgICAgICAgKHVwISBlZGl0b3IgKC4tYWx0S2V5IGV2ZW50KSlcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6ZG93bi1hcnJvdylcbiAgICAgICAgKGRvd24hIGVkaXRvciAoLi1hbHRLZXkgZXZlbnQpKVxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDp0YWIpXG4gICAgICAgICh0YWIhIGVkaXRvcikpXG4gICAgICAgXCJrZXl1cFwiXG4gICAgICAgKGNvbmRcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6YXJyb3dzKVxuICAgICAgICAodXBkYXRlLWN1cnNvci1wb3NpdGlvbiFcbiAgICAgICAgIGVkaXRvclxuICAgICAgICAgKGRvbS9nZXQtY3Vyc29yLXBvc2l0aW9uIGNvbnRlbnQgZmFsc2UpKVxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDpnZW5lcmFsKVxuICAgICAgICAocmVmcmVzaC1hZnRlci1rZXktZXZlbnQhIGVkaXRvciBldmVudCkpXG4gICAgICAgXCJjdXRcIlxuICAgICAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSEgZWRpdG9yKVxuICAgICAgIFwicGFzdGVcIlxuICAgICAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSEgZWRpdG9yKVxuICAgICAgIFwibW91c2V1cFwiXG4gICAgICAgKHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXG4gICAgICAgIGVkaXRvclxuICAgICAgICAoZG9tL2dldC1jdXJzb3ItcG9zaXRpb25cbiAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgIChzb21lPyAoOmNvbnNvbGUtY2FsbGJhY2sgb3B0cykpKSlcbiAgICAgICBcIm1vdXNlZW50ZXJcIlxuICAgICAgIChzaG93LWVycm9yLW1lc3NhZ2UhIHBzIGV2ZW50KVxuICAgICAgIFwibW91c2VsZWF2ZVwiXG4gICAgICAgKGhpZGUtZXJyb3ItbWVzc2FnZXMhIHBzKVxuICAgICAgIG5pbClcbiAgICAgIChzb21lLT5cbiAgICAgICBvcHRzXG4gICAgICAgOmNoYW5nZS1jYWxsYmFja1xuICAgICAgICgoZm4qIFtwMV9fNDUwNDkjXSAocDFfXzQ1MDQ5IyBldmVudCkpKSkpKSkpXG4gIGVkaXRvcikpXG4ifSB7OnN5bSBjYW4tdW5kbz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gcmVmcmVzaC1jb250ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IHN0YXRlIGNsaj9dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1jb250ZW50IVxuIFtjb250ZW50IHN0YXRlIGNsaj9dXG4gKGlmLW5vdFxuICBjbGo/XG4gIChkb1xuICAgKHNldCEgKC4taW5uZXJIVE1MIGNvbnRlbnQpIChocy9lc2NhcGUtaHRtbC1zdHIgKDp0ZXh0IHN0YXRlKSkpXG4gICBzdGF0ZSlcbiAgKGlmLWxldFxuICAgW2Nyb3AgKHNvbWUtPiBzdGF0ZSA6Y3JvcHBlZC1zdGF0ZSByZWZyZXNoLWNvbnRlbnQtZWxlbWVudCEpXVxuICAgKGlmXG4gICAgKG5vdD0gKDp0ZXh0IHN0YXRlKSAoLi10ZXh0Q29udGVudCBjb250ZW50KSlcbiAgICAocmVmcmVzaC1jb250ZW50ISBjb250ZW50IChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpIGNsaj8pXG4gICAgKGFzc29jIHN0YXRlIDpjcm9wcGVkLXN0YXRlIGNyb3ApKVxuICAgKGRvXG4gICAgKHNldCEgKC4taW5uZXJIVE1MIGNvbnRlbnQpIChocy9jb2RlLT5odG1sICg6dGV4dCBzdGF0ZSkpKVxuICAgIChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpKSkpKVxuIn0gezpzeW0gcmVkbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlZGl0b3JdKX0sIDpzb3VyY2UgIihkZWZuIHJlZG8gW2VkaXRvcl0gKHJlZG8hIGVkaXRvcikpXG4ifSB7OnN5bSBkZWJvdW5jZS1mdW5jdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIG1pbGxpc10pfSwgOnNvdXJjZSAiKGRlZm4gZGVib3VuY2UtZnVuY3Rpb24gW2YgbWlsbGlzXSAoZGVib3VuY2UgZiBtaWxsaXMpKVxuIn0gezpzeW0gcmVmcmVzaC1pbnN0YXJlcGwhLCA6bWV0YSB7OmRvYyAiUmVmcmVzaGVzIHRoZSBJbnN0YVJFUEwuIiwgOmFyZ2xpc3RzIChbaW5zdGFyZXBsIGNvbnRlbnQgY29tcGlsZXItZm4gbGltaXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1pbnN0YXJlcGwhXG4gXCJSZWZyZXNoZXMgdGhlIEluc3RhUkVQTC5cIlxuIFtpbnN0YXJlcGwgY29udGVudCBjb21waWxlci1mbiBsaW1pdF1cbiAobGV0XG4gIFtlbGVtc1xuICAgKGlyL2dldC1jb2xsZWN0aW9ucyBjb250ZW50KVxuICAgbG9jYXRpb25zXG4gICAoaXIvZWxlbXMtPmxvY2F0aW9ucyBlbGVtcyAoLi1vZmZzZXRUb3AgaW5zdGFyZXBsKSlcbiAgIGZvcm1zXG4gICAoLT4+XG4gICAgZWxlbXNcbiAgICAobWFwIGlyL2NvbGxlY3Rpb24tPmNvbnRlbnQpXG4gICAgKG1hcCAoZm4qIFtwMV9fNDUwMzgjXSAocmVwbGFjZSBwMV9fNDUwMzgjIFxcwqAgXCIgXCIpKSkpXVxuICAoY29tcGlsZXItZm5cbiAgIGZvcm1zXG4gICAoZm5cbiAgICBbcmVzdWx0c11cbiAgICAod2hlblxuICAgICAoLi1wYXJlbnRFbGVtZW50IGluc3RhcmVwbClcbiAgICAgKHNldCFcbiAgICAgICguLWlubmVySFRNTCBpbnN0YXJlcGwpXG4gICAgICAoaXIvcmVzdWx0cy0+aHRtbCByZXN1bHRzIGxvY2F0aW9ucyBsaW1pdCkpKSkpKSlcbiJ9IHs6c3ltIGVkaXQtYW5kLXJlZnJlc2ghLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgc3RhdGVdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJhaW5ib3ctY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhaW5ib3ctY291bnQgNSlcbiJ9IHs6c3ltIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgcG9zaXRpb25dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGluaXQtc3RhdGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBlZGl0b3IncyBzdGF0ZS4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsIGl0IHdpbGwgdHJ5IHRvIHNhdmVcbnRoZSBlbnRpcmUgc2VsZWN0aW9uIHJhdGhlciB0aGFuIGp1c3QgdGhlIGN1cnNvciBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFtjb250ZW50IGNyb3A/IGZ1bGwtc2VsZWN0aW9uP10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0LXN0YXRlXG4gXCJSZXR1cm5zIHRoZSBlZGl0b3IncyBzdGF0ZS4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsIGl0IHdpbGwgdHJ5IHRvIHNhdmVcXG50aGUgZW50aXJlIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBqdXN0IHRoZSBjdXJzb3IgcG9zaXRpb24uXCJcbiBbY29udGVudCBjcm9wPyBmdWxsLXNlbGVjdGlvbj9dXG4gKGxldFxuICBbc2VsZWN0aW9uXG4gICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcbiAgIGFuY2hvclxuICAgKC4tYW5jaG9yTm9kZSBzZWxlY3Rpb24pXG4gICBmb2N1c1xuICAgKC4tZm9jdXNOb2RlIHNlbGVjdGlvbilcbiAgIHBhcmVudFxuICAgKHdoZW4gKGFuZCBhbmNob3IgZm9jdXMpIChkb20vY29tbW9uLWFuY2VzdG9yIGFuY2hvciBmb2N1cykpXG4gICBzdGF0ZVxuICAgezpjdXJzb3ItcG9zaXRpb25cbiAgICAoLT4gY29udGVudCAoZG9tL2dldC1zZWxlY3Rpb24gZnVsbC1zZWxlY3Rpb24/KSA6Y3Vyc29yLXBvc2l0aW9uKSxcbiAgICA6dGV4dCAoLi10ZXh0Q29udGVudCBjb250ZW50KX1dXG4gIChpZi1sZXRcbiAgIFtjcm9wcGVkLXNlbGVjdGlvbiAoc29tZS0+IHBhcmVudCAoZG9tL2dldC1zZWxlY3Rpb24gZmFsc2UpKV1cbiAgIChpZlxuICAgIGNyb3A/XG4gICAgKGFzc29jXG4gICAgIHN0YXRlXG4gICAgIDpjcm9wcGVkLXN0YXRlXG4gICAgIChhc3NvYyBjcm9wcGVkLXNlbGVjdGlvbiA6dGV4dCAoLi10ZXh0Q29udGVudCBwYXJlbnQpKSlcbiAgICBzdGF0ZSlcbiAgIHN0YXRlKSkpXG4ifSB7OnN5bSBldmFsISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGZvcm0gY2FsbGJhY2tdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGFkZC1wYXJpbmZlci1hZnRlci1jb25zb2xlLXN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNvbnNvbGUtc3RhcnQtbnVtXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1wYXJpbmZlci1hZnRlci1jb25zb2xlLXN0YXJ0XG4gW3N0YXRlIGNvbnNvbGUtc3RhcnQtbnVtXVxuIChsZXRcbiAgW3ByZS10ZXh0XG4gICAoc3VicyAoOnRleHQgc3RhdGUpIDAgY29uc29sZS1zdGFydC1udW0pXG4gICBwb3N0LXRleHRcbiAgIChzdWJzICg6dGV4dCBzdGF0ZSkgY29uc29sZS1zdGFydC1udW0pXG4gICBjbGVhcmVkLXRleHRcbiAgIChzdHIgKHJlcGxhY2UgcHJlLXRleHQgI1wiW15cXHJeXFxuXVwiIFwiIFwiKSBwb3N0LXRleHQpXG4gICB0ZW1wLXN0YXRlXG4gICAoYXNzb2Mgc3RhdGUgOnRleHQgY2xlYXJlZC10ZXh0KVxuICAgdGVtcC1zdGF0ZVxuICAgKGNwL2FkZC1wYXJpbmZlciA6Ym90aCB0ZW1wLXN0YXRlKVxuICAgbmV3LXRleHRcbiAgIChzdHIgcHJlLXRleHQgKHN1YnMgKDp0ZXh0IHRlbXAtc3RhdGUpIGNvbnNvbGUtc3RhcnQtbnVtKSldXG4gIChhc3NvYyBzdGF0ZSA6dGV4dCBuZXctdGV4dCkpKVxuIn0gezpzeW0gcmVmcmVzaC1udW1iZXJzISwgOm1ldGEgezpkb2MgIlJlZnJlc2hlcyB0aGUgbGluZSBudW1iZXJzLiIsIDphcmdsaXN0cyAoW251bWJlcnMgbGluZS1jb3VudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZyZXNoLW51bWJlcnMhXG4gXCJSZWZyZXNoZXMgdGhlIGxpbmUgbnVtYmVycy5cIlxuIFtudW1iZXJzIGxpbmUtY291bnRdXG4gKHNldCEgKC4taW5uZXJIVE1MIG51bWJlcnMpIChsaW5lLW51bWJlcnMgbGluZS1jb3VudCkpKVxuIn0gezpzeW0gcmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGV2ZW50XSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBhZGQtbmV3bGluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3RleHRdLCA6YXMgc3RhdGV9XSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1uZXdsaW5lXG4gW3s6a2V5cyBbdGV4dF0sIDphcyBzdGF0ZX1dXG4gKGlmLW5vdFxuICAoPSBcXG5ld2xpbmUgKGxhc3QgdGV4dCkpXG4gIChhc3NvYyBzdGF0ZSA6dGV4dCAoc3RyIHRleHQgXFxuZXdsaW5lKSlcbiAgc3RhdGUpKVxuIn0gezpzeW0gdXBkYXRlLWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeSBzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtZWRpdC1oaXN0b3J5IVxuIFsqZWRpdC1oaXN0b3J5IHN0YXRlXVxuICh0cnlcbiAgKG13bS91cGRhdGUtZWRpdC1oaXN0b3J5IVxuICAgKmVkaXQtaGlzdG9yeVxuICAgKGlmICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpIHN0YXRlIChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpKSlcbiAgc3RhdGVcbiAgKGNhdGNoIGpzL0Vycm9yIF8gKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpKVxuIn0gezpzeW0gcmVmcmVzaC1jb25zb2xlLWNvbnRlbnQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgc3RhdGUgY29uc29sZS1zdGFydC1udW0gY2xqP10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZyZXNoLWNvbnNvbGUtY29udGVudCFcbiBbY29udGVudCBzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSBjbGo/XVxuIChzZXQhXG4gICguLWlubmVySFRNTCBjb250ZW50KVxuICAoaWZcbiAgIGNsaj9cbiAgIChsZXRcbiAgICBbcHJlLXRleHRcbiAgICAgKHN1YnMgKDp0ZXh0IHN0YXRlKSAwIGNvbnNvbGUtc3RhcnQtbnVtKVxuICAgICBwb3N0LXRleHRcbiAgICAgKHN1YnMgKDp0ZXh0IHN0YXRlKSBjb25zb2xlLXN0YXJ0LW51bSldXG4gICAgKHN0ciAoaHMvZXNjYXBlLWh0bWwtc3RyIHByZS10ZXh0KSAoaHMvY29kZS0+aHRtbCBwb3N0LXRleHQpKSlcbiAgIChocy9lc2NhcGUtaHRtbC1zdHIgKDp0ZXh0IHN0YXRlKSkpKVxuIHN0YXRlKVxuIn0gezpzeW0gcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgZXZlbnRzLWNoYW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhXG4gW2NvbnRlbnQgZXZlbnRzLWNoYW5dXG4gKGhpZGUtZXJyb3ItbWVzc2FnZXMhICguLXBhcmVudEVsZW1lbnQgY29udGVudCkpXG4gKGRvc2VxXG4gIFtlbGVtICgtPiBjb250ZW50ICgucXVlcnlTZWxlY3RvckFsbCBcIi5lcnJvclwiKSBhcnJheS1zZXEpXVxuICAobGV0XG4gICBbc2hvdy1lcnJvci1pY29uIVxuICAgIChmbiBbZWxlbV0gKHNldCEgKC4tZGlzcGxheSAoLi1zdHlsZSBlbGVtKSkgXCJpbmxpbmUtYmxvY2tcIikpXG4gICAgc2hvdy1lcnJvci1pY29uIVxuICAgIChkZWJvdW5jZSBzaG93LWVycm9yLWljb24hIDEwMDApXVxuICAgKHNob3ctZXJyb3ItaWNvbiEgZWxlbSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBlbGVtXG4gICBcIm1vdXNlZW50ZXJcIlxuICAgKGZuKiBbcDFfXzQ1MDM5I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQ1MDM5IykpKVxuICAoZXZlbnRzL2xpc3RlblxuICAgZWxlbVxuICAgXCJtb3VzZWxlYXZlXCJcbiAgIChmbiogW3AxX180NTA0MCNdIChwdXQhIGV2ZW50cy1jaGFuIHAxX180NTA0MCMpKSkpXG4gKGRvc2VxXG4gIFtbZWxlbSBjbGFzcy1uYW1lXSAocmFpbmJvdy1kZWxpbWl0ZXJzIGNvbnRlbnQgLTEpXVxuICAoLmFkZCAoLi1jbGFzc0xpc3QgZWxlbSkgY2xhc3MtbmFtZSkpKVxuIn0gezpzeW0gYXBwZW5kLXRleHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yIHRleHRdKX0sIDpzb3VyY2UgIihkZWZuIGFwcGVuZC10ZXh0IFtlZGl0b3IgdGV4dF0gKGFwcGVuZC10ZXh0ISBlZGl0b3IgdGV4dCkpXG4ifSB7OnN5bSBwcmV2ZW50LWRlZmF1bHQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V2ZW50IG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldmVudC1kZWZhdWx0P1xuIFtldmVudCBvcHRzXVxuIChib29sZWFuXG4gIChvclxuICAgKGtleS1uYW1lPyBldmVudCA6dW5kby1vci1yZWRvKVxuICAgKGtleS1uYW1lPyBldmVudCA6dGFiKVxuICAgKGtleS1uYW1lPyBldmVudCA6ZW50ZXIpXG4gICAoYW5kXG4gICAgKG9yICg6Y29uc29sZS1jYWxsYmFjayBvcHRzKSAoLi1hbHRLZXkgZXZlbnQpKVxuICAgIChvciAoa2V5LW5hbWU/IGV2ZW50IDp1cC1hcnJvdykgKGtleS1uYW1lPyBldmVudCA6ZG93bi1hcnJvdykpKSkpKVxuIn0gezpzeW0gaW5pdGlhbGl6ZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gaW5pdC1hbGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBbb3B0c11dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1hbGxcbiBbJiBbb3B0c11dXG4gKGRvc2VxXG4gIFtwcyAoLT4ganMvZG9jdW1lbnQgKC5xdWVyeVNlbGVjdG9yQWxsIFwiLnBhcmVuLXNvdXBcIikgYXJyYXktc2VxKV1cbiAgKGluaXQgcHMgKG9yIG9wdHMgI2pzIHt9KSkpKVxuIn0gezpzeW0gYWRkLXBhcmluZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNvbnNvbGUtc3RhcnQtbnVtIGZpeC1pbmRlbnQ/XSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1wYXJpbmZlclxuIFtzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSBmaXgtaW5kZW50P11cbiAobGV0XG4gIFtjcm9wcGVkLXN0YXRlXG4gICAoOmNyb3BwZWQtc3RhdGUgc3RhdGUpXG4gICBzdGF0ZVxuICAgKGNvbmQtPlxuICAgIHN0YXRlXG4gICAgZml4LWluZGVudD9cbiAgICAoYXNzb2MgOmluZGVudC10eXBlIDpub3JtYWwgOmN1cnNvci1wb3NpdGlvbiBbMCAwXSkpXG4gICBpbmRlbnQtdHlwZVxuICAgKDppbmRlbnQtdHlwZSBzdGF0ZSlcbiAgIHN0YXRlXG4gICAoY29uZFxuICAgIChwb3M/IGNvbnNvbGUtc3RhcnQtbnVtKVxuICAgIChhZGQtcGFyaW5mZXItYWZ0ZXItY29uc29sZS1zdGFydCBzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSlcbiAgICBpbmRlbnQtdHlwZVxuICAgIChjcC9hZGQtaW5kZW50IHN0YXRlKVxuICAgIDplbHNlXG4gICAgKGNwL2FkZC1wYXJpbmZlciA6cGFyZW4gc3RhdGUpKV1cbiAgKGlmXG4gICAoYW5kIGNyb3BwZWQtc3RhdGUgaW5kZW50LXR5cGUpXG4gICAoYXNzb2NcbiAgICBzdGF0ZVxuICAgIDpjcm9wcGVkLXN0YXRlXG4gICAgKG1lcmdlXG4gICAgIGNyb3BwZWQtc3RhdGVcbiAgICAgKGNwL2FkZC1pbmRlbnQgKGFzc29jIGNyb3BwZWQtc3RhdGUgOmluZGVudC10eXBlIGluZGVudC10eXBlKSkpKVxuICAgc3RhdGUpKSlcbiJ9IHs6c3ltIHVuZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiB1bmRvIFtlZGl0b3JdICh1bmRvISBlZGl0b3IpKVxuIn0gezpzeW0gb2JqPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgb2JqPyAoZm4qIFtwMV9fNDUwMzcjXSAoaW5zdGFuY2U/IGpzL09iamVjdCBwMV9fNDUwMzcjKSkpXG4ifSB7OnN5bSBkb3duISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGFsdD9dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGFkZC1ldmVudC1saXN0ZW5lcnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgZXZlbnRzLWNoYW4gb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtZXZlbnQtbGlzdGVuZXJzIVxuIFtjb250ZW50IGV2ZW50cy1jaGFuIG9wdHNdXG4gKGRvdG9cbiAgY29udGVudFxuICAoZXZlbnRzL3JlbW92ZUFsbClcbiAgKGV2ZW50cy9saXN0ZW5cbiAgIFwia2V5ZG93blwiXG4gICAoZm5cbiAgICBbZV1cbiAgICAod2hlbiAocHJldmVudC1kZWZhdWx0PyBlIG9wdHMpICgucHJldmVudERlZmF1bHQgZSkpXG4gICAgKHB1dCEgZXZlbnRzLWNoYW4gZSkpKVxuICAoZXZlbnRzL2xpc3RlblxuICAgXCJrZXl1cFwiXG4gICAoZm4qIFtwMV9fNDUwNDQjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDUwNDQjKSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBcImN1dFwiXG4gICAoZm4qIFtwMV9fNDUwNDUjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDUwNDUjKSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBcInBhc3RlXCJcbiAgIChmbiogW3AxX180NTA0NiNdIChwdXQhIGV2ZW50cy1jaGFuIHAxX180NTA0NiMpKSlcbiAgKGV2ZW50cy9saXN0ZW5cbiAgIFwibW91c2V1cFwiXG4gICAoZm4qIFtwMV9fNDUwNDcjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDUwNDcjKSkpKSlcbiJ9IHs6c3ltIHJlc2V0LWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBzdGFydF0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gaGlkZS1lcnJvci1tZXNzYWdlcyEsIDptZXRhIHs6ZG9jICJIaWRlcyBhbGwgZXJyb3IgcG9wdXBzLiIsIDphcmdsaXN0cyAoW3BhcmVudC1lbGVtXSl9LCA6c291cmNlICIoZGVmblxuIGhpZGUtZXJyb3ItbWVzc2FnZXMhXG4gXCJIaWRlcyBhbGwgZXJyb3IgcG9wdXBzLlwiXG4gW3BhcmVudC1lbGVtXVxuIChkb3NlcVxuICBbZWxlbSAoLT4gcGFyZW50LWVsZW0gKC5xdWVyeVNlbGVjdG9yQWxsIFwiLmVycm9yLXRleHRcIikgYXJyYXktc2VxKV1cbiAgKC5yZW1vdmVDaGlsZCBwYXJlbnQtZWxlbSBlbGVtKSkpXG4ifSB7OnN5bSBFZGl0b3IsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhcHBlbmQtdGV4dCEgY2FuLXJlZG8/IGNhbi11bmRvPyBkb3duISBlZGl0LWFuZC1yZWZyZXNoISBlbnRlciEgZXZhbCEgaW5pdGlhbGl6ZSEgcmVkbyEgcmVmcmVzaCEgcmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISByZXNldC1lZGl0LWhpc3RvcnkhIHRhYiEgdW5kbyEgdXAhIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hKX0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmNvbW1vbnMgKHs6c3ltIG1hdGNoLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIG1hdGNoLW51bWJlclxuIFtzXVxuIChpZlxuICAobWF0Y2hlcz8gaW50LXBhdHRlcm4gcylcbiAgKG1hdGNoLWludCBzKVxuICAoaWZcbiAgIChtYXRjaGVzPyBmbG9hdC1wYXR0ZXJuIHMpXG4gICAobWF0Y2gtZmxvYXQgcylcbiAgICh3aGVuIChtYXRjaGVzPyByYXRpby1wYXR0ZXJuIHMpIChtYXRjaC1yYXRpbyBzKSkpKSlcbiJ9IHs6c3ltIHNraXAtbGluZSwgOm1ldGEgezpkb2MgIkFkdmFuY2VzIHRoZSByZWFkZXIgdG8gdGhlIGVuZCBvZiBhIGxpbmUuIFJldHVybnMgdGhlIHJlYWRlciIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBza2lwLWxpbmVcbiBcIkFkdmFuY2VzIHRoZSByZWFkZXIgdG8gdGhlIGVuZCBvZiBhIGxpbmUuIFJldHVybnMgdGhlIHJlYWRlclwiXG4gW3JlYWRlcl1cbiAobG9vcCBbXSAod2hlbi1ub3QgKG5ld2xpbmU/IChyZWFkLWNoYXIgcmVhZGVyKSkgKHJlY3VyKSkpXG4gcmVhZGVyKVxuIn0gezpzeW0gaW50LXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW50LXBhdHRlcm5cbiAjXCJeKFstK10/KSg/OigwKXwoWzEtOV1bMC05XSopfDBbeFhdKFswLTlBLUZhLWZdKyl8MChbMC03XSspfChbMS05XVswLTldPylbclJdKFswLTlBLVphLXpdKyl8MFswLTldKykoTik/JFwiKVxuIn0gezpzeW0gcmVhZC1jb21tZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciAmIF9dKX0sIDpzb3VyY2UgIihkZWZuIHJlYWQtY29tbWVudCBbcmRyICYgX10gKHNraXAtbGluZSByZHIpKVxuIn0gezpzeW0gcGFyc2Utc3ltYm9sLCA6bWV0YSB7OmRvYyAiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sIiwgOmFyZ2xpc3RzIChbdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2Utc3ltYm9sXG4gXCJQYXJzZXMgYSBzdHJpbmcgaW50byBhIHZlY3RvciBvZiB0aGUgbmFtZXNwYWNlIGFuZCBzeW1ib2xcIlxuIFt0b2tlbl1cbiAod2hlbi1ub3RcbiAgKG9yXG4gICAoaWRlbnRpY2FsPyBcIlwiIHRva2VuKVxuICAgKHRydWU/ICgudGVzdCAjXCI6JFwiIHRva2VuKSlcbiAgICh0cnVlPyAoLnRlc3QgI1wiXjo6XCIgdG9rZW4pKSlcbiAgKGxldFxuICAgW25zLWlkeFxuICAgICguaW5kZXhPZiB0b2tlbiBcIi9cIilcbiAgICBuc1xuICAgICh3aGVuIChwb3M/IG5zLWlkeCkgKHN1YnMgdG9rZW4gMCBucy1pZHgpKV1cbiAgIChpZi1ub3RcbiAgICAobmlsPyBucylcbiAgICAobGV0XG4gICAgIFtucy1pZHggKGluYyBucy1pZHgpXVxuICAgICAod2hlbi1ub3RcbiAgICAgICg9PSBucy1pZHggKGNvdW50IHRva2VuKSlcbiAgICAgIChsZXRcbiAgICAgICBbc3ltIChzdWJzIHRva2VuIG5zLWlkeCldXG4gICAgICAgKHdoZW5cbiAgICAgICAgKGFuZFxuICAgICAgICAgKG5vdCAobnVtZXJpYz8gKG50aCBzeW0gMCkpKVxuICAgICAgICAgKG5vdCAoaWRlbnRpY2FsPyBcIlwiIHN5bSkpXG4gICAgICAgICAoZmFsc2U/ICgudGVzdCAjXCI6JFwiIG5zKSlcbiAgICAgICAgIChvciAoaWRlbnRpY2FsPyBzeW0gXCIvXCIpICg9PSAtMSAoLmluZGV4T2Ygc3ltIFwiL1wiKSkpKVxuICAgICAgICBbbnMgc3ltXSkpKSlcbiAgICAod2hlblxuICAgICAob3IgKGlkZW50aWNhbD8gdG9rZW4gXCIvXCIpICg9PSAtMSAoLmluZGV4T2YgdG9rZW4gXCIvXCIpKSlcbiAgICAgW25pbCB0b2tlbl0pKSkpKVxuIn0gezpzeW0gbnVtYmVyLWxpdGVyYWw/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIHJlYWRlciBpcyBhdCB0aGUgc3RhcnQgb2YgYSBudW1iZXIgbGl0ZXJhbCIsIDphcmdsaXN0cyAoW3JlYWRlciBpbml0Y2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtYmVyLWxpdGVyYWw/XG4gXCJDaGVja3Mgd2hldGhlciB0aGUgcmVhZGVyIGlzIGF0IHRoZSBzdGFydCBvZiBhIG51bWJlciBsaXRlcmFsXCJcbiBbcmVhZGVyIGluaXRjaF1cbiAob3JcbiAgKG51bWVyaWM/IGluaXRjaClcbiAgKGFuZFxuICAgKG9yIChpZGVudGljYWw/IFxcKyBpbml0Y2gpIChpZGVudGljYWw/IFxcLSBpbml0Y2gpKVxuICAgKG51bWVyaWM/IChwZWVrLWNoYXIgcmVhZGVyKSkpKSlcbiJ9IHs6c3ltIHJlYWQtcGFzdCwgOm1ldGEgezpkb2MgIlJlYWQgdW50aWwgZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lc24ndCBtYXRjaCBwcmVkLCByZXR1cm5pbmdcbiAgIGNoYXIuIiwgOmFyZ2xpc3RzIChbcHJlZCByZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1wYXN0XG4gXCJSZWFkIHVudGlsIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgbWF0Y2ggcHJlZCwgcmV0dXJuaW5nXFxuICAgY2hhci5cIlxuIFtwcmVkIHJkcl1cbiAobG9vcCBbY2ggKHJlYWQtY2hhciByZHIpXSAoaWYgKHByZWQgY2gpIChyZWN1ciAocmVhZC1jaGFyIHJkcikpIGNoKSkpXG4ifSB7OnN5bSBmbG9hdC1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBmbG9hdC1wYXR0ZXJuICNcIihbLStdP1swLTldKyhcXC5bMC05XSopPyhbZUVdWy0rXT9bMC05XSspPykoTSk/XCIpXG4ifSB7OnN5bSBtYXRjaGVzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXR0ZXJuIHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWF0Y2hlcz9cbiBbcGF0dGVybiBzXVxuIChsZXQgW1ttYXRjaF0gKHJlLWZpbmQgcGF0dGVybiBzKV0gKGlkZW50aWNhbD8gbWF0Y2ggcykpKVxuIn0gezpzeW0gdGhyb3dpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21zZ10pfSwgOnNvdXJjZSAiKGRlZm4gdGhyb3dpbmctcmVhZGVyIFttc2ddIChmbiBbcmRyICYgX10gKHJlYWRlci1lcnJvciByZHIgbXNnKSkpXG4ifSB7OnN5bSByYXRpby1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiByYXRpby1wYXR0ZXJuICNcIihbLStdP1swLTldKykvKFswLTldKylcIilcbiJ9KSwgcGxheS1jbGpjLmluc3RhbmNlcyAoezpzeW0gLT5pbnN0YW5jZWQtZW50aXR5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBpbnN0YW5jZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gZW50aXR5LiIsIDphcmdsaXN0cyAoW2VudGl0eV0pfSwgOnByb3RvY29sIElJbnN0YW5jZX0gezpzeW0gSUluc3RhbmNlLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLT5pbnN0YW5jZWQtZW50aXR5KX0gezpzeW0gYXNzb2MsIDptZXRhIHs6ZG9jICJBZGRzIGFuIGVudGl0eSB0byB0aGUgaW5zdGFuY2VkIGVudGl0eSBhdCB0aGUgZ2l2ZW4gaW5kZXguIiwgOmFyZ2xpc3RzIChbaW5zdGFuY2VkLWVudGl0eSBpIGVudGl0eV0pfSwgOnByb3RvY29sIElJbnN0YW5jZWR9IHs6c3ltIGRpc3NvYywgOm1ldGEgezpkb2MgIlJlbW92ZXMgYW4gZW50aXR5IGZyb20gdGhlIGluc3RhbmNlZCBlbnRpdHkgYXQgdGhlIGdpdmVuIGluZGV4LiIsIDphcmdsaXN0cyAoW2luc3RhbmNlZC1lbnRpdHkgaV0pfSwgOnByb3RvY29sIElJbnN0YW5jZWR9IHs6c3ltIElJbnN0YW5jZWQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhc3NvYyBkaXNzb2MpfSksIGNsanMudG9vbHMucmVhZGVyLmVkbiAoezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlIG90aGVyd2lzZSByZXR1cm5zIGVvZi5cbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXG5cbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXG5cbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGRvZXNuJ3QgZGVwZW5kIG9uIGR5bmFtaWMgVmFycywgYWxsIGNvbmZpZ3VyYXRpb25cbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxuXG4gICBvcHRzIGlzIGEgbWFwIHRoYXQgY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXlzOlxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuICAgOnJlYWRlcnMgIC0gYSBtYXAgb2YgdGFnIHN5bWJvbHMgdG8gZGF0YS1yZWFkZXIgZnVuY3Rpb25zIHRvIGJlIGNvbnNpZGVyZWQgYmVmb3JlIGRlZmF1bHQtZGF0YS1yZWFkZXJzLlxuICAgICAgICAgICAgICBXaGVuIG5vdCBzdXBwbGllZCwgb25seSB0aGUgZGVmYXVsdC1kYXRhLXJlYWRlcnMgd2lsbCBiZSB1c2VkLlxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXG4gICAgICAgICAgICAgIGJlIGNhbGxlZCB3aXRoIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS4iLCA6YXJnbGlzdHMgW1tyZWFkZXJdIFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkXG4gXCJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxcbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUgb3RoZXJ3aXNlIHJldHVybnMgZW9mLlxcbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgZG9lc24ndCBkZXBlbmQgb24gZHluYW1pYyBWYXJzLCBhbGwgY29uZmlndXJhdGlvblxcbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxcblxcbiAgIG9wdHMgaXMgYSBtYXAgdGhhdCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGtleXM6XFxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxcbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cXG4gICAgICAgICAgICAgIFdoZW4gbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBkZWZhdWx0LWRhdGEtcmVhZGVycyB3aWxsIGJlIHVzZWQuXFxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuXCJcbiAoW3JlYWRlcl0gKHJlYWQge30gcmVhZGVyKSlcbiAoW3s6a2V5cyBbZW9mXSwgOmFzIG9wdHN9IHJlYWRlcl1cbiAgKGxldFxuICAgW2VvZi1lcnJvcj8gKG5vdCAoY29udGFpbnM/IG9wdHMgOmVvZikpXVxuICAgKHJlYWQgcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHMpKSlcbiAoW3JlYWRlciBlb2YtZXJyb3I/IGVvZiBvcHRzXVxuICAodHJ5XG4gICAobG9vcFxuICAgIFtdXG4gICAgKGxldFxuICAgICBbY2ggKHJlYWQtY2hhciByZWFkZXIpXVxuICAgICAoY29uZFxuICAgICAgKHdoaXRlc3BhY2U/IGNoKVxuICAgICAgKHJlY3VyKVxuICAgICAgKG5pbD8gY2gpXG4gICAgICAoaWYgZW9mLWVycm9yPyAoZXJyL3Rocm93LWVvZi1lcnJvciByZWFkZXIgbmlsKSBlb2YpXG4gICAgICAobnVtYmVyLWxpdGVyYWw/IHJlYWRlciBjaClcbiAgICAgIChyZWFkLW51bWJlciByZWFkZXIgY2ggb3B0cylcbiAgICAgIDplbHNlXG4gICAgICAobGV0XG4gICAgICAgW2YgKG1hY3JvcyBjaCldXG4gICAgICAgKGlmXG4gICAgICAgIGZcbiAgICAgICAgKGxldFxuICAgICAgICAgW3JlcyAoZiByZWFkZXIgY2ggb3B0cyldXG4gICAgICAgICAoaWYgKGlkZW50aWNhbD8gcmVzIHJlYWRlcikgKHJlY3VyKSByZXMpKVxuICAgICAgICAocmVhZC1zeW1ib2wgcmVhZGVyIGNoKSkpKSkpXG4gICAoY2F0Y2hcbiAgICBqcy9FcnJvclxuICAgIGVcbiAgICAoaWZcbiAgICAgKGV4LWluZm8/IGUpXG4gICAgIChsZXRcbiAgICAgIFtkIChleC1kYXRhIGUpXVxuICAgICAgKGlmXG4gICAgICAgKD0gOnJlYWRlci1leGNlcHRpb24gKDp0eXBlIGQpKVxuICAgICAgICh0aHJvdyBlKVxuICAgICAgICh0aHJvd1xuICAgICAgICAoZXgtaW5mb1xuICAgICAgICAgKC4tbWVzc2FnZSBlKVxuICAgICAgICAgKG1lcmdlXG4gICAgICAgICAgezp0eXBlIDpyZWFkZXItZXhjZXB0aW9ufVxuICAgICAgICAgIGRcbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKGluZGV4aW5nLXJlYWRlcj8gcmVhZGVyKVxuICAgICAgICAgICB7OmxpbmUgKGdldC1saW5lLW51bWJlciByZWFkZXIpLFxuICAgICAgICAgICAgOmNvbHVtbiAoZ2V0LWNvbHVtbi1udW1iZXIgcmVhZGVyKSxcbiAgICAgICAgICAgIDpmaWxlIChnZXQtZmlsZS1uYW1lIHJlYWRlcil9KSlcbiAgICAgICAgIGUpKSkpXG4gICAgICh0aHJvd1xuICAgICAgKGV4LWluZm9cbiAgICAgICAoLi1tZXNzYWdlIGUpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIHs6dHlwZSA6cmVhZGVyLWV4Y2VwdGlvbn1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW5kZXhpbmctcmVhZGVyPyByZWFkZXIpXG4gICAgICAgICB7OmxpbmUgKGdldC1saW5lLW51bWJlciByZWFkZXIpLFxuICAgICAgICAgIDpjb2x1bW4gKGdldC1jb2x1bW4tbnVtYmVyIHJlYWRlciksXG4gICAgICAgICAgOmZpbGUgKGdldC1maWxlLW5hbWUgcmVhZGVyKX0pKVxuICAgICAgIGUpKSkpKSkpXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBvcHRzIGlzIGEgbWFwIGFzIHBlciBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCIsIDphcmdsaXN0cyBbW3NdIFtvcHRzIHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zdHJpbmdcbiBcIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXFxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cXG5cXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcXG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcXG5cXG4gICBvcHRzIGlzIGEgbWFwIGFzIHBlciBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFwiXG4gKFtzXSAocmVhZC1zdHJpbmcgezplb2YgbmlsfSBzKSlcbiAoW29wdHMgc11cbiAgKHdoZW4gKGFuZCBzIChub3Q9IHMgXCJcIikpIChyZWFkIG9wdHMgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMpKSkpKVxuIn0pLCBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0LXZscSAoezpzeW0gZW5jb2RlLXZhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGVuY29kZS12YWxcbiBbbl1cbiAobGV0XG4gIFtzYiAoU3RyaW5nQnVmZmVyLikgdmxxICh0by12bHEtc2lnbmVkIG4pXVxuICAobG9vcFxuICAgW2RpZ2l0XG4gICAgKGJpdC1hbmQgdmxxIHZscS1iYXNlLW1hc2spXG4gICAgdmxxXG4gICAgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgdmxxIHZscS1iYXNlLXNoaWZ0KV1cbiAgIChpZlxuICAgIChwb3M/IHZscSlcbiAgICAobGV0XG4gICAgIFtkaWdpdCAoYml0LW9yIGRpZ2l0IHZscS1jb250aW51YXRpb24tYml0KV1cbiAgICAgKC5hcHBlbmQgc2IgKGJhc2U2NC9lbmNvZGUgZGlnaXQpKVxuICAgICAocmVjdXJcbiAgICAgIChiaXQtYW5kIHZscSB2bHEtYmFzZS1tYXNrKVxuICAgICAgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgdmxxIHZscS1iYXNlLXNoaWZ0KSkpXG4gICAgKC5hcHBlbmQgc2IgKGJhc2U2NC9lbmNvZGUgZGlnaXQpKSkpXG4gIChzdHIgc2IpKSlcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmbiBlbmNvZGUgW3ZdIChhcHBseSBzdHIgKG1hcCBlbmNvZGUtdmFsIHYpKSlcbiJ9IHs6c3ltIHZscS1jb250aW51YXRpb24tYml0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtY29udGludWF0aW9uLWJpdCB2bHEtYmFzZSlcbiJ9IHs6c3ltIHZscS1iYXNlLW1hc2ssIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZscS1iYXNlLW1hc2sgKGRlYyB2bHEtYmFzZSkpXG4ifSB7OnN5bSBkZWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWNvZGVcbiBbc11cbiAobGV0XG4gIFtsICguLWxlbmd0aCBzKV1cbiAgKGxvb3BcbiAgIFtpIDAgcmVzdWx0IDAgc2hpZnQgMF1cbiAgICh3aGVuXG4gICAgKD49IGkgbClcbiAgICAodGhyb3cgKGpzL0Vycm9yLiBcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKSkpXG4gICAobGV0XG4gICAgW2RpZ2l0IChiYXNlNjQvZGVjb2RlICguY2hhckF0IHMgaSkpXVxuICAgIChsZXRcbiAgICAgW2lcbiAgICAgIChpbmMgaSlcbiAgICAgIGNvbnRpbnVhdGlvbj9cbiAgICAgIChwb3M/IChiaXQtYW5kIGRpZ2l0IHZscS1jb250aW51YXRpb24tYml0KSlcbiAgICAgIGRpZ2l0XG4gICAgICAoYml0LWFuZCBkaWdpdCB2bHEtYmFzZS1tYXNrKVxuICAgICAgcmVzdWx0XG4gICAgICAoKyByZXN1bHQgKGJpdC1zaGlmdC1sZWZ0IGRpZ2l0IHNoaWZ0KSlcbiAgICAgIHNoaWZ0XG4gICAgICAoKyBzaGlmdCB2bHEtYmFzZS1zaGlmdCldXG4gICAgIChpZlxuICAgICAgY29udGludWF0aW9uP1xuICAgICAgKHJlY3VyIGkgcmVzdWx0IHNoaWZ0KVxuICAgICAgKGxhenktc2VxXG4gICAgICAgKGNvbnNcbiAgICAgICAgKGZyb20tdmxxLXNpZ25lZCByZXN1bHQpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzICguc3Vic3RyaW5nIHMgaSldXG4gICAgICAgICAod2hlbi1ub3QgKHN0cmluZy9ibGFuaz8gcykgKGRlY29kZSBzKSkpKSkpKSkpKSlcbiJ9IHs6c3ltIHZscS1iYXNlLXNoaWZ0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtYmFzZS1zaGlmdCA1KVxuIn0gezpzeW0gZnJvbS12bHEtc2lnbmVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZnJvbS12bHEtc2lnbmVkXG4gW3ZdXG4gKGxldFxuICBbbmVnPyAoPSAoYml0LWFuZCB2IDEpIDEpIHNoaWZ0ZWQgKGJpdC1zaGlmdC1yaWdodCB2IDEpXVxuICAoaWYgbmVnPyAoLSBzaGlmdGVkKSBzaGlmdGVkKSkpXG4ifSB7OnN5bSB0by12bHEtc2lnbmVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tdmxxLXNpZ25lZFxuIFt2XVxuIChpZlxuICAobmVnPyB2KVxuICAoaW5jIChiaXQtc2hpZnQtbGVmdCAoLSB2KSAxKSlcbiAgKCsgKGJpdC1zaGlmdC1sZWZ0IHYgMSkgMCkpKVxuIn0gezpzeW0gdmxxLWJhc2UsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZscS1iYXNlIChiaXQtc2hpZnQtbGVmdCAxIHZscS1iYXNlLXNoaWZ0KSlcbiJ9KSwgZXhwb3VuZC5hbnNpICh7OnN5bSAqcHJpbnQtc3R5bGVzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqcHJpbnQtc3R5bGVzKlxuIHs6Z29vZC1rZXkgWzpncmVlbl0sXG4gIDp3YXJuaW5nLWtleSBbOmJvbGRdLFxuICA6Y29ycmVjdC1rZXkgWzpncmVlbl0sXG4gIDpoaWdobGlnaHQgWzpib2xkXSxcbiAgOmZvY3VzLXBhdGggWzptYWdlbnRhXSxcbiAgOmJhZC12YWx1ZSBbOnJlZF0sXG4gIDpmb290ZXIgWzpjeWFuXSxcbiAgOmhlYWRlciBbOmN5YW5dLFxuICA6Z29vZC1wcmVkIFs6Z3JlZW5dLFxuICA6Z29vZCBbOmdyZWVuXSxcbiAgOmZvY3VzLWtleSBbOmJvbGRdLFxuICA6cG9pbnRlciBbOm1hZ2VudGFdLFxuICA6YmFkIFs6cmVkXSxcbiAgOmVycm9yLWtleSBbOnJlZF0sXG4gIDpub25lIFs6bm9uZV0sXG4gIDptZXNzYWdlIFs6bWFnZW50YV19KVxuIn0gezpzeW0gKmVuYWJsZS1jb2xvciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICplbmFibGUtY29sb3IqIGZhbHNlKVxuIn0gezpzeW0gc2dyLWNvZGUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gc2dyLWNvZGVcbiBcIk1hcCBvZiBzeW1ib2xzIHRvIG51bWVyaWMgU0dSIChzZWxlY3QgZ3JhcGhpYyByZW5kaXRpb24pIGNvZGVzLlwiXG4gezpib2xkIDEsXG4gIDpibGluayA1LFxuICA6d2hpdGUgMzcsXG4gIDp5ZWxsb3cgMzMsXG4gIDpiZy1yZWQgNDEsXG4gIDpiZy1jeWFuIDQ2LFxuICA6Z3JlZW4gMzIsXG4gIDpiZy1ncmVlbiA0MixcbiAgOmZnLXJlc2V0IDM5LFxuICA6Y3lhbiAzNixcbiAgOmJnLWJsYWNrIDQwLFxuICA6ZmctMjU2IDM4LFxuICA6dW5kZXJsaW5lIDMsXG4gIDpiZy1tYWdlbnRhIDQ1LFxuICA6c3RyaWtlIDksXG4gIDpiZy15ZWxsb3cgNDMsXG4gIDpoaWRkZW4gOCxcbiAgOnJlZCAzMSxcbiAgOmJsdWUgMzQsXG4gIDpiZy13aGl0ZSA0NyxcbiAgOmJnLTI1NiA0OCxcbiAgOm1hZ2VudGEgMzUsXG4gIDpiZy1ibHVlIDQ0LFxuICA6YmctcmVzZXQgNDksXG4gIDpub25lIDAsXG4gIDpyZXZlcnNlIDcsXG4gIDpibGFjayAzMH0pXG4ifSB7OnN5bSBlc2NhcGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIEFOU0kgZXNjb3BlIHN0cmluZyB3aGljaCB3aWxsIGVuYWN0IHRoZSBnaXZlbiBTR1IgY29kZXMuIiwgOmFyZ2xpc3RzIChbJiBjb2Rlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGVcbiBcIlJldHVybnMgYW4gQU5TSSBlc2NvcGUgc3RyaW5nIHdoaWNoIHdpbGwgZW5hY3QgdGhlIGdpdmVuIFNHUiBjb2Rlcy5cIlxuIFsmIGNvZGVzXVxuIChlc2MgY29kZXMpKVxuIn0gezpzeW0gY29sb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcyAmIHN0eWxlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2xvclxuIFtzICYgc3R5bGVzXVxuIChpZiAqZW5hYmxlLWNvbG9yKiAoYXBwbHkgc2dyIHMgKHJlc29sdmUtc3R5bGVzIHN0eWxlcykpIHMpKVxuIn0gezpzeW0gZXNjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBBTlNJIGVzY29wZSBzdHJpbmcgd2hpY2ggd2lsbCBhcHBseSB0aGUgZ2l2ZW4gY29sbGVjdGlvbiBvZiBTR1JcbiAgY29kZXMuIiwgOmFyZ2xpc3RzIChbY29kZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXNjXG4gXCJSZXR1cm5zIGFuIEFOU0kgZXNjb3BlIHN0cmluZyB3aGljaCB3aWxsIGFwcGx5IHRoZSBnaXZlbiBjb2xsZWN0aW9uIG9mIFNHUlxcbiAgY29kZXMuXCJcbiBbY29kZXNdXG4gKGxldFxuICBbY29kZXMgKG1hcCBzZ3ItY29kZSBjb2RlcyBjb2RlcykgY29kZXMgKHN0cmluZy9qb2luIFxcOyBjb2RlcyldXG4gIChzdHIgXFwbIFxcWyBjb2RlcyBcXG0pKSlcbiJ9IHs6c3ltIHNnciwgOm1ldGEgezpkb2MgIldyYXBzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBTR1IgZXNjYXBlcyB0byBhcHBseSB0aGUgZ2l2ZW4gY29kZXMsIHRoZW4gcmVzZXRcbiAgdGhlIGdyYXBoaWNzLiIsIDphcmdsaXN0cyAoW3N0cmluZyAmIGNvZGVzXSl9LCA6c291cmNlICIoZGVmblxuIHNnclxuIFwiV3JhcHMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIFNHUiBlc2NhcGVzIHRvIGFwcGx5IHRoZSBnaXZlbiBjb2RlcywgdGhlbiByZXNldFxcbiAgdGhlIGdyYXBoaWNzLlwiXG4gW3N0cmluZyAmIGNvZGVzXVxuIChzdHIgKGVzYyBjb2Rlcykgc3RyaW5nIChlc2NhcGUgOm5vbmUpKSlcbiJ9IHs6c3ltIGFuc2ktY29kZT8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGFuc2ktY29kZT8gc2dyLWNvZGUpXG4ifSB7OnN5bSBzdHJpcCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgY29sb3IgY29kZXMgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLiIsIDphcmdsaXN0cyAoW3N0cmluZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpcFxuIFwiUmVtb3ZlcyBjb2xvciBjb2RlcyBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuXCJcbiBbc3RyaW5nXVxuIChzdHJpbmcvcmVwbGFjZSBzdHJpbmcgI1wiXFx1MDAxYlxcW1swLTk7XSpbbUtdXCIgXCJcIikpXG4ifSB7OnN5bSByZXNvbHZlLXN0eWxlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdHlsZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1zdHlsZXNcbiBbc3R5bGVzXVxuIChpZi1sZXRcbiAgW3Jlc1xuICAgKG5vdC1lbXB0eVxuICAgIChtYXBjYXRcbiAgICAgKGZuKlxuICAgICAgW3AxX180NTAyMSNdXG4gICAgICAob3JcbiAgICAgICAod2hlbi1sZXQgW3JlcyAoKnByaW50LXN0eWxlcyogcDFfXzQ1MDIxIyldIHJlcylcbiAgICAgICBbcDFfXzQ1MDIxI10pKVxuICAgICBzdHlsZXMpKV1cbiAgcmVzXG4gIFs6Ym9sZF0pKVxuIn0pLCBleHBvdW5kLnByaW50ZXIgKHs6c3ltIG1pc3Npbmcta2V5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy1rZXlcbiBbZm9ybV1cbiAobGV0XG4gIFtbYnJhbmNoIG1hdGNoXVxuICAgKHMvY29uZm9ybSA6ZXhwb3VuZC5zcGVjL2NvbnRhaW5zLWtleS1wcmVkIChudGggZm9ybSAyKSldXG4gIChjYXNlXG4gICBicmFuY2hcbiAgIDpzaW1wbGVcbiAgICg6a3cgbWF0Y2gpXG4gICA6Y29tcG91bmRcbiAgIChzdW1tYXJpemUta2V5LWNsYXVzZSBbYnJhbmNoIG1hdGNoXSkpKSlcbiJ9IHs6c3ltIGluZGVudC1sZXZlbCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgaW5kZW50LWxldmVsIDIpXG4ifSB7OnN5bSBtYXgtc3BlYy1zdHItd2lkdGgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1heC1zcGVjLXN0ci13aWR0aCAxMDApXG4ifSB7OnN5bSBhbm9uLWZuLXN0ciwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgYW5vbi1mbi1zdHIgXCI8YW5vbnltb3VzIGZ1bmN0aW9uPlwiKVxuIn0gezpzeW0gcHJpbnQtc3BlYy1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Byb2JsZW1zXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LXNwZWMta2V5c1xuIFtwcm9ibGVtc11cbiAobGV0XG4gIFtrZXlzXG4gICAoa2V5d29yZHNcbiAgICAobWFwXG4gICAgIChmbiogW3AxX180NTAxNyNdIChtaXNzaW5nLWtleSAoOnByZWQgcDFfXzQ1MDE3IykpKVxuICAgICBwcm9ibGVtcykpXVxuICAoaWZcbiAgIChhbmRcbiAgICAoZW1wdHk/ICg6ZXhwb3VuZC92aWEgKGZpcnN0IHByb2JsZW1zKSkpXG4gICAgKHNvbWUgc2ltcGxlLWtleXdvcmQ/IGtleXMpKVxuICAgbmlsXG4gICAoLT4+XG4gICAgKGtleS0+c3BlYyBrZXlzIHByb2JsZW1zKVxuICAgIChtYXAgKGZuIFtbayB2XV0ge1wia2V5XCIgaywgXCJzcGVjXCIgKHNpbXBsZS1zcGVjLW9yLW5hbWUgdil9KSlcbiAgICAoc29ydC1ieSAoZm4qIFtwMV9fNDUwMTgjXSAoZ2V0IHAxX180NTAxOCMgXCJrZXlcIikpKVxuICAgIChwcHJpbnQvcHJpbnQtdGFibGUgW1wia2V5XCIgXCJzcGVjXCJdKVxuICAgIHdpdGgtb3V0LXN0clxuICAgIHN0cmluZy90cmltKSkpKVxuIn0gezpzeW0gc2luZ2xldG9uPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4c10pfSwgOnNvdXJjZSAiKGRlZm4gc2luZ2xldG9uPyBbeHNdICg9IDEgKGNvdW50IHhzKSkpXG4ifSB7OnN5bSBpbmRlbnQsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBwb3RlbnRpYWxseSBtdWx0aS1saW5lIHN0cmluZywgcmV0dXJucyB0aGF0IHN0cmluZyBpbmRlbnRlZCBieVxuICAgJ2luZGVudC1sZXZlbCcgc3BhY2VzLiBPcHRpb25hbGx5LCBjYW4gaW5kZW50IGZpcnN0IGxpbmUgYW5kIG90aGVyIGxpbmVzXG4gICBkaWZmZXJlbnQgYW1vdW50cy4iLCA6YXJnbGlzdHMgW1tzXSBbaW5kZW50LWxldmVsIHNdIFtmaXJzdC1saW5lLWluZGVudCByZXN0LWxpbmVzLWluZGVudCBzXV19LCA6c291cmNlICIoZGVmblxuIGluZGVudFxuIFwiR2l2ZW4gYW4gcG90ZW50aWFsbHkgbXVsdGktbGluZSBzdHJpbmcsIHJldHVybnMgdGhhdCBzdHJpbmcgaW5kZW50ZWQgYnlcXG4gICAnaW5kZW50LWxldmVsJyBzcGFjZXMuIE9wdGlvbmFsbHksIGNhbiBpbmRlbnQgZmlyc3QgbGluZSBhbmQgb3RoZXIgbGluZXNcXG4gICBkaWZmZXJlbnQgYW1vdW50cy5cIlxuIChbc10gKGluZGVudCBpbmRlbnQtbGV2ZWwgcykpXG4gKFtpbmRlbnQtbGV2ZWwgc10gKGluZGVudCBpbmRlbnQtbGV2ZWwgaW5kZW50LWxldmVsIHMpKVxuIChbZmlyc3QtbGluZS1pbmRlbnQgcmVzdC1saW5lcy1pbmRlbnQgc11cbiAgKGxldFxuICAgW1tsaW5lICYgbGluZXNdIChzdHJpbmcvc3BsaXQtbGluZXMgKHN0ciBzKSldXG4gICAoLT4+XG4gICAgbGluZXNcbiAgICAobWFwXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUwMjAjXVxuICAgICAgKHN0ciAoYXBwbHkgc3RyIChyZXBlYXQgcmVzdC1saW5lcy1pbmRlbnQgXCIgXCIpKSBwMV9fNDUwMjAjKSkpXG4gICAgKGludG8gWyhzdHIgKGFwcGx5IHN0ciAocmVwZWF0IGZpcnN0LWxpbmUtaW5kZW50IFwiIFwiKSkgbGluZSldKVxuICAgIChzdHJpbmcvam9pbiBcIlxcblwiKSkpKSlcbiJ9IHs6c3ltIHNpbXBsZS1zcGVjLW9yLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1zcGVjLW9yLW5hbWVcbiBbc3BlYy1uYW1lXVxuIChsZXRcbiAgW3NwZWMtc3RyXG4gICAoZWxpZGUtc3BlYy1ucyAoZWxpZGUtY29yZS1ucyAocHItc3RyIChleHBhbmQtc3BlYyBzcGVjLW5hbWUpKSkpXVxuICAoaWZcbiAgIChvclxuICAgICg8IG1heC1zcGVjLXN0ci13aWR0aCAoY291bnQgc3BlYy1zdHIpKVxuICAgIChzdHJpbmcvaW5jbHVkZXM/IHNwZWMtc3RyIFwiXFxuXCIpKVxuICAgc3BlYy1uYW1lXG4gICBzcGVjLXN0cikpKVxuIn0gezpzeW0gc3BlY3MtZnJvbS1mb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZpYV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGVjcy1mcm9tLWZvcm1cbiBbdmlhXVxuIChsZXRcbiAgW2Zvcm1cbiAgIChzb21lLT4gdmlhIGxhc3Qgcy9mb3JtKVxuICAgY29uZm9ybWVkXG4gICAocy9jb25mb3JtIDpleHBvdW5kLnNwZWMva2V5LXNwZWMgZm9ybSldXG4gIChpZlxuICAgKGFuZCBmb3JtIChub3Q9IDpjbG9qdXJlLnNwZWMuYWxwaGEvaW52YWxpZCBjb25mb3JtZWQpKVxuICAgKC0+PlxuICAgICg6Y2xhdXNlcyBjb25mb3JtZWQpXG4gICAgKG1hcCA6c3BlY3MpXG4gICAgKHRyZWUtc2VxIGNvbGw/IHNlcSlcbiAgICAoZmlsdGVyIChmbiBbeF0gKGFuZCAodmVjdG9yPyB4KSAoPSA6a3cgKGZpcnN0IHgpKSkpKVxuICAgIChtYXAgc2Vjb25kKVxuICAgIHNldClcbiAgICN7fSkpKVxuIn0gezpzeW0gZWxpZGUtc3BlYy1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVsaWRlLXNwZWMtbnNcbiBbc11cbiAjPyg6Y2xqcyAoLT4gcyAoc3RyaW5nL3JlcGxhY2UgXCJjbGpzLnNwZWMuYWxwaGEvXCIgXCJcIikgKHN0cmluZy9yZXBsYWNlIFwiY2xqcy9zcGVjL2FscGhhXCIgXCJcIikpIDpjbGogKHN0cmluZy9yZXBsYWNlIHMgXCJjbG9qdXJlLnNwZWMuYWxwaGEvXCIgXCJcIikpKVxuIn0gezpzeW0ga2V5LT5zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleXMgcHJvYmxlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LT5zcGVjXG4gW2tleXMgcHJvYmxlbXNdXG4gKGRvc2VxXG4gIFtwIHByb2JsZW1zXVxuICAoYXNzZXJ0IChzb21lPyAoOmV4cG91bmQvdmlhIHApKSB1dGlsL2Fzc2VydC1tZXNzYWdlKSlcbiAobGV0XG4gIFt2aWFzXG4gICAobWFwIDpleHBvdW5kL3ZpYSBwcm9ibGVtcylcbiAgIHNwZWNzXG4gICAoaWZcbiAgICAoZXZlcnk/IHF1YWxpZmllZC1rZXl3b3JkPyBrZXlzKVxuICAgIGtleXNcbiAgICAoaWYtbGV0XG4gICAgIFtzcGVjcyAoYXBwbHkgc2V0L3VuaW9uIChtYXAgc3BlY3MtZnJvbS1mb3JtIHZpYXMpKV1cbiAgICAgc3BlY3NcbiAgICAga2V5cykpXVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbbSBrXVxuICAgIChhc3NvY1xuICAgICBtXG4gICAgIGtcbiAgICAgKGlmXG4gICAgICAocXVhbGlmaWVkLWtleXdvcmQ/IGspXG4gICAgICBrXG4gICAgICAoLT4+XG4gICAgICAgc3BlY3NcbiAgICAgICAoZmlsdGVyIChmbiogW3AxX180NTAxNiNdICg9IChuYW1lIGspIChuYW1lIHAxX180NTAxNiMpKSkpXG4gICAgICAgZmlyc3QpKSkpXG4gICB7fVxuICAga2V5cykpKVxuIn0gezpzeW0gZWxpZGUtY29yZS1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVsaWRlLWNvcmUtbnNcbiBbc11cbiAjPyg6Y2xqcyAoLT4gcyAoc3RyaW5nL3JlcGxhY2UgXCJjbGpzLmNvcmUvXCIgXCJcIikgKHN0cmluZy9yZXBsYWNlIFwiY2xqcy9jb3JlL1wiIFwiXCIpKSA6Y2xqIChzdHJpbmcvcmVwbGFjZSBzIFwiY2xvanVyZS5jb3JlL1wiIFwiXCIpKSlcbiJ9IHs6c3ltIHByaW50LW1pc3Npbmcta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcm9ibGVtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1taXNzaW5nLWtleXNcbiBbcHJvYmxlbXNdXG4gKGxldFxuICBba2V5cy1jbGF1c2VzIChkaXN0aW5jdCAobWFwIChjb21wIG1pc3Npbmcta2V5IDpwcmVkKSBwcm9ibGVtcykpXVxuICAoaWZcbiAgIChldmVyeT8ga2V5d29yZD8ga2V5cy1jbGF1c2VzKVxuICAgKHN0cmluZy9qb2luXG4gICAgXCIsIFwiXG4gICAgKG1hcFxuICAgICAoZm4qIFtwMV9fNDUwMTkjXSAoYW5zaS9jb2xvciBwMV9fNDUwMTkjIDpjb3JyZWN0LWtleSkpXG4gICAgIChzb3J0IGtleXMtY2xhdXNlcykpKVxuICAgKHN0clxuICAgIFwiXFxuXFxuXCJcbiAgICAoYW5zaS9jb2xvclxuICAgICAocHByaW50LXN0clxuICAgICAgKGlmXG4gICAgICAgKHNpbmdsZXRvbj8ga2V5cy1jbGF1c2VzKVxuICAgICAgIChmaXJzdCBrZXlzLWNsYXVzZXMpXG4gICAgICAgKGFwcGx5IGxpc3QgJ2FuZCBrZXlzLWNsYXVzZXMpKSlcbiAgICAgOmNvcnJlY3Qta2V5KSkpKSlcbiJ9IHs6c3ltIGV4cGFuZC1zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwYW5kLXNwZWNcbiBbc3BlY11cbiAobGV0XG4gIFshc2Vlbi1zcGVjcyAoYXRvbSAje30pXVxuICAod2Fsay9wcmV3YWxrXG4gICAoZm5cbiAgICBbeF1cbiAgICAoaWYtbm90XG4gICAgIChxdWFsaWZpZWQta2V5d29yZD8geClcbiAgICAgeFxuICAgICAoaWYtbGV0XG4gICAgICBbc3AgKHMvZ2V0LXNwZWMgeCldXG4gICAgICAoaWYtbm90XG4gICAgICAgKGNvbnRhaW5zPyBAIXNlZW4tc3BlY3MgeClcbiAgICAgICAoZG8gKHN3YXAhICFzZWVuLXNwZWNzIGNvbmogeCkgKHMvZm9ybSBzcCkpXG4gICAgICAgeClcbiAgICAgIHgpKSlcbiAgIChpZiAocy9nZXQtc3BlYyBzcGVjKSAocy9mb3JtIHNwZWMpIHNwZWMpKSkpXG4ifSB7OnN5bSBrZXl3b3JkcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmbiBrZXl3b3JkcyBbZm9ybV0gKC0+PiBmb3JtICh0cmVlLXNlcSBjb2xsPyBzZXEpIChmaWx0ZXIga2V5d29yZD8pKSlcbiJ9IHs6c3ltIG5vLXRyYWlsaW5nLXdoaXRlc3BhY2UsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBwb3RlbnRpYWxseSBtdWx0aS1saW5lIHN0cmluZywgcmV0dXJucyB0aGF0IHN0cmluZyB3aXRoIGFsbFxuICB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBuby10cmFpbGluZy13aGl0ZXNwYWNlXG4gXCJHaXZlbiBhbiBwb3RlbnRpYWxseSBtdWx0aS1saW5lIHN0cmluZywgcmV0dXJucyB0aGF0IHN0cmluZyB3aXRoIGFsbFxcbiAgdHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkLlwiXG4gW3NdXG4gKGxldFxuICBbcycgKC0+PiBzIHN0cmluZy9zcGxpdC1saW5lcyAobWFwIHN0cmluZy90cmltcikgKHN0cmluZy9qb2luIFwiXFxuXCIpKV1cbiAgKGlmICg9IFxcbmV3bGluZSAobGFzdCBzKSkgKHN0ciBzJyBcIlxcblwiKSBzJykpKVxuIn0gezpzeW0gcHByaW50LXN0ciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByZXR0eS1wcmludGVkIHN0cmluZyIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50LXN0clxuIFwiUmV0dXJucyB0aGUgcHJldHR5LXByaW50ZWQgc3RyaW5nXCJcbiBbeF1cbiAoaWYgKGZuPyB4KSAocHByaW50LWZuIHgpIChwcHJpbnQvd3JpdGUgeCA6c3RyZWFtIG5pbCkpKVxuIn0gezpzeW0gc3VtbWFyaXplLWtleS1jbGF1c2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW2JyYW5jaCBtYXRjaF1dKX0sIDpzb3VyY2UgIihkZWZuXG4gc3VtbWFyaXplLWtleS1jbGF1c2VcbiBbW2JyYW5jaCBtYXRjaF1dXG4gKGNhc2VcbiAgYnJhbmNoXG4gIDpzaW1wbGVcbiAgKDprdyBtYXRjaClcbiAgOmNvbXBvdW5kXG4gIChhcHBseVxuICAgbGlzdFxuICAgKHN5bWJvbCAobmFtZSAoOm9wIG1hdGNoKSkpXG4gICAobWFwIHN1bW1hcml6ZS1rZXktY2xhdXNlICg6Y2xhdXNlcyBtYXRjaCkpKSkpXG4ifSB7OnN5bSBwcHJpbnQtZm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcHJpbnQtZm5cbiBbZl1cbiAoLT5cbiAgIz8oOmNsaiAobGV0IFtbXyBucy1uIGYtbl0gKHJlLW1hdGNoZXMgI1wiKC4qKVxcJCguKj8pKF9fWzAtOV0rKT9cIiAoc3RyIGYpKV0gKGlmIChyZS1tYXRjaGVzICNcIl5mbl9fXFxkK1xcQC4qJFwiIGYtbikgYW5vbi1mbi1zdHIgKHN0ciAobWFpbi9kZW11bmdlIG5zLW4pIFwiL1wiIChtYWluL2RlbXVuZ2UgZi1uKSkpKSA6Y2xqcyAobGV0IFtmbi1wYXJ0cyAoc3RyaW5nL3NwbGl0IChzZWNvbmQgKHJlLWZpbmQgI1wib2JqZWN0XFxbKFteXFwoIFxcXV0rKS4qKFxcbnxcXF0pP1wiIChwci1zdHIgZikpKSAjXCJcXCRcIikgbnMtbiAoc3RyaW5nL2pvaW4gXCIuXCIgKGJ1dGxhc3QgZm4tcGFydHMpKSBmbi1uIChsYXN0IGZuLXBhcnRzKV0gKGlmIChlbXB0eT8gbnMtbikgYW5vbi1mbi1zdHIgKHN0ciAoZGVtdW5nZS1zdHIgbnMtbikgXCIvXCIgKGRlbXVuZ2Utc3RyIGZuLW4pKSkpKVxuICAoZWxpZGUtY29yZS1ucylcbiAgKHN0cmluZy9yZXBsYWNlICNcIi0tXFxkK1wiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJAW2EtekEtWjAtOV0rXCIgXCJcIikpKVxuIn0pLCBodG1sLXNvdXAuY29yZSAoezpzeW0gbGluZS0+c2VnbWVudHMsIDptZXRhIHs6ZG9jICJTcGxpdHMgYSBsaW5lIGludG8gc2VnbWVudHMgd2hlcmUgdGFncyBhcmUgc3VwcG9zZWQgdG8gYXBwZWFyLiIsIDphcmdsaXN0cyAoW2xpbmUgdGFncy1mb3ItbGluZSBlc2NhcGU/XSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtPnNlZ21lbnRzXG4gXCJTcGxpdHMgYSBsaW5lIGludG8gc2VnbWVudHMgd2hlcmUgdGFncyBhcmUgc3VwcG9zZWQgdG8gYXBwZWFyLlwiXG4gW2xpbmUgdGFncy1mb3ItbGluZSBlc2NhcGU/XVxuIChsZXRcbiAgW2NvbHVtbnNcbiAgIChzZXQgKG1hcCA6Y29sdW1uIHRhZ3MtZm9yLWxpbmUpKVxuICAgZXNjYXBlLWh0bWwtY2hhclxuICAgKGlmIGVzY2FwZT8gZXNjYXBlLWh0bWwtY2hhciBpZGVudGl0eSldXG4gIChsb29wXG4gICBbaSAwIHNlZ21lbnRzICh0cmFuc2llbnQgW10pIGN1cnJlbnQtc2VnbWVudCAodHJhbnNpZW50IFtdKV1cbiAgIChpZi1sZXRcbiAgICBbYyAoc29tZS0+IGxpbmUgKGdldCBpKSBlc2NhcGUtaHRtbC1jaGFyKV1cbiAgICAoaWZcbiAgICAgKGNvbnRhaW5zPyBjb2x1bW5zIChpbmMgaSkpXG4gICAgIChyZWN1clxuICAgICAgKGluYyBpKVxuICAgICAgKGNvbmohIHNlZ21lbnRzIChwZXJzaXN0ZW50ISBjdXJyZW50LXNlZ21lbnQpKVxuICAgICAgKHRyYW5zaWVudCBbY10pKVxuICAgICAocmVjdXIgKGluYyBpKSBzZWdtZW50cyAoY29uaiEgY3VycmVudC1zZWdtZW50IGMpKSlcbiAgICAoLT4+XG4gICAgIChwZXJzaXN0ZW50ISBjdXJyZW50LXNlZ21lbnQpXG4gICAgIChjb25qISBzZWdtZW50cylcbiAgICAgcGVyc2lzdGVudCFcbiAgICAgKG1hcCBzdHIvam9pbikpKSkpKVxuIn0gezpzeW0gdGFnLT5oaWNjdXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoZSBnaXZlbiB0YWcgZGVzY3JpcHRpb24uIiwgOmFyZ2xpc3RzIChbdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRhZy0+aGljY3VwXG4gXCJSZXR1cm5zIGEgSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoZSBnaXZlbiB0YWcgZGVzY3JpcHRpb24uXCJcbiBbdGFnXVxuIChjb25kXG4gICg6ZGVsaW1pdGVyPyB0YWcpXG4gIFs6c3BhbiB7OmNsYXNzIFwiZGVsaW1pdGVyXCJ9XVxuICAoOmVycm9yPyB0YWcpXG4gIFs6c3BhbiB7OmNsYXNzIFwiZXJyb3JcIiwgOmRhdGEtbWVzc2FnZSAoOm1lc3NhZ2UgdGFnKX1dXG4gICg6YmVnaW4/IHRhZylcbiAgKGxldFxuICAgW3ZhbHVlICg6dmFsdWUgdGFnKV1cbiAgIChjb25kXG4gICAgKHN5bWJvbD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJzeW1ib2xcIn1dXG4gICAgKGxpc3Q/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiY29sbGVjdGlvbiBsaXN0XCJ9XVxuICAgICh2ZWN0b3I/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiY29sbGVjdGlvbiB2ZWN0b3JcIn1dXG4gICAgKG1hcD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJjb2xsZWN0aW9uIG1hcFwifV1cbiAgICAoc2V0PyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImNvbGxlY3Rpb24gc2V0XCJ9XVxuICAgIChudW1iZXI/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwibnVtYmVyXCJ9XVxuICAgIChzdHJpbmc/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwic3RyaW5nXCJ9XVxuICAgIChrZXl3b3JkPyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImtleXdvcmRcIn1dXG4gICAgKG5pbD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJuaWxcIn1dXG4gICAgKGNvbnRhaW5zPyAje3RydWUgZmFsc2V9IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiYm9vbGVhblwifV1cbiAgICA6ZWxzZVxuICAgIFs6c3Bhbl0pKVxuICAoOmVuZD8gdGFnKVxuICBuaWwpKVxuIn0gezpzeW0gbGluZS0+aHRtbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGdpdmVuIGxpbmUgd2l0aCBodG1sIGFkZGVkLiIsIDphcmdsaXN0cyAoW2xpbmUgdGFncy1mb3ItbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLT5odG1sXG4gXCJSZXR1cm5zIHRoZSBnaXZlbiBsaW5lIHdpdGggaHRtbCBhZGRlZC5cIlxuIFtsaW5lIHRhZ3MtZm9yLWxpbmVdXG4gKGxldFxuICBbaHRtbC1wZXItY29sdW1uXG4gICAoaW50byBbXSB0YWdzLWZvci1saW5lLT5odG1sIChzb3J0LWJ5IDpjb2x1bW4gdGFncy1mb3ItbGluZSkpXG4gICBzZWdtZW50c1xuICAgKGxpbmUtPnNlZ21lbnRzIGxpbmUgdGFncy1mb3ItbGluZSB0cnVlKV1cbiAgKHN0ci9qb2luXG4gICAoaW50ZXJsZWF2ZSBzZWdtZW50cyAoY29uY2F0IGh0bWwtcGVyLWNvbHVtbiAocmVwZWF0IFwiXCIpKSkpKSlcbiJ9IHs6c3ltIGNvZGUtPmhpY2N1cCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlcyBhZGRlZC4iLCA6YXJnbGlzdHMgKFtjb2RlXSl9LCA6c291cmNlICIoZGVmblxuIGNvZGUtPmhpY2N1cFxuIFwiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLlwiXG4gW2NvZGVdXG4gKGxldFxuICBbbGluZXNcbiAgIChzcGxpdC1saW5lcyBjb2RlKVxuICAgdGFnc1xuICAgKHRzL2NvZGUtPnRhZ3MgY29kZSlcbiAgIGhpY2N1cFxuICAgKHBhcnNlLWxpbmVzIGxpbmUtPmhpY2N1cCBsaW5lcyB0YWdzKVxuICAgaGljY3VwXG4gICAoYXBwbHkgY29uY2F0IChpbnRlcnBvc2UgW1wiXFxuXCJdIGhpY2N1cCkpXVxuICAoc3RydWN0dXJpemUtaGljY3VwIGhpY2N1cCkpKVxuIn0gezpzeW0gc3BsaXQtbGluZXMsIDptZXRhIHs6ZG9jICJTcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXQtbGluZXNcbiBcIlNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMuXCJcbiBbc11cbiAodmVjICguc3BsaXQgcyBcIlxcblwiIC0xKSkpXG4ifSB7OnN5bSBjb2RlLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggaHRtbCBhZGRlZC4iLCA6YXJnbGlzdHMgKFtjb2RlXSl9LCA6c291cmNlICIoZGVmblxuIGNvZGUtPmh0bWxcbiBcIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIGh0bWwgYWRkZWQuXCJcbiBbY29kZV1cbiAobGV0XG4gIFtsaW5lc1xuICAgKHNwbGl0LWxpbmVzIGNvZGUpXG4gICB0YWdzXG4gICAodHMvY29kZS0+dGFncyBjb2RlKVxuICAgbGluZXNcbiAgIChwYXJzZS1saW5lcyBsaW5lLT5odG1sIGxpbmVzIHRhZ3MpXVxuICAoc3RyL2pvaW4gXFxuZXdsaW5lIGxpbmVzKSkpXG4ifSB7OnN5bSBsaW5lLT5oaWNjdXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBnaXZlbiBsaW5lIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLiIsIDphcmdsaXN0cyAoW2xpbmUgdGFncy1mb3ItbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLT5oaWNjdXBcbiBcIlJldHVybnMgdGhlIGdpdmVuIGxpbmUgd2l0aCBIaWNjdXAtY29tcGF0aWJsZSBkYXRhIHN0cnVjdHVyZXMgYWRkZWQuXCJcbiBbbGluZSB0YWdzLWZvci1saW5lXVxuIChsZXRcbiAgW2hpY2N1cC1wZXItY29sdW1uXG4gICAoaW50byBbXSB0YWdzLWZvci1saW5lLT5oaWNjdXAgKHNvcnQtYnkgOmNvbHVtbiB0YWdzLWZvci1saW5lKSlcbiAgIHNlZ21lbnRzXG4gICAobWFwIGxpc3QgKGxpbmUtPnNlZ21lbnRzIGxpbmUgdGFncy1mb3ItbGluZSBmYWxzZSkpXVxuICAoYXBwbHlcbiAgIGNvbmNhdFxuICAgKGludGVybGVhdmUgc2VnbWVudHMgKGNvbmNhdCBoaWNjdXAtcGVyLWNvbHVtbiAocmVwZWF0IG5pbCkpKSkpKVxuIn0gezpzeW0gdGFncy1mb3ItbGluZS0+aGljY3VwLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRhZ3MtZm9yLWxpbmUtPmhpY2N1cFxuIChjb21wXG4gIChwYXJ0aXRpb24tYnkgOmNvbHVtbilcbiAgKG1hcCAoZm4qIFtwMV9fNDU0NzEjXSAobWFwIHRhZy0+aGljY3VwIHAxX180NTQ3MSMpKSkpKVxuIn0gezpzeW0gdGFnLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBIVE1MIHN0cmluZyBmb3IgdGhlIGdpdmVuIHRhZyBkZXNjcmlwdGlvbi4iLCA6YXJnbGlzdHMgKFt0YWddKX0sIDpzb3VyY2UgIihkZWZuXG4gdGFnLT5odG1sXG4gXCJSZXR1cm5zIGFuIEhUTUwgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gdGFnIGRlc2NyaXB0aW9uLlwiXG4gW3RhZ11cbiAoY29uZFxuICAoOmRlbGltaXRlcj8gdGFnKVxuICBcIjxzcGFuIGNsYXNzPSdkZWxpbWl0ZXInPlwiXG4gICg6ZXJyb3I/IHRhZylcbiAgKGZvcm1hdFxuICAgXCI8c3BhbiBjbGFzcz0nZXJyb3InIGRhdGEtbWVzc2FnZT0nJXMnPjwvc3Bhbj5cIlxuICAgKHNvbWUtPiAoOm1lc3NhZ2UgdGFnKSBlc2NhcGUtaHRtbC1zdHIpKVxuICAoOmJlZ2luPyB0YWcpXG4gIChsZXRcbiAgIFt2YWx1ZSAoOnZhbHVlIHRhZyldXG4gICAoY29uZFxuICAgIChzeW1ib2w/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J3N5bWJvbCc+XCJcbiAgICAobGlzdD8gdmFsdWUpXG4gICAgXCI8c3BhbiBjbGFzcz0nY29sbGVjdGlvbiBsaXN0Jz5cIlxuICAgICh2ZWN0b3I/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gdmVjdG9yJz5cIlxuICAgIChtYXA/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gbWFwJz5cIlxuICAgIChzZXQ/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gc2V0Jz5cIlxuICAgIChudW1iZXI/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J251bWJlcic+XCJcbiAgICAoc3RyaW5nPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdzdHJpbmcnPlwiXG4gICAgKGtleXdvcmQ/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2tleXdvcmQnPlwiXG4gICAgKG5pbD8gdmFsdWUpXG4gICAgXCI8c3BhbiBjbGFzcz0nbmlsJz5cIlxuICAgIChjb250YWlucz8gI3t0cnVlIGZhbHNlfSB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdib29sZWFuJz5cIlxuICAgIDplbHNlXG4gICAgXCI8c3Bhbj5cIikpXG4gICg6ZW5kPyB0YWcpXG4gIFwiPC9zcGFuPlwiKSlcbiJ9IHs6c3ltIGVzY2FwZS1odG1sLXN0ciwgOm1ldGEgezpkb2MgIkVzY2FwZXMgYW4gSFRNTCBzdHJpbmciLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVzY2FwZS1odG1sLXN0clxuIFwiRXNjYXBlcyBhbiBIVE1MIHN0cmluZ1wiXG4gW3NdXG4gKHN0ci9lc2NhcGVcbiAgc1xuICB7XFw8IFwiJmx0O1wiLCBcXD4gXCImZ3Q7XCIsIFxcJiBcIiZhbXA7XCIsIFxcXCIgXCImcXVvdDtcIiwgXFwnIFwiJmFwb3M7XCJ9KSlcbiJ9IHs6c3ltIHRhZ3MtZm9yLWxpbmUtPmh0bWwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gdGFncy1mb3ItbGluZS0+aHRtbFxuIChjb21wXG4gIChwYXJ0aXRpb24tYnkgOmNvbHVtbilcbiAgKG1hcCAoZm4qIFtwMV9fNDU0NzAjXSAoc3RyL2pvaW4gKG1hcCB0YWctPmh0bWwgcDFfXzQ1NDcwIykpKSkpKVxuIn0gezpzeW0gc3RydWN0dXJpemUtaGljY3VwLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmbGF0IGxpc3Qgb2YgSGljY3VwLWNvbXBhdGlibGUgZGF0YSBhbmQgYWRkcyBzdHJ1Y3R1cmUgdG8gaXQuIiwgOmFyZ2xpc3RzIFtbZmxhdC1oaWNjdXBdIFtmbGF0LWhpY2N1cCBzdHJ1Y3R1cmVkLWhpY2N1cF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJ1Y3R1cml6ZS1oaWNjdXBcbiBcIlRha2VzIGEgZmxhdCBsaXN0IG9mIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgYW5kIGFkZHMgc3RydWN0dXJlIHRvIGl0LlwiXG4gKFtmbGF0LWhpY2N1cF0gKHNlY29uZCAoc3RydWN0dXJpemUtaGljY3VwIGZsYXQtaGljY3VwIFs6c3Bhbl0pKSlcbiAoW2ZsYXQtaGljY3VwIHN0cnVjdHVyZWQtaGljY3VwXVxuICAobG9vcFxuICAgW2ZsYXQtaGljY3VwIGZsYXQtaGljY3VwIHN0cnVjdHVyZWQtaGljY3VwIHN0cnVjdHVyZWQtaGljY3VwXVxuICAgKGlmLWxldFxuICAgIFt0b2tlbiAoZmlyc3QgZmxhdC1oaWNjdXApXVxuICAgIChjb25kXG4gICAgIChzdHJpbmc/IHRva2VuKVxuICAgICAocmVjdXIgKHJlc3QgZmxhdC1oaWNjdXApIChjb25qIHN0cnVjdHVyZWQtaGljY3VwIHRva2VuKSlcbiAgICAgKHZlY3Rvcj8gdG9rZW4pXG4gICAgIChsZXRcbiAgICAgIFtbZmxhdCBzdHJ1Y3R1cmVkXSAoc3RydWN0dXJpemUtaGljY3VwIChyZXN0IGZsYXQtaGljY3VwKSB0b2tlbildXG4gICAgICAocmVjdXIgZmxhdCAoY29uaiBzdHJ1Y3R1cmVkLWhpY2N1cCBzdHJ1Y3R1cmVkKSkpKVxuICAgIFsocmVzdCBmbGF0LWhpY2N1cCkgc3RydWN0dXJlZC1oaWNjdXBdKSkpKVxuIn0gezpzeW0gZXNjYXBlLWh0bWwtY2hhciwgOm1ldGEgezpkb2MgIkVzY2FwZXMgYW4gSFRNTCBjaGFyYWN0ZXIiLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVzY2FwZS1odG1sLWNoYXJcbiBcIkVzY2FwZXMgYW4gSFRNTCBjaGFyYWN0ZXJcIlxuIFtzXVxuIChjYXNlIHMgXFw8IFwiJmx0O1wiIFxcPiBcIiZndDtcIiBcXCYgXCImYW1wO1wiIFxcXCIgXCImcXVvdDtcIiBcXCcgXCImYXBvcztcIiBzKSlcbiJ9IHs6c3ltIHBhcnNlLWxpbmVzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGluZXMgcGFyc2VkIHdpdGggdGhlIGdpdmVuIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW3BhcnNlLWZuIGxpbmVzIHRhZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtbGluZXNcbiBcIlJldHVybnMgdGhlIGxpbmVzIHBhcnNlZCB3aXRoIHRoZSBnaXZlbiBmdW5jdGlvbi5cIlxuIFtwYXJzZS1mbiBsaW5lcyB0YWdzXVxuIChsb29wXG4gIFtpIDAgcmVzdWx0cyAodHJhbnNpZW50IFtdKV1cbiAgKGlmLWxldFxuICAgW2xpbmUgKGdldCBsaW5lcyBpKV1cbiAgIChyZWN1ciAoaW5jIGkpIChjb25qISByZXN1bHRzIChwYXJzZS1mbiBsaW5lIChnZXQgdGFncyAoaW5jIGkpKSkpKVxuICAgKHBlcnNpc3RlbnQhIHJlc3VsdHMpKSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyICh7OnN5bSByZWFkK3N0cmluZywgOm1ldGEgezpkb2MgIkxpa2UgcmVhZCwgYW5kIHRha2luZyB0aGUgc2FtZSBhcmdzLiByZWFkZXIgbXVzdCBiZSBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cbiAgUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBvYmplY3QgcmVhZCBhbmQgdGhlICh3aGl0ZXNwYWNlLXRyaW1tZWQpIHN0cmluZyByZWFkLiIsIDphcmdsaXN0cyBbW3N0cmVhbV0gW3N0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZV0gW29wdHMgc3RyZWFtXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQrc3RyaW5nXG4gXCJMaWtlIHJlYWQsIGFuZCB0YWtpbmcgdGhlIHNhbWUgYXJncy4gcmVhZGVyIG11c3QgYmUgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXFxuICBSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9iamVjdCByZWFkIGFuZCB0aGUgKHdoaXRlc3BhY2UtdHJpbW1lZCkgc3RyaW5nIHJlYWQuXCJcbiAoW3N0cmVhbV0gKHJlYWQrc3RyaW5nIHN0cmVhbSB0cnVlIG5pbCkpXG4gKFtzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWVdXG4gIChsZXRcbiAgIFtidWZcbiAgICAoZm4gW3JlYWRlcl0gKHN0ciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHN0cmVhbSkpKSlcbiAgICBvZmZzZXRcbiAgICAoY291bnQgKGJ1ZiBzdHJlYW0pKVxuICAgIG9cbiAgICAobG9nLXNvdXJjZSBzdHJlYW0gKHJlYWQgc3RyZWFtIGVvZi1lcnJvcj8gZW9mLXZhbHVlKSlcbiAgICBzXG4gICAgKC50cmltIChzdWJzIChidWYgc3RyZWFtKSBvZmZzZXQpKV1cbiAgIFtvIHNdKSlcbiAoW29wdHMgc3RyZWFtXVxuICAobGV0XG4gICBbYnVmXG4gICAgKGZuIFtyZWFkZXJdIChzdHIgKDpidWZmZXIgQCguLWZyYW1lcyBzdHJlYW0pKSkpXG4gICAgb2Zmc2V0XG4gICAgKGNvdW50IChidWYgc3RyZWFtKSlcbiAgICBvXG4gICAgKGxvZy1zb3VyY2Ugc3RyZWFtIChyZWFkIG9wdHMgc3RyZWFtKSlcbiAgICBzXG4gICAgKC50cmltIChzdWJzIChidWYgc3RyZWFtKSBvZmZzZXQpKV1cbiAgIFtvIHNdKSkpXG4ifSB7OnN5bSBib29sPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBib29sPyBbeF0gKG9yIChpbnN0YW5jZT8ganMvQm9vbGVhbiB4KSAodHJ1ZT8geCkgKGZhbHNlPyB4KSkpXG4ifSB7OnN5bSAqc3VwcHJlc3MtcmVhZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzdXBwcmVzcy1yZWFkKiBmYWxzZSlcbiJ9IHs6c3ltICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipcbiBcIldoZW4gbm8gZGF0YSByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnIGFuZCAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipcXG4gIGlzIG5vbi1uaWwsIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywgdGhlIHRhZyBhbmQgdGhlIHZhbHVlLlxcbiAgSWYgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIGlzIG5pbCAodGhlIGRlZmF1bHQgdmFsdWUpLCBhbiBleGNlcHRpb25cXG4gIHdpbGwgYmUgdGhyb3duIGZvciB0aGUgdW5rbm93biB0YWcuXCJcbiAoZm4gW3RhZyB2YWx1ZV0pKVxuIn0gezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlLlxuICAgT3RoZXJ3aXNlIHJldHVybnMgc2VudGluZWwuIElmIG5vIHN0cmVhbSBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXG5cbiAgIE9wdHMgaXMgYSBwZXJzaXN0ZW50IG1hcCB3aXRoIHZhbGlkIGtleXM6XG4gICAgOnJlYWQtY29uZCAtIDphbGxvdyB0byBwcm9jZXNzIHJlYWRlciBjb25kaXRpb25hbHMsIG9yXG4gICAgICAgICAgICAgICAgIDpwcmVzZXJ2ZSB0byBrZWVwIGFsbCBicmFuY2hlc1xuICAgIDpmZWF0dXJlcyAtIHBlcnNpc3RlbnQgc2V0IG9mIGZlYXR1cmUga2V5d29yZHMgZm9yIHJlYWRlciBjb25kaXRpb25hbHNcbiAgICA6ZW9mIC0gb24gZW9mLCByZXR1cm4gdmFsdWUgdW5sZXNzIDplb2Z0aHJvdywgdGhlbiB0aHJvdy5cbiAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCwgd2lsbCB0aHJvd1xuXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcblxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZCBhbmRcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbe2VvZiA6ZW9mLCA6YXMgb3B0cywgOm9yIHtlb2YgOmVvZnRocm93fX0gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZFxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlLlxcbiAgIE90aGVyd2lzZSByZXR1cm5zIHNlbnRpbmVsLiBJZiBubyBzdHJlYW0gaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxcblxcbiAgIE9wdHMgaXMgYSBwZXJzaXN0ZW50IG1hcCB3aXRoIHZhbGlkIGtleXM6XFxuICAgIDpyZWFkLWNvbmQgLSA6YWxsb3cgdG8gcHJvY2VzcyByZWFkZXIgY29uZGl0aW9uYWxzLCBvclxcbiAgICAgICAgICAgICAgICAgOnByZXNlcnZlIHRvIGtlZXAgYWxsIGJyYW5jaGVzXFxuICAgIDpmZWF0dXJlcyAtIHBlcnNpc3RlbnQgc2V0IG9mIGZlYXR1cmUga2V5d29yZHMgZm9yIHJlYWRlciBjb25kaXRpb25hbHNcXG4gICAgOmVvZiAtIG9uIGVvZiwgcmV0dXJuIHZhbHVlIHVubGVzcyA6ZW9mdGhyb3csIHRoZW4gdGhyb3cuXFxuICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCB3aWxsIHRocm93XFxuXFxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkXFxuXFxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZCBhbmRcXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZ1wiXG4gezphcmdsaXN0cyAnKFtyZWFkZXJdIFtvcHRzIHJlYWRlcl0gW3JlYWRlciBlb2YtZXJyb3I/IGVvZi12YWx1ZV0pfVxuIChbcmVhZGVyXSAocmVhZCByZWFkZXIgdHJ1ZSBuaWwpKVxuIChbe2VvZiA6ZW9mLCA6YXMgb3B0cywgOm9yIHtlb2YgOmVvZnRocm93fX0gcmVhZGVyXVxuICAocmVhZCogcmVhZGVyICg9IGVvZiA6ZW9mdGhyb3cpIGVvZiBuaWwgb3B0cyAodG8tYXJyYXkgW10pKSlcbiAoW3JlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsXVxuICAocmVhZCogcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWwgbmlsIHt9ICh0by1hcnJheSBbXSkpKSlcbiJ9IHs6c3ltIGRlZmF1bHQtZGF0YS1yZWFkZXJzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGRlZmF1bHQtZGF0YS1yZWFkZXJzXG4gXCJEZWZhdWx0IG1hcCBvZiBkYXRhIHJlYWRlciBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgQ2xvanVyZS5cXG4gIE1heSBiZSBvdmVycmlkZGVuIGJ5IGJpbmRpbmcgKmRhdGEtcmVhZGVycypcIlxuIHt9KVxuIn0gezpzeW0gKmRhdGEtcmVhZGVycyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmRhdGEtcmVhZGVycypcbiBcIk1hcCBmcm9tIHJlYWRlciB0YWcgc3ltYm9scyB0byBkYXRhIHJlYWRlciBWYXJzLlxcbiAgUmVhZGVyIHRhZ3Mgd2l0aG91dCBuYW1lc3BhY2UgcXVhbGlmaWVycyBhcmUgcmVzZXJ2ZWQgZm9yIENsb2p1cmUuXFxuICBUaGlzIGxpZ2h0IHZlcnNpb24gb2YgdG9vbHMucmVhZGVyIGhhcyBubyBpbXBsZW1lbnRhdGlvbiBmb3IgZGVmYXVsdFxcbiAgcmVhZGVyIHRhZ3Mgc3VjaCBhcyAjaW5zdCBhbmQgI3V1aWQuXCJcbiB7fSlcbiJ9IHs6c3ltICpyZWFkLWRlbGltKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnJlYWQtZGVsaW0qIGZhbHNlKVxuIn0gezpzeW0gcmVzb2x2ZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJSZXNvbHZlIGEgc3ltYm9sIHMgaW50byBpdHMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzcGFjZSB2ZXJzaW9uIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXN5bWJvbFxuIFwiUmVzb2x2ZSBhIHN5bWJvbCBzIGludG8gaXRzIGZ1bGx5IHF1YWxpZmllZCBuYW1lc3BhY2UgdmVyc2lvblwiXG4gW3NdXG4gcylcbiJ9IHs6c3ltICphbGlhcy1tYXAqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICphbGlhcy1tYXAqXG4gXCJNYXAgZnJvbSBucyBhbGlhcyB0byBucywgaWYgbm9uLW5pbCwgaXQgd2lsbCBiZSB1c2VkIHRvIHJlc29sdmUgcmVhZC10aW1lXFxuICAgbnMgYWxpYXNlcy5cXG5cXG4gICBEZWZhdWx0cyB0byBuaWxcIlxuIG5pbClcbiJ9IHs6c3ltICp3cmFwLXZhbHVlLWFuZC1hZGQtbWV0YWRhdGE/KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qIGZhbHNlKVxuIn0gezpzeW0gcmVhZC1yZWdleCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2ggb3B0cyBwZW5kaW5nLWZvcm1zXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtcmVnZXhcbiBbcmRyIGNoIG9wdHMgcGVuZGluZy1mb3Jtc11cbiAobGV0XG4gIFtzYiAoU3RyaW5nQnVmZmVyLildXG4gIChsb29wXG4gICBbY2ggKHJlYWQtY2hhciByZHIpXVxuICAgKGlmXG4gICAgKGlkZW50aWNhbD8gXFxcIiBjaClcbiAgICAoc3RyIHNiKVxuICAgIChpZlxuICAgICAobmlsPyBjaClcbiAgICAgKGVyci90aHJvdy1lb2YtcmVhZGluZyByZHIgOnJlZ2V4IHNiKVxuICAgICAoZG9cbiAgICAgICguYXBwZW5kIHNiIGNoKVxuICAgICAgKHdoZW5cbiAgICAgICAoaWRlbnRpY2FsPyBcXFxcIGNoKVxuICAgICAgIChsZXRcbiAgICAgICAgW2NoIChyZWFkLWNoYXIgcmRyKV1cbiAgICAgICAgKGlmIChuaWw/IGNoKSAoZXJyL3Rocm93LWVvZi1yZWFkaW5nIHJkciA6cmVnZXggc2IpKVxuICAgICAgICAoLmFwcGVuZCBzYiBjaCkpKVxuICAgICAgKHJlY3VyIChyZWFkLWNoYXIgcmRyKSkpKSkpKSlcbiJ9IHs6c3ltIHNiLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzYiAoU3RyaW5nQnVmZmVyLikpXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxuXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nXG5cbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQtc3RyaW5nIGFuZFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nIiwgOmFyZ2xpc3RzIFtbc10gW29wdHMgc11dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXN0cmluZ1xuIFwiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxcblxcbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmdcXG5cXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkLXN0cmluZyBhbmRcXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmcgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmdcIlxuIChbc10gKHJlYWQtc3RyaW5nIHt9IHMpKVxuIChbb3B0cyBzXVxuICAod2hlblxuICAgKGFuZCBzIChub3QgKGlkZW50aWNhbD8gcyBcIlwiKSkpXG4gICAocmVhZCBvcHRzIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzKSkpKSlcbiJ9IHs6c3ltIG1hcC1mdW5jLCA6bWV0YSB7OmRvYyAiRGVjaWRlIHdoaWNoIG1hcCB0eXBlIHRvIHVzZSwgYXJyYXktbWFwIGlmIGxlc3MgdGhhbiAxNiBlbGVtZW50cyIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLWZ1bmNcbiBcIkRlY2lkZSB3aGljaCBtYXAgdHlwZSB0byB1c2UsIGFycmF5LW1hcCBpZiBsZXNzIHRoYW4gMTYgZWxlbWVudHNcIlxuIFtjb2xsXVxuIChpZiAoPj0gKGNvdW50IGNvbGwpIDE2KSAnY2xqcy5jb3JlL2hhc2gtbWFwICdjbGpzLmNvcmUvYXJyYXktbWFwKSlcbiJ9KSwgcGxheS1jbGpjLmdsLmNvcmUgKHs6c3ltIC0+Z2FtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZXh0XSl9LCA6c291cmNlICIoZGVmbiAtPmdhbWUgW2NvbnRleHRdIHs6dGV4LWNvdW50IChhdG9tIDApLCA6Y29udGV4dCBjb250ZXh0fSlcbiJ9IHs6c3ltIGNvbXBpbGUsIDptZXRhIHs6ZG9jICJJbml0aWFsaXplcyB0aGUgcHJvdmlkZWQgZW50aXR5LCBjb21waWxpbmcgdGhlIHNoYWRlcnMgYW5kIGNyZWF0aW5nIGFsbCB0aGVcbiAgbmVjZXNzYXJ5IHN0YXRlIGZvciByZW5kZXJpbmcuIiwgOmFyZ2xpc3RzIChbZ2FtZSBlbnRpdHldKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGlsZVxuIFwiSW5pdGlhbGl6ZXMgdGhlIHByb3ZpZGVkIGVudGl0eSwgY29tcGlsaW5nIHRoZSBzaGFkZXJzIGFuZCBjcmVhdGluZyBhbGwgdGhlXFxuICBuZWNlc3Nhcnkgc3RhdGUgZm9yIHJlbmRlcmluZy5cIlxuIFtnYW1lIGVudGl0eV1cbiAobGV0XG4gIFt7OmtleXMgW3ZlcnRleCBmcmFnbWVudCBhdHRyaWJ1dGVzIHVuaWZvcm1zIGluZGljZXNdfVxuICAgZW50aXR5XG4gICB2ZXJ0ZXgtc291cmNlXG4gICAoaWcvaWdsdS0+Z2xzbCAobWVyZ2Ugezp2ZXJzaW9uIGdsc2wtdmVyc2lvbn0gdmVydGV4KSlcbiAgIGZyYWdtZW50LXNvdXJjZVxuICAgKGlnL2lnbHUtPmdsc2wgKG1lcmdlIHs6dmVyc2lvbiBnbHNsLXZlcnNpb259IGZyYWdtZW50KSlcbiAgIHByZXZpb3VzLXByb2dyYW1cbiAgIChnbFxuICAgIGdhbWVcbiAgICAjPyg6Y2xqIGdldEludGVnZXIgOmNsanMgZ2V0UGFyYW1ldGVyKVxuICAgIChnbCBnYW1lIENVUlJFTlRfUFJPR1JBTSkpXG4gICBwcmV2aW91cy12YW9cbiAgIChnbFxuICAgIGdhbWVcbiAgICAjPyg6Y2xqIGdldEludGVnZXIgOmNsanMgZ2V0UGFyYW1ldGVyKVxuICAgIChnbCBnYW1lIFZFUlRFWF9BUlJBWV9CSU5ESU5HKSlcbiAgIHByb2dyYW1cbiAgICh1L2NyZWF0ZS1wcm9ncmFtIGdhbWUgdmVydGV4LXNvdXJjZSBmcmFnbWVudC1zb3VyY2UpXG4gICBfXG4gICAoZ2wgZ2FtZSB1c2VQcm9ncmFtIHByb2dyYW0pXG4gICB2YW9cbiAgIChnbCBnYW1lICM/KDpjbGogZ2VuVmVydGV4QXJyYXlzIDpjbGpzIGNyZWF0ZVZlcnRleEFycmF5KSlcbiAgIF9cbiAgIChnbCBnYW1lIGJpbmRWZXJ0ZXhBcnJheSB2YW8pXG4gICBhdHRyLW5hbWVzXG4gICAodS9nZXQtYXR0cmlidXRlLW5hbWVzIHZlcnRleClcbiAgIGVudGl0eVxuICAgKGNvbmQtPlxuICAgIGVudGl0eVxuICAgIGF0dHItbmFtZXNcbiAgICAoYXNzb2NcbiAgICAgOmF0dHJpYnV0ZS1idWZmZXJzXG4gICAgIChyZWR1Y2VcbiAgICAgIChmbiBbbSBhdHRyLW5hbWVdIChhc3NvYyBtIGF0dHItbmFtZSAodS9jcmVhdGUtYnVmZmVyIGdhbWUpKSlcbiAgICAgIHt9XG4gICAgICBhdHRyLW5hbWVzKSlcbiAgICBpbmRpY2VzXG4gICAgKGFzc29jIDppbmRleC1idWZmZXIgKHUvY3JlYXRlLWJ1ZmZlciBnYW1lKSkpXG4gICBlbnRpdHlcbiAgIChzZXQtYnVmZmVycyBnYW1lIGVudGl0eSBwcm9ncmFtKVxuICAgdW5pZm9ybS1sb2NhdGlvbnNcbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW20gdW5pZm9ybV1cbiAgICAgKGFzc29jXG4gICAgICBtXG4gICAgICB1bmlmb3JtXG4gICAgICAoZ2wgZ2FtZSBnZXRVbmlmb3JtTG9jYXRpb24gcHJvZ3JhbSAobmFtZSB1bmlmb3JtKSkpKVxuICAgIHt9XG4gICAgKC0+XG4gICAgICN7fVxuICAgICAoaW50byAoLT4gdmVydGV4IDp1bmlmb3JtcyBrZXlzKSlcbiAgICAgKGludG8gKC0+IGZyYWdtZW50IDp1bmlmb3JtcyBrZXlzKSkpKVxuICAgZW50aXR5XG4gICAobWVyZ2VcbiAgICBlbnRpdHlcbiAgICB7OnZlcnRleCB2ZXJ0ZXgsXG4gICAgIDpmcmFnbWVudCBmcmFnbWVudCxcbiAgICAgOnZlcnRleC1zb3VyY2UgdmVydGV4LXNvdXJjZSxcbiAgICAgOmZyYWdtZW50LXNvdXJjZSBmcmFnbWVudC1zb3VyY2UsXG4gICAgIDpwcm9ncmFtIHByb2dyYW0sXG4gICAgIDp2YW8gdmFvLFxuICAgICA6dW5pZm9ybS1sb2NhdGlvbnMgdW5pZm9ybS1sb2NhdGlvbnMsXG4gICAgIDp0ZXh0dXJlcyB7fX0pXG4gICBlbnRpdHlcbiAgIChyZWR1Y2UgKHBhcnRpYWwgY2FsbC11bmlmb3JtIGdhbWUpIGVudGl0eSB1bmlmb3JtcyldXG4gIChzb21lLT4+XG4gICBlbnRpdHlcbiAgIDpyZW5kZXItdG8tdGV4dHVyZVxuICAgKHJlbmRlci0+dGV4dHVyZSBnYW1lICg6dGV4dHVyZXMgZW50aXR5KSkpXG4gIChnbCBnYW1lIHVzZVByb2dyYW0gcHJldmlvdXMtcHJvZ3JhbSlcbiAgKGdsIGdhbWUgYmluZFZlcnRleEFycmF5IHByZXZpb3VzLXZhbylcbiAgKGRpc3NvYyBlbnRpdHkgOnVuaWZvcm1zIDphdHRyaWJ1dGVzIDpyZW5kZXItdG8tdGV4dHVyZSkpKVxuIn0gezpzeW0gcmVuZGVyLCA6bWV0YSB7OmRvYyAiUmVuZGVycyB0aGUgcHJvdmlkZWQgZW50aXR5LiIsIDphcmdsaXN0cyAoW2dhbWUgZW50aXR5XSl9LCA6c291cmNlICIoZGVmblxuIHJlbmRlclxuIFwiUmVuZGVycyB0aGUgcHJvdmlkZWQgZW50aXR5LlwiXG4gW2dhbWUgZW50aXR5XVxuIChsZXRcbiAgW3s6a2V5c1xuICAgIFtwcm9ncmFtXG4gICAgIHZhb1xuICAgICB1bmlmb3Jtc1xuICAgICBpbmRpY2VzXG4gICAgIHZpZXdwb3J0XG4gICAgIGNsZWFyXG4gICAgIHJlbmRlci10by10ZXh0dXJlXG4gICAgIGluZGV4LWJ1ZmZlcl19XG4gICBlbnRpdHlcbiAgIHByZXZpb3VzLXByb2dyYW1cbiAgIChnbFxuICAgIGdhbWVcbiAgICAjPyg6Y2xqIGdldEludGVnZXIgOmNsanMgZ2V0UGFyYW1ldGVyKVxuICAgIChnbCBnYW1lIENVUlJFTlRfUFJPR1JBTSkpXG4gICBwcmV2aW91cy12YW9cbiAgIChnbFxuICAgIGdhbWVcbiAgICAjPyg6Y2xqIGdldEludGVnZXIgOmNsanMgZ2V0UGFyYW1ldGVyKVxuICAgIChnbCBnYW1lIFZFUlRFWF9BUlJBWV9CSU5ESU5HKSlcbiAgIHByZXZpb3VzLWluZGV4LWJ1ZmZlclxuICAgKGdsXG4gICAgZ2FtZVxuICAgICM/KDpjbGogZ2V0SW50ZWdlciA6Y2xqcyBnZXRQYXJhbWV0ZXIpXG4gICAgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykpXVxuICAoc29tZS0+PiBwcm9ncmFtIChnbCBnYW1lIHVzZVByb2dyYW0pKVxuICAoc29tZS0+PiB2YW8gKGdsIGdhbWUgYmluZFZlcnRleEFycmF5KSlcbiAgKHNvbWUtPj5cbiAgIGluZGV4LWJ1ZmZlclxuICAgKGdsIGdhbWUgYmluZEJ1ZmZlciAoZ2wgZ2FtZSBFTEVNRU5UX0FSUkFZX0JVRkZFUikpKVxuICAod2hlblxuICAgdW5pZm9ybXNcbiAgICh3aGVuLW5vdFxuICAgIHByb2dyYW1cbiAgICAodGhyb3cgKGV4LWluZm8gXCJPbmx5IGNvbXBpbGVkIGVudGl0aWVzIGNhbiBiZSByZW5kZXJlZFwiIHt9KSkpXG4gICAobGV0XG4gICAgW3s6a2V5cyBbdGV4dHVyZXNdfVxuICAgICAocmVkdWNlIChwYXJ0aWFsIGNhbGwtdW5pZm9ybSBnYW1lKSBlbnRpdHkgdW5pZm9ybXMpXVxuICAgIChkb3NlcVxuICAgICBbezprZXlzIFt1bml0IGxvY2F0aW9uXX0gKHZhbHMgdGV4dHVyZXMpXVxuICAgICAoZ2wgZ2FtZSB1bmlmb3JtMWkgbG9jYXRpb24gdW5pdCkpXG4gICAgKHNvbWUtPj5cbiAgICAgZW50aXR5XG4gICAgIDpyZW5kZXItdG8tdGV4dHVyZVxuICAgICAocmVuZGVyLT50ZXh0dXJlIGdhbWUgdGV4dHVyZXMpKSkpXG4gIChzb21lLT4+IHZpZXdwb3J0IChyZW5kZXItdmlld3BvcnQgZ2FtZSkpXG4gIChzb21lLT4+IGNsZWFyIChyZW5kZXItY2xlYXIgZ2FtZSkpXG4gIChsZXRcbiAgIFt7OmtleXMgW2RyYXctY291bnQgaW5zdGFuY2UtY291bnRdfVxuICAgIChzZXQtYnVmZmVycyBnYW1lIGVudGl0eSBwcm9ncmFtKV1cbiAgICh3aGVuXG4gICAgZHJhdy1jb3VudFxuICAgIChpZi1sZXRcbiAgICAgW3s6a2V5cyBbdHlwZV19IGluZGljZXNdXG4gICAgIChnbCBnYW1lIGRyYXdFbGVtZW50cyAoZ2wgZ2FtZSBUUklBTkdMRVMpIGRyYXctY291bnQgdHlwZSAwKVxuICAgICAoaWZcbiAgICAgIGluc3RhbmNlLWNvdW50XG4gICAgICAoZ2xcbiAgICAgICBnYW1lXG4gICAgICAgZHJhd0FycmF5c0luc3RhbmNlZFxuICAgICAgIChnbCBnYW1lIFRSSUFOR0xFUylcbiAgICAgICAwXG4gICAgICAgZHJhdy1jb3VudFxuICAgICAgIGluc3RhbmNlLWNvdW50KVxuICAgICAgKGdsIGdhbWUgZHJhd0FycmF5cyAoZ2wgZ2FtZSBUUklBTkdMRVMpIDAgZHJhdy1jb3VudCkpKSkpXG4gIChnbCBnYW1lIHVzZVByb2dyYW0gcHJldmlvdXMtcHJvZ3JhbSlcbiAgKGdsIGdhbWUgYmluZFZlcnRleEFycmF5IHByZXZpb3VzLXZhbylcbiAgKGdsXG4gICBnYW1lXG4gICBiaW5kQnVmZmVyXG4gICAoZ2wgZ2FtZSBFTEVNRU5UX0FSUkFZX0JVRkZFUilcbiAgIHByZXZpb3VzLWluZGV4LWJ1ZmZlcikpKVxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlciAoezpzeW0gcmVhZCtzdHJpbmcsIDptZXRhIHs6ZG9jICJMaWtlIHJlYWQsIGFuZCB0YWtpbmcgdGhlIHNhbWUgYXJncy4gcmVhZGVyIG11c3QgYmUgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXG4gIFJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgb2JqZWN0IHJlYWQgYW5kIHRoZSAod2hpdGVzcGFjZS10cmltbWVkKSBzdHJpbmcgcmVhZC4iLCA6YXJnbGlzdHMgW1tzdHJlYW1dIFtzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWVdIFtvcHRzIHN0cmVhbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkK3N0cmluZ1xuIFwiTGlrZSByZWFkLCBhbmQgdGFraW5nIHRoZSBzYW1lIGFyZ3MuIHJlYWRlciBtdXN0IGJlIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxcbiAgUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBvYmplY3QgcmVhZCBhbmQgdGhlICh3aGl0ZXNwYWNlLXRyaW1tZWQpIHN0cmluZyByZWFkLlwiXG4gKFtzdHJlYW1dIChyZWFkK3N0cmluZyBzdHJlYW0gdHJ1ZSBuaWwpKVxuIChbc3RyZWFtIGVvZi1lcnJvcj8gZW9mLXZhbHVlXVxuICAobGV0XG4gICBbYnVmXG4gICAgKGZuIFtyZWFkZXJdIChzdHIgKDpidWZmZXIgQCguLWZyYW1lcyBzdHJlYW0pKSkpXG4gICAgb2Zmc2V0XG4gICAgKGNvdW50IChidWYgc3RyZWFtKSlcbiAgICBvXG4gICAgKGxvZy1zb3VyY2Ugc3RyZWFtIChyZWFkIHN0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZSkpXG4gICAgc1xuICAgICgudHJpbSAoc3VicyAoYnVmIHN0cmVhbSkgb2Zmc2V0KSldXG4gICBbbyBzXSkpXG4gKFtvcHRzIHN0cmVhbV1cbiAgKGxldFxuICAgW2J1ZlxuICAgIChmbiBbcmVhZGVyXSAoc3RyICg6YnVmZmVyIEAoLi1mcmFtZXMgc3RyZWFtKSkpKVxuICAgIG9mZnNldFxuICAgIChjb3VudCAoYnVmIHN0cmVhbSkpXG4gICAgb1xuICAgIChsb2ctc291cmNlIHN0cmVhbSAocmVhZCBvcHRzIHN0cmVhbSkpXG4gICAgc1xuICAgICgudHJpbSAoc3VicyAoYnVmIHN0cmVhbSkgb2Zmc2V0KSldXG4gICBbbyBzXSkpKVxuIn0gezpzeW0gYm9vbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYm9vbD8gW3hdIChvciAoaW5zdGFuY2U/IGpzL0Jvb2xlYW4geCkgKHRydWU/IHgpIChmYWxzZT8geCkpKVxuIn0gezpzeW0gKnN1cHByZXNzLXJlYWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqc3VwcHJlc3MtcmVhZCogZmFsc2UpXG4ifSB7OnN5bSAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXG4gXCJXaGVuIG5vIGRhdGEgcmVhZGVyIGlzIGZvdW5kIGZvciBhIHRhZyBhbmQgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXFxuICBpcyBub24tbmlsLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS5cXG4gIElmICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiBpcyBuaWwgKHRoZSBkZWZhdWx0IHZhbHVlKSwgYW4gZXhjZXB0aW9uXFxuICB3aWxsIGJlIHRocm93biBmb3IgdGhlIHVua25vd24gdGFnLlwiXG4gbmlsKVxuIn0gezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlLlxuICAgT3RoZXJ3aXNlIHJldHVybnMgc2VudGluZWwuIElmIG5vIHN0cmVhbSBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXG5cbiAgIE9wdHMgaXMgYSBwZXJzaXN0ZW50IG1hcCB3aXRoIHZhbGlkIGtleXM6XG4gICAgOnJlYWQtY29uZCAtIDphbGxvdyB0byBwcm9jZXNzIHJlYWRlciBjb25kaXRpb25hbHMsIG9yXG4gICAgICAgICAgICAgICAgIDpwcmVzZXJ2ZSB0byBrZWVwIGFsbCBicmFuY2hlc1xuICAgIDpmZWF0dXJlcyAtIHBlcnNpc3RlbnQgc2V0IG9mIGZlYXR1cmUga2V5d29yZHMgZm9yIHJlYWRlciBjb25kaXRpb25hbHNcbiAgICA6ZW9mIC0gb24gZW9mLCByZXR1cm4gdmFsdWUgdW5sZXNzIDplb2Z0aHJvdywgdGhlbiB0aHJvdy5cbiAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCwgd2lsbCB0aHJvd1xuXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcblxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZCBhbmRcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbe2VvZiA6ZW9mLCA6YXMgb3B0cywgOm9yIHtlb2YgOmVvZnRocm93fX0gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZFxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlLlxcbiAgIE90aGVyd2lzZSByZXR1cm5zIHNlbnRpbmVsLiBJZiBubyBzdHJlYW0gaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxcblxcbiAgIE9wdHMgaXMgYSBwZXJzaXN0ZW50IG1hcCB3aXRoIHZhbGlkIGtleXM6XFxuICAgIDpyZWFkLWNvbmQgLSA6YWxsb3cgdG8gcHJvY2VzcyByZWFkZXIgY29uZGl0aW9uYWxzLCBvclxcbiAgICAgICAgICAgICAgICAgOnByZXNlcnZlIHRvIGtlZXAgYWxsIGJyYW5jaGVzXFxuICAgIDpmZWF0dXJlcyAtIHBlcnNpc3RlbnQgc2V0IG9mIGZlYXR1cmUga2V5d29yZHMgZm9yIHJlYWRlciBjb25kaXRpb25hbHNcXG4gICAgOmVvZiAtIG9uIGVvZiwgcmV0dXJuIHZhbHVlIHVubGVzcyA6ZW9mdGhyb3csIHRoZW4gdGhyb3cuXFxuICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCB3aWxsIHRocm93XFxuXFxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkXFxuXFxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZCBhbmRcXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZ1wiXG4gezphcmdsaXN0cyAnKFtyZWFkZXJdIFtvcHRzIHJlYWRlcl0gW3JlYWRlciBlb2YtZXJyb3I/IGVvZi12YWx1ZV0pfVxuIChbcmVhZGVyXSAocmVhZCByZWFkZXIgdHJ1ZSBuaWwpKVxuIChbe2VvZiA6ZW9mLCA6YXMgb3B0cywgOm9yIHtlb2YgOmVvZnRocm93fX0gcmVhZGVyXVxuICAocmVhZCogcmVhZGVyICg9IGVvZiA6ZW9mdGhyb3cpIGVvZiBuaWwgb3B0cyAodG8tYXJyYXkgW10pKSlcbiAoW3JlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsXVxuICAocmVhZCogcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWwgbmlsIHt9ICh0by1hcnJheSBbXSkpKSlcbiJ9IHs6c3ltIGRlZmF1bHQtZGF0YS1yZWFkZXJzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGRlZmF1bHQtZGF0YS1yZWFkZXJzXG4gXCJEZWZhdWx0IG1hcCBvZiBkYXRhIHJlYWRlciBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgQ2xvanVyZS5cXG4gIE1heSBiZSBvdmVycmlkZGVuIGJ5IGJpbmRpbmcgKmRhdGEtcmVhZGVycypcIlxuIHt9KVxuIn0gezpzeW0gKmRhdGEtcmVhZGVycyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmRhdGEtcmVhZGVycypcbiBcIk1hcCBmcm9tIHJlYWRlciB0YWcgc3ltYm9scyB0byBkYXRhIHJlYWRlciBWYXJzLlxcbiAgUmVhZGVyIHRhZ3Mgd2l0aG91dCBuYW1lc3BhY2UgcXVhbGlmaWVycyBhcmUgcmVzZXJ2ZWQgZm9yIENsb2p1cmUuXFxuICBUaGlzIGxpZ2h0IHZlcnNpb24gb2YgdG9vbHMucmVhZGVyIGhhcyBubyBpbXBsZW1lbnRhdGlvbiBmb3IgZGVmYXVsdFxcbiAgcmVhZGVyIHRhZ3Mgc3VjaCBhcyAjaW5zdCBhbmQgI3V1aWQuXCJcbiB7fSlcbiJ9IHs6c3ltICpyZWFkLWRlbGltKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnJlYWQtZGVsaW0qIGZhbHNlKVxuIn0gezpzeW0gcmVzb2x2ZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJSZXNvbHZlIGEgc3ltYm9sIHMgaW50byBpdHMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzcGFjZSB2ZXJzaW9uIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXN5bWJvbFxuIFwiUmVzb2x2ZSBhIHN5bWJvbCBzIGludG8gaXRzIGZ1bGx5IHF1YWxpZmllZCBuYW1lc3BhY2UgdmVyc2lvblwiXG4gW3NdXG4gKHRocm93IChleC1pbmZvIFwicmVzb2x2ZS1zeW1ib2wgaXMgbm90IGltcGxlbWVudGVkXCIgezpzeW0gc30pKSlcbiJ9IHs6c3ltICphbGlhcy1tYXAqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICphbGlhcy1tYXAqXG4gXCJNYXAgZnJvbSBucyBhbGlhcyB0byBucywgaWYgbm9uLW5pbCwgaXQgd2lsbCBiZSB1c2VkIHRvIHJlc29sdmUgcmVhZC10aW1lXFxuICAgbnMgYWxpYXNlcy5cXG5cXG4gICBEZWZhdWx0cyB0byBuaWxcIlxuIG5pbClcbiJ9IHs6c3ltIHJlYWQtcmVnZXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIG9wdHMgcGVuZGluZy1mb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXJlZ2V4XG4gW3JkciBjaCBvcHRzIHBlbmRpbmctZm9ybXNdXG4gKGxldFxuICBbc2IgKFN0cmluZ0J1ZmZlci4pXVxuICAobG9vcFxuICAgW2NoIChyZWFkLWNoYXIgcmRyKV1cbiAgIChpZlxuICAgIChpZGVudGljYWw/IFxcXCIgY2gpXG4gICAgKHJlLXBhdHRlcm4gKHN0ciBzYikpXG4gICAgKGlmXG4gICAgIChuaWw/IGNoKVxuICAgICAoZXJyL3Rocm93LWVvZi1yZWFkaW5nIHJkciA6cmVnZXggc2IpXG4gICAgIChkb1xuICAgICAgKC5hcHBlbmQgc2IgY2gpXG4gICAgICAod2hlblxuICAgICAgIChpZGVudGljYWw/IFxcXFwgY2gpXG4gICAgICAgKGxldFxuICAgICAgICBbY2ggKHJlYWQtY2hhciByZHIpXVxuICAgICAgICAoaWYgKG5pbD8gY2gpIChlcnIvdGhyb3ctZW9mLXJlYWRpbmcgcmRyIDpyZWdleCBzYikpXG4gICAgICAgICguYXBwZW5kIHNiIGNoKSkpXG4gICAgICAocmVjdXIgKHJlYWQtY2hhciByZHIpKSkpKSkpKVxuIn0gezpzeW0gc2IsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHNiIChTdHJpbmdCdWZmZXIuKSlcbiJ9IHs6c3ltIHJlYWQtc3RyaW5nLCA6bWV0YSB7OmRvYyAiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXG5cbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmdcblxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZC1zdHJpbmcgYW5kXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmcgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmciLCA6YXJnbGlzdHMgW1tzXSBbb3B0cyBzXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gXCJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxcbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXFxuXFxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZ1xcblxcbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQtc3RyaW5nIGFuZFxcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZyBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZ1wiXG4gKFtzXSAocmVhZC1zdHJpbmcge30gcykpXG4gKFtvcHRzIHNdXG4gICh3aGVuXG4gICAoYW5kIHMgKG5vdCAoaWRlbnRpY2FsPyBzIFwiXCIpKSlcbiAgIChyZWFkIG9wdHMgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMpKSkpKVxuIn0gezpzeW0gbWFwLWZ1bmMsIDptZXRhIHs6ZG9jICJEZWNpZGUgd2hpY2ggbWFwIHR5cGUgdG8gdXNlLCBhcnJheS1tYXAgaWYgbGVzcyB0aGFuIDE2IGVsZW1lbnRzIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtZnVuY1xuIFwiRGVjaWRlIHdoaWNoIG1hcCB0eXBlIHRvIHVzZSwgYXJyYXktbWFwIGlmIGxlc3MgdGhhbiAxNiBlbGVtZW50c1wiXG4gW2NvbGxdXG4gKGlmICg+PSAoY291bnQgY29sbCkgMTYpICdjbGpzLmNvcmUvaGFzaC1tYXAgJ2NsanMuY29yZS9hcnJheS1tYXApKVxuIn0pLCBzYWJsb25vLnV0aWwgKHs6c3ltIGpvaW4tY2xhc3NlcywgOm1ldGEgezpkb2MgIkpvaW4gdGhlIGBjbGFzc2VzYCB3aXRoIGEgd2hpdGVzcGFjZS4iLCA6YXJnbGlzdHMgKFtjbGFzc2VzXSl9LCA6c291cmNlICIoZGVmblxuIGpvaW4tY2xhc3Nlc1xuIFwiSm9pbiB0aGUgYGNsYXNzZXNgIHdpdGggYSB3aGl0ZXNwYWNlLlwiXG4gW2NsYXNzZXNdXG4gKC0+PlxuICBjbGFzc2VzXG4gIChpbnRvXG4gICBbXVxuICAgKGNvbXAgKG1hcGNhdCAoZm4gW3hdIChpZiAoc3RyaW5nPyB4KSBbeF0gKHNlcSB4KSkpKSAocmVtb3ZlIG5pbD8pKSlcbiAgKHN0ci9qb2luIFwiIFwiKSkpXG4ifSB7OnN5bSB0by1zdHIsIDptZXRhIHs6ZG9jICJDb252ZXJ0IGEgdmFsdWUgaW50byBhIHN0cmluZy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgVG9TdHJpbmd9IHs6c3ltIHJlYWN0LWZuLCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRoZSBzeW1ib2wgb2YgYSBmbiB0aGF0IGJ1aWxkIGEgUmVhY3QgZWxlbWVudC4gIiwgOmFyZ2xpc3RzIChbdHlwZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFjdC1mblxuIFwiUmV0dXJuIHRoZSBzeW1ib2wgb2YgYSBmbiB0aGF0IGJ1aWxkIGEgUmVhY3QgZWxlbWVudC4gXCJcbiBbdHlwZV1cbiAoaWZcbiAgKGNvbnRhaW5zPyAjezp0ZXh0YXJlYSA6aW5wdXQgOnNlbGVjdH0gKGtleXdvcmQgdHlwZSkpXG4gICdzYWJsb25vLmludGVycHJldGVyL2NyZWF0ZS1lbGVtZW50XG4gICdqcy9SZWFjdC5jcmVhdGVFbGVtZW50KSlcbiJ9IHs6c3ltIGNhbWVsLWNhc2Uta2V5cywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGludG8gY2FtZWwgY2FzZS4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGNhbWVsLWNhc2Uta2V5c1xuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgaW50byBjYW1lbCBjYXNlLlwiXG4gW21dXG4gKGlmXG4gIChtYXA/IG0pXG4gIChsZXRcbiAgIFttIChpbnRvIHt9IChtYXAgKGZuIFtbayB2XV0gWyhjYW1lbC1jYXNlIGspIHZdKSkgbSldXG4gICAoY29uZC0+IG0gKG1hcD8gKDpzdHlsZSBtKSkgKHVwZGF0ZSA6c3R5bGUgY2FtZWwtY2FzZS1rZXlzKSkpXG4gIG0pKVxuIn0gezpzeW0gZWxlbWVudD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiBgeGAgaXMgYW4gSFRNTCBlbGVtZW50LiBUcnVlIHdoZW4gYHhgIGlzIGEgdmVjdG9yXG4gIGFuZCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGtleXdvcmQsIGUuZy4gYFs6ZGl2XWAgb3IgYFs6ZGl2IFs6c3BhbiBcInhcIl1gLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZWxlbWVudD9cbiBcIlJldHVybiB0cnVlIGlmIGB4YCBpcyBhbiBIVE1MIGVsZW1lbnQuIFRydWUgd2hlbiBgeGAgaXMgYSB2ZWN0b3JcXG4gIGFuZCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGtleXdvcmQsIGUuZy4gYFs6ZGl2XWAgb3IgYFs6ZGl2IFs6c3BhbiBcXFwieFxcXCJdYC5cIlxuIFt4XVxuIChhbmQgKHZlY3Rvcj8geCkgKGtleXdvcmQ/IChmaXJzdCB4KSkpKVxuIn0gezpzeW0gKmJhc2UtdXJsKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmJhc2UtdXJsKiBuaWwpXG4ifSB7OnN5bSBhcy1zdHIsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBpdHMgYXJndW1lbnRzIGludG8gYSBzdHJpbmcgdXNpbmcgdG8tc3RyLiIsIDphcmdsaXN0cyAoWyYgeHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXMtc3RyXG4gXCJDb252ZXJ0cyBpdHMgYXJndW1lbnRzIGludG8gYSBzdHJpbmcgdXNpbmcgdG8tc3RyLlwiXG4gWyYgeHNdXG4gKHN0ci9qb2luIChtYXAgdG8tc3RyIHhzKSkpXG4ifSB7OnN5bSBodG1sLXRvLWRvbS1hdHRycywgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGFsbCBIVE1MIGF0dHJpYnV0ZXMgdG8gdGhlaXIgRE9NIGVxdWl2YWxlbnRzLiIsIDphcmdsaXN0cyAoW2F0dHJzXSl9LCA6c291cmNlICIoZGVmblxuIGh0bWwtdG8tZG9tLWF0dHJzXG4gXCJDb252ZXJ0cyBhbGwgSFRNTCBhdHRyaWJ1dGVzIHRvIHRoZWlyIERPTSBlcXVpdmFsZW50cy5cIlxuIFthdHRyc11cbiAocmVuYW1lLWtleXNcbiAgKGNhbWVsLWNhc2Uta2V5cyBhdHRycylcbiAgezpjbGFzcyA6Y2xhc3NOYW1lLCA6Zm9yIDpodG1sRm9yfSkpXG4ifSB7OnN5bSBUb1N0cmluZywgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRvLXN0cil9IHs6c3ltIFRvVVJJLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodG8tdXJpKX0gezpzeW0gY2FtZWwtY2FzZSwgOm1ldGEgezpkb2MgIlJldHVybnMgY2FtZWwgY2FzZSB2ZXJzaW9uIG9mIHRoZSBrZXksIGUuZy4gOmh0dHAtZXF1aXYgYmVjb21lcyA6aHR0cEVxdWl2LiIsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FtZWwtY2FzZVxuIFwiUmV0dXJucyBjYW1lbCBjYXNlIHZlcnNpb24gb2YgdGhlIGtleSwgZS5nLiA6aHR0cC1lcXVpdiBiZWNvbWVzIDpodHRwRXF1aXYuXCJcbiBba11cbiAoaWZcbiAgKG9yIChrZXl3b3JkPyBrKSAoc3RyaW5nPyBrKSAoc3ltYm9sPyBrKSlcbiAgKGxldFxuICAgW1tmaXJzdC13b3JkICYgd29yZHNdICguc3BsaXQgKG5hbWUgaykgXCItXCIpXVxuICAgKGlmXG4gICAgKG9yIChlbXB0eT8gd29yZHMpICg9IFwiYXJpYVwiIGZpcnN0LXdvcmQpICg9IFwiZGF0YVwiIGZpcnN0LXdvcmQpKVxuICAgIGtcbiAgICAoLT5cbiAgICAgKG1hcCBzdHIvY2FwaXRhbGl6ZSB3b3JkcylcbiAgICAgKGNvbmogZmlyc3Qtd29yZClcbiAgICAgc3RyL2pvaW5cbiAgICAga2V5d29yZCkpKVxuICBrKSlcbiJ9IHs6c3ltIHRvLXVyaSwgOm1ldGEgezpkb2MgIkNvbnZlcnQgYSB2YWx1ZSBpbnRvIGEgVVJJLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBUb1VSSX0pLCBwbGF5LWNsamMuZ2wudXRpbHMgKHs6c3ltIGNyZWF0ZS1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVhdGUtYnVmZmVyXG4gW2dhbWVdXG4gKGdsIGdhbWUgIz8oOmNsaiBnZW5CdWZmZXJzIDpjbGpzIGNyZWF0ZUJ1ZmZlcikpKVxuIn0gezpzeW0gZmxvYXQtc2l6ZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZmxvYXQtc2l6ZSA0KVxuIn0gezpzeW0gY3JlYXRlLXByb2dyYW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZSB2LXNvdXJjZSBmLXNvdXJjZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVhdGUtcHJvZ3JhbVxuIFtnYW1lIHYtc291cmNlIGYtc291cmNlXVxuIChsZXRcbiAgW3ZlcnRleC1zaGFkZXJcbiAgIChjcmVhdGUtc2hhZGVyIGdhbWUgKGdsIGdhbWUgVkVSVEVYX1NIQURFUikgdi1zb3VyY2UpXG4gICBmcmFnbWVudC1zaGFkZXJcbiAgIChjcmVhdGUtc2hhZGVyIGdhbWUgKGdsIGdhbWUgRlJBR01FTlRfU0hBREVSKSBmLXNvdXJjZSlcbiAgIHByb2dyYW1cbiAgIChnbCBnYW1lIGNyZWF0ZVByb2dyYW0pXVxuICAoZ2wgZ2FtZSBhdHRhY2hTaGFkZXIgcHJvZ3JhbSB2ZXJ0ZXgtc2hhZGVyKVxuICAoZ2wgZ2FtZSBhdHRhY2hTaGFkZXIgcHJvZ3JhbSBmcmFnbWVudC1zaGFkZXIpXG4gIChnbCBnYW1lIGxpbmtQcm9ncmFtIHByb2dyYW0pXG4gIChnbCBnYW1lIGRlbGV0ZVNoYWRlciB2ZXJ0ZXgtc2hhZGVyKVxuICAoZ2wgZ2FtZSBkZWxldGVTaGFkZXIgZnJhZ21lbnQtc2hhZGVyKVxuICAoaWZcbiAgICM/KDpjbGogKD0gKGdsIGdhbWUgVFJVRSkgKGdsIGdhbWUgZ2V0UHJvZ3JhbWkgcHJvZ3JhbSAoZ2wgZ2FtZSBMSU5LX1NUQVRVUykpKSA6Y2xqcyAoZ2wgZ2FtZSBnZXRQcm9ncmFtUGFyYW1ldGVyIHByb2dyYW0gKGdsIGdhbWUgTElOS19TVEFUVVMpKSlcbiAgIHByb2dyYW1cbiAgICh0aHJvdyAoZXgtaW5mbyAoZ2wgZ2FtZSBnZXRQcm9ncmFtSW5mb0xvZyBwcm9ncmFtKSB7fSkpKSkpXG4ifSB7OnN5bSBtZXJnZS1hdHRyaWJ1dGUtb3B0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnRpdHkgYXR0ci1uYW1lIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2UtYXR0cmlidXRlLW9wdHNcbiBbZW50aXR5IGF0dHItbmFtZSBvcHRzXVxuIChsZXRcbiAgW3R5cGUtbmFtZSAoZ2V0LWF0dHJpYnV0ZS10eXBlIGVudGl0eSBhdHRyLW5hbWUpXVxuICAobWVyZ2UgZGVmYXVsdC1vcHRzICh0eXBlLT5hdHRyaWJ1dGUtb3B0cyB0eXBlLW5hbWUpIG9wdHMpKSlcbiJ9IHs6c3ltIHNldC1hcnJheS1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZSBwcm9ncmFtIGJ1ZmZlciBhdHRyaWItbmFtZSBkYXRhIHs6a2V5cyBbc2l6ZSB0eXBlIGl0ZXIgbm9ybWFsaXplIHN0cmlkZSBvZmZzZXQgZGl2aXNvcl0sIDphcyBvcHRzfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtYXJyYXktYnVmZmVyXG4gW2dhbWVcbiAgcHJvZ3JhbVxuICBidWZmZXJcbiAgYXR0cmliLW5hbWVcbiAgZGF0YVxuICB7OmtleXMgW3NpemUgdHlwZSBpdGVyIG5vcm1hbGl6ZSBzdHJpZGUgb2Zmc2V0IGRpdmlzb3JdLCA6YXMgb3B0c31dXG4gKGxldFxuICBbYXR0cmliLWxvY2F0aW9uXG4gICAoZ2wgZ2FtZSBnZXRBdHRyaWJMb2NhdGlvbiBwcm9ncmFtIGF0dHJpYi1uYW1lKVxuICAgcHJldmlvdXMtYnVmZmVyXG4gICAoZ2xcbiAgICBnYW1lXG4gICAgIz8oOmNsaiBnZXRJbnRlZ2VyIDpjbGpzIGdldFBhcmFtZXRlcilcbiAgICAoZ2wgZ2FtZSBBUlJBWV9CVUZGRVJfQklORElORykpXG4gICB0b3RhbC1zaXplXG4gICAoKiBzaXplIGl0ZXIpXVxuICAoZ2wgZ2FtZSBiaW5kQnVmZmVyIChnbCBnYW1lIEFSUkFZX0JVRkZFUikgYnVmZmVyKVxuICAoZ2xcbiAgIGdhbWVcbiAgIGJ1ZmZlckRhdGFcbiAgIChnbCBnYW1lIEFSUkFZX0JVRkZFUilcbiAgIGRhdGFcbiAgIChnbCBnYW1lIFNUQVRJQ19EUkFXKSlcbiAgKGRvdGltZXNcbiAgIFtpIGl0ZXJdXG4gICAobGV0XG4gICAgW2xvYyAoKyBhdHRyaWItbG9jYXRpb24gaSldXG4gICAgKGdsIGdhbWUgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgbG9jKVxuICAgIChnbFxuICAgICBnYW1lXG4gICAgIHZlcnRleEF0dHJpYlBvaW50ZXJcbiAgICAgbG9jXG4gICAgIHNpemVcbiAgICAgdHlwZVxuICAgICBub3JtYWxpemVcbiAgICAgKCogdG90YWwtc2l6ZSBmbG9hdC1zaXplKVxuICAgICAoKiBpIHNpemUgZmxvYXQtc2l6ZSkpXG4gICAgKGdsIGdhbWUgdmVydGV4QXR0cmliRGl2aXNvciBsb2MgZGl2aXNvcikpKVxuICAoZ2wgZ2FtZSBiaW5kQnVmZmVyIChnbCBnYW1lIEFSUkFZX0JVRkZFUikgcHJldmlvdXMtYnVmZmVyKVxuICAoLyAoIz8oOmNsaiBjb3VudCA6Y2xqcyAuLWxlbmd0aCkgZGF0YSkgdG90YWwtc2l6ZSkpKVxuIn0gezpzeW0gZ2V0LWF0dHJpYnV0ZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbdmVydGV4XX0gYXR0ci1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1hdHRyaWJ1dGUtdHlwZVxuIFt7OmtleXMgW3ZlcnRleF19IGF0dHItbmFtZV1cbiAob3JcbiAgKGdldC1pbiB2ZXJ0ZXggWzppbnB1dHMgYXR0ci1uYW1lXSlcbiAgKGdldC1pbiB2ZXJ0ZXggWzphdHRyaWJ1dGVzIGF0dHItbmFtZV0pXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIllvdSBtdXN0IGRlZmluZSB0aGUgYXR0cmlidXRlIGluIHlvdXIgdmVydGV4IHNoYWRlcidzIDppbnB1dHNcIlxuICAgIHs6YXR0cmlidXRlLW5hbWUgYXR0ci1uYW1lfSkpKSlcbiJ9IHs6c3ltIGRlZmF1bHQtb3B0cywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBkZWZhdWx0LW9wdHNcbiB7Oml0ZXIgMSwgOm5vcm1hbGl6ZSBmYWxzZSwgOnN0cmlkZSAwLCA6b2Zmc2V0IDAsIDpkaXZpc29yIDB9KVxuIn0gezpzeW0gZ2V0LXVuaWZvcm0tdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3ZlcnRleCBmcmFnbWVudF19IHVuaS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGdldC11bmlmb3JtLXR5cGVcbiBbezprZXlzIFt2ZXJ0ZXggZnJhZ21lbnRdfSB1bmktbmFtZV1cbiAob3JcbiAgKGdldC1pbiB2ZXJ0ZXggWzp1bmlmb3JtcyB1bmktbmFtZV0pXG4gIChnZXQtaW4gZnJhZ21lbnQgWzp1bmlmb3JtcyB1bmktbmFtZV0pXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIllvdSBtdXN0IGRlZmluZSB0aGUgdW5pZm9ybSBpbiB5b3VyIHZlcnRleCBvciBmcmFnbWVudCBzaGFkZXIncyA6dW5pZm9ybXNcIlxuICAgIHs6dW5pZm9ybS1uYW1lIHVuaS1uYW1lfSkpKSlcbiJ9IHs6c3ltIHR5cGUtPmF0dHJpYnV0ZS1vcHRzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHR5cGUtPmF0dHJpYnV0ZS1vcHRzXG4gJ3tmbG9hdCB7OnNpemUgMX0sXG4gICB2ZWMyIHs6c2l6ZSAyfSxcbiAgIHZlYzMgezpzaXplIDN9LFxuICAgdmVjNCB7OnNpemUgNH0sXG4gICBtYXQyIHs6c2l6ZSA0fSxcbiAgIG1hdDMgezpzaXplIDMsIDppdGVyIDN9LFxuICAgbWF0NCB7OnNpemUgNCwgOml0ZXIgNH19KVxuIn0gezpzeW0gZGlzc29jLWluc3RhbmNlLWF0dHIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5kZXggaW5zdGFuY2VkLWVudGl0eSBhdHRyLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzc29jLWluc3RhbmNlLWF0dHJcbiBbaW5kZXggaW5zdGFuY2VkLWVudGl0eSBhdHRyLW5hbWVdXG4gKHVwZGF0ZS1pblxuICBpbnN0YW5jZWQtZW50aXR5XG4gIFs6YXR0cmlidXRlcyBhdHRyLW5hbWVdXG4gIChmblxuICAgW2F0dHJdXG4gICAobGV0XG4gICAgW3s6a2V5cyBbc2l6ZSBpdGVyXX1cbiAgICAgKG1lcmdlLWF0dHJpYnV0ZS1vcHRzIGluc3RhbmNlZC1lbnRpdHkgYXR0ci1uYW1lIGF0dHIpXG4gICAgIGRhdGEtbGVuXG4gICAgICgqIHNpemUgaXRlcilcbiAgICAgb2Zmc2V0XG4gICAgICgqIGluZGV4IGRhdGEtbGVuKV1cbiAgICAodXBkYXRlXG4gICAgIGF0dHJcbiAgICAgOmRhdGFcbiAgICAgKGZuXG4gICAgICBbZGF0YV1cbiAgICAgIChsZXRcbiAgICAgICBbdjEgKHN1YnZlYyBkYXRhIDAgb2Zmc2V0KSB2MiAoc3VidmVjIGRhdGEgKCsgb2Zmc2V0IGRhdGEtbGVuKSldXG4gICAgICAgKGludG8gKGludG8gW10gdjEpIHYyKSkpKSkpKSlcbiJ9IHs6c3ltIGdldC1hdHRyaWJ1dGUtbmFtZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmVydGV4XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1hdHRyaWJ1dGUtbmFtZXNcbiBbdmVydGV4XVxuIChvciAoc29tZS0+IHZlcnRleCA6aW5wdXRzIGtleXMpIChzb21lLT4gdmVydGV4IDphdHRyaWJ1dGVzIGtleXMpKSlcbiJ9IHs6c3ltIGFzc29jLWluc3RhbmNlLWF0dHIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5kZXggZW50aXR5IGluc3RhbmNlZC1lbnRpdHkgYXR0ci1uYW1lIHVuaS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGFzc29jLWluc3RhbmNlLWF0dHJcbiBbaW5kZXggZW50aXR5IGluc3RhbmNlZC1lbnRpdHkgYXR0ci1uYW1lIHVuaS1uYW1lXVxuICh3aGVuXG4gICg6cHJvZ3JhbSBlbnRpdHkpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIk9ubHkgdW5jb21waWxlZCBlbnRpdGllcyBjYW4gYmUgYXNzb2MnZWQgdG8gYW4gaW5zdGFuY2VkIGVudGl0eVwiXG4gICAge30pKSlcbiAobGV0XG4gIFtuZXctZGF0YVxuICAgKGdldC1pbiBlbnRpdHkgWzp1bmlmb3JtcyB1bmktbmFtZV0pXG4gICBkYXRhLWxlblxuICAgKGNvdW50IG5ldy1kYXRhKVxuICAgb2Zmc2V0XG4gICAoKiBpbmRleCBkYXRhLWxlbildXG4gICh1cGRhdGUtaW5cbiAgIGluc3RhbmNlZC1lbnRpdHlcbiAgIFs6YXR0cmlidXRlcyBhdHRyLW5hbWVdXG4gICAoZm5cbiAgICBbYXR0cl1cbiAgICAoaWZcbiAgICAgYXR0clxuICAgICAodXBkYXRlXG4gICAgICBhdHRyXG4gICAgICA6ZGF0YVxuICAgICAgKGZuXG4gICAgICAgW29sZC1kYXRhXVxuICAgICAgIChwZXJzaXN0ZW50IVxuICAgICAgICAocmVkdWNlLWt2XG4gICAgICAgICAoZm4gW2RhdGEgaSBuXSAoYXNzb2MhIGRhdGEgKCsgb2Zmc2V0IGkpIG4pKVxuICAgICAgICAgKHRyYW5zaWVudCBvbGQtZGF0YSlcbiAgICAgICAgIG5ldy1kYXRhKSkpKVxuICAgICB7OmRhdGEgKHZlYyBuZXctZGF0YSksIDpkaXZpc29yIDF9KSkpKSlcbiJ9IHs6c3ltIHNldC1pbmRleC1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZSBpbmRleC1idWZmZXIgaW5kaWNlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtaW5kZXgtYnVmZmVyXG4gW2dhbWUgaW5kZXgtYnVmZmVyIGluZGljZXNdXG4gKGxldFxuICBbcHJldmlvdXMtaW5kZXgtYnVmZmVyXG4gICAoZ2xcbiAgICBnYW1lXG4gICAgIz8oOmNsaiBnZXRJbnRlZ2VyIDpjbGpzIGdldFBhcmFtZXRlcilcbiAgICAoZ2wgZ2FtZSBFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKSldXG4gIChnbCBnYW1lIGJpbmRCdWZmZXIgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVIpIGluZGV4LWJ1ZmZlcilcbiAgKGdsXG4gICBnYW1lXG4gICBidWZmZXJEYXRhXG4gICAoZ2wgZ2FtZSBFTEVNRU5UX0FSUkFZX0JVRkZFUilcbiAgIGluZGljZXNcbiAgIChnbCBnYW1lIFNUQVRJQ19EUkFXKSlcbiAgKGdsXG4gICBnYW1lXG4gICBiaW5kQnVmZmVyXG4gICAoZ2wgZ2FtZSBFTEVNRU5UX0FSUkFZX0JVRkZFUilcbiAgIHByZXZpb3VzLWluZGV4LWJ1ZmZlcilcbiAgKCM/KDpjbGogY291bnQgOmNsanMgLi1sZW5ndGgpIGluZGljZXMpKSlcbiJ9KSwgZHluYWRvYy5jb21tb24gKHs6c3ltIHZhci1zeW0tPnVybCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHZhci1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFyLXN5bS0+dXJsXG4gW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gdmFyLXN5bV1cbiAoc3RyXG4gIHJlbC1wYXRoXG4gIChuYW1lIHR5cGUpXG4gIFwiL1wiXG4gIG5zLXN5bVxuICBcIi9cIlxuICAoaWZcbiAgIHN0YXRpYz9cbiAgICgtPlxuICAgIChzdHIgdmFyLXN5bSlcbiAgICAoc3RyL3JlcGxhY2UgXCI/XCIgXCIncSdcIilcbiAgICAoc3RyL3JlcGxhY2UgXCIhXCIgXCInZSdcIilcbiAgICAoc3RyL3JlcGxhY2UgXCI8XCIgXCInbCdcIilcbiAgICAoc3RyL3JlcGxhY2UgXCI+XCIgXCInZydcIilcbiAgICAoc3RyL3JlcGxhY2UgXCI6XCIgXCInYydcIilcbiAgICAoc3RyL3JlcGxhY2UgXCIqXCIgXCInYSdcIilcbiAgICAoc3RyL3JlcGxhY2UgXCImXCIgXCInbSdcIikpXG4gICAjPyg6Y2xqcyAoanMvZW5jb2RlVVJJQ29tcG9uZW50IChzdHIgdmFyLXN5bSkpIDpjbGogKGphdmEubmV0LlVSTEVuY29kZXIvZW5jb2RlIChzdHIgdmFyLXN5bSkgXCJVVEYtOFwiKSkpXG4gICh3aGVuIHN0YXRpYz8gXCIuaHRtbFwiKSkpXG4ifSB7OnN5bSBpbml0LWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtydW0tc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1lZGl0b3JcbiBbcnVtLXN0YXRlXVxuIChsZXRcbiAgW1tzdGF0ZV0gKDpydW0vYXJncyBydW0tc3RhdGUpXVxuICAod2hlbi1sZXRcbiAgIFtpbml0ICg6aW5pdC1lZGl0b3Igc3RhdGUpXVxuICAgKGluaXQgKHJ1bS9kb20tbm9kZSBydW0tc3RhdGUpKSkpXG4gcnVtLXN0YXRlKVxuIn0gezpzeW0gbnMtc3ltLT51cmwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBucy1zeW0tPnVybFxuIFtyZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltXVxuIChzdHIgcmVsLXBhdGggKG5hbWUgdHlwZSkgXCIvXCIgbnMtc3ltICh3aGVuIHN0YXRpYz8gXCIuaHRtbFwiKSkpXG4ifSB7OnN5bSAqc2Vzc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnNlc3Npb24gKGF0b20gaW5pdGlhbC1zZXNzaW9uKSlcbiJ9IHs6c3ltIGdldC1zdGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXN0YXRlXG4gW11cbiAoLT5cbiAgQCpzZXNzaW9uXG4gIChvL3F1ZXJ5LWFsbCA6ZHluYWRvYy5jb21tb24vZ2V0LXN0YXRlKVxuICBmaXJzdFxuICAob3IgKHRocm93IChleC1pbmZvIFwiU3RhdGUgbm90IGZvdW5kXCIge30pKSkpKVxuIn0gezpzeW0gdXBkYXRlLXNlc3Npb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2Vzc2lvbiBpZCBzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtc2Vzc2lvblxuIFtzZXNzaW9uIGlkIHN0YXRlXVxuIChvL2ZpcmUtcnVsZXMgKG8vaW5zZXJ0IHNlc3Npb24gaWQgc3RhdGUpKSlcbiJ9IHs6c3ltIGluaXRpYWwtc2Vzc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBpbml0aWFsLXNlc3Npb25cbiAoLT5cbiAgKHJlZHVjZSBvL2FkZC1ydWxlIChvLy0+c2Vzc2lvbikgKGNvbmNhdCBydWxlcyBjb21wb25lbnRzKSlcbiAgKG8vaW5zZXJ0XG4gICA6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICB7OmR5bmFkb2MuY29tbW9uL3Byb2Q/IGZhbHNlLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyIFwiXCIsXG4gICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD8gZmFsc2UsXG4gICAgOmR5bmFkb2MuY29tbW9uL2V4cG9ydGFibGU/IGZhbHNlLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9pbml0LWVkaXRvciBuaWwsXG4gICAgOmR5bmFkb2MuY29tbW9uL2luaXQtZXhhbXBsZS1lZGl0b3IgbmlsLFxuICAgIDpkeW5hZG9jLmNvbW1vbi93YXRjaGVyIG5pbH0pXG4gIChvL2luc2VydFxuICAgOmR5bmFkb2MuY29tbW9uL3NlcnZlclxuICAgezpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbmlsLFxuICAgIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIG5pbCxcbiAgICA6ZHluYWRvYy5jb21tb24vdHlwZSBuaWwsXG4gICAgOmR5bmFkb2MuY29tbW9uL2hpZGUtc2lkZWJhcj8gZmFsc2V9KSkpXG4ifSB7OnN5bSBydWxlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBydWxlc1xuIChvL3J1bGVzZXRcbiAgezpkeW5hZG9jLmNvbW1vbi9nZXQtc3RhdGVcbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbnMtc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIHZhci1zeW1dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3R5cGUgdHlwZV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vd2F0Y2hlciB3YXRjaGVyXV19KSlcbiJ9IHs6c3ltIGNvbXBvbmVudHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY29tcG9uZW50c1xuIChvcnVtL3J1bGVzZXRcbiAge2FwcC1yb290XG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtbWV0YSBucy1tZXRhXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIHZhci1zeW1dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3ZhcnMgdmFyc11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vY2xqcy1zdGFydGVkP1xuICAgICBjbGpzLXN0YXJ0ZWQ/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9wcm9kPyBwcm9kP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyXG4gICAgIDpkeW5hZG9jLmNvbW1vbi9oaWRlLXNpZGViYXI/XG4gICAgIGhpZGUtc2lkZWJhcj9dXG4gICAgOnRoZW5cbiAgICAobGV0XG4gICAgIFsqc2Vzc2lvbiAob3J1bS9wcm9wKV1cbiAgICAgWzpkaXZcbiAgICAgICh3aGVuLW5vdCBoaWRlLXNpZGViYXI/IChzaWRlYmFyIHt9KSlcbiAgICAgIChjb25qXG4gICAgICAgKGlmXG4gICAgICAgIG5zLXN5bVxuICAgICAgICAoaW50b1xuICAgICAgICAgWzpkaXZcbiAgICAgICAgICB7OmNsYXNzIFwidmFyc1wiLCA6c3R5bGUgezpsZWZ0IChpZiBoaWRlLXNpZGViYXI/IDAgMzAwKX19XG4gICAgICAgICAgKGV4cG9ydCAqc2Vzc2lvbilcbiAgICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAgdmFyLXN5bVxuICAgICAgICAgICBbOmRpdlxuICAgICAgICAgICAgWzpjZW50ZXIgWzpoMSAoc3RyIG5zLXN5bSldXVxuICAgICAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICAgICAgW2RvYyAoOmRvYyBucy1tZXRhKV1cbiAgICAgICAgICAgICBbOmRpdiB7OmNsYXNzIFwic2VjdGlvbiBkb2NcIn0gZG9jXSldKV1cbiAgICAgICAgIChtYXB2IHZhci0+aHRtbCB2YXJzKSlcbiAgICAgICAgWzpkaXYgezpjbGFzcyBcInZhcnNcIn0gKGV4cG9ydCAqc2Vzc2lvbildKVxuICAgICAgIChjb25kXG4gICAgICAgIHN0YXRpYz9cbiAgICAgICAgWzpkaXZcbiAgICAgICAgIHs6Y2xhc3MgXCJmb290ZXJcIn1cbiAgICAgICAgIFwiR2VuZXJhdGVkIGJ5IFwiXG4gICAgICAgICBbOmFcbiAgICAgICAgICB7OmhyZWYgXCJodHRwczovL2dpdGh1Yi5jb20vb2FrZXMvRHluYWRvY1wiLCA6dGFyZ2V0IFwiX2JsYW5rXCJ9XG4gICAgICAgICAgXCJEeW5hZG9jXCJdXVxuICAgICAgICAoYW5kIGNsanMtc3RhcnRlZD8gKG5vdCBwcm9kPykpXG4gICAgICAgIFs6ZGl2XG4gICAgICAgICB7OmNsYXNzIFwiZm9vdGVyXCJ9XG4gICAgICAgICBcIlRoaXMgaXMgYSBjdXN0b20gYnVpbGQgb2YgXCJcbiAgICAgICAgIFs6YVxuICAgICAgICAgIHs6aHJlZiBcImh0dHBzOi8vZ2l0aHViLmNvbS9vYWtlcy9EeW5hZG9jXCIsIDp0YXJnZXQgXCJfYmxhbmtcIn1cbiAgICAgICAgICBcIkR5bmFkb2NcIl1dKSldKV0sXG4gICB2YXItPmh0bWxcbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbnMtc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIHZhci1zeW1dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3R5cGUgdHlwZV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vcmVsLXBhdGggcmVsLXBhdGhdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cbiAgICA6dGhlblxuICAgIChsZXRcbiAgICAgW3s6a2V5cyBbc3ltIG1ldGEgc291cmNlIHNwZWMgZXhhbXBsZXMgbWV0aG9kcyBwcm90b2NvbF19XG4gICAgICAob3J1bS9wcm9wKVxuICAgICAgezprZXlzIFthcmdsaXN0cyBkb2NdfVxuICAgICAgbWV0YVxuICAgICAgdXJsXG4gICAgICAodmFyLXN5bS0+dXJsIHJlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gc3ltKV1cbiAgICAgWzpkaXZcbiAgICAgIHs6Y2xhc3MgXCJ2YXItaW5mb1wifVxuICAgICAgKGludG9cbiAgICAgICAoaWYgdmFyLXN5bSBbOmRpdl0gWzphIHs6aHJlZiB1cmx9XSlcbiAgICAgICAoaWZcbiAgICAgICAgYXJnbGlzdHNcbiAgICAgICAgKG1hcFxuICAgICAgICAgKGZuIFthcmdsaXN0XSBbOmgyIChwci1zdHIgKGFwcGx5IGxpc3Qgc3ltIGFyZ2xpc3QpKV0pXG4gICAgICAgICBhcmdsaXN0cylcbiAgICAgICAgW1s6aDIgKHN0ciBzeW0pXV0pKVxuICAgICAgKHdoZW5cbiAgICAgICBtZXRob2RzXG4gICAgICAgWzpkaXZcbiAgICAgICAgezpjbGFzcyBcInNlY3Rpb25cIn1cbiAgICAgICAgWzpoMyBcIk1ldGhvZHMgaW4gdGhpcyBwcm90b2NvbFwiXVxuICAgICAgICAoaW50b1xuICAgICAgICAgWzp1bF1cbiAgICAgICAgIChmb3JcbiAgICAgICAgICBbbWV0aG9kLXN5bSBtZXRob2RzXVxuICAgICAgICAgIFs6bGlcbiAgICAgICAgICAgWzphXG4gICAgICAgICAgICB7OmhyZWZcbiAgICAgICAgICAgICAodmFyLXN5bS0+dXJsIHJlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gbWV0aG9kLXN5bSl9XG4gICAgICAgICAgICAoc3RyIG1ldGhvZC1zeW0pXV0pKV0pXG4gICAgICAod2hlblxuICAgICAgIHByb3RvY29sXG4gICAgICAgWzpkaXZcbiAgICAgICAgezpjbGFzcyBcInNlY3Rpb25cIn1cbiAgICAgICAgWzpoM1xuICAgICAgICAgXCJQYXJ0IG9mIHRoZSBcIlxuICAgICAgICAgWzphXG4gICAgICAgICAgezpocmVmICh2YXItc3ltLT51cmwgcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bSBwcm90b2NvbCl9XG4gICAgICAgICAgKHN0ciBwcm90b2NvbCldXG4gICAgICAgICBcIiBwcm90b2NvbFwiXV0pXG4gICAgICAod2hlbiBkb2MgWzpkaXYgezpjbGFzcyBcInNlY3Rpb24gZG9jXCJ9IGRvY10pXG4gICAgICAod2hlblxuICAgICAgIChzZXEgZXhhbXBsZXMpXG4gICAgICAgKGludG9cbiAgICAgICAgWzpkaXZcbiAgICAgICAgIHs6Y2xhc3MgXCJzZWN0aW9uXCJ9XG4gICAgICAgICBbOmgyIChpZiAoPiAoY291bnQgZXhhbXBsZXMpIDEpIFwiRXhhbXBsZXNcIiBcIkV4YW1wbGVcIildXVxuICAgICAgICAobWFwdiBleGFtcGxlLT5odG1sIGV4YW1wbGVzKSkpXG4gICAgICAod2hlblxuICAgICAgIHNwZWNcbiAgICAgICAoaWZcbiAgICAgICAgdmFyLXN5bVxuICAgICAgICBbOmRpdiB7OmNsYXNzIFwic2VjdGlvblwifSBbOmgyIFwiU3BlY1wiXSAoc3BlYy0+aHRtbCBzcGVjKV1cbiAgICAgICAgKGV4cGFuZGFibGUtc2VjdGlvblxuICAgICAgICAgezpsYWJlbCBcIlNwZWNcIiwgOnVybCB1cmwsIDpjb250ZW50IChzcGVjLT5odG1sIHNwZWMpfSkpKVxuICAgICAgKHdoZW5cbiAgICAgICBzb3VyY2VcbiAgICAgICAoaWZcbiAgICAgICAgdmFyLXN5bVxuICAgICAgICBbOmRpdiB7OmNsYXNzIFwic2VjdGlvblwifSBbOmgyIFwiU291cmNlXCJdIChzb3VyY2UtPmh0bWwgc291cmNlKV1cbiAgICAgICAgKGV4cGFuZGFibGUtc2VjdGlvblxuICAgICAgICAgezpsYWJlbCBcIlNvdXJjZVwiLFxuICAgICAgICAgIDp1cmwgdXJsLFxuICAgICAgICAgIDpjb250ZW50IChzb3VyY2UtPmh0bWwgc291cmNlKX0pKSldKV0sXG4gICBleGFtcGxlLT5odG1sXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdHlwZSB0eXBlXVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9wcm9kPyBwcm9kP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICAgIDpkeW5hZG9jLmNvbW1vbi9pbml0LWV4YW1wbGUtZWRpdG9yXG4gICAgIGluaXQtZXhhbXBsZS1lZGl0b3JdXG4gICAgOnRoZW5cbiAgICAoZXhhbXBsZS0+aHRtbCogby8qbWF0Y2gqIChvcnVtL3Byb3ApKV0sXG4gICBzb3VyY2UtPmh0bWxcbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9pbml0LWVkaXRvciBpbml0LWVkaXRvcl1cbiAgICA6dGhlblxuICAgIChzb3VyY2UtPmh0bWwqIG8vKm1hdGNoKiAob3J1bS9wcm9wKSldLFxuICAgc3BlYy0+aHRtbFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL2luaXQtZWRpdG9yIGluaXQtZWRpdG9yXVxuICAgIDp0aGVuXG4gICAgKHNwZWMtPmh0bWwqIG8vKm1hdGNoKiAob3J1bS9wcm9wKSldLFxuICAgZXhwb3J0XG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vY2xqcy1zdGFydGVkP1xuICAgICBjbGpzLXN0YXJ0ZWQ/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHN0YXRpYz9dXG4gICAgOnRoZW5cbiAgICAobGV0XG4gICAgIFsqc2Vzc2lvbiAob3J1bS9wcm9wKV1cbiAgICAgKHdoZW4tbm90XG4gICAgICBzdGF0aWM/XG4gICAgICBbOmRpdlxuICAgICAgIHs6c3R5bGUgezptaW4taGVpZ2h0IDc1fX1cbiAgICAgICAod2hlblxuICAgICAgICBjbGpzLXN0YXJ0ZWQ/XG4gICAgICAgIFs6ZGl2XG4gICAgICAgICB7OmNsYXNzIFwiZXhwb3J0XCJ9XG4gICAgICAgICAoZXhwYW5kYWJsZS1zZWN0aW9uXG4gICAgICAgICAgezpsYWJlbCBcIkV4cG9ydFwiLFxuICAgICAgICAgICA6dXJsIFwiXCIsXG4gICAgICAgICAgIDpjb250ZW50IChleHBvcnQtZm9ybSAqc2Vzc2lvbiksXG4gICAgICAgICAgIDpvbi1jbG9zZVxuICAgICAgICAgICAoZm4qXG4gICAgICAgICAgICBbXVxuICAgICAgICAgICAgKHN3YXAhXG4gICAgICAgICAgICAgKnNlc3Npb25cbiAgICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICAgW3Nlc3Npb25dXG4gICAgICAgICAgICAgICgtPlxuICAgICAgICAgICAgICAgc2Vzc2lvblxuICAgICAgICAgICAgICAgKG8vaW5zZXJ0XG4gICAgICAgICAgICAgICAgOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXG4gICAgICAgICAgICAgICAgXCJcIilcbiAgICAgICAgICAgICAgIG8vZmlyZS1ydWxlcykpKSl9KV0pXG4gICAgICAgWzpkaXYgezpzdHlsZSB7OmNsZWFyIFwicmlnaHRcIn19XV0pKV0sXG4gICBleHBvcnQtZm9ybVxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLXN5bSBucy1zeW1dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLW1ldGEgbnMtbWV0YV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi90eXBlIHR5cGVdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL2V4cG9ydGFibGU/IGV4cG9ydGFibGU/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXG4gICAgIGV4cG9ydC1maWx0ZXJdXG4gICAgOnRoZW5cbiAgICAobGV0XG4gICAgIFsqc2Vzc2lvblxuICAgICAgKG9ydW0vcHJvcClcbiAgICAgICpvcHRpb25zXG4gICAgICAob3J1bS9hdG9tIHs6cGFnZXMgKGlmIG5zLXN5bSA6c2luZ2xlIDptdWx0aXBsZSl9KVxuICAgICAgezprZXlzIFtwYWdlc119XG4gICAgICBAKm9wdGlvbnNdXG4gICAgIFs6Zm9ybVxuICAgICAgezphY3Rpb24gXCIvZHluYWRvYy1leHBvcnQuemlwXCIsXG4gICAgICAgOm1ldGhvZCA6Z2V0LFxuICAgICAgIDpzdHlsZSB7OnRleHQtYWxpZ24gXCJsZWZ0XCJ9fVxuICAgICAgWzpkaXZcbiAgICAgICBbOmxhYmVsXG4gICAgICAgIFs6aW5wdXRcbiAgICAgICAgIHs6dHlwZSBcInJhZGlvXCIsXG4gICAgICAgICAgOm5hbWUgXCJwYWdlc1wiLFxuICAgICAgICAgIDp2YWx1ZSBcInNpbmdsZVwiLFxuICAgICAgICAgIDpjaGVja2VkICg9IHBhZ2VzIDpzaW5nbGUpLFxuICAgICAgICAgIDpvbi1jbGljayAoZm4qIFtdIChzd2FwISAqb3B0aW9ucyBhc3NvYyA6cGFnZXMgOnNpbmdsZSkpLFxuICAgICAgICAgIDpkaXNhYmxlZCAobmlsPyBucy1zeW0pfV1cbiAgICAgICAgXCJPbmx5IHRoaXMgcGFnZVwiXV1cbiAgICAgIFs6ZGl2XG4gICAgICAgWzpsYWJlbFxuICAgICAgICBbOmlucHV0XG4gICAgICAgICB7OnR5cGUgXCJyYWRpb1wiLFxuICAgICAgICAgIDpuYW1lIFwicGFnZXNcIixcbiAgICAgICAgICA6dmFsdWUgXCJtdWx0aXBsZVwiLFxuICAgICAgICAgIDpjaGVja2VkICg9IHBhZ2VzIDptdWx0aXBsZSksXG4gICAgICAgICAgOm9uLWNsaWNrIChmbiogW10gKHN3YXAhICpvcHRpb25zIGFzc29jIDpwYWdlcyA6bXVsdGlwbGUpKX1dXG4gICAgICAgIFwiTXVsdGlwbGUgcGFnZXNcIl1dXG4gICAgICBbOmRpdlxuICAgICAgIHs6c3R5bGUgezptYXJnaW4gMTAsIDpmb250LXNpemUgMTR9fVxuICAgICAgIChjYXNlXG4gICAgICAgIHBhZ2VzXG4gICAgICAgIDpzaW5nbGVcbiAgICAgICAgWzppXG4gICAgICAgICBcIk9ubHkgdGhlIGN1cnJlbnQgcGFnZSB3aWxsIGJlIGV4cG9ydGVkXCJcbiAgICAgICAgIFs6YnJdXG4gICAgICAgICBcImFuZCB0aGUgc2lkZWJhciB3aWxsIGJlIGhpZGRlbi5cIl1cbiAgICAgICAgOm11bHRpcGxlXG4gICAgICAgIFs6aVxuICAgICAgICAgXCJBbGwgdGhlIG5hbWVzcGFjZXMgaW4gdGhlIHNpZGViYXJcIlxuICAgICAgICAgWzpicl1cbiAgICAgICAgIFwid2lsbCBiZSBleHBvcnRlZC4gWW91IGNhbiBuYXJyb3cgdGhlbVwiXG4gICAgICAgICBbOmJyXVxuICAgICAgICAgXCJkb3duIHdpdGggdGhlIGZvbGxvd2luZyByZWdleDpcIlxuICAgICAgICAgWzpkaXZcbiAgICAgICAgICBbOmlucHV0XG4gICAgICAgICAgIHs6dHlwZSBcInRleHRcIixcbiAgICAgICAgICAgIDp2YWx1ZSBcIlwiLFxuICAgICAgICAgICAgOnBsYWNlaG9sZGVyIFwiRXhwb3J0IGZpbHRlclwiLFxuICAgICAgICAgICAgOnN0eWxlIHs6bWFyZ2luIDUsIDpmb250LXNpemUgMTR9LFxuICAgICAgICAgICAgOm9uLWNoYW5nZVxuICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgW2VdXG4gICAgICAgICAgICAgKHN3YXAhXG4gICAgICAgICAgICAgICpzZXNzaW9uXG4gICAgICAgICAgICAgIChmblxuICAgICAgICAgICAgICAgW3Nlc3Npb25dXG4gICAgICAgICAgICAgICAoLT5cbiAgICAgICAgICAgICAgICBzZXNzaW9uXG4gICAgICAgICAgICAgICAgKG8vaW5zZXJ0XG4gICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgICAgICAgICAgICAgOmR5bmFkb2MuY29tbW9uL2V4cG9ydC1maWx0ZXJcbiAgICAgICAgICAgICAgICAgKC0+IGUgLi10YXJnZXQgLi12YWx1ZSkpXG4gICAgICAgICAgICAgICAgby9maXJlLXJ1bGVzKSkpKX1dXV0pXVxuICAgICAgWzppbnB1dFxuICAgICAgIHs6dHlwZSBcImhpZGRlblwiLFxuICAgICAgICA6bmFtZSBcImV4cG9ydC1maWx0ZXJcIixcbiAgICAgICAgOnZhbHVlIChvciBleHBvcnQtZmlsdGVyIFwiXCIpfV1cbiAgICAgICh3aGVuXG4gICAgICAgdHlwZVxuICAgICAgIFs6aW5wdXQgezp0eXBlIFwiaGlkZGVuXCIsIDpuYW1lIFwidHlwZVwiLCA6dmFsdWUgKG5hbWUgdHlwZSl9XSlcbiAgICAgICh3aGVuXG4gICAgICAgbnMtc3ltXG4gICAgICAgWzppbnB1dCB7OnR5cGUgXCJoaWRkZW5cIiwgOm5hbWUgXCJucy1zeW1cIiwgOnZhbHVlIChzdHIgbnMtc3ltKX1dKVxuICAgICAgKHdoZW5cbiAgICAgICB2YXItc3ltXG4gICAgICAgWzppbnB1dFxuICAgICAgICB7OnR5cGUgXCJoaWRkZW5cIiwgOm5hbWUgXCJ2YXItc3ltXCIsIDp2YWx1ZSAoc3RyIHZhci1zeW0pfV0pXG4gICAgICBbOmRpdlxuICAgICAgIHs6c3R5bGUgezp0ZXh0LWFsaWduIFwiY2VudGVyXCJ9fVxuICAgICAgIFs6YnV0dG9uXG4gICAgICAgIHs6dHlwZSBcInN1Ym1pdFwiLCA6ZGlzYWJsZWQgKG5vdCBleHBvcnRhYmxlPyl9XG4gICAgICAgIFwiRG93bmxvYWQgemlwIGZpbGVcIl1dXG4gICAgICAod2hlbi1ub3RcbiAgICAgICBleHBvcnRhYmxlP1xuICAgICAgIFs6ZGl2XG4gICAgICAgIHs6c3R5bGUgezptYXJnaW4gMTAsIDpmb250LXNpemUgMTR9fVxuICAgICAgICBbOmRpdlxuICAgICAgICAgWzpiIFwiWW91IGJ1aWx0IER5bmFkb2Mgd2l0aCA6b3B0aW1pemF0aW9ucyBzZXQgdG8gOm5vbmVcIl1dXG4gICAgICAgIFs6ZGl2XG4gICAgICAgICBbOmIgXCJZb3UgbXVzdCBzZXQgaXQgdG8gOnNpbXBsZSBpbiBvcmRlciB0byBleHBvcnRcIl1dXSldKV0sXG4gICBzaWRlYmFyXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnNlcyBuc2VzXVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICAgIDpkeW5hZG9jLmNvbW1vbi9jbGpzLXN0YXJ0ZWQ/XG4gICAgIGNsanMtc3RhcnRlZD9dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3JlbC1wYXRoIHJlbC1wYXRoXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHN0YXRpYz9dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL2hpZGUtYmFkZ2U/IGhpZGUtYmFkZ2U/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXG4gICAgIGV4cG9ydC1maWx0ZXJdXG4gICAgOnRoZW5cbiAgICAobGV0XG4gICAgIFsqc2VhcmNoXG4gICAgICAob3J1bS9hdG9tIFwiXCIpXG4gICAgICBzZWFyY2hcbiAgICAgIChvciAobm90LWVtcHR5IGV4cG9ydC1maWx0ZXIpIEAqc2VhcmNoKVxuICAgICAgc2VhcmNoXG4gICAgICAod2hlblxuICAgICAgIChzZXEgc2VhcmNoKVxuICAgICAgICh0cnlcbiAgICAgICAgKHJlLXBhdHRlcm4gc2VhcmNoKVxuICAgICAgICAoY2F0Y2ggIz8oOmNsaiBFeGNlcHRpb24gOmNsanMganMvRXJyb3IpIGUgKHByaW50bG4gZSkpKSldXG4gICAgIFs6ZGl2XG4gICAgICAod2hlblxuICAgICAgIGNsanMtc3RhcnRlZD9cbiAgICAgICBbOmlucHV0XG4gICAgICAgIHs6Y2xhc3MgXCJzZWFyY2hcIixcbiAgICAgICAgIDpvbi1jaGFuZ2VcbiAgICAgICAgIChmbipcbiAgICAgICAgICBbcDFfXzQ1NDcyI11cbiAgICAgICAgICAoLT4+IHAxX180NTQ3MiMgLi10YXJnZXQgLi12YWx1ZSAocmVzZXQhICpzZWFyY2gpKSksXG4gICAgICAgICA6cGxhY2Vob2xkZXIgXCJTZWFyY2hcIn1dKVxuICAgICAgKGludG9cbiAgICAgICBbOmRpdlxuICAgICAgICB7OmNsYXNzIFwibnNlc1wifVxuICAgICAgICAod2hlbiAoc2VxIGV4cG9ydC1maWx0ZXIpIFs6aSBcIlBhZ2VzIHRvIGV4cG9ydDpcIl0pXVxuICAgICAgIChrZWVwXG4gICAgICAgIChmblxuICAgICAgICAgW3s6a2V5cyBbc3ltIHR5cGUgdmFyLXN5bXNdfV1cbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbdmFyc1xuICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgKGFuZCBzZWFyY2ggKGVtcHR5PyBleHBvcnQtZmlsdGVyKSlcbiAgICAgICAgICAgICgtPj5cbiAgICAgICAgICAgICB2YXItc3ltc1xuICAgICAgICAgICAgIChmaWx0ZXJcbiAgICAgICAgICAgICAgKGZuKiBbcDFfXzQ1NDczI10gKHJlLWZpbmQgc2VhcmNoIChzdHIgcDFfXzQ1NDczIykpKSlcbiAgICAgICAgICAgICAobWFwdlxuICAgICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICAgIFt2YXItc3ltXVxuICAgICAgICAgICAgICAgWzpkaXZcbiAgICAgICAgICAgICAgICB7OmNsYXNzIFwidmFyXCJ9XG4gICAgICAgICAgICAgICAgWzphXG4gICAgICAgICAgICAgICAgIHs6aHJlZlxuICAgICAgICAgICAgICAgICAgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgc3ltIHZhci1zeW0pfVxuICAgICAgICAgICAgICAgICAoc3RyIHZhci1zeW0pXV0pKSkpXVxuICAgICAgICAgICh3aGVuXG4gICAgICAgICAgIChvciAobmlsPyBzZWFyY2gpIChyZS1maW5kIHNlYXJjaCAoc3RyIHN5bSkpIChzZXEgdmFycykpXG4gICAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgIChhbmQgKD0gdHlwZSA6Y2xqcykgKG5vdCBoaWRlLWJhZGdlPykpXG4gICAgICAgICAgICAgWzpkaXYgezpjbGFzcyBcInRhZ1wifSBcIkNMSlNcIl0pXG4gICAgICAgICAgICBbOmFcbiAgICAgICAgICAgICB7OmhyZWYgKG5zLXN5bS0+dXJsIHJlbC1wYXRoIHN0YXRpYz8gdHlwZSBzeW0pfVxuICAgICAgICAgICAgIChzdHIgc3ltKV1cbiAgICAgICAgICAgICh3aGVuIChzZXEgdmFycykgKGludG8gWzpkaXZdIHZhcnMpKV0pKSlcbiAgICAgICAgbnNlcykpXSldfSkpXG4ifSB7OnN5bSBpbml0LWV4YW1wbGUtZWRpdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3J1bS1zdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0LWV4YW1wbGUtZWRpdG9yXG4gW3J1bS1zdGF0ZV1cbiAobGV0XG4gIFtbc3RhdGUgZXhhbXBsZV0gKDpydW0vYXJncyBydW0tc3RhdGUpXVxuICAod2hlbi1sZXRcbiAgIFtpbml0ICg6aW5pdC1leGFtcGxlLWVkaXRvciBzdGF0ZSldXG4gICAoaW5pdCAocnVtL2RvbS1ub2RlIHJ1bS1zdGF0ZSkgZXhhbXBsZSkpKVxuIHJ1bS1zdGF0ZSlcbiJ9KSwgcGFyZW4tc291cC5kb20gKHs6c3ltIHRvcC1sZXZlbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0b3AtbGV2ZWw/XG4gW25vZGVdXG4gKGJvb2xlYW5cbiAgKHNvbWUtPiBub2RlIC4tcGFyZW50RWxlbWVudCAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiY29udGVudFwiKSkpKVxuIn0gezpzeW0gZ2V0LXNlbGVjdGlvbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG9iamVjdHMgcmVsYXRlZCB0byBzZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBlbGVtZW50LiBJZiBmdWxsLXNlbGVjdGlvbj8gaXMgdHJ1ZSxcbml0IHdpbGwgdXNlIHJhbmd5IGluc3RlYWQgb2YgdGhlIG5hdGl2ZSBzZWxlY3Rpb24gQVBJIGluIG9yZGVyIHRvIGdldCB0aGUgYmVnaW5uaW5nIGFuZCBlbmRpbmdcbm9mIHRoZSBzZWxlY3Rpb24gKGl0IGlzLCBob3dldmVyLCBtdWNoIHNsb3dlcikuIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBmdWxsLXNlbGVjdGlvbj9dKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXNlbGVjdGlvblxuIFwiUmV0dXJucyB0aGUgb2JqZWN0cyByZWxhdGVkIHRvIHNlbGVjdGlvbiBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuIElmIGZ1bGwtc2VsZWN0aW9uPyBpcyB0cnVlLFxcbml0IHdpbGwgdXNlIHJhbmd5IGluc3RlYWQgb2YgdGhlIG5hdGl2ZSBzZWxlY3Rpb24gQVBJIGluIG9yZGVyIHRvIGdldCB0aGUgYmVnaW5uaW5nIGFuZCBlbmRpbmdcXG5vZiB0aGUgc2VsZWN0aW9uIChpdCBpcywgaG93ZXZlciwgbXVjaCBzbG93ZXIpLlwiXG4gW2VsZW1lbnQgZnVsbC1zZWxlY3Rpb24/XVxuIHs6ZWxlbWVudCBlbGVtZW50LFxuICA6Y3Vyc29yLXBvc2l0aW9uXG4gIChjb25kXG4gICBmdWxsLXNlbGVjdGlvbj9cbiAgIChsZXRcbiAgICBbc2VsZWN0aW9uXG4gICAgICguZ2V0U2VsZWN0aW9uIGpzL3Jhbmd5KVxuICAgICByYW5nZXNcbiAgICAgKC5zYXZlQ2hhcmFjdGVyUmFuZ2VzIHNlbGVjdGlvbiBlbGVtZW50KV1cbiAgICAoaWYtbGV0XG4gICAgIFtjaGFyLXJhbmdlIChzb21lLT4gcmFuZ2VzIChhZ2V0IDApIChnb2JqL2dldCBcImNoYXJhY3RlclJhbmdlXCIpKV1cbiAgICAgWyhnb2JqL2dldCBjaGFyLXJhbmdlIFwic3RhcnRcIikgKGdvYmovZ2V0IGNoYXItcmFuZ2UgXCJlbmRcIildXG4gICAgIFswIDBdKSlcbiAgICg9IDAgKC4tcmFuZ2VDb3VudCAoLmdldFNlbGVjdGlvbiBqcy93aW5kb3cpKSlcbiAgIFswIDBdXG4gICA6ZWxzZVxuICAgKGxldFxuICAgIFtzZWxlY3Rpb25cbiAgICAgKC5nZXRTZWxlY3Rpb24ganMvd2luZG93KVxuICAgICByYW5nZVxuICAgICAoLmdldFJhbmdlQXQgc2VsZWN0aW9uIDApXG4gICAgIHByZS1jYXJldC1yYW5nZVxuICAgICAoZG90b1xuICAgICAgKC5jbG9uZVJhbmdlIHJhbmdlKVxuICAgICAgKC5zZWxlY3ROb2RlQ29udGVudHMgZWxlbWVudClcbiAgICAgICguc2V0RW5kICguLWVuZENvbnRhaW5lciByYW5nZSkgKC4tZW5kT2Zmc2V0IHJhbmdlKSkpXG4gICAgIHBvc1xuICAgICAoLT4gcHJlLWNhcmV0LXJhbmdlIC50b1N0cmluZyAoc3RyL3JlcGxhY2UgI1wiXFxyXCIgXCJcIikgLi1sZW5ndGgpXVxuICAgIFtwb3MgcG9zXSkpfSlcbiJ9IHs6c3ltIGdldC1jdXJzb3ItcG9zaXRpb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjdXJzb3IgcG9zaXRpb24uIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBmdWxsLXNlbGVjdGlvbj9dKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWN1cnNvci1wb3NpdGlvblxuIFwiUmV0dXJucyB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiXG4gW2VsZW1lbnQgZnVsbC1zZWxlY3Rpb24/XVxuICgtPiBlbGVtZW50IChnZXQtc2VsZWN0aW9uIGZ1bGwtc2VsZWN0aW9uPykgOmN1cnNvci1wb3NpdGlvbikpXG4ifSB7OnN5bSB0ZXh0LW5vZGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuIHRleHQtbm9kZT8gW25vZGVdICg9IDMgKC4tbm9kZVR5cGUgbm9kZSkpKVxuIn0gezpzeW0gZ2V0LWZvY3VzZWQtZm9ybSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZ2V0LWZvY3VzZWQtZm9ybSAoZm4qIFtdIChnZXQtZm9jdXNlZC1lbGVtIFwiY29sbGVjdGlvblwiKSkpXG4ifSB7OnN5bSBnZXQtZm9jdXNlZC10b3AtbGV2ZWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1mb2N1c2VkLXRvcC1sZXZlbFxuIFtdXG4gKHdoZW4tbGV0XG4gIFtub2RlIChzb21lLT4ganMvcmFuZ3kgLmdldFNlbGVjdGlvbiAuLWFuY2hvck5vZGUpXVxuICAobG9vcFxuICAgW25vZGUgbm9kZV1cbiAgIChpZlxuICAgICh0b3AtbGV2ZWw/IG5vZGUpXG4gICAgbm9kZVxuICAgICh3aGVuLWxldCBbcGFyZW50ICguLXBhcmVudEVsZW1lbnQgbm9kZSldIChyZWN1ciBwYXJlbnQpKSkpKSlcbiJ9IHs6c3ltIGdldC1wYXJlbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZWFyZXN0IHBhcmVudCB3aXRoIHRoZSBnaXZlbiBjbGFzcyBuYW1lLiIsIDphcmdsaXN0cyAoW25vZGUgY2xhc3MtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcGFyZW50XG4gXCJSZXR1cm5zIHRoZSBuZWFyZXN0IHBhcmVudCB3aXRoIHRoZSBnaXZlbiBjbGFzcyBuYW1lLlwiXG4gW25vZGUgY2xhc3MtbmFtZV1cbiAobG9vcFxuICBbbm9kZSBub2RlXVxuICAod2hlbi1sZXRcbiAgIFtwYXJlbnQgKC4tcGFyZW50RWxlbWVudCBub2RlKV1cbiAgIChpZlxuICAgICguY29udGFpbnMgKC4tY2xhc3NMaXN0IHBhcmVudCkgY2xhc3MtbmFtZSlcbiAgICBwYXJlbnRcbiAgICAocmVjdXIgcGFyZW50KSkpKSlcbiJ9IHs6c3ltIGNvbGwtbm9kZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2xsLW5vZGU/XG4gW25vZGVdXG4gKGJvb2xlYW4gKHNvbWUtPiBub2RlIC4tY2xhc3NMaXN0ICguY29udGFpbnMgXCJjb2xsZWN0aW9uXCIpKSkpXG4ifSB7OnN5bSBnZXQtbmVhcmVzdC1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1uZWFyZXN0LW5zXG4gW25vZGVdXG4gKGxvb3BcbiAgW25vZGUgbm9kZV1cbiAgKGlmXG4gICAoc29tZS0+IG5vZGUgLi1jaGlsZE5vZGVzICguaXRlbSAxKSAuLXRleHRDb250ZW50ICg9IFwibnNcIikpXG4gICAoc29tZS0+IG5vZGUgLi1jaGlsZE5vZGVzICguaXRlbSAzKSAuLXRleHRDb250ZW50IHN5bWJvbClcbiAgICh3aGVuLWxldCBbc2libGluZyAoLi1wcmV2aW91c1NpYmxpbmcgbm9kZSldIChyZWN1ciBzaWJsaW5nKSkpKSlcbiJ9IHs6c3ltIGluc2VydC10ZXh0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0ZXh0XSl9LCA6c291cmNlICIoZGVmblxuIGluc2VydC10ZXh0IVxuIFt0ZXh0XVxuIChsZXRcbiAgW3NlbGVjdGlvblxuICAgKC5nZXRTZWxlY3Rpb24ganMvd2luZG93KVxuICAgcmFuZ2VcbiAgICguZ2V0UmFuZ2VBdCBzZWxlY3Rpb24gMClcbiAgIG5vZGVcbiAgICguY3JlYXRlVGV4dE5vZGUganMvZG9jdW1lbnQgdGV4dCldXG4gIChkb3RvXG4gICByYW5nZVxuICAgLmRlbGV0ZUNvbnRlbnRzXG4gICAoLmluc2VydE5vZGUgbm9kZSlcbiAgICguc2V0U3RhcnRBZnRlciBub2RlKVxuICAgKC5zZXRFbmRBZnRlciBub2RlKVxuICAgKC5jb2xsYXBzZSBmYWxzZSkpKSlcbiJ9IHs6c3ltIGdldC1jb21wbGV0aW9uLWluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jb21wbGV0aW9uLWluZm9cbiBbXVxuICh3aGVuLWxldFxuICBbcHJlZml4LWVsZW0gKGdldC1mb2N1c2VkLWVsZW0gXCJzeW1ib2xcIildXG4gIChsZXRcbiAgIFtwb3NcbiAgICAoLT4gcHJlZml4LWVsZW0gKGdldC1jdXJzb3ItcG9zaXRpb24gZmFsc2UpIGZpcnN0KVxuICAgIHRleHRcbiAgICAoLi10ZXh0Q29udGVudCBwcmVmaXgtZWxlbSlcbiAgICBwcmVmaXhcbiAgICAoc3VicyB0ZXh0IDAgcG9zKV1cbiAgIChhc3NvY1xuICAgIChnZXQtY29tcGxldGlvbi1jb250ZXh0IChjb3VudCB0ZXh0KSAoY291bnQgcHJlZml4KSlcbiAgICA6dGV4dFxuICAgIHRleHRcbiAgICA6cHJlZml4XG4gICAgcHJlZml4KSkpKVxuIn0gezpzeW0gc2V0LWN1cnNvci1wb3NpdGlvbiEsIDptZXRhIHs6ZG9jICJNb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBwb3NpdGlvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtY3Vyc29yLXBvc2l0aW9uIVxuIFwiTW92ZXMgdGhlIGN1cnNvciB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLlwiXG4gW2VsZW1lbnQgcG9zaXRpb25dXG4gKGxldFxuICBbW3N0YXJ0LXBvcyBlbmQtcG9zXVxuICAgcG9zaXRpb25cbiAgIG1heC1sZW5ndGhcbiAgICgtPiBlbGVtZW50IC4tdGV4dENvbnRlbnQgY291bnQpXG4gICBzZWxlY3Rpb25cbiAgICguZ2V0U2VsZWN0aW9uIGpzL3Jhbmd5KVxuICAgY2hhci1yYW5nZVxuICAgI2pzIHs6c3RhcnQgc3RhcnQtcG9zLCA6ZW5kIGVuZC1wb3N9XG4gICByYW5nZVxuICAgI2pzIHs6Y2hhcmFjdGVyUmFuZ2UgY2hhci1yYW5nZSwgOmJhY2t3YXJkIGZhbHNlLCA6Y2hhcmFjdGVyT3B0aW9ucyBuaWx9XG4gICByYW5nZXNcbiAgIChhcnJheSByYW5nZSldXG4gICgucmVzdG9yZUNoYXJhY3RlclJhbmdlcyBzZWxlY3Rpb24gZWxlbWVudCByYW5nZXMpKSlcbiJ9IHs6c3ltIGdldC1mb2N1c2VkLWVsZW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2xhc3MtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZm9jdXNlZC1lbGVtXG4gW2NsYXNzLW5hbWVdXG4gKHNvbWUtPiBqcy9yYW5neSAuZ2V0U2VsZWN0aW9uIC4tYW5jaG9yTm9kZSAoZ2V0LXBhcmVudCBjbGFzcy1uYW1lKSkpXG4ifSB7OnN5bSBlcnJvci1ub2RlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGVycm9yLW5vZGU/XG4gW25vZGVdXG4gKGJvb2xlYW4gKHNvbWUtPiBub2RlIC4tY2xhc3NMaXN0ICguY29udGFpbnMgXCJlcnJvclwiKSkpKVxuIn0gezpzeW0gZ2V0LWNvbXBsZXRpb24tY29udGV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW1ib2wtbGVuZ3RoIGN1cnNvci1vZmZzZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWNvbXBsZXRpb24tY29udGV4dFxuIFtzeW1ib2wtbGVuZ3RoIGN1cnNvci1vZmZzZXRdXG4gKHdoZW4tbGV0XG4gIFt0b3AtbGV2ZWwtZWxlbSAoZ2V0LWZvY3VzZWQtdG9wLWxldmVsKV1cbiAgKGxldFxuICAgW3Bvc1xuICAgICgtPiB0b3AtbGV2ZWwtZWxlbSAoZ2V0LWN1cnNvci1wb3NpdGlvbiBmYWxzZSkgZmlyc3QpXG4gICAgcHJlZml4LXN0YXJ0XG4gICAgKC0gcG9zIGN1cnNvci1vZmZzZXQpXG4gICAgdGV4dFxuICAgICguLXRleHRDb250ZW50IHRvcC1sZXZlbC1lbGVtKV1cbiAgIHs6bnMgKGdldC1uZWFyZXN0LW5zIHRvcC1sZXZlbC1lbGVtKSxcbiAgICA6Y29udGV4dC1iZWZvcmUgKHN1YnMgdGV4dCAwIHByZWZpeC1zdGFydCksXG4gICAgOmNvbnRleHQtYWZ0ZXIgKHN1YnMgdGV4dCAoKyBwcmVmaXgtc3RhcnQgc3ltYm9sLWxlbmd0aCkpLFxuICAgIDpzdGFydC1wb3NpdGlvbiBwcmVmaXgtc3RhcnR9KSkpXG4ifSB7OnN5bSBjb21tb24tYW5jZXN0b3IsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjb21tb24gYW5jZXN0b3Igb2YgdGhlIGdpdmVuIG5vZGVzLiIsIDphcmdsaXN0cyAoW2ZpcnN0LW5vZGUgc2Vjb25kLW5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tbW9uLWFuY2VzdG9yXG4gXCJSZXR1cm5zIHRoZSBjb21tb24gYW5jZXN0b3Igb2YgdGhlIGdpdmVuIG5vZGVzLlwiXG4gW2ZpcnN0LW5vZGUgc2Vjb25kLW5vZGVdXG4gKGxldFxuICBbZmlyc3QtcGFyZW50XG4gICAoZmlyc3QgKGdldC1wYXJlbnRzIGZpcnN0LW5vZGUgXCJjb2xsZWN0aW9uXCIpKVxuICAgc2Vjb25kLXBhcmVudFxuICAgKGZpcnN0IChnZXQtcGFyZW50cyBzZWNvbmQtbm9kZSBcImNvbGxlY3Rpb25cIikpXVxuICAoY29uZFxuICAgKGFuZCBmaXJzdC1wYXJlbnQgc2Vjb25kLXBhcmVudCAoPSBmaXJzdC1wYXJlbnQgc2Vjb25kLXBhcmVudCkpXG4gICBmaXJzdC1wYXJlbnRcbiAgIChhbmRcbiAgICAoPSBmaXJzdC1ub2RlIHNlY29uZC1ub2RlKVxuICAgICh0ZXh0LW5vZGU/IGZpcnN0LW5vZGUpXG4gICAgKHRvcC1sZXZlbD8gZmlyc3Qtbm9kZSkpXG4gICBmaXJzdC1ub2RlKSkpXG4ifSB7OnN5bSBnZXQtcGFyZW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgYWxsIHRoZSBwYXJlbnRzIHdpdGggdGhlIGdpdmVuIGNsYXNzIG5hbWUuIiwgOmFyZ2xpc3RzIChbbm9kZSBjbGFzcy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1wYXJlbnRzXG4gXCJSZXR1cm5zIGFsbCB0aGUgcGFyZW50cyB3aXRoIHRoZSBnaXZlbiBjbGFzcyBuYW1lLlwiXG4gW25vZGUgY2xhc3MtbmFtZV1cbiAobG9vcFxuICBbbm9kZSBub2RlIGVsZW1zICcoKV1cbiAgKGlmLWxldFxuICAgW3BhcmVudCAoZ2V0LXBhcmVudCBub2RlIGNsYXNzLW5hbWUpXVxuICAgKHJlY3VyIHBhcmVudCAoY29uaiBlbGVtcyBwYXJlbnQpKVxuICAgZWxlbXMpKSlcbiJ9IHs6c3ltIG5vZGU/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBub2RlPyAoZm4qIFtwMV9fNDUwMzEjXSAoaW5zdGFuY2U/IGpzL05vZGUgcDFfXzQ1MDMxIykpKVxuIn0gezpzeW0gc2Nyb2xsLXRvLW5lYXJlc3QtZWxlbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2Nyb2xsLXRvLW5lYXJlc3QtZWxlbVxuIFtdXG4gKHNvbWUtPlxuICBqcy9yYW5neVxuICAuZ2V0U2VsZWN0aW9uXG4gIC4tYW5jaG9yTm9kZVxuICAuLXBhcmVudEVsZW1lbnRcbiAgKC5zY3JvbGxJbnRvVmlld1xuICAgI2pzIHs6YmVoYXZpb3IgXCJhdXRvXCIsIDpibG9jayBcIm5lYXJlc3RcIiwgOmlubGluZSBcIm5lYXJlc3RcIn0pKSlcbiJ9KSwgb2FrY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnMgKHs6c3ltIHRocm93LWJhZC1kaXNwYXRjaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLWRpc3BhdGNoXG4gW3JkciBjaF1cbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIGRpc3BhdGNoIG1hY3JvIGZvciBcIiBjaCBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZXNjYXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZXNjYXBlXG4gW3JkciBjaF1cbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgdW5pY29kZSBlc2NhcGU6IFxcXFx1XCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZHVwLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQga3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZHVwLWtleXNcbiBbcmRyIGtpbmQga3NdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgKGR1cGxpY2F0ZS1rZXlzLWVycm9yXG4gICAoc3RyIChzL2NhcGl0YWxpemUgKG5hbWUga2luZCkpIFwiIGxpdGVyYWwgY29udGFpbnMgZHVwbGljYXRlIGtleVwiKVxuICAga3MpKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbnMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtbnNcbiBbcmRyIG5zLW5hbWVdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHZhbHVlIHVzZWQgYXMgbmFtZXNwYWNlIGluIG5hbWVzcGFjZWQgbWFwOiBcIlxuICBucy1uYW1lXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVua25vd24tcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LXVua25vd24tcmVhZGVyLXRhZ1xuIFtyZHIgdGFnXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiTm8gcmVhZGVyIGZ1bmN0aW9uIGZvciB0YWcgXCIgKGkvaW5zcGVjdCB0YWcpIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1hdC1kaXNwYXRjaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWF0LWRpc3BhdGNoXG4gW3Jkcl1cbiAoZW9mLWVycm9yIHJkciBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgZGlzcGF0Y2ggY2hhcmFjdGVyLlwiKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1tZXRhZGF0YS10YXJnZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhcmdldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0XG4gW3JkciB0YXJnZXRdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJNZXRhZGF0YSBjYW4gbm90IGJlIGFwcGxpZWQgdG8gXCJcbiAgKGkvaW5zcGVjdCB0YXJnZXQpXG4gIFwiLiBcIlxuICBcIk1ldGFkYXRhIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gSU1ldGFzLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLW51bWJlclxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIG51bWJlcjogXCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gcmVhZGVyLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItZXJyb3JcbiBcIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXFxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWRcIlxuIFtyZHIgJiBtc2dzXVxuICh0aHJvdy1leCByZHIgOnJlYWRlci1lcnJvciAoYXBwbHkgc3RyIG1zZ3MpKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1saXRlcmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbFxuIFtyZHIgdG9rZW5dXG4gKHRocm93XG4gIChpbGxlZ2FsLWFyZy1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbDogXFxcXFwiIHRva2VuIFwiLlwiKSkpXG4ifSB7OnN5bSB0aHJvdy1ucy1tYXAtbm8tbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBucy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LW5zLW1hcC1uby1tYXBcbiBbcmRyIG5zLW5hbWVdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJOYW1lc3BhY2VkIG1hcCB3aXRoIG5hbWVzcGFjZSBcIlxuICBucy1uYW1lXG4gIFwiIGRvZXMgbm90IHNwZWNpZnkgYSBtYXAuXCIpKVxuIn0gezpzeW0gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bnN1cHBvcnRlZC1jaGFyYWN0ZXJcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiVW5zdXBwb3J0ZWQgY2hhcmFjdGVyOiBcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBmZWF0dXJlXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmRcbiBbcmRyIGZlYXR1cmVdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJGZWF0dXJlIGNhbm5vdCBiZSBcIlxuICAoaS9pbnNwZWN0IGZlYXR1cmUpXG4gIFwiIEZlYXR1cmVzIG11c3QgYmUga2V5d29yZHMuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWRlbGltaXRlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tyZHIga2luZCBjb2x1bW4gbGluZV0gW3JkciBraW5kIGxpbmUgY29sdW1uIG5dXX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWRlbGltaXRlZFxuIChbcmRyIGtpbmQgY29sdW1uIGxpbmVdXG4gICh0aHJvdy1lb2YtZGVsaW1pdGVkIHJkciBraW5kIGxpbmUgY29sdW1uIG5pbCkpXG4gKFtyZHIga2luZCBsaW5lIGNvbHVtbiBuXVxuICAoZW9mLWVycm9yXG4gICByZHJcbiAgIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBcIlxuICAgKGlmIG4gKHN0ciBcIml0ZW0gXCIgbiBcIiBvZiBcIikpXG4gICAobmFtZSBraW5kKVxuICAgKGlmIGxpbmUgKHN0ciBcIiwgc3RhcnRpbmcgYXQgbGluZSBcIiBsaW5lIFwiIGFuZCBjb2x1bW4gXCIgY29sdW1uKSlcbiAgIFwiLlwiKSkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyXG4gW3Jkcl1cbiAoZW9mLWVycm9yIHJkciBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgY2hhcmFjdGVyLlwiKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1jaGFyXG4gW3JkciBraW5kIGNoXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCBjaGFyYWN0ZXI6IFwiXG4gIGNoXG4gIFwiIGZvdW5kIHdoaWxlIHJlYWRpbmcgXCJcbiAgKG5hbWUga2luZClcbiAgXCIuXCIpKVxuIn0gezpzeW0gZW9mLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlb2YtZXJyb3JcbiBcIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXFxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWRcIlxuIFtyZHIgJiBtc2dzXVxuICh0aHJvdy1leCByZHIgOmVvZiAoYXBwbHkgc3RyIG1zZ3MpKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1tZXRhZGF0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtbWV0YWRhdGFcbiBbcmRyIHhdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJNZXRhZGF0YSBjYW5ub3QgYmUgXCJcbiAgKGkvaW5zcGVjdCB4KVxuICBcIi4gTWV0YWRhdGEgbXVzdCBiZSBhIFN5bWJvbCwgS2V5d29yZCwgU3RyaW5nIG9yIE1hcC5cIikpXG4ifSB7OnN5bSB0aHJvdy1lb2YtcmVhZGluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCAmIHN0YXJ0XSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1yZWFkaW5nXG4gW3JkciBraW5kICYgc3RhcnRdXG4gKGxldFxuICBbaW5pdCAoY2FzZSBraW5kIDpyZWdleCBcIiNcXFwiXCIgOnN0cmluZyBcXFwiKV1cbiAgKGVvZi1lcnJvclxuICAgcmRyXG4gICBcIlVuZXhwZWN0ZWQgRU9GIHJlYWRpbmcgXCJcbiAgIChuYW1lIGtpbmQpXG4gICBcIiBzdGFydGluZyBcIlxuICAgKGFwcGx5IHN0ciBpbml0IHN0YXJ0KVxuICAgXCIuXCIpKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1lcnJvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtZXJyb3JcbiBbcmRyIGxpbmVdXG4gKGlmXG4gIGxpbmVcbiAgKGVvZi1lcnJvciByZHIgXCJFT0Ygd2hpbGUgcmVhZGluZywgc3RhcnRpbmcgYXQgbGluZSBcIiBsaW5lIFwiLlwiKVxuICAoZW9mLWVycm9yIHJkciBcIkVPRiB3aGlsZSByZWFkaW5nLlwiKSkpXG4ifSB7OnN5bSBpbGxlZ2FsLWFyZy1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gaWxsZWdhbC1hcmctZXJyb3JcbiBcIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXFxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWRcIlxuIFtyZHIgJiBtc2dzXVxuICh0aHJvdy1leCByZHIgOmlsbGVnYWwtYXJndW1lbnQgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC1vY3RhbC1sZW5cbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCBvY3RhbCBlc2NhcGUgc2VxdWVuY2UgaW4gYSBjaGFyYWN0ZXIgbGl0ZXJhbDpcIlxuICB0b2tlblxuICBcIi4gT2N0YWwgZXNjYXBlIHNlcXVlbmNlcyBtdXN0IGJlIDMgb3IgZmV3ZXIgZGlnaXRzLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0XG4gW3JkciBjaF1cbiAoaWxsZWdhbC1hcmctZXJyb3IgcmRyIFwiSW52YWxpZCBkaWdpdCBcIiBjaCBcIiBpbiB1bmljb2RlIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdC1pbi10b2tlblxuIFtyZHIgY2ggdG9rZW5dXG4gKGlsbGVnYWwtYXJnLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgZGlnaXQgXCJcbiAgY2hcbiAgXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIgXFxcXFwiXG4gIHRva2VuXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1sZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGFjdHVhbCBleHBlY3RlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuXG4gW3JkciBhY3R1YWwgZXhwZWN0ZWRdXG4gKGlsbGVnYWwtYXJnLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgdW5pY29kZSBsaXRlcmFsLiBVbmljb2RlIGxpdGVyYWxzIHNob3VsZCBiZSBcIlxuICBleHBlY3RlZFxuICBcImNoYXJhY3RlcnMgbG9uZy4gIFwiXG4gIFwidmFsdWUgc3VwcGxlZCBpcyBcIlxuICBhY3R1YWxcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuXCIpKVxuIn0gezpzeW0gdGhyb3ctc2luZ2xlLWNvbG9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1zaW5nbGUtY29sb25cbiBbcmRyXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiQSBzaW5nbGUgY29sb24gaXMgbm90IGEgdmFsaWQga2V5d29yZC5cIikpXG4ifSB7OnN5bSB0aHJvdy1vZGQtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBsaW5lIGNvbCBlbGVtZW50c10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1vZGQtbWFwXG4gW3JkciBsaW5lIGNvbCBlbGVtZW50c11cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIlRoZSBtYXAgbGl0ZXJhbCBzdGFydGluZyB3aXRoIFwiXG4gIChpL2luc3BlY3QgKGZpcnN0IGVsZW1lbnRzKSlcbiAgKGlmIGxpbmUgKHN0ciBcIiBvbiBsaW5lIFwiIGxpbmUgXCIgY29sdW1uIFwiIGNvbCkpXG4gIFwiIGNvbnRhaW5zIFwiXG4gIChjb3VudCBlbGVtZW50cylcbiAgXCIgZm9ybShzKS4gTWFwIGxpdGVyYWxzIG11c3QgY29udGFpbiBhbiBldmVuIG51bWJlciBvZiBmb3Jtcy5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyXG4gW3Jkcl1cbiAocmVhZGVyLWVycm9yIHJkciBcIk9jdGFsIGVzY2FwZSBzZXF1ZW5jZSBtdXN0IGJlIGluIHJhbmdlIFswLCAzNzddLlwiKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1yZWFkZXItdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YWddKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLXJlYWRlci10YWdcbiBbcmRyIHRhZ11cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgcmVhZGVyIHRhZzogXCJcbiAgKGkvaW5zcGVjdCB0YWcpXG4gIFwiLiBSZWFkZXIgdGFncyBtdXN0IGJlIHN5bWJvbHMuXCIpKVxuIn0gezpzeW0gdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyXG4gW3JkciBjaF1cbiAocmVhZGVyLWVycm9yIHJkciBcIlVubWF0Y2hlZCBkZWxpbWl0ZXIgXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC1jaGFyYWN0ZXItbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC1jaGFyYWN0ZXItbGl0ZXJhbFxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIGNoYXJhY3RlciBsaXRlcmFsIFxcXFx1XCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgdW5pY29kZSBjaGFyYWN0ZXIgXFxcXFwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1lc2NhcGUtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLWVzY2FwZS1jaGFyXG4gW3JkciBjaF1cbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGVzY2FwZSBjaGFyYWN0ZXI6IFxcXFxcIiBjaCBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1uby1kaXNwYXRjaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuIHRocm93LW5vLWRpc3BhdGNoIFtyZHIgY2hdICh0aHJvdy1iYWQtZGlzcGF0Y2ggcmRyIGNoKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1hdC1zdGFydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtYXQtc3RhcnRcbiBbcmRyIGtpbmRdXG4gKGVvZi1lcnJvclxuICByZHJcbiAgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIHN0YXJ0IG9mIFwiXG4gIChuYW1lIGtpbmQpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZFxuIFtyZHIga2luZCB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgXCIgKG5hbWUga2luZCkgXCI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9KSwgcGxheS1jbGpjLnByaW1pdGl2ZXMtMmQgKHs6c3ltIHJlY3QsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJlY3QgWzAgMCAxIDAgMCAxIDAgMSAxIDAgMSAxXSlcbiJ9KSwgZHluYWRvYy5jb3JlICh7OnN5bSBjbGotY29tcGlsZXItZm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhhbXBsZSBmb3JtcyBjYl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGotY29tcGlsZXItZm5cbiBbZXhhbXBsZSBmb3JtcyBjYl1cbiAobGV0XG4gIFtucy1zeW0gKDpucy1zeW0gKGNvbW1vbi9nZXQtc3RhdGUpKV1cbiAgKHRyeVxuICAgKC5zZW5kXG4gICAgWGhySW9cbiAgICBcIi9ldmFsXCJcbiAgICAoZm5cbiAgICAgW2VdXG4gICAgIChpZlxuICAgICAgKC5pc1N1Y2Nlc3MgKC4tdGFyZ2V0IGUpKVxuICAgICAgKC0+PlxuICAgICAgICguLiBlIC10YXJnZXQgZ2V0UmVzcG9uc2VUZXh0KVxuICAgICAgIHJlYWQtc3RyaW5nXG4gICAgICAgcmVzdFxuICAgICAgIChtYXB2XG4gICAgICAgIChmbipcbiAgICAgICAgIFtwMV9fNDU0NzQjXVxuICAgICAgICAgKGlmICh2ZWN0b3I/IHAxX180NTQ3NCMpIChpbnRvLWFycmF5IHAxX180NTQ3NCMpIHAxX180NTQ3NCMpKSlcbiAgICAgICBjYilcbiAgICAgIChjYiBbXSkpKVxuICAgIFwiUE9TVFwiXG4gICAgKHByLXN0clxuICAgICAoaW50b1xuICAgICAgWyhsaXN0ICdpbi1ucyAobGlzdCAncXVvdGUgbnMtc3ltKSldXG4gICAgICAobWFwdiAocGFydGlhbCB0cmFuc2Zvcm0gKGRpc3NvYyBleGFtcGxlIDp3aXRoLWNhcmQpKSBmb3JtcykpKSlcbiAgIChjYXRjaCBqcy9FcnJvciBfIChjYiBbXSkpKSkpXG4ifSB7OnN5bSBmb3JtLT5zZXJpYWxpemFibGUsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyB0aGUgaW5wdXQgdG8gZWl0aGVyIGEgc3RyaW5nIG9yIChpZiBhbiBlcnJvciBvYmplY3QpIGFuIGFycmF5IG9mIGRhdGEiLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGZvcm0tPnNlcmlhbGl6YWJsZVxuIFwiQ29udmVydHMgdGhlIGlucHV0IHRvIGVpdGhlciBhIHN0cmluZyBvciAoaWYgYW4gZXJyb3Igb2JqZWN0KSBhbiBhcnJheSBvZiBkYXRhXCJcbiBbZm9ybV1cbiAoaWZcbiAgKGluc3RhbmNlPyBqcy9FcnJvciBmb3JtKVxuICAoYXJyYXlcbiAgIChvciAoc29tZS0+IGZvcm0gLi1jYXVzZSAuLW1lc3NhZ2UpICguLW1lc3NhZ2UgZm9ybSkpXG4gICAoLi1maWxlTmFtZSBmb3JtKVxuICAgKC4tbGluZU51bWJlciBmb3JtKSlcbiAgKHByLXN0ciBmb3JtKSkpXG4ifSB7OnN5bSBpbml0LWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbGVtXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtZWRpdG9yXG4gW2VsZW1dXG4gKHdoZW4tbGV0XG4gIFtwYXJlbi1zb3VwIChvciAoLnF1ZXJ5U2VsZWN0b3IgZWxlbSBcIi5wYXJlbi1zb3VwXCIpIGVsZW0pXVxuICAocHMvaW5pdCBwYXJlbi1zb3VwIChqcy0+Y2xqIHs6Y29tcGlsZXItZm4gKGZuIFtdKX0pKSkpXG4ifSB7OnN5bSBjbGpzLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4YW1wbGUgZm9ybXMgY2JdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqcy1jb21waWxlci1mblxuIFtleGFtcGxlIGZvcm1zIGNiXVxuIChsZXRcbiAgW25zLXN5bSAoOm5zLXN5bSAoY29tbW9uL2dldC1zdGF0ZSkpXVxuICAoZXMvY29kZS0+cmVzdWx0c1xuICAgKGludG8gWyhsaXN0ICducyBucy1zeW0pXSAobWFwdiAocGFydGlhbCB0cmFuc2Zvcm0gZXhhbXBsZSkgZm9ybXMpKVxuICAgKGZuIFtyZXN1bHRzXSAoLT4+IHJlc3VsdHMgcmVzdCAobWFwdiBmb3JtLT5zZXJpYWxpemFibGUpIGNiKSlcbiAgIHs6Y3VzdG9tLWxvYWQgKGZuIFtvcHRzIGNiXSAoY2IgezpsYW5nIDpjbGosIDpzb3VyY2UgXCJcIn0pKSxcbiAgICA6ZGlzYWJsZS10aW1lb3V0PyB0cnVlfSkpKVxuIn0gezpzeW0gdHJhbnNmb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja10sIDphcyBleH0gZm9ybS1zdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNmb3JtXG4gW3s6a2V5cyBbd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja10sIDphcyBleH0gZm9ybS1zdHJdXG4gKGlmXG4gIChvciB3aXRoLWZvY3VzIHdpdGgtY2FyZCB3aXRoLWNhbGxiYWNrKVxuICAodHJhbnNmb3JtL3RyYW5zZm9ybSBleCAocmVhZC1zdHJpbmcgZm9ybS1zdHIpKVxuICBmb3JtLXN0cikpXG4ifSB7OnN5bSBpbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0XG4gW11cbiAoLT4+XG4gICgucXVlcnlTZWxlY3RvciBqcy9kb2N1bWVudCBcIiNpbml0aWFsLXN0YXRlXCIpXG4gIC4tdGV4dENvbnRlbnRcbiAganMvYXRvYlxuICByZWFkLXN0cmluZ1xuICAoc3dhcCEgY29tbW9uLypzZXNzaW9uIGNvbW1vbi91cGRhdGUtc2Vzc2lvbiA6ZHluYWRvYy5jb21tb24vc2VydmVyKSlcbiAocnVtL2h5ZHJhdGVcbiAgKGNvbW1vbi9hcHAtcm9vdCBjb21tb24vKnNlc3Npb24pXG4gICgucXVlcnlTZWxlY3RvciBqcy9kb2N1bWVudCBcIiNhcHBcIikpXG4gKGxldFxuICBbezprZXlzIFt2YXItc3ltIHdhdGNoZXJdfSAoY29tbW9uL2dldC1zdGF0ZSldXG4gICgtPj5cbiAgIHs6ZHluYWRvYy5jb21tb24vY2xqcy1zdGFydGVkPyB0cnVlLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnRhYmxlPyBqcy9DT01QSUxFRCxcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1lZGl0b3IgKG1lbW9pemUgaW5pdC1lZGl0b3IpLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9pbml0LWV4YW1wbGUtZWRpdG9yIChtZW1vaXplIGluaXQtZXhhbXBsZS1lZGl0b3IpLFxuICAgIDpkeW5hZG9jLmNvbW1vbi93YXRjaGVyXG4gICAgKHdoZW4tbm90IGpzL0NPTVBJTEVEIChvciB3YXRjaGVyIChpbml0LXdhdGNoZXIhKSkpfVxuICAgKHN3YXAhXG4gICAgY29tbW9uLypzZXNzaW9uXG4gICAgY29tbW9uL3VwZGF0ZS1zZXNzaW9uXG4gICAgOmR5bmFkb2MuY29tbW9uL2NsaWVudCkpXG4gICh3aGVuXG4gICB2YXItc3ltXG4gICAoZG9zZXFcbiAgICBbYnV0dG9uICgtPiBqcy9kb2N1bWVudCAoLnF1ZXJ5U2VsZWN0b3JBbGwgXCIuYnV0dG9uXCIpIGFycmF5LXNlcSldXG4gICAgKHNldCEgKC4tZGlzcGxheSAoLi1zdHlsZSBidXR0b24pKSBcImlubGluZS1ibG9ja1wiKSkpKSlcbiJ9IHs6c3ltIHJlYWQtc3RyaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zdHJpbmdcbiBbc11cbiAoYmluZGluZ1xuICBbci8qc3VwcHJlc3MtcmVhZCogdHJ1ZV1cbiAgKHIvcmVhZC1zdHJpbmcgezpyZWFkLWNvbmQgOnByZXNlcnZlLCA6ZW9mIG5pbH0gcykpKVxuIn0gezpzeW0gaW5pdC1leGFtcGxlLWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbGVtIGV4YW1wbGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1leGFtcGxlLWVkaXRvclxuIFtlbGVtIGV4YW1wbGVdXG4gKHdoZW4tbGV0XG4gIFtwYXJlbi1zb3VwIChvciAoLnF1ZXJ5U2VsZWN0b3IgZWxlbSBcIi5wYXJlbi1zb3VwXCIpIGVsZW0pXVxuICAod2hlbi1sZXRcbiAgIFtjb250ZW50ICgucXVlcnlTZWxlY3RvciBwYXJlbi1zb3VwIFwiLmNvbnRlbnRcIildXG4gICAoc2V0ISAoLi1jb250ZW50RWRpdGFibGUgY29udGVudCkgdHJ1ZSkpXG4gIChsZXRcbiAgIFt0eXBlICg6dHlwZSAoY29tbW9uL2dldC1zdGF0ZSkpXVxuICAgKHBzL2luaXRcbiAgICBwYXJlbi1zb3VwXG4gICAgKGpzLT5jbGpcbiAgICAgezpjb21waWxlci1mblxuICAgICAgKGlmXG4gICAgICAgKD0gOmNsaiB0eXBlKVxuICAgICAgIChwYXJ0aWFsIGNsai1jb21waWxlci1mbiBleGFtcGxlKVxuICAgICAgIChwYXJ0aWFsIGNsanMtY29tcGlsZXItZm4gZXhhbXBsZSkpLFxuICAgICAgOmZpeC1pbmRlbnQtb24taW5pdD8gdHJ1ZX0pKSkpKVxuIn0gezpzeW0gaW5pdC13YXRjaGVyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC13YXRjaGVyIVxuIFtdXG4gKGxldFxuICBbcHJvdG9jb2xcbiAgIChpZiAoPSAoLi1wcm90b2NvbCBqcy9sb2NhdGlvbikgXCJodHRwczpcIikgXCJ3c3M6XCIgXCJ3czpcIilcbiAgIGhvc3RcbiAgICgtPiBqcy93aW5kb3cgLi1sb2NhdGlvbiAuLWhvc3QpXG4gICBzb2NrXG4gICAoanMvV2ViU29ja2V0LiAoc3RyIHByb3RvY29sIFwiLy9cIiBob3N0IFwiL3dhdGNoXCIpKV1cbiAgKHNldCFcbiAgICguLW9ub3BlbiBzb2NrKVxuICAgKGZuIFtldmVudF0gKC5zZW5kIHNvY2sganMvd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSkpXG4gIChzZXQhXG4gICAoLi1vbm1lc3NhZ2Ugc29jaylcbiAgIChmblxuICAgIFtldmVudF1cbiAgICAoLT4+XG4gICAgICguLWRhdGEgZXZlbnQpXG4gICAgIHJlYWQtc3RyaW5nXG4gICAgIChzd2FwIVxuICAgICAgY29tbW9uLypzZXNzaW9uXG4gICAgICBjb21tb24vdXBkYXRlLXNlc3Npb25cbiAgICAgIDpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIpKSkpXG4gIHNvY2spKVxuIn0pLCBleHBvdW5kLmFscGhhICh7OnN5bSBlcnJvci1tZXNzYWdlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIG5hbWVkIGBrYCwgcmV0dXJuIGl0cyBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLiIsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXJyb3ItbWVzc2FnZVxuIFwiR2l2ZW4gYSBzcGVjIG5hbWVkIGBrYCwgcmV0dXJuIGl0cyBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLlwiXG4gW2tdXG4gKGdldCBAcmVnaXN0cnktcmVmIGspKVxuIn0gezpzeW0gZXhwbGFpbi1yZXN1bHQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1yZXN1bHRcbiBcIkdpdmVuIGEgcmVzdWx0IGZyb20gYGNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NoZWNrYCwgcHJpbnRzIGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0LlwiXG4gW2NoZWNrLXJlc3VsdF1cbiAod2hlblxuICAoPSBzLypleHBsYWluLW91dCogcy9leHBsYWluLXByaW50ZXIpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIkNhbm5vdCBwcmludCBjaGVjayByZXN1bHRzIHdpdGggZGVmYXVsdCBwcmludGVyLiBVc2UgJ3NldCEnIG9yICdiaW5kaW5nJyB0byB1c2UgRXhwb3VuZCBwcmludGVyLlwiXG4gICAge30pKSlcbiAocy8qZXhwbGFpbi1vdXQqIGNoZWNrLXJlc3VsdCkpXG4ifSB7OnN5bSBjdXN0b20tcHJpbnRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBwcmludGVyLlxuXG4gIE9wdGlvbnM6XG4gICAtIGA6c2hvdy12YWxpZC12YWx1ZXM/YCAtIGlmIGBmYWxzZWAsIHJlcGxhY2VzIHZhbGlkIHZhbHVlcyB3aXRoIFwiLi4uXCJcbiAgIC0gYDp2YWx1ZS1zdHItZm5gICAgICAgIC0gZnVuY3Rpb24gdG8gcHJpbnQgYmFkIHZhbHVlc1xuICAgLSBgOnByaW50LXNwZWNzP2AgICAgICAgLSBpZiBgdHJ1ZWAsIGRpc3BsYXkgXCJSZWxldmFudCBzcGVjc1wiIHNlY3Rpb24uIE90aGVyd2lzZSwgb21pdCB0aGF0IHNlY3Rpb24uXG4gICAtIGA6dGhlbWVgICAgICAgICAgICAgICAgLSBlbmFibGVzIGNvbG9yIHRoZW1lLiBQb3NzaWJsZSB2YWx1ZXM6IGA6Zmlnd2hlZWwtdGhlbWVgLCBgOm5vbmVgIiwgOmFyZ2xpc3RzIChbb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjdXN0b20tcHJpbnRlclxuIFwiUmV0dXJucyBhIHByaW50ZXIuXFxuXFxuICBPcHRpb25zOlxcbiAgIC0gYDpzaG93LXZhbGlkLXZhbHVlcz9gIC0gaWYgYGZhbHNlYCwgcmVwbGFjZXMgdmFsaWQgdmFsdWVzIHdpdGggXFxcIi4uLlxcXCJcXG4gICAtIGA6dmFsdWUtc3RyLWZuYCAgICAgICAtIGZ1bmN0aW9uIHRvIHByaW50IGJhZCB2YWx1ZXNcXG4gICAtIGA6cHJpbnQtc3BlY3M/YCAgICAgICAtIGlmIGB0cnVlYCwgZGlzcGxheSBcXFwiUmVsZXZhbnQgc3BlY3NcXFwiIHNlY3Rpb24uIE90aGVyd2lzZSwgb21pdCB0aGF0IHNlY3Rpb24uXFxuICAgLSBgOnRoZW1lYCAgICAgICAgICAgICAgIC0gZW5hYmxlcyBjb2xvciB0aGVtZS4gUG9zc2libGUgdmFsdWVzOiBgOmZpZ3doZWVsLXRoZW1lYCwgYDpub25lYFwiXG4gW29wdHNdXG4gKGZuIFtleHBsYWluLWRhdGFdIChwcmludCAocHJpbnRlci1zdHIgb3B0cyBleHBsYWluLWRhdGEpKSkpXG4ifSB7OnN5bSBjb25mb3JtZWQtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvYmxlbXMgaW52YWxpZC12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25mb3JtZWQtdmFsdWVcbiBbcHJvYmxlbXMgaW52YWxpZC12YWx1ZV1cbiAobGV0XG4gIFtjb25mb3JtZWQtdmFsICgtPiBwcm9ibGVtcyBmaXJzdCA6dmFsKV1cbiAgKGlmXG4gICAoPSBjb25mb3JtZWQtdmFsIGludmFsaWQtdmFsdWUpXG4gICBcIlwiXG4gICAocHJpbnRlci9mb3JtYXRcbiAgICBcIlxcblxcbndoZW4gY29uZm9ybWVkIGFzXFxuXFxuJXNcIlxuICAgIChwcmludGVyL2luZGVudCAoYW5zaS9jb2xvciAocHItc3RyIGNvbmZvcm1lZC12YWwpIDpiYWQtdmFsdWUpKSkpKSlcbiJ9IHs6c3ltIHByaW50ZXIsIDptZXRhIHs6ZG9jICJQcmludHMgYGV4cGxhaW4tZGF0YWAgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXQuIiwgOmFyZ2xpc3RzIChbZXhwbGFpbi1kYXRhXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50ZXJcbiBcIlByaW50cyBgZXhwbGFpbi1kYXRhYCBpbiBhIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC5cIlxuIFtleHBsYWluLWRhdGFdXG4gKChjdXN0b20tcHJpbnRlciB7fSkgZXhwbGFpbi1kYXRhKSlcbiJ9IHs6c3ltIGV4cGxhaW4tcmVzdWx0LXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgcmVzdWx0IGZyb20gYGNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NoZWNrYCwgcmV0dXJucyBhIHN0cmluZyBzdW1tYXJpemluZyB0aGUgcmVzdWx0LiIsIDphcmdsaXN0cyAoW2NoZWNrLXJlc3VsdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLXJlc3VsdC1zdHJcbiBcIkdpdmVuIGEgcmVzdWx0IGZyb20gYGNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NoZWNrYCwgcmV0dXJucyBhIHN0cmluZyBzdW1tYXJpemluZyB0aGUgcmVzdWx0LlwiXG4gW2NoZWNrLXJlc3VsdF1cbiAod2l0aC1vdXQtc3RyIChleHBsYWluLXJlc3VsdCBjaGVjay1yZXN1bHQpKSlcbiJ9IHs6c3ltIGV4cGxhaW4tcmVzdWx0cywgOm1ldGEgezpkb2MgIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMuIiwgOmFyZ2xpc3RzIChbY2hlY2stcmVzdWx0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLXJlc3VsdHNcbiBcIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMuXCJcbiBbY2hlY2stcmVzdWx0c11cbiAoZG9zZXFcbiAgW2NoZWNrLXJlc3VsdCAoYnV0bGFzdCBjaGVjay1yZXN1bHRzKV1cbiAgKGV4cGxhaW4tcmVzdWx0IGNoZWNrLXJlc3VsdClcbiAgKHByaW50IFwiXFxuXFxuXCIpKVxuIChleHBsYWluLXJlc3VsdCAobGFzdCBjaGVjay1yZXN1bHRzKSkpXG4ifSB7OnN5bSBleHBvdW5kLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHJldHVybnMgc3VjY2VzcyBtZXNzYWdlIG9yIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS4iLCA6YXJnbGlzdHMgKFtzcGVjIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwb3VuZC1zdHJcbiBcIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHJldHVybnMgc3VjY2VzcyBtZXNzYWdlIG9yIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS5cIlxuIFtzcGVjIGZvcm1dXG4gKGxldFxuICBbZXhwbGFpbi1kYXRhIChzL2V4cGxhaW4tZGF0YSBzcGVjIGZvcm0pXVxuICAocHJpbnRlci1zdHJcbiAgIHt9XG4gICAoaWZcbiAgICBleHBsYWluLWRhdGFcbiAgICAoYXNzb2MgZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvdmFsdWUgZm9ybSlcbiAgICBuaWwpKSkpXG4ifSB7OnN5bSBleHBsYWluLXJlc3VsdHMtc3RyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzZXF1ZW5jZSBvZiByZXN1bHRzIGZyb20gYGNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NoZWNrYCwgcmV0dXJucyBhIHN0cmluZyBzdW1tYXJpemluZyB0aGUgcmVzdWx0cy4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRzXSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tcmVzdWx0cy1zdHJcbiBcIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdHMuXCJcbiBbY2hlY2stcmVzdWx0c11cbiAod2l0aC1vdXQtc3RyIChleHBsYWluLXJlc3VsdHMgY2hlY2stcmVzdWx0cykpKVxuIn0gezpzeW0gZXhwb3VuZCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHByaW50cyBhIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChbc3BlYyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGV4cG91bmRcbiBcIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHByaW50cyBhIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuXCJcbiBbc3BlYyBmb3JtXVxuIChwcmludCAoZXhwb3VuZC1zdHIgc3BlYyBmb3JtKSkpXG4ifSB7OnN5bSBkZWZtc2csIDptZXRhIHs6ZG9jICJBc3NvY2lhdGVzIHRoZSBzcGVjIG5hbWVkIGBrYCB3aXRoIGBlcnJvci1tZXNzYWdlYC4iLCA6YXJnbGlzdHMgKFtrIGVycm9yLW1lc3NhZ2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVmbXNnXG4gXCJBc3NvY2lhdGVzIHRoZSBzcGVjIG5hbWVkIGBrYCB3aXRoIGBlcnJvci1tZXNzYWdlYC5cIlxuIFtrIGVycm9yLW1lc3NhZ2VdXG4gKHN3YXAhIHJlZ2lzdHJ5LXJlZiBhc3NvYyBrIGVycm9yLW1lc3NhZ2UpXG4gbmlsKVxuIn0pLCBjbGpzLnN0YWNrdHJhY2UgKHs6c3ltIG91dHB1dC1kaXJlY3RvcnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBvdXRwdXQtZGlyZWN0b3J5XG4gW29wdHNdXG4gIz8oOmNsaiAodXRpbC9vdXRwdXQtZGlyZWN0b3J5IG9wdHMpIDpjbGpzIChvciAoOm91dHB1dC1kaXIgb3B0cykgXCJvdXRcIikpKVxuIn0gezpzeW0gZW5kcy13aXRoPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzMCBzMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmRzLXdpdGg/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3MwIHMxXVxuICM/KDpjbGogKC5lbmRzV2l0aCBzMCBzMSkgOmNsanMgKGdzdHJpbmcvZW5kc1dpdGggczAgczEpKSlcbiJ9IHs6c3ltIHN0YXJ0cy13aXRoPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzMCBzMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdGFydHMtd2l0aD9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbczAgczFdXG4gIz8oOmNsaiAoLnN0YXJ0c1dpdGggczAgczEpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggczAgczEpKSlcbiJ9IHs6c3ltIHJlbW92ZS1leHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmlsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtZXh0XG4gW2ZpbGVdXG4gKC0+XG4gIGZpbGVcbiAgKHN0cmluZy9yZXBsYWNlICNcIlxcLmpzJFwiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5jbGpzJFwiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5jbGpjJFwiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5jbGokXCIgXCJcIikpKVxuIn0gezpzeW0gc3RyaW5nLT5yZWdleCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHN0cmluZy0+cmVnZXhcbiBbc11cbiAjPyg6Y2xqIChQYXR0ZXJuL2NvbXBpbGUgcykgOmNsanMgKGpzL1JlZ0V4cC4gcykpKVxuIn0gezpzeW0gc2FmYXJpLXN0LWVsLT5mcmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZXBsLWVudiBzdC1lbCBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHNhZmFyaS1zdC1lbC0+ZnJhbWVcbiBbcmVwbC1lbnYgc3QtZWwgb3B0c11cbiAobGV0XG4gIFtbZnVuY3Rpb24gZmxjXVxuICAgKGlmIChyZS1maW5kICNcIkBcIiBzdC1lbCkgKHN0cmluZy9zcGxpdCBzdC1lbCAjXCJAXCIpIFtuaWwgc3QtZWxdKVxuICAgW2ZpbGUgbGluZSBjb2x1bW5dXG4gICAocGFyc2UtZmlsZS1saW5lLWNvbHVtbiBmbGMpXVxuICAoaWZcbiAgIChhbmQgZmlsZSBmdW5jdGlvbiBsaW5lIGNvbHVtbilcbiAgIHs6ZmlsZSAocGFyc2UtZmlsZSByZXBsLWVudiBmaWxlIG9wdHMpLFxuICAgIDpmdW5jdGlvbiAoc3RyaW5nL3RyaW0gZnVuY3Rpb24pLFxuICAgIDpsaW5lIGxpbmUsXG4gICAgOmNvbHVtbiBjb2x1bW59XG4gICAod2hlbi1ub3RcbiAgICAoc3RyaW5nL2JsYW5rPyBmdW5jdGlvbilcbiAgICB7OmZpbGUgbmlsLFxuICAgICA6ZnVuY3Rpb24gKHN0cmluZy90cmltIGZ1bmN0aW9uKSxcbiAgICAgOmxpbmUgbmlsLFxuICAgICA6Y29sdW1uIG5pbH0pKSkpXG4ifSB7OnN5bSBtYXBwZWQtZnJhbWUsIDptZXRhIHs6ZG9jICJHaXZlbiBvcHRzIGFuZCBhIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlIGZyYW1lLCByZXR1cm4gdGhlXG4gIENsb2p1cmVTY3JpcHQgZnJhbWUuIiwgOmFyZ2xpc3RzIChbezprZXlzIFtmdW5jdGlvbiBmaWxlIGxpbmUgY29sdW1uXX0gc21zIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwcGVkLWZyYW1lXG4gXCJHaXZlbiBvcHRzIGFuZCBhIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlIGZyYW1lLCByZXR1cm4gdGhlXFxuICBDbG9qdXJlU2NyaXB0IGZyYW1lLlwiXG4gW3s6a2V5cyBbZnVuY3Rpb24gZmlsZSBsaW5lIGNvbHVtbl19IHNtcyBvcHRzXVxuIChsZXRcbiAgW25vLXNvdXJjZS1maWxlP1xuICAgKGlmLW5vdCBmaWxlIHRydWUgKHN0YXJ0cy13aXRoPyBmaWxlIFwiPFwiKSlcbiAgIFtsaW5lJyBjb2x1bW4nIGNhbGxdXG4gICAoaWZcbiAgICBuby1zb3VyY2UtZmlsZT9cbiAgICBbbGluZSBjb2x1bW4gbmlsXVxuICAgIChtYXBwZWQtbGluZS1jb2x1bW4tY2FsbCBzbXMgZmlsZSBsaW5lIGNvbHVtbikpXG4gICBmaWxlJ1xuICAgKHdoZW4tbm90XG4gICAgbm8tc291cmNlLWZpbGU/XG4gICAgKGlmXG4gICAgIChlbmRzLXdpdGg/IGZpbGUgXCIuanNcIilcbiAgICAgKHN0ciAoc3VicyBmaWxlIDAgKC0gKGNvdW50IGZpbGUpIDMpKSBcIi5jbGpzXCIpXG4gICAgIGZpbGUpKV1cbiAgezpmdW5jdGlvbiBmdW5jdGlvbixcbiAgIDpjYWxsIGNhbGwsXG4gICA6ZmlsZVxuICAgKGlmXG4gICAgbm8tc291cmNlLWZpbGU/XG4gICAgKHN0ciBcIk5PX1NPVVJDRV9GSUxFXCIgKHdoZW4gZmlsZSAoc3RyIFwiIFwiIGZpbGUpKSlcbiAgICBmaWxlJyksXG4gICA6bGluZSBsaW5lJyxcbiAgIDpjb2x1bW4gY29sdW1uJ30pKVxuIn0gezpzeW0gZmlyZWZveC1zdC1lbC0+ZnJhbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVwbC1lbnYgc3QtZWwgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXJlZm94LXN0LWVsLT5mcmFtZVxuIFtyZXBsLWVudiBzdC1lbCBvcHRzXVxuIChsZXRcbiAgW1tmdW5jdGlvbiBmbGNdXG4gICAoaWYgKHJlLWZpbmQgI1wiQFwiIHN0LWVsKSAoc3RyaW5nL3NwbGl0IHN0LWVsICNcIkBcIikgW25pbCBzdC1lbF0pXG4gICBbZmlsZSBsaW5lIGNvbHVtbl1cbiAgIChwYXJzZS1maWxlLWxpbmUtY29sdW1uIGZsYyldXG4gIChpZlxuICAgKGFuZCBmaWxlIGZ1bmN0aW9uIGxpbmUgY29sdW1uKVxuICAgezpmaWxlIChwYXJzZS1maWxlIHJlcGwtZW52IGZpbGUgb3B0cyksXG4gICAgOmZ1bmN0aW9uIChmaXJlZm94LWNsZWFuLWZ1bmN0aW9uIGZ1bmN0aW9uKSxcbiAgICA6bGluZSBsaW5lLFxuICAgIDpjb2x1bW4gY29sdW1ufVxuICAgKHdoZW4tbm90XG4gICAgKHN0cmluZy9ibGFuaz8gZnVuY3Rpb24pXG4gICAgezpmaWxlIG5pbCxcbiAgICAgOmZ1bmN0aW9uIChmaXJlZm94LWNsZWFuLWZ1bmN0aW9uIGZ1bmN0aW9uKSxcbiAgICAgOmxpbmUgbmlsLFxuICAgICA6Y29sdW1uIG5pbH0pKSkpXG4ifSB7OnN5bSBmaXJlZm94LWNsZWFuLWZ1bmN0aW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlyZWZveC1jbGVhbi1mdW5jdGlvblxuIFtmXVxuIChhcy0+XG4gIGZcbiAgZlxuICAoY29uZFxuICAgKHN0cmluZy9ibGFuaz8gZilcbiAgIG5pbFxuICAgKG5vdD0gKC5pbmRleE9mIGYgXCI8L1wiKSAtMSlcbiAgIChsZXQgW2lkeCAoLmluZGV4T2YgZiBcIjwvXCIpXSAoLnN1YnN0cmluZyBmICgrIGlkeCAyKSkpXG4gICA6ZWxzZVxuICAgZilcbiAgKC0+XG4gICBmXG4gICAoc3RyaW5nL3JlcGxhY2UgI1wiPFwiIFwiXCIpXG4gICAoc3RyaW5nL3JlcGxhY2UgIz8oOmNsaiAjXCJcXC9cIiA6Y2xqcyAoanMvUmVnRXhwLiBcIlxcXFwvXCIpKSBcIlwiKSkpKVxuIn0gezpzeW0gY2hyb21lLXN0LWVsLT5mcmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZXBsLWVudiBzdC1lbCBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGNocm9tZS1zdC1lbC0+ZnJhbWVcbiBbcmVwbC1lbnYgc3QtZWwgb3B0c11cbiAobGV0XG4gIFt4c1xuICAgKC0+IHN0LWVsIChzdHJpbmcvcmVwbGFjZSAjXCJcXHMrYXRcXHMrXCIgXCJcIikgKHN0cmluZy9zcGxpdCAjXCJcXHMrXCIpKVxuICAgW2Z1bmN0aW9uIGZsY11cbiAgIChpZiAoPT0gMSAoY291bnQgeHMpKSBbbmlsIChmaXJzdCB4cyldIFsoZmlyc3QgeHMpIChsYXN0IHhzKV0pXG4gICBbZmlsZSBsaW5lIGNvbHVtbl1cbiAgIChwYXJzZS1maWxlLWxpbmUtY29sdW1uIGZsYyldXG4gIChpZlxuICAgKGFuZCBmaWxlIGZ1bmN0aW9uIGxpbmUgY29sdW1uKVxuICAgezpmaWxlIChwYXJzZS1maWxlIHJlcGwtZW52IGZpbGUgb3B0cyksXG4gICAgOmZ1bmN0aW9uIChzdHJpbmcvcmVwbGFjZSBmdW5jdGlvbiAjXCJPYmplY3RcXC5cIiBcIlwiKSxcbiAgICA6bGluZSBsaW5lLFxuICAgIDpjb2x1bW4gY29sdW1ufVxuICAgKHdoZW4tbm90XG4gICAgKHN0cmluZy9ibGFuaz8gZnVuY3Rpb24pXG4gICAgezpmaWxlIG5pbCxcbiAgICAgOmZ1bmN0aW9uIChzdHJpbmcvcmVwbGFjZSBmdW5jdGlvbiAjXCJPYmplY3RcXC5cIiBcIlwiKSxcbiAgICAgOmxpbmUgbmlsLFxuICAgICA6Y29sdW1uIG5pbH0pKSkpXG4ifSB7OnN5bSBtYXBwZWQtbGluZS1jb2x1bW4tY2FsbCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgY2xqcy5zb3VyY2UtbWFwIHNvdXJjZSBtYXAgZGF0YSBzdHJ1Y3R1cmUgbWFwIGEgZ2VuZXJhdGVkIGxpbmVcbiAgIGFuZCBjb2x1bW4gYmFjayB0byB0aGUgb3JpZ2luYWwgbGluZSwgY29sdW1uLCBhbmQgZnVuY3Rpb24gY2FsbGVkLiIsIDphcmdsaXN0cyAoW3NtcyBmaWxlIGxpbmUgY29sdW1uXSl9LCA6c291cmNlICIoZGVmblxuIG1hcHBlZC1saW5lLWNvbHVtbi1jYWxsXG4gXCJHaXZlbiBhIGNsanMuc291cmNlLW1hcCBzb3VyY2UgbWFwIGRhdGEgc3RydWN0dXJlIG1hcCBhIGdlbmVyYXRlZCBsaW5lXFxuICAgYW5kIGNvbHVtbiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBsaW5lLCBjb2x1bW4sIGFuZCBmdW5jdGlvbiBjYWxsZWQuXCJcbiBbc21zIGZpbGUgbGluZSBjb2x1bW5dXG4gKGxldFxuICBbc291cmNlLW1hcFxuICAgKGdldCBzbXMgKHN5bWJvbCAoc3RyaW5nL3JlcGxhY2UgKHJlbW92ZS1leHQgZmlsZSkgXCIvXCIgXCIuXCIpKSldXG4gIChsZXRmblxuICAgWyhnZXQtYmVzdC1jb2x1bW5cbiAgICAgW2NvbHVtbnMgY29sdW1uXVxuICAgICAobGFzdFxuICAgICAgKG9yXG4gICAgICAgKGdldFxuICAgICAgICBjb2x1bW5zXG4gICAgICAgIChsYXN0XG4gICAgICAgICAoZmlsdGVyXG4gICAgICAgICAgKGZuKiBbcDFfXzQ1NDYwI10gKDw9IHAxX180NTQ2MCMgKGRlYyBjb2x1bW4pKSlcbiAgICAgICAgICAoc29ydCAoa2V5cyBjb2x1bW5zKSkpKSlcbiAgICAgICAoc2Vjb25kIChmaXJzdCBjb2x1bW5zKSkpKSlcbiAgICAoYWRqdXN0XG4gICAgIFttYXBwZWRdXG4gICAgICh2ZWNcbiAgICAgIChtYXBcbiAgICAgICAoZm4qIFtwMV9fNDU0NjEjIHAyX180NTQ2MiNdIChwMV9fNDU0NjEjIHAyX180NTQ2MiMpKVxuICAgICAgIFtpbmMgaW5jIGlkZW50aXR5XVxuICAgICAgIG1hcHBlZCkpKV1cbiAgIChsZXRcbiAgICBbZGVmYXVsdCBbbGluZSBjb2x1bW4gbmlsXV1cbiAgICAoaWYtbGV0XG4gICAgIFtjb2x1bW5zIChnZXQgc291cmNlLW1hcCAoZGVjIGxpbmUpKV1cbiAgICAgKGFkanVzdCAobWFwIChnZXQtYmVzdC1jb2x1bW4gY29sdW1ucyBjb2x1bW4pIFs6bGluZSA6Y29sIDpuYW1lXSkpXG4gICAgIGRlZmF1bHQpKSkpKVxuIn0gezpzeW0gbWFwcGVkLXN0YWNrdHJhY2Utc3RyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBjYW5vbmljYWxpemVkIEphdmFTY3JpcHQgc3RhY2t0cmFjZSBhbmQgYSBtYXBcbiAgb2YgbGlicmFyeSBuYW1lcyB0byBkZWNvZGVkIHNvdXJjZSBtYXBzLCBwcmludCB0aGUgQ2xvanVyZVNjcmlwdCBzdGFja3RyYWNlIC5cbiAgU2VlIG1hcHBlZC1zdGFja3RyYWNlLiIsIDphcmdsaXN0cyBbW3N0YWNrdHJhY2Ugc21zXSBbc3RhY2t0cmFjZSBzbXMgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBwZWQtc3RhY2t0cmFjZS1zdHJcbiBcIkdpdmVuIGEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgY2Fub25pY2FsaXplZCBKYXZhU2NyaXB0IHN0YWNrdHJhY2UgYW5kIGEgbWFwXFxuICBvZiBsaWJyYXJ5IG5hbWVzIHRvIGRlY29kZWQgc291cmNlIG1hcHMsIHByaW50IHRoZSBDbG9qdXJlU2NyaXB0IHN0YWNrdHJhY2UgLlxcbiAgU2VlIG1hcHBlZC1zdGFja3RyYWNlLlwiXG4gKFtzdGFja3RyYWNlIHNtc10gKG1hcHBlZC1zdGFja3RyYWNlLXN0ciBzdGFja3RyYWNlIHNtcyBuaWwpKVxuIChbc3RhY2t0cmFjZSBzbXMgb3B0c11cbiAgKHdpdGgtb3V0LXN0clxuICAgKGRvc2VxXG4gICAgW3s6a2V5cyBbZnVuY3Rpb24gZmlsZSBsaW5lIGNvbHVtbl19XG4gICAgIChtYXBwZWQtc3RhY2t0cmFjZSBzdGFja3RyYWNlIHNtcyBvcHRzKV1cbiAgICAocHJpbnRsblxuICAgICBcIlxcdFwiXG4gICAgIChzdHJcbiAgICAgICh3aGVuIGZ1bmN0aW9uIChzdHIgZnVuY3Rpb24gXCIgXCIpKVxuICAgICAgXCIoXCJcbiAgICAgIGZpbGVcbiAgICAgICh3aGVuIGxpbmUgKHN0ciBcIjpcIiBsaW5lKSlcbiAgICAgICh3aGVuIGNvbHVtbiAoc3RyIFwiOlwiIGNvbHVtbikpXG4gICAgICBcIilcIikpKSkpKVxuIn0gezpzeW0gbWFwcGVkLXN0YWNrdHJhY2UsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlXG4gICByZXR1cm4gdGhlIENsb2p1cmVTY3JpcHQgc3RhY2t0cmFjZS4gVGhlIGNhbm9uaWNhbCBzdGFja3RyYWNlIG11c3QgYmVcbiAgIGluIHRoZSBmb3JtOlxuXG4gICAgW3s6ZmlsZSA8c3RyaW5nPlxuICAgICAgOmZ1bmN0aW9uIDxzdHJpbmc+XG4gICAgICA6bGluZSA8aW50ZWdlcj5cbiAgICAgIDpjb2x1bW4gPGludGVnZXI+fSpdXG5cbiAgIDpmaWxlIG11c3QgYmUgYSBVUkwgcGF0aCAod2l0aG91dCBwcm90b2NvbCkgcmVsYXRpdmUgdG8gOm91dHB1dC1kaXIgb3IgYVxuICAgaWRlbnRpZmllciBkZWxpbWl0ZWQgYnkgYW5nbGUgYnJhY2tldHMuIFRoZSByZXR1cm5lZCBtYXBwZWQgc3RhY2t0cmFjZSB3aWxsXG4gICBhbHNvIGNvbnRhaW4gOnVybCBlbnRyaWVzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2VzIGlmIGl0IGNhbiBiZSBkZXRlcm1pbmVkXG4gICBmcm9tIHRoZSBjbGFzc3BhdGguIiwgOmFyZ2xpc3RzIFtbc3RhY2t0cmFjZSBzbXNdIFtzdGFja3RyYWNlIHNtcyBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG1hcHBlZC1zdGFja3RyYWNlXG4gXCJHaXZlbiBhIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlXFxuICAgcmV0dXJuIHRoZSBDbG9qdXJlU2NyaXB0IHN0YWNrdHJhY2UuIFRoZSBjYW5vbmljYWwgc3RhY2t0cmFjZSBtdXN0IGJlXFxuICAgaW4gdGhlIGZvcm06XFxuXFxuICAgIFt7OmZpbGUgPHN0cmluZz5cXG4gICAgICA6ZnVuY3Rpb24gPHN0cmluZz5cXG4gICAgICA6bGluZSA8aW50ZWdlcj5cXG4gICAgICA6Y29sdW1uIDxpbnRlZ2VyPn0qXVxcblxcbiAgIDpmaWxlIG11c3QgYmUgYSBVUkwgcGF0aCAod2l0aG91dCBwcm90b2NvbCkgcmVsYXRpdmUgdG8gOm91dHB1dC1kaXIgb3IgYVxcbiAgIGlkZW50aWZpZXIgZGVsaW1pdGVkIGJ5IGFuZ2xlIGJyYWNrZXRzLiBUaGUgcmV0dXJuZWQgbWFwcGVkIHN0YWNrdHJhY2Ugd2lsbFxcbiAgIGFsc28gY29udGFpbiA6dXJsIGVudHJpZXMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZXMgaWYgaXQgY2FuIGJlIGRldGVybWluZWRcXG4gICBmcm9tIHRoZSBjbGFzc3BhdGguXCJcbiAoW3N0YWNrdHJhY2Ugc21zXSAobWFwcGVkLXN0YWNrdHJhY2Ugc3RhY2t0cmFjZSBzbXMgbmlsKSlcbiAoW3N0YWNrdHJhY2Ugc21zIG9wdHNdXG4gIChsZXRmblxuICAgWyhjYWxsLT5mdW5jdGlvblxuICAgICBbeF1cbiAgICAgKGlmICg6Y2FsbCB4KSAoaGFzaC1tYXAgOmZ1bmN0aW9uICg6Y2FsbCB4KSkge30pKVxuICAgIChjYWxsLW1lcmdlXG4gICAgIFtmdW5jdGlvbiBjYWxsXVxuICAgICAobWVyZ2Utd2l0aFxuICAgICAgKGZuXG4gICAgICAgW211bmdlZC1mbi1uYW1lIHVubXVuZ2VkLWNhbGwtbmFtZV1cbiAgICAgICAoaWZcbiAgICAgICAgKD1cbiAgICAgICAgIG11bmdlZC1mbi1uYW1lXG4gICAgICAgICAoc3RyaW5nL3JlcGxhY2UgKG11bmdlIHVubXVuZ2VkLWNhbGwtbmFtZSkgXCIuXCIgXCIkXCIpKVxuICAgICAgICB1bm11bmdlZC1jYWxsLW5hbWVcbiAgICAgICAgbXVuZ2VkLWZuLW5hbWUpKVxuICAgICAgZnVuY3Rpb25cbiAgICAgIGNhbGwpKV1cbiAgIChsZXRcbiAgICBbbWFwcGVkLWZyYW1lc1xuICAgICAobWFwXG4gICAgICAobWVtb2l6ZSAoZm4qIFtwMV9fNDU0NjMjXSAobWFwcGVkLWZyYW1lIHAxX180NTQ2MyMgc21zIG9wdHMpKSlcbiAgICAgIHN0YWNrdHJhY2UpXVxuICAgICh2ZWNcbiAgICAgKG1hcFxuICAgICAgY2FsbC1tZXJnZVxuICAgICAgKG1hcCAoZm4qIFtwMV9fNDU0NjQjXSAoZGlzc29jIHAxX180NTQ2NCMgOmNhbGwpKSBtYXBwZWQtZnJhbWVzKVxuICAgICAgKGNvbmNhdCAocmVzdCAobWFwIGNhbGwtPmZ1bmN0aW9uIG1hcHBlZC1mcmFtZXMpKSBbe31dKSkpKSkpKVxuIn0gezpzeW0gcGFyc2UtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtaW50XG4gW3NdXG4gIz8oOmNsaiAoTG9uZy9wYXJzZUxvbmcgcykgOmNsanMgKGpzL3BhcnNlSW50IHMgMTApKSlcbiJ9IHs6c3ltIHBhcnNlLWZpbGUsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGJyb3dzZXIgZmlsZSB1cmwgY29udmVydCBpdCBpbnRvIGEgcmVsYXRpdmUgcGF0aCB0aGF0IGNhbiBiZSB1c2VkXG4gICB0byBsb2NhdGUgdGhlIG9yaWdpbmFsIHNvdXJjZS4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW2hvc3QgaG9zdC1wb3J0IHBvcnRdLCA6YXMgcmVwbC1lbnZ9IGZpbGUgezprZXlzIFthc3NldC1wYXRoXSwgOmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWZpbGVcbiBcIkdpdmVuIGEgYnJvd3NlciBmaWxlIHVybCBjb252ZXJ0IGl0IGludG8gYSByZWxhdGl2ZSBwYXRoIHRoYXQgY2FuIGJlIHVzZWRcXG4gICB0byBsb2NhdGUgdGhlIG9yaWdpbmFsIHNvdXJjZS5cIlxuIFt7OmtleXMgW2hvc3QgaG9zdC1wb3J0IHBvcnRdLCA6YXMgcmVwbC1lbnZ9XG4gIGZpbGVcbiAgezprZXlzIFthc3NldC1wYXRoXSwgOmFzIG9wdHN9XVxuIChsZXRcbiAgW3VybHBhdFxuICAgKGlmXG4gICAgaG9zdFxuICAgIChzdHJpbmctPnJlZ2V4IChzdHIgXCJodHRwOi8vXCIgaG9zdCBcIjpcIiAob3IgaG9zdC1wb3J0IHBvcnQpIFwiL1wiKSlcbiAgICBcIlwiKVxuICAgbWF0Y2hcbiAgIChpZiBob3N0IChyZS1maW5kIHVybHBhdCBmaWxlKSAoY29udGFpbnM/IG9wdHMgOm91dHB1dC1kaXIpKV1cbiAgKGlmXG4gICBtYXRjaFxuICAgKC0+XG4gICAgZmlsZVxuICAgIChzdHJpbmcvcmVwbGFjZSB1cmxwYXQgXCJcIilcbiAgICAoc3RyaW5nL3JlcGxhY2VcbiAgICAgKHN0cmluZy0+cmVnZXhcbiAgICAgIChzdHJcbiAgICAgICBcIl5cIlxuICAgICAgIChvclxuICAgICAgICAoYW5kIGFzc2V0LXBhdGggKHN0cmluZy9yZXBsYWNlIGFzc2V0LXBhdGggI1wiXi9cIiBcIlwiKSlcbiAgICAgICAgKG91dHB1dC1kaXJlY3Rvcnkgb3B0cykpXG4gICAgICAgXCIvXCIpKVxuICAgICBcIlwiKSlcbiAgIChpZi1sZXRcbiAgICBbYXNzZXQtcm9vdCAoOmFzc2V0LXJvb3Qgb3B0cyldXG4gICAgKHN0cmluZy9yZXBsYWNlIGZpbGUgYXNzZXQtcm9vdCBcIlwiKVxuICAgICh0aHJvd1xuICAgICAoZXgtaW5mb1xuICAgICAgKHN0ciBcIkNvdWxkIG5vdCByZWxhdGl2aXplIFVSTCBcIiBmaWxlKVxuICAgICAgezp0eXBlIDpwYXJzZS1zdGFja3RyYWNlLCA6cmVhc29uIDpyZWxhdGl2aXplLXVybH0pKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLWZpbGUtbGluZS1jb2x1bW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmxjXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWZpbGUtbGluZS1jb2x1bW5cbiBbZmxjXVxuIChpZi1ub3RcbiAgKHJlLWZpbmQgI1wiOlwiIGZsYylcbiAgW2ZsYyBuaWwgbmlsXVxuICAobGV0XG4gICBbeHNcbiAgICAoc3RyaW5nL3NwbGl0IGZsYyAjXCI6XCIpXG4gICAgW3ByZSBbbGluZSBjb2x1bW5dXVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbW3ByZSBwb3N0XSBbeCBpXV1cbiAgICAgIChpZiAoPD0gaSAyKSBbcHJlIChjb25qIHBvc3QgeCldIFsoY29uaiBwcmUgeCkgcG9zdF0pKVxuICAgICBbW10gW11dXG4gICAgIChtYXAgdmVjdG9yIHhzIChyYW5nZSAoY291bnQgeHMpIDAgLTEpKSlcbiAgICBmaWxlXG4gICAgKHN0cmluZy9qb2luIFwiOlwiIHByZSldXG4gICBbKGNvbmQtPiBmaWxlIChzdGFydHMtd2l0aD8gZmlsZSBcIihcIikgKHN0cmluZy9yZXBsYWNlIFwiKFwiIFwiXCIpKVxuICAgIChwYXJzZS1pbnRcbiAgICAgKGNvbmQtPiBsaW5lIChlbmRzLXdpdGg/IGxpbmUgXCIpXCIpIChzdHJpbmcvcmVwbGFjZSBcIilcIiBcIlwiKSkpXG4gICAgKHBhcnNlLWludFxuICAgICAoY29uZC0+XG4gICAgICBjb2x1bW5cbiAgICAgIChlbmRzLXdpdGg/IGNvbHVtbiBcIilcIilcbiAgICAgIChzdHJpbmcvcmVwbGFjZSBcIilcIiBcIlwiKSkpXSkpKVxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmVycm9ycyAoezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZVxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgZXNjYXBlOiBcXFxcdVwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWR1cC1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGtzXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWR1cC1rZXlzXG4gW3JkciBraW5kIGtzXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIChkdXBsaWNhdGUta2V5cy1lcnJvclxuICAgKHN0ciAocy9jYXBpdGFsaXplIChuYW1lIGtpbmQpKSBcIiBsaXRlcmFsIGNvbnRhaW5zIGR1cGxpY2F0ZSBrZXlcIilcbiAgIGtzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW5zXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCB2YWx1ZSB1c2VkIGFzIG5hbWVzcGFjZSBpbiBuYW1lc3BhY2VkIG1hcDogXCJcbiAgbnMtbmFtZVxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy11bmtub3duLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bmtub3duLXJlYWRlci10YWdcbiBbcmRyIHRhZ11cbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIHJlYWRlciBmdW5jdGlvbiBmb3IgdGFnIFwiIChpL2luc3BlY3QgdGFnKSBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1hdC1kaXNwYXRjaFxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGRpc3BhdGNoIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldFxuIFtyZHIgdGFyZ2V0XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2FuIG5vdCBiZSBhcHBsaWVkIHRvIFwiXG4gIChpL2luc3BlY3QgdGFyZ2V0KVxuICBcIi4gXCJcbiAgXCJNZXRhZGF0YSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIElNZXRhcy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC1udW1iZXJcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBudW1iZXI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHJlYWRlci1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZGVyLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDpyZWFkZXItZXJyb3IgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuICh0aHJvd1xuICAoaWxsZWdhbC1hcmctZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGxpdGVyYWw6IFxcXFxcIiB0b2tlbiBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctbnMtbWFwLW5vLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbnMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1ucy1tYXAtbm8tbWFwXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTmFtZXNwYWNlZCBtYXAgd2l0aCBuYW1lc3BhY2UgXCJcbiAgbnMtbmFtZVxuICBcIiBkb2VzIG5vdCBzcGVjaWZ5IGEgbWFwLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgZmVhdHVyZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkXG4gW3JkciBmZWF0dXJlXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiRmVhdHVyZSBjYW5ub3QgYmUgXCJcbiAgKGkvaW5zcGVjdCBmZWF0dXJlKVxuICBcIiBGZWF0dXJlcyBtdXN0IGJlIGtleXdvcmRzLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1kZWxpbWl0ZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcmRyIGtpbmQgY29sdW1uIGxpbmVdIFtyZHIga2luZCBsaW5lIGNvbHVtbiBuXV19LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1kZWxpbWl0ZWRcbiAoW3JkciBraW5kIGNvbHVtbiBsaW5lXVxuICAodGhyb3ctZW9mLWRlbGltaXRlZCByZHIga2luZCBsaW5lIGNvbHVtbiBuaWwpKVxuIChbcmRyIGtpbmQgbGluZSBjb2x1bW4gbl1cbiAgKGVvZi1lcnJvclxuICAgcmRyXG4gICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgXCJcbiAgIChpZiBuIChzdHIgXCJpdGVtIFwiIG4gXCIgb2YgXCIpKVxuICAgKG5hbWUga2luZClcbiAgIChpZiBsaW5lIChzdHIgXCIsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIiBhbmQgY29sdW1uIFwiIGNvbHVtbikpXG4gICBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWluLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWluLWNoYXJhY3RlclxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtY2hhclxuIFtyZHIga2luZCBjaF1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgY2hhcmFjdGVyOiBcIlxuICBjaFxuICBcIiBmb3VuZCB3aGlsZSByZWFkaW5nIFwiXG4gIChuYW1lIGtpbmQpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIGVvZi1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW9mLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDplb2YgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhXG4gW3JkciB4XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2Fubm90IGJlIFwiXG4gIChpL2luc3BlY3QgeClcbiAgXCIuIE1ldGFkYXRhIG11c3QgYmUgYSBTeW1ib2wsIEtleXdvcmQsIFN0cmluZyBvciBNYXAuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLXJlYWRpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgJiBzdGFydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtcmVhZGluZ1xuIFtyZHIga2luZCAmIHN0YXJ0XVxuIChsZXRcbiAgW2luaXQgKGNhc2Uga2luZCA6cmVnZXggXCIjXFxcIlwiIDpzdHJpbmcgXFxcIildXG4gIChlb2YtZXJyb3JcbiAgIHJkclxuICAgXCJVbmV4cGVjdGVkIEVPRiByZWFkaW5nIFwiXG4gICAobmFtZSBraW5kKVxuICAgXCIgc3RhcnRpbmcgXCJcbiAgIChhcHBseSBzdHIgaW5pdCBzdGFydClcbiAgIFwiLlwiKSkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWVycm9yXG4gW3JkciBsaW5lXVxuIChpZlxuICBsaW5lXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIi5cIilcbiAgKGVvZi1lcnJvciByZHIgXCJFT0Ygd2hpbGUgcmVhZGluZy5cIikpKVxuIn0gezpzeW0gaWxsZWdhbC1hcmctZXJyb3IsIDptZXRhIHs6ZG9jICJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWQiLCA6YXJnbGlzdHMgKFtyZHIgJiBtc2dzXSl9LCA6c291cmNlICIoZGVmblxuIGlsbGVnYWwtYXJnLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDppbGxlZ2FsLWFyZ3VtZW50IChhcHBseSBzdHIgbXNncykpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC1vY3RhbC1sZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtb2N0YWwtbGVuXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlIGluIGEgY2hhcmFjdGVyIGxpdGVyYWw6XCJcbiAgdG9rZW5cbiAgXCIuIE9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgbXVzdCBiZSAzIG9yIGZld2VyIGRpZ2l0cy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdFxuIFtyZHIgY2hdXG4gKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgZGlnaXQgXCIgY2ggXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW5cbiBbcmRyIGNoIHRva2VuXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIGRpZ2l0IFwiXG4gIGNoXG4gIFwiIGluIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIlxuICB0b2tlblxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBhY3R1YWwgZXhwZWN0ZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlblxuIFtyZHIgYWN0dWFsIGV4cGVjdGVkXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbC4gVW5pY29kZSBsaXRlcmFscyBzaG91bGQgYmUgXCJcbiAgZXhwZWN0ZWRcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuICBcIlxuICBcInZhbHVlIHN1cHBsZWQgaXMgXCJcbiAgYWN0dWFsXG4gIFwiY2hhcmFjdGVycyBsb25nLlwiKSlcbiJ9IHs6c3ltIHRocm93LXNpbmdsZS1jb2xvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctc2luZ2xlLWNvbG9uXG4gW3Jkcl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkEgc2luZ2xlIGNvbG9uIGlzIG5vdCBhIHZhbGlkIGtleXdvcmQuXCIpKVxuIn0gezpzeW0gdGhyb3ctb2RkLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZSBjb2wgZWxlbWVudHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctb2RkLW1hcFxuIFtyZHIgbGluZSBjb2wgZWxlbWVudHNdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJUaGUgbWFwIGxpdGVyYWwgc3RhcnRpbmcgd2l0aCBcIlxuICAoaS9pbnNwZWN0IChmaXJzdCBlbGVtZW50cykpXG4gIChpZiBsaW5lIChzdHIgXCIgb24gbGluZSBcIiBsaW5lIFwiIGNvbHVtbiBcIiBjb2wpKVxuICBcIiBjb250YWlucyBcIlxuICAoY291bnQgZWxlbWVudHMpXG4gIFwiIGZvcm0ocykuIE1hcCBsaXRlcmFscyBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgZm9ybXMuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW9jdGFsLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW9jdGFsLW51bWJlclxuIFtyZHJdXG4gKHJlYWRlci1lcnJvciByZHIgXCJPY3RhbCBlc2NhcGUgc2VxdWVuY2UgbXVzdCBiZSBpbiByYW5nZSBbMCwgMzc3XS5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1yZWFkZXItdGFnXG4gW3JkciB0YWddXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHJlYWRlciB0YWc6IFwiXG4gIChpL2luc3BlY3QgdGFnKVxuICBcIi4gUmVhZGVyIHRhZ3MgbXVzdCBiZSBzeW1ib2xzLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bm1hdGNoLWRlbGltaXRlclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbm1hdGNoZWQgZGVsaW1pdGVyIFwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBjaGFyYWN0ZXIgbGl0ZXJhbCBcXFxcdVwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhclxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtZXNjYXBlLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1lc2NhcGUtY2hhclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbnN1cHBvcnRlZCBlc2NhcGUgY2hhcmFjdGVyOiBcXFxcXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWF0LXN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1hdC1zdGFydFxuIFtyZHIga2luZF1cbiAoZW9mLWVycm9yXG4gIHJkclxuICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgc3RhcnQgb2YgXCJcbiAgKG5hbWUga2luZClcbiAgXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkXG4gW3JkciBraW5kIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBcIiAobmFtZSBraW5kKSBcIjogXCIgdG9rZW4gXCIuXCIpKVxuIn0pLCBpZ2x1LnBhcnNlICh7OnN5bSAqZm4tZGVwZW5kZW5jaWVzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmZuLWRlcGVuZGVuY2llcyogbmlsKVxuIn0gezpzeW0gKmN1cnJlbnQtZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY3VycmVudC1mbiogbmlsKVxuIn0gezpzeW0gZm4tbmFtZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbi1uYW1lP1xuIFt4XVxuICh3aGVuXG4gIChhbmQgKHN5bWJvbD8geCkgKmN1cnJlbnQtZm4qKVxuICAoc29tZS0+XG4gICAqZm4tZGVwZW5kZW5jaWVzKlxuICAgKHN3YXAhXG4gICAgKGZuXG4gICAgIFtkZXBzXVxuICAgICAod2hlblxuICAgICAgKGNvbnRhaW5zPyAoZGVwcyB4KSAqY3VycmVudC1mbiopXG4gICAgICAodGhyb3dcbiAgICAgICAoZXgtaW5mb1xuICAgICAgICBcIkN5Y2xpYyBkZXBlbmRlbmN5IGRldGVjdGVkIGJldHdlZW4gZnVuY3Rpb25zXCJcbiAgICAgICAgezpmaXJzdC1mbiAqY3VycmVudC1mbiosIDpzZWNvbmQtZm4geH0pKSlcbiAgICAgKHVwZGF0ZVxuICAgICAgZGVwc1xuICAgICAgKmN1cnJlbnQtZm4qXG4gICAgICAoZm4qIFtwMV9fNDU0NjYjXSAoY29uaiAoc2V0IHAxX180NTQ2NiMpIHgpKSkpKSkpXG4gKG9yIChzeW1ib2w/IHgpIChudW1iZXI/IHgpIChzdHJpbmc/IHgpKSlcbiJ9IHs6c3ltIHBhcnNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2VcbiBbY29udGVudF1cbiAobGV0XG4gIFtwYXJzZWQtY29udGVudCAocy9jb25mb3JtIDppZ2x1LnBhcnNlL3NoYWRlciBjb250ZW50KV1cbiAgKGlmXG4gICAoPSBwYXJzZWQtY29udGVudCA6Y2xvanVyZS5zcGVjLmFscGhhL2ludmFsaWQpXG4gICAodGhyb3dcbiAgICAoZXgtaW5mbyAoZXhwb3VuZC9leHBvdW5kLXN0ciA6aWdsdS5wYXJzZS9zaGFkZXIgY29udGVudCkge30pKVxuICAgKGxldFxuICAgIFsqZm4tZGVwcyAoYXRvbSB7fSldXG4gICAgKHdoZW5cbiAgICAgKG1hcD8gKDpmdW5jdGlvbnMgY29udGVudCkpXG4gICAgIChkb3NlcVxuICAgICAgW1tmbi1zeW0gYm9keV0gKDpmdW5jdGlvbnMgY29udGVudCldXG4gICAgICAoYmluZGluZ1xuICAgICAgIFsqZm4tZGVwZW5kZW5jaWVzKiAqZm4tZGVwcyAqY3VycmVudC1mbiogZm4tc3ltXVxuICAgICAgIChzL2NvbmZvcm0gOmlnbHUucGFyc2UvZnVuY3Rpb24gYm9keSkpKSlcbiAgICAoYXNzb2MgcGFyc2VkLWNvbnRlbnQgOmZuLWRlcHMgQCpmbi1kZXBzKSkpKSlcbiJ9KSwgY2xqcy5qcyAoezpzeW0gKmxvYWQtZm4qLCA6bWV0YSB7OmRvYyAiRWFjaCBydW50aW1lIGVudmlyb25tZW50IHByb3ZpZGVzIGEgZGlmZmVyZW50IHdheSB0byBsb2FkIGEgbGlicmFyeS5cbiAgV2hhdGV2ZXIgZnVuY3Rpb24gKmxvYWQtZm4qIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIHR3byBhcmd1bWVudHMgLSBhXG4gIG1hcCBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbjogVGhlIG1hcCB3aWxsIGhhdmUgdGhlIGZvbGxvd2luZyBrZXlzOlxuXG4gIDpuYW1lICAgLSB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSAoYSBzeW1ib2wpXG4gIDptYWNyb3MgLSBtb2RpZmllciBzaWduYWxpbmcgYSBtYWNyb3MgbmFtZXNwYWNlIGxvYWRcbiAgOnBhdGggICAtIG11bmdlZCByZWxhdGl2ZSBsaWJyYXJ5IHBhdGggKGEgc3RyaW5nKVxuXG4gIEl0IGlzIHVwIHRvIHRoZSBpbXBsZW1lbnRvciB0byBjb3JyZWN0bHkgcmVzb2x2ZSB0aGUgY29ycmVzcG9uZGluZyAuY2xqcyxcbiAgLmNsamMsIG9yIC5qcyByZXNvdXJjZSAodGhlIG9yZGVyIG11c3QgYmUgcmVzcGVjdGVkKS4gSWYgOm1hY3JvcyBpcyB0cnVlXG4gIHJlc29sdXRpb24gc2hvdWxkIG9ubHkgY29uc2lkZXIgLmNsaiBvciAuY2xqYyByZXNvdXJjZXMgKHRoZSBvcmRlciBtdXN0IGJlXG4gIHJlc3BlY3RlZCkuIFVwb24gcmVzb2x1dGlvbiB0aGUgY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQgd2l0aCBhIG1hcFxuICBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcga2V5czpcblxuICA6bGFuZyAgICAgICAtIHRoZSBsYW5ndWFnZSwgOmNsaiBvciA6anNcbiAgOnNvdXJjZSAgICAgLSB0aGUgc291cmNlIG9mIHRoZSBsaWJyYXJ5IChhIHN0cmluZylcbiAgOmZpbGUgICAgICAgLSBvcHRpb25hbCwgdGhlIGZpbGUgcGF0aCwgaXQgd2lsbCBiZSBhZGRlZCB0byBBU1QncyA6ZmlsZSBrZXl3b3JkXG4gICAgICAgICAgICAgICAgKGJ1dCBub3QgaW4gOm1ldGEpXG4gIDpjYWNoZSAgICAgIC0gb3B0aW9uYWwsIGlmIGEgOmNsaiBuYW1lc3BhY2UgaGFzIGJlZW4gcHJlY29tcGlsZWQgdG8gOmpzLCBjYW5cbiAgICAgICAgICAgICAgICBnaXZlIGFuIGFuYWx5c2lzIGNhY2hlIGZvciBmYXN0ZXIgbG9hZHMuXG4gIDpzb3VyY2UtbWFwIC0gb3B0aW9uYWwsIGlmIGEgOmNsaiBuYW1lc3BhY2UgaGFzIGJlZW4gcHJlY29tcGlsZWQgdG8gOmpzLCBjYW5cbiAgICAgICAgICAgICAgICBnaXZlIGEgVjMgc291cmNlIG1hcCBKU09OXG5cbiAgSWYgdGhlIHJlc291cmNlIGNvdWxkIG5vdCBiZSByZXNvbHZlZCwgdGhlIGNhbGxiYWNrIHNob3VsZCBiZSBpbnZva2VkIHdpdGhcbiAgbmlsLiJ9LCA6c291cmNlICIoZGVmb25jZSAqbG9hZC1mbiogKGZuIFttIGNiXSAodGhyb3cgKGpzL0Vycm9yLiBcIk5vICpsb2FkLWZuKiBzZXRcIikpKSlcbiJ9IHs6c3ltIGV2YWwsIDptZXRhIHs6ZG9jICJFdmFsdWF0ZSBhIHNpbmdsZSBDbG9qdXJlU2NyaXB0IGZvcm0uIFRoZSBwYXJhbWV0ZXJzOlxuXG4gICBzdGF0ZSAoYXRvbSlcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXG5cbiAgIGZvcm0gKHMtZXhwcilcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgIG9wdHMgKG1hcClcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cblxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cblxuICAgY2IgKGZ1bmN0aW9uKVxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cbiAgICAgYSBrZXkgOnZhbHVlIHdpdGggdGhlIHJlc3VsdCBvZiBldmFsdXRpb24uIElmIHVuc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGxcbiAgICAgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlIG9mXG4gICAgIGZhaWx1cmUuIiwgOmFyZ2xpc3RzIFtbc3RhdGUgZm9ybSBjYl0gW3N0YXRlIGZvcm0gb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBldmFsXG4gXCJFdmFsdWF0ZSBhIHNpbmdsZSBDbG9qdXJlU2NyaXB0IGZvcm0uIFRoZSBwYXJhbWV0ZXJzOlxcblxcbiAgIHN0YXRlIChhdG9tKVxcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXFxuXFxuICAgZm9ybSAocy1leHByKVxcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXFxuXFxuICAgb3B0cyAobWFwKVxcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cXG5cXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXFxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXFxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXFxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxcbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXFxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cXG5cXG4gICBjYiAoZnVuY3Rpb24pXFxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgIGEga2V5IDp2YWx1ZSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHV0aW9uLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsXFxuICAgICBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2Ugb2ZcXG4gICAgIGZhaWx1cmUuXCJcbiAoW3N0YXRlIGZvcm0gY2JdIChldmFsIHN0YXRlIGZvcm0gbmlsIGNiKSlcbiAoW3N0YXRlIGZvcm0gb3B0cyBjYl1cbiAgKGV2YWwqXG4gICB7Oipjb21waWxlciogc3RhdGUsXG4gICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcbiAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcbiAgICA6KmNsanMtZGVwLXNldCogYW5hLypjbGpzLWRlcC1zZXQqLFxuICAgIDoqbG9hZC1tYWNyb3MqICg6bG9hZC1tYWNyb3Mgb3B0cyB0cnVlKSxcbiAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcbiAgICA6KmV2YWwtZm4qIChvciAoOmV2YWwgb3B0cykgKmV2YWwtZm4qKX1cbiAgIGZvcm1cbiAgIG9wdHNcbiAgIGNiKSkpXG4ifSB7OnN5bSBjb21waWxlLXN0ciwgOm1ldGEgezpkb2MgIkNvbXBpbGUgQ2xvanVyZVNjcmlwdCBzb3VyY2UgaW50byBKYXZhU2NyaXB0LiBUaGUgcGFyYW1ldGVyczpcblxuICAgc3RhdGUgKGF0b20pXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxuXG4gICBzb3VyY2UgKHN0cmluZylcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXG4gICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlIC0gdXNlZCBhcyBrZXkgaW4gOnNvdXJjZS1tYXBzXG5cbiAgIG9wdHMgKG1hcClcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cblxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cblxuICAgY2IgKGZ1bmN0aW9uKVxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cbiAgICAgYSBrZXkgOnZhbHVlIHdpdGggdGhlIGNvbXBpbGF0aW9uIHJlc3VsdCAoc3RyaW5nKS4gSWYgdW5zdWNjZXNzZnVsIHRoZSBtYXBcbiAgICAgd2lsbCBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2VcbiAgICAgb2YgZmFpbHVyZS4iLCA6YXJnbGlzdHMgW1tzdGF0ZSBzb3VyY2UgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGlsZS1zdHJcbiBcIkNvbXBpbGUgQ2xvanVyZVNjcmlwdCBzb3VyY2UgaW50byBKYXZhU2NyaXB0LiBUaGUgcGFyYW1ldGVyczpcXG5cXG4gICBzdGF0ZSAoYXRvbSlcXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxcblxcbiAgIHNvdXJjZSAoc3RyaW5nKVxcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXFxuXFxuICAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcXG4gICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlIC0gdXNlZCBhcyBrZXkgaW4gOnNvdXJjZS1tYXBzXFxuXFxuICAgb3B0cyAobWFwKVxcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cXG5cXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXFxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXFxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXFxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxcbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXFxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cXG5cXG4gICBjYiAoZnVuY3Rpb24pXFxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgIGEga2V5IDp2YWx1ZSB3aXRoIHRoZSBjb21waWxhdGlvbiByZXN1bHQgKHN0cmluZykuIElmIHVuc3VjY2Vzc2Z1bCB0aGUgbWFwXFxuICAgICB3aWxsIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZVxcbiAgICAgb2YgZmFpbHVyZS5cIlxuIChbc3RhdGUgc291cmNlIGNiXSAoY29tcGlsZS1zdHIgc3RhdGUgc291cmNlIG5pbCBjYikpXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gKGNvbXBpbGUtc3RyIHN0YXRlIHNvdXJjZSBuYW1lIG5pbCBjYikpXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXVxuICB7OnByZVxuICAgWyhhdG9tPyBzdGF0ZSlcbiAgICAoc3RyaW5nPyBzb3VyY2UpXG4gICAgKHZhbGlkLW5hbWU/IG5hbWUpXG4gICAgKHZhbGlkLW9wdHM/IG9wdHMpXG4gICAgKGZuPyBjYildfVxuICAoY29tcGlsZS1zdHIqXG4gICB7Oipjb21waWxlciogc3RhdGUsXG4gICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcbiAgICA6KmNsanMtZGVwLXNldCogYW5hLypjbGpzLWRlcC1zZXQqLFxuICAgIDoqYW5hbHl6ZS1kZXBzKiAoOmFuYWx5emUtZGVwcyBvcHRzIHRydWUpLFxuICAgIDoqbG9hZC1tYWNyb3MqICg6bG9hZC1tYWNyb3Mgb3B0cyB0cnVlKSxcbiAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcbiAgICA6KmV2YWwtZm4qIChvciAoOmV2YWwgb3B0cykgKmV2YWwtZm4qKSxcbiAgICA6KnNtLWRhdGEqICh3aGVuICg6c291cmNlLW1hcCBvcHRzKSAoc20tZGF0YSkpfVxuICAgc291cmNlXG4gICBuYW1lXG4gICBvcHRzXG4gICBjYikpKVxuIn0gezpzeW0gbnMtPnJlbHBhdGgsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG5hbWVzcGFjZSBhcyBhIHN5bWJvbCByZXR1cm4gdGhlIHJlbGF0aXZlIHBhdGggc2FucyBleHRlbnNpb24iLCA6YXJnbGlzdHMgKFtucy1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnMtPnJlbHBhdGhcbiBcIkdpdmVuIGEgbmFtZXNwYWNlIGFzIGEgc3ltYm9sIHJldHVybiB0aGUgcmVsYXRpdmUgcGF0aCBzYW5zIGV4dGVuc2lvblwiXG4gW25zLXN5bV1cbiAoc3RyaW5nL3JlcGxhY2UgKGFuYS9tdW5nZS1wYXRoIG5zLXN5bSkgXFwuIFxcLykpXG4ifSB7OnN5bSBlbXB0eS1zdGF0ZSwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhbiBlbXB0eSBjb21waWxlciBzdGF0ZS4gUmVxdWlyZWQgdG8gaW52b2tlIGFuYWx5emUsIGNvbXBpbGUsXG4gICBldmFsIGFuZCBldmFsLXN0ci4iLCA6YXJnbGlzdHMgW1tdIFtpbml0XV19LCA6c291cmNlICIoZGVmblxuIGVtcHR5LXN0YXRlXG4gXCJDb25zdHJ1Y3QgYW4gZW1wdHkgY29tcGlsZXIgc3RhdGUuIFJlcXVpcmVkIHRvIGludm9rZSBhbmFseXplLCBjb21waWxlLFxcbiAgIGV2YWwgYW5kIGV2YWwtc3RyLlwiXG4gKFtdXG4gIChkb3RvXG4gICAoZW52L2RlZmF1bHQtY29tcGlsZXItZW52KVxuICAgKHN3YXAhXG4gICAgKGZuXG4gICAgIFtzdGF0ZV1cbiAgICAgKC0+XG4gICAgICBzdGF0ZVxuICAgICAgKGFzc29jLWluXG4gICAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgJ2NsanMuY29yZV1cbiAgICAgICAoZHVtcC1jb3JlKSkpKSkpKVxuIChbaW5pdF0gKGRvdG8gKGVtcHR5LXN0YXRlKSAoc3dhcCEgaW5pdCkpKSlcbiJ9IHs6c3ltICpsb2FkZWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqbG9hZGVkKiAoYXRvbSAje30pKVxuIn0gezpzeW0gcmVxdWlyZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tuYW1lIGNiXSBbbmFtZSBvcHRzIGNiXSBbYm91bmQtdmFycyBuYW1lIG9wdHMgY2JdIFtib3VuZC12YXJzIG5hbWUgcmVsb2FkIG9wdHMgY2JdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVxdWlyZVxuIChbbmFtZSBjYl0gKHJlcXVpcmUgbmFtZSBuaWwgY2IpKVxuIChbbmFtZSBvcHRzIGNiXSAocmVxdWlyZSBuaWwgbmFtZSBvcHRzIGNiKSlcbiAoW2JvdW5kLXZhcnMgbmFtZSBvcHRzIGNiXSAocmVxdWlyZSBib3VuZC12YXJzIG5hbWUgbmlsIG9wdHMgY2IpKVxuIChbYm91bmQtdmFycyBuYW1lIHJlbG9hZCBvcHRzIGNiXVxuICAobGV0XG4gICBbYm91bmQtdmFyc1xuICAgIChtZXJnZVxuICAgICB7Oipjb21waWxlciogKGVudi9kZWZhdWx0LWNvbXBpbGVyLWVudiksXG4gICAgICA6KmRhdGEtcmVhZGVycyogdGFncy8qY2xqcy1kYXRhLXJlYWRlcnMqLFxuICAgICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxuICAgICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXG4gICAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcbiAgICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopfVxuICAgICBib3VuZC12YXJzKVxuICAgIGFuYW1lXG4gICAgKGNvbmQtPiBuYW1lICg6bWFjcm9zLW5zIG9wdHMpIGFuYS9tYWNyby1ucy1uYW1lKV1cbiAgICh3aGVuICg9IDpyZWxvYWQgcmVsb2FkKSAoc3dhcCEgKmxvYWRlZCogZGlzaiBhbmFtZSkpXG4gICAod2hlbiAoPSA6cmVsb2FkLWFsbCByZWxvYWQpIChyZXNldCEgKmxvYWRlZCogI3t9KSlcbiAgICh3aGVuXG4gICAgKDp2ZXJib3NlIG9wdHMpXG4gICAgKGRlYnVnLXByblxuICAgICAoc3RyXG4gICAgICBcIkxvYWRpbmcgXCJcbiAgICAgIG5hbWVcbiAgICAgICh3aGVuICg6bWFjcm9zLW5zIG9wdHMpIFwiIG1hY3Jvc1wiKVxuICAgICAgXCIgbmFtZXNwYWNlXCIpKSlcbiAgIChpZi1ub3RcbiAgICAoY29udGFpbnM/IEAqbG9hZGVkKiBhbmFtZSlcbiAgICAobGV0XG4gICAgIFtlbnYgKDoqZW52KiBib3VuZC12YXJzKV1cbiAgICAgKHRyeVxuICAgICAgKCg6KmxvYWQtZm4qIGJvdW5kLXZhcnMpXG4gICAgICAgezpuYW1lIG5hbWUsXG4gICAgICAgIDptYWNyb3MgKDptYWNyb3MtbnMgb3B0cyksXG4gICAgICAgIDpwYXRoIChucy0+cmVscGF0aCBuYW1lKX1cbiAgICAgICAoZm5cbiAgICAgICAgW3Jlc291cmNlXVxuICAgICAgICAoYXNzZXJ0XG4gICAgICAgICAob3IgKG1hcD8gcmVzb3VyY2UpIChuaWw/IHJlc291cmNlKSlcbiAgICAgICAgIFwiKmxvYWQtZm4qIG1heSBvbmx5IHJldHVybiBhIG1hcCBvciBuaWxcIilcbiAgICAgICAgKGlmXG4gICAgICAgICByZXNvdXJjZVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt7OmtleXMgW2xhbmcgc291cmNlIGNhY2hlIHNvdXJjZS1tYXAgZmlsZV19IHJlc291cmNlXVxuICAgICAgICAgIChjb25kcFxuICAgICAgICAgICBrZXl3b3JkLWlkZW50aWNhbD9cbiAgICAgICAgICAgbGFuZ1xuICAgICAgICAgICA6Y2xqXG4gICAgICAgICAgIChkb1xuICAgICAgICAgICAgKHByZS1maWxlLXNpZGUtZWZmZWN0c1xuICAgICAgICAgICAgICg6KmNvbXBpbGVyKiBib3VuZC12YXJzKVxuICAgICAgICAgICAgIGFuYW1lXG4gICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgIG9wdHMpXG4gICAgICAgICAgICAoZXZhbC1zdHIqXG4gICAgICAgICAgICAgYm91bmQtdmFyc1xuICAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAoYXNzb2Mgb3B0cyA6Y2xqcy1maWxlIGZpbGUpXG4gICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgIFtyZXNdXG4gICAgICAgICAgICAgIChwb3N0LWZpbGUtc2lkZS1lZmZlY3RzIGZpbGUgb3B0cylcbiAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAoOmVycm9yIHJlcylcbiAgICAgICAgICAgICAgIChjYiByZXMpXG4gICAgICAgICAgICAgICAoZG8gKHN3YXAhICpsb2FkZWQqIGNvbmogYW5hbWUpIChjYiB7OnZhbHVlIHRydWV9KSkpKSkpXG4gICAgICAgICAgIDpqc1xuICAgICAgICAgICAocHJvY2Vzcy1tYWNyb3MtZGVwc1xuICAgICAgICAgICAgYm91bmQtdmFyc1xuICAgICAgICAgICAgY2FjaGVcbiAgICAgICAgICAgIG9wdHNcbiAgICAgICAgICAgIChmblxuICAgICAgICAgICAgIFtyZXNdXG4gICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICg6ZXJyb3IgcmVzKVxuICAgICAgICAgICAgICAoY2IgcmVzKVxuICAgICAgICAgICAgICAocHJvY2Vzcy1saWJzLWRlcHNcbiAgICAgICAgICAgICAgIGJvdW5kLXZhcnNcbiAgICAgICAgICAgICAgIGNhY2hlXG4gICAgICAgICAgICAgICBvcHRzXG4gICAgICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICAgICBbcmVzXVxuICAgICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgICAoOmVycm9yIHJlcylcbiAgICAgICAgICAgICAgICAgKGNiIHJlcylcbiAgICAgICAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgICAgICAgW3Jlc1xuICAgICAgICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICAgICAgKCg6KmV2YWwtZm4qIGJvdW5kLXZhcnMpIHJlc291cmNlKVxuICAgICAgICAgICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgICAgICAgICAgY2FjaGVcbiAgICAgICAgICAgICAgICAgICAgIChsb2FkLWFuYWx5c2lzLWNhY2hlIVxuICAgICAgICAgICAgICAgICAgICAgICg6KmNvbXBpbGVyKiBib3VuZC12YXJzKVxuICAgICAgICAgICAgICAgICAgICAgIGFuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2FjaGUpXG4gICAgICAgICAgICAgICAgICAgICAoYW5hL3JlZ2lzdGVyLXNwZWNzIGNhY2hlKSlcbiAgICAgICAgICAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS1tYXBcbiAgICAgICAgICAgICAgICAgICAgIChsb2FkLXNvdXJjZS1tYXAhXG4gICAgICAgICAgICAgICAgICAgICAgKDoqY29tcGlsZXIqIGJvdW5kLXZhcnMpXG4gICAgICAgICAgICAgICAgICAgICAgYW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtbWFwKSlcbiAgICAgICAgICAgICAgICAgICAgKGNhdGNoXG4gICAgICAgICAgICAgICAgICAgICA6ZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgY2F1c2VcbiAgICAgICAgICAgICAgICAgICAgICh3cmFwLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFuYS9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgICAgICAgICAgKHN0ciBcIkNvdWxkIG5vdCByZXF1aXJlIFwiIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdXNlKSkpKV1cbiAgICAgICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgICAgICg6ZXJyb3IgcmVzKVxuICAgICAgICAgICAgICAgICAgIChjYiByZXMpXG4gICAgICAgICAgICAgICAgICAgKGRvXG4gICAgICAgICAgICAgICAgICAgIChzd2FwISAqbG9hZGVkKiBjb25qIGFuYW1lKVxuICAgICAgICAgICAgICAgICAgICAoY2Igezp2YWx1ZSB0cnVlfSkpKSkpKSkpKSlcbiAgICAgICAgICAgKGNiXG4gICAgICAgICAgICAod3JhcC1lcnJvclxuICAgICAgICAgICAgIChhbmEvZXJyb3JcbiAgICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAgIChzdHJcbiAgICAgICAgICAgICAgIFwiSW52YWxpZCA6bGFuZyBzcGVjaWZpZWQgXCJcbiAgICAgICAgICAgICAgIGxhbmdcbiAgICAgICAgICAgICAgIFwiLCBvbmx5IDpjbGogb3IgOmpzIGFsbG93ZWRcIikpKSkpKVxuICAgICAgICAgKGNiXG4gICAgICAgICAgKHdyYXAtZXJyb3JcbiAgICAgICAgICAgKGFuYS9lcnJvclxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAoYW5hL2Vycm9yLW1lc3NhZ2VcbiAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgKDptYWNyb3MtbnMgb3B0cylcbiAgICAgICAgICAgICAgOnVuZGVjbGFyZWQtbWFjcm9zLW5zXG4gICAgICAgICAgICAgIDp1bmRlY2xhcmVkLW5zKVxuICAgICAgICAgICAgIHs6bnMtc3ltIG5hbWUsIDpqcy1wcm92aWRlIChjbGpzLmNvcmUvbmFtZSBuYW1lKX0pKSkpKSkpXG4gICAgICAoY2F0Y2hcbiAgICAgICA6ZGVmYXVsdFxuICAgICAgIGNhdXNlXG4gICAgICAgKGNiXG4gICAgICAgICh3cmFwLWVycm9yXG4gICAgICAgICAoYW5hL2Vycm9yIGVudiAoc3RyIFwiQ291bGQgbm90IHJlcXVpcmUgXCIgbmFtZSkgY2F1c2UpKSkpKSlcbiAgICAoY2Igezp2YWx1ZSB0cnVlfSkpKSkpXG4ifSB7OnN5bSBmaWxlLT5ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmaWxlXSl9LCA6c291cmNlICIoZGVmblxuIGZpbGUtPm5zXG4gW2ZpbGVdXG4gKGxldFxuICBbbGliLW5hbWUgKHN1YnMgKHN0cmluZy9yZXBsYWNlIGZpbGUgXCIvXCIgXCIuXCIpIDAgKC0gKGNvdW50IGZpbGUpIDUpKV1cbiAgKHN5bWJvbCAoZGVtdW5nZSBsaWItbmFtZSkpKSlcbiJ9IHs6c3ltIGV2YWwtc3RyLCA6bWV0YSB7OmRvYyAiRXZhbHV0ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZSBnaXZlbiBhcyBhIHN0cmluZy4gVGhlIHBhcmFtZXRlcnM6XG5cbiAgc3RhdGUgKGF0b20pXG4gICAgdGhlIGNvbXBpbGVyIHN0YXRlXG5cbiAgc291cmNlIChzdHJpbmcpXG4gICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcbiAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSAtIHVzZWQgYXMga2V5IGluIDpzb3VyY2UtbWFwc1xuXG4gIG9wdHMgKG1hcClcbiAgICBjb21waWxhdGlvbiBvcHRpb25zLlxuXG4gICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXG4gICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxuICAgIDpjYWNoZS1zb3VyY2UgICAgIC0gb3B0aW9uYWwsIGEgZnVuY3Rpb24gdG8gcnVuIHNpZGUtZWZmZWN0cyB3aXRoIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gcmVzdWx0IHByaW9yIHRvIGFjdHVhbCBldmFsdXRpb24uIFRoaXMgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VzIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBpcyB0aGUgZXZhbCBtYXAsIHRoZSBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdW5kZXIgOnNvdXJjZS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmUgYXJndW1lbnQuIElmIGFuIGVycm9yIG9jY3VycyBhbiA6ZXJyb3Iga2V5IHNob3VsZCBiZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQuXG4gICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXG4gICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXG4gICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cbiAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cbiAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXG5cbiAgY2IgKGZ1bmN0aW9uKVxuICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2VzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXG4gICAgYSA6dmFsdWUga2V5IHdpdGggdGhlIHJlc3VsdCBvZiBldmFsdWF0aW9uIGFuZCA6bnMgdGhlIGN1cnJlbnQgbmFtZXNwYWNlLlxuICAgIElmIHVuc3VjY2Vzc2Z1bCB3aWxsIGNvbnRhaW4gYSA6ZXJyb3Iga2V5IHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nXG4gICAgdGhlIGNhdXNlIG9mIGZhaWx1cmUuIiwgOmFyZ2xpc3RzIFtbc3RhdGUgc291cmNlIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXV19LCA6c291cmNlICIoZGVmblxuIGV2YWwtc3RyXG4gXCJFdmFsdXRlIENsb2p1cmVTY3JpcHQgc291cmNlIGdpdmVuIGFzIGEgc3RyaW5nLiBUaGUgcGFyYW1ldGVyczpcXG5cXG4gIHN0YXRlIChhdG9tKVxcbiAgICB0aGUgY29tcGlsZXIgc3RhdGVcXG5cXG4gIHNvdXJjZSAoc3RyaW5nKVxcbiAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcXG5cXG4gIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXFxuICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlIC0gdXNlZCBhcyBrZXkgaW4gOnNvdXJjZS1tYXBzXFxuXFxuICBvcHRzIChtYXApXFxuICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXFxuXFxuICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcXG4gICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcXG4gICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxcbiAgICA6Y2FjaGUtc291cmNlICAgICAtIG9wdGlvbmFsLCBhIGZ1bmN0aW9uIHRvIHJ1biBzaWRlLWVmZmVjdHMgd2l0aCB0aGVcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxhdGlvbiByZXN1bHQgcHJpb3IgdG8gYWN0dWFsIGV2YWx1dGlvbi4gVGhpcyBmdW5jdGlvblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VzIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBpcyB0aGUgZXZhbCBtYXAsIHRoZSBzb3VyY2VcXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHVuZGVyIDpzb3VyY2UuIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYSBjYWxsYmFjayBvZlxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uZSBhcmd1bWVudC4gSWYgYW4gZXJyb3Igb2NjdXJzIGFuIDplcnJvciBrZXkgc2hvdWxkIGJlXFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQuXFxuICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XFxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXFxuICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcXG4gICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxcbiAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcXG4gICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxcbiAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXFxuICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxcbiAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcXG4gICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cXG5cXG4gIGNiIChmdW5jdGlvbilcXG4gICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgYSA6dmFsdWUga2V5IHdpdGggdGhlIHJlc3VsdCBvZiBldmFsdWF0aW9uIGFuZCA6bnMgdGhlIGN1cnJlbnQgbmFtZXNwYWNlLlxcbiAgICBJZiB1bnN1Y2Nlc3NmdWwgd2lsbCBjb250YWluIGEgOmVycm9yIGtleSB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZ1xcbiAgICB0aGUgY2F1c2Ugb2YgZmFpbHVyZS5cIlxuIChbc3RhdGUgc291cmNlIGNiXSAoZXZhbC1zdHIgc3RhdGUgc291cmNlIG5pbCBjYikpXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gKGV2YWwtc3RyIHN0YXRlIHNvdXJjZSBuYW1lIG5pbCBjYikpXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXVxuICB7OnByZVxuICAgWyhhdG9tPyBzdGF0ZSlcbiAgICAoc3RyaW5nPyBzb3VyY2UpXG4gICAgKHZhbGlkLW5hbWU/IG5hbWUpXG4gICAgKHZhbGlkLW9wdHM/IG9wdHMpXG4gICAgKGZuPyBjYildfVxuICAoZXZhbC1zdHIqXG4gICB7Oipjb21waWxlciogc3RhdGUsXG4gICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcbiAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcbiAgICA6KmNsanMtZGVwLXNldCogYW5hLypjbGpzLWRlcC1zZXQqLFxuICAgIDoqbG9hZC1tYWNyb3MqICg6bG9hZC1tYWNyb3Mgb3B0cyB0cnVlKSxcbiAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcbiAgICA6KmV2YWwtZm4qIChvciAoOmV2YWwgb3B0cykgKmV2YWwtZm4qKX1cbiAgIHNvdXJjZVxuICAgbmFtZVxuICAgb3B0c1xuICAgY2IpKSlcbiJ9IHs6c3ltIGpzLWV2YWwsIDptZXRhIHs6ZG9jICJBIGRlZmF1bHQgSmF2YVNjcmlwdCBldmFsdWF0aW9uIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW3s6a2V5cyBbc291cmNlXSwgOmFzIHJlc291cmNlfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1ldmFsXG4gXCJBIGRlZmF1bHQgSmF2YVNjcmlwdCBldmFsdWF0aW9uIGZ1bmN0aW9uLlwiXG4gW3s6a2V5cyBbc291cmNlXSwgOmFzIHJlc291cmNlfV1cbiAoanMvZXZhbCBzb3VyY2UpKVxuIn0gezpzeW0gbG9hZC1zb3VyY2UtbWFwISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBucyBzbS1qc29uXSl9LCA6c291cmNlICIoZGVmblxuIGxvYWQtc291cmNlLW1hcCFcbiBbc3RhdGUgbnMgc20tanNvbl1cbiAobGV0XG4gIFtzbSAoc20vZGVjb2RlICgucGFyc2UganMvSlNPTiBzbS1qc29uKSldXG4gIChzd2FwISBzdGF0ZSBhc3NvYy1pbiBbOnNvdXJjZS1tYXBzIG5zXSBzbSkpKVxuIn0gezpzeW0gbG9hZC1hbmFseXNpcy1jYWNoZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgbnMgY2FjaGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZC1hbmFseXNpcy1jYWNoZSFcbiBbc3RhdGUgbnMgY2FjaGVdXG4gKHN3YXAhIHN0YXRlIGFzc29jLWluIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zXSBjYWNoZSkpXG4ifSB7OnN5bSBhbmFseXplLXN0ciwgOm1ldGEgezpkb2MgIkFuYWx5emUgQ2xvanVyZVNjcmlwdCBzb3VyY2UuIFRoZSBjb21waWxlciBzdGF0ZSB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoXG4gICB0aGUgcmVzdWx0cyBvZiBhbmFseXplcy4gVGhlIHBhcmFtZXRlcnM6XG5cbiAgIHN0YXRlIChhdG9tKVxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcblxuICAgc291cmNlIChzdHJpbmcpXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxuXG4gICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxuICAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZVxuXG4gICBvcHRzIChtYXApXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXG5cbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxuICAgICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxuICAgICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxuXG4gICBjYiAoZnVuY3Rpb24pXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgICBhIGtleSA6dmFsdWUsIHRoZSBhY3R1YWwgdmFsdWUgaXMgbm90IG1lYW5pbmdmdWwuIElmIHVuc3VjY2Vzc2Z1bCB0aGVcbiAgICAgbWFwIHdpbGwgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlXG4gICAgIG9mIGZhaWx1cmUuIiwgOmFyZ2xpc3RzIFtbc3RhdGUgc291cmNlIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXV19LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtc3RyXG4gXCJBbmFseXplIENsb2p1cmVTY3JpcHQgc291cmNlLiBUaGUgY29tcGlsZXIgc3RhdGUgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aFxcbiAgIHRoZSByZXN1bHRzIG9mIGFuYWx5emVzLiBUaGUgcGFyYW1ldGVyczpcXG5cXG4gICBzdGF0ZSAoYXRvbSlcXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxcblxcbiAgIHNvdXJjZSAoc3RyaW5nKVxcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXFxuXFxuICAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcXG4gICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlXFxuXFxuICAgb3B0cyAobWFwKVxcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cXG5cXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXFxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXFxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXFxuICAgICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxcbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXFxuICAgICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXFxuXFxuICAgY2IgKGZ1bmN0aW9uKVxcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXFxuICAgICBhIGtleSA6dmFsdWUsIHRoZSBhY3R1YWwgdmFsdWUgaXMgbm90IG1lYW5pbmdmdWwuIElmIHVuc3VjY2Vzc2Z1bCB0aGVcXG4gICAgIG1hcCB3aWxsIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZVxcbiAgICAgb2YgZmFpbHVyZS5cIlxuIChbc3RhdGUgc291cmNlIGNiXSAoYW5hbHl6ZS1zdHIgc3RhdGUgc291cmNlIG5pbCBjYikpXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gKGFuYWx5emUtc3RyIHN0YXRlIHNvdXJjZSBuYW1lIG5pbCBjYikpXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXVxuICB7OnByZVxuICAgWyhhdG9tPyBzdGF0ZSlcbiAgICAoc3RyaW5nPyBzb3VyY2UpXG4gICAgKHZhbGlkLW5hbWU/IG5hbWUpXG4gICAgKHZhbGlkLW9wdHM/IG9wdHMpXG4gICAgKGZuPyBjYildfVxuICAoYW5hbHl6ZS1zdHIqXG4gICB7Oipjb21waWxlciogc3RhdGUsXG4gICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcbiAgICA6KnBhc3NlcyogKG9yICg6cGFzc2VzIG9wdHMpIGFuYS8qcGFzc2VzKiksXG4gICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXG4gICAgOipjbGpzLWRlcC1zZXQqIGFuYS8qY2xqcy1kZXAtc2V0KixcbiAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXG4gICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXG4gICAgOipldmFsLWZuKiAob3IgKDpldmFsIG9wdHMpICpldmFsLWZuKil9XG4gICBzb3VyY2VcbiAgIG5hbWVcbiAgIG9wdHNcbiAgIGNiKSkpXG4ifSB7OnN5bSAqZXZhbC1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgdmFyaW91cyB3YXlzIHRvIGV2YWwgSmF2YVNjcmlwdFxuICBzb3VyY2UuIFdoYXRldmVyIGZ1bmN0aW9uICpldmFsLWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhIG1hcFxuICBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcga2V5czpcblxuICA6c291cmNlIC0gdGhlIHNvdXJjZSBvZiB0aGUgbGlicmFyeSAoc3RyaW5nKVxuICA6bmFtZSAgIC0gdXNlZCB0byB1bmlxdWUgaWRlbnRpZnkgdGhlIHNjcmlwdCAoc3ltYm9sKVxuICA6Y2FjaGUgIC0gaWYgdGhlIHNvdXJjZSB3YXMgb3JpZ2luYWxseSBDbG9qdXJlU2NyaXB0LCB3aWxsIGJlIGdpdmVuIHRoZVxuICAgICAgICAgICAgYW5hbHlzaXMgY2FjaGUuXG5cbiAgVGhlIHJlc3VsdCBvZiBldmFsdWF0aW9uIHNob3VsZCBiZSB0aGUgcmV0dXJuIHZhbHVlLiJ9LCA6c291cmNlICIoZGVmb25jZSAqZXZhbC1mbiogKGZuIFttXSAodGhyb3cgKGpzL0Vycm9yLiBcIk5vICpldmFsLWZuKiBzZXRcIikpKSlcbiJ9KSwgcnVtLmNvcmUgKHs6c3ltIG1vdW50LCA6bWV0YSB7OmRvYyAiQWRkIGVsZW1lbnQgdG8gdGhlIERPTSB0cmVlLiBJZGVtcG90ZW50LiBTdWJzZXF1ZW50IG1vdW50cyB3aWxsIGp1c3QgdXBkYXRlIGVsZW1lbnQuIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBub2RlXSl9LCA6c291cmNlICIoZGVmblxuIG1vdW50XG4gXCJBZGQgZWxlbWVudCB0byB0aGUgRE9NIHRyZWUuIElkZW1wb3RlbnQuIFN1YnNlcXVlbnQgbW91bnRzIHdpbGwganVzdCB1cGRhdGUgZWxlbWVudC5cIlxuIFtlbGVtZW50IG5vZGVdXG4gKGpzL1JlYWN0RE9NLnJlbmRlciBlbGVtZW50IG5vZGUpXG4gbmlsKVxuIn0gezpzeW0gdW5tb3VudCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgY29tcG9uZW50IGZyb20gdGhlIERPTSB0cmVlLiIsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5tb3VudFxuIFwiUmVtb3ZlcyBjb21wb25lbnQgZnJvbSB0aGUgRE9NIHRyZWUuXCJcbiBbbm9kZV1cbiAoanMvUmVhY3RET00udW5tb3VudENvbXBvbmVudEF0Tm9kZSBub2RlKSlcbiJ9IHs6c3ltIGxvY2FsLCA6bWV0YSB7OmRvYyAiTWl4aW4gY29uc3RydWN0b3IuIEFkZHMgYW4gYXRvbSB0byBjb21wb25lbnTigJlzIHN0YXRlIHRoYXQgY2FuIGJlIHVzZWQgdG8ga2VlcCBzdHVmZiBkdXJpbmcgY29tcG9uZW504oCZcyBsaWZlY3ljbGUuIENvbXBvbmVudCB3aWxsIGJlIHJlLXJlbmRlcmVkIGlmIGF0b23igJlzIHZhbHVlIGNoYW5nZXMuIEF0b20gaXMgc3RvcmVkIHVuZGVyIHVzZXItcHJvdmlkZWQga2V5IG9yIHVuZGVyIGA6cnVtL2xvY2FsYCBieSBkZWZhdWx0LlxuICBcbiAgIGBgYFxuICAgKHJ1bS9kZWZjcyBjb3VudGVyIDwgKHJ1bS9sb2NhbCAwIDpjbnQpXG4gICAgIFtzdGF0ZSBsYWJlbF1cbiAgICAgKGxldCBbKmNudCAoOmNudCBzdGF0ZSldXG4gICAgICAgWzpkaXYgezpvbi1jbGljayAoZm4gW19dIChzd2FwISAqY250IGluYykpfVxuICAgICAgICAgbGFiZWwgQCpjbnRdKSlcbiAgIFxuICAgKHJ1bS9tb3VudCAoY291bnRlciBcIkNsaWNrIGNvdW50OiBcIikpXG4gICBgYGAiLCA6YXJnbGlzdHMgW1tpbml0aWFsXSBbaW5pdGlhbCBrZXldXX0sIDpzb3VyY2UgIihkZWZuXG4gbG9jYWxcbiBcIk1peGluIGNvbnN0cnVjdG9yLiBBZGRzIGFuIGF0b20gdG8gY29tcG9uZW504oCZcyBzdGF0ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGtlZXAgc3R1ZmYgZHVyaW5nIGNvbXBvbmVudOKAmXMgbGlmZWN5Y2xlLiBDb21wb25lbnQgd2lsbCBiZSByZS1yZW5kZXJlZCBpZiBhdG9t4oCZcyB2YWx1ZSBjaGFuZ2VzLiBBdG9tIGlzIHN0b3JlZCB1bmRlciB1c2VyLXByb3ZpZGVkIGtleSBvciB1bmRlciBgOnJ1bS9sb2NhbGAgYnkgZGVmYXVsdC5cXG4gIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmY3MgY291bnRlciA8IChydW0vbG9jYWwgMCA6Y250KVxcbiAgICAgW3N0YXRlIGxhYmVsXVxcbiAgICAgKGxldCBbKmNudCAoOmNudCBzdGF0ZSldXFxuICAgICAgIFs6ZGl2IHs6b24tY2xpY2sgKGZuIFtfXSAoc3dhcCEgKmNudCBpbmMpKX1cXG4gICAgICAgICBsYWJlbCBAKmNudF0pKVxcbiAgIFxcbiAgIChydW0vbW91bnQgKGNvdW50ZXIgXFxcIkNsaWNrIGNvdW50OiBcXFwiKSlcXG4gICBgYGBcIlxuIChbaW5pdGlhbF0gKGxvY2FsIGluaXRpYWwgOnJ1bS9sb2NhbCkpXG4gKFtpbml0aWFsIGtleV1cbiAgezp3aWxsLW1vdW50XG4gICAoZm5cbiAgICBbc3RhdGVdXG4gICAgKGxldFxuICAgICBbbG9jYWwtc3RhdGVcbiAgICAgIChhdG9tIGluaXRpYWwpXG4gICAgICBjb21wb25lbnRcbiAgICAgICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSldXG4gICAgIChhZGQtd2F0Y2hcbiAgICAgIGxvY2FsLXN0YXRlXG4gICAgICBrZXlcbiAgICAgIChmbiBbXyBfIF8gX10gKHJlcXVlc3QtcmVuZGVyIGNvbXBvbmVudCkpKVxuICAgICAoYXNzb2Mgc3RhdGUga2V5IGxvY2FsLXN0YXRlKSkpfSkpXG4ifSB7OnN5bSByZWFjdGl2ZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiByZWFjdGl2ZVxuIFwiTWl4aW4uIFdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggW1tyZWFjdF1dLlxcbiAgXFxuICAgYGBgXFxuICAgKHJ1bS9kZWZjIGNvbXAgPCBydW0vcmVhY3RpdmVcXG4gICAgIFsqY291bnRlcl1cXG4gICAgIFs6ZGl2IChydW0vcmVhY3QgY291bnRlcildKVxcblxcbiAgIChkZWYgKmNvdW50ZXIgKGF0b20gMCkpXFxuICAgKHJ1bS9tb3VudCAoY29tcCAqY291bnRlcikganMvZG9jdW1lbnQuYm9keSlcXG4gICAoc3dhcCEgKmNvdW50ZXIgaW5jKSA7OyB3aWxsIGZvcmNlIGNvbXAgdG8gcmUtcmVuZGVyXFxuICAgYGBgXCJcbiB7OmluaXRcbiAgKGZuIFtzdGF0ZSBwcm9wc10gKGFzc29jIHN0YXRlIDpydW0ucmVhY3RpdmUva2V5IChyYW5kb20tdXVpZCkpKSxcbiAgOndyYXAtcmVuZGVyXG4gIChmblxuICAgW3JlbmRlci1mbl1cbiAgIChmblxuICAgIFtzdGF0ZV1cbiAgICAoYmluZGluZ1xuICAgICBbKnJlYWN0aW9ucyogKHZvbGF0aWxlISAje30pXVxuICAgICAobGV0XG4gICAgICBbY29tcFxuICAgICAgICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSlcbiAgICAgICBvbGQtcmVhY3Rpb25zXG4gICAgICAgKDpydW0ucmVhY3RpdmUvcmVmcyBzdGF0ZSAje30pXG4gICAgICAgW2RvbSBuZXh0LXN0YXRlXVxuICAgICAgIChyZW5kZXItZm4gc3RhdGUpXG4gICAgICAgbmV3LXJlYWN0aW9uc1xuICAgICAgIEAqcmVhY3Rpb25zKlxuICAgICAgIGtleVxuICAgICAgICg6cnVtLnJlYWN0aXZlL2tleSBzdGF0ZSldXG4gICAgICAoZG9zZXFcbiAgICAgICBbcmVmIG9sZC1yZWFjdGlvbnNdXG4gICAgICAgKHdoZW4tbm90IChjb250YWlucz8gbmV3LXJlYWN0aW9ucyByZWYpIChyZW1vdmUtd2F0Y2ggcmVmIGtleSkpKVxuICAgICAgKGRvc2VxXG4gICAgICAgW3JlZiBuZXctcmVhY3Rpb25zXVxuICAgICAgICh3aGVuLW5vdFxuICAgICAgICAoY29udGFpbnM/IG9sZC1yZWFjdGlvbnMgcmVmKVxuICAgICAgICAoYWRkLXdhdGNoIHJlZiBrZXkgKGZuIFtfIF8gXyBfXSAocmVxdWVzdC1yZW5kZXIgY29tcCkpKSkpXG4gICAgICBbZG9tIChhc3NvYyBuZXh0LXN0YXRlIDpydW0ucmVhY3RpdmUvcmVmcyBuZXctcmVhY3Rpb25zKV0pKSkpLFxuICA6d2lsbC11bm1vdW50XG4gIChmblxuICAgW3N0YXRlXVxuICAgKGxldFxuICAgIFtrZXkgKDpydW0ucmVhY3RpdmUva2V5IHN0YXRlKV1cbiAgICAoZG9zZXEgW3JlZiAoOnJ1bS5yZWFjdGl2ZS9yZWZzIHN0YXRlKV0gKHJlbW92ZS13YXRjaCByZWYga2V5KSkpXG4gICAoZGlzc29jIHN0YXRlIDpydW0ucmVhY3RpdmUvcmVmcyA6cnVtLnJlYWN0aXZlL2tleSkpfSlcbiJ9IHs6c3ltIHJlZi1ub2RlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gc3RhdGUgYW5kIHJlZiBoYW5kbGUsIHJldHVybnMgRE9NIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHJlZi4iLCA6YXJnbGlzdHMgKFtzdGF0ZSBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmLW5vZGVcbiBcIkdpdmVuIHN0YXRlIGFuZCByZWYgaGFuZGxlLCByZXR1cm5zIERPTSBub2RlIGFzc29jaWF0ZWQgd2l0aCByZWYuXCJcbiBbc3RhdGUga2V5XVxuIChqcy9SZWFjdERPTS5maW5kRE9NTm9kZSAocmVmIHN0YXRlIChuYW1lIGtleSkpKSlcbiJ9IHs6c3ltIHJlYWN0LCA6bWV0YSB7OmRvYyAiV29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCBbW3JlYWN0aXZlXV0gbWl4aW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYGRlcmVmYCBpbnNpZGUgcmVuZGVyLCBhbmQgeW91ciBjb21wb25lbnQgd2lsbCBzdWJzY3JpYmUgdG8gY2hhbmdlcyBoYXBwZW5pbmcgdG8gdGhlIGRlcmVmZWQgYXRvbS4iLCA6YXJnbGlzdHMgKFtyZWZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhY3RcbiBcIldvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggW1tyZWFjdGl2ZV1dIG1peGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGBkZXJlZmAgaW5zaWRlIHJlbmRlciwgYW5kIHlvdXIgY29tcG9uZW50IHdpbGwgc3Vic2NyaWJlIHRvIGNoYW5nZXMgaGFwcGVuaW5nIHRvIHRoZSBkZXJlZmVkIGF0b20uXCJcbiBbcmVmXVxuIChhc3NlcnRcbiAgKnJlYWN0aW9ucypcbiAgXCJydW0uY29yZS9yZWFjdCBpcyBvbmx5IHN1cHBvcnRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHJ1bS5jb3JlL3JlYWN0aXZlXCIpXG4gKHZzd2FwISAqcmVhY3Rpb25zKiBjb25qIHJlZilcbiBAcmVmKVxuIn0gezpzeW0gcmVxdWVzdC1yZW5kZXIsIDptZXRhIHs6ZG9jICJTY2hlZHVsZXMgcmVhY3QgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkIG9uIG5leHQgYW5pbWF0aW9uIGZyYW1lLiIsIDphcmdsaXN0cyAoW2NvbXBvbmVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXF1ZXN0LXJlbmRlclxuIFwiU2NoZWR1bGVzIHJlYWN0IGNvbXBvbmVudCB0byBiZSByZW5kZXJlZCBvbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS5cIlxuIFtjb21wb25lbnRdXG4gKHdoZW4gKGVtcHR5PyBAcmVuZGVyLXF1ZXVlKSAoc2NoZWR1bGUgcmVuZGVyKSlcbiAodnN3YXAhIHJlbmRlci1xdWV1ZSBjb25qIGNvbXBvbmVudCkpXG4ifSB7OnN5bSBwb3J0YWwsIDptZXRhIHs6ZG9jICJSZW5kZXIgYGVsZW1lbnRgIGluIGEgRE9NIGBub2RlYCB0aGF0IGlzIG91c2lkZSBvZiBjdXJyZW50IERPTSBoaWVyYXJjaHkuIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBub2RlXSl9LCA6c291cmNlICIoZGVmblxuIHBvcnRhbFxuIFwiUmVuZGVyIGBlbGVtZW50YCBpbiBhIERPTSBgbm9kZWAgdGhhdCBpcyBvdXNpZGUgb2YgY3VycmVudCBET00gaGllcmFyY2h5LlwiXG4gW2VsZW1lbnQgbm9kZV1cbiAoanMvUmVhY3RET00uY3JlYXRlUG9ydGFsIGVsZW1lbnQgbm9kZSkpXG4ifSB7OnN5bSB3aXRoLWtleSwgOm1ldGEgezpkb2MgIkFkZHMgUmVhY3Qga2V5IHRvIGVsZW1lbnQuXG4gICBcbiAgIGBgYFxuICAgKHJ1bS9kZWZjIGxhYmVsIFt0ZXh0XSBbOmRpdiB0ZXh0XSlcblxuICAgKC0+IChsYWJlbClcbiAgICAgICAocnVtL3dpdGgta2V5IFwiYWJjXCIpXG4gICAgICAgKHJ1bS9tb3VudCBqcy9kb2N1bWVudC5ib2R5KSlcbiAgIGBgYCIsIDphcmdsaXN0cyAoW2VsZW1lbnQga2V5XSl9LCA6c291cmNlICIoZGVmblxuIHdpdGgta2V5XG4gXCJBZGRzIFJlYWN0IGtleSB0byBlbGVtZW50LlxcbiAgIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBsYWJlbCBbdGV4dF0gWzpkaXYgdGV4dF0pXFxuXFxuICAgKC0+IChsYWJlbClcXG4gICAgICAgKHJ1bS93aXRoLWtleSBcXFwiYWJjXFxcIilcXG4gICAgICAgKHJ1bS9tb3VudCBqcy9kb2N1bWVudC5ib2R5KSlcXG4gICBgYGBcIlxuIFtlbGVtZW50IGtleV1cbiAoanMvUmVhY3QuY2xvbmVFbGVtZW50IGVsZW1lbnQgI2pzIHtcImtleVwiIGtleX0gbmlsKSlcbiJ9IHs6c3ltIGJ1aWxkLWRlZmNzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVpbGQtZGVmY3NcbiBbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV1cbiAobGV0XG4gIFtyZW5kZXJcbiAgIChmbiBbc3RhdGVdIFsoYXBwbHkgcmVuZGVyLWJvZHkgc3RhdGUgKDpydW0vYXJncyBzdGF0ZSkpIHN0YXRlXSldXG4gIChidWlsZC1jdG9yIHJlbmRlciBtaXhpbnMgZGlzcGxheS1uYW1lKSkpXG4ifSB7OnN5bSByZWYsIDptZXRhIHs6ZG9jICJHaXZlbiBzdGF0ZSBhbmQgcmVmIGhhbmRsZSwgcmV0dXJucyBSZWFjdCBjb21wb25lbnQuIiwgOmFyZ2xpc3RzIChbc3RhdGUga2V5XSl9LCA6c291cmNlICIoZGVmblxuIHJlZlxuIFwiR2l2ZW4gc3RhdGUgYW5kIHJlZiBoYW5kbGUsIHJldHVybnMgUmVhY3QgY29tcG9uZW50LlwiXG4gW3N0YXRlIGtleV1cbiAoLT4gc3RhdGUgOnJ1bS9yZWFjdC1jb21wb25lbnQgKGFnZXQgXCJyZWZzXCIpIChhZ2V0IChuYW1lIGtleSkpKSlcbiJ9IHs6c3ltIHN0YXRpYywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzdGF0aWNcbiBcIk1peGluLiBXaWxsIGF2b2lkIHJlLXJlbmRlciBpZiBub25lIG9mIGNvbXBvbmVudOKAmXMgYXJndW1lbnRzIGhhdmUgY2hhbmdlZC4gRG9lcyBlcXVhbGl0eSBjaGVjayAoYD1gKSBvbiBhbGwgYXJndW1lbnRzLlxcbiAgXFxuICAgYGBgXFxuICAgKHJ1bS9kZWZjIGxhYmVsIDwgcnVtL3N0YXRpY1xcbiAgICAgW3RleHRdXFxuICAgICBbOmRpdiB0ZXh0XSlcXG4gICAgIFxcbiAgIChydW0vbW91bnQgKGxhYmVsIFxcXCJhYmNcXFwiKSBqcy9kb2N1bWVudC5ib2R5KVxcblxcbiAgIDs7IGRlZiAhPSBhYmMsIHdpbGwgcmUtcmVuZGVyXFxuICAgKHJ1bS9tb3VudCAobGFiZWwgXFxcImRlZlxcXCIpIGpzL2RvY3VtZW50LmJvZHkpXFxuXFxuICAgOzsgZGVmID09IGRlZiwgd29u4oCZdCByZS1yZW5kZXJcXG4gICAocnVtL21vdW50IChsYWJlbCBcXFwiZGVmXFxcIikganMvZG9jdW1lbnQuYm9keSlcXG4gICBgYGBcIlxuIHs6c2hvdWxkLXVwZGF0ZVxuICAoZm5cbiAgIFtvbGQtc3RhdGUgbmV3LXN0YXRlXVxuICAgKG5vdD0gKDpydW0vYXJncyBvbGQtc3RhdGUpICg6cnVtL2FyZ3MgbmV3LXN0YXRlKSkpfSlcbiJ9IHs6c3ltIGN1cnNvciwgOm1ldGEgezpkb2MgIlNhbWUgYXMgW1tjdXJzb3ItaW5dXSBidXQgYWNjZXB0cyBzaW5nbGUga2V5IGluc3RlYWQgb2YgcGF0aCB2ZWN0b3IuIiwgOmFyZ2xpc3RzIChbcmVmIGtleSAmIG9wdGlvbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3Vyc29yXG4gXCJTYW1lIGFzIFtbY3Vyc29yLWluXV0gYnV0IGFjY2VwdHMgc2luZ2xlIGtleSBpbnN0ZWFkIG9mIHBhdGggdmVjdG9yLlwiXG4gW3JlZiBrZXkgJiBvcHRpb25zXVxuIChhcHBseSBjdXJzb3ItaW4gcmVmIFtrZXldIG9wdGlvbnMpKVxuIn0gezpzeW0gc3RhdGUsIDptZXRhIHs6ZG9jICJHaXZlbiBSZWFjdCBjb21wb25lbnQsIHJldHVybnMgUnVtIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBpdC4iLCA6YXJnbGlzdHMgKFtjb21wXSl9LCA6c291cmNlICIoZGVmblxuIHN0YXRlXG4gXCJHaXZlbiBSZWFjdCBjb21wb25lbnQsIHJldHVybnMgUnVtIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBpdC5cIlxuIFtjb21wXVxuIChnb2JqL2dldCAoLi1zdGF0ZSBjb21wKSBcIjpydW0vc3RhdGVcIikpXG4ifSB7OnN5bSBjdXJzb3ItaW4sIDptZXRhIHs6ZG9jICJHaXZlbiBhdG9tIHdpdGggZGVlcCBuZXN0ZWQgdmFsdWUgYW5kIHBhdGggaW5zaWRlIGl0LCBjcmVhdGVzIGFuIGF0b20tbGlrZSBzdHJ1Y3R1cmVcbiAgIHRoYXQgY2FuIGJlIHVzZWQgc2VwYXJhdGVseSBmcm9tIG1haW4gYXRvbSwgYnV0IHdpbGwgc3luYyBjaGFuZ2VzIGJvdGggd2F5czpcbiAgXG4gICBgYGBcbiAgIChkZWYgZGIgKGF0b20geyA6dXNlcnMgeyBcIkl2YW5cIiB7IDphZ2UgMzAgfX19KSlcbiAgIFxuICAgKGRlZiBpdmFuIChydW0vY3Vyc29yIGRiIFs6dXNlcnMgXCJJdmFuXCJdKSlcbiAgIChkZXJlZiBpdmFuKSA7OyA9PiB7IDphZ2UgMzAgfVxuICAgXG4gICAoc3dhcCEgaXZhbiB1cGRhdGUgOmFnZSBpbmMpIDs7ID0+IHsgOmFnZSAzMSB9XG4gICAoZGVyZWYgZGIpIDs7ID0+IHsgOnVzZXJzIHsgXCJJdmFuXCIgeyA6YWdlIDMxIH19fVxuICAgXG4gICAoc3dhcCEgZGIgdXBkYXRlLWluIFs6dXNlcnMgXCJJdmFuXCIgOmFnZV0gaW5jKVxuICAgOzsgPT4geyA6dXNlcnMgeyBcIkl2YW5cIiB7IDphZ2UgMzIgfX19XG4gICBcbiAgIChkZXJlZiBpdmFuKSA7OyA9PiB7IDphZ2UgMzIgfVxuICAgYGBgXG4gIFxuICAgUmV0dXJuZWQgdmFsdWUgc3VwcG9ydHMgYGRlcmVmYCwgYHN3YXAhYCwgYHJlc2V0IWAsIHdhdGNoZXMgYW5kIG1ldGFkYXRhLlxuICBcbiAgIFRoZSBvbmx5IHN1cHBvcnRlZCBvcHRpb24gaXMgYDptZXRhYCIsIDphcmdsaXN0cyAoW3JlZiBwYXRoICYgezphcyBvcHRpb25zfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjdXJzb3ItaW5cbiBcIkdpdmVuIGF0b20gd2l0aCBkZWVwIG5lc3RlZCB2YWx1ZSBhbmQgcGF0aCBpbnNpZGUgaXQsIGNyZWF0ZXMgYW4gYXRvbS1saWtlIHN0cnVjdHVyZVxcbiAgIHRoYXQgY2FuIGJlIHVzZWQgc2VwYXJhdGVseSBmcm9tIG1haW4gYXRvbSwgYnV0IHdpbGwgc3luYyBjaGFuZ2VzIGJvdGggd2F5czpcXG4gIFxcbiAgIGBgYFxcbiAgIChkZWYgZGIgKGF0b20geyA6dXNlcnMgeyBcXFwiSXZhblxcXCIgeyA6YWdlIDMwIH19fSkpXFxuICAgXFxuICAgKGRlZiBpdmFuIChydW0vY3Vyc29yIGRiIFs6dXNlcnMgXFxcIkl2YW5cXFwiXSkpXFxuICAgKGRlcmVmIGl2YW4pIDs7ID0+IHsgOmFnZSAzMCB9XFxuICAgXFxuICAgKHN3YXAhIGl2YW4gdXBkYXRlIDphZ2UgaW5jKSA7OyA9PiB7IDphZ2UgMzEgfVxcbiAgIChkZXJlZiBkYikgOzsgPT4geyA6dXNlcnMgeyBcXFwiSXZhblxcXCIgeyA6YWdlIDMxIH19fVxcbiAgIFxcbiAgIChzd2FwISBkYiB1cGRhdGUtaW4gWzp1c2VycyBcXFwiSXZhblxcXCIgOmFnZV0gaW5jKVxcbiAgIDs7ID0+IHsgOnVzZXJzIHsgXFxcIkl2YW5cXFwiIHsgOmFnZSAzMiB9fX1cXG4gICBcXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMyIH1cXG4gICBgYGBcXG4gIFxcbiAgIFJldHVybmVkIHZhbHVlIHN1cHBvcnRzIGBkZXJlZmAsIGBzd2FwIWAsIGByZXNldCFgLCB3YXRjaGVzIGFuZCBtZXRhZGF0YS5cXG4gIFxcbiAgIFRoZSBvbmx5IHN1cHBvcnRlZCBvcHRpb24gaXMgYDptZXRhYFwiXG4gW3JlZiBwYXRoICYgezphcyBvcHRpb25zfV1cbiAoaWZcbiAgKGluc3RhbmNlPyBjdXJzb3IvQ3Vyc29yIHJlZilcbiAgKGN1cnNvci9DdXJzb3IuICguLXJlZiByZWYpIChpbnRvICguLXBhdGggcmVmKSBwYXRoKSAoOm1ldGEgb3B0aW9ucykpXG4gIChjdXJzb3IvQ3Vyc29yLiByZWYgcGF0aCAoOm1ldGEgb3B0aW9ucykpKSlcbiJ9IHs6c3ltIGRvbS1ub2RlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gc3RhdGUsIHJldHVybnMgdG9wLWxldmVsIERPTSBub2RlIG9mIGNvbXBvbmVudC4gQ2FsbCBpdCBkdXJpbmcgbGlmZWN5Y2xlIGNhbGxiYWNrcy4gQ2Fu4oCZdCBiZSBjYWxsZWQgZHVyaW5nIHJlbmRlci4iLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkb20tbm9kZVxuIFwiR2l2ZW4gc3RhdGUsIHJldHVybnMgdG9wLWxldmVsIERPTSBub2RlIG9mIGNvbXBvbmVudC4gQ2FsbCBpdCBkdXJpbmcgbGlmZWN5Y2xlIGNhbGxiYWNrcy4gQ2Fu4oCZdCBiZSBjYWxsZWQgZHVyaW5nIHJlbmRlci5cIlxuIFtzdGF0ZV1cbiAoanMvUmVhY3RET00uZmluZERPTU5vZGUgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKSkpXG4ifSB7OnN5bSB3aXRoLXJlZiwgOm1ldGEgezpkb2MgIkFkZHMgUmVhY3QgcmVmIChzdHJpbmcgb3IgY2FsbGJhY2spIHRvIGVsZW1lbnQuXG4gICBcbiAgIGBgYFxuICAgKHJ1bS9kZWZjIGxhYmVsIFt0ZXh0XSBbOmRpdiB0ZXh0XSlcblxuICAgKC0+IChsYWJlbClcbiAgICAgICAocnVtL3dpdGgtcmVmIFwiYWJjXCIpXG4gICAgICAgKHJ1bS9tb3VudCBqcy9kb2N1bWVudC5ib2R5KSlcbiAgIGBgYCIsIDphcmdsaXN0cyAoW2VsZW1lbnQgcmVmXSl9LCA6c291cmNlICIoZGVmblxuIHdpdGgtcmVmXG4gXCJBZGRzIFJlYWN0IHJlZiAoc3RyaW5nIG9yIGNhbGxiYWNrKSB0byBlbGVtZW50LlxcbiAgIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBsYWJlbCBbdGV4dF0gWzpkaXYgdGV4dF0pXFxuXFxuICAgKC0+IChsYWJlbClcXG4gICAgICAgKHJ1bS93aXRoLXJlZiBcXFwiYWJjXFxcIilcXG4gICAgICAgKHJ1bS9tb3VudCBqcy9kb2N1bWVudC5ib2R5KSlcXG4gICBgYGBcIlxuIFtlbGVtZW50IHJlZl1cbiAoanMvUmVhY3QuY2xvbmVFbGVtZW50IGVsZW1lbnQgI2pzIHtcInJlZlwiIHJlZn0gbmlsKSlcbiJ9IHs6c3ltIGJ1aWxkLWRlZmMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBidWlsZC1kZWZjXG4gW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdXG4gKGlmXG4gIChlbXB0eT8gbWl4aW5zKVxuICAobGV0XG4gICBbY2xhc3NcbiAgICAoZm4gW3Byb3BzXSAoYXBwbHkgcmVuZGVyLWJvZHkgKGFnZXQgcHJvcHMgXCI6cnVtL2FyZ3NcIikpKVxuICAgIF9cbiAgICAoYXNldCBjbGFzcyBcImRpc3BsYXlOYW1lXCIgZGlzcGxheS1uYW1lKVxuICAgIGN0b3JcbiAgICAoZm5cbiAgICAgWyYgYXJnc11cbiAgICAgKGpzL1JlYWN0LmNyZWF0ZUVsZW1lbnQgY2xhc3MgI2pzIHtcIjpydW0vYXJnc1wiIGFyZ3N9KSldXG4gICAod2l0aC1tZXRhIGN0b3IgezpydW0vY2xhc3MgY2xhc3N9KSlcbiAgKGxldFxuICAgW3JlbmRlciAoZm4gW3N0YXRlXSBbKGFwcGx5IHJlbmRlci1ib2R5ICg6cnVtL2FyZ3Mgc3RhdGUpKSBzdGF0ZV0pXVxuICAgKGJ1aWxkLWN0b3IgcmVuZGVyIG1peGlucyBkaXNwbGF5LW5hbWUpKSkpXG4ifSB7OnN5bSBoeWRyYXRlLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBbW21vdW50XV0gYnV0IG11c3QgYmUgY2FsbGVkIG9uIERPTSB0cmVlIGFscmVhZHkgcmVuZGVyZWQgYnkgYSBzZXJ2ZXIgdmlhIFtbcmVuZGVyLWh0bWxdXS4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IG5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaHlkcmF0ZVxuIFwiU2FtZSBhcyBbW21vdW50XV0gYnV0IG11c3QgYmUgY2FsbGVkIG9uIERPTSB0cmVlIGFscmVhZHkgcmVuZGVyZWQgYnkgYSBzZXJ2ZXIgdmlhIFtbcmVuZGVyLWh0bWxdXS5cIlxuIFtlbGVtZW50IG5vZGVdXG4gKGpzL1JlYWN0RE9NLmh5ZHJhdGUgZWxlbWVudCBub2RlKSlcbiJ9IHs6c3ltIGJ1aWxkLWRlZmNjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVpbGQtZGVmY2NcbiBbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV1cbiAobGV0XG4gIFtyZW5kZXJcbiAgIChmblxuICAgIFtzdGF0ZV1cbiAgICBbKGFwcGx5IHJlbmRlci1ib2R5ICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSkgKDpydW0vYXJncyBzdGF0ZSkpXG4gICAgIHN0YXRlXSldXG4gIChidWlsZC1jdG9yIHJlbmRlciBtaXhpbnMgZGlzcGxheS1uYW1lKSkpXG4ifSB7OnN5bSBkZXJpdmVkLWF0b20sIDptZXRhIHs6YXJnbGlzdHMgKHF1b3RlIChbcmVmcyBrZXkgZl0gW3JlZnMga2V5IGYgb3B0c10pKSwgOmRvYyAiVXNlIHRoaXMgdG8gY3JlYXRlIOKAnGNoYWluc+KAnSBhbmQgYWN5Y2xpYyBncmFwaHMgb2YgZGVwZW5kZW50IGF0b21zLlxuICAgXG4gICAgICAgICAgICAgW1tkZXJpdmVkLWF0b21dXSB3aWxsOlxuICAgICAgICAgIFxuICAgICAgICAgICAgIC0gVGFrZSBOIOKAnHNvdXJjZeKAnSByZWZzLlxuICAgICAgICAgICAgIC0gU2V0IHVwIGEgd2F0Y2ggb24gZWFjaCBvZiB0aGVtLlxuICAgICAgICAgICAgIC0gQ3JlYXRlIOKAnHNpbmvigJ0gYXRvbS5cbiAgICAgICAgICAgICAtIFdoZW4gYW55IG9mIHNvdXJjZSByZWZzIGNoYW5nZXM6XG4gICAgICAgICAgICAgICAgLSByZS1ydW4gZnVuY3Rpb24gYGZgLCBwYXNzaW5nIE4gZGVyZWZlcmVuY2VkIHZhbHVlcyBvZiBzb3VyY2UgcmVmcy5cbiAgICAgICAgICAgICAgICAtIGByZXNldCFgIHJlc3VsdCBvZiBgZmAgdG8gdGhlIHNpbmsgYXRvbS5cbiAgICAgICAgICAgICAtIFJldHVybiBzaW5rIGF0b20uXG5cbiAgICAgICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgICAgICAgYGBgXG4gICAgICAgICAgICAgKGRlZiAqYSAoYXRvbSAwKSlcbiAgICAgICAgICAgICAoZGVmICpiIChhdG9tIDEpKVxuICAgICAgICAgICAgIChkZWYgKnggKGRlcml2ZWQtYXRvbSBbKmEgKmJdIDo6a2V5XG4gICAgICAgICAgICAgICAgICAgICAgIChmbiBbYSBiXVxuICAgICAgICAgICAgICAgICAgICAgICAgIChzdHIgYSBcIjpcIiBiKSkpKVxuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICh0eXBlICp4KSAgOzsgPT4gY2xvanVyZS5sYW5nLkF0b21cbiAgICAgICAgICAgICAoZGVyZWYgKngpIDs7ID0+IFwiMDoxXCJcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAoc3dhcCEgKmEgaW5jKVxuICAgICAgICAgICAgIChkZXJlZiAqeCkgOzsgPT4gXCIxOjFcIlxuICAgICAgICAgICAgIFxuICAgICAgICAgICAgIChyZXNldCEgKmIgNylcbiAgICAgICAgICAgICAoZGVyZWYgKngpIDs7ID0+IFwiMTo3XCJcbiAgICAgICAgICAgICBgYGBcblxuICAgICAgICAgICAgIEFyZ3VtZW50czpcbiAgICAgICAgICBcbiAgICAgICAgICAgICAtIGByZWZzYCAtIHNlcXVlbmNlIG9mIHNvdXJjZSByZWZzLFxuICAgICAgICAgICAgIC0gYGtleWAgIC0gdW5pcXVlIGtleSB0byByZWdpc3RlciB3YXRjaGVyLCBzYW1lIGFzIGluIGBjbG9qdXJlLmNvcmUvYWRkLXdhdGNoYCxcbiAgICAgICAgICAgICAtIGBmYCAgICAtIGZ1bmN0aW9uIHRoYXQgbXVzdCBhY2NlcHQgTiBhcmd1bWVudHMgKHNhbWUgYXMgbnVtYmVyIG9mIHNvdXJjZSByZWZzKSBhbmQgcmV0dXJuIGEgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgc2luayByZWYuIE5vdGU6IGBmYCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFscmVhZHkgZGVyZWZlcmVuY2VkIHZhbHVlcyxcbiAgICAgICAgICAgICAtIGBvcHRzYCAtIG9wdGlvbmFsLiBNYXAgb2Y6XG4gICAgICAgICAgICAgICAtIGA6cmVmYCAtIHVzZSB0aGlzIGFzIHNpbmsgcmVmLiBCeSBkZWZhdWx0IGNyZWF0ZXMgbmV3IGF0b20sXG4gICAgICAgICAgICAgICAtIGA6Y2hlY2stZXF1YWxzP2AgLSBEZWZhdWx0cyB0byBgdHJ1ZWAuIElmIGVxdWFsaXR5IGNoZWNrIHNob3VsZCBiZSBydW4gb24gZWFjaCBzb3VyY2UgdXBkYXRlOiBgKD0gQHNpbmsgKGYgbmV3LXZhbHMpKWAuIFdoZW4gcmVzdWx0IG9mIHJlY2FsY3VsYXRpbmcgYGZgIGVxdWFscyB0byB0aGUgb2xkIHZhbHVlLCBgcmVzZXQhYCB3b27igJl0IGJlIGNhbGxlZC4gU2V0IHRvIGBmYWxzZWAgaWYgY2hlY2tpbmcgZm9yIGVxdWFsaXR5IGNhbiBiZSBleHBlbnNpdmUuIn0sIDpzb3VyY2UgIihkZWYgZGVyaXZlZC1hdG9tIGRlcml2ZWQtYXRvbS9kZXJpdmVkLWF0b20pXG4ifSksIGNsanMuY29yZSAoezpzeW0ganMtPmNsaiwgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgSmF2YVNjcmlwdCBhcnJheXMgaW50byBDbG9qdXJlU2NyaXB0XG4gIHZlY3RvcnMsIGFuZCBKYXZhU2NyaXB0IG9iamVjdHMgaW50byBDbG9qdXJlU2NyaXB0IG1hcHMuICBXaXRoXG4gIG9wdGlvbiAnOmtleXdvcmRpemUta2V5cyB0cnVlJyB3aWxsIGNvbnZlcnQgb2JqZWN0IGZpZWxkcyBmcm9tXG4gIHN0cmluZ3MgdG8ga2V5d29yZHMuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggJiBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGpzLT5jbGpcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgSmF2YVNjcmlwdCBhcnJheXMgaW50byBDbG9qdXJlU2NyaXB0XFxuICB2ZWN0b3JzLCBhbmQgSmF2YVNjcmlwdCBvYmplY3RzIGludG8gQ2xvanVyZVNjcmlwdCBtYXBzLiAgV2l0aFxcbiAgb3B0aW9uICc6a2V5d29yZGl6ZS1rZXlzIHRydWUnIHdpbGwgY29udmVydCBvYmplY3QgZmllbGRzIGZyb21cXG4gIHN0cmluZ3MgdG8ga2V5d29yZHMuXCJcbiAoW3hdIChqcy0+Y2xqIHggOmtleXdvcmRpemUta2V5cyBmYWxzZSkpXG4gKFt4ICYgb3B0c11cbiAgKGxldFxuICAgW3s6a2V5cyBba2V5d29yZGl6ZS1rZXlzXX1cbiAgICBvcHRzXG4gICAga2V5Zm5cbiAgICAoaWYga2V5d29yZGl6ZS1rZXlzIGtleXdvcmQgc3RyKVxuICAgIGZcbiAgICAoZm5cbiAgICAgdGhpc2ZuXG4gICAgIFt4XVxuICAgICAoY29uZFxuICAgICAgKHNhdGlzZmllcz8gSUVuY29kZUNsb2p1cmUgeClcbiAgICAgICgtanMtPmNsaiB4IChhcHBseSBhcnJheS1tYXAgb3B0cykpXG4gICAgICAoc2VxPyB4KVxuICAgICAgKGRvYWxsIChtYXAgdGhpc2ZuIHgpKVxuICAgICAgKG1hcC1lbnRyeT8geClcbiAgICAgIChNYXBFbnRyeS4gKHRoaXNmbiAoa2V5IHgpKSAodGhpc2ZuICh2YWwgeCkpIG5pbClcbiAgICAgIChjb2xsPyB4KVxuICAgICAgKGludG8gKGVtcHR5IHgpIChtYXAgdGhpc2ZuKSB4KVxuICAgICAgKGFycmF5PyB4KVxuICAgICAgKHBlcnNpc3RlbnQhXG4gICAgICAgKHJlZHVjZVxuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQ1NDQyIyBwMl9fNDU0NDMjXVxuICAgICAgICAgKGNvbmohIHAxX180NTQ0MiMgKHRoaXNmbiBwMl9fNDU0NDMjKSkpXG4gICAgICAgICh0cmFuc2llbnQgW10pXG4gICAgICAgIHgpKVxuICAgICAgKGlkZW50aWNhbD8gKHR5cGUgeCkganMvT2JqZWN0KVxuICAgICAgKHBlcnNpc3RlbnQhXG4gICAgICAgKHJlZHVjZVxuICAgICAgICAoZm4gW3Iga10gKGFzc29jISByIChrZXlmbiBrKSAodGhpc2ZuIChnb2JqZWN0L2dldCB4IGspKSkpXG4gICAgICAgICh0cmFuc2llbnQge30pXG4gICAgICAgIChqcy1rZXlzIHgpKSlcbiAgICAgIDplbHNlXG4gICAgICB4KSldXG4gICAoZiB4KSkpKVxuIn0gezpzeW0gc29ydC1ieSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwsIHdoZXJlIHRoZSBzb3J0XG4gICBvcmRlciBpcyBkZXRlcm1pbmVkIGJ5IGNvbXBhcmluZyAoa2V5Zm4gaXRlbSkuICBDb21wIGNhbiBiZVxuICAgYm9vbGVhbi12YWx1ZWQgY29tcGFyaXNvbiBmdW5jdGlvbiwgb3IgYSAtLzAvKyB2YWx1ZWQgY29tcGFyYXRvci5cbiAgIENvbXAgZGVmYXVsdHMgdG8gY29tcGFyZS4iLCA6YXJnbGlzdHMgW1trZXlmbiBjb2xsXSBba2V5Zm4gY29tcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHNvcnQtYnlcbiBcIlJldHVybnMgYSBzb3J0ZWQgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwsIHdoZXJlIHRoZSBzb3J0XFxuICAgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgKGtleWZuIGl0ZW0pLiAgQ29tcCBjYW4gYmVcXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxcbiAgIENvbXAgZGVmYXVsdHMgdG8gY29tcGFyZS5cIlxuIChba2V5Zm4gY29sbF0gKHNvcnQtYnkga2V5Zm4gY29tcGFyZSBjb2xsKSlcbiAoW2tleWZuIGNvbXAgY29sbF1cbiAgKHNvcnQgKGZuIFt4IHldICgoZm4tPmNvbXBhcmF0b3IgY29tcCkgKGtleWZuIHgpIChrZXlmbiB5KSkpIGNvbGwpKSlcbiJ9IHs6c3ltIElUcmFuc2llbnRBc3NvY2lhdGl2ZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgYXNzb2NpYXRpdml0eSB0byB0cmFuc2llbnQgY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtYXNzb2MhKX0gezpzeW0gY2h1bmstZmlyc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmstZmlyc3QgW3NdICgtY2h1bmtlZC1maXJzdCBzKSlcbiJ9IHs6c3ltIHByaW50LW1ldGE/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wdHMgb2JqXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LW1ldGE/XG4gW29wdHMgb2JqXVxuIChhbmRcbiAgKGJvb2xlYW4gKGdldCBvcHRzIDptZXRhKSlcbiAgKGltcGxlbWVudHM/IElNZXRhIG9iailcbiAgKG5vdCAobmlsPyAobWV0YSBvYmopKSkpKVxuIn0gezpzeW0gbTMtaGFzaC1pbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbTMtaGFzaC1pbnRcbiBbaW5dXG4gKGlmXG4gICh6ZXJvPyBpbilcbiAgaW5cbiAgKGxldCBbazEgKG0zLW1peC1LMSBpbikgaDEgKG0zLW1peC1IMSBtMy1zZWVkIGsxKV0gKG0zLWZtaXggaDEgNCkpKSlcbiJ9IHs6c3ltIHByLXN0ciosIDptZXRhIHs6ZG9jICJTdXBwb3J0IHNvIHRoYXQgY29sbGVjdGlvbnMgY2FuIGltcGxlbWVudCB0b1N0cmluZyB3aXRob3V0XG4gICBsb2FkaW5nIGFsbCB0aGUgcHJpbnRpbmcgbWFjaGluZXJ5LiIsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwci1zdHIqXG4gXCJTdXBwb3J0IHNvIHRoYXQgY29sbGVjdGlvbnMgY2FuIGltcGxlbWVudCB0b1N0cmluZyB3aXRob3V0XFxuICAgbG9hZGluZyBhbGwgdGhlIHByaW50aW5nIG1hY2hpbmVyeS5cIlxuIFtvYmpdXG4gKGxldFxuICBbc2IgKFN0cmluZ0J1ZmZlci4pIHdyaXRlciAoU3RyaW5nQnVmZmVyV3JpdGVyLiBzYildXG4gICgtcHItd3JpdGVyIG9iaiB3cml0ZXIgKHByLW9wdHMpKVxuICAoLWZsdXNoIHdyaXRlcilcbiAgKHN0ciBzYikpKVxuIn0gezpzeW0gZWR1Y3Rpb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgcmVkdWNpYmxlL2l0ZXJhYmxlIGFwcGxpY2F0aW9uIG9mIHRoZSB0cmFuc2R1Y2Vyc1xuICB0byB0aGUgaXRlbXMgaW4gY29sbC4gVHJhbnNkdWNlcnMgYXJlIGFwcGxpZWQgaW4gb3JkZXIgYXMgaWZcbiAgY29tYmluZWQgd2l0aCBjb21wLiBOb3RlIHRoYXQgdGhlc2UgYXBwbGljYXRpb25zIHdpbGwgYmVcbiAgcGVyZm9ybWVkIGV2ZXJ5IHRpbWUgcmVkdWNlL2l0ZXJhdG9yIGlzIGNhbGxlZC4iLCA6YXJnbGlzdHMgKFsmIHhmb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlZHVjdGlvblxuIFwiUmV0dXJucyBhIHJlZHVjaWJsZS9pdGVyYWJsZSBhcHBsaWNhdGlvbiBvZiB0aGUgdHJhbnNkdWNlcnNcXG4gIHRvIHRoZSBpdGVtcyBpbiBjb2xsLiBUcmFuc2R1Y2VycyBhcmUgYXBwbGllZCBpbiBvcmRlciBhcyBpZlxcbiAgY29tYmluZWQgd2l0aCBjb21wLiBOb3RlIHRoYXQgdGhlc2UgYXBwbGljYXRpb25zIHdpbGwgYmVcXG4gIHBlcmZvcm1lZCBldmVyeSB0aW1lIHJlZHVjZS9pdGVyYXRvciBpcyBjYWxsZWQuXCJcbiB7OmFyZ2xpc3RzICcoW3hmb3JtKiBjb2xsXSl9XG4gWyYgeGZvcm1zXVxuIChFZHVjdGlvbi4gKGFwcGx5IGNvbXAgKGJ1dGxhc3QgeGZvcm1zKSkgKGxhc3QgeGZvcm1zKSkpXG4ifSB7OnN5bSB0cmVlLXNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBub2RlcyBpbiBhIHRyZWUsIHZpYSBhIGRlcHRoLWZpcnN0IHdhbGsuXG4gIGJyYW5jaD8gbXVzdCBiZSBhIGZuIG9mIG9uZSBhcmcgdGhhdCByZXR1cm5zIHRydWUgaWYgcGFzc2VkIGEgbm9kZVxuICB0aGF0IGNhbiBoYXZlIGNoaWxkcmVuIChidXQgbWF5IG5vdCkuICBjaGlsZHJlbiBtdXN0IGJlIGEgZm4gb2Ygb25lXG4gIGFyZyB0aGF0IHJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgY2hpbGRyZW4uIFdpbGwgb25seSBiZSBjYWxsZWQgb25cbiAgbm9kZXMgZm9yIHdoaWNoIGJyYW5jaD8gcmV0dXJucyB0cnVlLiBSb290IGlzIHRoZSByb290IG5vZGUgb2YgdGhlXG4gIHRyZWUuIiwgOmFyZ2xpc3RzIChbYnJhbmNoPyBjaGlsZHJlbiByb290XSl9LCA6c291cmNlICIoZGVmblxuIHRyZWUtc2VxXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9kZXMgaW4gYSB0cmVlLCB2aWEgYSBkZXB0aC1maXJzdCB3YWxrLlxcbiAgYnJhbmNoPyBtdXN0IGJlIGEgZm4gb2Ygb25lIGFyZyB0aGF0IHJldHVybnMgdHJ1ZSBpZiBwYXNzZWQgYSBub2RlXFxuICB0aGF0IGNhbiBoYXZlIGNoaWxkcmVuIChidXQgbWF5IG5vdCkuICBjaGlsZHJlbiBtdXN0IGJlIGEgZm4gb2Ygb25lXFxuICBhcmcgdGhhdCByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIGNoaWxkcmVuLiBXaWxsIG9ubHkgYmUgY2FsbGVkIG9uXFxuICBub2RlcyBmb3Igd2hpY2ggYnJhbmNoPyByZXR1cm5zIHRydWUuIFJvb3QgaXMgdGhlIHJvb3Qgbm9kZSBvZiB0aGVcXG4gIHRyZWUuXCJcbiBbYnJhbmNoPyBjaGlsZHJlbiByb290XVxuIChsZXRcbiAgW3dhbGtcbiAgIChmblxuICAgIHdhbGtcbiAgICBbbm9kZV1cbiAgICAobGF6eS1zZXFcbiAgICAgKGNvbnMgbm9kZSAod2hlbiAoYnJhbmNoPyBub2RlKSAobWFwY2F0IHdhbGsgKGNoaWxkcmVuIG5vZGUpKSkpKSldXG4gICh3YWxrIHJvb3QpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1yZW1haW5kZXItaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtcmVtYWluZGVyLWludFxuIFt4IG5dXG4gKGNsanMuY29yZS91bmNoZWNrZWQtcmVtYWluZGVyLWludCB4IG4pKVxuIn0gezpzeW0gdXVpZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmbiB1dWlkIFtzXSAoYXNzZXJ0IChzdHJpbmc/IHMpKSAoVVVJRC4gKC50b0xvd2VyQ2FzZSBzKSBuaWwpKVxuIn0gezpzeW0gc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvbiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIGNvbGxlY3Rpb24gaXNcbiAgZW1wdHksIHJldHVybnMgbmlsLiAgKHNlcSBuaWwpIHJldHVybnMgbmlsLiBzZXEgYWxzbyB3b3JrcyBvblxuICBTdHJpbmdzLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VxXG4gXCJSZXR1cm5zIGEgc2VxIG9uIHRoZSBjb2xsZWN0aW9uLiBJZiB0aGUgY29sbGVjdGlvbiBpc1xcbiAgZW1wdHksIHJldHVybnMgbmlsLiAgKHNlcSBuaWwpIHJldHVybnMgbmlsLiBzZXEgYWxzbyB3b3JrcyBvblxcbiAgU3RyaW5ncy5cIlxuIFtjb2xsXVxuICh3aGVuLW5vdFxuICAobmlsPyBjb2xsKVxuICAoY29uZFxuICAgKGltcGxlbWVudHM/IElTZXFhYmxlIGNvbGwpXG4gICAoLXNlcSBjb2xsKVxuICAgKGFycmF5PyBjb2xsKVxuICAgKHdoZW4tbm90ICh6ZXJvPyAoYWxlbmd0aCBjb2xsKSkgKEluZGV4ZWRTZXEuIGNvbGwgMCBuaWwpKVxuICAgKHN0cmluZz8gY29sbClcbiAgICh3aGVuLW5vdCAoemVybz8gKC4tbGVuZ3RoIGNvbGwpKSAoSW5kZXhlZFNlcS4gY29sbCAwIG5pbCkpXG4gICAoanMtaXRlcmFibGU/IGNvbGwpXG4gICAoZXM2LWl0ZXJhdG9yLXNlcSAoLmNhbGwgKGdvYmplY3QvZ2V0IGNvbGwgSVRFUl9TWU1CT0wpIGNvbGwpKVxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElTZXFhYmxlIGNvbGwpXG4gICAoLXNlcSBjb2xsKVxuICAgOmVsc2VcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgY29sbCBcIiBpcyBub3QgSVNlcWFibGVcIikpKSkpKVxuIn0gezpzeW0gcmVkdWNlLCA6bWV0YSB7OmRvYyAiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gSWYgdmFsIGlzIG5vdCBzdXBwbGllZCxcbiAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gdGhlIGZpcnN0IDIgaXRlbXMgaW4gY29sbCwgdGhlblxuICBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgM3JkIGl0ZW0sIGV0Yy4gSWYgY29sbCBjb250YWlucyBub1xuICBpdGVtcywgZiBtdXN0IGFjY2VwdCBubyBhcmd1bWVudHMgYXMgd2VsbCwgYW5kIHJlZHVjZSByZXR1cm5zIHRoZVxuICByZXN1bHQgb2YgY2FsbGluZyBmIHdpdGggbm8gYXJndW1lbnRzLiAgSWYgY29sbCBoYXMgb25seSAxIGl0ZW0sIGl0XG4gIGlzIHJldHVybmVkIGFuZCBmIGlzIG5vdCBjYWxsZWQuICBJZiB2YWwgaXMgc3VwcGxpZWQsIHJldHVybnMgdGhlXG4gIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHZhbCBhbmQgdGhlIGZpcnN0IGl0ZW0gaW4gY29sbCwgdGhlblxuICBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgMm5kIGl0ZW0sIGV0Yy4gSWYgY29sbCBjb250YWlucyBub1xuICBpdGVtcywgcmV0dXJucyB2YWwgYW5kIGYgaXMgbm90IGNhbGxlZC4iLCA6YXJnbGlzdHMgW1tmIGNvbGxdIFtmIHZhbCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlZHVjZVxuIFwiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gSWYgdmFsIGlzIG5vdCBzdXBwbGllZCxcXG4gIHJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZSBmaXJzdCAyIGl0ZW1zIGluIGNvbGwsIHRoZW5cXG4gIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAzcmQgaXRlbSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vXFxuICBpdGVtcywgZiBtdXN0IGFjY2VwdCBubyBhcmd1bWVudHMgYXMgd2VsbCwgYW5kIHJlZHVjZSByZXR1cm5zIHRoZVxcbiAgcmVzdWx0IG9mIGNhbGxpbmcgZiB3aXRoIG5vIGFyZ3VtZW50cy4gIElmIGNvbGwgaGFzIG9ubHkgMSBpdGVtLCBpdFxcbiAgaXMgcmV0dXJuZWQgYW5kIGYgaXMgbm90IGNhbGxlZC4gIElmIHZhbCBpcyBzdXBwbGllZCwgcmV0dXJucyB0aGVcXG4gIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHZhbCBhbmQgdGhlIGZpcnN0IGl0ZW0gaW4gY29sbCwgdGhlblxcbiAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm9cXG4gIGl0ZW1zLCByZXR1cm5zIHZhbCBhbmQgZiBpcyBub3QgY2FsbGVkLlwiXG4gKFtmIGNvbGxdXG4gIChjb25kXG4gICAoaW1wbGVtZW50cz8gSVJlZHVjZSBjb2xsKVxuICAgKC1yZWR1Y2UgY29sbCBmKVxuICAgKGFycmF5PyBjb2xsKVxuICAgKGFycmF5LXJlZHVjZSBjb2xsIGYpXG4gICAoc3RyaW5nPyBjb2xsKVxuICAgKGFycmF5LXJlZHVjZSBjb2xsIGYpXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSVJlZHVjZSBjb2xsKVxuICAgKC1yZWR1Y2UgY29sbCBmKVxuICAgKGl0ZXJhYmxlPyBjb2xsKVxuICAgKGl0ZXItcmVkdWNlIGNvbGwgZilcbiAgIDplbHNlXG4gICAoc2VxLXJlZHVjZSBmIGNvbGwpKSlcbiAoW2YgdmFsIGNvbGxdXG4gIChjb25kXG4gICAoaW1wbGVtZW50cz8gSVJlZHVjZSBjb2xsKVxuICAgKC1yZWR1Y2UgY29sbCBmIHZhbClcbiAgIChhcnJheT8gY29sbClcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmIHZhbClcbiAgIChzdHJpbmc/IGNvbGwpXG4gICAoYXJyYXktcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSVJlZHVjZSBjb2xsKVxuICAgKC1yZWR1Y2UgY29sbCBmIHZhbClcbiAgIChpdGVyYWJsZT8gY29sbClcbiAgIChpdGVyLXJlZHVjZSBjb2xsIGYgdmFsKVxuICAgOmVsc2VcbiAgIChzZXEtcmVkdWNlIGYgdmFsIGNvbGwpKSkpXG4ifSB7OnN5bSBJVVVJRCwgOm1ldGEgezpkb2MgIkEgbWFya2VyIHByb3RvY29sIGZvciBVVUlEcyJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gSU5JVCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgSU5JVCAjanMge30pXG4ifSB7OnN5bSBmaW5kLW5zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZXNwYWNlIG5hbWVkIGJ5IHRoZSBzeW1ib2wgb3IgbmlsIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gIEJvb3RzdHJhcCBvbmx5LiIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtbnNcbiBcIlJldHVybnMgdGhlIG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sIG9yIG5pbCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxcbiAgQm9vdHN0cmFwIG9ubHkuXCJcbiBbbnNdXG4gKHdoZW4gKG5pbD8gTlNfQ0FDSEUpIChzZXQhIE5TX0NBQ0hFIChhdG9tIHt9KSkpXG4gKGxldFxuICBbdGhlLW5zIChnZXQgQE5TX0NBQ0hFIG5zKV1cbiAgKGlmLW5vdFxuICAgKG5pbD8gdGhlLW5zKVxuICAgdGhlLW5zXG4gICAobGV0XG4gICAgW25zLW9iaiAoZmluZC1ucy1vYmogbnMpXVxuICAgICh3aGVuLW5vdFxuICAgICAobmlsPyBucy1vYmopXG4gICAgIChsZXRcbiAgICAgIFtuZXctbnMgKGNyZWF0ZS1ucyBucyBucy1vYmopXVxuICAgICAgKHN3YXAhIE5TX0NBQ0hFIGFzc29jIG5zIG5ldy1ucylcbiAgICAgIG5ldy1ucykpKSkpKVxuIn0gezpzeW0gY29udGFpbnM/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGtleSBpcyBwcmVzZW50IGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLCBvdGhlcndpc2VcbiAgcmV0dXJucyBmYWxzZS4gIE5vdGUgdGhhdCBmb3IgbnVtZXJpY2FsbHkgaW5kZXhlZCBjb2xsZWN0aW9ucyBsaWtlXG4gIHZlY3RvcnMgYW5kIGFycmF5cywgdGhpcyB0ZXN0cyBpZiB0aGUgbnVtZXJpYyBrZXkgaXMgd2l0aGluIHRoZVxuICByYW5nZSBvZiBpbmRleGVzLiAnY29udGFpbnM/JyBvcGVyYXRlcyBjb25zdGFudCBvciBsb2dhcml0aG1pYyB0aW1lO1xuICBpdCB3aWxsIG5vdCBwZXJmb3JtIGEgbGluZWFyIHNlYXJjaCBmb3IgYSB2YWx1ZS4gIFNlZSBhbHNvICdzb21lJy4iLCA6YXJnbGlzdHMgKFtjb2xsIHZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29udGFpbnM/XG4gXCJSZXR1cm5zIHRydWUgaWYga2V5IGlzIHByZXNlbnQgaW4gdGhlIGdpdmVuIGNvbGxlY3Rpb24sIG90aGVyd2lzZVxcbiAgcmV0dXJucyBmYWxzZS4gIE5vdGUgdGhhdCBmb3IgbnVtZXJpY2FsbHkgaW5kZXhlZCBjb2xsZWN0aW9ucyBsaWtlXFxuICB2ZWN0b3JzIGFuZCBhcnJheXMsIHRoaXMgdGVzdHMgaWYgdGhlIG51bWVyaWMga2V5IGlzIHdpdGhpbiB0aGVcXG4gIHJhbmdlIG9mIGluZGV4ZXMuICdjb250YWlucz8nIG9wZXJhdGVzIGNvbnN0YW50IG9yIGxvZ2FyaXRobWljIHRpbWU7XFxuICBpdCB3aWxsIG5vdCBwZXJmb3JtIGEgbGluZWFyIHNlYXJjaCBmb3IgYSB2YWx1ZS4gIFNlZSBhbHNvICdzb21lJy5cIlxuIFtjb2xsIHZdXG4gKGNvbmRcbiAgKGltcGxlbWVudHM/IElBc3NvY2lhdGl2ZSBjb2xsKVxuICAoLWNvbnRhaW5zLWtleT8gY29sbCB2KVxuICAobmF0aXZlLXNhdGlzZmllcz8gSUFzc29jaWF0aXZlIGNvbGwpXG4gICgtY29udGFpbnMta2V5PyBjb2xsIHYpXG4gIChpZGVudGljYWw/IChnZXQgY29sbCB2IGxvb2t1cC1zZW50aW5lbCkgbG9va3VwLXNlbnRpbmVsKVxuICBmYWxzZVxuICA6ZWxzZVxuICB0cnVlKSlcbiJ9IHs6c3ltIGV2ZXJ5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiAocHJlZCB4KSBpcyBsb2dpY2FsIHRydWUgZm9yIGV2ZXJ5IHggaW4gY29sbCwgZWxzZVxuICBmYWxzZS4iLCA6YXJnbGlzdHMgKFtwcmVkIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXZlcnk/XG4gXCJSZXR1cm5zIHRydWUgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluIGNvbGwsIGVsc2VcXG4gIGZhbHNlLlwiXG4gW3ByZWQgY29sbF1cbiAoY29uZFxuICAobmlsPyAoc2VxIGNvbGwpKVxuICB0cnVlXG4gIChwcmVkIChmaXJzdCBjb2xsKSlcbiAgKHJlY3VyIHByZWQgKG5leHQgY29sbCkpXG4gIDplbHNlXG4gIGZhbHNlKSlcbiJ9IHs6c3ltIGtlZXAtaW5kZXhlZCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBub24tbmlsIHJlc3VsdHMgb2YgKGYgaW5kZXggaXRlbSkuIE5vdGUsXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcbiAgc2lkZS1lZmZlY3RzLiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzXG4gIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4ga2VlcC1pbmRleGVkXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9uLW5pbCByZXN1bHRzIG9mIChmIGluZGV4IGl0ZW0pLiBOb3RlLFxcbiAgdGhpcyBtZWFucyBmYWxzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW5jbHVkZWQuICBmIG11c3QgYmUgZnJlZSBvZlxcbiAgc2lkZS1lZmZlY3RzLiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzXFxuICBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2lhICh2b2xhdGlsZSEgLTEpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbaSAodnN3YXAhIGlhIGluYykgdiAoZiBpIGlucHV0KV1cbiAgICAgICAoaWYgKG5pbD8gdikgcmVzdWx0IChyZiByZXN1bHQgdikpKSkpKSkpXG4gKFtmIGNvbGxdXG4gIChsZXRmblxuICAgWyhrZWVwaVxuICAgICBbaWR4IGNvbGxdXG4gICAgIChsYXp5LXNlcVxuICAgICAgKHdoZW4tbGV0XG4gICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgICAoaWZcbiAgICAgICAgKGNodW5rZWQtc2VxPyBzKVxuICAgICAgICAobGV0XG4gICAgICAgICBbYyAoY2h1bmstZmlyc3Qgcykgc2l6ZSAoY291bnQgYykgYiAoY2h1bmstYnVmZmVyIHNpemUpXVxuICAgICAgICAgKGRvdGltZXNcbiAgICAgICAgICBbaSBzaXplXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW3ggKGYgKCsgaWR4IGkpICgtbnRoIGMgaSkpXVxuICAgICAgICAgICAod2hlbi1ub3QgKG5pbD8geCkgKGNodW5rLWFwcGVuZCBiIHgpKSkpXG4gICAgICAgICAoY2h1bmstY29ucyAoY2h1bmsgYikgKGtlZXBpICgrIGlkeCBzaXplKSAoY2h1bmstcmVzdCBzKSkpKVxuICAgICAgICAobGV0XG4gICAgICAgICBbeCAoZiBpZHggKGZpcnN0IHMpKV1cbiAgICAgICAgIChpZlxuICAgICAgICAgIChuaWw/IHgpXG4gICAgICAgICAgKGtlZXBpIChpbmMgaWR4KSAocmVzdCBzKSlcbiAgICAgICAgICAoY29ucyB4IChrZWVwaSAoaW5jIGlkeCkgKHJlc3QgcykpKSkpKSkpKV1cbiAgIChrZWVwaSAwIGNvbGwpKSkpXG4ifSB7OnN5bSBzdWJzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgc3Vic3RyaW5nIG9mIHMgYmVnaW5uaW5nIGF0IHN0YXJ0IGluY2x1c2l2ZSwgYW5kIGVuZGluZ1xuICBhdCBlbmQgKGRlZmF1bHRzIHRvIGxlbmd0aCBvZiBzdHJpbmcpLCBleGNsdXNpdmUuIiwgOmFyZ2xpc3RzIFtbcyBzdGFydF0gW3Mgc3RhcnQgZW5kXV19LCA6c291cmNlICIoZGVmblxuIHN1YnNcbiBcIlJldHVybnMgdGhlIHN1YnN0cmluZyBvZiBzIGJlZ2lubmluZyBhdCBzdGFydCBpbmNsdXNpdmUsIGFuZCBlbmRpbmdcXG4gIGF0IGVuZCAoZGVmYXVsdHMgdG8gbGVuZ3RoIG9mIHN0cmluZyksIGV4Y2x1c2l2ZS5cIlxuIChbcyBzdGFydF0gKC5zdWJzdHJpbmcgcyBzdGFydCkpXG4gKFtzIHN0YXJ0IGVuZF0gKC5zdWJzdHJpbmcgcyBzdGFydCBlbmQpKSlcbiJ9IHs6c3ltIGpzLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhbiBpbnN0YW5jZSBvZiBTeW1ib2wiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGpzLXN5bWJvbD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGFuIGluc3RhbmNlIG9mIFN5bWJvbFwiXG4gW3hdXG4gKG9yXG4gIChpZGVudGljYWw/IChnb29nL3R5cGVPZiB4KSBcInN5bWJvbFwiKVxuICAoYW5kIChleGlzdHM/IGpzL1N5bWJvbCkgKGluc3RhbmNlPyBqcy9TeW1ib2wgeCkpKSlcbiJ9IHs6c3ltIElGaW5kLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGltcGxlbWVudGluZyBlbnRyeSBmaW5kaW5nIGluIGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWZpbmQpfSB7OnN5bSBzZXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2V0IG9mIHRoZSBkaXN0aW5jdCBlbGVtZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0XG4gXCJSZXR1cm5zIGEgc2V0IG9mIHRoZSBkaXN0aW5jdCBlbGVtZW50cyBvZiBjb2xsLlwiXG4gW2NvbGxdXG4gKGlmXG4gIChzZXQ/IGNvbGwpXG4gICh3aXRoLW1ldGEgY29sbCBuaWwpXG4gIChsZXRcbiAgIFtpbiAoc2VxIGNvbGwpXVxuICAgKGNvbmRcbiAgICAobmlsPyBpbilcbiAgICAje31cbiAgICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSBpbikgKHplcm8/ICguLWkgaW4pKSlcbiAgICAoLmNyZWF0ZUFzSWZCeUFzc29jIFBlcnNpc3RlbnRIYXNoU2V0ICguLWFyciBpbikpXG4gICAgOmVsc2VcbiAgICAobG9vcFxuICAgICBbaW4gaW4gb3V0ICgtYXMtdHJhbnNpZW50ICN7fSldXG4gICAgIChpZi1ub3RcbiAgICAgIChuaWw/IGluKVxuICAgICAgKHJlY3VyIChuZXh0IGluKSAoLWNvbmohIG91dCAoLWZpcnN0IGluKSkpXG4gICAgICAocGVyc2lzdGVudCEgb3V0KSkpKSkpKVxuIn0gezpzeW0gTU9EVUxFX1VSSVMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1PRFVMRV9VUklTIG5pbClcbiJ9IHs6c3ltIHRha2UtbGFzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb2YgdGhlIGxhc3QgbiBpdGVtcyBpbiBjb2xsLiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlXG4gIG9mIGNvbGwgbWF5IGJlIG5vIGJldHRlciB0aGFuIGxpbmVhciB0aW1lLiAgRm9yIHZlY3RvcnMsIHNlZSBhbHNvIHN1YnZlYy4iLCA6YXJnbGlzdHMgKFtuIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZS1sYXN0XG4gXCJSZXR1cm5zIGEgc2VxIG9mIHRoZSBsYXN0IG4gaXRlbXMgaW4gY29sbC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZVxcbiAgb2YgY29sbCBtYXkgYmUgbm8gYmV0dGVyIHRoYW4gbGluZWFyIHRpbWUuICBGb3IgdmVjdG9ycywgc2VlIGFsc28gc3VidmVjLlwiXG4gW24gY29sbF1cbiAobG9vcFxuICBbcyAoc2VxIGNvbGwpIGxlYWQgKHNlcSAoZHJvcCBuIGNvbGwpKV1cbiAgKGlmIGxlYWQgKHJlY3VyIChuZXh0IHMpIChuZXh0IGxlYWQpKSBzKSkpXG4ifSB7OnN5bSBiaXQtc2V0LCA6bWV0YSB7OmRvYyAiU2V0IGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtc2V0IFwiU2V0IGJpdCBhdCBpbmRleCBuXCIgW3ggbl0gKGNsanMuY29yZS9iaXQtc2V0IHggbikpXG4ifSB7OnN5bSBzdHJpbmctaGFzaC1jYWNoZS1jb3VudCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgc3RyaW5nLWhhc2gtY2FjaGUtY291bnQgMClcbiJ9IHs6c3ltIHF1YWxpZmllZC1rZXl3b3JkPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGggYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHF1YWxpZmllZC1rZXl3b3JkP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIGtleXdvcmQgd2l0aCBhIG5hbWVzcGFjZVwiXG4gW3hdXG4gKGJvb2xlYW4gKGFuZCAoa2V5d29yZD8geCkgKG5hbWVzcGFjZSB4KSB0cnVlKSkpXG4ifSB7OnN5bSAtd2l0aC1tZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBvYmplY3Qgd2l0aCB2YWx1ZSBvZiBvIGFuZCBtZXRhZGF0YSBtZXRhIGFkZGVkIHRvIGl0LiIsIDphcmdsaXN0cyAoW28gbWV0YV0pfSwgOnByb3RvY29sIElXaXRoTWV0YX0gezpzeW0gYnV0bGFzdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIHNlcSBvZiBhbGwgYnV0IHRoZSBsYXN0IGl0ZW0gaW4gY29sbCwgaW4gbGluZWFyIHRpbWUiLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGJ1dGxhc3RcbiBcIlJldHVybiBhIHNlcSBvZiBhbGwgYnV0IHRoZSBsYXN0IGl0ZW0gaW4gY29sbCwgaW4gbGluZWFyIHRpbWVcIlxuIFtzXVxuIChsb29wXG4gIFtyZXQgW10gcyBzXVxuICAoaWYgKG5leHQgcykgKHJlY3VyIChjb25qIHJldCAoZmlyc3QgcykpIChuZXh0IHMpKSAoc2VxIHJldCkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1zdWJ0cmFjdC1pbnQsIDptZXRhIHs6ZG9jICJJZiBubyB5cyBhcmUgc3VwcGxpZWQsIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIHgsIGVsc2Ugc3VidHJhY3RzXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtc3VidHJhY3QtaW50XG4gXCJJZiBubyB5cyBhcmUgc3VwcGxpZWQsIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIHgsIGVsc2Ugc3VidHJhY3RzXFxuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXCJcbiAoW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0LWludCB4KSlcbiAoW3ggeV0gKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QtaW50IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlXG4gICB1bmNoZWNrZWQtc3VidHJhY3QtaW50XG4gICAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgeCB5KVxuICAgbW9yZSkpKVxuIn0gezpzeW0gLWl0ZXJhdG9yLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBpdGVyYXRvciBmb3IgY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUl0ZXJhYmxlfSB7OnN5bSAqcHJpbnQtbmFtZXNwYWNlLW1hcHMqLCA6bWV0YSB7OmRvYyAiKnByaW50LW5hbWVzcGFjZS1tYXBzKiBjb250cm9scyB3aGV0aGVyIHRoZSBwcmludGVyIHdpbGwgcHJpbnRcbiAgbmFtZXNwYWNlIG1hcCBsaXRlcmFsIHN5bnRheC5cblxuICBEZWZhdWx0cyB0byBmYWxzZSwgYnV0IHRoZSBSRVBMIGJpbmRzIGl0IHRvIHRydWUuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LW5hbWVzcGFjZS1tYXBzKiBmYWxzZSlcbiJ9IHs6c3ltIHRha2UtbnRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxIG9mIGV2ZXJ5IG50aCBpdGVtIGluIGNvbGwuICBSZXR1cm5zIGEgc3RhdGVmdWxcbiAgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbbl0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWtlLW50aFxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIGV2ZXJ5IG50aCBpdGVtIGluIGNvbGwuICBSZXR1cm5zIGEgc3RhdGVmdWxcXG4gIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtuXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbaWEgKHZvbGF0aWxlISAtMSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGxldFxuICAgICAgIFtpICh2c3dhcCEgaWEgaW5jKV1cbiAgICAgICAoaWYgKHplcm8/IChyZW0gaSBuKSkgKHJmIHJlc3VsdCBpbnB1dCkgcmVzdWx0KSkpKSkpKVxuIChbbiBjb2xsXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldCBbcyAoc2VxIGNvbGwpXSAoY29ucyAoZmlyc3QgcykgKHRha2UtbnRoIG4gKGRyb3AgbiBzKSkpKSkpKVxuIn0gezpzeW0gZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBjb2xsZWN0aW9uLiBDYWxscyBzZXEgb24gaXRzXG4gIGFyZ3VtZW50LiBJZiBjb2xsIGlzIG5pbCwgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXJzdFxuIFwiUmV0dXJucyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY29sbGVjdGlvbi4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuIElmIGNvbGwgaXMgbmlsLCByZXR1cm5zIG5pbC5cIlxuIFtjb2xsXVxuICh3aGVuLW5vdFxuICAobmlsPyBjb2xsKVxuICAoaWZcbiAgIChpbXBsZW1lbnRzPyBJU2VxIGNvbGwpXG4gICAoLWZpcnN0IGNvbGwpXG4gICAobGV0IFtzIChzZXEgY29sbCldICh3aGVuLW5vdCAobmlsPyBzKSAoLWZpcnN0IHMpKSkpKSlcbiJ9IHs6c3ltIG5hdGl2ZS1zYXRpc2ZpZXM/LCA6bWV0YSB7OmRvYyAiSW50ZXJuYWwgLSBkbyBub3QgdXNlISIsIDphcmdsaXN0cyAoW3AgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYXRpdmUtc2F0aXNmaWVzP1xuIFwiSW50ZXJuYWwgLSBkbyBub3QgdXNlIVwiXG4gW3AgeF1cbiAobGV0XG4gIFt4IChpZiAobmlsPyB4KSBuaWwgeCldXG4gIChjb25kXG4gICAodW5jaGVja2VkLWdldCBwIChnb29nL3R5cGVPZiB4KSlcbiAgIHRydWVcbiAgICh1bmNoZWNrZWQtZ2V0IHAgXCJfXCIpXG4gICB0cnVlXG4gICA6ZWxzZVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltIHNlcT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiBzIHNhdGlzZmllcyBJU2VxIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXE/XG4gXCJSZXR1cm4gdHJ1ZSBpZiBzIHNhdGlzZmllcyBJU2VxXCJcbiBbc11cbiAoaWYgKG5pbD8gcykgZmFsc2UgKHNhdGlzZmllcz8gSVNlcSBzKSkpXG4ifSB7OnN5bSAtc29ydGVkLXNlcS1mcm9tLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNvcnRlZCBzZXEgZnJvbSBjb2xsIGluIGVpdGhlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci5cbiAgICAgSWYgYXNjZW5kaW5nIGlzIHRydWUsIHRoZSByZXN1bHQgc2hvdWxkIGNvbnRhaW4gYWxsIGl0ZW1zIHdoaWNoIGFyZSA+IG9yID49XG4gICAgIHRoYW4gay4gSWYgYXNjZW5kaW5nIGlzIGZhbHNlLCB0aGUgcmVzdWx0IHNob3VsZCBjb250YWluIGFsbCBpdGVtcyB3aGljaFxuICAgICBhcmUgPCBvciA8PSB0aGFuIGssIGUuZy5cbiAgICAgKC1zb3J0ZWQtc2VxLWZyb20gKHNvcnRlZC1zZXQgMSAyIDMgNCA1KSAzIHRydWUpID0+ICgzIDQgNSlcbiAgICAgKC1zb3J0ZWQtc2VxLWZyb20gKHNvcnRlZC1zZXQgMSAyIDMgNCA1KSAzIGZhbHNlKSA9PiAoMyAyIDEpIiwgOmFyZ2xpc3RzIChbY29sbCBrIGFzY2VuZGluZz9dKX0sIDpwcm90b2NvbCBJU29ydGVkfSB7OnN5bSBwcmludGxuLXN0ciwgOm1ldGEgezpkb2MgInByaW50bG4gdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdCIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludGxuLXN0clxuIFwicHJpbnRsbiB0byBhIHN0cmluZywgcmV0dXJuaW5nIGl0XCJcbiBbJiBvYmpzXVxuIChwcm4tc3RyLXdpdGgtb3B0cyBvYmpzIChhc3NvYyAocHItb3B0cykgOnJlYWRhYmx5IGZhbHNlKSkpXG4ifSB7OnN5bSBpbnN0LW1zLCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCwgMDA6MDA6MDAgR01UIiwgOmFyZ2xpc3RzIChbaW5zdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0LW1zXG4gXCJSZXR1cm4gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgSmFudWFyeSAxLCAxOTcwLCAwMDowMDowMCBHTVRcIlxuIFtpbnN0XVxuIChpbnN0LW1zKiBpbnN0KSlcbiJ9IHs6c3ltIGl0ZXJhdGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB4LCAoZiB4KSwgKGYgKGYgeCkpIGV0Yy4gZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzIiwgOmFyZ2xpc3RzIChbZiB4XSl9LCA6c291cmNlICIoZGVmblxuIGl0ZXJhdGVcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHgsIChmIHgpLCAoZiAoZiB4KSkgZXRjLiBmIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHNcIlxuIHs6YWRkZWQgXCIxLjBcIn1cbiBbZiB4XVxuIChJdGVyYXRlLiBuaWwgZiBuaWwgeCBuaWwpKVxuIn0gezpzeW0gLWVtcHR5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBlbXB0eSBjb2xsZWN0aW9uIG9mIHRoZSBzYW1lIGNhdGVnb3J5IGFzIGNvbGwuIFVzZWRcbiAgICAgYnkgY2xqcy5jb3JlL2VtcHR5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJRW1wdHlhYmxlQ29sbGVjdGlvbn0gezpzeW0gbmV3bGluZSwgOm1ldGEgezpkb2MgIlByaW50cyBhIG5ld2xpbmUgdXNpbmcgKnByaW50LWZuKiIsIDphcmdsaXN0cyBbW10gW29wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbmV3bGluZVxuIFwiUHJpbnRzIGEgbmV3bGluZSB1c2luZyAqcHJpbnQtZm4qXCJcbiAoW10gKG5ld2xpbmUgbmlsKSlcbiAoW29wdHNdXG4gIChzdHJpbmctcHJpbnQgXCJcXG5cIilcbiAgKHdoZW4gKGdldCBvcHRzIDpmbHVzaC1vbi1uZXdsaW5lKSAoZmx1c2gpKSkpXG4ifSB7OnN5bSBJTG9va3VwLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGxvb2tpbmcgdXAgYSB2YWx1ZSBpbiBhIGRhdGEgc3RydWN0dXJlLiJ9LCA6bWV0aG9kcyAoLWxvb2t1cCl9IHs6c3ltIC1jaHVua2VkLXJlc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGggdGhlIGZpcnN0IGNodW5rIHJlbW92ZWQuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDaHVua2VkU2VxfSB7OnN5bSB3cml0ZS1hbGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbd3JpdGVyICYgc3NdKX0sIDpzb3VyY2UgIihkZWZuIHdyaXRlLWFsbCBbd3JpdGVyICYgc3NdIChkb3NlcSBbcyBzc10gKC13cml0ZSB3cml0ZXIgcykpKVxuIn0gezpzeW0gZm4/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgZiBpcyBhIEphdmFTY3JpcHQgZnVuY3Rpb24gb3Igc2F0aXNmaWVzIHRoZSBGbiBwcm90b2NvbC4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGZuP1xuIFwiUmV0dXJuIHRydWUgaWYgZiBpcyBhIEphdmFTY3JpcHQgZnVuY3Rpb24gb3Igc2F0aXNmaWVzIHRoZSBGbiBwcm90b2NvbC5cIlxuIFtmXVxuIChvciAoanMtZm4/IGYpIChzYXRpc2ZpZXM/IEZuIGYpKSlcbiJ9IHs6c3ltIC1wcmVmZXItbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mIGRpc3BhdGNoLXZhbCBkaXNwYXRjaC12YWwteV0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSAtYXNzb2MsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRoIGEgbWFwcGluZyBmcm9tIGtleSBrIHRvXG4gICAgIHZhbHVlIHYgYWRkZWQgdG8gaXQuIiwgOmFyZ2xpc3RzIChbY29sbCBrIHZdKX0sIDpwcm90b2NvbCBJQXNzb2NpYXRpdmV9IHs6c3ltIGRvYWxsLCA6bWV0YSB7OmRvYyAiV2hlbiBsYXp5IHNlcXVlbmNlcyBhcmUgcHJvZHVjZWQgdmlhIGZ1bmN0aW9ucyB0aGF0IGhhdmUgc2lkZVxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvYWxsIGNhblxuICBiZSB1c2VkIHRvIGZvcmNlIGFueSBlZmZlY3RzLiBXYWxrcyB0aHJvdWdoIHRoZSBzdWNjZXNzaXZlIG5leHRzIG9mXG4gIHRoZSBzZXEsIHJldGFpbnMgdGhlIGhlYWQgYW5kIHJldHVybnMgaXQsIHRodXMgY2F1c2luZyB0aGUgZW50aXJlXG4gIHNlcSB0byByZXNpZGUgaW4gbWVtb3J5IGF0IG9uZSB0aW1lLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtuIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZG9hbGxcbiBcIldoZW4gbGF6eSBzZXF1ZW5jZXMgYXJlIHByb2R1Y2VkIHZpYSBmdW5jdGlvbnMgdGhhdCBoYXZlIHNpZGVcXG4gIGVmZmVjdHMsIGFueSBlZmZlY3RzIG90aGVyIHRoYW4gdGhvc2UgbmVlZGVkIHRvIHByb2R1Y2UgdGhlIGZpcnN0XFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvYWxsIGNhblxcbiAgYmUgdXNlZCB0byBmb3JjZSBhbnkgZWZmZWN0cy4gV2Fsa3MgdGhyb3VnaCB0aGUgc3VjY2Vzc2l2ZSBuZXh0cyBvZlxcbiAgdGhlIHNlcSwgcmV0YWlucyB0aGUgaGVhZCBhbmQgcmV0dXJucyBpdCwgdGh1cyBjYXVzaW5nIHRoZSBlbnRpcmVcXG4gIHNlcSB0byByZXNpZGUgaW4gbWVtb3J5IGF0IG9uZSB0aW1lLlwiXG4gKFtjb2xsXSAoZG9ydW4gY29sbCkgY29sbClcbiAoW24gY29sbF0gKGRvcnVuIG4gY29sbCkgY29sbCkpXG4ifSB7OnN5bSBrZXl3b3JkLWlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28ga2V5d29yZHMgYXJlIGlkZW50aWNhbC4iLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5d29yZC1pZGVudGljYWw/XG4gXCJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28ga2V5d29yZHMgYXJlIGlkZW50aWNhbC5cIlxuIFt4IHldXG4gKGlmXG4gIChpZGVudGljYWw/IHggeSlcbiAgdHJ1ZVxuICAoaWZcbiAgIChhbmQgKGtleXdvcmQ/IHgpIChrZXl3b3JkPyB5KSlcbiAgIChpZGVudGljYWw/ICguLWZxbiB4KSAoLi1mcW4geSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gKnByaW50LWVyci1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgYSBkaWZmZXJlbnQgd2F5IHRvIHByaW50IGVycm9yIG91dHB1dC5cbiAgV2hhdGV2ZXIgZnVuY3Rpb24gKnByaW50LWVyci1mbiogaXMgYm91bmQgdG8gd2lsbCBiZSBwYXNzZWQgYW55XG4gIFN0cmluZ3Mgd2hpY2ggc2hvdWxkIGJlIHByaW50ZWQuIn0sIDpzb3VyY2UgIihkZWZvbmNlICpwcmludC1lcnItZm4qIG5pbClcbiJ9IHs6c3ltIHByZWZlcnMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIHByZWZlcnJlZCB2YWx1ZSAtPiBzZXQgb2Ygb3RoZXIgdmFsdWVzIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmVmZXJzXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIHByZWZlcnJlZCB2YWx1ZSAtPiBzZXQgb2Ygb3RoZXIgdmFsdWVzXCJcbiBbbXVsdGlmbl1cbiAoLXByZWZlcnMgbXVsdGlmbikpXG4ifSB7OnN5bSAtanMtPmNsaiwgOm1ldGEgezpkb2MgIlRyYW5zZm9ybXMgSmF2YVNjcmlwdCB2YWx1ZXMgdG8gQ2xvanVyZSIsIDphcmdsaXN0cyAoW3ggb3B0aW9uc10pfSwgOnByb3RvY29sIElFbmNvZGVDbG9qdXJlfSB7OnN5bSBkZWR1cGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSByZW1vdmluZyBjb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGluIGNvbGwuXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tdIFtjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRlZHVwZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgcmVtb3ZpbmcgY29uc2VjdXRpdmUgZHVwbGljYXRlcyBpbiBjb2xsLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtwYSAodm9sYXRpbGUhIDpjbGpzLmNvcmUvbm9uZSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGxldFxuICAgICAgIFtwcmlvciBAcGFdXG4gICAgICAgKHZyZXNldCEgcGEgaW5wdXQpXG4gICAgICAgKGlmICg9IHByaW9yIGlucHV0KSByZXN1bHQgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpXG4gKFtjb2xsXSAoc2VxdWVuY2UgKGRlZHVwZSkgY29sbCkpKVxuIn0gezpzeW0gZGlzc29jLCA6bWV0YSB7OmRvYyAiZGlzc29jW2lhdGVdLiBSZXR1cm5zIGEgbmV3IG1hcCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSxcbiAgdGhhdCBkb2VzIG5vdCBjb250YWluIGEgbWFwcGluZyBmb3Iga2V5KHMpLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtjb2xsIGtdIFtjb2xsIGsgJiBrc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNzb2NcbiBcImRpc3NvY1tpYXRlXS4gUmV0dXJucyBhIG5ldyBtYXAgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsXFxuICB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuXCJcbiAoW2NvbGxdIGNvbGwpXG4gKFtjb2xsIGtdICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLWRpc3NvYyBjb2xsIGspKSlcbiAoW2NvbGwgayAmIGtzXVxuICAod2hlbi1ub3RcbiAgIChuaWw/IGNvbGwpXG4gICAobGV0XG4gICAgW3JldCAoZGlzc29jIGNvbGwgayldXG4gICAgKGlmIGtzIChyZWN1ciByZXQgKGZpcnN0IGtzKSAobmV4dCBrcykpIHJldCkpKSkpXG4ifSB7OnN5bSBhdG9tLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBdG9tIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiB4IGFuZCB6ZXJvIG9yXG4gIG1vcmUgb3B0aW9ucyAoaW4gYW55IG9yZGVyKTpcblxuICA6bWV0YSBtZXRhZGF0YS1tYXBcblxuICA6dmFsaWRhdG9yIHZhbGlkYXRlLWZuXG5cbiAgSWYgbWV0YWRhdGEtbWFwIGlzIHN1cHBsaWVkLCBpdCB3aWxsIGJlY29tZSB0aGUgbWV0YWRhdGEgb24gdGhlXG4gIGF0b20uIHZhbGlkYXRlLWZuIG11c3QgYmUgbmlsIG9yIGEgc2lkZS1lZmZlY3QtZnJlZSBmbiBvZiBvbmVcbiAgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZCBuZXcgc3RhdGUgb24gYW55IHN0YXRlXG4gIGNoYW5nZS4gSWYgdGhlIG5ldyBzdGF0ZSBpcyB1bmFjY2VwdGFibGUsIHRoZSB2YWxpZGF0ZS1mbiBzaG91bGRcbiAgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiAgSWYgZWl0aGVyIG9mIHRoZXNlIGVycm9yIGNvbmRpdGlvbnNcbiAgb2NjdXIsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBhdG9tIHdpbGwgbm90IGNoYW5nZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCAmIHs6a2V5cyBbbWV0YSB2YWxpZGF0b3JdfV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBhdG9tXG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGFuIEF0b20gd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIHggYW5kIHplcm8gb3JcXG4gIG1vcmUgb3B0aW9ucyAoaW4gYW55IG9yZGVyKTpcXG5cXG4gIDptZXRhIG1ldGFkYXRhLW1hcFxcblxcbiAgOnZhbGlkYXRvciB2YWxpZGF0ZS1mblxcblxcbiAgSWYgbWV0YWRhdGEtbWFwIGlzIHN1cHBsaWVkLCBpdCB3aWxsIGJlY29tZSB0aGUgbWV0YWRhdGEgb24gdGhlXFxuICBhdG9tLiB2YWxpZGF0ZS1mbiBtdXN0IGJlIG5pbCBvciBhIHNpZGUtZWZmZWN0LWZyZWUgZm4gb2Ygb25lXFxuICBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlIGludGVuZGVkIG5ldyBzdGF0ZSBvbiBhbnkgc3RhdGVcXG4gIGNoYW5nZS4gSWYgdGhlIG5ldyBzdGF0ZSBpcyB1bmFjY2VwdGFibGUsIHRoZSB2YWxpZGF0ZS1mbiBzaG91bGRcXG4gIHJldHVybiBmYWxzZSBvciB0aHJvdyBhbiBFcnJvci4gIElmIGVpdGhlciBvZiB0aGVzZSBlcnJvciBjb25kaXRpb25zXFxuICBvY2N1ciwgdGhlbiB0aGUgdmFsdWUgb2YgdGhlIGF0b20gd2lsbCBub3QgY2hhbmdlLlwiXG4gKFt4XSAoQXRvbS4geCBuaWwgbmlsIG5pbCkpXG4gKFt4ICYgezprZXlzIFttZXRhIHZhbGlkYXRvcl19XSAoQXRvbS4geCBtZXRhIHZhbGlkYXRvciBuaWwpKSlcbiJ9IHs6c3ltIGJpdC1zaGlmdC1yaWdodCwgOm1ldGEgezpkb2MgIkJpdHdpc2Ugc2hpZnQgcmlnaHQiLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LXNoaWZ0LXJpZ2h0XG4gXCJCaXR3aXNlIHNoaWZ0IHJpZ2h0XCJcbiBbeCBuXVxuIChjbGpzLmNvcmUvYml0LXNoaWZ0LXJpZ2h0IHggbikpXG4ifSB7OnN5bSAqY2xvanVyZXNjcmlwdC12ZXJzaW9uKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsb2p1cmVzY3JpcHQtdmVyc2lvbiogXCIxLjExLjRcIilcbiJ9IHs6c3ltIC1maXJzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24gY29sbC4gVXNlZCBieSBjbGpzLmNvcmUvZmlyc3QuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTZXF9IHs6c3ltIHBlZWssIDptZXRhIHs6ZG9jICJGb3IgYSBsaXN0IG9yIHF1ZXVlLCBzYW1lIGFzIGZpcnN0LCBmb3IgYSB2ZWN0b3IsIHNhbWUgYXMsIGJ1dCBtdWNoXG4gIG1vcmUgZWZmaWNpZW50IHRoYW4sIGxhc3QuIElmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LCByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHBlZWtcbiBcIkZvciBhIGxpc3Qgb3IgcXVldWUsIHNhbWUgYXMgZmlyc3QsIGZvciBhIHZlY3Rvciwgc2FtZSBhcywgYnV0IG11Y2hcXG4gIG1vcmUgZWZmaWNpZW50IHRoYW4sIGxhc3QuIElmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LCByZXR1cm5zIG5pbC5cIlxuIFtjb2xsXVxuICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLXBlZWsgY29sbCkpKVxuIn0gezpzeW0gSUtWUmVkdWNlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFzc29jaWF0aXZlIHR5cGVzIHRoYXQgY2FuIHJlZHVjZSB0aGVtc2VsdmVzXG4gIHZpYSBhIGZ1bmN0aW9uIG9mIGtleSBhbmQgdmFsLiBDYWxsZWQgYnkgY2xqcy5jb3JlL3JlZHVjZS1rdi4ifSwgOm1ldGhvZHMgKC1rdi1yZWR1Y2UpfSB7OnN5bSBhZ2V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4L2luZGljZXMuIFdvcmtzIG9uIEphdmFTY3JpcHQgYXJyYXlzLiIsIDphcmdsaXN0cyBbW2FycmF5IGlkeF0gW2FycmF5IGlkeCAmIGlkeHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYWdldFxuIFwiUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4L2luZGljZXMuIFdvcmtzIG9uIEphdmFTY3JpcHQgYXJyYXlzLlwiXG4gKFthcnJheSBpZHhdIChjbGpzLmNvcmUvYWdldCBhcnJheSBpZHgpKVxuIChbYXJyYXkgaWR4ICYgaWR4c10gKGFwcGx5IGFnZXQgKGFnZXQgYXJyYXkgaWR4KSBpZHhzKSkpXG4ifSB7OnN5bSAtd3JpdGUsIDptZXRhIHs6ZG9jICJXcml0ZXMgcyB3aXRoIHdyaXRlciBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiIsIDphcmdsaXN0cyAoW3dyaXRlciBzXSl9LCA6cHJvdG9jb2wgSVdyaXRlcn0gezpzeW0gaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGl0ZXJcbiBbY29sbF1cbiAoY29uZFxuICAoaXRlcmFibGU/IGNvbGwpXG4gICgtaXRlcmF0b3IgY29sbClcbiAgKG5pbD8gY29sbClcbiAgKG5pbC1pdGVyKVxuICAoc3RyaW5nPyBjb2xsKVxuICAoc3RyaW5nLWl0ZXIgY29sbClcbiAgKGFycmF5PyBjb2xsKVxuICAoYXJyYXktaXRlciBjb2xsKVxuICAoc2VxYWJsZT8gY29sbClcbiAgKHNlcS1pdGVyIGNvbGwpXG4gIDplbHNlXG4gICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJDYW5ub3QgY3JlYXRlIGl0ZXJhdG9yIGZyb20gXCIgY29sbCkpKSkpXG4ifSB7OnN5bSBtay1ib3VuZC1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzYyB0ZXN0IGtleV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtay1ib3VuZC1mblxuIFtzYyB0ZXN0IGtleV1cbiAoZm5cbiAgW2VdXG4gIChsZXQgW2NvbXAgKC1jb21wYXJhdG9yIHNjKV0gKHRlc3QgKGNvbXAgKC1lbnRyeS1rZXkgc2MgZSkga2V5KSAwKSkpKVxuIn0gezpzeW0gbGFzdCwgOm1ldGEgezpkb2MgIlJldHVybiB0aGUgbGFzdCBpdGVtIGluIGNvbGwsIGluIGxpbmVhciB0aW1lIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBsYXN0XG4gXCJSZXR1cm4gdGhlIGxhc3QgaXRlbSBpbiBjb2xsLCBpbiBsaW5lYXIgdGltZVwiXG4gW3NdXG4gKGxldCBbc24gKG5leHQgcyldIChpZi1ub3QgKG5pbD8gc24pIChyZWN1ciBzbikgKGZpcnN0IHMpKSkpXG4ifSB7OnN5bSAtZGVmYXVsdC1kaXNwYXRjaC12YWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWZdKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gcHIsIDptZXRhIHs6ZG9jICJQcmludHMgdGhlIG9iamVjdChzKSB1c2luZyBzdHJpbmctcHJpbnQuICBQcmludHMgdGhlXG4gIG9iamVjdChzKSwgc2VwYXJhdGVkIGJ5IHNwYWNlcyBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lLlxuICBCeSBkZWZhdWx0LCBwciBhbmQgcHJuIHByaW50IGluIGEgd2F5IHRoYXQgb2JqZWN0cyBjYW4gYmVcbiAgcmVhZCBieSB0aGUgcmVhZGVyIiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxuIHByXG4gXCJQcmludHMgdGhlIG9iamVjdChzKSB1c2luZyBzdHJpbmctcHJpbnQuICBQcmludHMgdGhlXFxuICBvYmplY3QocyksIHNlcGFyYXRlZCBieSBzcGFjZXMgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS5cXG4gIEJ5IGRlZmF1bHQsIHByIGFuZCBwcm4gcHJpbnQgaW4gYSB3YXkgdGhhdCBvYmplY3RzIGNhbiBiZVxcbiAgcmVhZCBieSB0aGUgcmVhZGVyXCJcbiBbJiBvYmpzXVxuIChwci13aXRoLW9wdHMgb2JqcyAocHItb3B0cykpKVxuIn0gezpzeW0gbmFtZXNwYWNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZXNwYWNlIFN0cmluZyBvZiBhIHN5bWJvbCBvciBrZXl3b3JkLCBvciBuaWwgaWYgbm90IHByZXNlbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYW1lc3BhY2VcbiBcIlJldHVybnMgdGhlIG5hbWVzcGFjZSBTdHJpbmcgb2YgYSBzeW1ib2wgb3Iga2V5d29yZCwgb3IgbmlsIGlmIG5vdCBwcmVzZW50LlwiXG4gW3hdXG4gKGlmXG4gIChpbXBsZW1lbnRzPyBJTmFtZWQgeClcbiAgKC1uYW1lc3BhY2UgeClcbiAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIkRvZXNuJ3Qgc3VwcG9ydCBuYW1lc3BhY2U6IFwiIHgpKSkpKVxuIn0gezpzeW0gb2JqLW1hcCwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgb2JqZWN0IG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLiIsIDphcmdsaXN0cyAoWyYga2V5dmFsc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBvYmotbWFwXG4gXCJrZXl2YWwgPT4ga2V5IHZhbFxcbiAgUmV0dXJucyBhIG5ldyBvYmplY3QgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuXCJcbiBbJiBrZXl2YWxzXVxuIChsZXRcbiAgW2tzIChhcnJheSkgb2JqIChqcy1vYmopXVxuICAobG9vcFxuICAgW2t2cyAoc2VxIGtleXZhbHMpXVxuICAgKGlmXG4gICAga3ZzXG4gICAgKGRvXG4gICAgICgucHVzaCBrcyAoZmlyc3Qga3ZzKSlcbiAgICAgKGdvYmplY3Qvc2V0IG9iaiAoZmlyc3Qga3ZzKSAoc2Vjb25kIGt2cykpXG4gICAgIChyZWN1ciAobm5leHQga3ZzKSkpXG4gICAgKC5mcm9tT2JqZWN0IE9iak1hcCBrcyBvYmopKSkpKVxuIn0gezpzeW0gLWNvbmosIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRoIG8gYWRkZWQgdG8gaXQuIFRoZSBuZXcgaXRlbVxuICAgICBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIG1vc3QgZWZmaWNpZW50IHBsYWNlLCBlLmcuXG4gICAgIChjb25qIFsxIDIgMyA0XSA1KSA9PiBbMSAyIDMgNCA1XVxuICAgICAoY29uaiAnKDIgMyA0IDUpIDEpID0+ICcoMSAyIDMgNCA1KSIsIDphcmdsaXN0cyAoW2NvbGwgb10pfSwgOnByb3RvY29sIElDb2xsZWN0aW9ufSB7OnN5bSA9LCA6bWV0YSB7OmRvYyAiRXF1YWxpdHkuIFJldHVybnMgdHJ1ZSBpZiB4IGVxdWFscyB5LCBmYWxzZSBpZiBub3QuIENvbXBhcmVzXG4gIG51bWJlcnMgYW5kIGNvbGxlY3Rpb25zIGluIGEgdHlwZS1pbmRlcGVuZGVudCBtYW5uZXIuICBDbG9qdXJlJ3MgaW1tdXRhYmxlIGRhdGFcbiAgc3RydWN0dXJlcyBkZWZpbmUgLWVxdWl2IChhbmQgdGh1cyA9KSBhcyBhIHZhbHVlLCBub3QgYW4gaWRlbnRpdHksXG4gIGNvbXBhcmlzb24uIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPVxuIFwiRXF1YWxpdHkuIFJldHVybnMgdHJ1ZSBpZiB4IGVxdWFscyB5LCBmYWxzZSBpZiBub3QuIENvbXBhcmVzXFxuICBudW1iZXJzIGFuZCBjb2xsZWN0aW9ucyBpbiBhIHR5cGUtaW5kZXBlbmRlbnQgbWFubmVyLiAgQ2xvanVyZSdzIGltbXV0YWJsZSBkYXRhXFxuICBzdHJ1Y3R1cmVzIGRlZmluZSAtZXF1aXYgKGFuZCB0aHVzID0pIGFzIGEgdmFsdWUsIG5vdCBhbiBpZGVudGl0eSxcXG4gIGNvbXBhcmlzb24uXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldIChpZiAobmlsPyB4KSAobmlsPyB5KSAob3IgKGlkZW50aWNhbD8geCB5KSAoLWVxdWl2IHggeSkpKSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKD0geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKD0geSAoZmlyc3QgbW9yZSkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltIElUcmFuc2llbnRNYXAsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIG1hcHBpbmcgZnVuY3Rpb25hbGl0eSB0byB0cmFuc2llbnQgY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtZGlzc29jISl9IHs6c3ltIHRha2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZmlyc3QgbiBpdGVtcyBpbiBjb2xsLCBvciBhbGwgaXRlbXMgaWZcbiAgdGhlcmUgYXJlIGZld2VyIHRoYW4gbi4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW5cbiAgbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tuXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHRha2VcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBmaXJzdCBuIGl0ZW1zIGluIGNvbGwsIG9yIGFsbCBpdGVtcyBpZlxcbiAgdGhlcmUgYXJlIGZld2VyIHRoYW4gbi4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW5cXG4gIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW25dXG4gIHs6cHJlIFsobnVtYmVyPyBuKV19XG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtuYSAodm9sYXRpbGUhIG4pXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbblxuICAgICAgICBAbmFcbiAgICAgICAgbm5cbiAgICAgICAgKHZzd2FwISBuYSBkZWMpXG4gICAgICAgIHJlc3VsdFxuICAgICAgICAoaWYgKHBvcz8gbikgKHJmIHJlc3VsdCBpbnB1dCkgcmVzdWx0KV1cbiAgICAgICAoaWYgKG5vdCAocG9zPyBubikpIChlbnN1cmUtcmVkdWNlZCByZXN1bHQpIHJlc3VsdCkpKSkpKSlcbiAoW24gY29sbF1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGxhenktc2VxXG4gICAod2hlblxuICAgIChwb3M/IG4pXG4gICAgKHdoZW4tbGV0XG4gICAgIFtzIChzZXEgY29sbCldXG4gICAgIChjb25zIChmaXJzdCBzKSAodGFrZSAoZGVjIG4pIChyZXN0IHMpKSkpKSkpKVxuIn0gezpzeW0gdmVjdG9yPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIElWZWN0b3IiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHZlY3Rvcj9cbiBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIElWZWN0b3JcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElWZWN0b3IgeCkpXG4ifSB7OnN5bSBib29sZWFuLCA6bWV0YSB7OmRvYyAiQ29lcmNlIHRvIGJvb2xlYW4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGJvb2xlYW5cbiBcIkNvZXJjZSB0byBib29sZWFuXCJcbiBbeF1cbiAoY29uZCAobmlsPyB4KSBmYWxzZSAoZmFsc2U/IHgpIGZhbHNlIDplbHNlIHRydWUpKVxuIn0gezpzeW0gSUNodW5rLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgaXRlbXMgb2YgYSBjaHVuay4ifSwgOm1ldGhvZHMgKC1kcm9wLWZpcnN0KX0gezpzeW0gYml0LXNoaWZ0LWxlZnQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IGxlZnQiLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LXNoaWZ0LWxlZnRcbiBcIkJpdHdpc2Ugc2hpZnQgbGVmdFwiXG4gW3ggbl1cbiAoY2xqcy5jb3JlL2JpdC1zaGlmdC1sZWZ0IHggbikpXG4ifSB7OnN5bSByYW5kb20tdXVpZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZG9tLXV1aWRcbiBbXVxuIChsZXRmblxuICBbKGhleCBbXSAoLnRvU3RyaW5nIChyYW5kLWludCAxNikgMTYpKV1cbiAgKGxldFxuICAgW3JoZXggKC50b1N0cmluZyAoYml0LW9yIDggKGJpdC1hbmQgMyAocmFuZC1pbnQgMTYpKSkgMTYpXVxuICAgKHV1aWRcbiAgICAoc3RyXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIFwiLVwiXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIFwiLVwiXG4gICAgIFwiNFwiXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIFwiLVwiXG4gICAgIHJoZXhcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgXCItXCJcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleClcbiAgICAgKGhleCkpKSkpKVxuIn0gezpzeW0gYW55PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBnaXZlbiBhbnkgYXJndW1lbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYW55PyBcIlJldHVybnMgdHJ1ZSBpZiBnaXZlbiBhbnkgYXJndW1lbnQuXCIgW3hdIHRydWUpXG4ifSB7OnN5bSByYW5kLWludCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kIG4gKGV4Y2x1c2l2ZSkuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5kLWludFxuIFwiUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVzaXZlKSBhbmQgbiAoZXhjbHVzaXZlKS5cIlxuIFtuXVxuIChNYXRoL2Zsb29yICgqIChNYXRoL3JhbmRvbSkgbikpKVxuIn0gezpzeW0gYWNsb25lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGphdmFzY3JpcHQgYXJyYXksIGNsb25lZCBmcm9tIHRoZSBwYXNzZWQgaW4gYXJyYXkiLCA6YXJnbGlzdHMgKFthcnJdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWNsb25lXG4gXCJSZXR1cm5zIGEgamF2YXNjcmlwdCBhcnJheSwgY2xvbmVkIGZyb20gdGhlIHBhc3NlZCBpbiBhcnJheVwiXG4gW2Fycl1cbiAobGV0XG4gIFtsZW4gKGFsZW5ndGggYXJyKSBuZXctYXJyIChtYWtlLWFycmF5IGxlbildXG4gIChkb3RpbWVzIFtpIGxlbl0gKGFzZXQgbmV3LWFyciBpIChhZ2V0IGFyciBpKSkpXG4gIG5ldy1hcnIpKVxuIn0gezpzeW0gdnJlc2V0ISwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIG9mIHZvbGF0aWxlIHRvIG5ld3ZhbCB3aXRob3V0IHJlZ2FyZCBmb3IgdGhlXG4gICBjdXJyZW50IHZhbHVlLiBSZXR1cm5zIG5ld3ZhbC4iLCA6YXJnbGlzdHMgKFt2b2wgbmV3dmFsXSl9LCA6c291cmNlICIoZGVmblxuIHZyZXNldCFcbiBcIlNldHMgdGhlIHZhbHVlIG9mIHZvbGF0aWxlIHRvIG5ld3ZhbCB3aXRob3V0IHJlZ2FyZCBmb3IgdGhlXFxuICAgY3VycmVudCB2YWx1ZS4gUmV0dXJucyBuZXd2YWwuXCJcbiBbdm9sIG5ld3ZhbF1cbiAoLXZyZXNldCEgdm9sIG5ld3ZhbCkpXG4ifSB7OnN5bSBjaHVuaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtiXSl9LCA6c291cmNlICIoZGVmbiBjaHVuayBbYl0gKC5jaHVuayBiKSlcbiJ9IHs6c3ltIGRlYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiBudW0uIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZGVjIFwiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIG51bS5cIiBbeF0gKC0geCAxKSlcbiJ9IHs6c3ltIEFQZXJzaXN0ZW50VmVjdG9yLCA6bWV0YSB7OmRvYyAiTWFya2VyIHByb3RvY29sIn0sIDptZXRob2RzICgpfSB7OnN5bSBtYXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBjb25zaXN0aW5nIG9mIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0b1xuICB0aGUgc2V0IG9mIGZpcnN0IGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmcgZiB0byB0aGVcbiAgc2V0IG9mIHNlY29uZCBpdGVtcyBpbiBlYWNoIGNvbGwsIHVudGlsIGFueSBvbmUgb2YgdGhlIGNvbGxzIGlzXG4gIGV4aGF1c3RlZC4gIEFueSByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIEZ1bmN0aW9uXG4gIGYgc2hvdWxkIGFjY2VwdCBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzLiBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuXG4gIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY29sbF0gW2YgYzEgYzJdIFtmIGMxIGMyIGMzXSBbZiBjMSBjMiBjMyAmIGNvbGxzXV19LCA6c291cmNlICIoZGVmblxuIG1hcFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG9cXG4gIHRoZSBzZXQgb2YgZmlyc3QgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIHRoZVxcbiAgc2V0IG9mIHNlY29uZCBpdGVtcyBpbiBlYWNoIGNvbGwsIHVudGlsIGFueSBvbmUgb2YgdGhlIGNvbGxzIGlzXFxuICBleGhhdXN0ZWQuICBBbnkgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBGdW5jdGlvblxcbiAgZiBzaG91bGQgYWNjZXB0IG51bWJlci1vZi1jb2xscyBhcmd1bWVudHMuIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW5cXG4gIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW2ZdXG4gIChmblxuICAgW3JmXVxuICAgKGZuXG4gICAgKFtdIChyZikpXG4gICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgIChbcmVzdWx0IGlucHV0XSAocmYgcmVzdWx0IChmIGlucHV0KSkpXG4gICAgKFtyZXN1bHQgaW5wdXQgJiBpbnB1dHNdIChyZiByZXN1bHQgKGFwcGx5IGYgaW5wdXQgaW5wdXRzKSkpKSkpXG4gKFtmIGNvbGxdXG4gIChsYXp5LXNlcVxuICAgKHdoZW4tbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAoaWZcbiAgICAgKGNodW5rZWQtc2VxPyBzKVxuICAgICAobGV0XG4gICAgICBbYyAoY2h1bmstZmlyc3Qgcykgc2l6ZSAoY291bnQgYykgYiAoY2h1bmstYnVmZmVyIHNpemUpXVxuICAgICAgKGRvdGltZXMgW2kgc2l6ZV0gKGNodW5rLWFwcGVuZCBiIChmICgtbnRoIGMgaSkpKSlcbiAgICAgIChjaHVuay1jb25zIChjaHVuayBiKSAobWFwIGYgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgKGNvbnMgKGYgKGZpcnN0IHMpKSAobWFwIGYgKHJlc3QgcykpKSkpKSlcbiAoW2YgYzEgYzJdXG4gIChsYXp5LXNlcVxuICAgKGxldFxuICAgIFtzMSAoc2VxIGMxKSBzMiAoc2VxIGMyKV1cbiAgICAod2hlblxuICAgICAoYW5kIHMxIHMyKVxuICAgICAoY29ucyAoZiAoZmlyc3QgczEpIChmaXJzdCBzMikpIChtYXAgZiAocmVzdCBzMSkgKHJlc3QgczIpKSkpKSkpXG4gKFtmIGMxIGMyIGMzXVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbczEgKHNlcSBjMSkgczIgKHNlcSBjMikgczMgKHNlcSBjMyldXG4gICAgKHdoZW5cbiAgICAgKGFuZCBzMSBzMiBzMylcbiAgICAgKGNvbnNcbiAgICAgIChmIChmaXJzdCBzMSkgKGZpcnN0IHMyKSAoZmlyc3QgczMpKVxuICAgICAgKG1hcCBmIChyZXN0IHMxKSAocmVzdCBzMikgKHJlc3QgczMpKSkpKSkpXG4gKFtmIGMxIGMyIGMzICYgY29sbHNdXG4gIChsZXRcbiAgIFtzdGVwXG4gICAgKGZuXG4gICAgIHN0ZXBcbiAgICAgW2NzXVxuICAgICAobGF6eS1zZXFcbiAgICAgIChsZXRcbiAgICAgICBbc3MgKG1hcCBzZXEgY3MpXVxuICAgICAgICh3aGVuXG4gICAgICAgIChldmVyeT8gaWRlbnRpdHkgc3MpXG4gICAgICAgIChjb25zIChtYXAgZmlyc3Qgc3MpIChzdGVwIChtYXAgcmVzdCBzcykpKSkpKSldXG4gICAobWFwXG4gICAgKGZuKiBbcDFfXzQ1NDEyI10gKGFwcGx5IGYgcDFfXzQ1NDEyIykpXG4gICAgKHN0ZXAgKGNvbmogY29sbHMgYzMgYzIgYzEpKSkpKSlcbiJ9IHs6c3ltIGp1eHQsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHNldCBvZiBmdW5jdGlvbnMgYW5kIHJldHVybnMgYSBmbiB0aGF0IGlzIHRoZSBqdXh0YXBvc2l0aW9uXG4gIG9mIHRob3NlIGZucy4gIFRoZSByZXR1cm5lZCBmbiB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmdzLCBhbmRcbiAgcmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZWFjaCBmbiB0byB0aGVcbiAgYXJncyAobGVmdC10by1yaWdodCkuXG4gICgoanV4dCBhIGIgYykgeCkgPT4gWyhhIHgpIChiIHgpIChjIHgpXSIsIDphcmdsaXN0cyBbW2ZdIFtmIGddIFtmIGcgaF0gW2YgZyBoICYgZnNdXX0sIDpzb3VyY2UgIihkZWZuXG4ganV4dFxuIFwiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUganV4dGFwb3NpdGlvblxcbiAgb2YgdGhvc2UgZm5zLiAgVGhlIHJldHVybmVkIGZuIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3MsIGFuZFxcbiAgcmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZWFjaCBmbiB0byB0aGVcXG4gIGFyZ3MgKGxlZnQtdG8tcmlnaHQpLlxcbiAgKChqdXh0IGEgYiBjKSB4KSA9PiBbKGEgeCkgKGIgeCkgKGMgeCldXCJcbiAoW2ZdXG4gIChmblxuICAgKFtdICh2ZWN0b3IgKGYpKSlcbiAgIChbeF0gKHZlY3RvciAoZiB4KSkpXG4gICAoW3ggeV0gKHZlY3RvciAoZiB4IHkpKSlcbiAgIChbeCB5IHpdICh2ZWN0b3IgKGYgeCB5IHopKSlcbiAgIChbeCB5IHogJiBhcmdzXSAodmVjdG9yIChhcHBseSBmIHggeSB6IGFyZ3MpKSkpKVxuIChbZiBnXVxuICAoZm5cbiAgIChbXSAodmVjdG9yIChmKSAoZykpKVxuICAgKFt4XSAodmVjdG9yIChmIHgpIChnIHgpKSlcbiAgIChbeCB5XSAodmVjdG9yIChmIHggeSkgKGcgeCB5KSkpXG4gICAoW3ggeSB6XSAodmVjdG9yIChmIHggeSB6KSAoZyB4IHkgeikpKVxuICAgKFt4IHkgeiAmIGFyZ3NdXG4gICAgKHZlY3RvciAoYXBwbHkgZiB4IHkgeiBhcmdzKSAoYXBwbHkgZyB4IHkgeiBhcmdzKSkpKSlcbiAoW2YgZyBoXVxuICAoZm5cbiAgIChbXSAodmVjdG9yIChmKSAoZykgKGgpKSlcbiAgIChbeF0gKHZlY3RvciAoZiB4KSAoZyB4KSAoaCB4KSkpXG4gICAoW3ggeV0gKHZlY3RvciAoZiB4IHkpIChnIHggeSkgKGggeCB5KSkpXG4gICAoW3ggeSB6XSAodmVjdG9yIChmIHggeSB6KSAoZyB4IHkgeikgKGggeCB5IHopKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgICh2ZWN0b3JcbiAgICAgKGFwcGx5IGYgeCB5IHogYXJncylcbiAgICAgKGFwcGx5IGcgeCB5IHogYXJncylcbiAgICAgKGFwcGx5IGggeCB5IHogYXJncykpKSkpXG4gKFtmIGcgaCAmIGZzXVxuICAobGV0XG4gICBbZnMgKGxpc3QqIGYgZyBoIGZzKV1cbiAgIChmblxuICAgIChbXVxuICAgICAocmVkdWNlXG4gICAgICAoZm4qIFtwMV9fNDU0MjgjIHAyX180NTQyOSNdIChjb25qIHAxX180NTQyOCMgKHAyX180NTQyOSMpKSlcbiAgICAgIFtdXG4gICAgICBmcykpXG4gICAgKFt4XVxuICAgICAocmVkdWNlXG4gICAgICAoZm4qIFtwMV9fNDU0MzAjIHAyX180NTQzMSNdIChjb25qIHAxX180NTQzMCMgKHAyX180NTQzMSMgeCkpKVxuICAgICAgW11cbiAgICAgIGZzKSlcbiAgICAoW3ggeV1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKiBbcDFfXzQ1NDMyIyBwMl9fNDU0MzMjXSAoY29uaiBwMV9fNDU0MzIjIChwMl9fNDU0MzMjIHggeSkpKVxuICAgICAgW11cbiAgICAgIGZzKSlcbiAgICAoW3ggeSB6XVxuICAgICAocmVkdWNlXG4gICAgICAoZm4qXG4gICAgICAgW3AxX180NTQzNCMgcDJfXzQ1NDM1I11cbiAgICAgICAoY29uaiBwMV9fNDU0MzQjIChwMl9fNDU0MzUjIHggeSB6KSkpXG4gICAgICBbXVxuICAgICAgZnMpKVxuICAgIChbeCB5IHogJiBhcmdzXVxuICAgICAocmVkdWNlXG4gICAgICAoZm4qXG4gICAgICAgW3AxX180NTQzNiMgcDJfXzQ1NDM3I11cbiAgICAgICAoY29uaiBwMV9fNDU0MzYjIChhcHBseSBwMl9fNDU0MzcjIHggeSB6IGFyZ3MpKSlcbiAgICAgIFtdXG4gICAgICBmcykpKSkpKVxuIn0gezpzeW0gPCwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgb3JkZXIsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiA8XG4gXCJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhcmUgaW4gbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIG9yZGVyLFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoY2xqcy5jb3JlLzwgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKGNsanMuY29yZS88IHggeSlcbiAgIChpZlxuICAgIChuZXh0IG1vcmUpXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxuICAgIChjbGpzLmNvcmUvPCB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gKmV2YWwqLCA6bWV0YSB7OmRvYyAiUnVudGltZSBlbnZpcm9ubWVudHMgbWF5IHByb3ZpZGUgYSB3YXkgdG8gZXZhbHVhdGUgQ2xvanVyZVNjcmlwdFxuICBmb3Jtcy4gV2hhdGV2ZXIgZnVuY3Rpb24gKmV2YWwqIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIGFueSBmb3JtcyB3aGljaFxuICBzaG91bGQgYmUgZXZhbHVhdGVkLiJ9LCA6c291cmNlICIoZGVmb25jZVxuICpldmFsKlxuIChmbiBbX10gKHRocm93IChqcy9FcnJvci4gXCJjbGpzLmNvcmUvKmV2YWwqIG5vdCBib3VuZFwiKSkpKVxuIn0gezpzeW0gdGVzdCwgOm1ldGEgezpkb2MgInRlc3QgW3ZdIGZpbmRzIGZuIGF0IGtleSA6dGVzdCBpbiB2YXIgbWV0YWRhdGEgYW5kIGNhbGxzIGl0LFxuICBwcmVzdW1pbmcgZmFpbHVyZSB3aWxsIHRocm93IGV4Y2VwdGlvbiIsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGVzdFxuIFwidGVzdCBbdl0gZmluZHMgZm4gYXQga2V5IDp0ZXN0IGluIHZhciBtZXRhZGF0YSBhbmQgY2FsbHMgaXQsXFxuICBwcmVzdW1pbmcgZmFpbHVyZSB3aWxsIHRocm93IGV4Y2VwdGlvblwiXG4gW3ZdXG4gKGxldCBbZiAoLi1jbGpzJGxhbmckdGVzdCB2KV0gKGlmIGYgKGRvIChmKSA6b2spIDpuby10ZXN0KSkpXG4ifSB7OnN5bSByZXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHBvc3NpYmx5IGVtcHR5IHNlcSBvZiB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0LiBDYWxscyBzZXEgb24gaXRzXG4gIGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzdFxuIFwiUmV0dXJucyBhIHBvc3NpYmx5IGVtcHR5IHNlcSBvZiB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0LiBDYWxscyBzZXEgb24gaXRzXFxuICBhcmd1bWVudC5cIlxuIFtjb2xsXVxuIChpZi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGlmXG4gICAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKVxuICAgKC1yZXN0IGNvbGwpXG4gICAobGV0IFtzIChzZXEgY29sbCldIChpZiBzICgtcmVzdCBzKSAoKSkpKVxuICAoKSkpXG4ifSB7OnN5bSBleC1kYXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBleGNlcHRpb24gZGF0YSAoYSBtYXApIGlmIGV4IGlzIGFuIEV4Y2VwdGlvbkluZm8uXG4gIE90aGVyd2lzZSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleC1kYXRhXG4gXCJSZXR1cm5zIGV4Y2VwdGlvbiBkYXRhIChhIG1hcCkgaWYgZXggaXMgYW4gRXhjZXB0aW9uSW5mby5cXG4gIE90aGVyd2lzZSByZXR1cm5zIG5pbC5cIlxuIFtleF1cbiAod2hlbiAoaW5zdGFuY2U/IEV4Y2VwdGlvbkluZm8gZXgpICguLWRhdGEgZXgpKSlcbiJ9IHs6c3ltIC1kcm9wLWZpcnN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbmV3IGNodW5rIG9mIGNvbGwgd2l0aCB0aGUgZmlyc3QgaXRlbSByZW1vdmVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmt9IHs6c3ltIGlzYT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgKD0gY2hpbGQgcGFyZW50KSwgb3IgY2hpbGQgaXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBkZXJpdmVkIGZyb21cbiAgcGFyZW50LCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhXG4gIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWRcbiAgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWxcbiAgaGllcmFyY2h5IiwgOmFyZ2xpc3RzIFtbY2hpbGQgcGFyZW50XSBbaCBjaGlsZCBwYXJlbnRdXX0sIDpzb3VyY2UgIihkZWZuXG4gaXNhP1xuIFwiUmV0dXJucyB0cnVlIGlmICg9IGNoaWxkIHBhcmVudCksIG9yIGNoaWxkIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZGVyaXZlZCBmcm9tXFxuICBwYXJlbnQsIGVpdGhlciB2aWEgYSBKYXZhU2NyaXB0IHR5cGUgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGFcXG4gIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWRcXG4gIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsXFxuICBoaWVyYXJjaHlcIlxuIChbY2hpbGQgcGFyZW50XSAoaXNhPyBAKGdldC1nbG9iYWwtaGllcmFyY2h5KSBjaGlsZCBwYXJlbnQpKVxuIChbaCBjaGlsZCBwYXJlbnRdXG4gIChvclxuICAgKD0gY2hpbGQgcGFyZW50KVxuICAgKGNvbnRhaW5zPyAoKDphbmNlc3RvcnMgaCkgY2hpbGQpIHBhcmVudClcbiAgIChhbmRcbiAgICAodmVjdG9yPyBwYXJlbnQpXG4gICAgKHZlY3Rvcj8gY2hpbGQpXG4gICAgKD09IChjb3VudCBwYXJlbnQpIChjb3VudCBjaGlsZCkpXG4gICAgKGxvb3BcbiAgICAgW3JldCB0cnVlIGkgMF1cbiAgICAgKGlmXG4gICAgICAob3IgKG5vdCByZXQpICg9PSBpIChjb3VudCBwYXJlbnQpKSlcbiAgICAgIHJldFxuICAgICAgKHJlY3VyIChpc2E/IGggKGNoaWxkIGkpIChwYXJlbnQgaSkpIChpbmMgaSkpKSkpKSkpXG4ifSB7OnN5bSBib29sZWFuPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBCb29sZWFuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBib29sZWFuP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIEJvb2xlYW5cIlxuIFt4XVxuIChvciAoY2xqcy5jb3JlL3RydWU/IHgpIChjbGpzLmNvcmUvZmFsc2U/IHgpKSlcbiJ9IHs6c3ltIC1jbG9uZSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBjbG9uZSBvZiB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnByb3RvY29sIElDbG9uZWFibGV9IHs6c3ltIG11bmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbXVuZ2VcbiBbbmFtZV1cbiAobGV0XG4gIFtuYW1lJ1xuICAgKG11bmdlLXN0ciAoc3RyIG5hbWUpKVxuICAgbmFtZSdcbiAgIChjb25kXG4gICAgKGlkZW50aWNhbD8gbmFtZScgXCIuLlwiKVxuICAgIFwiX0RPVF9fRE9UX1wiXG4gICAgKGpzLXJlc2VydmVkPyBuYW1lJylcbiAgICAoc3RyIG5hbWUnIFwiJFwiKVxuICAgIDplbHNlXG4gICAgbmFtZScpXVxuICAoaWYgKHN5bWJvbD8gbmFtZSkgKHN5bWJvbCBuYW1lJykgbmFtZScpKSlcbiJ9IHs6c3ltIERFTVVOR0VfTUFQLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIERFTVVOR0VfTUFQXG4gI2pzIHtcIl9SQlJBQ0VfXCIgXCJ9XCIsIFwiX0NPTE9OX1wiIFwiOlwiLCBcIl9CQU5HX1wiIFwiIVwiLCBcIl9RTUFSS19cIiBcIj9cIiwgXCJfQlNMQVNIX1wiIFwiXFxcXFxcXFxcIiwgXCJfU0xBU0hfXCIgXCIvXCIsIFwiX1BFUkNFTlRfXCIgXCIlXCIsIFwiX1BMVVNfXCIgXCIrXCIsIFwiX1NIQVJQX1wiIFwiI1wiLCBcIl9MQlJBQ0VfXCIgXCJ7XCIsIFwiX0JBUl9cIiBcInxcIiwgXCJfTEJSQUNLX1wiIFwiW1wiLCBcIl9FUV9cIiBcIj1cIiwgXCJfXCIgXCItXCIsIFwiX1RJTERFX1wiIFwiflwiLCBcIl9SQlJBQ0tfXCIgXCJdXCIsIFwiX0dUX1wiIFwiPlwiLCBcIl9TSU5HTEVRVU9URV9cIiBcIidcIiwgXCJfQ0lSQ0FfXCIgXCJAXCIsIFwiX0FNUEVSU0FORF9cIiBcIiZcIiwgXCJfRE9VQkxFUVVPVEVfXCIgXCJcXFxcXFxcIlwiLCBcIl9DQVJFVF9cIiBcIl5cIiwgXCJfTFRfXCIgXCI8XCIsIFwiX1NUQVJfXCIgXCIqXCJ9KVxuIn0gezpzeW0gcmUtc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2Ygc3VjY2Vzc2l2ZSBtYXRjaGVzIG9mIHJlIGluIHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZS1zZXFcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgbWF0Y2hlcyBvZiByZSBpbiBzLlwiXG4gW3JlIHNdXG4gKGlmXG4gIChzdHJpbmc/IHMpXG4gIChyZS1zZXEqIHJlIHMpXG4gICh0aHJvdyAoanMvVHlwZUVycm9yLiBcInJlLXNlcSBtdXN0IG1hdGNoIGFnYWluc3QgYSBzdHJpbmcuXCIpKSkpXG4ifSB7OnN5bSBjaGFyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBzdHJpbmcgb2YgbGVuZ3RoIG9uZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNoYXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgc3RyaW5nIG9mIGxlbmd0aCBvbmUuXCJcbiBbeF1cbiAoYW5kIChzdHJpbmc/IHgpICg9PSAxICguLWxlbmd0aCB4KSkpKVxuIn0gezpzeW0gbWFrZS1oaWVyYXJjaHksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgaGllcmFyY2h5IG9iamVjdCBmb3IgdXNlIHdpdGggZGVyaXZlLCBpc2E/IGV0Yy4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1oaWVyYXJjaHlcbiBcIkNyZWF0ZXMgYSBoaWVyYXJjaHkgb2JqZWN0IGZvciB1c2Ugd2l0aCBkZXJpdmUsIGlzYT8gZXRjLlwiXG4gW11cbiB7OnBhcmVudHMge30sIDpkZXNjZW5kYW50cyB7fSwgOmFuY2VzdG9ycyB7fX0pXG4ifSB7OnN5bSBQUk9UT0NPTF9TRU5USU5FTCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZvbmNlIFBST1RPQ09MX1NFTlRJTkVMICNqcyB7fSlcbiJ9IHs6c3ltIC1yZWR1Y2UsIDptZXRhIHs6ZG9jICJmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDIgYXJndW1lbnRzLiBJZiBzdGFydCBpcyBub3Qgc3VwcGxpZWQsXG4gICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZSBmaXJzdCAyIGl0ZW1zIGluIGNvbGwsIHRoZW5cbiAgICAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDNyZCBpdGVtLCBldGMuIiwgOmFyZ2xpc3RzIChbY29sbCBmXSBbY29sbCBmIHN0YXJ0XSl9LCA6cHJvdG9jb2wgSVJlZHVjZX0gezpzeW0gLWNvdW50LCA6bWV0YSB7OmRvYyAiQ2FsY3VsYXRlcyB0aGUgY291bnQgb2YgY29sbCBpbiBjb25zdGFudCB0aW1lLiBVc2VkIGJ5IGNsanMuY29yZS9jb3VudC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUNvdW50ZWR9IHs6c3ltIHN3YXAtdmFscyEsIDptZXRhIHs6ZG9jICJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxuICAoYXBwbHkgZiBjdXJyZW50LXZhbHVlLW9mLWF0b20gYXJncykuIE5vdGUgdGhhdCBmIG1heSBiZSBjYWxsZWRcbiAgbXVsdGlwbGUgdGltZXMsIGFuZCB0aHVzIHNob3VsZCBiZSBmcmVlIG9mIHNpZGUgZWZmZWN0cy5cbiAgUmV0dXJucyBbb2xkIG5ld10sIHRoZSB2YWx1ZSBvZiB0aGUgYXRvbSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzd2FwLiIsIDphcmdsaXN0cyBbW2EgZl0gW2EgZiB4XSBbYSBmIHggeV0gW2EgZiB4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHN3YXAtdmFscyFcbiBcIkF0b21pY2FsbHkgc3dhcHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gYmU6XFxuICAoYXBwbHkgZiBjdXJyZW50LXZhbHVlLW9mLWF0b20gYXJncykuIE5vdGUgdGhhdCBmIG1heSBiZSBjYWxsZWRcXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuXFxuICBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZSBhdG9tIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHN3YXAuXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gKFthIGZdIChyZXNldC12YWxzISBhIChmICguLXN0YXRlIGEpKSkpXG4gKFthIGYgeF0gKHJlc2V0LXZhbHMhIGEgKGYgKC4tc3RhdGUgYSkgeCkpKVxuIChbYSBmIHggeV0gKHJlc2V0LXZhbHMhIGEgKGYgKC4tc3RhdGUgYSkgeCB5KSkpXG4gKFthIGYgeCB5ICYgbW9yZV0gKHJlc2V0LXZhbHMhIGEgKGFwcGx5IGYgKC4tc3RhdGUgYSkgeCB5IG1vcmUpKSkpXG4ifSB7OnN5bSBrZWVwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpdGVtKS4gTm90ZSxcbiAgdGhpcyBtZWFucyBmYWxzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW5jbHVkZWQuICBmIG11c3QgYmUgZnJlZSBvZlxuICBzaWRlLWVmZmVjdHMuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBrZWVwXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9uLW5pbCByZXN1bHRzIG9mIChmIGl0ZW0pLiBOb3RlLFxcbiAgdGhpcyBtZWFucyBmYWxzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW5jbHVkZWQuICBmIG11c3QgYmUgZnJlZSBvZlxcbiAgc2lkZS1lZmZlY3RzLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtmXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgKGxldCBbdiAoZiBpbnB1dCldIChpZiAobmlsPyB2KSByZXN1bHQgKHJmIHJlc3VsdCB2KSkpKSkpKVxuIChbZiBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGlmXG4gICAgIChjaHVua2VkLXNlcT8gcylcbiAgICAgKGxldFxuICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cbiAgICAgIChkb3RpbWVzXG4gICAgICAgW2kgc2l6ZV1cbiAgICAgICAobGV0IFt4IChmICgtbnRoIGMgaSkpXSAod2hlbi1ub3QgKG5pbD8geCkgKGNodW5rLWFwcGVuZCBiIHgpKSkpXG4gICAgICAoY2h1bmstY29ucyAoY2h1bmsgYikgKGtlZXAgZiAoY2h1bmstcmVzdCBzKSkpKVxuICAgICAobGV0XG4gICAgICBbeCAoZiAoZmlyc3QgcykpXVxuICAgICAgKGlmIChuaWw/IHgpIChrZWVwIGYgKHJlc3QgcykpIChjb25zIHggKGtlZXAgZiAocmVzdCBzKSkpKSkpKSkpKVxuIn0gezpzeW0gY2hhciwgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBjaGFyIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGFyXG4gXCJDb2VyY2UgdG8gY2hhclwiXG4gW3hdXG4gKGNvbmRcbiAgKG51bWJlcj8geClcbiAgKC5mcm9tQ2hhckNvZGUganMvU3RyaW5nIHgpXG4gIChhbmQgKHN0cmluZz8geCkgKD09ICguLWxlbmd0aCB4KSAxKSlcbiAgeFxuICA6ZWxzZVxuICAodGhyb3cgKGpzL0Vycm9yLiBcIkFyZ3VtZW50IHRvIGNoYXIgbXVzdCBiZSBhIGNoYXJhY3RlciBvciBudW1iZXJcIikpKSlcbiJ9IHs6c3ltIG1hcGNhdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBjb25jYXQgdG8gdGhlIHJlc3VsdCBvZiBhcHBseWluZyBtYXBcbiAgdG8gZiBhbmQgY29sbHMuICBUaHVzIGZ1bmN0aW9uIGYgc2hvdWxkIHJldHVybiBhIGNvbGxlY3Rpb24uIFJldHVybnNcbiAgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbnMgYXJlIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIFtbZl0gW2YgJiBjb2xsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBjYXRcbiBcIlJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBjb25jYXQgdG8gdGhlIHJlc3VsdCBvZiBhcHBseWluZyBtYXBcXG4gIHRvIGYgYW5kIGNvbGxzLiAgVGh1cyBmdW5jdGlvbiBmIHNob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uLiBSZXR1cm5zXFxuICBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9ucyBhcmUgcHJvdmlkZWRcIlxuIHs6YWRkZWQgXCIxLjBcIiwgOnN0YXRpYyB0cnVlfVxuIChbZl0gKGNvbXAgKG1hcCBmKSBjYXQpKVxuIChbZiAmIGNvbGxzXSAoYXBwbHkgY29uY2F0IChhcHBseSBtYXAgZiBjb2xscykpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1sb25nLCA6bWV0YSB7OmRvYyAiQ29lcmNlIHRvIGxvbmcgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiBJZGVudGljYWwgdG8gYGludCcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtbG9uZ1xuIFwiQ29lcmNlIHRvIGxvbmcgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiBJZGVudGljYWwgdG8gYGludCcuXCJcbiBbeF1cbiAoZml4IHgpKVxuIn0gezpzeW0gbTMtc2VlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbTMtc2VlZCAwKVxuIn0gezpzeW0gc29tZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBub3QgbmlsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb21lP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgbm90IG5pbCwgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKG5vdCAobmlsPyB4KSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbmVnYXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1uZWdhdGUgW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLW5lZ2F0ZSB4KSlcbiJ9IHs6c3ltIHJlbW92ZS10YXAsIDptZXRhIHs6ZG9jICJSZW1vdmUgZiBmcm9tIHRoZSB0YXAgc2V0LiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlLXRhcFxuIFwiUmVtb3ZlIGYgZnJvbSB0aGUgdGFwIHNldC5cIlxuIFtmXVxuIChtYXliZS1pbml0LXRhcHNldClcbiAoc3dhcCEgdGFwc2V0IGRpc2ogZilcbiBuaWwpXG4ifSB7OnN5bSBzeW1ib2wtaWRlbnRpY2FsPywgOm1ldGEgezpkb2MgIkVmZmljaWVudCB0ZXN0IHRvIGRldGVybWluZSB0aGF0IHR3byBzeW1ib2xzIGFyZSBpZGVudGljYWwuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIHN5bWJvbC1pZGVudGljYWw/XG4gXCJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28gc3ltYm9scyBhcmUgaWRlbnRpY2FsLlwiXG4gW3ggeV1cbiAoaWZcbiAgKGlkZW50aWNhbD8geCB5KVxuICB0cnVlXG4gIChpZlxuICAgKGFuZCAoc3ltYm9sPyB4KSAoc3ltYm9sPyB5KSlcbiAgIChpZGVudGljYWw/ICguLXN0ciB4KSAoLi1zdHIgeSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gKmNvbW1hbmQtbGluZS1hcmdzKiwgOm1ldGEgezpkb2MgIkEgc2VxdWVuY2Ugb2YgdGhlIHN1cHBsaWVkIGNvbW1hbmQgbGluZSBhcmd1bWVudHMsIG9yIG5pbCBpZlxuICBub25lIHdlcmUgc3VwcGxpZWQifSwgOnNvdXJjZSAiKGRlZiAqY29tbWFuZC1saW5lLWFyZ3MqIG5pbClcbiJ9IHs6c3ltIHJldmVyc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGluIHJldmVyc2Ugb3JkZXIuIE5vdCBsYXp5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmV2ZXJzZVxuIFwiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gY29sbCBpbiByZXZlcnNlIG9yZGVyLiBOb3QgbGF6eS5cIlxuIFtjb2xsXVxuIChpZiAocmV2ZXJzaWJsZT8gY29sbCkgKG9yIChyc2VxIGNvbGwpICgpKSAocmVkdWNlIGNvbmogKCkgY29sbCkpKVxuIn0gezpzeW0gaW5zdD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJbnN0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gaW5zdD8gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJbnN0XCIgW3hdIChzYXRpc2ZpZXM/IEluc3QgeCkpXG4ifSB7OnN5bSByYW5nZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiBudW1zIGZyb20gc3RhcnQgKGluY2x1c2l2ZSkgdG8gZW5kXG4gICAoZXhjbHVzaXZlKSwgYnkgc3RlcCwgd2hlcmUgc3RhcnQgZGVmYXVsdHMgdG8gMCwgc3RlcCB0byAxLFxuICAgYW5kIGVuZCB0byBpbmZpbml0eS4iLCA6YXJnbGlzdHMgW1tdIFtlbmRdIFtzdGFydCBlbmRdIFtzdGFydCBlbmQgc3RlcF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5nZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIG51bXMgZnJvbSBzdGFydCAoaW5jbHVzaXZlKSB0byBlbmRcXG4gICAoZXhjbHVzaXZlKSwgYnkgc3RlcCwgd2hlcmUgc3RhcnQgZGVmYXVsdHMgdG8gMCwgc3RlcCB0byAxLFxcbiAgIGFuZCBlbmQgdG8gaW5maW5pdHkuXCJcbiAoW10gKHJhbmdlIDAgKC4tTUFYX1ZBTFVFIGpzL051bWJlcikgMSkpXG4gKFtlbmRdIChyYW5nZSAwIGVuZCAxKSlcbiAoW3N0YXJ0IGVuZF0gKHJhbmdlIHN0YXJ0IGVuZCAxKSlcbiAoW3N0YXJ0IGVuZCBzdGVwXVxuICAoY29uZFxuICAgKHBvcz8gc3RlcClcbiAgIChpZlxuICAgICg8PSBlbmQgc3RhcnQpXG4gICAgKClcbiAgICAoaWZcbiAgICAgKGFuZCAoaW50ZWdlcj8gc3RhcnQpIChpbnRlZ2VyPyBlbmQpIChpbnRlZ2VyPyBzdGVwKSlcbiAgICAgKEludGVnZXJSYW5nZS4gbmlsIHN0YXJ0IGVuZCBzdGVwIG5pbCBuaWwgbmlsKVxuICAgICAoUmFuZ2UuIG5pbCBzdGFydCBlbmQgc3RlcCBuaWwgbmlsIG5pbCkpKVxuICAgKG5lZz8gc3RlcClcbiAgIChpZlxuICAgICg+PSBlbmQgc3RhcnQpXG4gICAgKClcbiAgICAoaWZcbiAgICAgKGFuZCAoaW50ZWdlcj8gc3RhcnQpIChpbnRlZ2VyPyBlbmQpIChpbnRlZ2VyPyBzdGVwKSlcbiAgICAgKEludGVnZXJSYW5nZS4gbmlsIHN0YXJ0IGVuZCBzdGVwIG5pbCBuaWwgbmlsKVxuICAgICAoUmFuZ2UuIG5pbCBzdGFydCBlbmQgc3RlcCBuaWwgbmlsIG5pbCkpKVxuICAgOmVsc2VcbiAgIChpZiAoPT0gZW5kIHN0YXJ0KSAoKSAocmVwZWF0IHN0YXJ0KSkpKSlcbiJ9IHs6c3ltIGJpdC1jb3VudCwgOm1ldGEgezpkb2MgIkNvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIG4iLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1jb3VudFxuIFwiQ291bnRzIHRoZSBudW1iZXIgb2YgYml0cyBzZXQgaW4gblwiXG4gW3ZdXG4gKGxldFxuICBbdlxuICAgKC0gdiAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IHYgMSkgMTQzMTY1NTc2NSkpXG4gICB2XG4gICAoKyAoYml0LWFuZCB2IDg1ODk5MzQ1OSkgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCB2IDIpIDg1ODk5MzQ1OSkpXVxuICAoYml0LXNoaWZ0LXJpZ2h0XG4gICAoKiAoYml0LWFuZCAoKyB2IChiaXQtc2hpZnQtcmlnaHQgdiA0KSkgMjUyNjQ1MTM1KSAxNjg0MzAwOSlcbiAgIDI0KSkpXG4ifSB7OnN5bSBzb3J0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNvcnRlZCBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbC4gQ29tcCBjYW4gYmVcbiAgIGJvb2xlYW4tdmFsdWVkIGNvbXBhcmlzb24gZnVuY3Rpb24sIG9yIGEgLS8wLysgdmFsdWVkIGNvbXBhcmF0b3IuXG4gICBDb21wIGRlZmF1bHRzIHRvIGNvbXBhcmUuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW2NvbXAgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0XG4gXCJSZXR1cm5zIGEgc29ydGVkIHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsLiBDb21wIGNhbiBiZVxcbiAgIGJvb2xlYW4tdmFsdWVkIGNvbXBhcmlzb24gZnVuY3Rpb24sIG9yIGEgLS8wLysgdmFsdWVkIGNvbXBhcmF0b3IuXFxuICAgQ29tcCBkZWZhdWx0cyB0byBjb21wYXJlLlwiXG4gKFtjb2xsXSAoc29ydCBjb21wYXJlIGNvbGwpKVxuIChbY29tcCBjb2xsXVxuICAoaWZcbiAgIChzZXEgY29sbClcbiAgIChsZXRcbiAgICBbYSAodG8tYXJyYXkgY29sbCldXG4gICAgKGdhcnJheS9zdGFibGVTb3J0IGEgKGZuLT5jb21wYXJhdG9yIGNvbXApKVxuICAgICh3aXRoLW1ldGEgKHNlcSBhKSAobWV0YSBjb2xsKSkpXG4gICAoKSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWluYy1pbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWluYy1pbnQgW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLWluYy1pbnQgeCkpXG4ifSB7OnN5bSAtY29tcGFyZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIsIHplcm8sIG9yIGEgcG9zaXRpdmUgbnVtYmVyIHdoZW4geCBpcyBsb2dpY2FsbHlcbiAgICAgJ2xlc3MgdGhhbicsICdlcXVhbCB0bycsIG9yICdncmVhdGVyIHRoYW4nIHkuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6cHJvdG9jb2wgSUNvbXBhcmFibGV9IHs6c3ltIG1hcC1pbmRleGVkLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gMFxuICBhbmQgdGhlIGZpcnN0IGl0ZW0gb2YgY29sbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmcgZiB0byAxIGFuZCB0aGUgc2Vjb25kXG4gIGl0ZW0gaW4gY29sbCwgZXRjLCB1bnRpbCBjb2xsIGlzIGV4aGF1c3RlZC4gVGh1cyBmdW5jdGlvbiBmIHNob3VsZFxuICBhY2NlcHQgMiBhcmd1bWVudHMsIGluZGV4IGFuZCBpdGVtLiBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXG4gIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtaW5kZXhlZFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gMFxcbiAgYW5kIHRoZSBmaXJzdCBpdGVtIG9mIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gMSBhbmQgdGhlIHNlY29uZFxcbiAgaXRlbSBpbiBjb2xsLCBldGMsIHVudGlsIGNvbGwgaXMgZXhoYXVzdGVkLiBUaHVzIGZ1bmN0aW9uIGYgc2hvdWxkXFxuICBhY2NlcHQgMiBhcmd1bWVudHMsIGluZGV4IGFuZCBpdGVtLiBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtmXVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbaSAodm9sYXRpbGUhIC0xKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdIChyZiByZXN1bHQgKGYgKHZzd2FwISBpIGluYykgaW5wdXQpKSkpKSkpXG4gKFtmIGNvbGxdXG4gIChsZXRmblxuICAgWyhtYXBpXG4gICAgIFtpZHggY29sbF1cbiAgICAgKGxhenktc2VxXG4gICAgICAod2hlbi1sZXRcbiAgICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAgIChpZlxuICAgICAgICAoY2h1bmtlZC1zZXE/IHMpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtjIChjaHVuay1maXJzdCBzKSBzaXplIChjb3VudCBjKSBiIChjaHVuay1idWZmZXIgc2l6ZSldXG4gICAgICAgICAoZG90aW1lcyBbaSBzaXplXSAoY2h1bmstYXBwZW5kIGIgKGYgKCsgaWR4IGkpICgtbnRoIGMgaSkpKSlcbiAgICAgICAgIChjaHVuay1jb25zIChjaHVuayBiKSAobWFwaSAoKyBpZHggc2l6ZSkgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgICAgKGNvbnMgKGYgaWR4IChmaXJzdCBzKSkgKG1hcGkgKGluYyBpZHgpIChyZXN0IHMpKSkpKSkpXVxuICAgKG1hcGkgMCBjb2xsKSkpKVxuIn0gezpzeW0gYXJyYXktbGlzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGFycmF5LWxpc3QgW10gKEFycmF5TGlzdC4gKGFycmF5KSkpXG4ifSB7OnN5bSByYW5kLW50aCwgOm1ldGEgezpkb2MgIlJldHVybiBhIHJhbmRvbSBlbGVtZW50IG9mIHRoZSAoc2VxdWVudGlhbCkgY29sbGVjdGlvbi4gV2lsbCBoYXZlXG4gIHRoZSBzYW1lIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBhcyBudGggZm9yIHRoZSBnaXZlblxuICBjb2xsZWN0aW9uLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZC1udGhcbiBcIlJldHVybiBhIHJhbmRvbSBlbGVtZW50IG9mIHRoZSAoc2VxdWVudGlhbCkgY29sbGVjdGlvbi4gV2lsbCBoYXZlXFxuICB0aGUgc2FtZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYXMgbnRoIGZvciB0aGUgZ2l2ZW5cXG4gIGNvbGxlY3Rpb24uXCJcbiBbY29sbF1cbiAobnRoIGNvbGwgKHJhbmQtaW50IChjb3VudCBjb2xsKSkpKVxuIn0gezpzeW0gY29tcCwgOm1ldGEgezpkb2MgIlRha2VzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbmQgcmV0dXJucyBhIGZuIHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uXG4gIG9mIHRob3NlIGZucy4gIFRoZSByZXR1cm5lZCBmbiB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmdzLFxuICBhcHBsaWVzIHRoZSByaWdodG1vc3Qgb2YgZm5zIHRvIHRoZSBhcmdzLCB0aGUgbmV4dFxuICBmbiAocmlnaHQtdG8tbGVmdCkgdG8gdGhlIHJlc3VsdCwgZXRjLiIsIDphcmdsaXN0cyBbW10gW2ZdIFtmIGddIFtmIGcgaF0gW2YxIGYyIGYzICYgZnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcFxuIFwiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUgY29tcG9zaXRpb25cXG4gIG9mIHRob3NlIGZucy4gIFRoZSByZXR1cm5lZCBmbiB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmdzLFxcbiAgYXBwbGllcyB0aGUgcmlnaHRtb3N0IG9mIGZucyB0byB0aGUgYXJncywgdGhlIG5leHRcXG4gIGZuIChyaWdodC10by1sZWZ0KSB0byB0aGUgcmVzdWx0LCBldGMuXCJcbiAoW10gaWRlbnRpdHkpXG4gKFtmXSBmKVxuIChbZiBnXVxuICAoZm5cbiAgIChbXSAoZiAoZykpKVxuICAgKFt4XSAoZiAoZyB4KSkpXG4gICAoW3ggeV0gKGYgKGcgeCB5KSkpXG4gICAoW3ggeSB6XSAoZiAoZyB4IHkgeikpKVxuICAgKFt4IHkgeiAmIGFyZ3NdIChmIChhcHBseSBnIHggeSB6IGFyZ3MpKSkpKVxuIChbZiBnIGhdXG4gIChmblxuICAgKFtdIChmIChnIChoKSkpKVxuICAgKFt4XSAoZiAoZyAoaCB4KSkpKVxuICAgKFt4IHldIChmIChnIChoIHggeSkpKSlcbiAgIChbeCB5IHpdIChmIChnIChoIHggeSB6KSkpKVxuICAgKFt4IHkgeiAmIGFyZ3NdIChmIChnIChhcHBseSBoIHggeSB6IGFyZ3MpKSkpKSlcbiAoW2YxIGYyIGYzICYgZnNdXG4gIChsZXRcbiAgIFtmcyAocmV2ZXJzZSAobGlzdCogZjEgZjIgZjMgZnMpKV1cbiAgIChmblxuICAgIFsmIGFyZ3NdXG4gICAgKGxvb3BcbiAgICAgW3JldCAoYXBwbHkgKGZpcnN0IGZzKSBhcmdzKSBmcyAobmV4dCBmcyldXG4gICAgIChpZiBmcyAocmVjdXIgKChmaXJzdCBmcykgcmV0KSAobmV4dCBmcykpIHJldCkpKSkpKVxuIn0gezpzeW0gYXJyYXktY2h1bmssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbYXJyXSBbYXJyIG9mZl0gW2FyciBvZmYgZW5kXV19LCA6c291cmNlICIoZGVmblxuIGFycmF5LWNodW5rXG4gKFthcnJdIChBcnJheUNodW5rLiBhcnIgMCAoYWxlbmd0aCBhcnIpKSlcbiAoW2FyciBvZmZdIChBcnJheUNodW5rLiBhcnIgb2ZmIChhbGVuZ3RoIGFycikpKVxuIChbYXJyIG9mZiBlbmRdIChBcnJheUNodW5rLiBhcnIgb2ZmIGVuZCkpKVxuIn0gezpzeW0gZGlzcGF0Y2gtZm4sIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm4gaXRzIGRpc3BhdGNoLWZuLiIsIDphcmdsaXN0cyAoW211bHRpZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzcGF0Y2gtZm5cbiBcIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybiBpdHMgZGlzcGF0Y2gtZm4uXCJcbiBbbXVsdGlmbl1cbiAoLWRpc3BhdGNoLWZuIG11bHRpZm4pKVxuIn0gezpzeW0gYml0LXNoaWZ0LXJpZ2h0LXplcm8tZmlsbCwgOm1ldGEgezpkb2MgIkRFUFJFQ0FURUQ6IEJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGwiLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LXNoaWZ0LXJpZ2h0LXplcm8tZmlsbFxuIFwiREVQUkVDQVRFRDogQml0d2lzZSBzaGlmdCByaWdodCB3aXRoIHplcm8gZmlsbFwiXG4gW3ggbl1cbiAoY2xqcy5jb3JlL2JpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgeCBuKSlcbiJ9IHs6c3ltIC1hcy10cmFuc2llbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3LCB0cmFuc2llbnQgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbiwgaW4gY29uc3RhbnQgdGltZS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUVkaXRhYmxlQ29sbGVjdGlvbn0gezpzeW0gZG9ydW4sIDptZXRhIHs6ZG9jICJXaGVuIGxhenkgc2VxdWVuY2VzIGFyZSBwcm9kdWNlZCB2aWEgZnVuY3Rpb25zIHRoYXQgaGF2ZSBzaWRlXG4gIGVmZmVjdHMsIGFueSBlZmZlY3RzIG90aGVyIHRoYW4gdGhvc2UgbmVlZGVkIHRvIHByb2R1Y2UgdGhlIGZpcnN0XG4gIGVsZW1lbnQgaW4gdGhlIHNlcSBkbyBub3Qgb2NjdXIgdW50aWwgdGhlIHNlcSBpcyBjb25zdW1lZC4gZG9ydW4gY2FuXG4gIGJlIHVzZWQgdG8gZm9yY2UgYW55IGVmZmVjdHMuIFdhbGtzIHRocm91Z2ggdGhlIHN1Y2Nlc3NpdmUgbmV4dHMgb2ZcbiAgdGhlIHNlcSwgZG9lcyBub3QgcmV0YWluIHRoZSBoZWFkIGFuZCByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRvcnVuXG4gXCJXaGVuIGxhenkgc2VxdWVuY2VzIGFyZSBwcm9kdWNlZCB2aWEgZnVuY3Rpb25zIHRoYXQgaGF2ZSBzaWRlXFxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxcbiAgZWxlbWVudCBpbiB0aGUgc2VxIGRvIG5vdCBvY2N1ciB1bnRpbCB0aGUgc2VxIGlzIGNvbnN1bWVkLiBkb3J1biBjYW5cXG4gIGJlIHVzZWQgdG8gZm9yY2UgYW55IGVmZmVjdHMuIFdhbGtzIHRocm91Z2ggdGhlIHN1Y2Nlc3NpdmUgbmV4dHMgb2ZcXG4gIHRoZSBzZXEsIGRvZXMgbm90IHJldGFpbiB0aGUgaGVhZCBhbmQgcmV0dXJucyBuaWwuXCJcbiAoW2NvbGxdICh3aGVuLWxldCBbcyAoc2VxIGNvbGwpXSAocmVjdXIgKG5leHQgcykpKSlcbiAoW24gY29sbF1cbiAgKHdoZW4gKGFuZCAoc2VxIGNvbGwpIChwb3M/IG4pKSAocmVjdXIgKGRlYyBuKSAobmV4dCBjb2xsKSkpKSlcbiJ9IHs6c3ltIHByLXNlcXVlbnRpYWwtd3JpdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dyaXRlciBwcmludC1vbmUgYmVnaW4gc2VwIGVuZCBvcHRzIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHItc2VxdWVudGlhbC13cml0ZXJcbiBbd3JpdGVyIHByaW50LW9uZSBiZWdpbiBzZXAgZW5kIG9wdHMgY29sbF1cbiAoYmluZGluZ1xuICBbKnByaW50LWxldmVsKiAod2hlbi1ub3QgKG5pbD8gKnByaW50LWxldmVsKikgKGRlYyAqcHJpbnQtbGV2ZWwqKSldXG4gIChpZlxuICAgKGFuZCAobm90IChuaWw/ICpwcmludC1sZXZlbCopKSAobmVnPyAqcHJpbnQtbGV2ZWwqKSlcbiAgICgtd3JpdGUgd3JpdGVyIFwiI1wiKVxuICAgKGRvXG4gICAgKC13cml0ZSB3cml0ZXIgYmVnaW4pXG4gICAgKGlmXG4gICAgICh6ZXJvPyAoOnByaW50LWxlbmd0aCBvcHRzKSlcbiAgICAgKHdoZW4gKHNlcSBjb2xsKSAoLXdyaXRlIHdyaXRlciAob3IgKDptb3JlLW1hcmtlciBvcHRzKSBcIi4uLlwiKSkpXG4gICAgIChkb1xuICAgICAgKHdoZW4gKHNlcSBjb2xsKSAocHJpbnQtb25lIChmaXJzdCBjb2xsKSB3cml0ZXIgb3B0cykpXG4gICAgICAobG9vcFxuICAgICAgIFtjb2xsIChuZXh0IGNvbGwpIG4gKGRlYyAoOnByaW50LWxlbmd0aCBvcHRzKSldXG4gICAgICAgKGlmXG4gICAgICAgIChhbmQgY29sbCAob3IgKG5pbD8gbikgKG5vdCAoemVybz8gbikpKSlcbiAgICAgICAgKGRvXG4gICAgICAgICAoLXdyaXRlIHdyaXRlciBzZXApXG4gICAgICAgICAocHJpbnQtb25lIChmaXJzdCBjb2xsKSB3cml0ZXIgb3B0cylcbiAgICAgICAgIChyZWN1ciAobmV4dCBjb2xsKSAoZGVjIG4pKSlcbiAgICAgICAgKHdoZW5cbiAgICAgICAgIChhbmQgKHNlcSBjb2xsKSAoemVybz8gbikpXG4gICAgICAgICAoLXdyaXRlIHdyaXRlciBzZXApXG4gICAgICAgICAoLXdyaXRlIHdyaXRlciAob3IgKDptb3JlLW1hcmtlciBvcHRzKSBcIi4uLlwiKSkpKSkpKVxuICAgICgtd3JpdGUgd3JpdGVyIGVuZCkpKSkpXG4ifSB7OnN5bSBzaW1wbGUtc3ltYm9sPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgd2l0aG91dCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2ltcGxlLXN5bWJvbD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgd2l0aG91dCBhIG5hbWVzcGFjZVwiXG4gW3hdXG4gKGFuZCAoc3ltYm9sPyB4KSAobmlsPyAobmFtZXNwYWNlIHgpKSkpXG4ifSB7OnN5bSBJSW5kZXhlZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjb2xsZWN0aW9ucyB0byBwcm92aWRlIGluZGV4ZWQtYmFzZWQgYWNjZXNzIHRvIHRoZWlyIGl0ZW1zLiJ9LCA6bWV0aG9kcyAoLW50aCl9IHs6c3ltIGRpc2osIDptZXRhIHs6ZG9jICJkaXNqW29pbl0uIFJldHVybnMgYSBuZXcgc2V0IG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0XG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtjb2xsIGtdIFtjb2xsIGsgJiBrc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNqXG4gXCJkaXNqW29pbl0uIFJldHVybnMgYSBuZXcgc2V0IG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0XFxuICBkb2VzIG5vdCBjb250YWluIGtleShzKS5cIlxuIChbY29sbF0gY29sbClcbiAoW2NvbGwga10gKHdoZW4tbm90IChuaWw/IGNvbGwpICgtZGlzam9pbiBjb2xsIGspKSlcbiAoW2NvbGwgayAmIGtzXVxuICAod2hlbi1ub3RcbiAgIChuaWw/IGNvbGwpXG4gICAobGV0XG4gICAgW3JldCAoZGlzaiBjb2xsIGspXVxuICAgIChpZiBrcyAocmVjdXIgcmV0IChmaXJzdCBrcykgKG5leHQga3MpKSByZXQpKSkpKVxuIn0gezpzeW0gSVByaW50V2l0aFdyaXRlciwgOm1ldGEgezpkb2MgIlRoZSBvbGQgSVByaW50YWJsZSBwcm90b2NvbCdzIGltcGxlbWVudGF0aW9uIGNvbnNpc3RlZCBvZiBidWlsZGluZyBhIGdpYW50XG4gICBsaXN0IG9mIHN0cmluZ3MgdG8gY29uY2F0ZW5hdGUuICBUaGlzIGludm9sdmVkIGxvdHMgb2YgY29uY2F0IGNhbGxzLFxuICAgaW50ZXJtZWRpYXRlIHZlY3RvcnMsIGFuZCBsYXp5LXNlcXMsIGFuZCB3YXMgdmVyeSBzbG93IGluIHNvbWUgb2xkZXIgSlNcbiAgIGVuZ2luZXMuICBJUHJpbnRXaXRoV3JpdGVyIGltcGxlbWVudHMgcHJpbnRpbmcgdmlhIHRoZSBJV3JpdGVyIHByb3RvY29sLCBzbyBpdFxuICAgYmUgaW1wbGVtZW50ZWQgZWZmaWNpZW50bHkgaW4gdGVybXMgb2YgZS5nLiBhIFN0cmluZ0J1ZmZlciBhcHBlbmQuIn0sIDptZXRob2RzICgtcHItd3JpdGVyKX0gezpzeW0gSVZlY3RvciwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdmVjdG9yIGZ1bmN0aW9uYWxpdHkgdG8gY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtYXNzb2Mtbil9IHs6c3ltIElJdGVyYWJsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBpdGVyYXRpbmcgb3ZlciBhIGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtaXRlcmF0b3IpfSB7OnN5bSBldmFsLCA6bWV0YSB7OmRvYyAiRXZhbHVhdGVzIHRoZSBmb3JtIGRhdGEgc3RydWN0dXJlIChub3QgdGV4dCEpIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gIERlbGVnYXRlcyB0byBjbGpzLmNvcmUvKmV2YWwqLiBJbnRlbmRlZCBmb3IgdXNlIGluIHNlbGYtaG9zdGVkIENsb2p1cmVTY3JpcHQsXG4gIHdoaWNoIHNldHMgdXAgYW4gaW1wbGVtZW50YXRpb24gb2YgY2xqcy5jb3JlLypldmFsKiBmb3IgdGhhdCBlbnZpcm9ubWVudC4iLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGV2YWxcbiBcIkV2YWx1YXRlcyB0aGUgZm9ybSBkYXRhIHN0cnVjdHVyZSAobm90IHRleHQhKSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxcbiAgRGVsZWdhdGVzIHRvIGNsanMuY29yZS8qZXZhbCouIEludGVuZGVkIGZvciB1c2UgaW4gc2VsZi1ob3N0ZWQgQ2xvanVyZVNjcmlwdCxcXG4gIHdoaWNoIHNldHMgdXAgYW4gaW1wbGVtZW50YXRpb24gb2YgY2xqcy5jb3JlLypldmFsKiBmb3IgdGhhdCBlbnZpcm9ubWVudC5cIlxuIFtmb3JtXVxuICgqZXZhbCogZm9ybSkpXG4ifSB7OnN5bSBjb25zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzZXEgd2hlcmUgeCBpcyB0aGUgZmlyc3QgZWxlbWVudCBhbmQgY29sbCBpcyB0aGUgcmVzdC4iLCA6YXJnbGlzdHMgKFt4IGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uc1xuIFwiUmV0dXJucyBhIG5ldyBzZXEgd2hlcmUgeCBpcyB0aGUgZmlyc3QgZWxlbWVudCBhbmQgY29sbCBpcyB0aGUgcmVzdC5cIlxuIFt4IGNvbGxdXG4gKGNvbmRcbiAgKG5pbD8gY29sbClcbiAgKExpc3QuIG5pbCB4IG5pbCAxIG5pbClcbiAgKGltcGxlbWVudHM/IElTZXEgY29sbClcbiAgKENvbnMuIG5pbCB4IGNvbGwgbmlsKVxuICA6ZGVmYXVsdFxuICAoQ29ucy4gbmlsIHggKHNlcSBjb2xsKSBuaWwpKSlcbiJ9IHs6c3ltIGZsb2F0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBmbG9hdHMgW3hdIHgpXG4ifSB7OnN5bSBwb3M/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG51bSBpcyBncmVhdGVyIHRoYW4gemVybywgZWxzZSBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcG9zP1xuIFwiUmV0dXJucyB0cnVlIGlmIG51bSBpcyBncmVhdGVyIHRoYW4gemVybywgZWxzZSBmYWxzZVwiXG4gW3hdXG4gKGNsanMuY29yZS9wb3M/IHgpKVxuIn0gezpzeW0gZm5pbCwgOm1ldGEgezpkb2MgIlRha2VzIGEgZnVuY3Rpb24gZiwgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGxzIGYsIHJlcGxhY2luZ1xuICBhIG5pbCBmaXJzdCBhcmd1bWVudCB0byBmIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlIHguIEhpZ2hlciBhcml0eVxuICB2ZXJzaW9ucyBjYW4gcmVwbGFjZSBhcmd1bWVudHMgaW4gdGhlIHNlY29uZCBhbmQgdGhpcmRcbiAgcG9zaXRpb25zICh5LCB6KS4gTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBmIGNhbiB0YWtlIGFueSBudW1iZXIgb2ZcbiAgYXJndW1lbnRzLCBub3QganVzdCB0aGUgb25lKHMpIGJlaW5nIG5pbC1wYXRjaGVkLiIsIDphcmdsaXN0cyBbW2YgeF0gW2YgeCB5XSBbZiB4IHkgel1dfSwgOnNvdXJjZSAiKGRlZm5cbiBmbmlsXG4gXCJUYWtlcyBhIGZ1bmN0aW9uIGYsIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyBmLCByZXBsYWNpbmdcXG4gIGEgbmlsIGZpcnN0IGFyZ3VtZW50IHRvIGYgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWUgeC4gSGlnaGVyIGFyaXR5XFxuICB2ZXJzaW9ucyBjYW4gcmVwbGFjZSBhcmd1bWVudHMgaW4gdGhlIHNlY29uZCBhbmQgdGhpcmRcXG4gIHBvc2l0aW9ucyAoeSwgeikuIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gZiBjYW4gdGFrZSBhbnkgbnVtYmVyIG9mXFxuICBhcmd1bWVudHMsIG5vdCBqdXN0IHRoZSBvbmUocykgYmVpbmcgbmlsLXBhdGNoZWQuXCJcbiAoW2YgeF1cbiAgKGZuXG4gICAoW2FdIChmIChpZiAobmlsPyBhKSB4IGEpKSlcbiAgIChbYSBiXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSBiKSlcbiAgIChbYSBiIGNdIChmIChpZiAobmlsPyBhKSB4IGEpIGIgYykpXG4gICAoW2EgYiBjICYgZHNdIChhcHBseSBmIChpZiAobmlsPyBhKSB4IGEpIGIgYyBkcykpKSlcbiAoW2YgeCB5XVxuICAoZm5cbiAgIChbYSBiXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSAoaWYgKG5pbD8gYikgeSBiKSkpXG4gICAoW2EgYiBjXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSAoaWYgKG5pbD8gYikgeSBiKSBjKSlcbiAgIChbYSBiIGMgJiBkc10gKGFwcGx5IGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikgYyBkcykpKSlcbiAoW2YgeCB5IHpdXG4gIChmblxuICAgKFthIGJdIChmIChpZiAobmlsPyBhKSB4IGEpIChpZiAobmlsPyBiKSB5IGIpKSlcbiAgIChbYSBiIGNdIChmIChpZiAobmlsPyBhKSB4IGEpIChpZiAobmlsPyBiKSB5IGIpIChpZiAobmlsPyBjKSB6IGMpKSlcbiAgIChbYSBiIGMgJiBkc11cbiAgICAoYXBwbHlcbiAgICAgZlxuICAgICAoaWYgKG5pbD8gYSkgeCBhKVxuICAgICAoaWYgKG5pbD8gYikgeSBiKVxuICAgICAoaWYgKG5pbD8gYykgeiBjKVxuICAgICBkcykpKSkpXG4ifSB7OnN5bSBtZXJnZS13aXRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCB0aGF0IGNvbnNpc3RzIG9mIHRoZSByZXN0IG9mIHRoZSBtYXBzIGNvbmotZWQgb250b1xuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nKHMpXG4gIGZyb20gdGhlIGxhdHRlciAobGVmdC10by1yaWdodCkgd2lsbCBiZSBjb21iaW5lZCB3aXRoIHRoZSBtYXBwaW5nIGluXG4gIHRoZSByZXN1bHQgYnkgY2FsbGluZyAoZiB2YWwtaW4tcmVzdWx0IHZhbC1pbi1sYXR0ZXIpLiIsIDphcmdsaXN0cyAoW2YgJiBtYXBzXSl9LCA6c291cmNlICIoZGVmblxuIG1lcmdlLXdpdGhcbiBcIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cXG4gIHRoZSBmaXJzdC4gIElmIGEga2V5IG9jY3VycyBpbiBtb3JlIHRoYW4gb25lIG1hcCwgdGhlIG1hcHBpbmcocylcXG4gIGZyb20gdGhlIGxhdHRlciAobGVmdC10by1yaWdodCkgd2lsbCBiZSBjb21iaW5lZCB3aXRoIHRoZSBtYXBwaW5nIGluXFxuICB0aGUgcmVzdWx0IGJ5IGNhbGxpbmcgKGYgdmFsLWluLXJlc3VsdCB2YWwtaW4tbGF0dGVyKS5cIlxuIFtmICYgbWFwc11cbiAod2hlblxuICAoc29tZSBpZGVudGl0eSBtYXBzKVxuICAobGV0XG4gICBbbWVyZ2UtZW50cnlcbiAgICAoZm5cbiAgICAgW20gZV1cbiAgICAgKGxldFxuICAgICAgW2sgKGtleSBlKSB2ICh2YWwgZSldXG4gICAgICAoaWYgKGNvbnRhaW5zPyBtIGspIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIHYpKSAoYXNzb2MgbSBrIHYpKSkpXG4gICAgbWVyZ2UyXG4gICAgKGZuIFttMSBtMl0gKHJlZHVjZSBtZXJnZS1lbnRyeSAob3IgbTEge30pIChzZXEgbTIpKSldXG4gICAocmVkdWNlIG1lcmdlMiBtYXBzKSkpKVxuIn0gezpzeW0gbnRocmVzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG50aCByZXN0IG9mIGNvbGwsIGNvbGwgd2hlbiBuIGlzIDAuIiwgOmFyZ2xpc3RzIChbY29sbCBuXSl9LCA6c291cmNlICIoZGVmblxuIG50aHJlc3RcbiBcIlJldHVybnMgdGhlIG50aCByZXN0IG9mIGNvbGwsIGNvbGwgd2hlbiBuIGlzIDAuXCJcbiBbY29sbCBuXVxuIChsb29wXG4gIFtuIG4geHMgY29sbF1cbiAgKGlmLWxldCBbeHMgKGFuZCAocG9zPyBuKSAoc2VxIHhzKSldIChyZWN1ciAoZGVjIG4pIChyZXN0IHhzKSkgeHMpKSlcbiJ9IHs6c3ltICp3YXJuLW9uLWluZmVyKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKndhcm4tb24taW5mZXIqIGZhbHNlKVxuIn0gezpzeW0gLWZpbmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtYXAgZW50cnkgZm9yIGtleSwgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC4iLCA6YXJnbGlzdHMgKFtjb2xsIGtdKX0sIDpwcm90b2NvbCBJRmluZH0gezpzeW0gc2VxdWVudGlhbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNlcXVlbnRpYWwiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNlcXVlbnRpYWw/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNlcXVlbnRpYWxcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElTZXF1ZW50aWFsIHgpKVxuIn0gezpzeW0gTG9uZ0ltcGwsIDptZXRhIHs6ZG9jICJJTlRFUk5BTDogZG8gbm90IHVzZSJ9LCA6c291cmNlICIoZGVmIExvbmdJbXBsIGdvb2cubWF0aC5Mb25nKVxuIn0gezpzeW0gbTMtbWl4LUgxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2gxIGsxXSl9LCA6c291cmNlICIoZGVmblxuIG0zLW1peC1IMVxuIFtoMSBrMV1cbiAoaW50XG4gICgtPlxuICAgKGludCBoMSlcbiAgIChiaXQteG9yIChpbnQgazEpKVxuICAgKGludC1yb3RhdGUtbGVmdCAxMylcbiAgIChpbXVsIDUpXG4gICAoKyAoaW50IDM4NjQyOTIxOTYpKSkpKVxuIn0gezpzeW0gcHJpbS1zZXEsIDptZXRhIHs6ZG9jICJDcmVhdGUgc2VxIGZyb20gYSBwcmltaXRpdmUgSmF2YVNjcmlwdCBBcnJheS1saWtlLiIsIDphcmdsaXN0cyBbW3ByaW1dIFtwcmltIGldXX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbS1zZXFcbiBcIkNyZWF0ZSBzZXEgZnJvbSBhIHByaW1pdGl2ZSBKYXZhU2NyaXB0IEFycmF5LWxpa2UuXCJcbiAoW3ByaW1dIChwcmltLXNlcSBwcmltIDApKVxuIChbcHJpbSBpXSAod2hlbiAoPCBpIChhbGVuZ3RoIHByaW0pKSAoSW5kZXhlZFNlcS4gcHJpbSBpIG5pbCkpKSlcbiJ9IHs6c3ltICpwcmludC1sZXZlbCosIDptZXRhIHs6ZG9jICIqcHJpbnQtbGV2ZWwqIGNvbnRyb2xzIGhvdyBtYW55IGxldmVscyBkZWVwIHRoZSBwcmludGVyIHdpbGxcbiAgcHJpbnQgbmVzdGVkIG9iamVjdHMuIElmIGl0IGlzIGJvdW5kIHRvIGxvZ2ljYWwgZmFsc2UsIHRoZXJlIGlzIG5vXG4gIGxpbWl0LiBPdGhlcndpc2UsIGl0IG11c3QgYmUgYm91bmQgdG8gYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtXG4gIGxldmVsIHRvIHByaW50LiBFYWNoIGFyZ3VtZW50IHRvIHByaW50IGlzIGF0IGxldmVsIDA7IGlmIGFuIGFyZ3VtZW50IGlzIGFcbiAgY29sbGVjdGlvbiwgaXRzIGl0ZW1zIGFyZSBhdCBsZXZlbCAxOyBhbmQgc28gb24uIElmIGFuIG9iamVjdCBpcyBhXG4gIGNvbGxlY3Rpb24gYW5kIGlzIGF0IGEgbGV2ZWwgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBib3VuZCB0b1xuICAqcHJpbnQtbGV2ZWwqLCB0aGUgcHJpbnRlciBwcmludHMgJyMnIHRvIHJlcHJlc2VudCBpdC4gVGhlIHJvb3QgYmluZGluZ1xuICBpcyBuaWwgaW5kaWNhdGluZyBubyBsaW1pdC4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbGV2ZWwqIG5pbClcbiJ9IHs6c3ltIHNodWZmbGUsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSByYW5kb20gcGVybXV0YXRpb24gb2YgY29sbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2h1ZmZsZVxuIFwiUmV0dXJuIGEgcmFuZG9tIHBlcm11dGF0aW9uIG9mIGNvbGxcIlxuIFtjb2xsXVxuIChsZXQgW2EgKHRvLWFycmF5IGNvbGwpXSAoZ2FycmF5L3NodWZmbGUgYSkgKHZlYyBhKSkpXG4ifSB7OnN5bSBoYXNoLWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm4gaGFzaC1rZXl3b3JkIFtrXSAoaW50ICgrIChoYXNoLXN5bWJvbCBrKSAyNjU0NDM1NzY5KSkpXG4ifSB7OnN5bSBmaW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFwIGVudHJ5IGZvciBrZXksIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuIiwgOmFyZ2xpc3RzIChbY29sbCBrXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmRcbiBcIlJldHVybnMgdGhlIG1hcCBlbnRyeSBmb3Iga2V5LCBvciBuaWwgaWYga2V5IG5vdCBwcmVzZW50LlwiXG4gW2NvbGwga11cbiAoaWZcbiAgKGlmaW5kPyBjb2xsKVxuICAoLWZpbmQgY29sbCBrKVxuICAod2hlblxuICAgKGFuZCAobm90IChuaWw/IGNvbGwpKSAoYXNzb2NpYXRpdmU/IGNvbGwpIChjb250YWlucz8gY29sbCBrKSlcbiAgIChNYXBFbnRyeS4gayAoZ2V0IGNvbGwgaykgbmlsKSkpKVxuIn0gezpzeW0gYWxlbmd0aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuIFdvcmtzIG9uIGFycmF5cyBvZiBhbGwgdHlwZXMuIiwgOmFyZ2xpc3RzIChbYXJyYXldKX0sIDpzb3VyY2UgIihkZWZuXG4gYWxlbmd0aFxuIFwiUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheS4gV29ya3Mgb24gYXJyYXlzIG9mIGFsbCB0eXBlcy5cIlxuIFthcnJheV1cbiAoY2xqcy5jb3JlL2FsZW5ndGggYXJyYXkpKVxuIn0gezpzeW0gYml0LXhvciwgOm1ldGEgezpkb2MgIkJpdHdpc2UgZXhjbHVzaXZlIG9yIiwgOmFyZ2xpc3RzIFtbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQteG9yXG4gXCJCaXR3aXNlIGV4Y2x1c2l2ZSBvclwiXG4gKFt4IHldIChjbGpzLmNvcmUvYml0LXhvciB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBiaXQteG9yIChjbGpzLmNvcmUvYml0LXhvciB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCwgOm1ldGEgezpkb2MgIkJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGwiLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0XG4gXCJCaXR3aXNlIHNoaWZ0IHJpZ2h0IHdpdGggemVybyBmaWxsXCJcbiBbeCBuXVxuIChjbGpzLmNvcmUvdW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IHggbikpXG4ifSB7OnN5bSBuZWc/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG51bSBpcyBsZXNzIHRoYW4gemVybywgZWxzZSBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmVnP1xuIFwiUmV0dXJucyB0cnVlIGlmIG51bSBpcyBsZXNzIHRoYW4gemVybywgZWxzZSBmYWxzZVwiXG4gW3hdXG4gKGNsanMuY29yZS9uZWc/IHgpKVxuIn0gezpzeW0gLXJlbW92ZS1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWYgZGlzcGF0Y2gtdmFsXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIGpzLWludm9rZSwgOm1ldGEgezpkb2MgIkludm9rZSBKYXZhU2NyaXB0IG9iamVjdCBtZXRob2QgdmlhIHN0cmluZy4gTmVlZGVkIHdoZW4gdGhlXG4gIHN0cmluZyBpcyBub3QgYSB2YWxpZCB1bnF1b3RlZCBwcm9wZXJ0eSBuYW1lLiIsIDphcmdsaXN0cyAoW29iaiBzICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1pbnZva2VcbiBcIkludm9rZSBKYXZhU2NyaXB0IG9iamVjdCBtZXRob2QgdmlhIHN0cmluZy4gTmVlZGVkIHdoZW4gdGhlXFxuICBzdHJpbmcgaXMgbm90IGEgdmFsaWQgdW5xdW90ZWQgcHJvcGVydHkgbmFtZS5cIlxuIFtvYmogcyAmIGFyZ3NdXG4gKC5hcHBseSAodW5jaGVja2VkLWdldCBvYmogcykgb2JqIChpbnRvLWFycmF5IGFyZ3MpKSlcbiJ9IHs6c3ltIG0zLW1peC1LMSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtMy1taXgtSzFcbiBbazFdXG4gKC0+IChpbnQgazEpIChpbXVsIG0zLUMxKSAoaW50LXJvdGF0ZS1sZWZ0IDE1KSAoaW11bCBtMy1DMikpKVxuIn0gezpzeW0gdW5jaGVja2VkLWZsb2F0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1mbG9hdCBbeF0geClcbiJ9IHs6c3ltIHVuZGVmaW5lZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpZGVudGljYWwgdG8gdGhlIEphdmFTY3JpcHQgdW5kZWZpbmVkIHZhbHVlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5kZWZpbmVkP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaWRlbnRpY2FsIHRvIHRoZSBKYXZhU2NyaXB0IHVuZGVmaW5lZCB2YWx1ZS5cIlxuIFt4XVxuIChjbGpzLmNvcmUvdW5kZWZpbmVkPyB4KSlcbiJ9IHs6c3ltIElNZXRhLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgbWV0YWRhdGEgb2YgYW4gb2JqZWN0LiJ9LCA6bWV0aG9kcyAoLW1ldGEpfSB7OnN5bSByZWR1Y2VkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSByZXN1bHQgb2YgYSBjYWxsIHRvIHJlZHVjZWQiLCA6YXJnbGlzdHMgKFtyXSl9LCA6c291cmNlICIoZGVmblxuIHJlZHVjZWQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byByZWR1Y2VkXCJcbiBbcl1cbiAoaW5zdGFuY2U/IFJlZHVjZWQgcikpXG4ifSB7OnN5bSBkaXNqISwgOm1ldGEgezpkb2MgImRpc2pbb2luXS4gUmV0dXJucyBhIHRyYW5zaWVudCBzZXQgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXRcbiAgZG9lcyBub3QgY29udGFpbiBrZXkocykuIiwgOmFyZ2xpc3RzIFtbdGNvbGwgdmFsXSBbdGNvbGwgdmFsICYgdmFsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNqIVxuIFwiZGlzaltvaW5dLiBSZXR1cm5zIGEgdHJhbnNpZW50IHNldCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdFxcbiAgZG9lcyBub3QgY29udGFpbiBrZXkocykuXCJcbiAoW3Rjb2xsIHZhbF0gKC1kaXNqb2luISB0Y29sbCB2YWwpKVxuIChbdGNvbGwgdmFsICYgdmFsc11cbiAgKGxldFxuICAgW250Y29sbCAoLWRpc2pvaW4hIHRjb2xsIHZhbCldXG4gICAoaWYgdmFscyAocmVjdXIgbnRjb2xsIChmaXJzdCB2YWxzKSAobmV4dCB2YWxzKSkgbnRjb2xsKSkpKVxuIn0gezpzeW0gLWxvb2t1cCwgOm1ldGEgezpkb2MgIlVzZSBrIHRvIGxvb2sgdXAgYSB2YWx1ZSBpbiBvLiBJZiBub3QtZm91bmQgaXMgc3VwcGxpZWQgYW5kIGsgaXMgbm90XG4gICAgIGEgdmFsaWQgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCBmb3IgbG9vayB1cCwgbm90LWZvdW5kIGlzIHJldHVybmVkLiIsIDphcmdsaXN0cyAoW28ga10gW28gayBub3QtZm91bmRdKX0sIDpwcm90b2NvbCBJTG9va3VwfSB7OnN5bSBmbG9hdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgZm9yIEphdmFTY3JpcHQgbnVtYmVycywgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmxvYXQ/XG4gXCJSZXR1cm5zIHRydWUgZm9yIEphdmFTY3JpcHQgbnVtYmVycywgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKG51bWJlcj8geCkpXG4ifSB7OnN5bSBJQ2xvbmVhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGNsb25pbmcgYSB2YWx1ZS4ifSwgOm1ldGhvZHMgKC1jbG9uZSl9IHs6c3ltIElFbmNvZGVDbG9qdXJlLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLWpzLT5jbGopfSB7OnN5bSBib29sZWFucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBib29sZWFucyBbeF0geClcbiJ9IHs6c3ltIGludC1hcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gYXJyYXkgb2YgaW50cy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxuICB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbc2l6ZS1vci1zZXFdIFtzaXplIGluaXQtdmFsLW9yLXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnQtYXJyYXlcbiBcIkNyZWF0ZXMgYW4gYXJyYXkgb2YgaW50cy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxcbiAgd2l0aCBDbG9qdXJlLlwiXG4gKFtzaXplLW9yLXNlcV1cbiAgKGlmXG4gICAobnVtYmVyPyBzaXplLW9yLXNlcSlcbiAgIChpbnQtYXJyYXkgc2l6ZS1vci1zZXEgbmlsKVxuICAgKGludG8tYXJyYXkgc2l6ZS1vci1zZXEpKSlcbiAoW3NpemUgaW5pdC12YWwtb3Itc2VxXVxuICAobGV0XG4gICBbYSAobWFrZS1hcnJheSBzaXplKV1cbiAgIChpZlxuICAgIChzZXE/IGluaXQtdmFsLW9yLXNlcSlcbiAgICAobGV0XG4gICAgIFtzIChzZXEgaW5pdC12YWwtb3Itc2VxKV1cbiAgICAgKGxvb3BcbiAgICAgIFtpIDAgcyBzXVxuICAgICAgKGlmXG4gICAgICAgKGFuZCBzICg8IGkgc2l6ZSkpXG4gICAgICAgKGRvIChhc2V0IGEgaSAoZmlyc3QgcykpIChyZWN1ciAoaW5jIGkpIChuZXh0IHMpKSlcbiAgICAgICBhKSkpXG4gICAgKGRvIChkb3RpbWVzIFtpIHNpemVdIChhc2V0IGEgaSBpbml0LXZhbC1vci1zZXEpKSBhKSkpKSlcbiJ9IHs6c3ltIHNldD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVNldCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0P1xuIFwiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElTZXRcIlxuIFt4XVxuIChpZiAobmlsPyB4KSBmYWxzZSAoc2F0aXNmaWVzPyBJU2V0IHgpKSlcbiJ9IHs6c3ltIGl0ZXJhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaW1wbGVtZW50cyBJSXRlcmFibGUgcHJvdG9jb2wuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpdGVyYWJsZT9cbiBcIlJldHVybiB0cnVlIGlmIHggaW1wbGVtZW50cyBJSXRlcmFibGUgcHJvdG9jb2wuXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJSXRlcmFibGUgeCkpXG4ifSB7OnN5bSBjYXQsIDptZXRhIHs6ZG9jICJBIHRyYW5zZHVjZXIgd2hpY2ggY29uY2F0ZW5hdGVzIHRoZSBjb250ZW50cyBvZiBlYWNoIGlucHV0LCB3aGljaCBtdXN0IGJlIGFcbiAgY29sbGVjdGlvbiwgaW50byB0aGUgcmVkdWN0aW9uLiIsIDphcmdsaXN0cyAoW3JmXSl9LCA6c291cmNlICIoZGVmblxuIGNhdFxuIFwiQSB0cmFuc2R1Y2VyIHdoaWNoIGNvbmNhdGVuYXRlcyB0aGUgY29udGVudHMgb2YgZWFjaCBpbnB1dCwgd2hpY2ggbXVzdCBiZSBhXFxuICBjb2xsZWN0aW9uLCBpbnRvIHRoZSByZWR1Y3Rpb24uXCJcbiB7OmFkZGVkIFwiMS43XCJ9XG4gW3JmXVxuIChsZXRcbiAgW3JmMSAocHJlc2VydmluZy1yZWR1Y2VkIHJmKV1cbiAgKGZuXG4gICAoW10gKHJmKSlcbiAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgIChbcmVzdWx0IGlucHV0XSAocmVkdWNlIHJmMSByZXN1bHQgaW5wdXQpKSkpKVxuIn0gezpzeW0gLXByLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvIHdyaXRlciBvcHRzXSl9LCA6cHJvdG9jb2wgSVByaW50V2l0aFdyaXRlcn0gezpzeW0gZmx1c2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBmbHVzaCBbXSBuaWwpXG4ifSB7OnN5bSBzZXQtZnJvbS1pbmRleGVkLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpc2VxXSl9LCA6c291cmNlICIoZGVmblxuIHNldC1mcm9tLWluZGV4ZWQtc2VxXG4gW2lzZXFdXG4gKGxldFxuICBbYXJyXG4gICAoLi1hcnIgaXNlcSlcbiAgIHJldFxuICAgKGFyZWR1Y2UgYXJyIGkgcmVzICgtYXMtdHJhbnNpZW50ICN7fSkgKC1jb25qISByZXMgKGFnZXQgYXJyIGkpKSldXG4gICgtcGVyc2lzdGVudCEgcmV0KSkpXG4ifSB7OnN5bSB0YWtlLXdoaWxlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2Ygc3VjY2Vzc2l2ZSBpdGVtcyBmcm9tIGNvbGwgd2hpbGVcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3ByZWRdIFtwcmVkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZS13aGlsZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2Ygc3VjY2Vzc2l2ZSBpdGVtcyBmcm9tIGNvbGwgd2hpbGVcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXFxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW3ByZWRdXG4gIChmblxuICAgW3JmXVxuICAgKGZuXG4gICAgKFtdIChyZikpXG4gICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAoaWYgKHByZWQgaW5wdXQpIChyZiByZXN1bHQgaW5wdXQpIChyZWR1Y2VkIHJlc3VsdCkpKSkpKVxuIChbcHJlZCBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKHdoZW5cbiAgICAgKHByZWQgKGZpcnN0IHMpKVxuICAgICAoY29ucyAoZmlyc3QgcykgKHRha2Utd2hpbGUgcHJlZCAocmVzdCBzKSkpKSkpKSlcbiJ9IHs6c3ltIHZhcnktbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIG9iaiwgd2l0aFxuICAoYXBwbHkgZiAobWV0YSBvYmopIGFyZ3MpIGFzIGl0cyBtZXRhZGF0YS4iLCA6YXJnbGlzdHMgW1tvYmogZl0gW29iaiBmIGFdIFtvYmogZiBhIGJdIFtvYmogZiBhIGIgY10gW29iaiBmIGEgYiBjIGRdIFtvYmogZiBhIGIgYyBkICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cbiB2YXJ5LW1ldGFcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIG9iaiwgd2l0aFxcbiAgKGFwcGx5IGYgKG1ldGEgb2JqKSBhcmdzKSBhcyBpdHMgbWV0YWRhdGEuXCJcbiAoW29iaiBmXSAod2l0aC1tZXRhIG9iaiAoZiAobWV0YSBvYmopKSkpXG4gKFtvYmogZiBhXSAod2l0aC1tZXRhIG9iaiAoZiAobWV0YSBvYmopIGEpKSlcbiAoW29iaiBmIGEgYl0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhIGIpKSlcbiAoW29iaiBmIGEgYiBjXSAod2l0aC1tZXRhIG9iaiAoZiAobWV0YSBvYmopIGEgYiBjKSkpXG4gKFtvYmogZiBhIGIgYyBkXSAod2l0aC1tZXRhIG9iaiAoZiAobWV0YSBvYmopIGEgYiBjIGQpKSlcbiAoW29iaiBmIGEgYiBjIGQgJiBhcmdzXVxuICAod2l0aC1tZXRhIG9iaiAoYXBwbHkgZiAobWV0YSBvYmopIGEgYiBjIGQgYXJncykpKSlcbiJ9IHs6c3ltIElOZXh0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgbmV4dCBpdGVtcyBvZiBhIGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtbmV4dCl9IHs6c3ltIGlzX3Byb3RvXywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBpc19wcm90b18gW3hdIChpZGVudGljYWw/ICguLXByb3RvdHlwZSAoLi1jb25zdHJ1Y3RvciB4KSkgeCkpXG4ifSB7OnN5bSBTVEFSVCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgU1RBUlQgI2pzIHt9KVxuIn0gezpzeW0gSUNvdW50ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHRoZSBhYmlsaXR5IHRvIGNvdW50IGEgY29sbGVjdGlvbiBpbiBjb25zdGFudCB0aW1lLiJ9LCA6bWV0aG9kcyAoLWNvdW50KX0gezpzeW0gSU1hcEVudHJ5LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGV4YW1pbmluZyBhIG1hcCBlbnRyeS4ifSwgOm1ldGhvZHMgKC1rZXkgLXZhbCl9IHs6c3ltIDw9LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgbm9uLWRlY3JlYXNpbmcgb3JkZXIsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiA8PVxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgbm9uLWRlY3JlYXNpbmcgb3JkZXIsXFxuICBvdGhlcndpc2UgZmFsc2UuXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldIChjbGpzLmNvcmUvPD0geCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKGNsanMuY29yZS88PSB4IHkpXG4gICAoaWZcbiAgICAobmV4dCBtb3JlKVxuICAgIChyZWN1ciB5IChmaXJzdCBtb3JlKSAobmV4dCBtb3JlKSlcbiAgICAoY2xqcy5jb3JlLzw9IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBNT0RVTEVfSU5GT1MsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1PRFVMRV9JTkZPUyBuaWwpXG4ifSB7OnN5bSBjb25qISwgOm1ldGEgezpkb2MgIkFkZHMgdmFsIHRvIHRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiwgYW5kIHJldHVybiB0Y29sbC4gVGhlICdhZGRpdGlvbidcbiAgbWF5IGhhcHBlbiBhdCBkaWZmZXJlbnQgJ3BsYWNlcycgZGVwZW5kaW5nIG9uIHRoZSBjb25jcmV0ZSB0eXBlLiIsIDphcmdsaXN0cyBbW10gW3Rjb2xsXSBbdGNvbGwgdmFsXSBbdGNvbGwgdmFsICYgdmFsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25qIVxuIFwiQWRkcyB2YWwgdG8gdGhlIHRyYW5zaWVudCBjb2xsZWN0aW9uLCBhbmQgcmV0dXJuIHRjb2xsLiBUaGUgJ2FkZGl0aW9uJ1xcbiAgbWF5IGhhcHBlbiBhdCBkaWZmZXJlbnQgJ3BsYWNlcycgZGVwZW5kaW5nIG9uIHRoZSBjb25jcmV0ZSB0eXBlLlwiXG4gKFtdICh0cmFuc2llbnQgW10pKVxuIChbdGNvbGxdIHRjb2xsKVxuIChbdGNvbGwgdmFsXSAoLWNvbmohIHRjb2xsIHZhbCkpXG4gKFt0Y29sbCB2YWwgJiB2YWxzXVxuICAobGV0XG4gICBbbnRjb2xsICgtY29uaiEgdGNvbGwgdmFsKV1cbiAgIChpZiB2YWxzIChyZWN1ciBudGNvbGwgKGZpcnN0IHZhbHMpIChuZXh0IHZhbHMpKSBudGNvbGwpKSkpXG4ifSB7OnN5bSAtcG9wLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzdGFjayB3aXRob3V0IHRoZSBpdGVtIG9uIHRvcCBvZiB0aGUgc3RhY2suIElzIHVzZWRcbiAgICAgYnkgY2xqcy5jb3JlL3BvcC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSVN0YWNrfSB7OnN5bSByZXBlYXRlZGx5LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmdW5jdGlvbiBvZiBubyBhcmdzLCBwcmVzdW1hYmx5IHdpdGggc2lkZSBlZmZlY3RzLCBhbmRcbiAgcmV0dXJucyBhbiBpbmZpbml0ZSAob3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIGxhenkgc2VxdWVuY2Ugb2YgY2FsbHNcbiAgdG8gaXQiLCA6YXJnbGlzdHMgW1tmXSBbbiBmXV19LCA6c291cmNlICIoZGVmblxuIHJlcGVhdGVkbHlcbiBcIlRha2VzIGEgZnVuY3Rpb24gb2Ygbm8gYXJncywgcHJlc3VtYWJseSB3aXRoIHNpZGUgZWZmZWN0cywgYW5kXFxuICByZXR1cm5zIGFuIGluZmluaXRlIChvciBsZW5ndGggbiBpZiBzdXBwbGllZCkgbGF6eSBzZXF1ZW5jZSBvZiBjYWxsc1xcbiAgdG8gaXRcIlxuIChbZl0gKGxhenktc2VxIChjb25zIChmKSAocmVwZWF0ZWRseSBmKSkpKVxuIChbbiBmXSAodGFrZSBuIChyZXBlYXRlZGx5IGYpKSkpXG4ifSB7OnN5bSB6aXBtYXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIHdpdGggdGhlIGtleXMgbWFwcGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHMuIiwgOmFyZ2xpc3RzIChba2V5cyB2YWxzXSl9LCA6c291cmNlICIoZGVmblxuIHppcG1hcFxuIFwiUmV0dXJucyBhIG1hcCB3aXRoIHRoZSBrZXlzIG1hcHBlZCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWxzLlwiXG4gW2tleXMgdmFsc11cbiAobG9vcFxuICBbbWFwICh0cmFuc2llbnQge30pIGtzIChzZXEga2V5cykgdnMgKHNlcSB2YWxzKV1cbiAgKGlmXG4gICAoYW5kIGtzIHZzKVxuICAgKHJlY3VyIChhc3NvYyEgbWFwIChmaXJzdCBrcykgKGZpcnN0IHZzKSkgKG5leHQga3MpIChuZXh0IHZzKSlcbiAgIChwZXJzaXN0ZW50ISBtYXApKSkpXG4ifSB7OnN5bSByZXNldC12YWxzISwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsLiBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZVxuICAgYXRvbSBiZWZvcmUgYW5kIGFmdGVyIHRoZSByZXNldC4iLCA6YXJnbGlzdHMgKFthIG5ldy12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldC12YWxzIVxuIFwiU2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwuIFJldHVybnMgW29sZCBuZXddLCB0aGUgdmFsdWUgb2YgdGhlXFxuICAgYXRvbSBiZWZvcmUgYW5kIGFmdGVyIHRoZSByZXNldC5cIlxuIHs6YWRkZWQgXCIxLjlcIn1cbiBbYSBuZXctdmFsdWVdXG4gKGxldFxuICBbdmFsaWRhdGUgKC4tdmFsaWRhdG9yIGEpXVxuICAod2hlbi1ub3RcbiAgIChuaWw/IHZhbGlkYXRlKVxuICAgKHdoZW4tbm90XG4gICAgKHZhbGlkYXRlIG5ldy12YWx1ZSlcbiAgICAodGhyb3cgKGpzL0Vycm9yLiBcIlZhbGlkYXRvciByZWplY3RlZCByZWZlcmVuY2Ugc3RhdGVcIikpKSlcbiAgKGxldFxuICAgW29sZC12YWx1ZSAoLi1zdGF0ZSBhKV1cbiAgIChzZXQhICguLXN0YXRlIGEpIG5ldy12YWx1ZSlcbiAgICh3aGVuLW5vdFxuICAgIChuaWw/ICguLXdhdGNoZXMgYSkpXG4gICAgKC1ub3RpZnktd2F0Y2hlcyBhIG9sZC12YWx1ZSBuZXctdmFsdWUpKVxuICAgW29sZC12YWx1ZSBuZXctdmFsdWVdKSkpXG4ifSB7OnN5bSBJU3RhY2ssIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlaXIgaXRlbXMgYXMgc3RhY2tzLiBUaGUgdG9wXG4gIG9mIHRoZSBzdGFjayBzaG91bGQgYmUgYWNjZXNzZWQgaW4gdGhlIG1vc3QgZWZmaWNpZW50IHdheSBmb3IgdGhlIGRpZmZlcmVudFxuICBkYXRhIHN0cnVjdHVyZXMuIn0sIDptZXRob2RzICgtcGVlayAtcG9wKX0gezpzeW0gLXJlbW92ZS13YXRjaCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgd2F0Y2hlciB0aGF0IGNvcnJlc3BvbmRzIHRvIGtleSBmcm9tIHRoaXMuIiwgOmFyZ2xpc3RzIChbdGhpcyBrZXldKX0sIDpwcm90b2NvbCBJV2F0Y2hhYmxlfSB7OnN5bSBJVm9sYXRpbGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHZvbGF0aWxlIGZ1bmN0aW9uYWxpdHkuIn0sIDptZXRob2RzICgtdnJlc2V0ISl9IHs6c3ltIHJlbW92ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgZmFsc2UuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3ByZWRdIFtwcmVkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCBmYWxzZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtwcmVkXSAoZmlsdGVyIChjb21wbGVtZW50IHByZWQpKSlcbiAoW3ByZWQgY29sbF0gKGZpbHRlciAoY29tcGxlbWVudCBwcmVkKSBjb2xsKSkpXG4ifSB7OnN5bSAqLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcHJvZHVjdCBvZiBudW1zLiAoKikgcmV0dXJucyAxLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuICpcbiBcIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS5cIlxuIChbXSAxKVxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS8qIHggeSkpXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlICogKGNsanMuY29yZS8qIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gcmUtcGF0dGVybiwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gaW5zdGFuY2Ugb2YgUmVnRXhwIHdoaWNoIGhhcyBjb21waWxlZCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmUtcGF0dGVyblxuIFwiUmV0dXJucyBhbiBpbnN0YW5jZSBvZiBSZWdFeHAgd2hpY2ggaGFzIGNvbXBpbGVkIHRoZSBwcm92aWRlZCBzdHJpbmcuXCJcbiBbc11cbiAoaWZcbiAgKGluc3RhbmNlPyBqcy9SZWdFeHAgcylcbiAgc1xuICAobGV0XG4gICBbW3ByZWZpeCBmbGFnc11cbiAgICAocmUtZmluZCAjXCJeXFwoXFw/KFtpZG1zdXhdKilcXClcIiBzKVxuICAgIHBhdHRlcm5cbiAgICAoc3VicyBzIChpZiAobmlsPyBwcmVmaXgpIDAgKGNvdW50IHByZWZpeCkpKV1cbiAgIChqcy9SZWdFeHAuIHBhdHRlcm4gKG9yIGZsYWdzIFwiXCIpKSkpKVxuIn0gezpzeW0gbWluLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGVhc3Qgb2YgdGhlIG51bXMuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWluXG4gXCJSZXR1cm5zIHRoZSBsZWFzdCBvZiB0aGUgbnVtcy5cIlxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS9taW4geCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgbWluIChjbGpzLmNvcmUvbWluIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gLXBlcnNpc3RlbnQhLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIHBlcnNpc3RlbnQgZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0Y29sbCBhbmQgcmV0dXJucyBpdC4iLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnByb3RvY29sIElUcmFuc2llbnRDb2xsZWN0aW9ufSB7OnN5bSAtbnRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4IG4gaW4gdGhlIGNvbGxlY3Rpb24gY29sbC5cbiAgICAgUmV0dXJucyBub3QtZm91bmQgaWYgaW5kZXggbiBpcyBvdXQgb2YgYm91bmRzIGFuZCBub3QtZm91bmQgaXMgc3VwcGxpZWQuIiwgOmFyZ2xpc3RzIChbY29sbCBuXSBbY29sbCBuIG5vdC1mb3VuZF0pfSwgOnByb3RvY29sIElJbmRleGVkfSB7OnN5bSBwb3AhLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB0aGUgbGFzdCBpdGVtIGZyb20gYSB0cmFuc2llbnQgdmVjdG9yLiBJZlxuICB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgdGhyb3dzIGFuIGV4Y2VwdGlvbi4gUmV0dXJucyB0Y29sbCIsIDphcmdsaXN0cyAoW3Rjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHBvcCFcbiBcIlJlbW92ZXMgdGhlIGxhc3QgaXRlbSBmcm9tIGEgdHJhbnNpZW50IHZlY3Rvci4gSWZcXG4gIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LCB0aHJvd3MgYW4gZXhjZXB0aW9uLiBSZXR1cm5zIHRjb2xsXCJcbiBbdGNvbGxdXG4gKC1wb3AhIHRjb2xsKSlcbiJ9IHs6c3ltIGNodW5rLWFwcGVuZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtiIHhdKX0sIDpzb3VyY2UgIihkZWZuIGNodW5rLWFwcGVuZCBbYiB4XSAoLmFkZCBiIHgpKVxuIn0gezpzeW0gKnVuY2hlY2tlZC1hcnJheXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqdW5jaGVja2VkLWFycmF5cyogZmFsc2UpXG4ifSB7OnN5bSBwcm4tc3RyLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBwci1zdHIgZm9sbG93ZWQgYnkgKG5ld2xpbmUpIiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxuIHBybi1zdHJcbiBcIlNhbWUgYXMgcHItc3RyIGZvbGxvd2VkIGJ5IChuZXdsaW5lKVwiXG4gWyYgb2Jqc11cbiAocHJuLXN0ci13aXRoLW9wdHMgb2JqcyAocHItb3B0cykpKVxuIn0gezpzeW0gSVJldmVyc2libGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgcmV2ZXJzaW5nIGEgc2VxLiJ9LCA6bWV0aG9kcyAoLXJzZXEpfSB7OnN5bSByZXZlcnNpYmxlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIHNhdGlzZmllcz8gSVJldmVyc2libGUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXZlcnNpYmxlP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzPyBJUmV2ZXJzaWJsZS5cIlxuIFtjb2xsXVxuIChzYXRpc2ZpZXM/IElSZXZlcnNpYmxlIGNvbGwpKVxuIn0gezpzeW0gLXJlYWxpemVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIGZvciB4IGhhcyBiZWVuIHByb2R1Y2VkLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElQZW5kaW5nfSB7OnN5bSAtYWRkLXdhdGNoLCA6bWV0YSB7OmRvYyAiQWRkcyBhIHdhdGNoZXIgZnVuY3Rpb24gZiB0byB0aGlzLiBLZXlzIG11c3QgYmUgdW5pcXVlIHBlciByZWZlcmVuY2UsXG4gICAgIGFuZCBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHdhdGNoIHdpdGggLXJlbW92ZS13YXRjaC4iLCA6YXJnbGlzdHMgKFt0aGlzIGtleSBmXSl9LCA6cHJvdG9jb2wgSVdhdGNoYWJsZX0gezpzeW0gLWRlcmVmLXdpdGgtdGltZW91dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvIG1zZWMgdGltZW91dC12YWxdKX0sIDpwcm90b2NvbCBJRGVyZWZXaXRoVGltZW91dH0gezpzeW0gY29uaiwgOm1ldGEgezpkb2MgImNvbmpbb2luXS4gUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIHdpdGggdGhlIHhzXG4gICdhZGRlZCcuIChjb25qIG5pbCBpdGVtKSByZXR1cm5zIChpdGVtKS5cbiAgKGNvbmogY29sbCkgcmV0dXJucyBjb2xsLiAoY29uaikgcmV0dXJucyBbXS5cbiAgVGhlICdhZGRpdGlvbicgbWF5IGhhcHBlbiBhdCBkaWZmZXJlbnQgJ3BsYWNlcycgZGVwZW5kaW5nXG4gIG9uIHRoZSBjb25jcmV0ZSB0eXBlLiIsIDphcmdsaXN0cyBbW10gW2NvbGxdIFtjb2xsIHhdIFtjb2xsIHggJiB4c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25qXG4gXCJjb25qW29pbl0uIFJldHVybnMgYSBuZXcgY29sbGVjdGlvbiB3aXRoIHRoZSB4c1xcbiAgJ2FkZGVkJy4gKGNvbmogbmlsIGl0ZW0pIHJldHVybnMgKGl0ZW0pLlxcbiAgKGNvbmogY29sbCkgcmV0dXJucyBjb2xsLiAoY29uaikgcmV0dXJucyBbXS5cXG4gIFRoZSAnYWRkaXRpb24nIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZ1xcbiAgb24gdGhlIGNvbmNyZXRlIHR5cGUuXCJcbiAoW10gW10pXG4gKFtjb2xsXSBjb2xsKVxuIChbY29sbCB4XSAoaWYtbm90IChuaWw/IGNvbGwpICgtY29uaiBjb2xsIHgpIChsaXN0IHgpKSlcbiAoW2NvbGwgeCAmIHhzXVxuICAoaWYgeHMgKHJlY3VyIChjb25qIGNvbGwgeCkgKGZpcnN0IHhzKSAobmV4dCB4cykpIChjb25qIGNvbGwgeCkpKSlcbiJ9IHs6c3ltIC1zb3J0ZWQtc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNvcnRlZCBzZXEgZnJvbSBjb2xsIGluIGVpdGhlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4iLCA6YXJnbGlzdHMgKFtjb2xsIGFzY2VuZGluZz9dKX0sIDpwcm90b2NvbCBJU29ydGVkfSB7OnN5bSB0cmFuc2R1Y2UsIDptZXRhIHs6ZG9jICJyZWR1Y2Ugd2l0aCBhIHRyYW5zZm9ybWF0aW9uIG9mIGYgKHhmKS4gSWYgaW5pdCBpcyBub3RcbiAgc3VwcGxpZWQsIChmKSB3aWxsIGJlIGNhbGxlZCB0byBwcm9kdWNlIGl0LiBmIHNob3VsZCBiZSBhIHJlZHVjaW5nXG4gIHN0ZXAgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGJvdGggMSBhbmQgMiBhcmd1bWVudHMsIGlmIGl0IGFjY2VwdHNcbiAgb25seSAyIHlvdSBjYW4gYWRkIHRoZSBhcml0eS0xIHdpdGggJ2NvbXBsZXRpbmcnLiBSZXR1cm5zIHRoZSByZXN1bHRcbiAgb2YgYXBwbHlpbmcgKHRoZSB0cmFuc2Zvcm1lZCkgeGYgdG8gaW5pdCBhbmQgdGhlIGZpcnN0IGl0ZW0gaW4gY29sbCxcbiAgdGhlbiBhcHBseWluZyB4ZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmIGNvbGxcbiAgY29udGFpbnMgbm8gaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXRcbiAgY2VydGFpbiB0cmFuc2Zvcm1zIG1heSBpbmplY3Qgb3Igc2tpcCBpdGVtcy4iLCA6YXJnbGlzdHMgW1t4Zm9ybSBmIGNvbGxdIFt4Zm9ybSBmIGluaXQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2R1Y2VcbiBcInJlZHVjZSB3aXRoIGEgdHJhbnNmb3JtYXRpb24gb2YgZiAoeGYpLiBJZiBpbml0IGlzIG5vdFxcbiAgc3VwcGxpZWQsIChmKSB3aWxsIGJlIGNhbGxlZCB0byBwcm9kdWNlIGl0LiBmIHNob3VsZCBiZSBhIHJlZHVjaW5nXFxuICBzdGVwIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBib3RoIDEgYW5kIDIgYXJndW1lbnRzLCBpZiBpdCBhY2NlcHRzXFxuICBvbmx5IDIgeW91IGNhbiBhZGQgdGhlIGFyaXR5LTEgd2l0aCAnY29tcGxldGluZycuIFJldHVybnMgdGhlIHJlc3VsdFxcbiAgb2YgYXBwbHlpbmcgKHRoZSB0cmFuc2Zvcm1lZCkgeGYgdG8gaW5pdCBhbmQgdGhlIGZpcnN0IGl0ZW0gaW4gY29sbCxcXG4gIHRoZW4gYXBwbHlpbmcgeGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZiBjb2xsXFxuICBjb250YWlucyBubyBpdGVtcywgcmV0dXJucyBpbml0IGFuZCBmIGlzIG5vdCBjYWxsZWQuIE5vdGUgdGhhdFxcbiAgY2VydGFpbiB0cmFuc2Zvcm1zIG1heSBpbmplY3Qgb3Igc2tpcCBpdGVtcy5cIlxuIChbeGZvcm0gZiBjb2xsXSAodHJhbnNkdWNlIHhmb3JtIGYgKGYpIGNvbGwpKVxuIChbeGZvcm0gZiBpbml0IGNvbGxdXG4gIChsZXQgW2YgKHhmb3JtIGYpIHJldCAocmVkdWNlIGYgaW5pdCBjb2xsKV0gKGYgcmV0KSkpKVxuIn0gezpzeW0gLXN3YXAhLCA6bWV0YSB7OmRvYyAiU3dhcHMgdGhlIHZhbHVlIG9mIG8gdG8gYmUgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiIsIDphcmdsaXN0cyAoW28gZl0gW28gZiBhXSBbbyBmIGEgYl0gW28gZiBhIGIgeHNdKX0sIDpwcm90b2NvbCBJU3dhcH0gezpzeW0gKnByaW50LWxlbmd0aCosIDptZXRhIHs6ZG9jICIqcHJpbnQtbGVuZ3RoKiBjb250cm9scyBob3cgbWFueSBpdGVtcyBvZiBlYWNoIGNvbGxlY3Rpb24gdGhlXG4gIHByaW50ZXIgd2lsbCBwcmludC4gSWYgaXQgaXMgYm91bmQgdG8gbG9naWNhbCBmYWxzZSwgdGhlcmUgaXMgbm9cbiAgbGltaXQuIE90aGVyd2lzZSwgaXQgbXVzdCBiZSBib3VuZCB0byBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltdW1cbiAgbnVtYmVyIG9mIGl0ZW1zIG9mIGVhY2ggY29sbGVjdGlvbiB0byBwcmludC4gSWYgYSBjb2xsZWN0aW9uIGNvbnRhaW5zXG4gIG1vcmUgaXRlbXMsIHRoZSBwcmludGVyIHdpbGwgcHJpbnQgaXRlbXMgdXAgdG8gdGhlIGxpbWl0IGZvbGxvd2VkIGJ5XG4gICcuLi4nIHRvIHJlcHJlc2VudCB0aGUgcmVtYWluaW5nIGl0ZW1zLiBUaGUgcm9vdCBiaW5kaW5nIGlzIG5pbFxuICBpbmRpY2F0aW5nIG5vIGxpbWl0LiJ9LCA6c291cmNlICIoZGVmICpwcmludC1sZW5ndGgqIG5pbClcbiJ9IHs6c3ltIGpzLWRlbGV0ZSwgOm1ldGEgezpkb2MgIkRlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAgUmV0dXJucyB0cnVlIHVwb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW29iaiBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtZGVsZXRlXG4gXCJEZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3QuXFxuICBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuXCJcbiBbb2JqIGtleV1cbiAoY2xqcy5jb3JlL2pzLWRlbGV0ZSBvYmoga2V5KSlcbiJ9IHs6c3ltIHRydXRoXywgOm1ldGEgezpkb2MgIkludGVybmFsIC0gZG8gbm90IHVzZSEiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB0cnV0aF8gXCJJbnRlcm5hbCAtIGRvIG5vdCB1c2UhXCIgW3hdIChjbGpzLmNvcmUvdHJ1dGhfIHgpKVxuIn0gezpzeW0gYXJyYXktaW5kZXgtb2YsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyIGtdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJyYXktaW5kZXgtb2ZcbiBbYXJyIGtdXG4gKGNvbmRcbiAgKGtleXdvcmQ/IGspXG4gIChhcnJheS1pbmRleC1vZi1rZXl3b3JkPyBhcnIgaylcbiAgKG9yIChzdHJpbmc/IGspIChudW1iZXI/IGspKVxuICAoYXJyYXktaW5kZXgtb2YtaWRlbnRpY2FsPyBhcnIgaylcbiAgKHN5bWJvbD8gaylcbiAgKGFycmF5LWluZGV4LW9mLXN5bWJvbD8gYXJyIGspXG4gIChuaWw/IGspXG4gIChhcnJheS1pbmRleC1vZi1uaWw/IGFycilcbiAgOmVsc2VcbiAgKGFycmF5LWluZGV4LW9mLWVxdWl2PyBhcnIgaykpKVxuIn0gezpzeW0ga2V5LT5qcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1trXSBbayBwcmltaXRpdmUtZm5dXX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LT5qc1xuIChba10gKGtleS0+anMgayBjbGotPmpzKSlcbiAoW2sgcHJpbWl0aXZlLWZuXVxuICAoY29uZFxuICAgKHNhdGlzZmllcz8gSUVuY29kZUpTIGspXG4gICAoLWNsai0+anMgaylcbiAgIChvciAoc3RyaW5nPyBrKSAobnVtYmVyPyBrKSAoa2V5d29yZD8gaykgKHN5bWJvbD8gaykpXG4gICAocHJpbWl0aXZlLWZuIGspXG4gICA6ZGVmYXVsdFxuICAgKHByLXN0ciBrKSkpKVxuIn0gezpzeW0gSUVuY29kZUpTLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLWNsai0+anMgLWtleS0+anMpfSB7OnN5bSBjb21wYXJlLWFuZC1zZXQhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzZXRzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIG5ld3ZhbCBpZiBhbmQgb25seSBpZiB0aGVcbiAgY3VycmVudCB2YWx1ZSBvZiB0aGUgYXRvbSBpcyBlcXVhbCB0byBvbGR2YWwuIFJldHVybnMgdHJ1ZSBpZlxuICBzZXQgaGFwcGVuZWQsIGVsc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIChbYSBvbGR2YWwgbmV3dmFsXSl9LCA6c291cmNlICIoZGVmblxuIGNvbXBhcmUtYW5kLXNldCFcbiBcIkF0b21pY2FsbHkgc2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgaWYgYW5kIG9ubHkgaWYgdGhlXFxuICBjdXJyZW50IHZhbHVlIG9mIHRoZSBhdG9tIGlzIGVxdWFsIHRvIG9sZHZhbC4gUmV0dXJucyB0cnVlIGlmXFxuICBzZXQgaGFwcGVuZWQsIGVsc2UgZmFsc2UuXCJcbiBbYSBvbGR2YWwgbmV3dmFsXVxuIChpZiAoPSAoLWRlcmVmIGEpIG9sZHZhbCkgKGRvIChyZXNldCEgYSBuZXd2YWwpIHRydWUpIGZhbHNlKSlcbiJ9IHs6c3ltIGFycmF5LXNlcSwgOm1ldGEgezpkb2MgIkNyZWF0ZSBhIHNlcSBmcm9tIGEgSmF2YVNjcmlwdCBhcnJheS4iLCA6YXJnbGlzdHMgW1thcnJheV0gW2FycmF5IGldXX0sIDpzb3VyY2UgIihkZWZuXG4gYXJyYXktc2VxXG4gXCJDcmVhdGUgYSBzZXEgZnJvbSBhIEphdmFTY3JpcHQgYXJyYXkuXCJcbiAoW2FycmF5XSAocHJpbS1zZXEgYXJyYXkgMCkpXG4gKFthcnJheSBpXSAocHJpbS1zZXEgYXJyYXkgaSkpKVxuIn0gezpzeW0gaW50ZXJsZWF2ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZmlyc3QgaXRlbSBpbiBlYWNoIGNvbGwsIHRoZW4gdGhlIHNlY29uZCBldGMuIiwgOmFyZ2xpc3RzIFtbXSBbYzFdIFtjMSBjMl0gW2MxIGMyICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW50ZXJsZWF2ZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBmaXJzdCBpdGVtIGluIGVhY2ggY29sbCwgdGhlbiB0aGUgc2Vjb25kIGV0Yy5cIlxuIChbXSAoKSlcbiAoW2MxXSAobGF6eS1zZXEgYzEpKVxuIChbYzEgYzJdXG4gIChsYXp5LXNlcVxuICAgKGxldFxuICAgIFtzMSAoc2VxIGMxKSBzMiAoc2VxIGMyKV1cbiAgICAod2hlblxuICAgICAoYW5kIHMxIHMyKVxuICAgICAoY29uc1xuICAgICAgKGZpcnN0IHMxKVxuICAgICAgKGNvbnMgKGZpcnN0IHMyKSAoaW50ZXJsZWF2ZSAocmVzdCBzMSkgKHJlc3QgczIpKSkpKSkpKVxuIChbYzEgYzIgJiBjb2xsc11cbiAgKGxhenktc2VxXG4gICAobGV0XG4gICAgW3NzIChtYXAgc2VxIChjb25qIGNvbGxzIGMyIGMxKSldXG4gICAgKHdoZW5cbiAgICAgKGV2ZXJ5PyBpZGVudGl0eSBzcylcbiAgICAgKGNvbmNhdCAobWFwIGZpcnN0IHNzKSAoYXBwbHkgaW50ZXJsZWF2ZSAobWFwIHJlc3Qgc3MpKSkpKSkpKVxuIn0gezpzeW0gcHJpbnQtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gcHJpbnQtb25lIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LW1hcFxuIFttIHByaW50LW9uZSB3cml0ZXIgb3B0c11cbiAobGV0XG4gIFtbbnMgbGlmdC1tYXBdICh3aGVuIChtYXA/IG0pIChsaWZ0LW5zIG0pKV1cbiAgKGlmXG4gICBuc1xuICAgKHByaW50LXByZWZpeC1tYXAgKHN0ciBcIiM6XCIgbnMpIGxpZnQtbWFwIHByaW50LW9uZSB3cml0ZXIgb3B0cylcbiAgIChwcmludC1wcmVmaXgtbWFwIG5pbCBtIHByaW50LW9uZSB3cml0ZXIgb3B0cykpKSlcbiJ9IHs6c3ltIG1hcD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXA/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwXCJcbiBbeF1cbiAoaWYgKG5pbD8geCkgZmFsc2UgKHNhdGlzZmllcz8gSU1hcCB4KSkpXG4ifSB7OnN5bSBtMy1DMSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbTMtQzEgKGludCAzNDMyOTE4MzUzKSlcbiJ9IHs6c3ltIGdldCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIG1hcHBlZCB0byBrZXksIG5vdC1mb3VuZCBvciBuaWwgaWYga2V5IG5vdCBwcmVzZW50LiIsIDphcmdsaXN0cyBbW28ga10gW28gayBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0XG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBtYXBwZWQgdG8ga2V5LCBub3QtZm91bmQgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC5cIlxuIChbbyBrXVxuICAod2hlbi1ub3RcbiAgIChuaWw/IG8pXG4gICAoY29uZFxuICAgIChpbXBsZW1lbnRzPyBJTG9va3VwIG8pXG4gICAgKC1sb29rdXAgbyBrKVxuICAgIChhcnJheT8gbylcbiAgICAod2hlbiAoYW5kIChzb21lPyBrKSAoPCBrICguLWxlbmd0aCBvKSkpIChhZ2V0IG8gKGludCBrKSkpXG4gICAgKHN0cmluZz8gbylcbiAgICAod2hlbiAoYW5kIChzb21lPyBrKSAoPCAtMSBrICguLWxlbmd0aCBvKSkpICguY2hhckF0IG8gKGludCBrKSkpXG4gICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElMb29rdXAgbylcbiAgICAoLWxvb2t1cCBvIGspXG4gICAgOmVsc2VcbiAgICBuaWwpKSlcbiAoW28gayBub3QtZm91bmRdXG4gIChpZi1ub3RcbiAgIChuaWw/IG8pXG4gICAoY29uZFxuICAgIChpbXBsZW1lbnRzPyBJTG9va3VwIG8pXG4gICAgKC1sb29rdXAgbyBrIG5vdC1mb3VuZClcbiAgICAoYXJyYXk/IG8pXG4gICAgKGlmXG4gICAgIChhbmQgKHNvbWU/IGspICg8IC0xIGsgKC4tbGVuZ3RoIG8pKSlcbiAgICAgKGFnZXQgbyAoaW50IGspKVxuICAgICBub3QtZm91bmQpXG4gICAgKHN0cmluZz8gbylcbiAgICAoaWZcbiAgICAgKGFuZCAoc29tZT8gaykgKDwgLTEgayAoLi1sZW5ndGggbykpKVxuICAgICAoLmNoYXJBdCBvIChpbnQgaykpXG4gICAgIG5vdC1mb3VuZClcbiAgICAobmF0aXZlLXNhdGlzZmllcz8gSUxvb2t1cCBvKVxuICAgICgtbG9va3VwIG8gayBub3QtZm91bmQpXG4gICAgOmVsc2VcbiAgICBub3QtZm91bmQpXG4gICBub3QtZm91bmQpKSlcbiJ9IHs6c3ltIGlkZW50aXR5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBpdHMgYXJndW1lbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gaWRlbnRpdHkgXCJSZXR1cm5zIGl0cyBhcmd1bWVudC5cIiBbeF0geClcbiJ9IHs6c3ltIGludG8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGwgY29uc2lzdGluZyBvZiB0by1jb2xsIHdpdGggYWxsIG9mIHRoZSBpdGVtcyBvZlxuICBmcm9tLWNvbGwgY29uam9pbmVkLiBBIHRyYW5zZHVjZXIgbWF5IGJlIHN1cHBsaWVkLiIsIDphcmdsaXN0cyBbW10gW3RvXSBbdG8gZnJvbV0gW3RvIHhmb3JtIGZyb21dXX0sIDpzb3VyY2UgIihkZWZuXG4gaW50b1xuIFwiUmV0dXJucyBhIG5ldyBjb2xsIGNvbnNpc3Rpbmcgb2YgdG8tY29sbCB3aXRoIGFsbCBvZiB0aGUgaXRlbXMgb2ZcXG4gIGZyb20tY29sbCBjb25qb2luZWQuIEEgdHJhbnNkdWNlciBtYXkgYmUgc3VwcGxpZWQuXCJcbiAoW10gW10pXG4gKFt0b10gdG8pXG4gKFt0byBmcm9tXVxuICAoaWYtbm90XG4gICAobmlsPyB0bylcbiAgIChpZlxuICAgIChpbXBsZW1lbnRzPyBJRWRpdGFibGVDb2xsZWN0aW9uIHRvKVxuICAgICgtd2l0aC1tZXRhXG4gICAgIChwZXJzaXN0ZW50ISAocmVkdWNlIC1jb25qISAodHJhbnNpZW50IHRvKSBmcm9tKSlcbiAgICAgKG1ldGEgdG8pKVxuICAgIChyZWR1Y2UgLWNvbmogdG8gZnJvbSkpXG4gICAocmVkdWNlIGNvbmogdG8gZnJvbSkpKVxuIChbdG8geGZvcm0gZnJvbV1cbiAgKGlmXG4gICAoaW1wbGVtZW50cz8gSUVkaXRhYmxlQ29sbGVjdGlvbiB0bylcbiAgICgtd2l0aC1tZXRhXG4gICAgKHBlcnNpc3RlbnQhICh0cmFuc2R1Y2UgeGZvcm0gY29uaiEgKHRyYW5zaWVudCB0bykgZnJvbSkpXG4gICAgKG1ldGEgdG8pKVxuICAgKHRyYW5zZHVjZSB4Zm9ybSBjb25qIHRvIGZyb20pKSkpXG4ifSB7OnN5bSBsb25nLCA6bWV0YSB7OmRvYyAiQ29lcmNlIHRvIGxvbmcgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiBJZGVudGljYWwgdG8gYGludCcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb25nXG4gXCJDb2VyY2UgdG8gbG9uZyBieSBzdHJpcHBpbmcgZGVjaW1hbCBwbGFjZXMuIElkZW50aWNhbCB0byBgaW50Jy5cIlxuIFt4XVxuIChmaXggeCkpXG4ifSB7OnN5bSBkb3VibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZG91YmxlIFt4XSB4KVxuIn0gezpzeW0gdm9sYXRpbGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYSB2b2xhdGlsZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHZvbGF0aWxlP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSB2b2xhdGlsZS5cIlxuIFt4XVxuIChpbnN0YW5jZT8gVm9sYXRpbGUgeCkpXG4ifSB7OnN5bSAta2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElNYXBFbnRyeX0gezpzeW0gbmZpcnN0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAobmV4dCAoZmlyc3QgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gbmZpcnN0IFwiU2FtZSBhcyAobmV4dCAoZmlyc3QgeCkpXCIgW2NvbGxdIChuZXh0IChmaXJzdCBjb2xsKSkpXG4ifSB7OnN5bSBtZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWV0YWRhdGEgb2Ygb2JqLCByZXR1cm5zIG5pbCBpZiB0aGVyZSBpcyBubyBtZXRhZGF0YS4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmblxuIG1ldGFcbiBcIlJldHVybnMgdGhlIG1ldGFkYXRhIG9mIG9iaiwgcmV0dXJucyBuaWwgaWYgdGhlcmUgaXMgbm8gbWV0YWRhdGEuXCJcbiBbb11cbiAod2hlbiAoYW5kIChub3QgKG5pbD8gbykpIChzYXRpc2ZpZXM/IElNZXRhIG8pKSAoLW1ldGEgbykpKVxuIn0gezpzeW0gLWt2LXJlZHVjZSwgOm1ldGEgezpkb2MgIlJlZHVjZXMgYW4gYXNzb2NpYXRpdmUgY29sbGVjdGlvbiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBmIHNob3VsZCBiZVxuICAgICBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhyZWUgYXJndW1lbnRzLiIsIDphcmdsaXN0cyAoW2NvbGwgZiBpbml0XSl9LCA6cHJvdG9jb2wgSUtWUmVkdWNlfSB7OnN5bSBJSGFzaCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgaGFzaGluZyBmdW5jdGlvbmFsaXR5IHRvIGEgdHlwZS4ifSwgOm1ldGhvZHMgKC1oYXNoKX0gezpzeW0gYml0LWFuZC1ub3QsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGFuZCB3aXRoIGNvbXBsZW1lbnQiLCA6YXJnbGlzdHMgW1t4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIGJpdC1hbmQtbm90XG4gXCJCaXR3aXNlIGFuZCB3aXRoIGNvbXBsZW1lbnRcIlxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC1hbmQtbm90IHggeSkpXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlIGJpdC1hbmQtbm90IChjbGpzLmNvcmUvYml0LWFuZC1ub3QgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSB2YXI/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHYgaXMgb2YgdHlwZSBjbGpzLmNvcmUuVmFyIiwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgdiBpcyBvZiB0eXBlIGNsanMuY29yZS5WYXJcIlxuIFt2XVxuIChpbnN0YW5jZT8gY2xqcy5jb3JlLlZhciB2KSlcbiJ9IHs6c3ltIC1jb21wYXJhdG9yLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29tcGFyYXRvciBmb3IgY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gdW5jaGVja2VkLWFkZC1pbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtYWRkLWludFxuIFwiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuXCJcbiAoW10gMClcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLWFkZC1pbnQgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChyZWR1Y2UgdW5jaGVja2VkLWFkZC1pbnQgKGNsanMuY29yZS91bmNoZWNrZWQtYWRkLWludCB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIGhhc2gtb3JkZXJlZC1jb2xsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaGFzaCBjb2RlLCBjb25zaXN0ZW50IHdpdGggPSwgZm9yIGFuIGV4dGVybmFsIG9yZGVyZWRcbiAgIGNvbGxlY3Rpb24gaW1wbGVtZW50aW5nIEl0ZXJhYmxlLlxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzaC1vcmRlcmVkLWNvbGxcbiBcIlJldHVybnMgdGhlIGhhc2ggY29kZSwgY29uc2lzdGVudCB3aXRoID0sIGZvciBhbiBleHRlcm5hbCBvcmRlcmVkXFxuICAgY29sbGVjdGlvbiBpbXBsZW1lbnRpbmcgSXRlcmFibGUuXFxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLlwiXG4gW2NvbGxdXG4gKGxvb3BcbiAgW24gMCBoYXNoLWNvZGUgMSBjb2xsIChzZXEgY29sbCldXG4gIChpZi1ub3RcbiAgIChuaWw/IGNvbGwpXG4gICAocmVjdXJcbiAgICAoaW5jIG4pXG4gICAgKGJpdC1vciAoKyAoaW11bCAzMSBoYXNoLWNvZGUpIChoYXNoIChmaXJzdCBjb2xsKSkpIDApXG4gICAgKG5leHQgY29sbCkpXG4gICAobWl4LWNvbGxlY3Rpb24taGFzaCBoYXNoLWNvZGUgbikpKSlcbiJ9IHs6c3ltIHJlc2V0LW1ldGEhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSByZXNldHMgdGhlIG1ldGFkYXRhIGZvciBhbiBhdG9tIiwgOmFyZ2xpc3RzIChbaXJlZiBtXSl9LCA6c291cmNlICIoZGVmblxuIHJlc2V0LW1ldGEhXG4gXCJBdG9taWNhbGx5IHJlc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGFuIGF0b21cIlxuIFtpcmVmIG1dXG4gKHNldCEgKC4tbWV0YSBpcmVmKSBtKSlcbiJ9IHs6c3ltIElFcXVpdiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdmFsdWUgY29tcGFyaXNvbiBmdW5jdGlvbmFsaXR5IHRvIGEgdHlwZS4ifSwgOm1ldGhvZHMgKC1lcXVpdil9IHs6c3ltIGN5Y2xlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISkgc2VxdWVuY2Ugb2YgcmVwZXRpdGlvbnMgb2YgdGhlIGl0ZW1zIGluIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjeWNsZVxuIFwiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISkgc2VxdWVuY2Ugb2YgcmVwZXRpdGlvbnMgb2YgdGhlIGl0ZW1zIGluIGNvbGwuXCJcbiBbY29sbF1cbiAoaWYtbGV0XG4gIFt2YWxzIChzZXEgY29sbCldXG4gIChDeWNsZS4gbmlsIHZhbHMgbmlsIHZhbHMgbmlsKVxuICAoLi1FTVBUWSBMaXN0KSkpXG4ifSB7OnN5bSAtZGVyZWYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcmVmZXJlbmNlIG8uIiwgOmFyZ2xpc3RzIChbb10pfSwgOnByb3RvY29sIElEZXJlZn0gezpzeW0gZW1wdHk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaGFzIG5vIGl0ZW1zIC0gc2FtZSBhcyAobm90IChzZXEgY29sbCkpLlxuICBQbGVhc2UgdXNlIHRoZSBpZGlvbSAoc2VxIHgpIHJhdGhlciB0aGFuIChub3QgKGVtcHR5PyB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGVtcHR5P1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgaGFzIG5vIGl0ZW1zIC0gc2FtZSBhcyAobm90IChzZXEgY29sbCkpLlxcbiAgUGxlYXNlIHVzZSB0aGUgaWRpb20gKHNlcSB4KSByYXRoZXIgdGhhbiAobm90IChlbXB0eT8geCkpXCJcbiBbY29sbF1cbiAob3IgKG5pbD8gY29sbCkgKG5vdCAoc2VxIGNvbGwpKSkpXG4ifSB7OnN5bSBzaG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBzaG9ydCBbeF0geClcbiJ9IHs6c3ltIC1jbGotPmpzLCA6bWV0YSB7OmRvYyAiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBjbGogdmFsdWVzIHRvIEphdmFTY3JpcHQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSUVuY29kZUpTfSB7OnN5bSAtY2h1bmtlZC1maXJzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpcnN0IGNodW5rIGluIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDaHVua2VkU2VxfSB7OnN5bSBhZGQtdGFwLCA6bWV0YSB7OmRvYyAiQWRkcyBmLCBhIGZuIG9mIG9uZSBhcmd1bWVudCwgdG8gdGhlIHRhcCBzZXQuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aFxuICBhbnl0aGluZyBzZW50IHZpYSB0YXA+LiBSZW1lbWJlciBmIGluIG9yZGVyIHRvIHJlbW92ZS10YXAiLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC10YXBcbiBcIkFkZHMgZiwgYSBmbiBvZiBvbmUgYXJndW1lbnQsIHRvIHRoZSB0YXAgc2V0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGhcXG4gIGFueXRoaW5nIHNlbnQgdmlhIHRhcD4uIFJlbWVtYmVyIGYgaW4gb3JkZXIgdG8gcmVtb3ZlLXRhcFwiXG4gW2ZdXG4gKG1heWJlLWluaXQtdGFwc2V0KVxuIChzd2FwISB0YXBzZXQgY29uaiBmKVxuIG5pbClcbiJ9IHs6c3ltIGZpbHRlcnYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLiIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWx0ZXJ2XG4gXCJSZXR1cm5zIGEgdmVjdG9yIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cIlxuIFtwcmVkIGNvbGxdXG4gKC0+XG4gIChyZWR1Y2UgKGZuIFt2IG9dIChpZiAocHJlZCBvKSAoY29uaiEgdiBvKSB2KSkgKHRyYW5zaWVudCBbXSkgY29sbClcbiAgcGVyc2lzdGVudCEpKVxuIn0gezpzeW0gaGFzaCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiBpdHMgYXJndW1lbnQuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXG4gICBjb25zaXN0ZW50IHdpdGggPS4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2hcbiBcIlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiBpdHMgYXJndW1lbnQuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXFxuICAgY29uc2lzdGVudCB3aXRoID0uXCJcbiBbb11cbiAoY29uZFxuICAoaW1wbGVtZW50cz8gSUhhc2ggbylcbiAgKGJpdC14b3IgKC1oYXNoIG8pIDApXG4gIChudW1iZXI/IG8pXG4gIChpZlxuICAgKGpzL2lzRmluaXRlIG8pXG4gICAoanMtbW9kIChNYXRoL2Zsb29yIG8pIDIxNDc0ODM2NDcpXG4gICAoY2FzZSBvICMjSW5mIDIxNDY0MzUwNzIgIyMtSW5mIC0xMDQ4NTc2IDIxNDY5NTkzNjApKVxuICAodHJ1ZT8gbylcbiAgMTIzMVxuICAoZmFsc2U/IG8pXG4gIDEyMzdcbiAgKHN0cmluZz8gbylcbiAgKG0zLWhhc2gtaW50IChoYXNoLXN0cmluZyBvKSlcbiAgKGluc3RhbmNlPyBqcy9EYXRlIG8pXG4gIChiaXQteG9yICgudmFsdWVPZiBvKSAwKVxuICAobmlsPyBvKVxuICAwXG4gIDplbHNlXG4gIChiaXQteG9yICgtaGFzaCBvKSAwKSkpXG4ifSB7OnN5bSBxdW90LCA6bWV0YSB7OmRvYyAicXVvdFtpZW50XSBvZiBkaXZpZGluZyBudW1lcmF0b3IgYnkgZGVub21pbmF0b3IuIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxuIHF1b3RcbiBcInF1b3RbaWVudF0gb2YgZGl2aWRpbmcgbnVtZXJhdG9yIGJ5IGRlbm9taW5hdG9yLlwiXG4gW24gZF1cbiAobGV0IFtyZW0gKGpzLW1vZCBuIGQpXSAoZml4ICgvICgtIG4gcmVtKSBkKSkpKVxuIn0gezpzeW0gbnMtaW50ZXJucyosIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIHRoZSBpbnRlcm4gbWFwcGluZ3MgZm9yIHRoZSBuYW1lc3BhY2UuXG4gIEJvb3RzdHJhcCBvbmx5LiIsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBucy1pbnRlcm5zKlxuIFwiUmV0dXJucyBhIG1hcCBvZiB0aGUgaW50ZXJuIG1hcHBpbmdzIGZvciB0aGUgbmFtZXNwYWNlLlxcbiAgQm9vdHN0cmFwIG9ubHkuXCJcbiBbc3ltXVxuIChsZXRcbiAgW25zLW9iaiAoZmluZC1ucy1vYmogc3ltKSBucyAoTmFtZXNwYWNlLiBucy1vYmogc3ltKV1cbiAgKGxldGZuXG4gICBbKHN0ZXBcbiAgICAgW3JldCBrXVxuICAgICAobGV0XG4gICAgICBbdmFyLXN5bSAoc3ltYm9sIChkZW11bmdlIGspKV1cbiAgICAgIChhc3NvY1xuICAgICAgIHJldFxuICAgICAgIHZhci1zeW1cbiAgICAgICAoVmFyLlxuICAgICAgICAoZm4qIFtdIChnb2JqZWN0L2dldCBucy1vYmogaykpXG4gICAgICAgIChzeW1ib2wgKHN0ciBzeW0pIChzdHIgdmFyLXN5bSkpXG4gICAgICAgIHs6bnMgbnN9KSkpKV1cbiAgIChyZWR1Y2Ugc3RlcCB7fSAoanMta2V5cyBucy1vYmopKSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWRvdWJsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtZG91YmxlIFt4XSB4KVxuIn0gezpzeW0gcmFuZ2VkLWl0ZXJhdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Ygc3RhcnQgZW5kXSl9LCA6c291cmNlICIoZGVmblxuIHJhbmdlZC1pdGVyYXRvclxuIFt2IHN0YXJ0IGVuZF1cbiAobGV0XG4gIFtpIHN0YXJ0XVxuICAoUmFuZ2VkSXRlcmF0b3IuXG4gICBpXG4gICAoLSBpIChqcy1tb2QgaSAzMikpXG4gICAod2hlbiAoPCBzdGFydCAoY291bnQgdikpICh1bmNoZWNrZWQtYXJyYXktZm9yIHYgaSkpXG4gICB2XG4gICBzdGFydFxuICAgZW5kKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50VmVjdG9yLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB2ZWN0b3IgZnVuY3Rpb25hbGl0eSB0byB0cmFuc2llbnQgY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtYXNzb2MtbiEgLXBvcCEpfSB7OnN5bSBrZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hcCBlbnRyeS4iLCA6YXJnbGlzdHMgKFttYXAtZW50cnldKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5XG4gXCJSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hcCBlbnRyeS5cIlxuIFttYXAtZW50cnldXG4gKC1rZXkgbWFwLWVudHJ5KSlcbiJ9IHs6c3ltIGxvbmdzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGxvbmdzIFt4XSB4KVxuIn0gezpzeW0gbm90PSwgOm1ldGEgezpkb2MgIlNhbWUgYXMgKG5vdCAoPSBvYmoxIG9iajIpKSIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIG5vdD1cbiBcIlNhbWUgYXMgKG5vdCAoPSBvYmoxIG9iajIpKVwiXG4gKFt4XSBmYWxzZSlcbiAoW3ggeV0gKG5vdCAoPSB4IHkpKSlcbiAoW3ggeSAmIG1vcmVdIChub3QgKGFwcGx5ID0geCB5IG1vcmUpKSkpXG4ifSB7OnN5bSBzZXQtcHJpbnQtZXJyLWZuISwgOm1ldGEgezpkb2MgIlNldCAqcHJpbnQtZXJyLWZuKiB0byBmLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LXByaW50LWVyci1mbiFcbiBcIlNldCAqcHJpbnQtZXJyLWZuKiB0byBmLlwiXG4gW2ZdXG4gKHNldCEgKnByaW50LWVyci1mbiogZikpXG4ifSB7OnN5bSBmYXN0LXBhdGgtcHJvdG9jb2xzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGZhc3QtcGF0aC1wcm90b2NvbHNcbiBcInByb3RvY29sIGZxbiAtPiBbcGFydGl0aW9uIG51bWJlciwgYml0XVwiXG4gKHppcG1hcFxuICAobWFwXG4gICAoZm4qIFtwMV9fNDUxNDYjXSAoc3ltYm9sIFwiY2xqcy5jb3JlXCIgKGNvcmUvc3RyIHAxX180NTE0NiMpKSlcbiAgICdbSUZuXG4gICAgIElDb3VudGVkXG4gICAgIElFbXB0eWFibGVDb2xsZWN0aW9uXG4gICAgIElDb2xsZWN0aW9uXG4gICAgIElJbmRleGVkXG4gICAgIEFTZXFcbiAgICAgSVNlcVxuICAgICBJTmV4dFxuICAgICBJTG9va3VwXG4gICAgIElBc3NvY2lhdGl2ZVxuICAgICBJTWFwXG4gICAgIElNYXBFbnRyeVxuICAgICBJU2V0XG4gICAgIElTdGFja1xuICAgICBJVmVjdG9yXG4gICAgIElEZXJlZlxuICAgICBJRGVyZWZXaXRoVGltZW91dFxuICAgICBJTWV0YVxuICAgICBJV2l0aE1ldGFcbiAgICAgSVJlZHVjZVxuICAgICBJS1ZSZWR1Y2VcbiAgICAgSUVxdWl2XG4gICAgIElIYXNoXG4gICAgIElTZXFhYmxlXG4gICAgIElTZXF1ZW50aWFsXG4gICAgIElMaXN0XG4gICAgIElSZWNvcmRcbiAgICAgSVJldmVyc2libGVcbiAgICAgSVNvcnRlZFxuICAgICBJUHJpbnRXaXRoV3JpdGVyXG4gICAgIElXcml0ZXJcbiAgICAgSVByaW50V2l0aFdyaXRlclxuICAgICBJUGVuZGluZ1xuICAgICBJV2F0Y2hhYmxlXG4gICAgIElFZGl0YWJsZUNvbGxlY3Rpb25cbiAgICAgSVRyYW5zaWVudENvbGxlY3Rpb25cbiAgICAgSVRyYW5zaWVudEFzc29jaWF0aXZlXG4gICAgIElUcmFuc2llbnRNYXBcbiAgICAgSVRyYW5zaWVudFZlY3RvclxuICAgICBJVHJhbnNpZW50U2V0XG4gICAgIElNdWx0aUZuXG4gICAgIElDaHVua2VkU2VxXG4gICAgIElDaHVua2VkTmV4dFxuICAgICBJQ29tcGFyYWJsZVxuICAgICBJTmFtZWRcbiAgICAgSUNsb25lYWJsZVxuICAgICBJQXRvbVxuICAgICBJUmVzZXRcbiAgICAgSVN3YXBcbiAgICAgSUl0ZXJhYmxlXSlcbiAgKGl0ZXJhdGVcbiAgIChjb3JlL2ZuXG4gICAgW1twIGJdXVxuICAgIChpZlxuICAgICAoY29yZS89PSAyMTQ3NDgzNjQ4IGIpXG4gICAgIFsoY29yZS9pbmMgcCkgMV1cbiAgICAgW3AgIz8oOmNsaiAoY29yZS9iaXQtc2hpZnQtbGVmdCBiIDEpIDpjbGpzIChjb3JlLyogMiBiKSldKSlcbiAgIFswIDFdKSkpXG4ifSB7OnN5bSBzdHJpbmc/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IHN0cmluZy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHN0cmluZz9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBzdHJpbmcuXCJcbiBbeF1cbiAoaWRlbnRpY2FsPyBcInN0cmluZ1wiIChnb29nL3R5cGVPZiB4KSkpXG4ifSB7OnN5bSB1cmk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIHggaXMgYSBnb29nLlVyaSBpbnN0YW5jZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVyaT9cbiBcIlJldHVybnMgdHJ1ZSB4IGlzIGEgZ29vZy5VcmkgaW5zdGFuY2UuXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gW3hdXG4gKGluc3RhbmNlPyBnb29nLlVyaSB4KSlcbiJ9IHs6c3ltIGVzNi1pdGVyYXRvciwgOm1ldGEgezpkb2MgIkVYUEVSSU1FTlRBTDogUmV0dXJuIGEgRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgZm9yIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlczYtaXRlcmF0b3JcbiBcIkVYUEVSSU1FTlRBTDogUmV0dXJuIGEgRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgZm9yIGNvbGwuXCJcbiBbY29sbF1cbiAoRVM2SXRlcmF0b3IuIChzZXEgY29sbCkpKVxuIn0gezpzeW0gcHItc3RyLXdpdGgtb3B0cywgOm1ldGEgezpkb2MgIlByaW50cyBhIHNlcXVlbmNlIG9mIG9iamVjdHMgdG8gYSBzdHJpbmcsIG9ic2VydmluZyBhbGwgdGhlXG4gIG9wdGlvbnMgZ2l2ZW4gaW4gb3B0cyIsIDphcmdsaXN0cyAoW29ianMgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwci1zdHItd2l0aC1vcHRzXG4gXCJQcmludHMgYSBzZXF1ZW5jZSBvZiBvYmplY3RzIHRvIGEgc3RyaW5nLCBvYnNlcnZpbmcgYWxsIHRoZVxcbiAgb3B0aW9ucyBnaXZlbiBpbiBvcHRzXCJcbiBbb2JqcyBvcHRzXVxuIChpZiAoZW1wdHk/IG9ianMpIFwiXCIgKHN0ciAocHItc2Itd2l0aC1vcHRzIG9ianMgb3B0cykpKSlcbiJ9IHs6c3ltIG0zLUMyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtMy1DMiAoaW50IDQ2MTg0NTkwNykpXG4ifSB7OnN5bSAqcHJpbnQtbmV3bGluZSosIDptZXRhIHs6ZG9jICJXaGVuIHNldCB0byBsb2dpY2FsIGZhbHNlIHdpbGwgZHJvcCBuZXdsaW5lcyBmcm9tIHByaW50aW5nIGNhbGxzLlxuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIHRoZSBpbXBsaWNpdCBuZXdsaW5lcyBlbWl0dGVkIGJ5IHN0YW5kYXJkIEphdmFTY3JpcHRcbiAgY29uc29sZSBvYmplY3RzLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1uZXdsaW5lKiB0cnVlKVxuIn0gezpzeW0gdW5jaGVja2VkLW11bHRpcGx5LWludCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtbXVsdGlwbHktaW50XG4gXCJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuXCJcbiAoW10gMSlcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5LWludCB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKHJlZHVjZVxuICAgdW5jaGVja2VkLW11bHRpcGx5LWludFxuICAgKGNsanMuY29yZS91bmNoZWNrZWQtbXVsdGlwbHktaW50IHggeSlcbiAgIG1vcmUpKSlcbiJ9IHs6c3ltIGNodW5rLXJlc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmstcmVzdCBbc10gKC1jaHVua2VkLXJlc3QgcykpXG4ifSB7OnN5bSByZW1vdmUtYWxsLW1ldGhvZHMsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGFsbCBvZiB0aGUgbWV0aG9kcyBvZiBtdWx0aW1ldGhvZC4iLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS1hbGwtbWV0aG9kc1xuIFwiUmVtb3ZlcyBhbGwgb2YgdGhlIG1ldGhvZHMgb2YgbXVsdGltZXRob2QuXCJcbiBbbXVsdGlmbl1cbiAoLXJlc2V0IG11bHRpZm4pKVxuIn0gezpzeW0gdHJhbXBvbGluZSwgOm1ldGEgezpkb2MgInRyYW1wb2xpbmUgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhbGdvcml0aG1zIHJlcXVpcmluZyBtdXR1YWxcbiAgcmVjdXJzaW9uIHdpdGhvdXQgc3RhY2sgY29uc3VtcHRpb24uIENhbGxzIGYgd2l0aCBzdXBwbGllZCBhcmdzLCBpZlxuICBhbnkuIElmIGYgcmV0dXJucyBhIGZuLCBjYWxscyB0aGF0IGZuIHdpdGggbm8gYXJndW1lbnRzLCBhbmRcbiAgY29udGludWVzIHRvIHJlcGVhdCwgdW50aWwgdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgYSBmbiwgdGhlblxuICByZXR1cm5zIHRoYXQgbm9uLWZuIHZhbHVlLiBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcmV0dXJuIGEgZm4gYXMgYVxuICBmaW5hbCB2YWx1ZSwgeW91IG11c3Qgd3JhcCBpdCBpbiBzb21lIGRhdGEgc3RydWN0dXJlIGFuZCB1bnBhY2sgaXRcbiAgYWZ0ZXIgdHJhbXBvbGluZSByZXR1cm5zLiIsIDphcmdsaXN0cyBbW2ZdIFtmICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFtcG9saW5lXG4gXCJ0cmFtcG9saW5lIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYWxnb3JpdGhtcyByZXF1aXJpbmcgbXV0dWFsXFxuICByZWN1cnNpb24gd2l0aG91dCBzdGFjayBjb25zdW1wdGlvbi4gQ2FsbHMgZiB3aXRoIHN1cHBsaWVkIGFyZ3MsIGlmXFxuICBhbnkuIElmIGYgcmV0dXJucyBhIGZuLCBjYWxscyB0aGF0IGZuIHdpdGggbm8gYXJndW1lbnRzLCBhbmRcXG4gIGNvbnRpbnVlcyB0byByZXBlYXQsIHVudGlsIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IGEgZm4sIHRoZW5cXG4gIHJldHVybnMgdGhhdCBub24tZm4gdmFsdWUuIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byByZXR1cm4gYSBmbiBhcyBhXFxuICBmaW5hbCB2YWx1ZSwgeW91IG11c3Qgd3JhcCBpdCBpbiBzb21lIGRhdGEgc3RydWN0dXJlIGFuZCB1bnBhY2sgaXRcXG4gIGFmdGVyIHRyYW1wb2xpbmUgcmV0dXJucy5cIlxuIChbZl0gKGxldCBbcmV0IChmKV0gKGlmIChmbj8gcmV0KSAocmVjdXIgcmV0KSByZXQpKSlcbiAoW2YgJiBhcmdzXSAodHJhbXBvbGluZSAoZm4qIFtdIChhcHBseSBmIGFyZ3MpKSkpKVxuIn0gezpzeW0gZG91YmxlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBmb3IgSmF2YVNjcmlwdCBudW1iZXJzLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3VibGU/XG4gXCJSZXR1cm5zIHRydWUgZm9yIEphdmFTY3JpcHQgbnVtYmVycywgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKG51bWJlcj8geCkpXG4ifSB7OnN5bSB2ZWMsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiBKYXZhU2NyaXB0IGFycmF5c1xuICB3aWxsIGJlIGFsaWFzZWQgYW5kIHNob3VsZCBub3QgYmUgbW9kaWZpZWQuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2ZWNcbiBcIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGNvbGwuIEphdmFTY3JpcHQgYXJyYXlzXFxuICB3aWxsIGJlIGFsaWFzZWQgYW5kIHNob3VsZCBub3QgYmUgbW9kaWZpZWQuXCJcbiBbY29sbF1cbiAoY29uZFxuICAobWFwLWVudHJ5PyBjb2xsKVxuICBbKGtleSBjb2xsKSAodmFsIGNvbGwpXVxuICAodmVjdG9yPyBjb2xsKVxuICAod2l0aC1tZXRhIGNvbGwgbmlsKVxuICAoYXJyYXk/IGNvbGwpXG4gICguZnJvbUFycmF5IFBlcnNpc3RlbnRWZWN0b3IgY29sbCB0cnVlKVxuICA6ZWxzZVxuICAoLXBlcnNpc3RlbnQhXG4gICAocmVkdWNlIC1jb25qISAoLWFzLXRyYW5zaWVudCAoLi1FTVBUWSBQZXJzaXN0ZW50VmVjdG9yKSkgY29sbCkpKSlcbiJ9IHs6c3ltICpwcmludC1tZXRhKiwgOm1ldGEgezpkb2MgIklmIHNldCB0byBsb2dpY2FsIHRydWUsIHdoZW4gcHJpbnRpbmcgYW4gb2JqZWN0LCBpdHMgbWV0YWRhdGEgd2lsbCBhbHNvXG4gIGJlIHByaW50ZWQgaW4gYSBmb3JtIHRoYXQgY2FuIGJlIHJlYWQgYmFjayBieSB0aGUgcmVhZGVyLlxuXG4gIERlZmF1bHRzIHRvIGZhbHNlLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1tZXRhKiBmYWxzZSlcbiJ9IHs6c3ltIC1ub3RpZnktd2F0Y2hlcywgOm1ldGEgezpkb2MgIkNhbGxzIGFsbCB3YXRjaGVycyB3aXRoIHRoaXMsIG9sZHZhbCBhbmQgbmV3dmFsLiIsIDphcmdsaXN0cyAoW3RoaXMgb2xkdmFsIG5ld3ZhbF0pfSwgOnByb3RvY29sIElXYXRjaGFibGV9IHs6c3ltIGludCwgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGludCBcIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLlwiIFt4XSAoYml0LW9yIHggMCkpXG4ifSB7OnN5bSBtYXAtZW50cnk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElNYXBFbnRyeSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLWVudHJ5P1xuIFwiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElNYXBFbnRyeVwiXG4gW3hdXG4gKGltcGxlbWVudHM/IElNYXBFbnRyeSB4KSlcbiJ9IHs6c3ltIHJhbmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgcmFuZG9tIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kXG4gIG4gKGRlZmF1bHQgMSkgKGV4Y2x1c2l2ZSkuIiwgOmFyZ2xpc3RzIFtbXSBbbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5kXG4gXCJSZXR1cm5zIGEgcmFuZG9tIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kXFxuICBuIChkZWZhdWx0IDEpIChleGNsdXNpdmUpLlwiXG4gKFtdIChyYW5kIDEpKVxuIChbbl0gKCogKE1hdGgvcmFuZG9tKSBuKSkpXG4ifSB7OnN5bSBzZWNvbmQsIDptZXRhIHs6ZG9jICJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBzZWNvbmQgXCJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSlcIiBbY29sbF0gKGZpcnN0IChuZXh0IGNvbGwpKSlcbiJ9IHs6c3ltIGZpbmQtbnMtb2JqLCA6bWV0YSB7OmRvYyAiQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1ucy1vYmpcbiBcIkJvb3RzdHJhcCBvbmx5LlwiXG4gW25zXVxuIChsZXRcbiAgW211bmdlZC1ucyAobXVuZ2UgKHN0ciBucykpIHNlZ3MgKC5zcGxpdCBtdW5nZWQtbnMgXCIuXCIpXVxuICAoY2FzZVxuICAgKnRhcmdldCpcbiAgIFwibm9kZWpzXCJcbiAgIChpZlxuICAgIGpzL0NPTVBJTEVEXG4gICAgKGZpbmQtbnMtb2JqKlxuICAgICAodHJ5XG4gICAgICAobGV0XG4gICAgICAgW2N0eHQgKGpzL2V2YWwgKGZpcnN0IHNlZ3MpKV1cbiAgICAgICAod2hlbiAoYW5kIGN0eHQgKG9iamVjdD8gY3R4dCkpIGN0eHQpKVxuICAgICAgKGNhdGNoIGpzL1JlZmVyZW5jZUVycm9yIGUgbmlsKSlcbiAgICAgKG5leHQgc2VncykpXG4gICAgKGZpbmQtbnMtb2JqKiBnb29nL2dsb2JhbCBzZWdzKSlcbiAgIChcImRlZmF1bHRcIiBcIndlYndvcmtlclwiKVxuICAgKGZpbmQtbnMtb2JqKiBnb29nL2dsb2JhbCBzZWdzKVxuICAgKHRocm93XG4gICAgKGpzL0Vycm9yLlxuICAgICAoc3RyIFwiZmluZC1ucy1vYmogbm90IHN1cHBvcnRlZCBmb3IgdGFyZ2V0IFwiICp0YXJnZXQqKSkpKSkpXG4ifSB7OnN5bSBJRWRpdGFibGVDb2xsZWN0aW9uLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGNvbGxlY3Rpb25zIHdoaWNoIGNhbiB0cmFuc2Zvcm1lZCB0byB0cmFuc2llbnRzLiJ9LCA6bWV0aG9kcyAoLWFzLXRyYW5zaWVudCl9IHs6c3ltIGhhc2gtY29tYmluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZWVkIGhhc2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzaC1jb21iaW5lXG4gW3NlZWQgaGFzaF1cbiAoYml0LXhvclxuICBzZWVkXG4gICgrIGhhc2ggMjY1NDQzNTc2OSAoYml0LXNoaWZ0LWxlZnQgc2VlZCA2KSAoYml0LXNoaWZ0LXJpZ2h0IHNlZWQgMikpKSlcbiJ9IHs6c3ltID4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhcmUgaW4gbW9ub3RvbmljYWxseSBkZWNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPlxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgZGVjcmVhc2luZyBvcmRlcixcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxuIChbeF0gdHJ1ZSlcbiAoW3ggeV0gKGNsanMuY29yZS8+IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPiB4IHkpXG4gICAoaWZcbiAgICAobmV4dCBtb3JlKVxuICAgIChyZWN1ciB5IChmaXJzdCBtb3JlKSAobmV4dCBtb3JlKSlcbiAgICAoY2xqcy5jb3JlLz4geSAoZmlyc3QgbW9yZSkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltIC1uYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZSBTdHJpbmcgb2YgeC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSU5hbWVkfSB7OnN5bSByZXBsYWNlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtYXAgb2YgcmVwbGFjZW1lbnQgcGFpcnMgYW5kIGEgdmVjdG9yL2NvbGxlY3Rpb24sIHJldHVybnMgYVxuICB2ZWN0b3Ivc2VxIHdpdGggYW55IGVsZW1lbnRzID0gYSBrZXkgaW4gc21hcCByZXBsYWNlZCB3aXRoIHRoZVxuICBjb3JyZXNwb25kaW5nIHZhbCBpbiBzbWFwLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uXG4gIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3NtYXBdIFtzbWFwIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwbGFjZVxuIFwiR2l2ZW4gYSBtYXAgb2YgcmVwbGFjZW1lbnQgcGFpcnMgYW5kIGEgdmVjdG9yL2NvbGxlY3Rpb24sIHJldHVybnMgYVxcbiAgdmVjdG9yL3NlcSB3aXRoIGFueSBlbGVtZW50cyA9IGEga2V5IGluIHNtYXAgcmVwbGFjZWQgd2l0aCB0aGVcXG4gIGNvcnJlc3BvbmRpbmcgdmFsIGluIHNtYXAuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb25cXG4gIGlzIHByb3ZpZGVkLlwiXG4gKFtzbWFwXVxuICAobWFwXG4gICAoZm4qXG4gICAgW3AxX180NTQyMSNdXG4gICAgKGlmLWxldCBbZSAoZmluZCBzbWFwIHAxX180NTQyMSMpXSAodmFsIGUpIHAxX180NTQyMSMpKSkpXG4gKFtzbWFwIGNvbGxdXG4gIChpZlxuICAgKHZlY3Rvcj8gY29sbClcbiAgIChsZXRcbiAgICBbbiAoY291bnQgY29sbCldXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFt2IGldXG4gICAgICAoaWYtbGV0IFtlIChmaW5kIHNtYXAgKG50aCB2IGkpKV0gKGFzc29jIHYgaSAoc2Vjb25kIGUpKSB2KSlcbiAgICAgY29sbFxuICAgICAodGFrZSBuIChpdGVyYXRlIGluYyAwKSkpKVxuICAgKG1hcFxuICAgIChmbipcbiAgICAgW3AxX180NTQyMiNdXG4gICAgIChpZi1sZXQgW2UgKGZpbmQgc21hcCBwMV9fNDU0MjIjKV0gKHNlY29uZCBlKSBwMV9fNDU0MjIjKSlcbiAgICBjb2xsKSkpKVxuIn0gezpzeW0gaW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludGVnZXI/IG9yIGlzIGFuIGluc3RhbmNlIG9mIGdvb2cubWF0aC5JbnRlZ2VyXG4gICBvciBnb29nLm1hdGguTG9uZy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGludD9cbiBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludGVnZXI/IG9yIGlzIGFuIGluc3RhbmNlIG9mIGdvb2cubWF0aC5JbnRlZ2VyXFxuICAgb3IgZ29vZy5tYXRoLkxvbmcuXCJcbiBbeF1cbiAob3JcbiAgKGludGVnZXI/IHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgeClcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KSkpXG4ifSB7OnN5bSBhc3NvY2lhdGl2ZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIElBc3NvY2lhdGl2ZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXNzb2NpYXRpdmU/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIElBc3NvY2lhdGl2ZVwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUFzc29jaWF0aXZlIHgpKVxuIn0gezpzeW0gdW5jaGVja2VkLWludCwgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLWludFxuIFwiQ29lcmNlIHRvIGludCBieSBzdHJpcHBpbmcgZGVjaW1hbCBwbGFjZXMuXCJcbiBbeF1cbiAoZml4IHgpKVxuIn0gezpzeW0ganMta2V5cywgOm1ldGEgezpkb2MgIlJldHVybiB0aGUgSmF2YVNjcmlwdCBrZXlzIGZvciBhbiBvYmplY3QuIiwgOmFyZ2xpc3RzIChbb2JqXSl9LCA6c291cmNlICIoZGVmblxuIGpzLWtleXNcbiBcIlJldHVybiB0aGUgSmF2YVNjcmlwdCBrZXlzIGZvciBhbiBvYmplY3QuXCJcbiBbb2JqXVxuIChnb2JqZWN0L2dldEtleXMgb2JqKSlcbiJ9IHs6c3ltIGluc3QtbXMqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luc3RdKX0sIDpwcm90b2NvbCBJbnN0fSB7OnN5bSBrZXl3b3JkPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBLZXl3b3JkIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBrZXl3b3JkP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIEtleXdvcmRcIlxuIFt4XVxuIChpbnN0YW5jZT8gS2V5d29yZCB4KSlcbiJ9IHs6c3ltIGFycmF5LWl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYXJyYXktaXRlciBbeF0gKEFycmF5SXRlci4geCAwKSlcbiJ9IHs6c3ltIGZvcmNlLCA6bWV0YSB7OmRvYyAiSWYgeCBpcyBhIERlbGF5LCByZXR1cm5zIHRoZSAocG9zc2libHkgY2FjaGVkKSB2YWx1ZSBvZiBpdHMgZXhwcmVzc2lvbiwgZWxzZSByZXR1cm5zIHgiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGZvcmNlXG4gXCJJZiB4IGlzIGEgRGVsYXksIHJldHVybnMgdGhlIChwb3NzaWJseSBjYWNoZWQpIHZhbHVlIG9mIGl0cyBleHByZXNzaW9uLCBlbHNlIHJldHVybnMgeFwiXG4gW3hdXG4gKGlmIChkZWxheT8geCkgKGRlcmVmIHgpIHgpKVxuIn0gezpzeW0gZ3JvdXAtYnksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIGtleWVkIGJ5IHRoZSByZXN1bHQgb2ZcbiAgZiBvbiBlYWNoIGVsZW1lbnQuIFRoZSB2YWx1ZSBhdCBlYWNoIGtleSB3aWxsIGJlIGEgdmVjdG9yIG9mIHRoZVxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2YgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBncm91cC1ieVxuIFwiUmV0dXJucyBhIG1hcCBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCBrZXllZCBieSB0aGUgcmVzdWx0IG9mXFxuICBmIG9uIGVhY2ggZWxlbWVudC4gVGhlIHZhbHVlIGF0IGVhY2gga2V5IHdpbGwgYmUgYSB2ZWN0b3Igb2YgdGhlXFxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiBjb2xsLlwiXG4gW2YgY29sbF1cbiAocGVyc2lzdGVudCFcbiAgKHJlZHVjZVxuICAgKGZuIFtyZXQgeF0gKGxldCBbayAoZiB4KV0gKGFzc29jISByZXQgayAoY29uaiAoZ2V0IHJldCBrIFtdKSB4KSkpKVxuICAgKHRyYW5zaWVudCB7fSlcbiAgIGNvbGwpKSlcbiJ9IHs6c3ltIC1yc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gY29sbCBpbiByZXZlcnNlZCBvcmRlci4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSVJldmVyc2libGV9IHs6c3ltIHBybiwgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHIgZm9sbG93ZWQgYnkgKG5ld2xpbmUpLiIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm5cbiBcIlNhbWUgYXMgcHIgZm9sbG93ZWQgYnkgKG5ld2xpbmUpLlwiXG4gWyYgb2Jqc11cbiAocHItd2l0aC1vcHRzIG9ianMgKHByLW9wdHMpKVxuICh3aGVuICpwcmludC1uZXdsaW5lKiAobmV3bGluZSAocHItb3B0cykpKSlcbiJ9IHs6c3ltIGRlZmF1bHQtZGlzcGF0Y2gtdmFsLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0cyBkZWZhdWx0LWRpc3BhdGNoLXZhbC4iLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxuIGRlZmF1bHQtZGlzcGF0Y2gtdmFsXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm4gaXRzIGRlZmF1bHQtZGlzcGF0Y2gtdmFsLlwiXG4gW211bHRpZm5dXG4gKC1kZWZhdWx0LWRpc3BhdGNoLXZhbCBtdWx0aWZuKSlcbiJ9IHs6c3ltIGpzLWl0ZXJhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaGFzIGEgSmF2YVNjcmlwdCBpdGVyYXRvciBwcm9wZXJ0eSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtaXRlcmFibGU/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGhhcyBhIEphdmFTY3JpcHQgaXRlcmF0b3IgcHJvcGVydHlcIlxuIFt4XVxuIChhbmQgKG5vdCAobmlsPyB4KSkgKG5vdCAobmlsPyAoanMqIFwifnt9W357fV1cIiB4IElURVJfU1lNQk9MKSkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1tdWx0aXBseSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtbXVsdGlwbHlcbiBcIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS5cIlxuIChbXSAxKVxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS91bmNoZWNrZWQtbXVsdGlwbHkgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChyZWR1Y2UgdW5jaGVja2VkLW11bHRpcGx5IChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5IHggeSkgbW9yZSkpKVxuIn0gezpzeW0gZXZlbj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbiBpcyBldmVuLCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIG4gaXMgbm90IGFuIGludGVnZXIiLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGV2ZW4/XG4gXCJSZXR1cm5zIHRydWUgaWYgbiBpcyBldmVuLCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIG4gaXMgbm90IGFuIGludGVnZXJcIlxuIFtuXVxuIChpZlxuICAoaW50ZWdlcj8gbilcbiAgKHplcm8/IChiaXQtYW5kIG4gMSkpXG4gICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJBcmd1bWVudCBtdXN0IGJlIGFuIGludGVnZXI6IFwiIG4pKSkpKVxuIn0gezpzeW0gZXM2LWl0ZXJhdG9yLXNlcSwgOm1ldGEgezpkb2MgIkVYUEVSSU1FTlRBTDogR2l2ZW4gYW4gRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgcmV0dXJuIGEgc2VxLiIsIDphcmdsaXN0cyAoW2l0ZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXM2LWl0ZXJhdG9yLXNlcVxuIFwiRVhQRVJJTUVOVEFMOiBHaXZlbiBhbiBFUzIwMTUgY29tcGF0aWJsZSBpdGVyYXRvciByZXR1cm4gYSBzZXEuXCJcbiBbaXRlcl1cbiAobGV0XG4gIFt2ICgubmV4dCBpdGVyKV1cbiAgKGlmICguLWRvbmUgdikgbmlsIChFUzZJdGVyYXRvclNlcS4gKC4tdmFsdWUgdikgaXRlciBuaWwpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtZGVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIHgsIGFuIGludC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVuY2hlY2tlZC1kZWNcbiBcIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiB4LCBhbiBpbnQuXCJcbiBbeF1cbiAoY2xqcy5jb3JlL3VuY2hlY2tlZC1kZWMgeCkpXG4ifSB7OnN5bSBJbnN0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoaW5zdC1tcyopfSB7OnN5bSBwZXJzaXN0ZW50LWFycmF5LW1hcC1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyIGkgX21ldGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGVyc2lzdGVudC1hcnJheS1tYXAtc2VxXG4gW2FyciBpIF9tZXRhXVxuICh3aGVuICg8PSBpICgtIChhbGVuZ3RoIGFycikgMikpIChQZXJzaXN0ZW50QXJyYXlNYXBTZXEuIGFyciBpIF9tZXRhKSkpXG4ifSB7OnN5bSB0YWdnZWQtbGl0ZXJhbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSB0YWdnZWQgbGl0ZXJhbCIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHRhZ2dlZC1saXRlcmFsP1xuIFwiUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgdGFnZ2VkIGxpdGVyYWxcIlxuIFt2YWx1ZV1cbiAoaW5zdGFuY2U/IFRhZ2dlZExpdGVyYWwgdmFsdWUpKVxuIn0gezpzeW0gZG91YmxlLWFycmF5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbiBhcnJheSBvZiBkb3VibGVzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxuIGRvdWJsZS1hcnJheVxuIFwiQ3JlYXRlcyBhbiBhcnJheSBvZiBkb3VibGVzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XFxuICB3aXRoIENsb2p1cmUuXCJcbiAoW3NpemUtb3Itc2VxXVxuICAoaWZcbiAgIChudW1iZXI/IHNpemUtb3Itc2VxKVxuICAgKGRvdWJsZS1hcnJheSBzaXplLW9yLXNlcSBuaWwpXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxuIChbc2l6ZSBpbml0LXZhbC1vci1zZXFdXG4gIChsZXRcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxuICAgKGlmXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxuICAgIChsZXRcbiAgICAgW3MgKHNlcSBpbml0LXZhbC1vci1zZXEpXVxuICAgICAobG9vcFxuICAgICAgW2kgMCBzIHNdXG4gICAgICAoaWZcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxuICAgICAgIGEpKSlcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxuIn0gezpzeW0gY3JlYXRlLW5zLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGEgbmV3IG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sLiBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgW1tzeW1dIFtzeW0gbnMtb2JqXV19LCA6c291cmNlICIoZGVmblxuIGNyZWF0ZS1uc1xuIFwiQ3JlYXRlIGEgbmV3IG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sLiBCb290c3RyYXAgb25seS5cIlxuIChbc3ltXSAoY3JlYXRlLW5zIHN5bSAoZmluZC1ucy1vYmogc3ltKSkpXG4gKFtzeW0gbnMtb2JqXSAoTmFtZXNwYWNlLiBucy1vYmogc3ltKSkpXG4ifSB7OnN5bSBkZWZuLCA6bWV0YSB7OmFyZ2xpc3RzIChxdW90ZSAoW25hbWUgZG9jLXN0cmluZz8gYXR0ci1tYXA/IFtwYXJhbXMqXSBwcmVwb3N0LW1hcD8gYm9keV0gW25hbWUgZG9jLXN0cmluZz8gYXR0ci1tYXA/IChbcGFyYW1zKl0gcHJlcG9zdC1tYXA/IGJvZHkpICsgYXR0ci1tYXA/XSkpLCA6ZG9jICJTYW1lIGFzIChkZWYgbmFtZSAoY29yZS9mbiBbcGFyYW1zKiBdIGV4cHJzKikpIG9yIChkZWZcbiAgICBuYW1lIChjb3JlL2ZuIChbcGFyYW1zKiBdIGV4cHJzKikrKSkgd2l0aCBhbnkgZG9jLXN0cmluZyBvciBhdHRycyBhZGRlZFxuICAgIHRvIHRoZSB2YXIgbWV0YWRhdGEuIHByZXBvc3QtbWFwIGRlZmluZXMgYSBtYXAgd2l0aCBvcHRpb25hbCBrZXlzXG4gICAgOnByZSBhbmQgOnBvc3QgdGhhdCBjb250YWluIGNvbGxlY3Rpb25zIG9mIHByZSBvciBwb3N0IGNvbmRpdGlvbnMuIn0sIDpzb3VyY2UgIihkZWZcbiBkZWZuXG4gKGNvcmUvZm5cbiAgZGVmblxuICBbJmZvcm0gJmVudiBuYW1lICYgZmRlY2xdXG4gIChpZlxuICAgKGNvcmUvaW5zdGFuY2U/ICM/KDpjbGogY2xvanVyZS5sYW5nLlN5bWJvbCA6Y2xqcyBTeW1ib2wpIG5hbWUpXG4gICBuaWxcbiAgICh0aHJvd1xuICAgICM/KDpjbGogKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbi4gXCJGaXJzdCBhcmd1bWVudCB0byBkZWZuIG11c3QgYmUgYSBzeW1ib2xcIikgOmNsanMgKGpzL0Vycm9yLiBcIkZpcnN0IGFyZ3VtZW50IHRvIGRlZm4gbXVzdCBiZSBhIHN5bWJvbFwiKSkpKVxuICAoY29yZS9sZXRcbiAgIFttXG4gICAgKGlmIChjb3JlL3N0cmluZz8gKGZpcnN0IGZkZWNsKSkgezpkb2MgKGZpcnN0IGZkZWNsKX0ge30pXG4gICAgZmRlY2xcbiAgICAoaWYgKGNvcmUvc3RyaW5nPyAoZmlyc3QgZmRlY2wpKSAobmV4dCBmZGVjbCkgZmRlY2wpXG4gICAgbVxuICAgIChpZiAobWFwPyAoZmlyc3QgZmRlY2wpKSAoY29uaiBtIChmaXJzdCBmZGVjbCkpIG0pXG4gICAgZmRlY2xcbiAgICAoaWYgKG1hcD8gKGZpcnN0IGZkZWNsKSkgKG5leHQgZmRlY2wpIGZkZWNsKVxuICAgIGZkZWNsXG4gICAgKGlmICh2ZWN0b3I/IChmaXJzdCBmZGVjbCkpIChjb3JlL2xpc3QgZmRlY2wpIGZkZWNsKVxuICAgIG1cbiAgICAoaWYgKG1hcD8gKGxhc3QgZmRlY2wpKSAoY29uaiBtIChsYXN0IGZkZWNsKSkgbSlcbiAgICBmZGVjbFxuICAgIChpZiAobWFwPyAobGFzdCBmZGVjbCkpIChidXRsYXN0IGZkZWNsKSBmZGVjbClcbiAgICBtXG4gICAgKGNvbmogezphcmdsaXN0cyAoY29yZS9saXN0ICdxdW90ZSAoc2lncyBmZGVjbCkpfSBtKVxuICAgIG1cbiAgICAoY29uaiAoaWYgKG1ldGEgbmFtZSkgKG1ldGEgbmFtZSkge30pIG0pXVxuICAgKGNvcmUvY29uZFxuICAgIChtdWx0aS1hcml0eS1mbj8gZmRlY2wpXG4gICAgKG11bHRpLWFyaXR5LWZuXG4gICAgIG5hbWVcbiAgICAgKGlmXG4gICAgICAoY29tcC9jaGVja2luZy10eXBlcz8pXG4gICAgICAodXBkYXRlLWluIG0gWzpqc2RvY10gY29uaiBcIkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3NcIilcbiAgICAgIG0pXG4gICAgIGZkZWNsXG4gICAgICg6ZGVmLWVtaXRzLXZhciAmZW52KSlcbiAgICAodmFyaWFkaWMtZm4/IGZkZWNsKVxuICAgICh2YXJpYWRpYy1mblxuICAgICBuYW1lXG4gICAgIChpZlxuICAgICAgKGNvbXAvY2hlY2tpbmctdHlwZXM/KVxuICAgICAgKHVwZGF0ZS1pbiBtIFs6anNkb2NdIGNvbmogXCJAcGFyYW0gey4uLip9IHZhcl9hcmdzXCIpXG4gICAgICBtKVxuICAgICBmZGVjbFxuICAgICAoOmRlZi1lbWl0cy12YXIgJmVudikpXG4gICAgOmVsc2VcbiAgICAoY29yZS9saXN0ICdkZWYgKHdpdGgtbWV0YSBuYW1lIG0pIChjb25zICdjbGpzLmNvcmUvZm4gZmRlY2wpKSkpKSlcbiJ9IHs6c3ltIHNwcmVhZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthcmdsaXN0XSl9LCA6c291cmNlICIoZGVmblxuIHNwcmVhZFxuIFthcmdsaXN0XVxuICh3aGVuLW5vdFxuICAobmlsPyBhcmdsaXN0KVxuICAobGV0XG4gICBbbiAobmV4dCBhcmdsaXN0KV1cbiAgIChpZlxuICAgIChuaWw/IG4pXG4gICAgKHNlcSAoZmlyc3QgYXJnbGlzdCkpXG4gICAgKGNvbnMgKGZpcnN0IGFyZ2xpc3QpIChzcHJlYWQgbikpKSkpKVxuIn0gezpzeW0gcnNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMsIGluIGNvbnN0YW50IHRpbWUsIGEgc2VxIG9mIHRoZSBpdGVtcyBpbiByZXYgKHdoaWNoXG4gIGNhbiBiZSBhIHZlY3RvciBvciBzb3J0ZWQtbWFwKSwgaW4gcmV2ZXJzZSBvcmRlci4gSWYgcmV2IGlzIGVtcHR5IHJldHVybnMgbmlsIiwgOmFyZ2xpc3RzIChbcmV2XSl9LCA6c291cmNlICIoZGVmblxuIHJzZXFcbiBcIlJldHVybnMsIGluIGNvbnN0YW50IHRpbWUsIGEgc2VxIG9mIHRoZSBpdGVtcyBpbiByZXYgKHdoaWNoXFxuICBjYW4gYmUgYSB2ZWN0b3Igb3Igc29ydGVkLW1hcCksIGluIHJldmVyc2Ugb3JkZXIuIElmIHJldiBpcyBlbXB0eSByZXR1cm5zIG5pbFwiXG4gW3Jldl1cbiAoLXJzZXEgcmV2KSlcbiJ9IHs6c3ltIGV4LWNhdXNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBleGNlcHRpb24gY2F1c2UgKGFuIEVycm9yIC8gRXhjZXB0aW9uSW5mbykgaWYgZXggaXMgYW5cbiAgRXhjZXB0aW9uSW5mby5cbiAgT3RoZXJ3aXNlIHJldHVybnMgbmlsLiIsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmblxuIGV4LWNhdXNlXG4gXCJSZXR1cm5zIGV4Y2VwdGlvbiBjYXVzZSAoYW4gRXJyb3IgLyBFeGNlcHRpb25JbmZvKSBpZiBleCBpcyBhblxcbiAgRXhjZXB0aW9uSW5mby5cXG4gIE90aGVyd2lzZSByZXR1cm5zIG5pbC5cIlxuIFtleF1cbiAod2hlbiAoaW5zdGFuY2U/IEV4Y2VwdGlvbkluZm8gZXgpICguLWNhdXNlIGV4KSkpXG4ifSB7OnN5bSBJUmVzZXQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHJlc2V0dGluZyBmdW5jdGlvbmFsaXR5LiJ9LCA6bWV0aG9kcyAoLXJlc2V0ISl9IHs6c3ltIElFbXB0eWFibGVDb2xsZWN0aW9uLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGNyZWF0aW5nIGFuIGVtcHR5IGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtZW1wdHkpfSB7OnN5bSBleC1tZXNzYWdlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWVzc2FnZSBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gRXJyb3IgLyBFeGNlcHRpb25JbmZvIG9iamVjdC5cbiAgRm9yIG5vbi1FcnJvcnMgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXgtbWVzc2FnZVxuIFwiUmV0dXJucyB0aGUgbWVzc2FnZSBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gRXJyb3IgLyBFeGNlcHRpb25JbmZvIG9iamVjdC5cXG4gIEZvciBub24tRXJyb3JzIHJldHVybnMgbmlsLlwiXG4gW2V4XVxuICh3aGVuIChpbnN0YW5jZT8ganMvRXJyb3IgZXgpICguLW1lc3NhZ2UgZXgpKSlcbiJ9IHs6c3ltICpwcmludC1mbi1ib2RpZXMqLCA6bWV0YSB7OmRvYyAiKnByaW50LWZucy1ib2RpZXMqIGNvbnRyb2xzIHdoZXRoZXIgZnVuY3Rpb25zIHByaW50IHRoZWlyIHNvdXJjZSBvclxuICAgIG9ubHkgdGhlaXIgbmFtZXMuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWZuLWJvZGllcyogZmFsc2UpXG4ifSB7OnN5bSBzdHJpbmctcHJpbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctcHJpbnRcbiBbeF1cbiAod2hlblxuICAobmlsPyAqcHJpbnQtZm4qKVxuICAodGhyb3dcbiAgIChqcy9FcnJvci4gXCJObyAqcHJpbnQtZm4qIGZuIHNldCBmb3IgZXZhbHVhdGlvbiBlbnZpcm9ubWVudFwiKSkpXG4gKCpwcmludC1mbiogeClcbiBuaWwpXG4ifSB7OnN5bSBmbG9hdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBmbG9hdCBbeF0geClcbiJ9IHs6c3ltIElSZWNvcmQsIDptZXRhIHs6ZG9jICJNYXJrZXIgaW50ZXJmYWNlIGluZGljYXRpbmcgYSByZWNvcmQgb2JqZWN0In0sIDptZXRob2RzICgpfSB7OnN5bSBwci1zdHIsIDptZXRhIHs6ZG9jICJwciB0byBhIHN0cmluZywgcmV0dXJuaW5nIGl0LiBGdW5kYW1lbnRhbCBlbnRyeXBvaW50IHRvIElQcmludFdpdGhXcml0ZXIuIiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxuIHByLXN0clxuIFwicHIgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdC4gRnVuZGFtZW50YWwgZW50cnlwb2ludCB0byBJUHJpbnRXaXRoV3JpdGVyLlwiXG4gWyYgb2Jqc11cbiAocHItc3RyLXdpdGgtb3B0cyBvYmpzIChwci1vcHRzKSkpXG4ifSB7OnN5bSBlczYtc2V0LWVudHJpZXMtaXRlcmF0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlczYtc2V0LWVudHJpZXMtaXRlcmF0b3JcbiBbY29sbF1cbiAoRVM2U2V0RW50cmllc0l0ZXJhdG9yLiAoc2VxIGNvbGwpKSlcbiJ9IHs6c3ltIGNvbmNhdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSByZXByZXNlbnRpbmcgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzdXBwbGllZCBjb2xscy4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgenNdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29uY2F0XG4gXCJSZXR1cm5zIGEgbGF6eSBzZXEgcmVwcmVzZW50aW5nIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc3VwcGxpZWQgY29sbHMuXCJcbiAoW10gKGxhenktc2VxIG5pbCkpXG4gKFt4XSAobGF6eS1zZXEgeCkpXG4gKFt4IHldXG4gIChsYXp5LXNlcVxuICAgKGxldFxuICAgIFtzIChzZXEgeCldXG4gICAgKGlmXG4gICAgIHNcbiAgICAgKGlmXG4gICAgICAoY2h1bmtlZC1zZXE/IHMpXG4gICAgICAoY2h1bmstY29ucyAoY2h1bmstZmlyc3QgcykgKGNvbmNhdCAoY2h1bmstcmVzdCBzKSB5KSlcbiAgICAgIChjb25zIChmaXJzdCBzKSAoY29uY2F0IChyZXN0IHMpIHkpKSlcbiAgICAgeSkpKSlcbiAoW3ggeSAmIHpzXVxuICAobGV0XG4gICBbY2F0XG4gICAgKGZuXG4gICAgIGNhdFxuICAgICBbeHlzIHpzXVxuICAgICAobGF6eS1zZXFcbiAgICAgIChsZXRcbiAgICAgICBbeHlzIChzZXEgeHlzKV1cbiAgICAgICAoaWZcbiAgICAgICAgeHlzXG4gICAgICAgIChpZlxuICAgICAgICAgKGNodW5rZWQtc2VxPyB4eXMpXG4gICAgICAgICAoY2h1bmstY29ucyAoY2h1bmstZmlyc3QgeHlzKSAoY2F0IChjaHVuay1yZXN0IHh5cykgenMpKVxuICAgICAgICAgKGNvbnMgKGZpcnN0IHh5cykgKGNhdCAocmVzdCB4eXMpIHpzKSkpXG4gICAgICAgICh3aGVuIHpzIChjYXQgKGZpcnN0IHpzKSAobmV4dCB6cykpKSkpKSldXG4gICAoY2F0IChjb25jYXQgeCB5KSB6cykpKSlcbiJ9IHs6c3ltIC1tZXRob2RzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIGpzLXJlc2VydmVkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBqcy1yZXNlcnZlZCBuaWwpXG4ifSB7OnN5bSBJRGVyZWZXaXRoVGltZW91dCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1kZXJlZi13aXRoLXRpbWVvdXQpfSB7OnN5bSBzeW1ib2wsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgU3ltYm9sIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZSBhbmQgbmFtZS4gQXJpdHktMSB3b3Jrc1xuICBvbiBzdHJpbmdzLCBrZXl3b3JkcywgYW5kIHZhcnMuIiwgOmFyZ2xpc3RzIFtbbmFtZV0gW25zIG5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3ltYm9sXG4gXCJSZXR1cm5zIGEgU3ltYm9sIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZSBhbmQgbmFtZS4gQXJpdHktMSB3b3Jrc1xcbiAgb24gc3RyaW5ncywga2V5d29yZHMsIGFuZCB2YXJzLlwiXG4gKFtuYW1lXVxuICAoY29uZFxuICAgKHN5bWJvbD8gbmFtZSlcbiAgIG5hbWVcbiAgIChzdHJpbmc/IG5hbWUpXG4gICAobGV0XG4gICAgW2lkeCAoLmluZGV4T2YgbmFtZSBcIi9cIildXG4gICAgKGlmXG4gICAgICg8IGlkeCAxKVxuICAgICAoc3ltYm9sIG5pbCBuYW1lKVxuICAgICAoc3ltYm9sXG4gICAgICAoLnN1YnN0cmluZyBuYW1lIDAgaWR4KVxuICAgICAgKC5zdWJzdHJpbmcgbmFtZSAoaW5jIGlkeCkgKC4gbmFtZSAtbGVuZ3RoKSkpKSlcbiAgICh2YXI/IG5hbWUpXG4gICAoLi1zeW0gbmFtZSlcbiAgIChrZXl3b3JkPyBuYW1lKVxuICAgKHJlY3VyICguLWZxbiBuYW1lKSlcbiAgIDplbHNlXG4gICAodGhyb3cgKG5ldyBqcy9FcnJvciBcIm5vIGNvbnZlcnNpb24gdG8gc3ltYm9sXCIpKSkpXG4gKFtucyBuYW1lXVxuICAobGV0XG4gICBbc3ltLXN0ciAoaWYtbm90IChuaWw/IG5zKSAoc3RyIG5zIFwiL1wiIG5hbWUpIG5hbWUpXVxuICAgKFN5bWJvbC4gbnMgbmFtZSBzeW0tc3RyIG5pbCBuaWwpKSkpXG4ifSB7OnN5bSB0by1hcnJheS0yZCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSAocG90ZW50aWFsbHktcmFnZ2VkKSAyLWRpbWVuc2lvbmFsIGFycmF5XG4gIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0by1hcnJheS0yZFxuIFwiUmV0dXJucyBhIChwb3RlbnRpYWxseS1yYWdnZWQpIDItZGltZW5zaW9uYWwgYXJyYXlcXG4gIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGNvbGwuXCJcbiBbY29sbF1cbiAobGV0XG4gIFtyZXQgKG1ha2UtYXJyYXkgKGNvdW50IGNvbGwpKV1cbiAgKGxvb3BcbiAgIFtpIDAgeHMgKHNlcSBjb2xsKV1cbiAgICh3aGVuLW5vdFxuICAgIChuaWw/IHhzKVxuICAgIChhc2V0IHJldCBpICh0by1hcnJheSAoZmlyc3QgeHMpKSlcbiAgICAocmVjdXIgKGluYyBpKSAobmV4dCB4cykpKSlcbiAgcmV0KSlcbiJ9IHs6c3ltIEV4Y2VwdGlvbkluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWVzc2FnZSBkYXRhIGNhdXNlXSl9LCA6c291cmNlICIoZGVmblxuIEV4Y2VwdGlvbkluZm9cbiBbbWVzc2FnZSBkYXRhIGNhdXNlXVxuIChsZXRcbiAgW2UgKGpzL0Vycm9yLiBtZXNzYWdlKV1cbiAgKHRoaXMtYXNcbiAgIHRoaXNcbiAgIChzZXQhICguLW1lc3NhZ2UgdGhpcykgbWVzc2FnZSlcbiAgIChzZXQhICguLWRhdGEgdGhpcykgZGF0YSlcbiAgIChzZXQhICguLWNhdXNlIHRoaXMpIGNhdXNlKVxuICAgKGRvXG4gICAgKHNldCEgKC4tbmFtZSB0aGlzKSAoLi1uYW1lIGUpKVxuICAgIChzZXQhICguLWRlc2NyaXB0aW9uIHRoaXMpICguLWRlc2NyaXB0aW9uIGUpKVxuICAgIChzZXQhICguLW51bWJlciB0aGlzKSAoLi1udW1iZXIgZSkpXG4gICAgKHNldCEgKC4tZmlsZU5hbWUgdGhpcykgKC4tZmlsZU5hbWUgZSkpXG4gICAgKHNldCEgKC4tbGluZU51bWJlciB0aGlzKSAoLi1saW5lTnVtYmVyIGUpKVxuICAgIChzZXQhICguLWNvbHVtbk51bWJlciB0aGlzKSAoLi1jb2x1bW5OdW1iZXIgZSkpXG4gICAgKHNldCEgKC4tc3RhY2sgdGhpcykgKC4tc3RhY2sgZSkpKVxuICAgdGhpcykpKVxuIn0gezpzeW0gbW9kLCA6bWV0YSB7OmRvYyAiTW9kdWx1cyBvZiBudW0gYW5kIGRpdi4gVHJ1bmNhdGVzIHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eS4iLCA6YXJnbGlzdHMgKFtuIGRdKX0sIDpzb3VyY2UgIihkZWZuXG4gbW9kXG4gXCJNb2R1bHVzIG9mIG51bSBhbmQgZGl2LiBUcnVuY2F0ZXMgdG93YXJkIG5lZ2F0aXZlIGluZmluaXR5LlwiXG4gW24gZF1cbiAoanMtbW9kICgrIChqcy1tb2QgbiBkKSBkKSBkKSlcbiJ9IHs6c3ltIElTZXQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHNldCBmdW5jdGlvbmFsaXR5IHRvIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1kaXNqb2luKX0gezpzeW0gcG9wLCA6bWV0YSB7OmRvYyAiRm9yIGEgbGlzdCBvciBxdWV1ZSwgcmV0dXJucyBhIG5ldyBsaXN0L3F1ZXVlIHdpdGhvdXQgdGhlIGZpcnN0XG4gIGl0ZW0sIGZvciBhIHZlY3RvciwgcmV0dXJucyBhIG5ldyB2ZWN0b3Igd2l0aG91dCB0aGUgbGFzdCBpdGVtLlxuICBOb3RlIC0gbm90IHRoZSBzYW1lIGFzIG5leHQvYnV0bGFzdC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHBvcFxuIFwiRm9yIGEgbGlzdCBvciBxdWV1ZSwgcmV0dXJucyBhIG5ldyBsaXN0L3F1ZXVlIHdpdGhvdXQgdGhlIGZpcnN0XFxuICBpdGVtLCBmb3IgYSB2ZWN0b3IsIHJldHVybnMgYSBuZXcgdmVjdG9yIHdpdGhvdXQgdGhlIGxhc3QgaXRlbS5cXG4gIE5vdGUgLSBub3QgdGhlIHNhbWUgYXMgbmV4dC9idXRsYXN0LlwiXG4gW2NvbGxdXG4gKHdoZW4tbm90IChuaWw/IGNvbGwpICgtcG9wIGNvbGwpKSlcbiJ9IHs6c3ltIElQZW5kaW5nLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHR5cGVzIHdoaWNoIGNhbiBoYXZlIGEgZGVmZXJyZWQgcmVhbGl6YXRpb24uIEN1cnJlbnRseSBvbmx5XG4gIGltcGxlbWVudGVkIGJ5IERlbGF5IGFuZCBMYXp5U2VxLiJ9LCA6bWV0aG9kcyAoLXJlYWxpemVkPyl9IHs6c3ltIC1lbnRyeS1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBrZXkgZm9yIGVudHJ5LiIsIDphcmdsaXN0cyAoW2NvbGwgZW50cnldKX0sIDpwcm90b2NvbCBJU29ydGVkfSB7OnN5bSBDSEFSX01BUCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBDSEFSX01BUFxuICNqcyB7XCJdXCIgXCJfUkJSQUNLX1wiLCBcIidcIiBcIl9TSU5HTEVRVU9URV9cIiwgXCI9XCIgXCJfRVFfXCIsIFwiXFxcXFxcXCJcIiBcIl9ET1VCTEVRVU9URV9cIiwgXCIhXCIgXCJfQkFOR19cIiwgXCIqXCIgXCJfU1RBUl9cIiwgXCIlXCIgXCJfUEVSQ0VOVF9cIiwgXCJ8XCIgXCJfQkFSX1wiLCBcIn5cIiBcIl9USUxERV9cIiwgXCIvXCIgXCJfU0xBU0hfXCIsIFwiXFxcXFxcXFxcIiBcIl9CU0xBU0hfXCIsIFwiLVwiIFwiX1wiLCBcIj9cIiBcIl9RTUFSS19cIiwgXCImXCIgXCJfQU1QRVJTQU5EX1wiLCBcIjpcIiBcIl9DT0xPTl9cIiwgXCI8XCIgXCJfTFRfXCIsIFwie1wiIFwiX0xCUkFDRV9cIiwgXCJ9XCIgXCJfUkJSQUNFX1wiLCBcIltcIiBcIl9MQlJBQ0tfXCIsIFwiI1wiIFwiX1NIQVJQX1wiLCBcIl5cIiBcIl9DQVJFVF9cIiwgXCIrXCIgXCJfUExVU19cIiwgXCJAXCIgXCJfQ0lSQ0FfXCIsIFwiPlwiIFwiX0dUX1wifSlcbiJ9IHs6c3ltIGRpc3NvYyEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdHJhbnNpZW50IG1hcCB0aGF0IGRvZXNuJ3QgY29udGFpbiBhIG1hcHBpbmcgZm9yIGtleShzKS4iLCA6YXJnbGlzdHMgW1t0Y29sbCBrZXldIFt0Y29sbCBrZXkgJiBrc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNzb2MhXG4gXCJSZXR1cm5zIGEgdHJhbnNpZW50IG1hcCB0aGF0IGRvZXNuJ3QgY29udGFpbiBhIG1hcHBpbmcgZm9yIGtleShzKS5cIlxuIChbdGNvbGwga2V5XSAoLWRpc3NvYyEgdGNvbGwga2V5KSlcbiAoW3Rjb2xsIGtleSAmIGtzXVxuICAobGV0XG4gICBbbnRjb2xsICgtZGlzc29jISB0Y29sbCBrZXkpXVxuICAgKGlmIGtzIChyZWN1ciBudGNvbGwgKGZpcnN0IGtzKSAobmV4dCBrcykpIG50Y29sbCkpKSlcbiJ9IHs6c3ltIHJlZHVjdGlvbnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgb2YgdGhlIHJlZHVjdGlvbiAoYXNcbiAgcGVyIHJlZHVjZSkgb2YgY29sbCBieSBmLCBzdGFydGluZyB3aXRoIGluaXQuIiwgOmFyZ2xpc3RzIFtbZiBjb2xsXSBbZiBpbml0IGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWN0aW9uc1xuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIG9mIHRoZSByZWR1Y3Rpb24gKGFzXFxuICBwZXIgcmVkdWNlKSBvZiBjb2xsIGJ5IGYsIHN0YXJ0aW5nIHdpdGggaW5pdC5cIlxuIChbZiBjb2xsXVxuICAobGF6eS1zZXFcbiAgIChpZi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChyZWR1Y3Rpb25zIGYgKGZpcnN0IHMpIChyZXN0IHMpKVxuICAgIChsaXN0IChmKSkpKSlcbiAoW2YgaW5pdCBjb2xsXVxuICAoaWZcbiAgIChyZWR1Y2VkPyBpbml0KVxuICAgKGxpc3QgQGluaXQpXG4gICAoY29uc1xuICAgIGluaXRcbiAgICAobGF6eS1zZXFcbiAgICAgKHdoZW4tbGV0XG4gICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAgKHJlZHVjdGlvbnMgZiAoZiBpbml0IChmaXJzdCBzKSkgKHJlc3QgcykpKSkpKSkpXG4ifSB7OnN5bSBmYXN0LXBhdGgtcHJvdG9jb2wtcGFydGl0aW9ucy1jb3VudCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmYXN0LXBhdGgtcHJvdG9jb2wtcGFydGl0aW9ucy1jb3VudFxuIFwidG90YWwgbnVtYmVyIG9mIHBhcnRpdGlvbnNcIlxuIChjb3JlL2xldFxuICBbYyAoY291bnQgZmFzdC1wYXRoLXByb3RvY29scykgbSAoY29yZS9tb2QgYyAzMildXG4gIChpZiAoY29yZS96ZXJvPyBtKSAoY29yZS9xdW90IGMgMzIpIChjb3JlL2luYyAoY29yZS9xdW90IGMgMzIpKSkpKVxuIn0gezpzeW0gaW5kZXhlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIG50aCBpbiBjb25zdGFudCB0aW1lIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleGVkP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBudGggaW4gY29uc3RhbnQgdGltZVwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUluZGV4ZWQgeCkpXG4ifSB7OnN5bSAtLCA6bWV0YSB7OmRvYyAiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gLVxuIFwiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlwiXG4gKFt4XSAoY2xqcy5jb3JlLy0geCkpXG4gKFt4IHldIChjbGpzLmNvcmUvLSB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSAtIChjbGpzLmNvcmUvLSB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIC1lcXVpdiwgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBvIGFuZCBvdGhlciBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFtvIG90aGVyXSl9LCA6cHJvdG9jb2wgSUVxdWl2fSB7OnN5bSBhc3NvYyEsIDptZXRhIHs6ZG9jICJXaGVuIGFwcGxpZWQgdG8gYSB0cmFuc2llbnQgbWFwLCBhZGRzIG1hcHBpbmcgb2Yga2V5KHMpIHRvXG4gIHZhbChzKS4gV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IHZlY3Rvciwgc2V0cyB0aGUgdmFsIGF0IGluZGV4LlxuICBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS4gUmV0dXJucyBjb2xsLiIsIDphcmdsaXN0cyBbW3Rjb2xsIGtleSB2YWxdIFt0Y29sbCBrZXkgdmFsICYga3ZzXV19LCA6c291cmNlICIoZGVmblxuIGFzc29jIVxuIFwiV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IG1hcCwgYWRkcyBtYXBwaW5nIG9mIGtleShzKSB0b1xcbiAgdmFsKHMpLiBXaGVuIGFwcGxpZWQgdG8gYSB0cmFuc2llbnQgdmVjdG9yLCBzZXRzIHRoZSB2YWwgYXQgaW5kZXguXFxuICBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS4gUmV0dXJucyBjb2xsLlwiXG4gKFt0Y29sbCBrZXkgdmFsXSAoLWFzc29jISB0Y29sbCBrZXkgdmFsKSlcbiAoW3Rjb2xsIGtleSB2YWwgJiBrdnNdXG4gIChsZXRcbiAgIFtudGNvbGwgKC1hc3NvYyEgdGNvbGwga2V5IHZhbCldXG4gICAoaWZcbiAgICBrdnNcbiAgICAocmVjdXIgbnRjb2xsIChmaXJzdCBrdnMpIChzZWNvbmQga3ZzKSAobm5leHQga3ZzKSlcbiAgICBudGNvbGwpKSkpXG4ifSB7OnN5bSBoYXNoLXNldCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgaGFzaCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLiAgQW55IGVxdWFsIGtleXMgYXJlXG4gIGhhbmRsZWQgYXMgaWYgYnkgcmVwZWF0ZWQgdXNlcyBvZiBjb25qLiIsIDphcmdsaXN0cyBbW10gWyYga2V5c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLXNldFxuIFwiUmV0dXJucyBhIG5ldyBoYXNoIHNldCB3aXRoIHN1cHBsaWVkIGtleXMuICBBbnkgZXF1YWwga2V5cyBhcmVcXG4gIGhhbmRsZWQgYXMgaWYgYnkgcmVwZWF0ZWQgdXNlcyBvZiBjb25qLlwiXG4gKFtdICN7fSlcbiAoWyYga2V5c10gKHNldCBrZXlzKSkpXG4ifSB7OnN5bSByZWR1Y2Uta3YsIDptZXRhIHs6ZG9jICJSZWR1Y2VzIGFuIGFzc29jaWF0aXZlIGNvbGxlY3Rpb24uIGYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgM1xuICBhcmd1bWVudHMuIFJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIGluaXQsIHRoZSBmaXJzdCBrZXlcbiAgYW5kIHRoZSBmaXJzdCB2YWx1ZSBpbiBjb2xsLCB0aGVuIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZVxuICAybmQga2V5IGFuZCB2YWx1ZSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vIGVudHJpZXMsIHJldHVybnMgaW5pdFxuICBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXQgcmVkdWNlLWt2IGlzIHN1cHBvcnRlZCBvbiB2ZWN0b3JzLFxuICB3aGVyZSB0aGUga2V5cyB3aWxsIGJlIHRoZSBvcmRpbmFscy4iLCA6YXJnbGlzdHMgW1tmIGluaXQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2Uta3ZcbiBcIlJlZHVjZXMgYW4gYXNzb2NpYXRpdmUgY29sbGVjdGlvbi4gZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAzXFxuICBhcmd1bWVudHMuIFJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIGluaXQsIHRoZSBmaXJzdCBrZXlcXG4gIGFuZCB0aGUgZmlyc3QgdmFsdWUgaW4gY29sbCwgdGhlbiBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGVcXG4gIDJuZCBrZXkgYW5kIHZhbHVlLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm8gZW50cmllcywgcmV0dXJucyBpbml0XFxuICBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXQgcmVkdWNlLWt2IGlzIHN1cHBvcnRlZCBvbiB2ZWN0b3JzLFxcbiAgd2hlcmUgdGhlIGtleXMgd2lsbCBiZSB0aGUgb3JkaW5hbHMuXCJcbiAoW2YgaW5pdCBjb2xsXSAoaWYtbm90IChuaWw/IGNvbGwpICgta3YtcmVkdWNlIGNvbGwgZiBpbml0KSBpbml0KSkpXG4ifSB7OnN5bSByZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIG5ld3ZhbCB3aXRob3V0IHJlZ2FyZCBmb3IgdGhlXG4gIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3LXZhbHVlLiIsIDphcmdsaXN0cyAoW2EgbmV3LXZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHJlc2V0IVxuIFwiU2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxcbiAgY3VycmVudCB2YWx1ZS4gUmV0dXJucyBuZXctdmFsdWUuXCJcbiBbYSBuZXctdmFsdWVdXG4gKGlmXG4gIChpbnN0YW5jZT8gQXRvbSBhKVxuICAobGV0XG4gICBbdmFsaWRhdGUgKC4tdmFsaWRhdG9yIGEpXVxuICAgKHdoZW4tbm90XG4gICAgKG5pbD8gdmFsaWRhdGUpXG4gICAgKHdoZW4tbm90XG4gICAgICh2YWxpZGF0ZSBuZXctdmFsdWUpXG4gICAgICh0aHJvdyAoanMvRXJyb3IuIFwiVmFsaWRhdG9yIHJlamVjdGVkIHJlZmVyZW5jZSBzdGF0ZVwiKSkpKVxuICAgKGxldFxuICAgIFtvbGQtdmFsdWUgKC4tc3RhdGUgYSldXG4gICAgKHNldCEgKC4tc3RhdGUgYSkgbmV3LXZhbHVlKVxuICAgICh3aGVuLW5vdFxuICAgICAobmlsPyAoLi13YXRjaGVzIGEpKVxuICAgICAoLW5vdGlmeS13YXRjaGVzIGEgb2xkLXZhbHVlIG5ldy12YWx1ZSkpXG4gICAgbmV3LXZhbHVlKSlcbiAgKC1yZXNldCEgYSBuZXctdmFsdWUpKSlcbiJ9IHs6c3ltIG5hbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuYW1lIFN0cmluZyBvZiBhIHN0cmluZywgc3ltYm9sIG9yIGtleXdvcmQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYW1lXG4gXCJSZXR1cm5zIHRoZSBuYW1lIFN0cmluZyBvZiBhIHN0cmluZywgc3ltYm9sIG9yIGtleXdvcmQuXCJcbiBbeF1cbiAoaWZcbiAgKGltcGxlbWVudHM/IElOYW1lZCB4KVxuICAoLW5hbWUgeClcbiAgKGlmXG4gICAoc3RyaW5nPyB4KVxuICAgeFxuICAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIkRvZXNuJ3Qgc3VwcG9ydCBuYW1lOiBcIiB4KSkpKSkpXG4ifSB7OnN5bSBGbiwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gZmZpcnN0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAoZmlyc3QgKGZpcnN0IHgpKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuIGZmaXJzdCBcIlNhbWUgYXMgKGZpcnN0IChmaXJzdCB4KSlcIiBbY29sbF0gKGZpcnN0IChmaXJzdCBjb2xsKSkpXG4ifSB7OnN5bSBzb3J0ZWQtc2V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cy4iLCA6YXJnbGlzdHMgW1smIGtleXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydGVkLXNldFxuIFwiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cy5cIlxuIChbJiBrZXlzXSAocmVkdWNlIC1jb25qICguLUVNUFRZIFBlcnNpc3RlbnRUcmVlU2V0KSBrZXlzKSkpXG4ifSB7OnN5bSBjb3VudGVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgY291bnQgaW4gY29uc3RhbnQgdGltZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY291bnRlZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgY291bnQgaW4gY29uc3RhbnQgdGltZVwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUNvdW50ZWQgeCkpXG4ifSB7OnN5bSB0YWdnZWQtbGl0ZXJhbCwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSB0YWdnZWQgbGl0ZXJhbCBmcm9tIGFcbiAgdGFnIHN5bWJvbCBhbmQgYSBmb3JtLiIsIDphcmdsaXN0cyAoW3RhZyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHRhZ2dlZC1saXRlcmFsXG4gXCJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgdGFnZ2VkIGxpdGVyYWwgZnJvbSBhXFxuICB0YWcgc3ltYm9sIGFuZCBhIGZvcm0uXCJcbiBbdGFnIGZvcm1dXG4gezpwcmUgWyhzeW1ib2w/IHRhZyldfVxuIChUYWdnZWRMaXRlcmFsLiB0YWcgZm9ybSkpXG4ifSB7OnN5bSBwcmludGxuLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBwcmludCBmb2xsb3dlZCBieSAobmV3bGluZSkiLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnRsblxuIFwiU2FtZSBhcyBwcmludCBmb2xsb3dlZCBieSAobmV3bGluZSlcIlxuIFsmIG9ianNdXG4gKHByLXdpdGgtb3B0cyBvYmpzIChhc3NvYyAocHItb3B0cykgOnJlYWRhYmx5IGZhbHNlKSlcbiAod2hlbiAqcHJpbnQtbmV3bGluZSogKG5ld2xpbmUgKHByLW9wdHMpKSkpXG4ifSB7OnN5bSBhc3NvYy1pbiwgOm1ldGEgezpkb2MgIkFzc29jaWF0ZXMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGtzIGlzIGFcbiAgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgdiBpcyB0aGUgbmV3IHZhbHVlIGFuZCByZXR1cm5zIGEgbmV3IG5lc3RlZCBzdHJ1Y3R1cmUuXG4gIElmIGFueSBsZXZlbHMgZG8gbm90IGV4aXN0LCBoYXNoLW1hcHMgd2lsbCBiZSBjcmVhdGVkLiIsIDphcmdsaXN0cyAoW20gW2sgJiBrc10gdl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3NvYy1pblxuIFwiQXNzb2NpYXRlcyBhIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUga3MgaXMgYVxcbiAgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgdiBpcyB0aGUgbmV3IHZhbHVlIGFuZCByZXR1cm5zIGEgbmV3IG5lc3RlZCBzdHJ1Y3R1cmUuXFxuICBJZiBhbnkgbGV2ZWxzIGRvIG5vdCBleGlzdCwgaGFzaC1tYXBzIHdpbGwgYmUgY3JlYXRlZC5cIlxuIFttIFtrICYga3NdIHZdXG4gKGlmIGtzIChhc3NvYyBtIGsgKGFzc29jLWluIChnZXQgbSBrKSBrcyB2KSkgKGFzc29jIG0gayB2KSkpXG4ifSB7OnN5bSBiaXQtdGVzdCwgOm1ldGEgezpkb2MgIlRlc3QgYml0IGF0IGluZGV4IG4iLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuIGJpdC10ZXN0IFwiVGVzdCBiaXQgYXQgaW5kZXggblwiIFt4IG5dIChjbGpzLmNvcmUvYml0LXRlc3QgeCBuKSlcbiJ9IHs6c3ltIElTd2FwLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBzd2FwcGluZyBmdW5jdGlvbmFsaXR5LiJ9LCA6bWV0aG9kcyAoLXN3YXAhKX0gezpzeW0gbWVtb2l6ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtZW1vaXplZCB2ZXJzaW9uIG9mIGEgcmVmZXJlbnRpYWxseSB0cmFuc3BhcmVudCBmdW5jdGlvbi4gVGhlXG4gIG1lbW9pemVkIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIGtlZXBzIGEgY2FjaGUgb2YgdGhlIG1hcHBpbmcgZnJvbSBhcmd1bWVudHNcbiAgdG8gcmVzdWx0cyBhbmQsIHdoZW4gY2FsbHMgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXJlIHJlcGVhdGVkIG9mdGVuLCBoYXNcbiAgaGlnaGVyIHBlcmZvcm1hbmNlIGF0IHRoZSBleHBlbnNlIG9mIGhpZ2hlciBtZW1vcnkgdXNlLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVtb2l6ZVxuIFwiUmV0dXJucyBhIG1lbW9pemVkIHZlcnNpb24gb2YgYSByZWZlcmVudGlhbGx5IHRyYW5zcGFyZW50IGZ1bmN0aW9uLiBUaGVcXG4gIG1lbW9pemVkIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIGtlZXBzIGEgY2FjaGUgb2YgdGhlIG1hcHBpbmcgZnJvbSBhcmd1bWVudHNcXG4gIHRvIHJlc3VsdHMgYW5kLCB3aGVuIGNhbGxzIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFyZSByZXBlYXRlZCBvZnRlbiwgaGFzXFxuICBoaWdoZXIgcGVyZm9ybWFuY2UgYXQgdGhlIGV4cGVuc2Ugb2YgaGlnaGVyIG1lbW9yeSB1c2UuXCJcbiBbZl1cbiAobGV0XG4gIFttZW0gKGF0b20ge30pXVxuICAoZm5cbiAgIFsmIGFyZ3NdXG4gICAobGV0XG4gICAgW3YgKGdldCBAbWVtIGFyZ3MgbG9va3VwLXNlbnRpbmVsKV1cbiAgICAoaWZcbiAgICAgKGlkZW50aWNhbD8gdiBsb29rdXAtc2VudGluZWwpXG4gICAgIChsZXQgW3JldCAoYXBwbHkgZiBhcmdzKV0gKHN3YXAhIG1lbSBhc3NvYyBhcmdzIHJldCkgcmV0KVxuICAgICB2KSkpKSlcbiJ9IHs6c3ltIGFsdGVyLW1ldGEhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzZXRzIHRoZSBtZXRhZGF0YSBmb3IgYSBuYW1lc3BhY2UvdmFyL3JlZi9hZ2VudC9hdG9tIHRvIGJlOlxuXG4gIChhcHBseSBmIGl0cy1jdXJyZW50LW1ldGEgYXJncylcblxuICBmIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMiLCA6YXJnbGlzdHMgKFtpcmVmIGYgJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGFsdGVyLW1ldGEhXG4gXCJBdG9taWNhbGx5IHNldHMgdGhlIG1ldGFkYXRhIGZvciBhIG5hbWVzcGFjZS92YXIvcmVmL2FnZW50L2F0b20gdG8gYmU6XFxuXFxuICAoYXBwbHkgZiBpdHMtY3VycmVudC1tZXRhIGFyZ3MpXFxuXFxuICBmIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHNcIlxuIFtpcmVmIGYgJiBhcmdzXVxuIChzZXQhICguLW1ldGEgaXJlZikgKGFwcGx5IGYgKC4tbWV0YSBpcmVmKSBhcmdzKSkpXG4ifSB7OnN5bSB6ZXJvPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgemVybywgZWxzZSBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gemVybz9cbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgemVybywgZWxzZSBmYWxzZVwiXG4gW3hdXG4gKGNsanMuY29yZS96ZXJvPyB4KSlcbiJ9IHs6c3ltIHNpbXBsZS1rZXl3b3JkPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1rZXl3b3JkP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIGtleXdvcmQgd2l0aG91dCBhIG5hbWVzcGFjZVwiXG4gW3hdXG4gKGFuZCAoa2V5d29yZD8geCkgKG5pbD8gKG5hbWVzcGFjZSB4KSkpKVxuIn0gezpzeW0gKm1haW4tY2xpLWZuKiwgOm1ldGEgezpkb2MgIldoZW4gY29tcGlsZWQgZm9yIGEgY29tbWFuZC1saW5lIHRhcmdldCwgd2hhdGV2ZXIgZnVuY3Rpb25cbiAgKm1haW4tY2xpLWZuKiBpcyBzZXQgdG8gd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgY29tbWFuZC1saW5lXG4gIGFyZ3YgYXMgYXJndW1lbnRzIn0sIDpzb3VyY2UgIihkZWYgKm1haW4tY2xpLWZuKiBuaWwpXG4ifSB7OnN5bSAtYXNzb2MtbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgdmVjdG9yIHdpdGggdmFsdWUgdmFsIGFkZGVkIGF0IHBvc2l0aW9uIG4uIiwgOmFyZ2xpc3RzIChbY29sbCBuIHZhbF0pfSwgOnByb3RvY29sIElWZWN0b3J9IHs6c3ltIHVuY2hlY2tlZC1kZWMtaW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIHgsIGFuIGludC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVuY2hlY2tlZC1kZWMtaW50XG4gXCJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4geCwgYW4gaW50LlwiXG4gW3hdXG4gKGNsanMuY29yZS91bmNoZWNrZWQtZGVjLWludCB4KSlcbiJ9IHs6c3ltIHBlcnNpc3RlbnQhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgcGVyc2lzdGVudCB2ZXJzaW9uIG9mIHRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiwgaW5cbiAgY29uc3RhbnQgdGltZS4gVGhlIHRyYW5zaWVudCBjb2xsZWN0aW9uIGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXNcbiAgY2FsbCwgYW55IHN1Y2ggdXNlIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiIsIDphcmdsaXN0cyAoW3Rjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNpc3RlbnQhXG4gXCJSZXR1cm5zIGEgbmV3LCBwZXJzaXN0ZW50IHZlcnNpb24gb2YgdGhlIHRyYW5zaWVudCBjb2xsZWN0aW9uLCBpblxcbiAgY29uc3RhbnQgdGltZS4gVGhlIHRyYW5zaWVudCBjb2xsZWN0aW9uIGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXNcXG4gIGNhbGwsIGFueSBzdWNoIHVzZSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi5cIlxuIFt0Y29sbF1cbiAoLXBlcnNpc3RlbnQhIHRjb2xsKSlcbiJ9IHs6c3ltIHNldC1wcmludC1mbiEsIDptZXRhIHs6ZG9jICJTZXQgKnByaW50LWZuKiB0byBmLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuIHNldC1wcmludC1mbiEgXCJTZXQgKnByaW50LWZuKiB0byBmLlwiIFtmXSAoc2V0ISAqcHJpbnQtZm4qIGYpKVxuIn0gezpzeW0gbm5leHQsIDptZXRhIHs6ZG9jICJTYW1lIGFzIChuZXh0IChuZXh0IHgpKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuIG5uZXh0IFwiU2FtZSBhcyAobmV4dCAobmV4dCB4KSlcIiBbY29sbF0gKG5leHQgKG5leHQgY29sbCkpKVxuIn0gezpzeW0gYWRkLXdhdGNoLCA6bWV0YSB7OmRvYyAiQWRkcyBhIHdhdGNoIGZ1bmN0aW9uIHRvIGFuIGF0b20gcmVmZXJlbmNlLiBUaGUgd2F0Y2ggZm4gbXVzdCBiZSBhXG4gIGZuIG9mIDQgYXJnczogYSBrZXksIHRoZSByZWZlcmVuY2UsIGl0cyBvbGQtc3RhdGUsIGl0c1xuICBuZXctc3RhdGUuIFdoZW5ldmVyIHRoZSByZWZlcmVuY2UncyBzdGF0ZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCxcbiAgYW55IHJlZ2lzdGVyZWQgd2F0Y2hlcyB3aWxsIGhhdmUgdGhlaXIgZnVuY3Rpb25zIGNhbGxlZC4gVGhlIHdhdGNoXG4gIGZuIHdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkuIE5vdGUgdGhhdCBhbiBhdG9tJ3Mgc3RhdGVcbiAgbWF5IGhhdmUgY2hhbmdlZCBhZ2FpbiBwcmlvciB0byB0aGUgZm4gY2FsbCwgc28gdXNlIG9sZC9uZXctc3RhdGVcbiAgcmF0aGVyIHRoYW4gZGVyZWZpbmcgdGhlIHJlZmVyZW5jZS4gS2V5cyBtdXN0IGJlIHVuaXF1ZSBwZXJcbiAgcmVmZXJlbmNlLCBhbmQgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSB3YXRjaCB3aXRoIHJlbW92ZS13YXRjaCxcbiAgYnV0IGFyZSBvdGhlcndpc2UgY29uc2lkZXJlZCBvcGFxdWUgYnkgdGhlIHdhdGNoIG1lY2hhbmlzbS4gIEJlYXIgaW5cbiAgbWluZCB0aGF0IHJlZ2FyZGxlc3Mgb2YgdGhlIHJlc3VsdCBvciBhY3Rpb24gb2YgdGhlIHdhdGNoIGZucyB0aGVcbiAgYXRvbSdzIHZhbHVlIHdpbGwgY2hhbmdlLiAgRXhhbXBsZTpcblxuICAgICAgKGRlZiBhIChhdG9tIDApKVxuICAgICAgKGFkZC13YXRjaCBhIDppbmMgKGZuIFtrIHIgbyBuXSAoYXNzZXJ0ICg9PSAwIG4pKSkpXG4gICAgICAoc3dhcCEgYSBpbmMpXG4gICAgICA7OyBBc3NlcnRpb24gRXJyb3JcbiAgICAgIChkZXJlZiBhKVxuICAgICAgOz0+IDEiLCA6YXJnbGlzdHMgKFtpcmVmIGtleSBmXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC13YXRjaFxuIFwiQWRkcyBhIHdhdGNoIGZ1bmN0aW9uIHRvIGFuIGF0b20gcmVmZXJlbmNlLiBUaGUgd2F0Y2ggZm4gbXVzdCBiZSBhXFxuICBmbiBvZiA0IGFyZ3M6IGEga2V5LCB0aGUgcmVmZXJlbmNlLCBpdHMgb2xkLXN0YXRlLCBpdHNcXG4gIG5ldy1zdGF0ZS4gV2hlbmV2ZXIgdGhlIHJlZmVyZW5jZSdzIHN0YXRlIG1pZ2h0IGhhdmUgYmVlbiBjaGFuZ2VkLFxcbiAgYW55IHJlZ2lzdGVyZWQgd2F0Y2hlcyB3aWxsIGhhdmUgdGhlaXIgZnVuY3Rpb25zIGNhbGxlZC4gVGhlIHdhdGNoXFxuICBmbiB3aWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5LiBOb3RlIHRoYXQgYW4gYXRvbSdzIHN0YXRlXFxuICBtYXkgaGF2ZSBjaGFuZ2VkIGFnYWluIHByaW9yIHRvIHRoZSBmbiBjYWxsLCBzbyB1c2Ugb2xkL25ldy1zdGF0ZVxcbiAgcmF0aGVyIHRoYW4gZGVyZWZpbmcgdGhlIHJlZmVyZW5jZS4gS2V5cyBtdXN0IGJlIHVuaXF1ZSBwZXJcXG4gIHJlZmVyZW5jZSwgYW5kIGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgd2F0Y2ggd2l0aCByZW1vdmUtd2F0Y2gsXFxuICBidXQgYXJlIG90aGVyd2lzZSBjb25zaWRlcmVkIG9wYXF1ZSBieSB0aGUgd2F0Y2ggbWVjaGFuaXNtLiAgQmVhciBpblxcbiAgbWluZCB0aGF0IHJlZ2FyZGxlc3Mgb2YgdGhlIHJlc3VsdCBvciBhY3Rpb24gb2YgdGhlIHdhdGNoIGZucyB0aGVcXG4gIGF0b20ncyB2YWx1ZSB3aWxsIGNoYW5nZS4gIEV4YW1wbGU6XFxuXFxuICAgICAgKGRlZiBhIChhdG9tIDApKVxcbiAgICAgIChhZGQtd2F0Y2ggYSA6aW5jIChmbiBbayByIG8gbl0gKGFzc2VydCAoPT0gMCBuKSkpKVxcbiAgICAgIChzd2FwISBhIGluYylcXG4gICAgICA7OyBBc3NlcnRpb24gRXJyb3JcXG4gICAgICAoZGVyZWYgYSlcXG4gICAgICA7PT4gMVwiXG4gW2lyZWYga2V5IGZdXG4gKC1hZGQtd2F0Y2ggaXJlZiBrZXkgZilcbiBpcmVmKVxuIn0gezpzeW0gbm90LWV2ZXJ5PywgOm1ldGEgezpkb2MgIlJldHVybnMgZmFsc2UgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluXG4gIGNvbGwsIGVsc2UgdHJ1ZS4iLCA6YXJnbGlzdHMgKFtwcmVkIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm90LWV2ZXJ5P1xuIFwiUmV0dXJucyBmYWxzZSBpZiAocHJlZCB4KSBpcyBsb2dpY2FsIHRydWUgZm9yIGV2ZXJ5IHggaW5cXG4gIGNvbGwsIGVsc2UgdHJ1ZS5cIlxuIFtwcmVkIGNvbGxdXG4gKG5vdCAoZXZlcnk/IHByZWQgY29sbCkpKVxuIn0gezpzeW0gcmVtLCA6bWV0YSB7OmRvYyAicmVtYWluZGVyIG9mIGRpdmlkaW5nIG51bWVyYXRvciBieSBkZW5vbWluYXRvci4iLCA6YXJnbGlzdHMgKFtuIGRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtXG4gXCJyZW1haW5kZXIgb2YgZGl2aWRpbmcgbnVtZXJhdG9yIGJ5IGRlbm9taW5hdG9yLlwiXG4gW24gZF1cbiAobGV0IFtxIChxdW90IG4gZCldICgtIG4gKCogZCBxKSkpKVxuIn0gezpzeW0gaWZpbmQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJRmluZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaWZpbmQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIElGaW5kXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJRmluZCB4KSlcbiJ9IHs6c3ltIHNvbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWUgb2YgKHByZWQgeCkgZm9yIGFueSB4IGluIGNvbGwsXG4gIGVsc2UgbmlsLiAgT25lIGNvbW1vbiBpZGlvbSBpcyB0byB1c2UgYSBzZXQgYXMgcHJlZCwgZm9yIGV4YW1wbGVcbiAgdGhpcyB3aWxsIHJldHVybiA6ZnJlZCBpZiA6ZnJlZCBpcyBpbiB0aGUgc2VxdWVuY2UsIG90aGVyd2lzZSBuaWw6XG4gIChzb21lICN7OmZyZWR9IGNvbGwpIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNvbWVcbiBcIlJldHVybnMgdGhlIGZpcnN0IGxvZ2ljYWwgdHJ1ZSB2YWx1ZSBvZiAocHJlZCB4KSBmb3IgYW55IHggaW4gY29sbCxcXG4gIGVsc2UgbmlsLiAgT25lIGNvbW1vbiBpZGlvbSBpcyB0byB1c2UgYSBzZXQgYXMgcHJlZCwgZm9yIGV4YW1wbGVcXG4gIHRoaXMgd2lsbCByZXR1cm4gOmZyZWQgaWYgOmZyZWQgaXMgaW4gdGhlIHNlcXVlbmNlLCBvdGhlcndpc2UgbmlsOlxcbiAgKHNvbWUgI3s6ZnJlZH0gY29sbClcIlxuIFtwcmVkIGNvbGxdXG4gKHdoZW4tbGV0IFtzIChzZXEgY29sbCldIChvciAocHJlZCAoZmlyc3QgcykpIChyZWN1ciBwcmVkIChuZXh0IHMpKSkpKVxuIn0gezpzeW0gSU5hbWVkLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBhIG5hbWUuIn0sIDptZXRob2RzICgtbmFtZSAtbmFtZXNwYWNlKX0gezpzeW0gSVJlZHVjZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBzZXEgdHlwZXMgdGhhdCBjYW4gcmVkdWNlIHRoZW1zZWx2ZXMuXG4gIENhbGxlZCBieSBjbGpzLmNvcmUvcmVkdWNlLiJ9LCA6bWV0aG9kcyAoLXJlZHVjZSl9IHs6c3ltIG5lZy1pbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgbmVnYXRpdmUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuZWctaW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgbmVnYXRpdmUuXCJcbiBbeF1cbiAoY29uZFxuICAoaW50ZWdlcj8geClcbiAgKG5lZz8geClcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguSW50ZWdlciB4KVxuICAoLmlzTmVnYXRpdmUgeClcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KVxuICAoLmlzTmVnYXRpdmUgeClcbiAgOmVsc2VcbiAgZmFsc2UpKVxuIn0gezpzeW0gZHJvcCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW25dIFtuIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZHJvcFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgYWxsIGJ1dCB0aGUgZmlyc3QgbiBpdGVtcyBpbiBjb2xsLlxcbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtuXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbbmEgKHZvbGF0aWxlISBuKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW24gQG5hXVxuICAgICAgICh2c3dhcCEgbmEgZGVjKVxuICAgICAgIChpZiAocG9zPyBuKSByZXN1bHQgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpXG4gKFtuIGNvbGxdXG4gIHs6cHJlIFsobnVtYmVyPyBuKV19XG4gIChsZXRcbiAgIFtzdGVwXG4gICAgKGZuXG4gICAgIFtuIGNvbGxdXG4gICAgIChsZXRcbiAgICAgIFtzIChzZXEgY29sbCldXG4gICAgICAoaWYgKGFuZCAocG9zPyBuKSBzKSAocmVjdXIgKGRlYyBuKSAocmVzdCBzKSkgcykpKV1cbiAgIChsYXp5LXNlcSAoc3RlcCBuIGNvbGwpKSkpKVxuIn0gezpzeW0ganMtb2JqLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIEphdmFTcmlwdCBvYmplY3QgZnJvbSBhbiBldmVuIG51bWJlciBhcmd1bWVudHMgcmVwcmVzZW50aW5nXG4gIGludGVybGVhdmVkIGtleXMgYW5kIHZhbHVlcy4iLCA6YXJnbGlzdHMgW1tdIFsmIGtleXZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4ganMtb2JqXG4gXCJDcmVhdGUgSmF2YVNyaXB0IG9iamVjdCBmcm9tIGFuIGV2ZW4gbnVtYmVyIGFyZ3VtZW50cyByZXByZXNlbnRpbmdcXG4gIGludGVybGVhdmVkIGtleXMgYW5kIHZhbHVlcy5cIlxuIChbXSAoY2xqcy5jb3JlL2pzLW9iaikpXG4gKFsmIGtleXZhbHNdIChhcHBseSBnb2JqZWN0L2NyZWF0ZSBrZXl2YWxzKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50Q29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgYmFzaWMgZnVuY3Rpb25hbGl0eSB0byB0cmFuc2llbnQgY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtY29uaiEgLXBlcnNpc3RlbnQhKX0gezpzeW0gbnRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4LiBnZXQgcmV0dXJucyBuaWwgaWYgaW5kZXggb3V0IG9mXG4gIGJvdW5kcywgbnRoIHRocm93cyBhbiBleGNlcHRpb24gdW5sZXNzIG5vdC1mb3VuZCBpcyBzdXBwbGllZC4gIG50aFxuICBhbHNvIHdvcmtzIGZvciBzdHJpbmdzLCBhcnJheXMsIHJlZ2V4IE1hdGNoZXJzIGFuZCBMaXN0cywgYW5kLFxuICBpbiBPKG4pIHRpbWUsIGZvciBzZXF1ZW5jZXMuIiwgOmFyZ2xpc3RzIFtbY29sbCBuXSBbY29sbCBuIG5vdC1mb3VuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBudGhcbiBcIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC4gZ2V0IHJldHVybnMgbmlsIGlmIGluZGV4IG91dCBvZlxcbiAgYm91bmRzLCBudGggdGhyb3dzIGFuIGV4Y2VwdGlvbiB1bmxlc3Mgbm90LWZvdW5kIGlzIHN1cHBsaWVkLiAgbnRoXFxuICBhbHNvIHdvcmtzIGZvciBzdHJpbmdzLCBhcnJheXMsIHJlZ2V4IE1hdGNoZXJzIGFuZCBMaXN0cywgYW5kLFxcbiAgaW4gTyhuKSB0aW1lLCBmb3Igc2VxdWVuY2VzLlwiXG4gKFtjb2xsIG5dXG4gIChjb25kXG4gICAobm90IChudW1iZXI/IG4pKVxuICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBhcmd1bWVudCB0byBudGggbXVzdCBiZSBhIG51bWJlclwiKSlcbiAgIChuaWw/IGNvbGwpXG4gICBjb2xsXG4gICAoaW1wbGVtZW50cz8gSUluZGV4ZWQgY29sbClcbiAgICgtbnRoIGNvbGwgbilcbiAgIChhcnJheT8gY29sbClcbiAgIChpZlxuICAgIChhbmQgKDwgLTEgbiAoLi1sZW5ndGggY29sbCkpKVxuICAgIChhZ2V0IGNvbGwgKGludCBuKSlcbiAgICAodGhyb3cgKGpzL0Vycm9yLiBcIkluZGV4IG91dCBvZiBib3VuZHNcIikpKVxuICAgKHN0cmluZz8gY29sbClcbiAgIChpZlxuICAgIChhbmQgKDwgLTEgbiAoLi1sZW5ndGggY29sbCkpKVxuICAgICguY2hhckF0IGNvbGwgKGludCBuKSlcbiAgICAodGhyb3cgKGpzL0Vycm9yLiBcIkluZGV4IG91dCBvZiBib3VuZHNcIikpKVxuICAgKG9yIChpbXBsZW1lbnRzPyBJU2VxIGNvbGwpIChpbXBsZW1lbnRzPyBJU2VxdWVudGlhbCBjb2xsKSlcbiAgIChpZlxuICAgIChuZWc/IG4pXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpKVxuICAgIChsaW5lYXItdHJhdmVyc2FsLW50aCBjb2xsIG4pKVxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElJbmRleGVkIGNvbGwpXG4gICAoLW50aCBjb2xsIG4pXG4gICA6ZWxzZVxuICAgKHRocm93XG4gICAgKGpzL0Vycm9yLlxuICAgICAoc3RyXG4gICAgICBcIm50aCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdHlwZSBcIlxuICAgICAgKHR5cGUtPnN0ciAodHlwZSBjb2xsKSkpKSkpKVxuIChbY29sbCBuIG5vdC1mb3VuZF1cbiAgKGNvbmRcbiAgIChub3QgKG51bWJlcj8gbikpXG4gICAodGhyb3cgKGpzL0Vycm9yLiBcIkluZGV4IGFyZ3VtZW50IHRvIG50aCBtdXN0IGJlIGEgbnVtYmVyLlwiKSlcbiAgIChuaWw/IGNvbGwpXG4gICBub3QtZm91bmRcbiAgIChpbXBsZW1lbnRzPyBJSW5kZXhlZCBjb2xsKVxuICAgKC1udGggY29sbCBuIG5vdC1mb3VuZClcbiAgIChhcnJheT8gY29sbClcbiAgIChpZiAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSkgKGFnZXQgY29sbCAoaW50IG4pKSBub3QtZm91bmQpXG4gICAoc3RyaW5nPyBjb2xsKVxuICAgKGlmIChhbmQgKDwgLTEgbiAoLi1sZW5ndGggY29sbCkpKSAoLmNoYXJBdCBjb2xsIChpbnQgbikpIG5vdC1mb3VuZClcbiAgIChvciAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKSAoaW1wbGVtZW50cz8gSVNlcXVlbnRpYWwgY29sbCkpXG4gICAoaWYgKG5lZz8gbikgbm90LWZvdW5kIChsaW5lYXItdHJhdmVyc2FsLW50aCBjb2xsIG4gbm90LWZvdW5kKSlcbiAgIChuYXRpdmUtc2F0aXNmaWVzPyBJSW5kZXhlZCBjb2xsKVxuICAgKC1udGggY29sbCBuIG5vdC1mb3VuZClcbiAgIDplbHNlXG4gICAodGhyb3dcbiAgICAoanMvRXJyb3IuXG4gICAgIChzdHJcbiAgICAgIFwibnRoIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0eXBlIFwiXG4gICAgICAodHlwZS0+c3RyICh0eXBlIGNvbGwpKSkpKSkpKVxuIn0gezpzeW0gc29ydGVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIHNhdGlzZmllcyBJU29ydGVkIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0ZWQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNvcnRlZFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSVNvcnRlZCB4KSlcbiJ9IHs6c3ltIG5pbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBuaWwsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG5pbD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIG5pbCwgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKGNvZXJjaXZlLT0geCBuaWwpKVxuIn0gezpzeW0gc3BsaXQtYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZSBuIGNvbGwpIChkcm9wIG4gY29sbCldIiwgOmFyZ2xpc3RzIChbbiBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNwbGl0LWF0XG4gXCJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZSBuIGNvbGwpIChkcm9wIG4gY29sbCldXCJcbiBbbiBjb2xsXVxuIFsodGFrZSBuIGNvbGwpIChkcm9wIG4gY29sbCldKVxuIn0gezpzeW0gcHJuLXN0ci13aXRoLW9wdHMsIDptZXRhIHs6ZG9jICJTYW1lIGFzIHByLXN0ci13aXRoLW9wdHMgZm9sbG93ZWQgYnkgKG5ld2xpbmUpIiwgOmFyZ2xpc3RzIChbb2JqcyBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHBybi1zdHItd2l0aC1vcHRzXG4gXCJTYW1lIGFzIHByLXN0ci13aXRoLW9wdHMgZm9sbG93ZWQgYnkgKG5ld2xpbmUpXCJcbiBbb2JqcyBvcHRzXVxuIChpZlxuICAoZW1wdHk/IG9ianMpXG4gIFwiXFxuXCJcbiAgKGxldFxuICAgW3NiIChwci1zYi13aXRoLW9wdHMgb2JqcyBvcHRzKV1cbiAgICguYXBwZW5kIHNiIFxcbmV3bGluZSlcbiAgIChzdHIgc2IpKSkpXG4ifSB7OnN5bSBub3QtbmF0aXZlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBub3QtbmF0aXZlIG5pbClcbiJ9IHs6c3ltIHJhbmRvbS1zYW1wbGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGl0ZW1zIGZyb20gY29sbCB3aXRoIHJhbmRvbSBwcm9iYWJpbGl0eSBvZiBwcm9iICgwLjAgLVxuICAxLjApLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3Byb2JdIFtwcm9iIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZG9tLXNhbXBsZVxuIFwiUmV0dXJucyBpdGVtcyBmcm9tIGNvbGwgd2l0aCByYW5kb20gcHJvYmFiaWxpdHkgb2YgcHJvYiAoMC4wIC1cXG4gIDEuMCkuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW3Byb2JdIChmaWx0ZXIgKGZuIFtfXSAoPCAocmFuZCkgcHJvYikpKSlcbiAoW3Byb2IgY29sbF0gKGZpbHRlciAoZm4gW19dICg8IChyYW5kKSBwcm9iKSkgY29sbCkpKVxuIn0gezpzeW0gc2VsZWN0LWtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgb25seSB0aG9zZSBlbnRyaWVzIGluIG1hcCB3aG9zZSBrZXkgaXMgaW4ga2V5cyIsIDphcmdsaXN0cyAoW21hcCBrZXlzZXFdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VsZWN0LWtleXNcbiBcIlJldHVybnMgYSBtYXAgY29udGFpbmluZyBvbmx5IHRob3NlIGVudHJpZXMgaW4gbWFwIHdob3NlIGtleSBpcyBpbiBrZXlzXCJcbiBbbWFwIGtleXNlcV1cbiAobG9vcFxuICBbcmV0IHt9IGtleXMgKHNlcSBrZXlzZXEpXVxuICAoaWZcbiAgIGtleXNcbiAgIChsZXRcbiAgICBba2V5IChmaXJzdCBrZXlzKSBlbnRyeSAoZ2V0IG1hcCBrZXkgOmNsanMuY29yZS9ub3QtZm91bmQpXVxuICAgIChyZWN1clxuICAgICAoaWYgKG5vdD0gZW50cnkgOmNsanMuY29yZS9ub3QtZm91bmQpIChhc3NvYyByZXQga2V5IGVudHJ5KSByZXQpXG4gICAgIChuZXh0IGtleXMpKSlcbiAgICgtd2l0aC1tZXRhIHJldCAobWV0YSBtYXApKSkpKVxuIn0gezpzeW0gYml0LWFuZCwgOm1ldGEgezpkb2MgIkJpdHdpc2UgYW5kIiwgOmFyZ2xpc3RzIFtbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQtYW5kXG4gXCJCaXR3aXNlIGFuZFwiXG4gKFt4IHldIChjbGpzLmNvcmUvYml0LWFuZCB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBiaXQtYW5kIChjbGpzLmNvcmUvYml0LWFuZCB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIGJvdW5kZWQtY291bnQsIDptZXRhIHs6ZG9jICJJZiBjb2xsIGlzIGNvdW50ZWQ/IHJldHVybnMgaXRzIGNvdW50LCBlbHNlIHdpbGwgY291bnQgYXQgbW9zdCB0aGUgZmlyc3QgblxuICAgZWxlbWVudHMgb2YgY29sbCB1c2luZyBpdHMgc2VxIiwgOmFyZ2xpc3RzIChbbiBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGJvdW5kZWQtY291bnRcbiBcIklmIGNvbGwgaXMgY291bnRlZD8gcmV0dXJucyBpdHMgY291bnQsIGVsc2Ugd2lsbCBjb3VudCBhdCBtb3N0IHRoZSBmaXJzdCBuXFxuICAgZWxlbWVudHMgb2YgY29sbCB1c2luZyBpdHMgc2VxXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gW24gY29sbF1cbiAoaWZcbiAgKGNvdW50ZWQ/IGNvbGwpXG4gIChjb3VudCBjb2xsKVxuICAobG9vcFxuICAgW2kgMCBzIChzZXEgY29sbCldXG4gICAoaWYgKGFuZCAobm90IChuaWw/IHMpKSAoPCBpIG4pKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkgaSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZSwgOm1ldGEgezpkb2MgIidVcGRhdGVzJyBhIHZhbHVlIGluIGFuIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUgayBpcyBhXG4gIGtleSBhbmQgZiBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSBvbGQgdmFsdWVcbiAgYW5kIGFueSBzdXBwbGllZCBhcmdzIGFuZCByZXR1cm4gdGhlIG5ldyB2YWx1ZSwgYW5kIHJldHVybnMgYSBuZXdcbiAgc3RydWN0dXJlLiAgSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCwgbmlsIGlzIHBhc3NlZCBhcyB0aGUgb2xkIHZhbHVlLiIsIDphcmdsaXN0cyBbW20gayBmXSBbbSBrIGYgeF0gW20gayBmIHggeV0gW20gayBmIHggeSB6XSBbbSBrIGYgeCB5IHogJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZVxuIFwiJ1VwZGF0ZXMnIGEgdmFsdWUgaW4gYW4gYXNzb2NpYXRpdmUgc3RydWN0dXJlLCB3aGVyZSBrIGlzIGFcXG4gIGtleSBhbmQgZiBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSBvbGQgdmFsdWVcXG4gIGFuZCBhbnkgc3VwcGxpZWQgYXJncyBhbmQgcmV0dXJuIHRoZSBuZXcgdmFsdWUsIGFuZCByZXR1cm5zIGEgbmV3XFxuICBzdHJ1Y3R1cmUuICBJZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LCBuaWwgaXMgcGFzc2VkIGFzIHRoZSBvbGQgdmFsdWUuXCJcbiAoW20gayBmXSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSkpKVxuIChbbSBrIGYgeF0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgeCkpKVxuIChbbSBrIGYgeCB5XSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSB4IHkpKSlcbiAoW20gayBmIHggeSB6XSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSB4IHkgeikpKVxuIChbbSBrIGYgeCB5IHogJiBtb3JlXSAoYXNzb2MgbSBrIChhcHBseSBmIChnZXQgbSBrKSB4IHkgeiBtb3JlKSkpKVxuIn0gezpzeW0gZ2Vuc3ltX2NvdW50ZXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGdlbnN5bV9jb3VudGVyIG5pbClcbiJ9IHs6c3ltIGZpbmQtbWFjcm9zLW5zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFjcm9zIG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sIG9yIG5pbCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLW1hY3Jvcy1uc1xuIFwiUmV0dXJucyB0aGUgbWFjcm9zIG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sIG9yIG5pbCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxcbiAgQm9vdHN0cmFwIG9ubHkuXCJcbiBbbnNdXG4gKHdoZW4gKG5pbD8gTlNfQ0FDSEUpIChzZXQhIE5TX0NBQ0hFIChhdG9tIHt9KSkpXG4gKGxldFxuICBbbnMtc3RyXG4gICAoc3RyIG5zKVxuICAgbnNcbiAgIChpZlxuICAgIChub3QgKGdzdHJpbmcvY29udGFpbnMgbnMtc3RyIFwiJG1hY3Jvc1wiKSlcbiAgICAoc3ltYm9sIChzdHIgbnMtc3RyIFwiJG1hY3Jvc1wiKSlcbiAgICBucylcbiAgIHRoZS1uc1xuICAgKGdldCBATlNfQ0FDSEUgbnMpXVxuICAoaWYtbm90XG4gICAobmlsPyB0aGUtbnMpXG4gICB0aGUtbnNcbiAgIChsZXRcbiAgICBbbnMtb2JqIChmaW5kLW5zLW9iaiBucyldXG4gICAgKHdoZW4tbm90XG4gICAgIChuaWw/IG5zLW9iailcbiAgICAgKGxldFxuICAgICAgW25ldy1ucyAoY3JlYXRlLW5zIG5zIG5zLW9iaildXG4gICAgICAoc3dhcCEgTlNfQ0FDSEUgYXNzb2MgbnMgbmV3LW5zKVxuICAgICAgbmV3LW5zKSkpKSkpXG4ifSB7OnN5bSBsaXN0KiwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBpdGVtcyBwcmVwZW5kZWQgdG8gdGhlIHJlc3QsIHRoZVxuICBsYXN0IG9mIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHNlcXVlbmNlLiIsIDphcmdsaXN0cyBbW2FyZ3NdIFthIGFyZ3NdIFthIGIgYXJnc10gW2EgYiBjIGFyZ3NdIFthIGIgYyBkICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0KlxuIFwiQ3JlYXRlcyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIHByZXBlbmRlZCB0byB0aGUgcmVzdCwgdGhlXFxuICBsYXN0IG9mIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHNlcXVlbmNlLlwiXG4gKFthcmdzXSAoc2VxIGFyZ3MpKVxuIChbYSBhcmdzXSAoY29ucyBhIGFyZ3MpKVxuIChbYSBiIGFyZ3NdIChjb25zIGEgKGNvbnMgYiBhcmdzKSkpXG4gKFthIGIgYyBhcmdzXSAoY29ucyBhIChjb25zIGIgKGNvbnMgYyBhcmdzKSkpKVxuIChbYSBiIGMgZCAmIG1vcmVdIChjb25zIGEgKGNvbnMgYiAoY29ucyBjIChjb25zIGQgKHNwcmVhZCBtb3JlKSkpKSkpKVxuIn0gezpzeW0gdXBkYXRlLWluLCA6bWV0YSB7OmRvYyAiJ1VwZGF0ZXMnIGEgdmFsdWUgaW4gYSBuZXN0ZWQgYXNzb2NpYXRpdmUgc3RydWN0dXJlLCB3aGVyZSBrcyBpcyBhXG4gIHNlcXVlbmNlIG9mIGtleXMgYW5kIGYgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSB0aGUgb2xkIHZhbHVlXG4gIGFuZCBhbnkgc3VwcGxpZWQgYXJncyBhbmQgcmV0dXJuIHRoZSBuZXcgdmFsdWUsIGFuZCByZXR1cm5zIGEgbmV3XG4gIG5lc3RlZCBzdHJ1Y3R1cmUuICBJZiBhbnkgbGV2ZWxzIGRvIG5vdCBleGlzdCwgaGFzaC1tYXBzIHdpbGwgYmVcbiAgY3JlYXRlZC4iLCA6YXJnbGlzdHMgW1ttIFtrICYga3NdIGZdIFttIFtrICYga3NdIGYgYV0gW20gW2sgJiBrc10gZiBhIGJdIFttIFtrICYga3NdIGYgYSBiIGNdIFttIFtrICYga3NdIGYgYSBiIGMgJiBhcmdzXV19LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1pblxuIFwiJ1VwZGF0ZXMnIGEgdmFsdWUgaW4gYSBuZXN0ZWQgYXNzb2NpYXRpdmUgc3RydWN0dXJlLCB3aGVyZSBrcyBpcyBhXFxuICBzZXF1ZW5jZSBvZiBrZXlzIGFuZCBmIGlzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgdGhlIG9sZCB2YWx1ZVxcbiAgYW5kIGFueSBzdXBwbGllZCBhcmdzIGFuZCByZXR1cm4gdGhlIG5ldyB2YWx1ZSwgYW5kIHJldHVybnMgYSBuZXdcXG4gIG5lc3RlZCBzdHJ1Y3R1cmUuICBJZiBhbnkgbGV2ZWxzIGRvIG5vdCBleGlzdCwgaGFzaC1tYXBzIHdpbGwgYmVcXG4gIGNyZWF0ZWQuXCJcbiAoW20gW2sgJiBrc10gZl1cbiAgKGlmXG4gICBrc1xuICAgKGFzc29jIG0gayAodXBkYXRlLWluIChnZXQgbSBrKSBrcyBmKSlcbiAgIChhc3NvYyBtIGsgKGYgKGdldCBtIGspKSkpKVxuIChbbSBbayAmIGtzXSBmIGFdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZiBhKSlcbiAgIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIGEpKSkpXG4gKFttIFtrICYga3NdIGYgYSBiXVxuICAoaWZcbiAgIGtzXG4gICAoYXNzb2MgbSBrICh1cGRhdGUtaW4gKGdldCBtIGspIGtzIGYgYSBiKSlcbiAgIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIGEgYikpKSlcbiAoW20gW2sgJiBrc10gZiBhIGIgY11cbiAgKGlmXG4gICBrc1xuICAgKGFzc29jIG0gayAodXBkYXRlLWluIChnZXQgbSBrKSBrcyBmIGEgYiBjKSlcbiAgIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIGEgYiBjKSkpKVxuIChbbSBbayAmIGtzXSBmIGEgYiBjICYgYXJnc11cbiAgKGlmXG4gICBrc1xuICAgKGFzc29jIG0gayAoYXBwbHkgdXBkYXRlLWluIChnZXQgbSBrKSBrcyBmIGEgYiBjIGFyZ3MpKVxuICAgKGFzc29jIG0gayAoYXBwbHkgZiAoZ2V0IG0gaykgYSBiIGMgYXJncykpKSkpXG4ifSB7OnN5bSBwcmVmZXItbWV0aG9kLCA6bWV0YSB7OmRvYyAiQ2F1c2VzIHRoZSBtdWx0aW1ldGhvZCB0byBwcmVmZXIgbWF0Y2hlcyBvZiBkaXNwYXRjaC12YWwteCBvdmVyIGRpc3BhdGNoLXZhbC15XG4gICB3aGVuIHRoZXJlIGlzIGEgY29uZmxpY3QiLCA6YXJnbGlzdHMgKFttdWx0aWZuIGRpc3BhdGNoLXZhbC14IGRpc3BhdGNoLXZhbC15XSl9LCA6c291cmNlICIoZGVmblxuIHByZWZlci1tZXRob2RcbiBcIkNhdXNlcyB0aGUgbXVsdGltZXRob2QgdG8gcHJlZmVyIG1hdGNoZXMgb2YgZGlzcGF0Y2gtdmFsLXggb3ZlciBkaXNwYXRjaC12YWwteVxcbiAgIHdoZW4gdGhlcmUgaXMgYSBjb25mbGljdFwiXG4gW211bHRpZm4gZGlzcGF0Y2gtdmFsLXggZGlzcGF0Y2gtdmFsLXldXG4gKC1wcmVmZXItbWV0aG9kIG11bHRpZm4gZGlzcGF0Y2gtdmFsLXggZGlzcGF0Y2gtdmFsLXkpKVxuIn0gezpzeW0gZW5zdXJlLXJlZHVjZWQsIDptZXRhIHs6ZG9jICJJZiB4IGlzIGFscmVhZHkgcmVkdWNlZD8sIHJldHVybnMgaXQsIGVsc2UgcmV0dXJucyAocmVkdWNlZCB4KSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5zdXJlLXJlZHVjZWRcbiBcIklmIHggaXMgYWxyZWFkeSByZWR1Y2VkPywgcmV0dXJucyBpdCwgZWxzZSByZXR1cm5zIChyZWR1Y2VkIHgpXCJcbiBbeF1cbiAoaWYgKHJlZHVjZWQ/IHgpIHggKHJlZHVjZWQgeCkpKVxuIn0gezpzeW0gaW5zdGFuY2U/LCA6bWV0YSB7OmRvYyAiRXZhbHVhdGVzIHggYW5kIHRlc3RzIGlmIGl0IGlzIGFuIGluc3RhbmNlIG9mIHRoZSB0eXBlXG4gIGMuIFJldHVybnMgdHJ1ZSBvciBmYWxzZSIsIDphcmdsaXN0cyAoW2MgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0YW5jZT9cbiBcIkV2YWx1YXRlcyB4IGFuZCB0ZXN0cyBpZiBpdCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgdHlwZVxcbiAgYy4gUmV0dXJucyB0cnVlIG9yIGZhbHNlXCJcbiBbYyB4XVxuIChjbGpzLmNvcmUvaW5zdGFuY2U/IGMgeCkpXG4ifSB7OnN5bSBtaXgtY29sbGVjdGlvbi1oYXNoLCA6bWV0YSB7OmRvYyAiTWl4IGZpbmFsIGNvbGxlY3Rpb24gaGFzaCBmb3Igb3JkZXJlZCBvciB1bm9yZGVyZWQgY29sbGVjdGlvbnMuXG4gICBoYXNoLWJhc2lzIGlzIHRoZSBjb21iaW5lZCBjb2xsZWN0aW9uIGhhc2gsIGNvdW50IGlzIHRoZSBudW1iZXJcbiAgIG9mIGVsZW1lbnRzIGluY2x1ZGVkIGluIHRoZSBiYXNpcy4gTm90ZSB0aGlzIGlzIHRoZSBoYXNoIGNvZGVcbiAgIGNvbnNpc3RlbnQgd2l0aCA9LCBkaWZmZXJlbnQgZnJvbSAuaGFzaENvZGUuXG4gICBTZWUgaHR0cDovL2Nsb2p1cmUub3JnL2RhdGFfc3RydWN0dXJlcyNoYXNoIGZvciBmdWxsIGFsZ29yaXRobXMuIiwgOmFyZ2xpc3RzIChbaGFzaC1iYXNpcyBjb3VudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXgtY29sbGVjdGlvbi1oYXNoXG4gXCJNaXggZmluYWwgY29sbGVjdGlvbiBoYXNoIGZvciBvcmRlcmVkIG9yIHVub3JkZXJlZCBjb2xsZWN0aW9ucy5cXG4gICBoYXNoLWJhc2lzIGlzIHRoZSBjb21iaW5lZCBjb2xsZWN0aW9uIGhhc2gsIGNvdW50IGlzIHRoZSBudW1iZXJcXG4gICBvZiBlbGVtZW50cyBpbmNsdWRlZCBpbiB0aGUgYmFzaXMuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXFxuICAgY29uc2lzdGVudCB3aXRoID0sIGRpZmZlcmVudCBmcm9tIC5oYXNoQ29kZS5cXG4gICBTZWUgaHR0cDovL2Nsb2p1cmUub3JnL2RhdGFfc3RydWN0dXJlcyNoYXNoIGZvciBmdWxsIGFsZ29yaXRobXMuXCJcbiBbaGFzaC1iYXNpcyBjb3VudF1cbiAobGV0XG4gIFtoMSBtMy1zZWVkIGsxIChtMy1taXgtSzEgaGFzaC1iYXNpcykgaDEgKG0zLW1peC1IMSBoMSBrMSldXG4gIChtMy1mbWl4IGgxIGNvdW50KSkpXG4ifSB7OnN5bSByZS1maW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlyc3QgcmVnZXggbWF0Y2gsIGlmIGFueSwgb2YgcyB0byByZSwgdXNpbmdcbiAgcmUuZXhlYyhzKS4gUmV0dXJucyBhIHZlY3RvciwgY29udGFpbmluZyBmaXJzdCB0aGUgbWF0Y2hpbmdcbiAgc3Vic3RyaW5nLCB0aGVuIGFueSBjYXB0dXJpbmcgZ3JvdXBzIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnNcbiAgY2FwdHVyaW5nIGdyb3Vwcy4iLCA6YXJnbGlzdHMgKFtyZSBzXSl9LCA6c291cmNlICIoZGVmblxuIHJlLWZpbmRcbiBcIlJldHVybnMgdGhlIGZpcnN0IHJlZ2V4IG1hdGNoLCBpZiBhbnksIG9mIHMgdG8gcmUsIHVzaW5nXFxuICByZS5leGVjKHMpLiBSZXR1cm5zIGEgdmVjdG9yLCBjb250YWluaW5nIGZpcnN0IHRoZSBtYXRjaGluZ1xcbiAgc3Vic3RyaW5nLCB0aGVuIGFueSBjYXB0dXJpbmcgZ3JvdXBzIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnNcXG4gIGNhcHR1cmluZyBncm91cHMuXCJcbiBbcmUgc11cbiAoaWZcbiAgKHN0cmluZz8gcylcbiAgKGxldFxuICAgW21hdGNoZXMgKC5leGVjIHJlIHMpXVxuICAgKHdoZW4tbm90XG4gICAgKG5pbD8gbWF0Y2hlcylcbiAgICAoaWYgKD09IChjb3VudCBtYXRjaGVzKSAxKSAoYWdldCBtYXRjaGVzIDApICh2ZWMgbWF0Y2hlcykpKSlcbiAgKHRocm93IChqcy9UeXBlRXJyb3IuIFwicmUtZmluZCBtdXN0IG1hdGNoIGFnYWluc3QgYSBzdHJpbmcuXCIpKSkpXG4ifSB7OnN5bSBydW4hLCA6bWV0YSB7OmRvYyAiUnVucyB0aGUgc3VwcGxpZWQgcHJvY2VkdXJlICh2aWEgcmVkdWNlKSwgZm9yIHB1cnBvc2VzIG9mIHNpZGVcbiAgZWZmZWN0cywgb24gc3VjY2Vzc2l2ZSBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbi4gUmV0dXJucyBuaWwiLCA6YXJnbGlzdHMgKFtwcm9jIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcnVuIVxuIFwiUnVucyB0aGUgc3VwcGxpZWQgcHJvY2VkdXJlICh2aWEgcmVkdWNlKSwgZm9yIHB1cnBvc2VzIG9mIHNpZGVcXG4gIGVmZmVjdHMsIG9uIHN1Y2Nlc3NpdmUgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uIFJldHVybnMgbmlsXCJcbiBbcHJvYyBjb2xsXVxuIChyZWR1Y2UgKGZuKiBbcDFfXzQ1NDQxIyBwMl9fNDU0NDAjXSAocHJvYyBwMl9fNDU0NDAjKSkgbmlsIGNvbGwpXG4gbmlsKVxuIn0gezpzeW0gdmFsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIG1hcCBlbnRyeS4iLCA6YXJnbGlzdHMgKFttYXAtZW50cnldKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBpbiB0aGUgbWFwIGVudHJ5LlwiXG4gW21hcC1lbnRyeV1cbiAoLXZhbCBtYXAtZW50cnkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWFkZCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHVuY2hlY2tlZC1hZGRcbiBcIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLlwiXG4gKFtdIDApXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1hZGQgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChyZWR1Y2UgdW5jaGVja2VkLWFkZCAoY2xqcy5jb3JlL3VuY2hlY2tlZC1hZGQgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSB0cmFuc2Zvcm1lci1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4Zm9ybSBzb3VyY2VJdGVyIG11bHRpXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zZm9ybWVyLWl0ZXJhdG9yXG4gW3hmb3JtIHNvdXJjZUl0ZXIgbXVsdGldXG4gKGxldFxuICBbaXRlcmF0b3JcbiAgIChUcmFuc2Zvcm1lckl0ZXJhdG9yLiBFTVBUWSBOT05FIGZhbHNlIG5pbCBzb3VyY2VJdGVyIG11bHRpKV1cbiAgKHNldCFcbiAgICguLXhmIGl0ZXJhdG9yKVxuICAgKHhmb3JtXG4gICAgKGZuXG4gICAgIChbXSBuaWwpXG4gICAgIChbYWNjXSBhY2MpXG4gICAgIChbYWNjIG9dXG4gICAgICAoc2V0ISAoLi1idWZmZXIgaXRlcmF0b3IpICguYWRkICguLWJ1ZmZlciBpdGVyYXRvcikgbykpXG4gICAgICBhY2MpKSkpXG4gIGl0ZXJhdG9yKSlcbiJ9IHs6c3ltIG5vdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGxvZ2ljYWwgZmFsc2UsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG5vdFxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgbG9naWNhbCBmYWxzZSwgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKGNvbmQgKG5pbD8geCkgdHJ1ZSAoZmFsc2U/IHgpIHRydWUgOmVsc2UgZmFsc2UpKVxuIn0gezpzeW0gLXZyZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiB2b2xhdGlsZSBvIHRvIG5ldy12YWx1ZSB3aXRob3V0IHJlZ2FyZCBmb3IgdGhlXG4gICAgIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3LXZhbHVlLiIsIDphcmdsaXN0cyAoW28gbmV3LXZhbHVlXSl9LCA6cHJvdG9jb2wgSVZvbGF0aWxlfSB7OnN5bSB3aXRoLW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcbiAgbWFwIG0gYXMgaXRzIG1ldGFkYXRhLiIsIDphcmdsaXN0cyAoW28gbWV0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3aXRoLW1ldGFcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIG9iaiwgd2l0aFxcbiAgbWFwIG0gYXMgaXRzIG1ldGFkYXRhLlwiXG4gW28gbWV0YV1cbiAoaWZcbiAgKGpzLWZuPyBvKVxuICAoTWV0YUZuLiBvIG1ldGEpXG4gICh3aGVuLW5vdCAobmlsPyBvKSAoLXdpdGgtbWV0YSBvIG1ldGEpKSkpXG4ifSB7OnN5bSB1bnJlZHVjZWQsIDptZXRhIHs6ZG9jICJJZiB4IGlzIHJlZHVjZWQ/LCByZXR1cm5zIChkZXJlZiB4KSwgZWxzZSByZXR1cm5zIHgiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVucmVkdWNlZFxuIFwiSWYgeCBpcyByZWR1Y2VkPywgcmV0dXJucyAoZGVyZWYgeCksIGVsc2UgcmV0dXJucyB4XCJcbiBbeF1cbiAoaWYgKHJlZHVjZWQ/IHgpIChkZXJlZiB4KSB4KSlcbiJ9IHs6c3ltIHJlY29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJUmVjb3JkIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWNvcmQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJUmVjb3JkXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJUmVjb3JkIHgpKVxuIn0gezpzeW0gdHlwZSwgOm1ldGEgezpkb2MgIlJldHVybiB4J3MgY29uc3RydWN0b3IuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0eXBlXG4gXCJSZXR1cm4geCdzIGNvbnN0cnVjdG9yLlwiXG4gW3hdXG4gKHdoZW4tbm90IChuaWw/IHgpICguLWNvbnN0cnVjdG9yIHgpKSlcbiJ9IHs6c3ltIGlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJUZXN0cyBpZiAyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgb2JqZWN0IiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIGlkZW50aWNhbD9cbiBcIlRlc3RzIGlmIDIgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBvYmplY3RcIlxuIFt4IHldXG4gKGNsanMuY29yZS9pZGVudGljYWw/IHggeSkpXG4ifSB7OnN5bSAtbmFtZXNwYWNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZXNwYWNlIFN0cmluZyBvZiB4LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBJTmFtZWR9IHs6c3ltIHVuY2hlY2tlZC1kaXZpZGUtaW50LCA6bWV0YSB7OmRvYyAiSWYgbm8gZGVub21pbmF0b3JzIGFyZSBzdXBwbGllZCwgcmV0dXJucyAxL251bWVyYXRvcixcbiAgZWxzZSByZXR1cm5zIG51bWVyYXRvciBkaXZpZGVkIGJ5IGFsbCBvZiB0aGUgZGVub21pbmF0b3JzLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHVuY2hlY2tlZC1kaXZpZGUtaW50XG4gXCJJZiBubyBkZW5vbWluYXRvcnMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIDEvbnVtZXJhdG9yLFxcbiAgZWxzZSByZXR1cm5zIG51bWVyYXRvciBkaXZpZGVkIGJ5IGFsbCBvZiB0aGUgZGVub21pbmF0b3JzLlwiXG4gKFt4XSAodW5jaGVja2VkLWRpdmlkZS1pbnQgMSB4KSlcbiAoW3ggeV0gKGNsanMuY29yZS9kaXZpZGUgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChyZWR1Y2UgdW5jaGVja2VkLWRpdmlkZS1pbnQgKHVuY2hlY2tlZC1kaXZpZGUtaW50IHggeSkgbW9yZSkpKVxuIn0gezpzeW0gbnMtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSwgYSBOYW1lc3BhY2Ugb2JqZWN0LlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtucy1vYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnMtbmFtZVxuIFwiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbmFtZXNwYWNlLCBhIE5hbWVzcGFjZSBvYmplY3QuXFxuICBCb290c3RyYXAgb25seS5cIlxuIFtucy1vYmpdXG4gKC4tbmFtZSBucy1vYmopKVxuIn0gezpzeW0gbWF4LWtleSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHggZm9yIHdoaWNoIChrIHgpLCBhIG51bWJlciwgaXMgZ3JlYXRlc3QuXG5cbiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIHN1Y2ggeHMsIHRoZSBsYXN0IG9uZSBpcyByZXR1cm5lZC4iLCA6YXJnbGlzdHMgW1trIHhdIFtrIHggeV0gW2sgeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXgta2V5XG4gXCJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGdyZWF0ZXN0LlxcblxcbiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIHN1Y2ggeHMsIHRoZSBsYXN0IG9uZSBpcyByZXR1cm5lZC5cIlxuIChbayB4XSB4KVxuIChbayB4IHldIChpZiAoPiAoayB4KSAoayB5KSkgeCB5KSlcbiAoW2sgeCB5ICYgbW9yZV1cbiAgKHJlZHVjZVxuICAgKGZuKiBbcDFfXzQ1NDIzIyBwMl9fNDU0MjQjXSAobWF4LWtleSBrIHAxX180NTQyMyMgcDJfXzQ1NDI0IykpXG4gICAobWF4LWtleSBrIHggeSlcbiAgIG1vcmUpKSlcbiJ9IHs6c3ltICpvdXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqb3V0KiBuaWwpXG4ifSB7OnN5bSBoYXNoLXN0cmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtc3RyaW5nXG4gW2tdXG4gKHdoZW5cbiAgKD4gc3RyaW5nLWhhc2gtY2FjaGUtY291bnQgMjU1KVxuICAoc2V0ISBzdHJpbmctaGFzaC1jYWNoZSAoanMtb2JqKSlcbiAgKHNldCEgc3RyaW5nLWhhc2gtY2FjaGUtY291bnQgMCkpXG4gKGlmXG4gIChuaWw/IGspXG4gIDBcbiAgKGxldFxuICAgW2ggKHVuY2hlY2tlZC1nZXQgc3RyaW5nLWhhc2gtY2FjaGUgayldXG4gICAoaWYgKG51bWJlcj8gaCkgaCAoYWRkLXRvLXN0cmluZy1oYXNoLWNhY2hlIGspKSkpKVxuIn0gezpzeW0gLXByZWZlcnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWZdKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gc2V0LXZhbGlkYXRvciEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWxpZGF0b3ItZm4gZm9yIGFuIGF0b20uIHZhbGlkYXRvci1mbiBtdXN0IGJlIG5pbCBvciBhXG4gIHNpZGUtZWZmZWN0LWZyZWUgZm4gb2Ygb25lIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUgaW50ZW5kZWRcbiAgbmV3IHN0YXRlIG9uIGFueSBzdGF0ZSBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGVcbiAgdmFsaWRhdG9yLWZuIHNob3VsZCByZXR1cm4gZmFsc2Ugb3IgdGhyb3cgYW4gRXJyb3IuIElmIHRoZSBjdXJyZW50IHN0YXRlXG4gIGlzIG5vdCBhY2NlcHRhYmxlIHRvIHRoZSBuZXcgdmFsaWRhdG9yLCBhbiBFcnJvciB3aWxsIGJlIHRocm93biBhbmQgdGhlXG4gIHZhbGlkYXRvciB3aWxsIG5vdCBiZSBjaGFuZ2VkLiIsIDphcmdsaXN0cyAoW2lyZWYgdmFsXSl9LCA6c291cmNlICIoZGVmblxuIHNldC12YWxpZGF0b3IhXG4gXCJTZXRzIHRoZSB2YWxpZGF0b3ItZm4gZm9yIGFuIGF0b20uIHZhbGlkYXRvci1mbiBtdXN0IGJlIG5pbCBvciBhXFxuICBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZSBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlIGludGVuZGVkXFxuICBuZXcgc3RhdGUgb24gYW55IHN0YXRlIGNoYW5nZS4gSWYgdGhlIG5ldyBzdGF0ZSBpcyB1bmFjY2VwdGFibGUsIHRoZVxcbiAgdmFsaWRhdG9yLWZuIHNob3VsZCByZXR1cm4gZmFsc2Ugb3IgdGhyb3cgYW4gRXJyb3IuIElmIHRoZSBjdXJyZW50IHN0YXRlXFxuICBpcyBub3QgYWNjZXB0YWJsZSB0byB0aGUgbmV3IHZhbGlkYXRvciwgYW4gRXJyb3Igd2lsbCBiZSB0aHJvd24gYW5kIHRoZVxcbiAgdmFsaWRhdG9yIHdpbGwgbm90IGJlIGNoYW5nZWQuXCJcbiBbaXJlZiB2YWxdXG4gKHdoZW5cbiAgKGFuZCAoc29tZT8gdmFsKSAobm90ICh2YWwgKC1kZXJlZiBpcmVmKSkpKVxuICAodGhyb3cgKGpzL0Vycm9yLiBcIlZhbGlkYXRvciByZWplY3RlZCByZWZlcmVuY2Ugc3RhdGVcIikpKVxuIChzZXQhICguLXZhbGlkYXRvciBpcmVmKSB2YWwpKVxuIn0gezpzeW0gaWRlbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpZGVudD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZFwiXG4gW3hdXG4gKG9yIChrZXl3b3JkPyB4KSAoc3ltYm9sPyB4KSkpXG4ifSB7OnN5bSAtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1ldGFkYXRhIG9mIG9iamVjdCBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJTWV0YX0gezpzeW0gLWRpc3BhdGNoLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIC1hZGQtbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mIGRpc3BhdGNoLXZhbCBtZXRob2RdKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gc3dhcCEsIDptZXRhIHs6ZG9jICJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxuICAoYXBwbHkgZiBjdXJyZW50LXZhbHVlLW9mLWF0b20gYXJncykuIE5vdGUgdGhhdCBmIG1heSBiZSBjYWxsZWRcbiAgbXVsdGlwbGUgdGltZXMsIGFuZCB0aHVzIHNob3VsZCBiZSBmcmVlIG9mIHNpZGUgZWZmZWN0cy4gIFJldHVybnNcbiAgdGhlIHZhbHVlIHRoYXQgd2FzIHN3YXBwZWQgaW4uIiwgOmFyZ2xpc3RzIFtbYSBmXSBbYSBmIHhdIFthIGYgeCB5XSBbYSBmIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3dhcCFcbiBcIkF0b21pY2FsbHkgc3dhcHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gYmU6XFxuICAoYXBwbHkgZiBjdXJyZW50LXZhbHVlLW9mLWF0b20gYXJncykuIE5vdGUgdGhhdCBmIG1heSBiZSBjYWxsZWRcXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuICBSZXR1cm5zXFxuICB0aGUgdmFsdWUgdGhhdCB3YXMgc3dhcHBlZCBpbi5cIlxuIChbYSBmXVxuICAoaWYgKGluc3RhbmNlPyBBdG9tIGEpIChyZXNldCEgYSAoZiAoLi1zdGF0ZSBhKSkpICgtc3dhcCEgYSBmKSkpXG4gKFthIGYgeF1cbiAgKGlmIChpbnN0YW5jZT8gQXRvbSBhKSAocmVzZXQhIGEgKGYgKC4tc3RhdGUgYSkgeCkpICgtc3dhcCEgYSBmIHgpKSlcbiAoW2EgZiB4IHldXG4gIChpZlxuICAgKGluc3RhbmNlPyBBdG9tIGEpXG4gICAocmVzZXQhIGEgKGYgKC4tc3RhdGUgYSkgeCB5KSlcbiAgICgtc3dhcCEgYSBmIHggeSkpKVxuIChbYSBmIHggeSAmIG1vcmVdXG4gIChpZlxuICAgKGluc3RhbmNlPyBBdG9tIGEpXG4gICAocmVzZXQhIGEgKGFwcGx5IGYgKC4tc3RhdGUgYSkgeCB5IG1vcmUpKVxuICAgKC1zd2FwISBhIGYgeCB5IG1vcmUpKSkpXG4ifSB7OnN5bSB2YWxzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBtYXAncyB2YWx1ZXMsIGluIHRoZSBzYW1lIG9yZGVyIGFzIChzZXEgbWFwKS4iLCA6YXJnbGlzdHMgKFttYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsc1xuIFwiUmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBtYXAncyB2YWx1ZXMsIGluIHRoZSBzYW1lIG9yZGVyIGFzIChzZXEgbWFwKS5cIlxuIFttYXBdXG4gKHdoZW4tbGV0IFttc2VxIChzZXEgbWFwKV0gKFZhbFNlcS4gbXNlcSBuaWwpKSlcbiJ9IHs6c3ltIC1jaHVua2VkLW5leHQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRob3V0IHRoZSBmaXJzdCBjaHVuay4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUNodW5rZWROZXh0fSB7OnN5bSB1bmNoZWNrZWQtc3VidHJhY3QsIDptZXRhIHs6ZG9jICJJZiBubyB5cyBhcmUgc3VwcGxpZWQsIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIHgsIGVsc2Ugc3VidHJhY3RzXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtc3VidHJhY3RcbiBcIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cIlxuIChbeF0gKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QgeCkpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1zdWJ0cmFjdCAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdCB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIHRhcD4sIDptZXRhIHs6ZG9jICJTZW5kcyB4IHRvIGFueSB0YXBzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgKmV4ZWMtdGFwLWZuKiwgYSBCb29sZWFuIHZhbHVlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGFwPlxuIFwiU2VuZHMgeCB0byBhbnkgdGFwcy4gUmV0dXJucyB0aGUgcmVzdWx0IG9mICpleGVjLXRhcC1mbiosIGEgQm9vbGVhbiB2YWx1ZS5cIlxuIFt4XVxuIChtYXliZS1pbml0LXRhcHNldClcbiAoKmV4ZWMtdGFwLWZuKlxuICAoZm4gW10gKGRvc2VxIFt0YXAgQHRhcHNldF0gKHRyeSAodGFwIHgpIChjYXRjaCBqcy9FcnJvciBleCkpKSkpKVxuIn0gezpzeW0gSU1hcCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgbWFwcGluZyBmdW5jdGlvbmFsaXR5IHRvIGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWRpc3NvYyl9IHs6c3ltIHNvcnRlZC1zZXQtYnksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHNvcnRlZCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci4iLCA6YXJnbGlzdHMgW1tjb21wYXJhdG9yICYga2V5c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0ZWQtc2V0LWJ5XG4gXCJSZXR1cm5zIGEgbmV3IHNvcnRlZCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci5cIlxuIChbY29tcGFyYXRvciAmIGtleXNdXG4gIChyZWR1Y2VcbiAgIC1jb25qXG4gICAoUGVyc2lzdGVudFRyZWVTZXQuIG5pbCAoc29ydGVkLW1hcC1ieSBjb21wYXJhdG9yKSAwKVxuICAga2V5cykpKVxuIn0gezpzeW0gY2xvbmVhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaW1wbGVtZW50cyBJQ2xvbmVhYmxlIHByb3RvY29sLiIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGNsb25lYWJsZT9cbiBcIlJldHVybiB0cnVlIGlmIHggaW1wbGVtZW50cyBJQ2xvbmVhYmxlIHByb3RvY29sLlwiXG4gW3ZhbHVlXVxuIChzYXRpc2ZpZXM/IElDbG9uZWFibGUgdmFsdWUpKVxuIn0gezpzeW0gcXVhbGlmaWVkLWlkZW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZCB3aXRoIGEgbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWFsaWZpZWQtaWRlbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQgd2l0aCBhIG5hbWVzcGFjZVwiXG4gW3hdXG4gKGJvb2xlYW4gKGFuZCAoaWRlbnQ/IHgpIChuYW1lc3BhY2UgeCkgdHJ1ZSkpKVxuIn0gezpzeW0gaGFzaC1zdHJpbmcqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzaC1zdHJpbmcqXG4gW3NdXG4gKGlmLW5vdFxuICAobmlsPyBzKVxuICAobGV0XG4gICBbbGVuICguLWxlbmd0aCBzKV1cbiAgIChpZlxuICAgIChwb3M/IGxlbilcbiAgICAobG9vcFxuICAgICBbaSAwIGhhc2ggMF1cbiAgICAgKGlmXG4gICAgICAoPCBpIGxlbilcbiAgICAgIChyZWN1ciAoaW5jIGkpICgrIChpbXVsIDMxIGhhc2gpICguY2hhckNvZGVBdCBzIGkpKSlcbiAgICAgIGhhc2gpKVxuICAgIDApKVxuICAwKSlcbiJ9IHs6c3ltIGtleS10ZXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleSBvdGhlcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBrZXktdGVzdFxuIFtrZXkgb3RoZXJdXG4gKGNvbmRcbiAgKGlkZW50aWNhbD8ga2V5IG90aGVyKVxuICB0cnVlXG4gIChrZXl3b3JkLWlkZW50aWNhbD8ga2V5IG90aGVyKVxuICB0cnVlXG4gIDplbHNlXG4gICg9IGtleSBvdGhlcikpKVxuIn0gezpzeW0gLXJlc2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHRydWU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIHRydWUsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHRydWU/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyB0aGUgdmFsdWUgdHJ1ZSwgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKGNsanMuY29yZS90cnVlPyB4KSlcbiJ9IHs6c3ltIGFycmF5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIG5ldyBqYXZhc2NyaXB0IGFycmF5LlxuQHBhcmFtIHsuLi4qfSB2YXJfYXJncyIsIDphcmdsaXN0cyAoW3Zhci1hcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5XG4gXCJDcmVhdGVzIGEgbmV3IGphdmFzY3JpcHQgYXJyYXkuXFxuQHBhcmFtIHsuLi4qfSB2YXJfYXJnc1wiXG4gW3Zhci1hcmdzXVxuIChsZXRcbiAgW2EgKGpzL0FycmF5LiAoYWxlbmd0aCAoY2xqcy5jb3JlL2pzLWFyZ3VtZW50cykpKV1cbiAgKGxvb3BcbiAgIFtpIDBdXG4gICAoaWZcbiAgICAoPCBpIChhbGVuZ3RoIGEpKVxuICAgIChkbyAoYXNldCBhIGkgKGFnZXQgKGNsanMuY29yZS9qcy1hcmd1bWVudHMpIGkpKSAocmVjdXIgKGluYyBpKSkpXG4gICAgYSkpKSlcbiJ9IHs6c3ltIHByaW50LCA6bWV0YSB7OmRvYyAiUHJpbnRzIHRoZSBvYmplY3QocykgdXNpbmcgc3RyaW5nLXByaW50LlxuICBwcmludCBhbmQgcHJpbnRsbiBwcm9kdWNlIG91dHB1dCBmb3IgaHVtYW4gY29uc3VtcHRpb24uIn0sIDpzb3VyY2UgIihkZWZcbiBwcmludFxuIChmblxuICBjbGpzLWNvcmUtcHJpbnRcbiAgWyYgb2Jqc11cbiAgKHByLXdpdGgtb3B0cyBvYmpzIChhc3NvYyAocHItb3B0cykgOnJlYWRhYmx5IGZhbHNlKSkpKVxuIn0gezpzeW0gLXBlZWssIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBpdGVtIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2suIElzIHVzZWQgYnkgY2xqcy5jb3JlL3BlZWsuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTdGFja30gezpzeW0gSVNlcSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjb2xsZWN0aW9ucyB0byBwcm92aWRlIGFjY2VzcyB0byB0aGVpciBpdGVtcyBhcyBzZXF1ZW5jZXMuIn0sIDptZXRob2RzICgtZmlyc3QgLXJlc3QpfSB7OnN5bSBlbXB0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gZW1wdHkgY29sbGVjdGlvbiBvZiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBjb2xsLCBvciBuaWwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGVtcHR5XG4gXCJSZXR1cm5zIGFuIGVtcHR5IGNvbGxlY3Rpb24gb2YgdGhlIHNhbWUgY2F0ZWdvcnkgYXMgY29sbCwgb3IgbmlsXCJcbiBbY29sbF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGNvbmRcbiAgIChpbXBsZW1lbnRzPyBJRW1wdHlhYmxlQ29sbGVjdGlvbiBjb2xsKVxuICAgKC1lbXB0eSBjb2xsKVxuICAgKHNhdGlzZmllcz8gSUVtcHR5YWJsZUNvbGxlY3Rpb24gY29sbClcbiAgICgtZW1wdHkgY29sbClcbiAgIDplbHNlXG4gICBuaWwpKSlcbiJ9IHs6c3ltIHJlbW92ZS1tZXRob2QsIDptZXRhIHs6ZG9jICJSZW1vdmVzIHRoZSBtZXRob2Qgb2YgbXVsdGltZXRob2QgYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoLXZhbHVlLiIsIDphcmdsaXN0cyAoW211bHRpZm4gZGlzcGF0Y2gtdmFsXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS1tZXRob2RcbiBcIlJlbW92ZXMgdGhlIG1ldGhvZCBvZiBtdWx0aW1ldGhvZCBhc3NvY2lhdGVkIHdpdGggZGlzcGF0Y2gtdmFsdWUuXCJcbiBbbXVsdGlmbiBkaXNwYXRjaC12YWxdXG4gKC1yZW1vdmUtbWV0aG9kIG11bHRpZm4gZGlzcGF0Y2gtdmFsKSlcbiJ9IHs6c3ltIHZvbGF0aWxlISwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBWb2xhdGlsZSB3aXRoIGFuIGluaXRpYWwgdmFsdWUgb2YgdmFsLiIsIDphcmdsaXN0cyAoW3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2b2xhdGlsZSFcbiBcIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBWb2xhdGlsZSB3aXRoIGFuIGluaXRpYWwgdmFsdWUgb2YgdmFsLlwiXG4gW3ZhbF1cbiAoVm9sYXRpbGUuIHZhbCkpXG4ifSB7OnN5bSAvLCA6bWV0YSB7OmRvYyAiSWYgbm8gZGVub21pbmF0b3JzIGFyZSBzdXBwbGllZCwgcmV0dXJucyAxL251bWVyYXRvcixcbiAgZWxzZSByZXR1cm5zIG51bWVyYXRvciBkaXZpZGVkIGJ5IGFsbCBvZiB0aGUgZGVub21pbmF0b3JzLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIC9cbiBcIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXFxuICBlbHNlIHJldHVybnMgbnVtZXJhdG9yIGRpdmlkZWQgYnkgYWxsIG9mIHRoZSBkZW5vbWluYXRvcnMuXCJcbiAoW3hdICgvIDEgeCkpXG4gKFt4IHldIChjbGpzLmNvcmUvZGl2aWRlIHggeSkpXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlIC8gKC8geCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBiaXQtb3IsIDptZXRhIHs6ZG9jICJCaXR3aXNlIG9yIiwgOmFyZ2xpc3RzIFtbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQtb3JcbiBcIkJpdHdpc2Ugb3JcIlxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC1vciB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBiaXQtb3IgKGNsanMuY29yZS9iaXQtb3IgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBtMy1mbWl4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2gxIGxlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtMy1mbWl4XG4gW2gxIGxlbl1cbiAoYXMtPlxuICAoaW50IGgxKVxuICBoMVxuICAoYml0LXhvciBoMSBsZW4pXG4gIChiaXQteG9yIGgxICh1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgaDEgMTYpKVxuICAoaW11bCBoMSAoaW50IDIyNDY4MjI1MDcpKVxuICAoYml0LXhvciBoMSAodW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IGgxIDEzKSlcbiAgKGltdWwgaDEgKGludCAzMjY2NDg5OTA5KSlcbiAgKGJpdC14b3IgaDEgKHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBoMSAxNikpKSlcbiJ9IHs6c3ltIHZlY3RvciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFyZ3MuIiwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHZlY3RvclxuIFwiQ3JlYXRlcyBhIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgYXJncy5cIlxuIFsmIGFyZ3NdXG4gKGlmXG4gIChhbmQgKGluc3RhbmNlPyBJbmRleGVkU2VxIGFyZ3MpICh6ZXJvPyAoLi1pIGFyZ3MpKSlcbiAgKC5mcm9tQXJyYXlcbiAgIFBlcnNpc3RlbnRWZWN0b3JcbiAgICguLWFyciBhcmdzKVxuICAgKG5vdCAoYXJyYXk/ICguLWFyciBhcmdzKSkpKVxuICAodmVjIGFyZ3MpKSlcbiJ9IHs6c3ltID49LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgbm9uLWluY3JlYXNpbmcgb3JkZXIsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiA+PVxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgbm9uLWluY3JlYXNpbmcgb3JkZXIsXFxuICBvdGhlcndpc2UgZmFsc2UuXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldIChjbGpzLmNvcmUvPj0geCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKGNsanMuY29yZS8+PSB4IHkpXG4gICAoaWZcbiAgICAobmV4dCBtb3JlKVxuICAgIChyZWN1ciB5IChmaXJzdCBtb3JlKSAobmV4dCBtb3JlKSlcbiAgICAoY2xqcy5jb3JlLz49IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBkcm9wLWxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGxhc3QgbiAoZGVmYXVsdCAxKSBpdGVtcyBpbiBjb2xsIiwgOmFyZ2xpc3RzIFtbc10gW24gc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBkcm9wLWxhc3RcbiBcIlJldHVybiBhIGxhenkgc2VxdWVuY2Ugb2YgYWxsIGJ1dCB0aGUgbGFzdCBuIChkZWZhdWx0IDEpIGl0ZW1zIGluIGNvbGxcIlxuIChbc10gKGRyb3AtbGFzdCAxIHMpKVxuIChbbiBzXSAobWFwIChmbiBbeCBfXSB4KSBzIChkcm9wIG4gcykpKSlcbiJ9IHs6c3ltIG9iamVjdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCdzIGNvbnN0cnVjdG9yIGlzIE9iamVjdCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gb2JqZWN0P1xuIFwiUmV0dXJucyB0cnVlIGlmIHgncyBjb25zdHJ1Y3RvciBpcyBPYmplY3RcIlxuIFt4XVxuIChpZi1ub3QgKG5pbD8geCkgKGlkZW50aWNhbD8gKC4tY29uc3RydWN0b3IgeCkganMvT2JqZWN0KSBmYWxzZSkpXG4ifSB7OnN5bSBub3QtZW1wdHksIDptZXRhIHs6ZG9jICJJZiBjb2xsIGlzIGVtcHR5LCByZXR1cm5zIG5pbCwgZWxzZSBjb2xsIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3QtZW1wdHlcbiBcIklmIGNvbGwgaXMgZW1wdHksIHJldHVybnMgbmlsLCBlbHNlIGNvbGxcIlxuIFtjb2xsXVxuICh3aGVuIChzZXEgY29sbCkgY29sbCkpXG4ifSB7OnN5bSBkaXN0aW5jdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbXSBbY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXN0aW5jdFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQuXFxuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW11cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW3NlZW4gKHZvbGF0aWxlISAje30pXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChpZlxuICAgICAgIChjb250YWlucz8gQHNlZW4gaW5wdXQpXG4gICAgICAgcmVzdWx0XG4gICAgICAgKGRvICh2c3dhcCEgc2VlbiBjb25qIGlucHV0KSAocmYgcmVzdWx0IGlucHV0KSkpKSkpKSlcbiAoW2NvbGxdXG4gIChsZXRcbiAgIFtzdGVwXG4gICAgKGZuXG4gICAgIHN0ZXBcbiAgICAgW3hzIHNlZW5dXG4gICAgIChsYXp5LXNlcVxuICAgICAgKChmblxuICAgICAgICBbW2YgOmFzIHhzXSBzZWVuXVxuICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgIFtzIChzZXEgeHMpXVxuICAgICAgICAgKGlmXG4gICAgICAgICAgKGNvbnRhaW5zPyBzZWVuIGYpXG4gICAgICAgICAgKHJlY3VyIChyZXN0IHMpIHNlZW4pXG4gICAgICAgICAgKGNvbnMgZiAoc3RlcCAocmVzdCBzKSAoY29uaiBzZWVuIGYpKSkpKSlcbiAgICAgICB4c1xuICAgICAgIHNlZW4pKSldXG4gICAoc3RlcCBjb2xsICN7fSkpKSlcbiJ9IHs6c3ltIHBhcnRpdGlvbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGxpc3RzIG9mIG4gaXRlbXMgZWFjaCwgYXQgb2Zmc2V0cyBzdGVwXG4gIGFwYXJ0LiBJZiBzdGVwIGlzIG5vdCBzdXBwbGllZCwgZGVmYXVsdHMgdG8gbiwgaS5lLiB0aGUgcGFydGl0aW9uc1xuICBkbyBub3Qgb3ZlcmxhcC4gSWYgYSBwYWQgY29sbGVjdGlvbiBpcyBzdXBwbGllZCwgdXNlIGl0cyBlbGVtZW50cyBhc1xuICBuZWNlc3NhcnkgdG8gY29tcGxldGUgbGFzdCBwYXJ0aXRpb24gdXAgdG8gbiBpdGVtcy4gSW4gY2FzZSB0aGVyZSBhcmVcbiAgbm90IGVub3VnaCBwYWRkaW5nIGVsZW1lbnRzLCByZXR1cm4gYSBwYXJ0aXRpb24gd2l0aCBsZXNzIHRoYW4gbiBpdGVtcy4iLCA6YXJnbGlzdHMgW1tuIGNvbGxdIFtuIHN0ZXAgY29sbF0gW24gc3RlcCBwYWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJ0aXRpb25cbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGxpc3RzIG9mIG4gaXRlbXMgZWFjaCwgYXQgb2Zmc2V0cyBzdGVwXFxuICBhcGFydC4gSWYgc3RlcCBpcyBub3Qgc3VwcGxpZWQsIGRlZmF1bHRzIHRvIG4sIGkuZS4gdGhlIHBhcnRpdGlvbnNcXG4gIGRvIG5vdCBvdmVybGFwLiBJZiBhIHBhZCBjb2xsZWN0aW9uIGlzIHN1cHBsaWVkLCB1c2UgaXRzIGVsZW1lbnRzIGFzXFxuICBuZWNlc3NhcnkgdG8gY29tcGxldGUgbGFzdCBwYXJ0aXRpb24gdXAgdG8gbiBpdGVtcy4gSW4gY2FzZSB0aGVyZSBhcmVcXG4gIG5vdCBlbm91Z2ggcGFkZGluZyBlbGVtZW50cywgcmV0dXJuIGEgcGFydGl0aW9uIHdpdGggbGVzcyB0aGFuIG4gaXRlbXMuXCJcbiAoW24gY29sbF0gKHBhcnRpdGlvbiBuIG4gY29sbCkpXG4gKFtuIHN0ZXAgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChsZXRcbiAgICAgW3AgKHRha2UgbiBzKV1cbiAgICAgKHdoZW5cbiAgICAgICg9PSBuIChjb3VudCBwKSlcbiAgICAgIChjb25zIHAgKHBhcnRpdGlvbiBuIHN0ZXAgKGRyb3Agc3RlcCBzKSkpKSkpKSlcbiAoW24gc3RlcCBwYWQgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChsZXRcbiAgICAgW3AgKHRha2UgbiBzKV1cbiAgICAgKGlmXG4gICAgICAoPT0gbiAoY291bnQgcCkpXG4gICAgICAoY29ucyBwIChwYXJ0aXRpb24gbiBzdGVwIHBhZCAoZHJvcCBzdGVwIHMpKSlcbiAgICAgIChsaXN0ICh0YWtlIG4gKGNvbmNhdCBwIHBhZCkpKSkpKSkpKVxuIn0gezpzeW0gSU11bHRpRm4sIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgtYWRkLW1ldGhvZCAtZGVmYXVsdC1kaXNwYXRjaC12YWwgLWRpc3BhdGNoLWZuIC1nZXQtbWV0aG9kIC1tZXRob2RzIC1wcmVmZXItbWV0aG9kIC1wcmVmZXJzIC1yZW1vdmUtbWV0aG9kIC1yZXNldCl9IHs6c3ltIERFTVVOR0VfUEFUVEVSTiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgREVNVU5HRV9QQVRURVJOIG5pbClcbiJ9IHs6c3ltIElBc3NvY2lhdGl2ZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgYXNzb2NpYXRpdml0eSB0byBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1hc3NvYyAtY29udGFpbnMta2V5Pyl9IHs6c3ltIGJpdC1mbGlwLCA6bWV0YSB7OmRvYyAiRmxpcCBiaXQgYXQgaW5kZXggbiIsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm4gYml0LWZsaXAgXCJGbGlwIGJpdCBhdCBpbmRleCBuXCIgW3ggbl0gKGNsanMuY29yZS9iaXQtZmxpcCB4IG4pKVxuIn0gezpzeW0gbG9uZy1hcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gYXJyYXkgb2YgbG9uZ3MuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcbiAgd2l0aCBDbG9qdXJlLiIsIDphcmdsaXN0cyBbW3NpemUtb3Itc2VxXSBbc2l6ZSBpbml0LXZhbC1vci1zZXFdXX0sIDpzb3VyY2UgIihkZWZuXG4gbG9uZy1hcnJheVxuIFwiQ3JlYXRlcyBhbiBhcnJheSBvZiBsb25ncy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxcbiAgd2l0aCBDbG9qdXJlLlwiXG4gKFtzaXplLW9yLXNlcV1cbiAgKGlmXG4gICAobnVtYmVyPyBzaXplLW9yLXNlcSlcbiAgIChsb25nLWFycmF5IHNpemUtb3Itc2VxIG5pbClcbiAgIChpbnRvLWFycmF5IHNpemUtb3Itc2VxKSkpXG4gKFtzaXplIGluaXQtdmFsLW9yLXNlcV1cbiAgKGxldFxuICAgW2EgKG1ha2UtYXJyYXkgc2l6ZSldXG4gICAoaWZcbiAgICAoc2VxPyBpbml0LXZhbC1vci1zZXEpXG4gICAgKGxldFxuICAgICBbcyAoc2VxIGluaXQtdmFsLW9yLXNlcSldXG4gICAgIChsb29wXG4gICAgICBbaSAwIHMgc11cbiAgICAgIChpZlxuICAgICAgIChhbmQgcyAoPCBpIHNpemUpKVxuICAgICAgIChkbyAoYXNldCBhIGkgKGZpcnN0IHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkpXG4gICAgICAgYSkpKVxuICAgIChkbyAoZG90aW1lcyBbaSBzaXplXSAoYXNldCBhIGkgaW5pdC12YWwtb3Itc2VxKSkgYSkpKSkpXG4ifSB7OnN5bSBkZXNjZW5kYW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGltbWVkaWF0ZSBhbmQgaW5kaXJlY3QgY2hpbGRyZW4gb2YgdGFnLCB0aHJvdWdoIGFcbiAgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxuICBoaWVyYXJjaHkuIE5vdGU6IGRvZXMgbm90IHdvcmsgb24gSmF2YVNjcmlwdCB0eXBlIGluaGVyaXRhbmNlXG4gIHJlbGF0aW9uc2hpcHMuIiwgOmFyZ2xpc3RzIFtbdGFnXSBbaCB0YWddXX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzY2VuZGFudHNcbiBcIlJldHVybnMgdGhlIGltbWVkaWF0ZSBhbmQgaW5kaXJlY3QgY2hpbGRyZW4gb2YgdGFnLCB0aHJvdWdoIGFcXG4gIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWRcXG4gIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsXFxuICBoaWVyYXJjaHkuIE5vdGU6IGRvZXMgbm90IHdvcmsgb24gSmF2YVNjcmlwdCB0eXBlIGluaGVyaXRhbmNlXFxuICByZWxhdGlvbnNoaXBzLlwiXG4gKFt0YWddIChkZXNjZW5kYW50cyBAKGdldC1nbG9iYWwtaGllcmFyY2h5KSB0YWcpKVxuIChbaCB0YWddIChub3QtZW1wdHkgKGdldCAoOmRlc2NlbmRhbnRzIGgpIHRhZykpKSlcbiJ9IHs6c3ltIG1lcmdlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCB0aGF0IGNvbnNpc3RzIG9mIHRoZSByZXN0IG9mIHRoZSBtYXBzIGNvbmotZWQgb250b1xuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nIGZyb21cbiAgdGhlIGxhdHRlciAobGVmdC10by1yaWdodCkgd2lsbCBiZSB0aGUgbWFwcGluZyBpbiB0aGUgcmVzdWx0LiIsIDphcmdsaXN0cyAoWyYgbWFwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZVxuIFwiUmV0dXJucyBhIG1hcCB0aGF0IGNvbnNpc3RzIG9mIHRoZSByZXN0IG9mIHRoZSBtYXBzIGNvbmotZWQgb250b1xcbiAgdGhlIGZpcnN0LiAgSWYgYSBrZXkgb2NjdXJzIGluIG1vcmUgdGhhbiBvbmUgbWFwLCB0aGUgbWFwcGluZyBmcm9tXFxuICB0aGUgbGF0dGVyIChsZWZ0LXRvLXJpZ2h0KSB3aWxsIGJlIHRoZSBtYXBwaW5nIGluIHRoZSByZXN1bHQuXCJcbiBbJiBtYXBzXVxuICh3aGVuXG4gIChzb21lIGlkZW50aXR5IG1hcHMpXG4gIChyZWR1Y2VcbiAgIChmbiogW3AxX180NTQxNSMgcDJfXzQ1NDE2I10gKGNvbmogKG9yIHAxX180NTQxNSMge30pIHAyX180NTQxNiMpKVxuICAgbWFwcykpKVxuIn0gezpzeW0gSVNlcWFibGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHRoZSBhYmlsaXR5IHRvIGEgdHlwZSB0byBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgc2VxdWVuY2UuIn0sIDptZXRob2RzICgtc2VxKX0gezpzeW0ganMtbW9kLCA6bWV0YSB7OmRvYyAiTW9kdWx1cyBvZiBudW0gYW5kIGRpdiB3aXRoIG9yaWdpbmFsIGphdmFzY3JpcHQgYmVoYXZpb3IuIGkuZS4gYnVnIGZvciBuZWdhdGl2ZSBudW1iZXJzIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxuIGpzLW1vZFxuIFwiTW9kdWx1cyBvZiBudW0gYW5kIGRpdiB3aXRoIG9yaWdpbmFsIGphdmFzY3JpcHQgYmVoYXZpb3IuIGkuZS4gYnVnIGZvciBuZWdhdGl2ZSBudW1iZXJzXCJcbiBbbiBkXVxuIChjbGpzLmNvcmUvanMtbW9kIG4gZCkpXG4ifSB7OnN5bSBpbnRlZ2VyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGEgSmF2YVNjcmlwdCBudW1iZXIgd2l0aCBubyBkZWNpbWFsIHBhcnQuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRlZ2VyP1xuIFwiUmV0dXJucyB0cnVlIGlmIG4gaXMgYSBKYXZhU2NyaXB0IG51bWJlciB3aXRoIG5vIGRlY2ltYWwgcGFydC5cIlxuIFtuXVxuIChhbmRcbiAgKG51bWJlcj8gbilcbiAgKG5vdCAoanMvaXNOYU4gbikpXG4gIChub3QgKGlkZW50aWNhbD8gbiBqcy9JbmZpbml0eSkpXG4gICg9PSAoanMvcGFyc2VGbG9hdCBuKSAoanMvcGFyc2VJbnQgbiAxMCkpKSlcbiJ9IHs6c3ltIE5TX0NBQ0hFLCA6bWV0YSB7OmRvYyAiQm9vdHN0cmFwIG9ubHkuIn0sIDpzb3VyY2UgIihkZWYgTlNfQ0FDSEUgbmlsKVxuIn0gezpzeW0gbWFwdiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSB2ZWN0b3IgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gdGhlXG4gIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlIHNldFxuICBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xuICBleGhhdXN0ZWQuICBBbnkgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBGdW5jdGlvblxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy4iLCA6YXJnbGlzdHMgW1tmIGNvbGxdIFtmIGMxIGMyXSBbZiBjMSBjMiBjM10gW2YgYzEgYzIgYzMgJiBjb2xsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXB2XG4gXCJSZXR1cm5zIGEgdmVjdG9yIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZVxcbiAgc2V0IG9mIGZpcnN0IGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmcgZiB0byB0aGUgc2V0XFxuICBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xcbiAgZXhoYXVzdGVkLiAgQW55IHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gRnVuY3Rpb25cXG4gIGYgc2hvdWxkIGFjY2VwdCBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzLlwiXG4gKFtmIGNvbGxdXG4gICgtPlxuICAgKHJlZHVjZSAoZm4gW3Ygb10gKGNvbmohIHYgKGYgbykpKSAodHJhbnNpZW50IFtdKSBjb2xsKVxuICAgcGVyc2lzdGVudCEpKVxuIChbZiBjMSBjMl0gKGludG8gW10gKG1hcCBmIGMxIGMyKSkpXG4gKFtmIGMxIGMyIGMzXSAoaW50byBbXSAobWFwIGYgYzEgYzIgYzMpKSlcbiAoW2YgYzEgYzIgYzMgJiBjb2xsc10gKGludG8gW10gKGFwcGx5IG1hcCBmIGMxIGMyIGMzIGNvbGxzKSkpKVxuIn0gezpzeW0gaW5maW5pdGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGZvciBJbmZpbml0eSBhbmQgLUluZmluaXR5IHZhbHVlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGluZmluaXRlP1xuIFwiUmV0dXJucyB0cnVlIGZvciBJbmZpbml0eSBhbmQgLUluZmluaXR5IHZhbHVlcy5cIlxuIFt4XVxuIChvclxuICAoaWRlbnRpY2FsPyB4IGpzL051bWJlci5QT1NJVElWRV9JTkZJTklUWSlcbiAgKGlkZW50aWNhbD8geCBqcy9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpKSlcbiJ9IHs6c3ltIHBhcnRpdGlvbi1hbGwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBsaXN0cyBsaWtlIHBhcnRpdGlvbiwgYnV0IG1heSBpbmNsdWRlXG4gIHBhcnRpdGlvbnMgd2l0aCBmZXdlciB0aGFuIG4gaXRlbXMgYXQgdGhlIGVuZC4gIFJldHVybnMgYSBzdGF0ZWZ1bFxuICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tuXSBbbiBjb2xsXSBbbiBzdGVwIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uLWFsbFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgbGlzdHMgbGlrZSBwYXJ0aXRpb24sIGJ1dCBtYXkgaW5jbHVkZVxcbiAgcGFydGl0aW9ucyB3aXRoIGZld2VyIHRoYW4gbiBpdGVtcyBhdCB0aGUgZW5kLiAgUmV0dXJucyBhIHN0YXRlZnVsXFxuICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbbl1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2EgKGFycmF5LWxpc3QpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdXG4gICAgICAobGV0XG4gICAgICAgW3Jlc3VsdFxuICAgICAgICAoaWZcbiAgICAgICAgICguaXNFbXB0eSBhKVxuICAgICAgICAgcmVzdWx0XG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXVxuICAgICAgICAgICguY2xlYXIgYSlcbiAgICAgICAgICAodW5yZWR1Y2VkIChyZiByZXN1bHQgdikpKSldXG4gICAgICAgKHJmIHJlc3VsdCkpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgICguYWRkIGEgaW5wdXQpXG4gICAgICAoaWZcbiAgICAgICAoPT0gbiAoLnNpemUgYSkpXG4gICAgICAgKGxldCBbdiAodmVjICgudG9BcnJheSBhKSldICguY2xlYXIgYSkgKHJmIHJlc3VsdCB2KSlcbiAgICAgICByZXN1bHQpKSkpKSlcbiAoW24gY29sbF0gKHBhcnRpdGlvbi1hbGwgbiBuIGNvbGwpKVxuIChbbiBzdGVwIGNvbGxdXG4gIChsYXp5LXNlcVxuICAgKHdoZW4tbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAoY29ucyAodGFrZSBuIHMpIChwYXJ0aXRpb24tYWxsIG4gc3RlcCAoZHJvcCBzdGVwIHMpKSkpKSkpXG4ifSB7OnN5bSBwYXJ0aXRpb24tYnksIDptZXRhIHs6ZG9jICJBcHBsaWVzIGYgdG8gZWFjaCB2YWx1ZSBpbiBjb2xsLCBzcGxpdHRpbmcgaXQgZWFjaCB0aW1lIGYgcmV0dXJucyBhXG4gICBuZXcgdmFsdWUuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgcGFydGl0aW9ucy4gIFJldHVybnMgYSBzdGF0ZWZ1bFxuICAgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJ0aXRpb24tYnlcbiBcIkFwcGxpZXMgZiB0byBlYWNoIHZhbHVlIGluIGNvbGwsIHNwbGl0dGluZyBpdCBlYWNoIHRpbWUgZiByZXR1cm5zIGFcXG4gICBuZXcgdmFsdWUuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgcGFydGl0aW9ucy4gIFJldHVybnMgYSBzdGF0ZWZ1bFxcbiAgIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtmXVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbYSAoYXJyYXktbGlzdCkgcGEgKHZvbGF0aWxlISA6Y2xqcy5jb3JlL25vbmUpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdXG4gICAgICAobGV0XG4gICAgICAgW3Jlc3VsdFxuICAgICAgICAoaWZcbiAgICAgICAgICguaXNFbXB0eSBhKVxuICAgICAgICAgcmVzdWx0XG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXVxuICAgICAgICAgICguY2xlYXIgYSlcbiAgICAgICAgICAodW5yZWR1Y2VkIChyZiByZXN1bHQgdikpKSldXG4gICAgICAgKHJmIHJlc3VsdCkpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbcHZhbCBAcGEgdmFsIChmIGlucHV0KV1cbiAgICAgICAodnJlc2V0ISBwYSB2YWwpXG4gICAgICAgKGlmXG4gICAgICAgIChvciAoa2V5d29yZC1pZGVudGljYWw/IHB2YWwgOmNsanMuY29yZS9ub25lKSAoPSB2YWwgcHZhbCkpXG4gICAgICAgIChkbyAoLmFkZCBhIGlucHV0KSByZXN1bHQpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFt2ICh2ZWMgKC50b0FycmF5IGEpKV1cbiAgICAgICAgICguY2xlYXIgYSlcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbcmV0IChyZiByZXN1bHQgdildXG4gICAgICAgICAgKHdoZW4tbm90IChyZWR1Y2VkPyByZXQpICguYWRkIGEgaW5wdXQpKVxuICAgICAgICAgIHJldCkpKSkpKSkpKVxuIChbZiBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGxldFxuICAgICBbZnN0XG4gICAgICAoZmlyc3QgcylcbiAgICAgIGZ2XG4gICAgICAoZiBmc3QpXG4gICAgICBydW5cbiAgICAgIChjb25zXG4gICAgICAgZnN0XG4gICAgICAgKHRha2Utd2hpbGUgKGZuKiBbcDFfXzQ1NDI3I10gKD0gZnYgKGYgcDFfXzQ1NDI3IykpKSAobmV4dCBzKSkpXVxuICAgICAoY29ucyBydW4gKHBhcnRpdGlvbi1ieSBmIChsYXp5LXNlcSAoZHJvcCAoY291bnQgcnVuKSBzKSkpKSkpKSkpXG4ifSB7OnN5bSBJU2VxdWVudGlhbCwgOm1ldGEgezpkb2MgIk1hcmtlciBpbnRlcmZhY2UgaW5kaWNhdGluZyBhIHBlcnNpc3RlbnQgY29sbGVjdGlvbiBvZiBzZXF1ZW50aWFsIGl0ZW1zIn0sIDptZXRob2RzICgpfSB7OnN5bSBlcXVpdi1tYXAsIDptZXRhIHs6ZG9jICJUZXN0IG1hcCBlcXVpdmFsZW5jZS4gUmV0dXJucyB0cnVlIGlmIHggZXF1YWxzIHksIG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlcXVpdi1tYXBcbiBcIlRlc3QgbWFwIGVxdWl2YWxlbmNlLiBSZXR1cm5zIHRydWUgaWYgeCBlcXVhbHMgeSwgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuXCJcbiBbeCB5XVxuIChib29sZWFuXG4gICh3aGVuXG4gICAoYW5kIChtYXA/IHkpIChub3QgKHJlY29yZD8geSkpKVxuICAgKHdoZW5cbiAgICAoPT0gKGNvdW50IHgpIChjb3VudCB5KSlcbiAgICAoaWZcbiAgICAgKHNhdGlzZmllcz8gSUtWUmVkdWNlIHgpXG4gICAgIChyZWR1Y2Uta3ZcbiAgICAgIChmblxuICAgICAgIFtfIGsgdl1cbiAgICAgICAoaWYgKD0gKGdldCB5IGsgbmV2ZXItZXF1aXYpIHYpIHRydWUgKHJlZHVjZWQgZmFsc2UpKSlcbiAgICAgIHRydWVcbiAgICAgIHgpXG4gICAgIChldmVyeT9cbiAgICAgIChmbiBbeGt2XSAoPSAoZ2V0IHkgKGZpcnN0IHhrdikgbmV2ZXItZXF1aXYpIChzZWNvbmQgeGt2KSkpXG4gICAgICB4KSkpKSkpXG4ifSB7OnN5bSBvYmplY3QtYXJyYXksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIGFycmF5IG9mIG9iamVjdHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcbiAgd2l0aCBDbG9qdXJlLiIsIDphcmdsaXN0cyBbW3NpemUtb3Itc2VxXSBbc2l6ZSBpbml0LXZhbC1vci1zZXFdXX0sIDpzb3VyY2UgIihkZWZuXG4gb2JqZWN0LWFycmF5XG4gXCJDcmVhdGVzIGFuIGFycmF5IG9mIG9iamVjdHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxuIChbc2l6ZS1vci1zZXFdXG4gIChpZlxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXG4gICAob2JqZWN0LWFycmF5IHNpemUtb3Itc2VxIG5pbClcbiAgIChpbnRvLWFycmF5IHNpemUtb3Itc2VxKSkpXG4gKFtzaXplIGluaXQtdmFsLW9yLXNlcV1cbiAgKGxldFxuICAgW2EgKG1ha2UtYXJyYXkgc2l6ZSldXG4gICAoaWZcbiAgICAoc2VxPyBpbml0LXZhbC1vci1zZXEpXG4gICAgKGxldFxuICAgICBbcyAoc2VxIGluaXQtdmFsLW9yLXNlcSldXG4gICAgIChsb29wXG4gICAgICBbaSAwIHMgc11cbiAgICAgIChpZlxuICAgICAgIChhbmQgcyAoPCBpIHNpemUpKVxuICAgICAgIChkbyAoYXNldCBhIGkgKGZpcnN0IHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkpXG4gICAgICAgYSkpKVxuICAgIChkbyAoZG90aW1lcyBbaSBzaXplXSAoYXNldCBhIGkgaW5pdC12YWwtb3Itc2VxKSkgYSkpKSkpXG4ifSB7OnN5bSBkZXJpdmUsIDptZXRhIHs6ZG9jICJFc3RhYmxpc2hlcyBhIHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJlbnQgYW5kXG4gIHRhZy4gUGFyZW50IG11c3QgYmUgYSBuYW1lc3BhY2UtcXVhbGlmaWVkIHN5bWJvbCBvciBrZXl3b3JkIGFuZFxuICBjaGlsZCBjYW4gYmUgZWl0aGVyIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBvciBhXG4gIGNsYXNzLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90XG4gIHN1cHBsaWVkIGRlZmF1bHRzIHRvLCBhbmQgbW9kaWZpZXMsIHRoZSBnbG9iYWwgaGllcmFyY2h5LiIsIDphcmdsaXN0cyBbW3RhZyBwYXJlbnRdIFtoIHRhZyBwYXJlbnRdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGVyaXZlXG4gXCJFc3RhYmxpc2hlcyBhIHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJlbnQgYW5kXFxuICB0YWcuIFBhcmVudCBtdXN0IGJlIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBhbmRcXG4gIGNoaWxkIGNhbiBiZSBlaXRoZXIgYSBuYW1lc3BhY2UtcXVhbGlmaWVkIHN5bWJvbCBvciBrZXl3b3JkIG9yIGFcXG4gIGNsYXNzLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90XFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS5cIlxuIChbdGFnIHBhcmVudF1cbiAgKGFzc2VydCAobmFtZXNwYWNlIHBhcmVudCkpXG4gIChzd2FwLWdsb2JhbC1oaWVyYXJjaHkhIGRlcml2ZSB0YWcgcGFyZW50KVxuICBuaWwpXG4gKFtoIHRhZyBwYXJlbnRdXG4gIChhc3NlcnQgKG5vdD0gdGFnIHBhcmVudCkpXG4gIChsZXRcbiAgIFt0cFxuICAgICg6cGFyZW50cyBoKVxuICAgIHRkXG4gICAgKDpkZXNjZW5kYW50cyBoKVxuICAgIHRhXG4gICAgKDphbmNlc3RvcnMgaClcbiAgICB0ZlxuICAgIChmblxuICAgICBbbSBzb3VyY2Ugc291cmNlcyB0YXJnZXQgdGFyZ2V0c11cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW3JldCBrXVxuICAgICAgIChhc3NvY1xuICAgICAgICByZXRcbiAgICAgICAga1xuICAgICAgICAocmVkdWNlXG4gICAgICAgICBjb25qXG4gICAgICAgICAoZ2V0IHRhcmdldHMgayAje30pXG4gICAgICAgICAoY29ucyB0YXJnZXQgKHRhcmdldHMgdGFyZ2V0KSkpKSlcbiAgICAgIG1cbiAgICAgIChjb25zIHNvdXJjZSAoc291cmNlcyBzb3VyY2UpKSkpXVxuICAgKG9yXG4gICAgKHdoZW4tbm90XG4gICAgIChjb250YWlucz8gKHRwIHRhZykgcGFyZW50KVxuICAgICAod2hlblxuICAgICAgKGNvbnRhaW5zPyAodGEgdGFnKSBwYXJlbnQpXG4gICAgICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIHRhZyBcImFscmVhZHkgaGFzXCIgcGFyZW50IFwiYXMgYW5jZXN0b3JcIikpKSlcbiAgICAgKHdoZW5cbiAgICAgIChjb250YWlucz8gKHRhIHBhcmVudCkgdGFnKVxuICAgICAgKHRocm93XG4gICAgICAgKGpzL0Vycm9yLlxuICAgICAgICAoc3RyIFwiQ3ljbGljIGRlcml2YXRpb246XCIgcGFyZW50IFwiaGFzXCIgdGFnIFwiYXMgYW5jZXN0b3JcIikpKSlcbiAgICAgezpwYXJlbnRzIChhc3NvYyAoOnBhcmVudHMgaCkgdGFnIChjb25qIChnZXQgdHAgdGFnICN7fSkgcGFyZW50KSksXG4gICAgICA6YW5jZXN0b3JzICh0ZiAoOmFuY2VzdG9ycyBoKSB0YWcgdGQgcGFyZW50IHRhKSxcbiAgICAgIDpkZXNjZW5kYW50cyAodGYgKDpkZXNjZW5kYW50cyBoKSBwYXJlbnQgdGEgdGFnIHRkKX0pXG4gICAgaCkpKSlcbiJ9IHs6c3ltIHNlcS1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuIHNlcS1pdGVyIFtjb2xsXSAoU2VxSXRlci4gSU5JVCBjb2xsKSlcbiJ9IHs6c3ltIElDaHVua2VkU2VxLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyBhIGNvbGxlY3Rpb24gYXMgc2VxdWVudGlhbCBjaHVua3MuIn0sIDptZXRob2RzICgtY2h1bmtlZC1maXJzdCAtY2h1bmtlZC1yZXN0KX0gezpzeW0gc3BlY2lhbC1zeW1ib2w/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggbmFtZXMgYSBzcGVjaWFsIGZvcm0iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNwZWNpYWwtc3ltYm9sP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggbmFtZXMgYSBzcGVjaWFsIGZvcm1cIlxuIFt4XVxuIChjb250YWlucz9cbiAgJyN7JlxuICAgICBjYXNlKlxuICAgICBkZWZyZWNvcmQqXG4gICAgIHRyeVxuICAgICBucypcbiAgICAgZmluYWxseVxuICAgICBsb29wKlxuICAgICBkb1xuICAgICBsZXRmbipcbiAgICAgaWZcbiAgICAgbmV3XG4gICAgIG5zXG4gICAgIGRlZnR5cGUqXG4gICAgIGxldCpcbiAgICAganMqXG4gICAgIGZuKlxuICAgICByZWN1clxuICAgICBzZXQhXG4gICAgIC5cbiAgICAgdmFyXG4gICAgIHF1b3RlXG4gICAgIGNhdGNoXG4gICAgIHRocm93XG4gICAgIGRlZn1cbiAgeCkpXG4ifSB7OnN5bSBhbmNlc3RvcnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IHBhcmVudHMgb2YgdGFnLCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlXG4gIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXG4gIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgaGllcmFyY2h5IiwgOmFyZ2xpc3RzIFtbdGFnXSBbaCB0YWddXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5jZXN0b3JzXG4gXCJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IHBhcmVudHMgb2YgdGFnLCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlXFxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxcbiAgbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZCBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWRcXG4gIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgaGllcmFyY2h5XCJcbiAoW3RhZ10gKGFuY2VzdG9ycyBAKGdldC1nbG9iYWwtaGllcmFyY2h5KSB0YWcpKVxuIChbaCB0YWddIChub3QtZW1wdHkgKGdldCAoOmFuY2VzdG9ycyBoKSB0YWcpKSkpXG4ifSB7OnN5bSBzdWJzZXEsIDptZXRhIHs6ZG9jICJzYyBtdXN0IGJlIGEgc29ydGVkIGNvbGxlY3Rpb24sIHRlc3Qocykgb25lIG9mIDwsIDw9LCA+IG9yXG4gID49LiBSZXR1cm5zIGEgc2VxIG9mIHRob3NlIGVudHJpZXMgd2l0aCBrZXlzIGVrIGZvclxuICB3aGljaCAodGVzdCAoLi4gc2MgY29tcGFyYXRvciAoY29tcGFyZSBlayBrZXkpKSAwKSBpcyB0cnVlIiwgOmFyZ2xpc3RzIFtbc2MgdGVzdCBrZXldIFtzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSBlbmQtdGVzdCBlbmQta2V5XV19LCA6c291cmNlICIoZGVmblxuIHN1YnNlcVxuIFwic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxcbiAgPj0uIFJldHVybnMgYSBzZXEgb2YgdGhvc2UgZW50cmllcyB3aXRoIGtleXMgZWsgZm9yXFxuICB3aGljaCAodGVzdCAoLi4gc2MgY29tcGFyYXRvciAoY29tcGFyZSBlayBrZXkpKSAwKSBpcyB0cnVlXCJcbiAoW3NjIHRlc3Qga2V5XVxuICAobGV0XG4gICBbaW5jbHVkZSAobWstYm91bmQtZm4gc2MgdGVzdCBrZXkpXVxuICAgKGlmXG4gICAgKCN7PiA+PX0gdGVzdClcbiAgICAod2hlbi1sZXRcbiAgICAgW1tlIDphcyBzXSAoLXNvcnRlZC1zZXEtZnJvbSBzYyBrZXkgdHJ1ZSldXG4gICAgIChpZiAoaW5jbHVkZSBlKSBzIChuZXh0IHMpKSlcbiAgICAodGFrZS13aGlsZSBpbmNsdWRlICgtc29ydGVkLXNlcSBzYyB0cnVlKSkpKSlcbiAoW3NjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5IGVuZC10ZXN0IGVuZC1rZXldXG4gICh3aGVuLWxldFxuICAgW1tlIDphcyBzXSAoLXNvcnRlZC1zZXEtZnJvbSBzYyBzdGFydC1rZXkgdHJ1ZSldXG4gICAodGFrZS13aGlsZVxuICAgIChtay1ib3VuZC1mbiBzYyBlbmQtdGVzdCBlbmQta2V5KVxuICAgIChpZiAoKG1rLWJvdW5kLWZuIHNjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5KSBlKSBzIChuZXh0IHMpKSkpKSlcbiJ9IHs6c3ltIGdlbnN5bSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc3ltYm9sIHdpdGggYSB1bmlxdWUgbmFtZS4gSWYgYSBwcmVmaXggc3RyaW5nIGlzXG4gIHN1cHBsaWVkLCB0aGUgbmFtZSBpcyBwcmVmaXgjIHdoZXJlICMgaXMgc29tZSB1bmlxdWUgbnVtYmVyLiBJZlxuICBwcmVmaXggaXMgbm90IHN1cHBsaWVkLCB0aGUgcHJlZml4IGlzICdHX18nLiIsIDphcmdsaXN0cyBbW10gW3ByZWZpeC1zdHJpbmddXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2Vuc3ltXG4gXCJSZXR1cm5zIGEgbmV3IHN5bWJvbCB3aXRoIGEgdW5pcXVlIG5hbWUuIElmIGEgcHJlZml4IHN0cmluZyBpc1xcbiAgc3VwcGxpZWQsIHRoZSBuYW1lIGlzIHByZWZpeCMgd2hlcmUgIyBpcyBzb21lIHVuaXF1ZSBudW1iZXIuIElmXFxuICBwcmVmaXggaXMgbm90IHN1cHBsaWVkLCB0aGUgcHJlZml4IGlzICdHX18nLlwiXG4gKFtdIChnZW5zeW0gXCJHX19cIikpXG4gKFtwcmVmaXgtc3RyaW5nXVxuICAod2hlbiAobmlsPyBnZW5zeW1fY291bnRlcikgKHNldCEgZ2Vuc3ltX2NvdW50ZXIgKGF0b20gMCkpKVxuICAoc3ltYm9sIChzdHIgcHJlZml4LXN0cmluZyAoc3dhcCEgZ2Vuc3ltX2NvdW50ZXIgaW5jKSkpKSlcbiJ9IHs6c3ltIC1uZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aG91dCB0aGUgZmlyc3QgaXRlbS4gSW4gY29udHJhc3QgdG9cbiAgICAgcmVzdCwgaXQgc2hvdWxkIHJldHVybiBuaWwgaWYgdGhlcmUgYXJlIG5vIG1vcmUgaXRlbXMsIGUuZy5cbiAgICAgKG5leHQgW10pID0+IG5pbFxuICAgICAobmV4dCBuaWwpID0+IG5pbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJTmV4dH0gezpzeW0gZGVsYXk/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIHggaXMgYSBEZWxheSBjcmVhdGVkIHdpdGggZGVsYXkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGRlbGF5P1xuIFwicmV0dXJucyB0cnVlIGlmIHggaXMgYSBEZWxheSBjcmVhdGVkIHdpdGggZGVsYXlcIlxuIFt4XVxuIChpbnN0YW5jZT8gRGVsYXkgeCkpXG4ifSB7OnN5bSBmbGF0dGVuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYW55IG5lc3RlZCBjb21iaW5hdGlvbiBvZiBzZXF1ZW50aWFsIHRoaW5ncyAobGlzdHMsIHZlY3RvcnMsXG4gIGV0Yy4pIGFuZCByZXR1cm5zIHRoZWlyIGNvbnRlbnRzIGFzIGEgc2luZ2xlLCBmbGF0IHNlcXVlbmNlLlxuICAoZmxhdHRlbiBuaWwpIHJldHVybnMgbmlsLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmxhdHRlblxuIFwiVGFrZXMgYW55IG5lc3RlZCBjb21iaW5hdGlvbiBvZiBzZXF1ZW50aWFsIHRoaW5ncyAobGlzdHMsIHZlY3RvcnMsXFxuICBldGMuKSBhbmQgcmV0dXJucyB0aGVpciBjb250ZW50cyBhcyBhIHNpbmdsZSwgZmxhdCBzZXF1ZW5jZS5cXG4gIChmbGF0dGVuIG5pbCkgcmV0dXJucyBuaWwuXCJcbiBbeF1cbiAoZmlsdGVyXG4gIChmbiogW3AxX180NTQxMyNdIChub3QgKHNlcXVlbnRpYWw/IHAxX180NTQxMyMpKSlcbiAgKHJlc3QgKHRyZWUtc2VxIHNlcXVlbnRpYWw/IHNlcSB4KSkpKVxuIn0gezpzeW0gLWRpc3NvYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGhvdXQgdGhlIG1hcHBpbmcgZm9yIGtleSBrLiIsIDphcmdsaXN0cyAoW2NvbGwga10pfSwgOnByb3RvY29sIElNYXB9IHs6c3ltIGRvdWJsZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZG91YmxlcyBbeF0geClcbiJ9IHs6c3ltIGhhbHQtd2hlbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSB0cmFuc2R1Y2VyIHRoYXQgZW5kcyB0cmFuc2R1Y3Rpb24gd2hlbiBwcmVkIHJldHVybnMgdHJ1ZVxuICBmb3IgYW4gaW5wdXQuIFdoZW4gcmV0ZiBpcyBzdXBwbGllZCBpdCBtdXN0IGJlIGEgZm4gb2YgMiBhcmd1bWVudHMgLVxuICBpdCB3aWxsIGJlIHBhc3NlZCB0aGUgKGNvbXBsZXRlZCkgcmVzdWx0IHNvIGZhciBhbmQgdGhlIGlucHV0IHRoYXRcbiAgdHJpZ2dlcmVkIHRoZSBwcmVkaWNhdGUsIGFuZCBpdHMgcmV0dXJuIHZhbHVlIChpZiBpdCBkb2VzIG5vdCB0aHJvd1xuICBhbiBleGNlcHRpb24pIHdpbGwgYmUgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdHJhbnNkdWNlci4gSWYgcmV0ZlxuICBpcyBub3Qgc3VwcGxpZWQsIHRoZSBpbnB1dCB0aGF0IHRyaWdnZXJlZCB0aGUgcHJlZGljYXRlIHdpbGwgYmVcbiAgcmV0dXJuZWQuIElmIHRoZSBwcmVkaWNhdGUgbmV2ZXIgcmV0dXJucyB0cnVlIHRoZSB0cmFuc2R1Y3Rpb24gaXNcbiAgdW5hZmZlY3RlZC4iLCA6YXJnbGlzdHMgW1twcmVkXSBbcHJlZCByZXRmXV19LCA6c291cmNlICIoZGVmblxuIGhhbHQtd2hlblxuIFwiUmV0dXJucyBhIHRyYW5zZHVjZXIgdGhhdCBlbmRzIHRyYW5zZHVjdGlvbiB3aGVuIHByZWQgcmV0dXJucyB0cnVlXFxuICBmb3IgYW4gaW5wdXQuIFdoZW4gcmV0ZiBpcyBzdXBwbGllZCBpdCBtdXN0IGJlIGEgZm4gb2YgMiBhcmd1bWVudHMgLVxcbiAgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIChjb21wbGV0ZWQpIHJlc3VsdCBzbyBmYXIgYW5kIHRoZSBpbnB1dCB0aGF0XFxuICB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSwgYW5kIGl0cyByZXR1cm4gdmFsdWUgKGlmIGl0IGRvZXMgbm90IHRocm93XFxuICBhbiBleGNlcHRpb24pIHdpbGwgYmUgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdHJhbnNkdWNlci4gSWYgcmV0ZlxcbiAgaXMgbm90IHN1cHBsaWVkLCB0aGUgaW5wdXQgdGhhdCB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlXFxuICByZXR1cm5lZC4gSWYgdGhlIHByZWRpY2F0ZSBuZXZlciByZXR1cm5zIHRydWUgdGhlIHRyYW5zZHVjdGlvbiBpc1xcbiAgdW5hZmZlY3RlZC5cIlxuIHs6YWRkZWQgXCIxLjlcIn1cbiAoW3ByZWRdIChoYWx0LXdoZW4gcHJlZCBuaWwpKVxuIChbcHJlZCByZXRmXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XVxuICAgICAoaWZcbiAgICAgIChhbmQgKG1hcD8gcmVzdWx0KSAoY29udGFpbnM/IHJlc3VsdCA6Y2xqcy5jb3JlL2hhbHQpKVxuICAgICAgKDpjbGpzLmNvcmUvaGFsdCByZXN1bHQpXG4gICAgICAocmYgcmVzdWx0KSkpXG4gICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgIChpZlxuICAgICAgKHByZWQgaW5wdXQpXG4gICAgICAocmVkdWNlZFxuICAgICAgIHs6Y2xqcy5jb3JlL2hhbHQgKGlmIHJldGYgKHJldGYgKHJmIHJlc3VsdCkgaW5wdXQpIGlucHV0KX0pXG4gICAgICAocmYgcmVzdWx0IGlucHV0KSkpKSkpKVxuIn0gezpzeW0gLWNvbnRhaW5zLWtleT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgayBpcyBhIGtleSBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGwga10pfSwgOnByb3RvY29sIElBc3NvY2lhdGl2ZX0gezpzeW0gcmVtb3ZlLXdhdGNoLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBhIHdhdGNoIChzZXQgYnkgYWRkLXdhdGNoKSBmcm9tIGEgcmVmZXJlbmNlIiwgOmFyZ2xpc3RzIChbaXJlZiBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlLXdhdGNoXG4gXCJSZW1vdmVzIGEgd2F0Y2ggKHNldCBieSBhZGQtd2F0Y2gpIGZyb20gYSByZWZlcmVuY2VcIlxuIFtpcmVmIGtleV1cbiAoLXJlbW92ZS13YXRjaCBpcmVmIGtleSlcbiBpcmVmKVxuIn0gezpzeW0gZXgtaW5mbywgOm1ldGEgezpkb2MgIkNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBFeGNlcHRpb25JbmZvLCBhbiBFcnJvciB0eXBlIHRoYXQgY2FycmllcyBhXG4gIG1hcCBvZiBhZGRpdGlvbmFsIGRhdGEuIiwgOmFyZ2xpc3RzIFtbbXNnIGRhdGFdIFttc2cgZGF0YSBjYXVzZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBleC1pbmZvXG4gXCJDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgRXhjZXB0aW9uSW5mbywgYW4gRXJyb3IgdHlwZSB0aGF0IGNhcnJpZXMgYVxcbiAgbWFwIG9mIGFkZGl0aW9uYWwgZGF0YS5cIlxuIChbbXNnIGRhdGFdIChleC1pbmZvIG1zZyBkYXRhIG5pbCkpXG4gKFttc2cgZGF0YSBjYXVzZV0gKEV4Y2VwdGlvbkluZm8uIG1zZyBkYXRhIGNhdXNlKSkpXG4ifSB7OnN5bSBpZm4/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGYgcmV0dXJucyB0cnVlIGZvciBmbj8gb3Igc2F0aXNmaWVzIElGbi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGlmbj9cbiBcIlJldHVybnMgdHJ1ZSBpZiBmIHJldHVybnMgdHJ1ZSBmb3IgZm4/IG9yIHNhdGlzZmllcyBJRm4uXCJcbiBbZl1cbiAob3IgKGZuPyBmKSAoc2F0aXNmaWVzPyBJRm4gZikpKVxuIn0gezpzeW0gSUF0b20sIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wgaW5kaWNhdGluZyBhbiBhdG9tLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gbmF0LWludD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnQ/IGFuZCBpcyBhIG5hdHVyYWwgaW50ZWdlciB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG5hdC1pbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnQ/IGFuZCBpcyBhIG5hdHVyYWwgaW50ZWdlciB2YWx1ZS5cIlxuIFt4XVxuIChjb25kXG4gIChpbnRlZ2VyPyB4KVxuICAobm90IChuZWc/IHgpKVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHgpXG4gIChub3QgKC5pc05lZ2F0aXZlIHgpKVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5Mb25nIHgpXG4gIChub3QgKC5pc05lZ2F0aXZlIHgpKVxuICA6ZWxzZVxuICBmYWxzZSkpXG4ifSB7OnN5bSBJV2F0Y2hhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHR5cGVzIHRoYXQgY2FuIGJlIHdhdGNoZWQuIEN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGJ5IEF0b20uIn0sIDptZXRob2RzICgtYWRkLXdhdGNoIC1ub3RpZnktd2F0Y2hlcyAtcmVtb3ZlLXdhdGNoKX0gezpzeW0gc3VidmVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHBlcnNpc3RlbnQgdmVjdG9yIG9mIHRoZSBpdGVtcyBpbiB2ZWN0b3IgZnJvbVxuICBzdGFydCAoaW5jbHVzaXZlKSB0byBlbmQgKGV4Y2x1c2l2ZSkuICBJZiBlbmQgaXMgbm90IHN1cHBsaWVkLFxuICBkZWZhdWx0cyB0byAoY291bnQgdmVjdG9yKS4gVGhpcyBvcGVyYXRpb24gaXMgTygxKSBhbmQgdmVyeSBmYXN0LCBhc1xuICB0aGUgcmVzdWx0aW5nIHZlY3RvciBzaGFyZXMgc3RydWN0dXJlIHdpdGggdGhlIG9yaWdpbmFsIGFuZCBub1xuICB0cmltbWluZyBpcyBkb25lLiIsIDphcmdsaXN0cyBbW3Ygc3RhcnRdIFt2IHN0YXJ0IGVuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJ2ZWNcbiBcIlJldHVybnMgYSBwZXJzaXN0ZW50IHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gdmVjdG9yIGZyb21cXG4gIHN0YXJ0IChpbmNsdXNpdmUpIHRvIGVuZCAoZXhjbHVzaXZlKS4gIElmIGVuZCBpcyBub3Qgc3VwcGxpZWQsXFxuICBkZWZhdWx0cyB0byAoY291bnQgdmVjdG9yKS4gVGhpcyBvcGVyYXRpb24gaXMgTygxKSBhbmQgdmVyeSBmYXN0LCBhc1xcbiAgdGhlIHJlc3VsdGluZyB2ZWN0b3Igc2hhcmVzIHN0cnVjdHVyZSB3aXRoIHRoZSBvcmlnaW5hbCBhbmQgbm9cXG4gIHRyaW1taW5nIGlzIGRvbmUuXCJcbiAoW3Ygc3RhcnRdIChzdWJ2ZWMgdiBzdGFydCAoY291bnQgdikpKVxuIChbdiBzdGFydCBlbmRdXG4gIChhc3NlcnQgKGFuZCAobm90IChuaWw/IHN0YXJ0KSkgKG5vdCAobmlsPyBlbmQpKSkpXG4gIChidWlsZC1zdWJ2ZWMgbmlsIHYgKGludCBzdGFydCkgKGludCBlbmQpIG5pbCkpKVxuIn0gezpzeW0gLXBvcCEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRjb2xsIHdpdGggdGhlIGxhc3QgaXRlbSByZW1vdmVkIGZyb20gaXQuIiwgOmFyZ2xpc3RzIChbdGNvbGxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50VmVjdG9yfSB7OnN5bSBwYXJ0aWFsLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmdW5jdGlvbiBmIGFuZCBmZXdlciB0aGFuIHRoZSBub3JtYWwgYXJndW1lbnRzIHRvIGYsIGFuZFxuICByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhZGRpdGlvbmFsIGFyZ3MuIFdoZW5cbiAgY2FsbGVkLCB0aGUgcmV0dXJuZWQgZnVuY3Rpb24gY2FsbHMgZiB3aXRoIGFyZ3MgKyBhZGRpdGlvbmFsIGFyZ3MuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgYXJnMV0gW2YgYXJnMSBhcmcyXSBbZiBhcmcxIGFyZzIgYXJnM10gW2YgYXJnMSBhcmcyIGFyZzMgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHBhcnRpYWxcbiBcIlRha2VzIGEgZnVuY3Rpb24gZiBhbmQgZmV3ZXIgdGhhbiB0aGUgbm9ybWFsIGFyZ3VtZW50cyB0byBmLCBhbmRcXG4gIHJldHVybnMgYSBmbiB0aGF0IHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYXJncy4gV2hlblxcbiAgY2FsbGVkLCB0aGUgcmV0dXJuZWQgZnVuY3Rpb24gY2FsbHMgZiB3aXRoIGFyZ3MgKyBhZGRpdGlvbmFsIGFyZ3MuXCJcbiAoW2ZdIGYpXG4gKFtmIGFyZzFdXG4gIChmblxuICAgKFtdIChmIGFyZzEpKVxuICAgKFt4XSAoZiBhcmcxIHgpKVxuICAgKFt4IHldIChmIGFyZzEgeCB5KSlcbiAgIChbeCB5IHpdIChmIGFyZzEgeCB5IHopKVxuICAgKFt4IHkgeiAmIGFyZ3NdIChhcHBseSBmIGFyZzEgeCB5IHogYXJncykpKSlcbiAoW2YgYXJnMSBhcmcyXVxuICAoZm5cbiAgIChbXSAoZiBhcmcxIGFyZzIpKVxuICAgKFt4XSAoZiBhcmcxIGFyZzIgeCkpXG4gICAoW3ggeV0gKGYgYXJnMSBhcmcyIHggeSkpXG4gICAoW3ggeSB6XSAoZiBhcmcxIGFyZzIgeCB5IHopKVxuICAgKFt4IHkgeiAmIGFyZ3NdIChhcHBseSBmIGFyZzEgYXJnMiB4IHkgeiBhcmdzKSkpKVxuIChbZiBhcmcxIGFyZzIgYXJnM11cbiAgKGZuXG4gICAoW10gKGYgYXJnMSBhcmcyIGFyZzMpKVxuICAgKFt4XSAoZiBhcmcxIGFyZzIgYXJnMyB4KSlcbiAgIChbeCB5XSAoZiBhcmcxIGFyZzIgYXJnMyB4IHkpKVxuICAgKFt4IHkgel0gKGYgYXJnMSBhcmcyIGFyZzMgeCB5IHopKVxuICAgKFt4IHkgeiAmIGFyZ3NdIChhcHBseSBmIGFyZzEgYXJnMiBhcmczIHggeSB6IGFyZ3MpKSkpXG4gKFtmIGFyZzEgYXJnMiBhcmczICYgbW9yZV1cbiAgKGZuIFsmIGFyZ3NdIChhcHBseSBmIGFyZzEgYXJnMiBhcmczIChjb25jYXQgbW9yZSBhcmdzKSkpKSlcbiJ9IHs6c3ltIGNodW5rZWQtc2VxPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIElDaHVua2VkU2VxLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2h1bmtlZC1zZXE/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ2h1bmtlZFNlcS5cIlxuIFt4XVxuIChpbXBsZW1lbnRzPyBJQ2h1bmtlZFNlcSB4KSlcbiJ9IHs6c3ltIHJlcGxpY2F0ZSwgOm1ldGEgezpkb2MgIkRFUFJFQ0FURUQ6IFVzZSAncmVwZWF0JyBpbnN0ZWFkLlxuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbiB4cy4iLCA6YXJnbGlzdHMgKFtuIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwbGljYXRlXG4gXCJERVBSRUNBVEVEOiBVc2UgJ3JlcGVhdCcgaW5zdGVhZC5cXG4gIFJldHVybnMgYSBsYXp5IHNlcSBvZiBuIHhzLlwiXG4gW24geF1cbiAodGFrZSBuIChyZXBlYXQgeCkpKVxuIn0gezpzeW0gbWluLWtleSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHggZm9yIHdoaWNoIChrIHgpLCBhIG51bWJlciwgaXMgbGVhc3QuXG5cbiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIHN1Y2ggeHMsIHRoZSBsYXN0IG9uZSBpcyByZXR1cm5lZC4iLCA6YXJnbGlzdHMgW1trIHhdIFtrIHggeV0gW2sgeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtaW4ta2V5XG4gXCJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGxlYXN0LlxcblxcbiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIHN1Y2ggeHMsIHRoZSBsYXN0IG9uZSBpcyByZXR1cm5lZC5cIlxuIChbayB4XSB4KVxuIChbayB4IHldIChpZiAoPCAoayB4KSAoayB5KSkgeCB5KSlcbiAoW2sgeCB5ICYgbW9yZV1cbiAgKHJlZHVjZVxuICAgKGZuKiBbcDFfXzQ1NDI1IyBwMl9fNDU0MjYjXSAobWluLWtleSBrIHAxX180NTQyNSMgcDJfXzQ1NDI2IykpXG4gICAobWluLWtleSBrIHggeSlcbiAgIG1vcmUpKSlcbiJ9IHs6c3ltIHJlZHVjZWQsIDptZXRhIHs6ZG9jICJXcmFwcyB4IGluIGEgd2F5IHN1Y2ggdGhhdCBhIHJlZHVjZSB3aWxsIHRlcm1pbmF0ZSB3aXRoIHRoZSB2YWx1ZSB4IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2VkXG4gXCJXcmFwcyB4IGluIGEgd2F5IHN1Y2ggdGhhdCBhIHJlZHVjZSB3aWxsIHRlcm1pbmF0ZSB3aXRoIHRoZSB2YWx1ZSB4XCJcbiBbeF1cbiAoUmVkdWNlZC4geCkpXG4ifSB7OnN5bSByZS1tYXRjaGVzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcmVzdWx0IG9mIChyZS1maW5kIHJlIHMpIGlmIHJlIGZ1bGx5IG1hdGNoZXMgcy4iLCA6YXJnbGlzdHMgKFtyZSBzXSl9LCA6c291cmNlICIoZGVmblxuIHJlLW1hdGNoZXNcbiBcIlJldHVybnMgdGhlIHJlc3VsdCBvZiAocmUtZmluZCByZSBzKSBpZiByZSBmdWxseSBtYXRjaGVzIHMuXCJcbiBbcmUgc11cbiAoaWZcbiAgKHN0cmluZz8gcylcbiAgKGxldFxuICAgW21hdGNoZXMgKC5leGVjIHJlIHMpXVxuICAgKHdoZW5cbiAgICAoYW5kIChub3QgKG5pbD8gbWF0Y2hlcykpICg9IChhZ2V0IG1hdGNoZXMgMCkgcykpXG4gICAgKGlmICg9PSAoY291bnQgbWF0Y2hlcykgMSkgKGFnZXQgbWF0Y2hlcyAwKSAodmVjIG1hdGNoZXMpKSkpXG4gICh0aHJvdyAoanMvVHlwZUVycm9yLiBcInJlLW1hdGNoZXMgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKSkpKVxuIn0gezpzeW0gYXJyYXktbWFwLCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBhcnJheSBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy4iLCA6YXJnbGlzdHMgKFsmIGtleXZhbHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJyYXktbWFwXG4gXCJrZXl2YWwgPT4ga2V5IHZhbFxcbiAgUmV0dXJucyBhIG5ldyBhcnJheSBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxuIFsmIGtleXZhbHNdXG4gKGxldFxuICBbYXJyXG4gICAoaWZcbiAgICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSBrZXl2YWxzKSAoemVybz8gKC4taSBrZXl2YWxzKSkpXG4gICAgKC4tYXJyIGtleXZhbHMpXG4gICAgKGludG8tYXJyYXkga2V5dmFscykpXVxuICAoLmNyZWF0ZUFzSWZCeUFzc29jIFBlcnNpc3RlbnRBcnJheU1hcCBhcnIpKSlcbiJ9IHs6c3ltIElUcmFuc2llbnRTZXQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHNldCBmdW5jdGlvbmFsaXR5IHRvIGEgdHJhbnNpZW50IGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtZGlzam9pbiEpfSB7OnN5bSB1bmNoZWNrZWQtYnl0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtYnl0ZSBbeF0geClcbiJ9IHs6c3ltIGV2ZXJ5LXByZWQsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHNldCBvZiBwcmVkaWNhdGVzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gZiB0aGF0IHJldHVybnMgdHJ1ZSBpZiBhbGwgb2YgaXRzXG4gIGNvbXBvc2luZyBwcmVkaWNhdGVzIHJldHVybiBhIGxvZ2ljYWwgdHJ1ZSB2YWx1ZSBhZ2FpbnN0IGFsbCBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcbiAgZmFsc2UuIE5vdGUgdGhhdCBmIGlzIHNob3J0LWNpcmN1aXRpbmcgaW4gdGhhdCBpdCB3aWxsIHN0b3AgZXhlY3V0aW9uIG9uIHRoZSBmaXJzdFxuICBhcmd1bWVudCB0aGF0IHRyaWdnZXJzIGEgbG9naWNhbCBmYWxzZSByZXN1bHQgYWdhaW5zdCB0aGUgb3JpZ2luYWwgcHJlZGljYXRlcy4iLCA6YXJnbGlzdHMgW1twXSBbcDEgcDJdIFtwMSBwMiBwM10gW3AxIHAyIHAzICYgcHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXZlcnktcHJlZFxuIFwiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRydWUgaWYgYWxsIG9mIGl0c1xcbiAgY29tcG9zaW5nIHByZWRpY2F0ZXMgcmV0dXJuIGEgbG9naWNhbCB0cnVlIHZhbHVlIGFnYWluc3QgYWxsIG9mIGl0cyBhcmd1bWVudHMsIGVsc2UgaXQgcmV0dXJuc1xcbiAgZmFsc2UuIE5vdGUgdGhhdCBmIGlzIHNob3J0LWNpcmN1aXRpbmcgaW4gdGhhdCBpdCB3aWxsIHN0b3AgZXhlY3V0aW9uIG9uIHRoZSBmaXJzdFxcbiAgYXJndW1lbnQgdGhhdCB0cmlnZ2VycyBhIGxvZ2ljYWwgZmFsc2UgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuXCJcbiAoW3BdXG4gIChmblxuICAgZXAxXG4gICAoW10gdHJ1ZSlcbiAgIChbeF0gKGJvb2xlYW4gKHAgeCkpKVxuICAgKFt4IHldIChib29sZWFuIChhbmQgKHAgeCkgKHAgeSkpKSlcbiAgIChbeCB5IHpdIChib29sZWFuIChhbmQgKHAgeCkgKHAgeSkgKHAgeikpKSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYm9vbGVhbiAoYW5kIChlcDEgeCB5IHopIChldmVyeT8gcCBhcmdzKSkpKSkpXG4gKFtwMSBwMl1cbiAgKGZuXG4gICBlcDJcbiAgIChbXSB0cnVlKVxuICAgKFt4XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDIgeCkpKSlcbiAgIChbeCB5XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDEgeSkgKHAyIHgpIChwMiB5KSkpKVxuICAgKFt4IHkgel0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAxIHkpIChwMSB6KSAocDIgeCkgKHAyIHkpIChwMiB6KSkpKVxuICAgKFt4IHkgeiAmIGFyZ3NdXG4gICAgKGJvb2xlYW5cbiAgICAgKGFuZFxuICAgICAgKGVwMiB4IHkgeilcbiAgICAgIChldmVyeT9cbiAgICAgICAoZm4qIFtwMV9fNDU0MDAjXSAoYW5kIChwMSBwMV9fNDU0MDAjKSAocDIgcDFfXzQ1NDAwIykpKVxuICAgICAgIGFyZ3MpKSkpKSlcbiAoW3AxIHAyIHAzXVxuICAoZm5cbiAgIGVwM1xuICAgKFtdIHRydWUpXG4gICAoW3hdIChib29sZWFuIChhbmQgKHAxIHgpIChwMiB4KSAocDMgeCkpKSlcbiAgIChbeCB5XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDIgeCkgKHAzIHgpIChwMSB5KSAocDIgeSkgKHAzIHkpKSkpXG4gICAoW3ggeSB6XVxuICAgIChib29sZWFuXG4gICAgIChhbmRcbiAgICAgIChwMSB4KVxuICAgICAgKHAyIHgpXG4gICAgICAocDMgeClcbiAgICAgIChwMSB5KVxuICAgICAgKHAyIHkpXG4gICAgICAocDMgeSlcbiAgICAgIChwMSB6KVxuICAgICAgKHAyIHopXG4gICAgICAocDMgeikpKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgIChib29sZWFuXG4gICAgIChhbmRcbiAgICAgIChlcDMgeCB5IHopXG4gICAgICAoZXZlcnk/XG4gICAgICAgKGZuKlxuICAgICAgICBbcDFfXzQ1NDAxI11cbiAgICAgICAgKGFuZCAocDEgcDFfXzQ1NDAxIykgKHAyIHAxX180NTQwMSMpIChwMyBwMV9fNDU0MDEjKSkpXG4gICAgICAgYXJncykpKSkpKVxuIChbcDEgcDIgcDMgJiBwc11cbiAgKGxldFxuICAgW3BzIChsaXN0KiBwMSBwMiBwMyBwcyldXG4gICAoZm5cbiAgICBlcG5cbiAgICAoW10gdHJ1ZSlcbiAgICAoW3hdIChldmVyeT8gKGZuKiBbcDFfXzQ1NDAyI10gKHAxX180NTQwMiMgeCkpIHBzKSlcbiAgICAoW3ggeV1cbiAgICAgKGV2ZXJ5P1xuICAgICAgKGZuKiBbcDFfXzQ1NDAzI10gKGFuZCAocDFfXzQ1NDAzIyB4KSAocDFfXzQ1NDAzIyB5KSkpXG4gICAgICBwcykpXG4gICAgKFt4IHkgel1cbiAgICAgKGV2ZXJ5P1xuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDU0MDQjXVxuICAgICAgIChhbmQgKHAxX180NTQwNCMgeCkgKHAxX180NTQwNCMgeSkgKHAxX180NTQwNCMgeikpKVxuICAgICAgcHMpKVxuICAgIChbeCB5IHogJiBhcmdzXVxuICAgICAoYm9vbGVhblxuICAgICAgKGFuZFxuICAgICAgIChlcG4geCB5IHopXG4gICAgICAgKGV2ZXJ5PyAoZm4qIFtwMV9fNDU0MDUjXSAoZXZlcnk/IHAxX180NTQwNSMgYXJncykpIHBzKSkpKSkpKSlcbiJ9IHs6c3ltIGtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIG1hcCdzIGtleXMsIGluIHRoZSBzYW1lIG9yZGVyIGFzIChzZXEgbWFwKS4iLCA6YXJnbGlzdHMgKFttYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5c1xuIFwiUmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBtYXAncyBrZXlzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuXCJcbiBbbWFwXVxuICh3aGVuLWxldCBbbXNlcSAoc2VxIG1hcCldIChLZXlTZXEuIG1zZXEgbmlsKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXByb3RvY29sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Byb3RvIG9ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXByb3RvY29sXG4gW3Byb3RvIG9ial1cbiAobGV0XG4gIFt0eVxuICAgKHR5cGUgb2JqKVxuICAgdHlcbiAgIChpZlxuICAgIChhbmQgdHkgKC4tY2xqcyRsYW5nJHR5cGUgdHkpKVxuICAgICguLWNsanMkbGFuZyRjdG9yU3RyIHR5KVxuICAgIChnb29nL3R5cGVPZiBvYmopKV1cbiAgKGpzL0Vycm9yLlxuICAgKC5qb2luXG4gICAgKGFycmF5XG4gICAgIFwiTm8gcHJvdG9jb2wgbWV0aG9kIFwiXG4gICAgIHByb3RvXG4gICAgIFwiIGRlZmluZWQgZm9yIHR5cGUgXCJcbiAgICAgdHlcbiAgICAgXCI6IFwiXG4gICAgIG9iailcbiAgICBcIlwiKSkpKVxuIn0gezpzeW0gbG9hZC1maWxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpbGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZC1maWxlXG4gW2ZpbGVdXG4gKHdoZW4tbm90IGpzL0NPTVBJTEVEIChjbGpzLmNvcmUvbG9hZC1maWxlKiBmaWxlKSkpXG4ifSB7OnN5bSBkaXN0aW5jdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbm8gdHdvIG9mIHRoZSBhcmd1bWVudHMgYXJlID0iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXN0aW5jdD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBubyB0d28gb2YgdGhlIGFyZ3VtZW50cyBhcmUgPVwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAobm90ICg9IHggeSkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKGlmXG4gICAobm90ICg9IHggeSkpXG4gICAobG9vcFxuICAgIFtzICN7eCB5fSB4cyBtb3JlXVxuICAgIChsZXRcbiAgICAgW3ggKGZpcnN0IHhzKSBldGMgKG5leHQgeHMpXVxuICAgICAoaWYgeHMgKGlmIChjb250YWlucz8gcyB4KSBmYWxzZSAocmVjdXIgKGNvbmogcyB4KSBldGMpKSB0cnVlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gcG9zLWludD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnQ/IGFuZCBpcyBwb3NpdGl2ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHBvcy1pbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnQ/IGFuZCBpcyBwb3NpdGl2ZS5cIlxuIFt4XVxuIChjb25kXG4gIChpbnRlZ2VyPyB4KVxuICAocG9zPyB4KVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHgpXG4gIChhbmQgKG5vdCAoLmlzTmVnYXRpdmUgeCkpIChub3QgKC5pc1plcm8geCkpKVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5Mb25nIHgpXG4gIChhbmQgKG5vdCAoLmlzTmVnYXRpdmUgeCkpIChub3QgKC5pc1plcm8geCkpKVxuICA6ZWxzZVxuICBmYWxzZSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtc2hvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLXNob3J0IFt4XSB4KVxuIn0gezpzeW0gbWV0aG9kcywgOm1ldGEgezpkb2MgIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybnMgYSBtYXAgb2YgZGlzcGF0Y2ggdmFsdWVzIC0+IGRpc3BhdGNoIGZucyIsIDphcmdsaXN0cyAoW211bHRpZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWV0aG9kc1xuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJucyBhIG1hcCBvZiBkaXNwYXRjaCB2YWx1ZXMgLT4gZGlzcGF0Y2ggZm5zXCJcbiBbbXVsdGlmbl1cbiAoLW1ldGhvZHMgbXVsdGlmbikpXG4ifSB7OnN5bSBvZGQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG4gaXMgb2RkLCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIG4gaXMgbm90IGFuIGludGVnZXIiLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIG9kZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBuIGlzIG9kZCwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyXCJcbiBbbl1cbiAobm90IChldmVuPyBuKSkpXG4ifSB7OnN5bSAtZ2V0LW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZiBkaXNwYXRjaC12YWxdKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gZnJlcXVlbmNpZXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIGZyb20gZGlzdGluY3QgaXRlbXMgaW4gY29sbCB0byB0aGUgbnVtYmVyIG9mIHRpbWVzXG4gIHRoZXkgYXBwZWFyLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZnJlcXVlbmNpZXNcbiBcIlJldHVybnMgYSBtYXAgZnJvbSBkaXN0aW5jdCBpdGVtcyBpbiBjb2xsIHRvIHRoZSBudW1iZXIgb2YgdGltZXNcXG4gIHRoZXkgYXBwZWFyLlwiXG4gW2NvbGxdXG4gKHBlcnNpc3RlbnQhXG4gIChyZWR1Y2VcbiAgIChmbiBbY291bnRzIHhdIChhc3NvYyEgY291bnRzIHggKGluYyAoZ2V0IGNvdW50cyB4IDApKSkpXG4gICAodHJhbnNpZW50IHt9KVxuICAgY29sbCkpKVxuIn0gezpzeW0gcmVkdWNlYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVJlZHVjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWNlYWJsZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIHNhdGlzZmllcyBJUmVkdWNlXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJUmVkdWNlIHgpKVxuIn0gezpzeW0gc3RyaW5nLWhhc2gtY2FjaGUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHN0cmluZy1oYXNoLWNhY2hlIChqcy1vYmopKVxuIn0gezpzeW0gcnN1YnNlcSwgOm1ldGEgezpkb2MgInNjIG11c3QgYmUgYSBzb3J0ZWQgY29sbGVjdGlvbiwgdGVzdChzKSBvbmUgb2YgPCwgPD0sID4gb3JcbiAgPj0uIFJldHVybnMgYSByZXZlcnNlIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZSIsIDphcmdsaXN0cyBbW3NjIHRlc3Qga2V5XSBbc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkgZW5kLXRlc3QgZW5kLWtleV1dfSwgOnNvdXJjZSAiKGRlZm5cbiByc3Vic2VxXG4gXCJzYyBtdXN0IGJlIGEgc29ydGVkIGNvbGxlY3Rpb24sIHRlc3Qocykgb25lIG9mIDwsIDw9LCA+IG9yXFxuICA+PS4gUmV0dXJucyBhIHJldmVyc2Ugc2VxIG9mIHRob3NlIGVudHJpZXMgd2l0aCBrZXlzIGVrIGZvclxcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZVwiXG4gKFtzYyB0ZXN0IGtleV1cbiAgKGxldFxuICAgW2luY2x1ZGUgKG1rLWJvdW5kLWZuIHNjIHRlc3Qga2V5KV1cbiAgIChpZlxuICAgICgjezwgPD19IHRlc3QpXG4gICAgKHdoZW4tbGV0XG4gICAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mga2V5IGZhbHNlKV1cbiAgICAgKGlmIChpbmNsdWRlIGUpIHMgKG5leHQgcykpKVxuICAgICh0YWtlLXdoaWxlIGluY2x1ZGUgKC1zb3J0ZWQtc2VxIHNjIGZhbHNlKSkpKSlcbiAoW3NjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5IGVuZC10ZXN0IGVuZC1rZXldXG4gICh3aGVuLWxldFxuICAgW1tlIDphcyBzXSAoLXNvcnRlZC1zZXEtZnJvbSBzYyBlbmQta2V5IGZhbHNlKV1cbiAgICh0YWtlLXdoaWxlXG4gICAgKG1rLWJvdW5kLWZuIHNjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5KVxuICAgIChpZiAoKG1rLWJvdW5kLWZuIHNjIGVuZC10ZXN0IGVuZC1rZXkpIGUpIHMgKG5leHQgcykpKSkpKVxuIn0gezpzeW0gaW5jLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG51bWJlciBvbmUgZ3JlYXRlciB0aGFuIG51bS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGluY1xuIFwiUmV0dXJucyBhIG51bWJlciBvbmUgZ3JlYXRlciB0aGFuIG51bS5cIlxuIFt4XVxuIChjbGpzLmNvcmUvKyB4IDEpKVxuIn0gezpzeW0gdHlwZS0+c3RyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3R5XSl9LCA6c291cmNlICIoZGVmbiB0eXBlLT5zdHIgW3R5XSAoaWYtbGV0IFtzICguLWNsanMkbGFuZyRjdG9yU3RyIHR5KV0gcyAoc3RyIHR5KSkpXG4ifSB7OnN5bSBnZXQtbWV0aG9kLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCBhbmQgYSBkaXNwYXRjaCB2YWx1ZSwgcmV0dXJucyB0aGUgZGlzcGF0Y2ggZm5cbiAgdGhhdCB3b3VsZCBhcHBseSB0byB0aGF0IHZhbHVlLCBvciBuaWwgaWYgbm9uZSBhcHBseSBhbmQgbm8gZGVmYXVsdCIsIDphcmdsaXN0cyAoW211bHRpZm4gZGlzcGF0Y2gtdmFsXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1tZXRob2RcbiBcIkdpdmVuIGEgbXVsdGltZXRob2QgYW5kIGEgZGlzcGF0Y2ggdmFsdWUsIHJldHVybnMgdGhlIGRpc3BhdGNoIGZuXFxuICB0aGF0IHdvdWxkIGFwcGx5IHRvIHRoYXQgdmFsdWUsIG9yIG5pbCBpZiBub25lIGFwcGx5IGFuZCBubyBkZWZhdWx0XCJcbiBbbXVsdGlmbiBkaXNwYXRjaC12YWxdXG4gKC1nZXQtbWV0aG9kIG11bHRpZm4gZGlzcGF0Y2gtdmFsKSlcbiJ9IHs6c3ltIHV1aWQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHV1aWQ/IFt4XSAoaW1wbGVtZW50cz8gSVVVSUQgeCkpXG4ifSB7OnN5bSBlczYtZW50cmllcy1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBlczYtZW50cmllcy1pdGVyYXRvciBbY29sbF0gKEVTNkVudHJpZXNJdGVyYXRvci4gKHNlcSBjb2xsKSkpXG4ifSB7OnN5bSBiaXQtY2xlYXIsIDptZXRhIHs6ZG9jICJDbGVhciBiaXQgYXQgaW5kZXggbiIsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm4gYml0LWNsZWFyIFwiQ2xlYXIgYml0IGF0IGluZGV4IG5cIiBbeCBuXSAoY2xqcy5jb3JlL2JpdC1jbGVhciB4IG4pKVxuIn0gezpzeW0gZmlsdGVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgZm9yIHdoaWNoXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcmVkXSBbcHJlZCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGZpbHRlclxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgZm9yIHdoaWNoXFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtwcmVkXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAoW3Jlc3VsdCBpbnB1dF0gKGlmIChwcmVkIGlucHV0KSAocmYgcmVzdWx0IGlucHV0KSByZXN1bHQpKSkpKVxuIChbcHJlZCBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGlmXG4gICAgIChjaHVua2VkLXNlcT8gcylcbiAgICAgKGxldFxuICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cbiAgICAgIChkb3RpbWVzXG4gICAgICAgW2kgc2l6ZV1cbiAgICAgICAod2hlbiAocHJlZCAoLW50aCBjIGkpKSAoY2h1bmstYXBwZW5kIGIgKC1udGggYyBpKSkpKVxuICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChmaWx0ZXIgcHJlZCAoY2h1bmstcmVzdCBzKSkpKVxuICAgICAobGV0XG4gICAgICBbZiAoZmlyc3QgcykgciAocmVzdCBzKV1cbiAgICAgIChpZiAocHJlZCBmKSAoY29ucyBmIChmaWx0ZXIgcHJlZCByKSkgKGZpbHRlciBwcmVkIHIpKSkpKSkpKVxuIn0gezpzeW0gLWFzc29jLW4hLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0Y29sbCB3aXRoIHZhbHVlIHZhbCBhZGRlZCBhdCBwb3NpdGlvbiBuLiIsIDphcmdsaXN0cyAoW3Rjb2xsIG4gdmFsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudFZlY3Rvcn0gezpzeW0gSVdpdGhNZXRhLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBtZXRhZGF0YSB0byBhbiBvYmplY3QuIn0sIDptZXRob2RzICgtd2l0aC1tZXRhKX0gezpzeW0gbGlzdCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBpdGVtcy4iLCA6YXJnbGlzdHMgKFsmIHhzXSl9LCA6c291cmNlICIoZGVmblxuIGxpc3RcbiBcIkNyZWF0ZXMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBpdGVtcy5cIlxuIFsmIHhzXVxuIChsZXRcbiAgW2FyclxuICAgKGlmXG4gICAgKGFuZCAoaW5zdGFuY2U/IEluZGV4ZWRTZXEgeHMpICh6ZXJvPyAoLi1pIHhzKSkpXG4gICAgKC4tYXJyIHhzKVxuICAgIChsZXRcbiAgICAgW2FyciAoYXJyYXkpXVxuICAgICAobG9vcFxuICAgICAgW3hzIHhzXVxuICAgICAgKGlmLW5vdFxuICAgICAgIChuaWw/IHhzKVxuICAgICAgIChkbyAoLnB1c2ggYXJyICgtZmlyc3QgeHMpKSAocmVjdXIgKC1uZXh0IHhzKSkpXG4gICAgICAgYXJyKSkpKV1cbiAgKGxvb3BcbiAgIFtpIChhbGVuZ3RoIGFycikgciAoKV1cbiAgIChpZiAoPiBpIDApIChyZWN1ciAoZGVjIGkpICgtY29uaiByIChhZ2V0IGFyciAoZGVjIGkpKSkpIHIpKSkpXG4ifSB7OnN5bSArLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gK1xuIFwiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuXCJcbiAoW10gMClcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvKyB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSArIChjbGpzLmNvcmUvKyB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIHNwbGl0LXdpdGgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNwbGl0LXdpdGhcbiBcIlJldHVybnMgYSB2ZWN0b3Igb2YgWyh0YWtlLXdoaWxlIHByZWQgY29sbCkgKGRyb3Atd2hpbGUgcHJlZCBjb2xsKV1cIlxuIFtwcmVkIGNvbGxdXG4gWyh0YWtlLXdoaWxlIHByZWQgY29sbCkgKGRyb3Atd2hpbGUgcHJlZCBjb2xsKV0pXG4ifSB7OnN5bSBhc2V0LCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4L2luZGljZXMuIFdvcmtzIG9uIEphdmFTY3JpcHQgYXJyYXlzLlxuICBSZXR1cm5zIHZhbC4iLCA6YXJnbGlzdHMgW1thcnJheSBpZHggdmFsXSBbYXJyYXkgaWR4IGlkeDIgJiBpZHh2XV19LCA6c291cmNlICIoZGVmblxuIGFzZXRcbiBcIlNldHMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy5cXG4gIFJldHVybnMgdmFsLlwiXG4gKFthcnJheSBpZHggdmFsXSAoY2xqcy5jb3JlL2FzZXQgYXJyYXkgaWR4IHZhbCkpXG4gKFthcnJheSBpZHggaWR4MiAmIGlkeHZdIChhcHBseSBhc2V0IChhZ2V0IGFycmF5IGlkeCkgaWR4MiBpZHh2KSkpXG4ifSB7OnN5bSBpbnQtcm90YXRlLWxlZnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGludC1yb3RhdGUtbGVmdFxuIFt4IG5dXG4gKGJpdC1vciAoYml0LXNoaWZ0LWxlZnQgeCBuKSAodW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IHggKC0gbikpKSlcbiJ9IHs6c3ltIGtleXdvcmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgS2V5d29yZCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuICBEbyBub3QgdXNlIDpcbiAgaW4gdGhlIGtleXdvcmQgc3RyaW5ncywgaXQgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5LiIsIDphcmdsaXN0cyBbW25hbWVdIFtucyBuYW1lXV19LCA6c291cmNlICIoZGVmblxuIGtleXdvcmRcbiBcIlJldHVybnMgYSBLZXl3b3JkIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZSBhbmQgbmFtZS4gIERvIG5vdCB1c2UgOlxcbiAgaW4gdGhlIGtleXdvcmQgc3RyaW5ncywgaXQgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5LlwiXG4gKFtuYW1lXVxuICAoY29uZFxuICAgKGtleXdvcmQ/IG5hbWUpXG4gICBuYW1lXG4gICAoc3ltYm9sPyBuYW1lKVxuICAgKEtleXdvcmQuXG4gICAgKGNsanMuY29yZS9uYW1lc3BhY2UgbmFtZSlcbiAgICAoY2xqcy5jb3JlL25hbWUgbmFtZSlcbiAgICAoLi1zdHIgbmFtZSlcbiAgICBuaWwpXG4gICAoPSBcIi9cIiBuYW1lKVxuICAgKEtleXdvcmQuIG5pbCBuYW1lIG5hbWUgbmlsKVxuICAgKHN0cmluZz8gbmFtZSlcbiAgIChsZXRcbiAgICBbcGFydHMgKC5zcGxpdCBuYW1lIFwiL1wiKV1cbiAgICAoaWZcbiAgICAgKD09IChhbGVuZ3RoIHBhcnRzKSAyKVxuICAgICAoS2V5d29yZC4gKGFnZXQgcGFydHMgMCkgKGFnZXQgcGFydHMgMSkgbmFtZSBuaWwpXG4gICAgIChLZXl3b3JkLiBuaWwgKGFnZXQgcGFydHMgMCkgbmFtZSBuaWwpKSkpKVxuIChbbnMgbmFtZV1cbiAgKGxldFxuICAgW25zXG4gICAgKGNvbmRcbiAgICAgKGtleXdvcmQ/IG5zKVxuICAgICAoY2xqcy5jb3JlL25hbWUgbnMpXG4gICAgIChzeW1ib2w/IG5zKVxuICAgICAoY2xqcy5jb3JlL25hbWUgbnMpXG4gICAgIDplbHNlXG4gICAgIG5zKVxuICAgIG5hbWVcbiAgICAoY29uZFxuICAgICAoa2V5d29yZD8gbmFtZSlcbiAgICAgKGNsanMuY29yZS9uYW1lIG5hbWUpXG4gICAgIChzeW1ib2w/IG5hbWUpXG4gICAgIChjbGpzLmNvcmUvbmFtZSBuYW1lKVxuICAgICA6ZWxzZVxuICAgICBuYW1lKV1cbiAgIChLZXl3b3JkLiBucyBuYW1lIChzdHIgKHdoZW4gbnMgKHN0ciBucyBcIi9cIikpIG5hbWUpIG5pbCkpKSlcbiJ9IHs6c3ltICpucyosIDptZXRhIHs6ZG9jICJWYXIgYm91bmQgdG8gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiBPbmx5IHVzZWQgZm9yIGJvb3RzdHJhcHBpbmcuIn0sIDpzb3VyY2UgIihkZWYgKm5zKiBuaWwpXG4ifSB7OnN5bSAqYXNzZXJ0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmFzc2VydCogdHJ1ZSlcbiJ9IHs6c3ltIElDb2xsZWN0aW9uLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0byBhIGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtY29uail9IHs6c3ltIGNoYXJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXJzIFt4XSB4KVxuIn0gezpzeW0gc3RyLCA6bWV0YSB7OmRvYyAiV2l0aCBubyBhcmdzLCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuIFdpdGggb25lIGFyZyB4LCByZXR1cm5zXG4gIHgudG9TdHJpbmcoKS4gIChzdHIgbmlsKSByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuIFdpdGggbW9yZSB0aGFuXG4gIG9uZSBhcmcsIHJldHVybnMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0ciB2YWx1ZXMgb2YgdGhlIGFyZ3MuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggJiB5c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJcbiBcIldpdGggbm8gYXJncywgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLiBXaXRoIG9uZSBhcmcgeCwgcmV0dXJuc1xcbiAgeC50b1N0cmluZygpLiAgKHN0ciBuaWwpIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gV2l0aCBtb3JlIHRoYW5cXG4gIG9uZSBhcmcsIHJldHVybnMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0ciB2YWx1ZXMgb2YgdGhlIGFyZ3MuXCJcbiAoW10gXCJcIilcbiAoW3hdIChpZiAobmlsPyB4KSBcIlwiICguam9pbiAjanMgW3hdIFwiXCIpKSlcbiAoW3ggJiB5c11cbiAgKGxvb3BcbiAgIFtzYiAoU3RyaW5nQnVmZmVyLiAoc3RyIHgpKSBtb3JlIHlzXVxuICAgKGlmXG4gICAgbW9yZVxuICAgIChyZWN1ciAoLiBzYiAoYXBwZW5kIChzdHIgKGZpcnN0IG1vcmUpKSkpIChuZXh0IG1vcmUpKVxuICAgICgudG9TdHJpbmcgc2IpKSkpKVxuIn0gezpzeW0gbmV4dCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xuICBhcmd1bWVudC4gIElmIHRoZXJlIGFyZSBubyBtb3JlIGl0ZW1zLCByZXR1cm5zIG5pbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmV4dFxuIFwiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0LiBDYWxscyBzZXEgb24gaXRzXFxuICBhcmd1bWVudC4gIElmIHRoZXJlIGFyZSBubyBtb3JlIGl0ZW1zLCByZXR1cm5zIG5pbFwiXG4gW2NvbGxdXG4gKHdoZW4tbm90XG4gIChuaWw/IGNvbGwpXG4gIChpZiAoaW1wbGVtZW50cz8gSU5leHQgY29sbCkgKC1uZXh0IGNvbGwpIChzZXEgKHJlc3QgY29sbCkpKSkpXG4ifSB7OnN5bSBBU2VxLCA6bWV0YSB7OmRvYyAiTWFya2VyIHByb3RvY29sIGluZGljYXRpbmcgYW4gYXJyYXkgc2VxdWVuY2UuIn0sIDptZXRob2RzICgpfSB7OnN5bSBwci1zZXEtd3JpdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29ianMgd3JpdGVyIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHItc2VxLXdyaXRlclxuIFtvYmpzIHdyaXRlciBvcHRzXVxuIChwci13cml0ZXIgKGZpcnN0IG9ianMpIHdyaXRlciBvcHRzKVxuIChkb3NlcVxuICBbb2JqIChuZXh0IG9ianMpXVxuICAoLXdyaXRlIHdyaXRlciBcIiBcIilcbiAgKHByLXdyaXRlciBvYmogd3JpdGVyIG9wdHMpKSlcbiJ9IHs6c3ltIElGbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdGhlIGFiaWxpdHkgdG8gaW52b2tlIGFuIG9iamVjdCBhcyBhIGZ1bmN0aW9uLlxuICBGb3IgZXhhbXBsZSwgYSB2ZWN0b3IgY2FuIGFsc28gYmUgdXNlZCB0byBsb29rIHVwIGEgdmFsdWU6XG4gIChbMSAyIDMgNF0gMSkgPT4gMiJ9LCA6bWV0aG9kcyAoLWludm9rZSl9IHs6c3ltIHJlZ2V4cD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgUmVnRXhwIGluc3RhbmNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVnZXhwP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IFJlZ0V4cCBpbnN0YW5jZS5cIlxuIFt4XVxuIChpbnN0YW5jZT8ganMvUmVnRXhwIHgpKVxuIn0gezpzeW0gaGFzaC1tYXAsIDptZXRhIHs6ZG9jICJrZXl2YWwgPT4ga2V5IHZhbFxuICBSZXR1cm5zIGEgbmV3IGhhc2ggbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIChbJiBrZXl2YWxzXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtbWFwXG4gXCJrZXl2YWwgPT4ga2V5IHZhbFxcbiAgUmV0dXJucyBhIG5ldyBoYXNoIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLlwiXG4gWyYga2V5dmFsc11cbiAobG9vcFxuICBbaW4gKHNlcSBrZXl2YWxzKSBvdXQgKHRyYW5zaWVudCAoLi1FTVBUWSBQZXJzaXN0ZW50SGFzaE1hcCkpXVxuICAoaWZcbiAgIGluXG4gICAobGV0XG4gICAgW2luJyAobmV4dCBpbildXG4gICAgKGlmXG4gICAgIChuaWw/IGluJylcbiAgICAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIk5vIHZhbHVlIHN1cHBsaWVkIGZvciBrZXk6IFwiIChmaXJzdCBpbikpKSlcbiAgICAgKHJlY3VyIChuZXh0IGluJykgKGFzc29jISBvdXQgKGZpcnN0IGluKSAoZmlyc3QgaW4nKSkpKSlcbiAgIChwZXJzaXN0ZW50ISBvdXQpKSkpXG4ifSB7OnN5bSAqZXhlYy10YXAtZm4qLCA6bWV0YSB7OmRvYyAiQXJyYW5nZXMgdG8gaGF2ZSB0YXAgZnVuY3Rpb25zIGV4ZWN1dGVkIHZpYSB0aGUgc3VwcGxpZWQgZiwgYVxuICBmdW5jdGlvbiBvZiBubyBhcmd1bWVudHMuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiAqZXhlYy10YXAtZm4qXG4gW2ZdXG4gKGFuZCAoZXhpc3RzPyBqcy9zZXRUaW1lb3V0KSAoYm9vbGVhbiAoanMvc2V0VGltZW91dCBmIDApKSkpXG4ifSB7OnN5bSB1bmRlcml2ZSwgOm1ldGEgezpkb2MgIlJlbW92ZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxuICB0YWcuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZCBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3RcbiAgc3VwcGxpZWQgZGVmYXVsdHMgdG8sIGFuZCBtb2RpZmllcywgdGhlIGdsb2JhbCBoaWVyYXJjaHkuIiwgOmFyZ2xpc3RzIFtbdGFnIHBhcmVudF0gW2ggdGFnIHBhcmVudF1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmRlcml2ZVxuIFwiUmVtb3ZlcyBhIHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJlbnQgYW5kXFxuICB0YWcuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZCBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3RcXG4gIHN1cHBsaWVkIGRlZmF1bHRzIHRvLCBhbmQgbW9kaWZpZXMsIHRoZSBnbG9iYWwgaGllcmFyY2h5LlwiXG4gKFt0YWcgcGFyZW50XSAoc3dhcC1nbG9iYWwtaGllcmFyY2h5ISB1bmRlcml2ZSB0YWcgcGFyZW50KSBuaWwpXG4gKFtoIHRhZyBwYXJlbnRdXG4gIChsZXRcbiAgIFtwYXJlbnRNYXBcbiAgICAoOnBhcmVudHMgaClcbiAgICBjaGlsZHNQYXJlbnRzXG4gICAgKGlmIChwYXJlbnRNYXAgdGFnKSAoZGlzaiAocGFyZW50TWFwIHRhZykgcGFyZW50KSAje30pXG4gICAgbmV3UGFyZW50c1xuICAgIChpZlxuICAgICAobm90LWVtcHR5IGNoaWxkc1BhcmVudHMpXG4gICAgIChhc3NvYyBwYXJlbnRNYXAgdGFnIGNoaWxkc1BhcmVudHMpXG4gICAgIChkaXNzb2MgcGFyZW50TWFwIHRhZykpXG4gICAgZGVyaXYtc2VxXG4gICAgKGZsYXR0ZW5cbiAgICAgKG1hcFxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDU0NDQjXVxuICAgICAgIChjb25zXG4gICAgICAgIChmaXJzdCBwMV9fNDU0NDQjKVxuICAgICAgICAoaW50ZXJwb3NlIChmaXJzdCBwMV9fNDU0NDQjKSAoc2Vjb25kIHAxX180NTQ0NCMpKSkpXG4gICAgICAoc2VxIG5ld1BhcmVudHMpKSldXG4gICAoaWZcbiAgICAoY29udGFpbnM/IChwYXJlbnRNYXAgdGFnKSBwYXJlbnQpXG4gICAgKHJlZHVjZVxuICAgICAoZm4qIFtwMV9fNDU0NDUjIHAyX180NTQ0NiNdIChhcHBseSBkZXJpdmUgcDFfXzQ1NDQ1IyBwMl9fNDU0NDYjKSlcbiAgICAgKG1ha2UtaGllcmFyY2h5KVxuICAgICAocGFydGl0aW9uIDIgZGVyaXYtc2VxKSlcbiAgICBoKSkpKVxuIn0gezpzeW0gLXJlc2V0ISwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIG9mIG8gdG8gbmV3LXZhbHVlLiIsIDphcmdsaXN0cyAoW28gbmV3LXZhbHVlXSl9LCA6cHJvdG9jb2wgSVJlc2V0fSB7OnN5bSAtcmVzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGhvdXQgdGhlIGZpcnN0IGl0ZW0uIEl0IHNob3VsZFxuICAgICBhbHdheXMgcmV0dXJuIGEgc2VxLCBlLmcuXG4gICAgIChyZXN0IFtdKSA9PiAoKVxuICAgICAocmVzdCBuaWwpID0+ICgpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTZXF9IHs6c3ltIC0tZGVzdHJ1Y3R1cmUtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gLS1kZXN0cnVjdHVyZS1tYXBcbiBbeF1cbiAoaWYgKGltcGxlbWVudHM/IElTZXEgeCkgKGFwcGx5IGNsanMuY29yZS9oYXNoLW1hcCB4KSB4KSlcbiJ9IHs6c3ltIG5pbC1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBuaWwtaXRlclxuIFtdXG4gKHJlaWZ5XG4gIE9iamVjdFxuICAoaGFzTmV4dCBbX10gZmFsc2UpXG4gIChuZXh0IFtfXSAoanMvRXJyb3IuIFwiTm8gc3VjaCBlbGVtZW50XCIpKVxuICAocmVtb3ZlIFtfXSAoanMvRXJyb3IuIFwiVW5zdXBwb3J0ZWQgb3BlcmF0aW9uXCIpKSkpXG4ifSB7OnN5bSBmYWxzZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyB0aGUgdmFsdWUgZmFsc2UsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGZhbHNlP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuXCJcbiBbeF1cbiAoY2xqcy5jb3JlL2ZhbHNlPyB4KSlcbiJ9IHs6c3ltICpwcmludC1yZWFkYWJseSosIDptZXRhIHs6ZG9jICJXaGVuIHNldCB0byBsb2dpY2FsIGZhbHNlLCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzIHdpbGwgYmUgcHJpbnRlZCB3aXRoXG4gIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gdGhlIGFwcHJvcHJpYXRlIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbiAgRGVmYXVsdHMgdG8gdHJ1ZSJ9LCA6c291cmNlICIoZGVmICpwcmludC1yZWFkYWJseSogdHJ1ZSlcbiJ9IHs6c3ltIGludHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gaW50cyBbeF0geClcbiJ9IHs6c3ltIHNvbWUtZm4sIDptZXRhIHs6ZG9jICJUYWtlcyBhIHNldCBvZiBwcmVkaWNhdGVzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gZiB0aGF0IHJldHVybnMgdGhlIGZpcnN0IGxvZ2ljYWwgdHJ1ZSB2YWx1ZVxuICByZXR1cm5lZCBieSBvbmUgb2YgaXRzIGNvbXBvc2luZyBwcmVkaWNhdGVzIGFnYWluc3QgYW55IG9mIGl0cyBhcmd1bWVudHMsIGVsc2UgaXQgcmV0dXJuc1xuICBsb2dpY2FsIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcbiAgYXJndW1lbnQgdGhhdCB0cmlnZ2VycyBhIGxvZ2ljYWwgdHJ1ZSByZXN1bHQgYWdhaW5zdCB0aGUgb3JpZ2luYWwgcHJlZGljYXRlcy4iLCA6YXJnbGlzdHMgW1twXSBbcDEgcDJdIFtwMSBwMiBwM10gW3AxIHAyIHAzICYgcHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29tZS1mblxuIFwiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWVcXG4gIHJldHVybmVkIGJ5IG9uZSBvZiBpdHMgY29tcG9zaW5nIHByZWRpY2F0ZXMgYWdhaW5zdCBhbnkgb2YgaXRzIGFyZ3VtZW50cywgZWxzZSBpdCByZXR1cm5zXFxuICBsb2dpY2FsIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcXG4gIGFyZ3VtZW50IHRoYXQgdHJpZ2dlcnMgYSBsb2dpY2FsIHRydWUgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuXCJcbiAoW3BdXG4gIChmblxuICAgc3AxXG4gICAoW10gbmlsKVxuICAgKFt4XSAocCB4KSlcbiAgIChbeCB5XSAob3IgKHAgeCkgKHAgeSkpKVxuICAgKFt4IHkgel0gKG9yIChwIHgpIChwIHkpIChwIHopKSlcbiAgIChbeCB5IHogJiBhcmdzXSAob3IgKHNwMSB4IHkgeikgKHNvbWUgcCBhcmdzKSkpKSlcbiAoW3AxIHAyXVxuICAoZm5cbiAgIHNwMlxuICAgKFtdIG5pbClcbiAgIChbeF0gKG9yIChwMSB4KSAocDIgeCkpKVxuICAgKFt4IHldIChvciAocDEgeCkgKHAxIHkpIChwMiB4KSAocDIgeSkpKVxuICAgKFt4IHkgel0gKG9yIChwMSB4KSAocDEgeSkgKHAxIHopIChwMiB4KSAocDIgeSkgKHAyIHopKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgIChvclxuICAgICAoc3AyIHggeSB6KVxuICAgICAoc29tZVxuICAgICAgKGZuKiBbcDFfXzQ1NDA2I10gKG9yIChwMSBwMV9fNDU0MDYjKSAocDIgcDFfXzQ1NDA2IykpKVxuICAgICAgYXJncykpKSkpXG4gKFtwMSBwMiBwM11cbiAgKGZuXG4gICBzcDNcbiAgIChbXSBuaWwpXG4gICAoW3hdIChvciAocDEgeCkgKHAyIHgpIChwMyB4KSkpXG4gICAoW3ggeV0gKG9yIChwMSB4KSAocDIgeCkgKHAzIHgpIChwMSB5KSAocDIgeSkgKHAzIHkpKSlcbiAgIChbeCB5IHpdXG4gICAgKG9yXG4gICAgIChwMSB4KVxuICAgICAocDIgeClcbiAgICAgKHAzIHgpXG4gICAgIChwMSB5KVxuICAgICAocDIgeSlcbiAgICAgKHAzIHkpXG4gICAgIChwMSB6KVxuICAgICAocDIgeilcbiAgICAgKHAzIHopKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgIChvclxuICAgICAoc3AzIHggeSB6KVxuICAgICAoc29tZVxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDU0MDcjXVxuICAgICAgIChvciAocDEgcDFfXzQ1NDA3IykgKHAyIHAxX180NTQwNyMpIChwMyBwMV9fNDU0MDcjKSkpXG4gICAgICBhcmdzKSkpKSlcbiAoW3AxIHAyIHAzICYgcHNdXG4gIChsZXRcbiAgIFtwcyAobGlzdCogcDEgcDIgcDMgcHMpXVxuICAgKGZuXG4gICAgc3BuXG4gICAgKFtdIG5pbClcbiAgICAoW3hdIChzb21lIChmbiogW3AxX180NTQwOCNdIChwMV9fNDU0MDgjIHgpKSBwcykpXG4gICAgKFt4IHldXG4gICAgIChzb21lIChmbiogW3AxX180NTQwOSNdIChvciAocDFfXzQ1NDA5IyB4KSAocDFfXzQ1NDA5IyB5KSkpIHBzKSlcbiAgICAoW3ggeSB6XVxuICAgICAoc29tZVxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDU0MTAjXVxuICAgICAgIChvciAocDFfXzQ1NDEwIyB4KSAocDFfXzQ1NDEwIyB5KSAocDFfXzQ1NDEwIyB6KSkpXG4gICAgICBwcykpXG4gICAgKFt4IHkgeiAmIGFyZ3NdXG4gICAgIChvclxuICAgICAgKHNwbiB4IHkgeilcbiAgICAgIChzb21lIChmbiogW3AxX180NTQxMSNdIChzb21lIHAxX180NTQxMSMgYXJncykpIHBzKSkpKSkpKVxuIn0gezpzeW0gKmZsdXNoLW9uLW5ld2xpbmUqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gdHJ1ZSwgb3V0cHV0IHdpbGwgYmUgZmx1c2hlZCB3aGVuZXZlciBhIG5ld2xpbmUgaXMgcHJpbnRlZC5cblxuICBEZWZhdWx0cyB0byB0cnVlLiJ9LCA6c291cmNlICIoZGVmICpmbHVzaC1vbi1uZXdsaW5lKiB0cnVlKVxuIn0gezpzeW0gdG8tYXJyYXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0by1hcnJheVxuIFwiUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLlwiXG4gW2NvbGxdXG4gKGxldFxuICBbYXJ5IChhcnJheSldXG4gIChsb29wXG4gICBbcyAoc2VxIGNvbGwpXVxuICAgKGlmLW5vdCAobmlsPyBzKSAoZG8gKC4gYXJ5IHB1c2ggKGZpcnN0IHMpKSAocmVjdXIgKG5leHQgcykpKSBhcnkpKSkpXG4ifSB7OnN5bSBsaXN0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUxpc3QiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGxpc3Q/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpbXBsZW1lbnRzIElMaXN0XCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJTGlzdCB4KSlcbiJ9IHs6c3ltIGFycmF5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBhcnJheS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5P1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IGFycmF5LlwiXG4gW3hdXG4gKGlmXG4gIChpZGVudGljYWw/ICp0YXJnZXQqIFwibm9kZWpzXCIpXG4gICguaXNBcnJheSBqcy9BcnJheSB4KVxuICAoaW5zdGFuY2U/IGpzL0FycmF5IHgpKSlcbiJ9IHs6c3ltIHNpbXBsZS1pZGVudD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQgd2l0aG91dCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2ltcGxlLWlkZW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChhbmQgKGlkZW50PyB4KSAobmlsPyAobmFtZXNwYWNlIHgpKSkpXG4ifSB7OnN5bSBjbG9uZSwgOm1ldGEgezpkb2MgIkNsb25lIHRoZSBzdXBwbGllZCB2YWx1ZSB3aGljaCBtdXN0IGltcGxlbWVudCBJQ2xvbmVhYmxlLiIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGNsb25lXG4gXCJDbG9uZSB0aGUgc3VwcGxpZWQgdmFsdWUgd2hpY2ggbXVzdCBpbXBsZW1lbnQgSUNsb25lYWJsZS5cIlxuIFt2YWx1ZV1cbiAoLWNsb25lIHZhbHVlKSlcbiJ9IHs6c3ltIGRlbXVuZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZW11bmdlXG4gW25hbWVdXG4gKChpZiAoc3ltYm9sPyBuYW1lKSBzeW1ib2wgc3RyKVxuICAobGV0XG4gICBbbmFtZScgKHN0ciBuYW1lKV1cbiAgIChpZiAoaWRlbnRpY2FsPyBuYW1lJyBcIl9ET1RfX0RPVF9cIikgXCIuLlwiIChkZW11bmdlLXN0ciBuYW1lJykpKSkpXG4ifSB7OnN5bSBiaXQtbm90LCA6bWV0YSB7OmRvYyAiQml0d2lzZSBjb21wbGVtZW50IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYml0LW5vdCBcIkJpdHdpc2UgY29tcGxlbWVudFwiIFt4XSAoY2xqcy5jb3JlL2JpdC1ub3QgeCkpXG4ifSB7OnN5bSBieXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJ5dGUgW3hdIHgpXG4ifSB7OnN5bSBtYXgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBncmVhdGVzdCBvZiB0aGUgbnVtcy4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXhcbiBcIlJldHVybnMgdGhlIGdyZWF0ZXN0IG9mIHRoZSBudW1zLlwiXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlL21heCB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBtYXggKGNsanMuY29yZS9tYXggeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBJQ29tcGFyYWJsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB2YWx1ZXMgdGhhdCBjYW4gYmUgY29tcGFyZWQuIn0sIDptZXRob2RzICgtY29tcGFyZSl9IHs6c3ltID09LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYWxsIGhhdmUgdGhlIGVxdWl2YWxlbnRcbiAgdmFsdWUsIG90aGVyd2lzZSBmYWxzZS4gQmVoYXZpb3Igb24gbm9uIG51bXMgaXNcbiAgdW5kZWZpbmVkLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuID09XG4gXCJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhbGwgaGF2ZSB0aGUgZXF1aXZhbGVudFxcbiAgdmFsdWUsIG90aGVyd2lzZSBmYWxzZS4gQmVoYXZpb3Igb24gbm9uIG51bXMgaXNcXG4gIHVuZGVmaW5lZC5cIlxuIChbeF0gdHJ1ZSlcbiAoW3ggeV0gKC1lcXVpdiB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKGlmXG4gICAoPT0geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKD09IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBwYXJlbnRzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaW1tZWRpYXRlIHBhcmVudHMgb2YgdGFnLCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlXG4gIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXG4gIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgaGllcmFyY2h5IiwgOmFyZ2xpc3RzIFtbdGFnXSBbaCB0YWddXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyZW50c1xuIFwiUmV0dXJucyB0aGUgaW1tZWRpYXRlIHBhcmVudHMgb2YgdGFnLCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlXFxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxcbiAgbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZCBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWRcXG4gIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgaGllcmFyY2h5XCJcbiAoW3RhZ10gKHBhcmVudHMgQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgdGFnKSlcbiAoW2ggdGFnXSAobm90LWVtcHR5IChnZXQgKDpwYXJlbnRzIGgpIHRhZykpKSlcbiJ9IHs6c3ltIGNvdW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiAoY291bnQgbmlsKSByZXR1cm5zXG4gIDAuICBBbHNvIHdvcmtzIG9uIHN0cmluZ3MsIGFycmF5cywgYW5kIE1hcHMiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGNvdW50XG4gXCJSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uIChjb3VudCBuaWwpIHJldHVybnNcXG4gIDAuICBBbHNvIHdvcmtzIG9uIHN0cmluZ3MsIGFycmF5cywgYW5kIE1hcHNcIlxuIFtjb2xsXVxuIChpZi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGNvbmRcbiAgIChpbXBsZW1lbnRzPyBJQ291bnRlZCBjb2xsKVxuICAgKC1jb3VudCBjb2xsKVxuICAgKGFycmF5PyBjb2xsKVxuICAgKGFsZW5ndGggY29sbClcbiAgIChzdHJpbmc/IGNvbGwpXG4gICAoLi1sZW5ndGggY29sbClcbiAgIChpbXBsZW1lbnRzPyBJU2VxYWJsZSBjb2xsKVxuICAgKGFjY3VtdWxhdGluZy1zZXEtY291bnQgY29sbClcbiAgIDplbHNlXG4gICAoLWNvdW50IGNvbGwpKVxuICAwKSlcbiJ9IHs6c3ltIC1kaXNqb2luISwgOm1ldGEgezpkb2MgIlJldHVybnMgdGNvbGwgd2l0aG91dCB2LiIsIDphcmdsaXN0cyAoW3Rjb2xsIHZdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50U2V0fSB7OnN5bSAqbG9hZGVkLWxpYnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZm9uY2UgKmxvYWRlZC1saWJzKiBuaWwpXG4ifSB7OnN5bSBzb3J0ZWQtbWFwLWJ5LCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MsIHVzaW5nIHRoZSBzdXBwbGllZCBjb21wYXJhdG9yLiIsIDphcmdsaXN0cyBbW2NvbXBhcmF0b3IgJiBrZXl2YWxzXV19LCA6c291cmNlICIoZGVmblxuIHNvcnRlZC1tYXAtYnlcbiBcImtleXZhbCA9PiBrZXkgdmFsXFxuICBSZXR1cm5zIGEgbmV3IHNvcnRlZCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncywgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbXBhcmF0b3IuXCJcbiAoW2NvbXBhcmF0b3IgJiBrZXl2YWxzXVxuICAobG9vcFxuICAgW2luXG4gICAgKHNlcSBrZXl2YWxzKVxuICAgIG91dFxuICAgIChQZXJzaXN0ZW50VHJlZU1hcC4gKGZuLT5jb21wYXJhdG9yIGNvbXBhcmF0b3IpIG5pbCAwIG5pbCAwKV1cbiAgIChpZiBpbiAocmVjdXIgKG5uZXh0IGluKSAoYXNzb2Mgb3V0IChmaXJzdCBpbikgKHNlY29uZCBpbikpKSBvdXQpKSkpXG4ifSB7OnN5bSBhcHBseSwgOm1ldGEgezpkb2MgIkFwcGxpZXMgZm4gZiB0byB0aGUgYXJndW1lbnQgbGlzdCBmb3JtZWQgYnkgcHJlcGVuZGluZyBpbnRlcnZlbmluZyBhcmd1bWVudHMgdG8gYXJncy4iLCA6YXJnbGlzdHMgW1tmIGFyZ3NdIFtmIHggYXJnc10gW2YgeCB5IGFyZ3NdIFtmIHggeSB6IGFyZ3NdIFtmIGEgYiBjIGQgJiBhcmdzXV19LCA6c291cmNlICIoZGVmblxuIGFwcGx5XG4gXCJBcHBsaWVzIGZuIGYgdG8gdGhlIGFyZ3VtZW50IGxpc3QgZm9ybWVkIGJ5IHByZXBlbmRpbmcgaW50ZXJ2ZW5pbmcgYXJndW1lbnRzIHRvIGFyZ3MuXCJcbiAoW2YgYXJnc11cbiAgKGlmXG4gICAoLi1jbGpzJGxhbmckYXBwbHlUbyBmKVxuICAgKGxldFxuICAgIFtmaXhlZC1hcml0eVxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxuICAgICBiY1xuICAgICAoYm91bmRlZC1jb3VudCAoaW5jIGZpeGVkLWFyaXR5KSBhcmdzKV1cbiAgICAoaWZcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdzKVxuICAgICAoLmNsanMkbGFuZyRhcHBseVRvIGYgYXJncykpKVxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIChzZXEgYXJncykpKSlcbiAoW2YgeCBhcmdzXVxuICAoaWZcbiAgICguLWNsanMkbGFuZyRhcHBseVRvIGYpXG4gICAobGV0XG4gICAgW2FyZ2xpc3RcbiAgICAgKGxpc3QqIHggYXJncylcbiAgICAgZml4ZWQtYXJpdHlcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcbiAgICAgYmNcbiAgICAgKGluYyAoYm91bmRlZC1jb3VudCBmaXhlZC1hcml0eSBhcmdzKSldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJnbGlzdClcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ2xpc3QpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiB4IChzZXEgYXJncykpKSlcbiAoW2YgeCB5IGFyZ3NdXG4gIChpZlxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcbiAgIChsZXRcbiAgICBbYXJnbGlzdFxuICAgICAobGlzdCogeCB5IGFyZ3MpXG4gICAgIGZpeGVkLWFyaXR5XG4gICAgICguLWNsanMkbGFuZyRtYXhGaXhlZEFyaXR5IGYpXG4gICAgIGJjXG4gICAgICgrIDIgKGJvdW5kZWQtY291bnQgKGRlYyBmaXhlZC1hcml0eSkgYXJncykpXVxuICAgIChpZlxuICAgICAoPD0gYmMgZml4ZWQtYXJpdHkpXG4gICAgIChhcHBseS10byBmIGJjIGFyZ2xpc3QpXG4gICAgICguY2xqcyRsYW5nJGFwcGx5VG8gZiBhcmdsaXN0KSkpXG4gICAoYXBwbHktdG8tc2ltcGxlIGYgeCB5IChzZXEgYXJncykpKSlcbiAoW2YgeCB5IHogYXJnc11cbiAgKGlmXG4gICAoLi1jbGpzJGxhbmckYXBwbHlUbyBmKVxuICAgKGxldFxuICAgIFthcmdsaXN0XG4gICAgIChsaXN0KiB4IHkgeiBhcmdzKVxuICAgICBmaXhlZC1hcml0eVxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxuICAgICBiY1xuICAgICAoKyAzIChib3VuZGVkLWNvdW50ICgtIGZpeGVkLWFyaXR5IDIpIGFyZ3MpKV1cbiAgICAoaWZcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdsaXN0KVxuICAgICAoLmNsanMkbGFuZyRhcHBseVRvIGYgYXJnbGlzdCkpKVxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIHggeSB6IChzZXEgYXJncykpKSlcbiAoW2YgYSBiIGMgZCAmIGFyZ3NdXG4gIChpZlxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcbiAgIChsZXRcbiAgICBbc3ByZWFkLWFyZ3NcbiAgICAgKHNwcmVhZCBhcmdzKVxuICAgICBhcmdsaXN0XG4gICAgIChjb25zIGEgKGNvbnMgYiAoY29ucyBjIChjb25zIGQgc3ByZWFkLWFyZ3MpKSkpXG4gICAgIGZpeGVkLWFyaXR5XG4gICAgICguLWNsanMkbGFuZyRtYXhGaXhlZEFyaXR5IGYpXG4gICAgIGJjXG4gICAgICgrIDQgKGJvdW5kZWQtY291bnQgKC0gZml4ZWQtYXJpdHkgMykgc3ByZWFkLWFyZ3MpKV1cbiAgICAoaWZcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdsaXN0KVxuICAgICAoLmNsanMkbGFuZyRhcHBseVRvIGYgYXJnbGlzdCkpKVxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIGEgYiBjIGQgKHNwcmVhZCBhcmdzKSkpKSlcbiJ9IHs6c3ltIGFkZC10by1zdHJpbmctaGFzaC1jYWNoZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC10by1zdHJpbmctaGFzaC1jYWNoZVxuIFtrXVxuIChsZXRcbiAgW2ggKGhhc2gtc3RyaW5nKiBrKV1cbiAgKGdvYmplY3Qvc2V0IHN0cmluZy1oYXNoLWNhY2hlIGsgaClcbiAgKHNldCEgc3RyaW5nLWhhc2gtY2FjaGUtY291bnQgKGluYyBzdHJpbmctaGFzaC1jYWNoZS1jb3VudCkpXG4gIGgpKVxuIn0gezpzeW0gY2xqLT5qcywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgQ2xvanVyZVNjcmlwdCB2YWx1ZXMgdG8gSmF2YVNjcmlwdC5cbiAgc2V0cy92ZWN0b3JzL2xpc3RzIGJlY29tZSBBcnJheXMsIEtleXdvcmRzIGFuZCBTeW1ib2wgYmVjb21lIFN0cmluZ3MsXG4gIE1hcHMgYmVjb21lIE9iamVjdHMuIEFyYml0cmFyeSBrZXlzIGFyZSBlbmNvZGVkIHRvIGJ5IGBrZXktPmpzYC5cbiAgT3B0aW9ucyBpcyBhIGtleS12YWx1ZSBwYWlyLCB3aGVyZSB0aGUgb25seSB2YWxpZCBrZXkgaXNcbiAgOmtleXdvcmQtZm4sIHdoaWNoIHNob3VsZCBwb2ludCB0byBhIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbiB0byBiZVxuICBjYWxsZWQgb24ga2V5d29yZCBrZXlzLiBEZWZhdWx0IHRvIGBuYW1lYC4iLCA6YXJnbGlzdHMgKFt4ICYgezprZXlzIFtrZXl3b3JkLWZuXSwgOm9yIHtrZXl3b3JkLWZuIG5hbWV9LCA6YXMgb3B0aW9uc31dKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqLT5qc1xuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBDbG9qdXJlU2NyaXB0IHZhbHVlcyB0byBKYXZhU2NyaXB0LlxcbiAgc2V0cy92ZWN0b3JzL2xpc3RzIGJlY29tZSBBcnJheXMsIEtleXdvcmRzIGFuZCBTeW1ib2wgYmVjb21lIFN0cmluZ3MsXFxuICBNYXBzIGJlY29tZSBPYmplY3RzLiBBcmJpdHJhcnkga2V5cyBhcmUgZW5jb2RlZCB0byBieSBga2V5LT5qc2AuXFxuICBPcHRpb25zIGlzIGEga2V5LXZhbHVlIHBhaXIsIHdoZXJlIHRoZSBvbmx5IHZhbGlkIGtleSBpc1xcbiAgOmtleXdvcmQtZm4sIHdoaWNoIHNob3VsZCBwb2ludCB0byBhIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbiB0byBiZVxcbiAgY2FsbGVkIG9uIGtleXdvcmQga2V5cy4gRGVmYXVsdCB0byBgbmFtZWAuXCJcbiBbeCAmIHs6a2V5cyBba2V5d29yZC1mbl0sIDpvciB7a2V5d29yZC1mbiBuYW1lfSwgOmFzIG9wdGlvbnN9XVxuIChsZXRmblxuICBbKGtleWZuIFtrXSAoa2V5LT5qcyBrIHRoaXNmbikpXG4gICAodGhpc2ZuXG4gICAgW3hdXG4gICAgKGNvbmRcbiAgICAgKG5pbD8geClcbiAgICAgbmlsXG4gICAgIChzYXRpc2ZpZXM/IElFbmNvZGVKUyB4KVxuICAgICAoLWNsai0+anMgeClcbiAgICAgKGtleXdvcmQ/IHgpXG4gICAgIChrZXl3b3JkLWZuIHgpXG4gICAgIChzeW1ib2w/IHgpXG4gICAgIChzdHIgeClcbiAgICAgKG1hcD8geClcbiAgICAgKGxldFxuICAgICAgW20gKGpzLW9iaildXG4gICAgICAoZG9zZXEgW1trIHZdIHhdIChnb2JqZWN0L3NldCBtIChrZXlmbiBrKSAodGhpc2ZuIHYpKSlcbiAgICAgIG0pXG4gICAgIChjb2xsPyB4KVxuICAgICAobGV0IFthcnIgKGFycmF5KV0gKGRvc2VxIFt4IChtYXAgdGhpc2ZuIHgpXSAoLnB1c2ggYXJyIHgpKSBhcnIpXG4gICAgIDplbHNlXG4gICAgIHgpKV1cbiAgKHRoaXNmbiB4KSkpXG4ifSB7OnN5bSBJQ2h1bmtlZE5leHQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWNjZXNzaW5nIHRoZSBjaHVua3Mgb2YgYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWNodW5rZWQtbmV4dCl9IHs6c3ltIGludGVycG9zZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCBzZXBhcmF0ZWQgYnkgc2VwLlxuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbc2VwXSBbc2VwIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW50ZXJwb3NlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwgc2VwYXJhdGVkIGJ5IHNlcC5cXG4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbc2VwXVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbc3RhcnRlZCAodm9sYXRpbGUhIGZhbHNlKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAoaWZcbiAgICAgICBAc3RhcnRlZFxuICAgICAgIChsZXRcbiAgICAgICAgW3NlcHIgKHJmIHJlc3VsdCBzZXApXVxuICAgICAgICAoaWYgKHJlZHVjZWQ/IHNlcHIpIHNlcHIgKHJmIHNlcHIgaW5wdXQpKSlcbiAgICAgICAoZG8gKHZyZXNldCEgc3RhcnRlZCB0cnVlKSAocmYgcmVzdWx0IGlucHV0KSkpKSkpKSlcbiAoW3NlcCBjb2xsXSAoZHJvcCAxIChpbnRlcmxlYXZlIChyZXBlYXQgc2VwKSBjb2xsKSkpKVxuIn0gezpzeW0gZGVyZWYsIDptZXRhIHs6ZG9jICJBbHNvIHJlYWRlciBtYWNybzogQHZhci9AYXRvbS9AZGVsYXkuIFJldHVybnMgdGhlXG4gICBtb3N0LXJlY2VudGx5LWNvbW1pdHRlZCB2YWx1ZSBvZiByZWYuIFdoZW4gYXBwbGllZCB0byBhIHZhclxuICAgb3IgYXRvbSwgcmV0dXJucyBpdHMgY3VycmVudCBzdGF0ZS4gV2hlbiBhcHBsaWVkIHRvIGEgZGVsYXksIGZvcmNlc1xuICAgaXQgaWYgbm90IGFscmVhZHkgZm9yY2VkLiBTZWUgYWxzbyAtIHJlYWxpemVkPy4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmblxuIGRlcmVmXG4gXCJBbHNvIHJlYWRlciBtYWNybzogQHZhci9AYXRvbS9AZGVsYXkuIFJldHVybnMgdGhlXFxuICAgbW9zdC1yZWNlbnRseS1jb21taXR0ZWQgdmFsdWUgb2YgcmVmLiBXaGVuIGFwcGxpZWQgdG8gYSB2YXJcXG4gICBvciBhdG9tLCByZXR1cm5zIGl0cyBjdXJyZW50IHN0YXRlLiBXaGVuIGFwcGxpZWQgdG8gYSBkZWxheSwgZm9yY2VzXFxuICAgaXQgaWYgbm90IGFscmVhZHkgZm9yY2VkLiBTZWUgYWxzbyAtIHJlYWxpemVkPy5cIlxuIFtvXVxuICgtZGVyZWYgbykpXG4ifSB7OnN5bSBhc3NvYywgOm1ldGEgezpkb2MgImFzc29jW2lhdGVdLiBXaGVuIGFwcGxpZWQgdG8gYSBtYXAsIHJldHVybnMgYSBuZXcgbWFwIG9mIHRoZVxuICAgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdCBjb250YWlucyB0aGUgbWFwcGluZyBvZiBrZXkocykgdG9cbiAgIHZhbChzKS4gV2hlbiBhcHBsaWVkIHRvIGEgdmVjdG9yLCByZXR1cm5zIGEgbmV3IHZlY3RvciB0aGF0XG4gICBjb250YWlucyB2YWwgYXQgaW5kZXguIE5vdGUgLSBpbmRleCBtdXN0IGJlIDw9IChjb3VudCB2ZWN0b3IpLiIsIDphcmdsaXN0cyBbW2NvbGwgayB2XSBbY29sbCBrIHYgJiBrdnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYXNzb2NcbiBcImFzc29jW2lhdGVdLiBXaGVuIGFwcGxpZWQgdG8gYSBtYXAsIHJldHVybnMgYSBuZXcgbWFwIG9mIHRoZVxcbiAgIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXQgY29udGFpbnMgdGhlIG1hcHBpbmcgb2Yga2V5KHMpIHRvXFxuICAgdmFsKHMpLiBXaGVuIGFwcGxpZWQgdG8gYSB2ZWN0b3IsIHJldHVybnMgYSBuZXcgdmVjdG9yIHRoYXRcXG4gICBjb250YWlucyB2YWwgYXQgaW5kZXguIE5vdGUgLSBpbmRleCBtdXN0IGJlIDw9IChjb3VudCB2ZWN0b3IpLlwiXG4gKFtjb2xsIGsgdl1cbiAgKGlmXG4gICAoaW1wbGVtZW50cz8gSUFzc29jaWF0aXZlIGNvbGwpXG4gICAoLWFzc29jIGNvbGwgayB2KVxuICAgKGlmLW5vdCAobmlsPyBjb2xsKSAoLWFzc29jIGNvbGwgayB2KSAoYXJyYXktbWFwIGsgdikpKSlcbiAoW2NvbGwgayB2ICYga3ZzXVxuICAobGV0XG4gICBbcmV0IChhc3NvYyBjb2xsIGsgdildXG4gICAoaWYga3ZzIChyZWN1ciByZXQgKGZpcnN0IGt2cykgKHNlY29uZCBrdnMpIChubmV4dCBrdnMpKSByZXQpKSkpXG4ifSB7OnN5bSB0cmFuc2llbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3LCB0cmFuc2llbnQgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbiwgaW4gY29uc3RhbnQgdGltZS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zaWVudFxuIFwiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuXCJcbiBbY29sbF1cbiAoLWFzLXRyYW5zaWVudCBjb2xsKSlcbiJ9IHs6c3ltIC1kaXNqb2luLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgdGhhdCBkb2VzIG5vdCBjb250YWluIHYuIiwgOmFyZ2xpc3RzIChbY29sbCB2XSl9LCA6cHJvdG9jb2wgSVNldH0gezpzeW0gY2h1bmstY29ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaHVuayByZXN0XSl9LCA6c291cmNlICIoZGVmblxuIGNodW5rLWNvbnNcbiBbY2h1bmsgcmVzdF1cbiAoaWYgKHplcm8/ICgtY291bnQgY2h1bmspKSByZXN0IChDaHVua2VkQ29ucy4gY2h1bmsgcmVzdCBuaWwgbmlsKSkpXG4ifSB7OnN5bSBjb21wYXJhdG9yLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBKYXZhU2NyaXB0IGNvbXBhdGlibGUgY29tcGFyYXRvciBiYXNlZCB1cG9uIHByZWQuIiwgOmFyZ2xpc3RzIChbcHJlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJhdG9yXG4gXCJSZXR1cm5zIGFuIEphdmFTY3JpcHQgY29tcGF0aWJsZSBjb21wYXJhdG9yIGJhc2VkIHVwb24gcHJlZC5cIlxuIFtwcmVkXVxuIChmbiBbeCB5XSAoY29uZCAocHJlZCB4IHkpIC0xIChwcmVkIHkgeCkgMSA6ZWxzZSAwKSkpXG4ifSB7OnN5bSBwcmludC1wcmVmaXgtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ByZWZpeCBtIHByaW50LW9uZSB3cml0ZXIgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1wcmVmaXgtbWFwXG4gW3ByZWZpeCBtIHByaW50LW9uZSB3cml0ZXIgb3B0c11cbiAocHItc2VxdWVudGlhbC13cml0ZXJcbiAgd3JpdGVyXG4gIChmblxuICAgW2UgdyBvcHRzXVxuICAgKGRvXG4gICAgKHByaW50LW9uZSAoa2V5IGUpIHcgb3B0cylcbiAgICAoLXdyaXRlIHcgXFxzcGFjZSlcbiAgICAocHJpbnQtb25lICh2YWwgZSkgdyBvcHRzKSkpXG4gIChzdHIgcHJlZml4IFwie1wiKVxuICBcIiwgXCJcbiAgXCJ9XCJcbiAgb3B0c1xuICAoc2VxIG0pKSlcbiJ9IHs6c3ltIHNvcnRlZC1tYXAsIDptZXRhIHs6ZG9jICJrZXl2YWwgPT4ga2V5IHZhbFxuICBSZXR1cm5zIGEgbmV3IHNvcnRlZCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy4iLCA6YXJnbGlzdHMgW1smIGtleXZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydGVkLW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgc29ydGVkIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLlwiXG4gKFsmIGtleXZhbHNdXG4gIChsb29wXG4gICBbaW4gKHNlcSBrZXl2YWxzKSBvdXQgKC4tRU1QVFkgUGVyc2lzdGVudFRyZWVNYXApXVxuICAgKGlmIGluIChyZWN1ciAobm5leHQgaW4pIChhc3NvYyBvdXQgKGZpcnN0IGluKSAoc2Vjb25kIGluKSkpIG91dCkpKSlcbiJ9IHs6c3ltIGRyb3Atd2hpbGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBzdGFydGluZyBmcm9tIHRoZVxuICBmaXJzdCBpdGVtIGZvciB3aGljaCAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgZmFsc2UuICBSZXR1cm5zIGFcbiAgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkcm9wLXdoaWxlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBzdGFydGluZyBmcm9tIHRoZVxcbiAgZmlyc3QgaXRlbSBmb3Igd2hpY2ggKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIGZhbHNlLiAgUmV0dXJucyBhXFxuICBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbcHJlZF1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2RhICh2b2xhdGlsZSEgdHJ1ZSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGxldFxuICAgICAgIFtkcm9wPyBAZGFdXG4gICAgICAgKGlmXG4gICAgICAgIChhbmQgZHJvcD8gKHByZWQgaW5wdXQpKVxuICAgICAgICByZXN1bHRcbiAgICAgICAgKGRvICh2cmVzZXQhIGRhIG5pbCkgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpKVxuIChbcHJlZCBjb2xsXVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBbcHJlZCBjb2xsXVxuICAgICAobGV0XG4gICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAgKGlmIChhbmQgcyAocHJlZCAoZmlyc3QgcykpKSAocmVjdXIgcHJlZCAocmVzdCBzKSkgcykpKV1cbiAgIChsYXp5LXNlcSAoc3RlcCBwcmVkIGNvbGwpKSkpKVxuIn0gezpzeW0gSVdyaXRlciwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB3cml0aW5nLiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBieSBTdHJpbmdCdWZmZXJXcml0ZXIuIn0sIDptZXRob2RzICgtZmx1c2ggLXdyaXRlKX0gezpzeW0gcmVhbGl6ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgaGFzIGJlZW4gcHJvZHVjZWQgZm9yIGEgZGVsYXkgb3IgbGF6eSBzZXF1ZW5jZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlYWxpemVkP1xuIFwiUmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgaGFzIGJlZW4gcHJvZHVjZWQgZm9yIGEgZGVsYXkgb3IgbGF6eSBzZXF1ZW5jZS5cIlxuIFt4XVxuICgtcmVhbGl6ZWQ/IHgpKVxuIn0gezpzeW0gKnByaW50LWZuKiwgOm1ldGEgezpkb2MgIkVhY2ggcnVudGltZSBlbnZpcm9ubWVudCBwcm92aWRlcyBhIGRpZmZlcmVudCB3YXkgdG8gcHJpbnQgb3V0cHV0LlxuICBXaGF0ZXZlciBmdW5jdGlvbiAqcHJpbnQtZm4qIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIGFueVxuICBTdHJpbmdzIHdoaWNoIHNob3VsZCBiZSBwcmludGVkLiJ9LCA6c291cmNlICIoZGVmb25jZSAqcHJpbnQtZm4qIG5pbClcbiJ9IHs6c3ltIGNvbXBhcmUsIDptZXRhIHs6ZG9jICJDb21wYXJhdG9yLiBSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlclxuICB3aGVuIHggaXMgbG9naWNhbGx5ICdsZXNzIHRoYW4nLCAnZXF1YWwgdG8nLCBvciAnZ3JlYXRlciB0aGFuJ1xuICB5LiBVc2VzIElDb21wYXJhYmxlIGlmIGF2YWlsYWJsZSBhbmQgZ29vZ2xlLmFycmF5LmRlZmF1bHRDb21wYXJlIGZvciBvYmplY3RzXG4gb2YgdGhlIHNhbWUgdHlwZSBhbmQgc3BlY2lhbC1jYXNlcyBuaWwgdG8gYmUgbGVzcyB0aGFuIGFueSBvdGhlciBvYmplY3QuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIGNvbXBhcmVcbiBcIkNvbXBhcmF0b3IuIFJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIsIHplcm8sIG9yIGEgcG9zaXRpdmUgbnVtYmVyXFxuICB3aGVuIHggaXMgbG9naWNhbGx5ICdsZXNzIHRoYW4nLCAnZXF1YWwgdG8nLCBvciAnZ3JlYXRlciB0aGFuJ1xcbiAgeS4gVXNlcyBJQ29tcGFyYWJsZSBpZiBhdmFpbGFibGUgYW5kIGdvb2dsZS5hcnJheS5kZWZhdWx0Q29tcGFyZSBmb3Igb2JqZWN0c1xcbiBvZiB0aGUgc2FtZSB0eXBlIGFuZCBzcGVjaWFsLWNhc2VzIG5pbCB0byBiZSBsZXNzIHRoYW4gYW55IG90aGVyIG9iamVjdC5cIlxuIFt4IHldXG4gKGNvbmRcbiAgKGlkZW50aWNhbD8geCB5KVxuICAwXG4gIChuaWw/IHgpXG4gIC0xXG4gIChuaWw/IHkpXG4gIDFcbiAgKG51bWJlcj8geClcbiAgKGlmXG4gICAobnVtYmVyPyB5KVxuICAgKGdhcnJheS9kZWZhdWx0Q29tcGFyZSB4IHkpXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQ2Fubm90IGNvbXBhcmUgXCIgeCBcIiB0byBcIiB5KSkpKVxuICAoc2F0aXNmaWVzPyBJQ29tcGFyYWJsZSB4KVxuICAoLWNvbXBhcmUgeCB5KVxuICA6ZWxzZVxuICAoaWZcbiAgIChhbmRcbiAgICAob3IgKHN0cmluZz8geCkgKGFycmF5PyB4KSAodHJ1ZT8geCkgKGZhbHNlPyB4KSlcbiAgICAoaWRlbnRpY2FsPyAodHlwZSB4KSAodHlwZSB5KSkpXG4gICAoZ2FycmF5L2RlZmF1bHRDb21wYXJlIHggeSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJDYW5ub3QgY29tcGFyZSBcIiB4IFwiIHRvIFwiIHkpKSkpKSlcbiJ9IHs6c3ltIGNvbXBsZW1lbnQsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGZuIGYgYW5kIHJldHVybnMgYSBmbiB0aGF0IHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyBmLFxuICBoYXMgdGhlIHNhbWUgZWZmZWN0cywgaWYgYW55LCBhbmQgcmV0dXJucyB0aGUgb3Bwb3NpdGUgdHJ1dGggdmFsdWUuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wbGVtZW50XG4gXCJUYWtlcyBhIGZuIGYgYW5kIHJldHVybnMgYSBmbiB0aGF0IHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyBmLFxcbiAgaGFzIHRoZSBzYW1lIGVmZmVjdHMsIGlmIGFueSwgYW5kIHJldHVybnMgdGhlIG9wcG9zaXRlIHRydXRoIHZhbHVlLlwiXG4gW2ZdXG4gKGZuXG4gIChbXSAobm90IChmKSkpXG4gIChbeF0gKG5vdCAoZiB4KSkpXG4gIChbeCB5XSAobm90IChmIHggeSkpKVxuICAoW3ggeSAmIHpzXSAobm90IChhcHBseSBmIHggeSB6cykpKSkpXG4ifSB7OnN5bSAtYXNzb2MhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyB0cmFuc2llbnQgY29sbGVjdGlvbiBvZiB0Y29sbCB3aXRoIGEgbWFwcGluZyBmcm9tIGtleSB0b1xuICAgICB2YWwgYWRkZWQgdG8gaXQuIiwgOmFyZ2xpc3RzIChbdGNvbGwga2V5IHZhbF0pfSwgOnByb3RvY29sIElUcmFuc2llbnRBc3NvY2lhdGl2ZX0gezpzeW0gKnByaW50LWR1cCosIDptZXRhIHs6ZG9jICJXaGVuIHNldCB0byBsb2dpY2FsIHRydWUsIG9iamVjdHMgd2lsbCBiZSBwcmludGVkIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzXG4gIHRoZWlyIHR5cGUgd2hlbiByZWFkIGluIGxhdGVyLlxuXG4gIERlZmF1bHRzIHRvIGZhbHNlLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1kdXAqIGZhbHNlKVxuIn0gezpzeW0gc3RyaW5nLWl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc3RyaW5nLWl0ZXIgW3hdIChTdHJpbmdJdGVyLiB4IDApKVxuIn0gezpzeW0gLWtleS0+anMsIDptZXRhIHs6ZG9jICJUcmFuc2Zvcm1zIG1hcCBrZXlzIHRvIHZhbGlkIEphdmFTY3JpcHQga2V5cy4gQXJiaXRyYXJ5IGtleXMgYXJlXG4gIGVuY29kZWQgdG8gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIHZpYSAocHItc3RyIHgpIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElFbmNvZGVKU30gezpzeW0gSURlcmVmLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBkZXJlZmVyZW5jZSBmdW5jdGlvbmFsaXR5IHRvIGEgcmVmZXJlbmNlLiJ9LCA6bWV0aG9kcyAoLWRlcmVmKX0gezpzeW0gc2VxdWVuY2UsIDptZXRhIHs6ZG9jICJDb2VyY2VzIGNvbGwgdG8gYSAocG9zc2libHkgZW1wdHkpIHNlcXVlbmNlLCBpZiBpdCBpcyBub3QgYWxyZWFkeVxuICBvbmUuIFdpbGwgbm90IGZvcmNlIGEgbGF6eSBzZXEuIChzZXF1ZW5jZSBuaWwpIHlpZWxkcyAoKSwgV2hlbiBhXG4gIHRyYW5zZHVjZXIgaXMgc3VwcGxpZWQsIHJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFwcGxpY2F0aW9ucyBvZlxuICB0aGUgdHJhbnNmb3JtIHRvIHRoZSBpdGVtcyBpbiBjb2xsKHMpLCBpLmUuIHRvIHRoZSBzZXQgb2YgZmlyc3RcbiAgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSB0aGUgc2V0IG9mIHNlY29uZFxuICBpdGVtcyBpbiBlYWNoIGNvbGwsIHVudGlsIGFueSBvbmUgb2YgdGhlIGNvbGxzIGlzIGV4aGF1c3RlZC4gIEFueVxuICByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIFRoZSB0cmFuc2Zvcm0gc2hvdWxkIGFjY2VwdFxuICBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzIiwgOmFyZ2xpc3RzIFtbY29sbF0gW3hmb3JtIGNvbGxdIFt4Zm9ybSBjb2xsICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc2VxdWVuY2VcbiBcIkNvZXJjZXMgY29sbCB0byBhIChwb3NzaWJseSBlbXB0eSkgc2VxdWVuY2UsIGlmIGl0IGlzIG5vdCBhbHJlYWR5XFxuICBvbmUuIFdpbGwgbm90IGZvcmNlIGEgbGF6eSBzZXEuIChzZXF1ZW5jZSBuaWwpIHlpZWxkcyAoKSwgV2hlbiBhXFxuICB0cmFuc2R1Y2VyIGlzIHN1cHBsaWVkLCByZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBhcHBsaWNhdGlvbnMgb2ZcXG4gIHRoZSB0cmFuc2Zvcm0gdG8gdGhlIGl0ZW1zIGluIGNvbGwocyksIGkuZS4gdG8gdGhlIHNldCBvZiBmaXJzdFxcbiAgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSB0aGUgc2V0IG9mIHNlY29uZFxcbiAgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpcyBleGhhdXN0ZWQuICBBbnlcXG4gIHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gVGhlIHRyYW5zZm9ybSBzaG91bGQgYWNjZXB0XFxuICBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzXCJcbiAoW2NvbGxdIChpZiAoc2VxPyBjb2xsKSBjb2xsIChvciAoc2VxIGNvbGwpICgpKSkpXG4gKFt4Zm9ybSBjb2xsXVxuICAob3JcbiAgIChjaHVua0l0ZXJhdG9yU2VxICguY3JlYXRlIFRyYW5zZm9ybWVySXRlcmF0b3IgeGZvcm0gKGl0ZXIgY29sbCkpKVxuICAgKCkpKVxuIChbeGZvcm0gY29sbCAmIGNvbGxzXVxuICAob3JcbiAgIChjaHVua0l0ZXJhdG9yU2VxXG4gICAgKC5jcmVhdGVNdWx0aVxuICAgICBUcmFuc2Zvcm1lckl0ZXJhdG9yXG4gICAgIHhmb3JtXG4gICAgIChtYXAgaXRlciAoY29ucyBjb2xsIGNvbGxzKSkpKVxuICAgKCkpKSlcbiJ9IHs6c3ltIGNvbnN0YW50bHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgcmV0dXJucyB4LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uc3RhbnRseVxuIFwiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW55IG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHJldHVybnMgeC5cIlxuIFt4XVxuIChmbiBbJiBhcmdzXSB4KSlcbiJ9IHs6c3ltIGNodW5rZWQtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3ZlYyBpIG9mZl0gW3ZlYyBub2RlIGkgb2ZmXSBbdmVjIG5vZGUgaSBvZmYgbWV0YV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjaHVua2VkLXNlcVxuIChbdmVjIGkgb2ZmXSAoQ2h1bmtlZFNlcS4gdmVjIChhcnJheS1mb3IgdmVjIGkpIGkgb2ZmIG5pbCBuaWwpKVxuIChbdmVjIG5vZGUgaSBvZmZdIChDaHVua2VkU2VxLiB2ZWMgbm9kZSBpIG9mZiBuaWwgbmlsKSlcbiAoW3ZlYyBub2RlIGkgb2ZmIG1ldGFdIChDaHVua2VkU2VxLiB2ZWMgbm9kZSBpIG9mZiBtZXRhIG5pbCkpKVxuIn0gezpzeW0gSVNvcnRlZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhIGNvbGxlY3Rpb24gd2hpY2ggY2FuIHJlcHJlc2VudCB0aGVpciBpdGVtc1xuICBpbiBhIHNvcnRlZCBtYW5uZXIuICJ9LCA6bWV0aG9kcyAoLWNvbXBhcmF0b3IgLWVudHJ5LWtleSAtc29ydGVkLXNlcSAtc29ydGVkLXNlcS1mcm9tKX0gezpzeW0gbWFrZS1hcnJheSwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhIEphdmFTY3JpcHQgYXJyYXkgb2YgdGhlIHNwZWNpZmllZCBkaW1lbnNpb25zLiBBY2NlcHRzIGlnbm9yZWRcbiAgdHlwZSBhcmd1bWVudCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBlZmZpY2llbnRcbiAgd2F5IHRvIGFsbG9jYXRlIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cyBpbiBKYXZhU2NyaXB0OyBhcyBzdWNoLCB0aGlzIGZ1bmN0aW9uXG4gIHdpbGwgcnVuIGluIHBvbHlub21pYWwgdGltZSB3aGVuIGNhbGxlZCB3aXRoIDMgb3IgbW9yZSBhcmd1bWVudHMuIiwgOmFyZ2xpc3RzIFtbc2l6ZV0gW3R5cGUgc2l6ZV0gW3R5cGUgc2l6ZSAmIG1vcmUtc2l6ZXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1hcnJheVxuIFwiQ29uc3RydWN0IGEgSmF2YVNjcmlwdCBhcnJheSBvZiB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvbnMuIEFjY2VwdHMgaWdub3JlZFxcbiAgdHlwZSBhcmd1bWVudCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBlZmZpY2llbnRcXG4gIHdheSB0byBhbGxvY2F0ZSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgaW4gSmF2YVNjcmlwdDsgYXMgc3VjaCwgdGhpcyBmdW5jdGlvblxcbiAgd2lsbCBydW4gaW4gcG9seW5vbWlhbCB0aW1lIHdoZW4gY2FsbGVkIHdpdGggMyBvciBtb3JlIGFyZ3VtZW50cy5cIlxuIChbc2l6ZV0gKGpzL0FycmF5LiBzaXplKSlcbiAoW3R5cGUgc2l6ZV0gKG1ha2UtYXJyYXkgc2l6ZSkpXG4gKFt0eXBlIHNpemUgJiBtb3JlLXNpemVzXVxuICAobGV0XG4gICBbZGltcyBtb3JlLXNpemVzIGRpbWFycmF5IChtYWtlLWFycmF5IHNpemUpXVxuICAgKGRvdGltZXNcbiAgICBbaSAoYWxlbmd0aCBkaW1hcnJheSldXG4gICAgKGFzZXQgZGltYXJyYXkgaSAoYXBwbHkgbWFrZS1hcnJheSBuaWwgZGltcykpKVxuICAgZGltYXJyYXkpKSlcbiJ9IHs6c3ltIHNob3J0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBzaG9ydHMgW3hdIHgpXG4ifSB7OnN5bSAqdW5jaGVja2VkLWlmKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnVuY2hlY2tlZC1pZiogZmFsc2UpXG4ifSB7OnN5bSBlbmFibGUtY29uc29sZS1wcmludCEsIDptZXRhIHs6ZG9jICJTZXQgKnByaW50LWZuKiB0byBjb25zb2xlLmxvZyIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmFibGUtY29uc29sZS1wcmludCFcbiBcIlNldCAqcHJpbnQtZm4qIHRvIGNvbnNvbGUubG9nXCJcbiBbXVxuIChzZXQhICpwcmludC1uZXdsaW5lKiBmYWxzZSlcbiAoc2V0LXByaW50LWZuIVxuICAoZm5cbiAgIFtdXG4gICAobGV0XG4gICAgW3hzIChqcy1hcmd1bWVudHMpXVxuICAgICguYXBwbHkgKC4tbG9nIGpzL2NvbnNvbGUpIGpzL2NvbnNvbGUgKGdhcnJheS9jbG9uZSB4cykpKSkpXG4gKHNldC1wcmludC1lcnItZm4hXG4gIChmblxuICAgW11cbiAgIChsZXRcbiAgICBbeHMgKGpzLWFyZ3VtZW50cyldXG4gICAgKC5hcHBseSAoLi1lcnJvciBqcy9jb25zb2xlKSBqcy9jb25zb2xlIChnYXJyYXkvY2xvbmUgeHMpKSkpKVxuIG5pbClcbiJ9IHs6c3ltIC1mbHVzaCwgOm1ldGEgezpkb2MgIkZsdXNoIHdyaXRlci4iLCA6YXJnbGlzdHMgKFt3cml0ZXJdKX0sIDpwcm90b2NvbCBJV3JpdGVyfSB7OnN5bSBjb21wbGV0aW5nLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSByZWR1Y2luZyBmdW5jdGlvbiBmIG9mIDIgYXJncyBhbmQgcmV0dXJucyBhIGZuIHN1aXRhYmxlIGZvclxuICB0cmFuc2R1Y2UgYnkgYWRkaW5nIGFuIGFyaXR5LTEgc2lnbmF0dXJlIHRoYXQgY2FsbHMgY2YgKGRlZmF1bHQgLVxuICBpZGVudGl0eSkgb24gdGhlIHJlc3VsdCBhcmd1bWVudC4iLCA6YXJnbGlzdHMgW1tmXSBbZiBjZl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wbGV0aW5nXG4gXCJUYWtlcyBhIHJlZHVjaW5nIGZ1bmN0aW9uIGYgb2YgMiBhcmdzIGFuZCByZXR1cm5zIGEgZm4gc3VpdGFibGUgZm9yXFxuICB0cmFuc2R1Y2UgYnkgYWRkaW5nIGFuIGFyaXR5LTEgc2lnbmF0dXJlIHRoYXQgY2FsbHMgY2YgKGRlZmF1bHQgLVxcbiAgaWRlbnRpdHkpIG9uIHRoZSByZXN1bHQgYXJndW1lbnQuXCJcbiAoW2ZdIChjb21wbGV0aW5nIGYgaWRlbnRpdHkpKVxuIChbZiBjZl0gKGZuIChbXSAoZikpIChbeF0gKGNmIHgpKSAoW3ggeV0gKGYgeCB5KSkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1uZWdhdGUtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1uZWdhdGUtaW50IFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1uZWdhdGUtaW50IHgpKVxuIn0gezpzeW0gaGFzaC11bm9yZGVyZWQtY29sbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSwgY29uc2lzdGVudCB3aXRoID0sIGZvciBhbiBleHRlcm5hbCB1bm9yZGVyZWRcbiAgIGNvbGxlY3Rpb24gaW1wbGVtZW50aW5nIEl0ZXJhYmxlLiBGb3IgbWFwcywgdGhlIGl0ZXJhdG9yIHNob3VsZFxuICAgcmV0dXJuIG1hcCBlbnRyaWVzIHdob3NlIGhhc2ggaXMgY29tcHV0ZWQgYXNcbiAgICAgKGhhc2gtb3JkZXJlZC1jb2xsIFtrIHZdKS5cbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtdW5vcmRlcmVkLWNvbGxcbiBcIlJldHVybnMgdGhlIGhhc2ggY29kZSwgY29uc2lzdGVudCB3aXRoID0sIGZvciBhbiBleHRlcm5hbCB1bm9yZGVyZWRcXG4gICBjb2xsZWN0aW9uIGltcGxlbWVudGluZyBJdGVyYWJsZS4gRm9yIG1hcHMsIHRoZSBpdGVyYXRvciBzaG91bGRcXG4gICByZXR1cm4gbWFwIGVudHJpZXMgd2hvc2UgaGFzaCBpcyBjb21wdXRlZCBhc1xcbiAgICAgKGhhc2gtb3JkZXJlZC1jb2xsIFtrIHZdKS5cXG4gICBTZWUgaHR0cDovL2Nsb2p1cmUub3JnL2RhdGFfc3RydWN0dXJlcyNoYXNoIGZvciBmdWxsIGFsZ29yaXRobXMuXCJcbiBbY29sbF1cbiAobG9vcFxuICBbbiAwIGhhc2gtY29kZSAwIGNvbGwgKHNlcSBjb2xsKV1cbiAgKGlmLW5vdFxuICAgKG5pbD8gY29sbClcbiAgIChyZWN1clxuICAgIChpbmMgbilcbiAgICAoYml0LW9yICgrIGhhc2gtY29kZSAoaGFzaCAoZmlyc3QgY29sbCkpKSAwKVxuICAgIChuZXh0IGNvbGwpKVxuICAgKG1peC1jb2xsZWN0aW9uLWhhc2ggaGFzaC1jb2RlIG4pKSkpXG4ifSB7OnN5bSByZXBlYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSAoaW5maW5pdGUhLCBvciBsZW5ndGggbiBpZiBzdXBwbGllZCkgc2VxdWVuY2Ugb2YgeHMuIiwgOmFyZ2xpc3RzIFtbeF0gW24geF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBlYXRcbiBcIlJldHVybnMgYSBsYXp5IChpbmZpbml0ZSEsIG9yIGxlbmd0aCBuIGlmIHN1cHBsaWVkKSBzZXF1ZW5jZSBvZiB4cy5cIlxuIChbeF0gKFJlcGVhdC4gbmlsIC0xIHggbmlsIG5pbCkpXG4gKFtuIHhdIChpZiAocG9zPyBuKSAoUmVwZWF0LiBuaWwgbiB4IG5pbCBuaWwpICguLUVNUFRZIExpc3QpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtaW5jLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1pbmMgW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLWluYyB4KSlcbiJ9IHs6c3ltIG50aG5leHQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudGggbmV4dCBvZiBjb2xsLCAoc2VxIGNvbGwpIHdoZW4gbiBpcyAwLiIsIDphcmdsaXN0cyAoW2NvbGwgbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudGhuZXh0XG4gXCJSZXR1cm5zIHRoZSBudGggbmV4dCBvZiBjb2xsLCAoc2VxIGNvbGwpIHdoZW4gbiBpcyAwLlwiXG4gW2NvbGwgbl1cbiAobG9vcFxuICBbbiBuIHhzIChzZXEgY29sbCldXG4gIChpZiAoYW5kIHhzIChwb3M/IG4pKSAocmVjdXIgKGRlYyBuKSAobmV4dCB4cykpIHhzKSkpXG4ifSB7OnN5bSBnZXQtdmFsaWRhdG9yLCA6bWV0YSB7OmRvYyAiR2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhIHZhci9yZWYvYWdlbnQvYXRvbS4iLCA6YXJnbGlzdHMgKFtpcmVmXSl9LCA6c291cmNlICIoZGVmblxuIGdldC12YWxpZGF0b3JcbiBcIkdldHMgdGhlIHZhbGlkYXRvci1mbiBmb3IgYSB2YXIvcmVmL2FnZW50L2F0b20uXCJcbiBbaXJlZl1cbiAoLi12YWxpZGF0b3IgaXJlZikpXG4ifSB7OnN5bSBudW1iZXI/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IG51bWJlci4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG51bWJlcj9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBudW1iZXIuXCJcbiBbeF1cbiAoY2xqcy5jb3JlL251bWJlcj8geCkpXG4ifSB7OnN5bSAtY29uaiEsIDptZXRhIHs6ZG9jICJBZGRzIHZhbHVlIHZhbCB0byB0Y29sbCBhbmQgcmV0dXJucyB0Y29sbC4iLCA6YXJnbGlzdHMgKFt0Y29sbCB2YWxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50Q29sbGVjdGlvbn0gezpzeW0gY2h1bmstbmV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGNodW5rLW5leHRcbiBbc11cbiAoaWZcbiAgKGltcGxlbWVudHM/IElDaHVua2VkTmV4dCBzKVxuICAoLWNodW5rZWQtbmV4dCBzKVxuICAoc2VxICgtY2h1bmtlZC1yZXN0IHMpKSkpXG4ifSB7OnN5bSBwcmludC1zdHIsIDptZXRhIHs6ZG9jICJwcmludCB0byBhIHN0cmluZywgcmV0dXJuaW5nIGl0IiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LXN0clxuIFwicHJpbnQgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdFwiXG4gWyYgb2Jqc11cbiAocHItc3RyLXdpdGgtb3B0cyBvYmpzIChhc3NvYyAocHItb3B0cykgOnJlYWRhYmx5IGZhbHNlKSkpXG4ifSB7OnN5bSBub3QtYW55PywgOm1ldGEgezpkb2MgIlJldHVybnMgZmFsc2UgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBhbnkgeCBpbiBjb2xsLFxuICBlbHNlIHRydWUuIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG5vdC1hbnk/XG4gXCJSZXR1cm5zIGZhbHNlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgYW55IHggaW4gY29sbCxcXG4gIGVsc2UgdHJ1ZS5cIlxuIFtwcmVkIGNvbGxdXG4gKG5vdCAoc29tZSBwcmVkIGNvbGwpKSlcbiJ9IHs6c3ltIGludG8tYXJyYXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGFycmF5IHdpdGggY29tcG9uZW50cyBzZXQgdG8gdGhlIHZhbHVlcyBpbiBhc2VxLiBPcHRpb25hbCB0eXBlXG4gIGFyZ3VtZW50IGFjY2VwdGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1thc2VxXSBbdHlwZSBhc2VxXV19LCA6c291cmNlICIoZGVmblxuIGludG8tYXJyYXlcbiBcIlJldHVybnMgYW4gYXJyYXkgd2l0aCBjb21wb25lbnRzIHNldCB0byB0aGUgdmFsdWVzIGluIGFzZXEuIE9wdGlvbmFsIHR5cGVcXG4gIGFyZ3VtZW50IGFjY2VwdGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQ2xvanVyZS5cIlxuIChbYXNlcV0gKGludG8tYXJyYXkgbmlsIGFzZXEpKVxuIChbdHlwZSBhc2VxXSAocmVkdWNlIChmbiBbYSB4XSAoLnB1c2ggYSB4KSBhKSAoYXJyYXkpIGFzZXEpKSlcbiJ9IHs6c3ltIC1oYXNoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaGFzaCBjb2RlIG9mIG8uIiwgOmFyZ2xpc3RzIChbb10pfSwgOnByb3RvY29sIElIYXNofSB7OnN5bSBxdWFsaWZpZWQtc3ltYm9sPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgd2l0aCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcXVhbGlmaWVkLXN5bWJvbD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgd2l0aCBhIG5hbWVzcGFjZVwiXG4gW3hdXG4gKGJvb2xlYW4gKGFuZCAoc3ltYm9sPyB4KSAobmFtZXNwYWNlIHgpIHRydWUpKSlcbiJ9IHs6c3ltIC1kaXNzb2MhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyB0cmFuc2llbnQgY29sbGVjdGlvbiBvZiB0Y29sbCB3aXRob3V0IHRoZSBtYXBwaW5nIGZvciBrZXkuIiwgOmFyZ2xpc3RzIChbdGNvbGwga2V5XSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudE1hcH0gezpzeW0gY2h1bmstYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NhcGFjaXR5XSl9LCA6c291cmNlICIoZGVmbiBjaHVuay1idWZmZXIgW2NhcGFjaXR5XSAoQ2h1bmtCdWZmZXIuIChtYWtlLWFycmF5IGNhcGFjaXR5KSAwKSlcbiJ9IHs6c3ltIHNlcWFibGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgdGhlIHNlcSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgZm9yIHMiLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHNlcWFibGU/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB0aGUgc2VxIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZCBmb3Igc1wiXG4gW3NdXG4gKG9yIChuaWw/IHMpIChzYXRpc2ZpZXM/IElTZXFhYmxlIHMpIChhcnJheT8gcykgKHN0cmluZz8gcykpKVxuIn0gezpzeW0gc3ltYm9sPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBTeW1ib2wiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBzeW1ib2w/IFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIFN5bWJvbFwiIFt4XSAoaW5zdGFuY2U/IFN5bWJvbCB4KSlcbiJ9IHs6c3ltIG0zLWhhc2gtdW5lbmNvZGVkLWNoYXJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luXSl9LCA6c291cmNlICIoZGVmblxuIG0zLWhhc2gtdW5lbmNvZGVkLWNoYXJzXG4gW2luXVxuIChsZXRcbiAgW2gxXG4gICAobG9vcFxuICAgIFtpIDEgaDEgbTMtc2VlZF1cbiAgICAoaWZcbiAgICAgKDwgaSAoLi1sZW5ndGggaW4pKVxuICAgICAocmVjdXJcbiAgICAgICgrIGkgMilcbiAgICAgIChtMy1taXgtSDFcbiAgICAgICBoMVxuICAgICAgIChtMy1taXgtSzFcbiAgICAgICAgKGJpdC1vclxuICAgICAgICAgKC5jaGFyQ29kZUF0IGluIChkZWMgaSkpXG4gICAgICAgICAoYml0LXNoaWZ0LWxlZnQgKC5jaGFyQ29kZUF0IGluIGkpIDE2KSkpKSlcbiAgICAgaDEpKVxuICAgaDFcbiAgIChpZlxuICAgICg9PSAoYml0LWFuZCAoLi1sZW5ndGggaW4pIDEpIDEpXG4gICAgKGJpdC14b3IgaDEgKG0zLW1peC1LMSAoLmNoYXJDb2RlQXQgaW4gKGRlYyAoLi1sZW5ndGggaW4pKSkpKVxuICAgIGgxKV1cbiAgKG0zLWZtaXggaDEgKGltdWwgMiAoLi1sZW5ndGggaW4pKSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWNoYXIgW3hdIHgpXG4ifSB7OnN5bSBzeXN0ZW0tdGltZSwgOm1ldGEgezpkb2MgIlJldHVybnMgaGlnaGVzdCByZXNvbHV0aW9uIHRpbWUgb2ZmZXJlZCBieSBob3N0IGluIG1pbGxpc2Vjb25kcy4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3lzdGVtLXRpbWVcbiBcIlJldHVybnMgaGlnaGVzdCByZXNvbHV0aW9uIHRpbWUgb2ZmZXJlZCBieSBob3N0IGluIG1pbGxpc2Vjb25kcy5cIlxuIFtdXG4gKGNvbmRcbiAgKGFuZCAoZXhpc3RzPyBqcy9wZXJmb3JtYW5jZSkgKG5vdCAobmlsPyAoLiBqcy9wZXJmb3JtYW5jZSAtbm93KSkpKVxuICAoLm5vdyBqcy9wZXJmb3JtYW5jZSlcbiAgKGFuZCAoZXhpc3RzPyBqcy9wcm9jZXNzKSAobm90IChuaWw/ICguIGpzL3Byb2Nlc3MgLWhydGltZSkpKSlcbiAgKGxldFxuICAgW3QgKC5ocnRpbWUganMvcHJvY2VzcyldXG4gICAoLyAoKyAoKiAoYWdldCB0IDApIDEuMEU5KSAoYWdldCB0IDEpKSAxMDAwMDAwLjApKVxuICA6ZWxzZVxuICAoLmdldFRpbWUgKGpzL0RhdGUuKSkpKVxuIn0gezpzeW0gLWludm9rZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSBbdGhpcyBhXSBbdGhpcyBhIGJdIFt0aGlzIGEgYiBjXSBbdGhpcyBhIGIgYyBkXSBbdGhpcyBhIGIgYyBkIGVdIFt0aGlzIGEgYiBjIGQgZSBmXSBbdGhpcyBhIGIgYyBkIGUgZiBnXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGhdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGtdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG5dIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHFdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHRdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCByZXN0XSl9LCA6cHJvdG9jb2wgSUZufSB7OnN5bSBjb2xsPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ29sbGVjdGlvbiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ29sbGVjdGlvblwiXG4gW3hdXG4gKGlmIChuaWw/IHgpIGZhbHNlIChzYXRpc2ZpZXM/IElDb2xsZWN0aW9uIHgpKSlcbiJ9IHs6c3ltIGdldC1pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSxcbiAgd2hlcmUga3MgaXMgYSBzZXF1ZW5jZSBvZiBrZXlzLiBSZXR1cm5zIG5pbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LFxuICBvciB0aGUgbm90LWZvdW5kIHZhbHVlIGlmIHN1cHBsaWVkLiIsIDphcmdsaXN0cyBbW20ga3NdIFttIGtzIG5vdC1mb3VuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtaW5cbiBcIlJldHVybnMgdGhlIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSxcXG4gIHdoZXJlIGtzIGlzIGEgc2VxdWVuY2Ugb2Yga2V5cy4gUmV0dXJucyBuaWwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudCxcXG4gIG9yIHRoZSBub3QtZm91bmQgdmFsdWUgaWYgc3VwcGxpZWQuXCJcbiB7OmFkZGVkIFwiMS4yXCIsIDpzdGF0aWMgdHJ1ZX1cbiAoW20ga3NdIChyZWR1Y2UgZ2V0IG0ga3MpKVxuIChbbSBrcyBub3QtZm91bmRdXG4gIChsb29wXG4gICBbc2VudGluZWwgbG9va3VwLXNlbnRpbmVsIG0gbSBrcyAoc2VxIGtzKV1cbiAgIChpZi1ub3RcbiAgICAobmlsPyBrcylcbiAgICAobGV0XG4gICAgIFttIChnZXQgbSAoZmlyc3Qga3MpIHNlbnRpbmVsKV1cbiAgICAgKGlmXG4gICAgICAoaWRlbnRpY2FsPyBzZW50aW5lbCBtKVxuICAgICAgbm90LWZvdW5kXG4gICAgICAocmVjdXIgc2VudGluZWwgbSAobmV4dCBrcykpKSlcbiAgICBtKSkpKVxuIn0gezpzeW0gZm5leHQsIDptZXRhIHs6ZG9jICJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBmbmV4dCBcIlNhbWUgYXMgKGZpcnN0IChuZXh0IHgpKVwiIFtjb2xsXSAoZmlyc3QgKG5leHQgY29sbCkpKVxuIn0gezpzeW0gSUxpc3QsIDptZXRhIHs6ZG9jICJNYXJrZXIgaW50ZXJmYWNlIGluZGljYXRpbmcgYSBwZXJzaXN0ZW50IGxpc3QifSwgOm1ldGhvZHMgKCl9IHs6c3ltIC12YWwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgbWFwIGVudHJ5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJTWFwRW50cnl9IHs6c3ltIGJ5dGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJ5dGVzIFt4XSB4KVxuIn0gezpzeW0gLXNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb2Ygbywgb3IgbmlsIGlmIG8gaXMgZW1wdHkuIiwgOmFyZ2xpc3RzIChbb10pfSwgOnByb3RvY29sIElTZXFhYmxlfSksIGNsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlcyAoezpzeW0gaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyIiwgOmFyZ2xpc3RzIFtbcy1vci1yZHJdIFtzLW9yLXJkciBidWYtbGVuXSBbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlclxuIFwiQ3JlYXRlcyBhbiBJbmRleGluZ1B1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmcgb3IgUHVzaGJhY2tSZWFkZXJcIlxuIChbcy1vci1yZHJdIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIDEpKVxuIChbcy1vci1yZHIgYnVmLWxlbl0gKGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbiBuaWwpKVxuIChbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXG4gIChJbmRleGluZ1B1c2hiYWNrUmVhZGVyLlxuICAgKGlmXG4gICAgKHN0cmluZz8gcy1vci1yZHIpXG4gICAgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4pXG4gICAgcy1vci1yZHIpXG4gICAxXG4gICAxXG4gICB0cnVlXG4gICBuaWxcbiAgIDBcbiAgIGZpbGUtbmFtZSkpKVxuIn0gezpzeW0gbG9nLXNvdXJjZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVhZGVyIGZdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9nLXNvdXJjZSpcbiBbcmVhZGVyIGZdXG4gKGxldFxuICBbYnVmZmVyICg6YnVmZmVyIEAoLi1mcmFtZXMgcmVhZGVyKSldXG4gICh0cnlcbiAgIChzd2FwIVxuICAgICguLWZyYW1lcyByZWFkZXIpXG4gICAgdXBkYXRlLWluXG4gICAgWzpvZmZzZXRdXG4gICAgY29ualxuICAgICguZ2V0TGVuZ3RoIGJ1ZmZlcikpXG4gICAobGV0XG4gICAgW3JldCAoZildXG4gICAgKGlmXG4gICAgIChpbXBsZW1lbnRzPyBJTWV0YSByZXQpXG4gICAgIChtZXJnZS1tZXRhIHJldCB7OnNvdXJjZSAocGVlay1zb3VyY2UtbG9nIEAoLi1mcmFtZXMgcmVhZGVyKSl9KVxuICAgICByZXQpKVxuICAgKGZpbmFsbHkgKHN3YXAhICguLWZyYW1lcyByZWFkZXIpIHVwZGF0ZS1pbiBbOm9mZnNldF0gcmVzdCkpKSkpXG4ifSB7OnN5bSBtZXJnZS1tZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgYG9iamAsIHdpdGggaXRzXG5tZXRhZGF0YSBtZXJnZWQgb3ZlciBgbWAuIiwgOmFyZ2xpc3RzIChbb2JqIG1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2UtbWV0YVxuIFwiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgYG9iamAsIHdpdGggaXRzXFxubWV0YWRhdGEgbWVyZ2VkIG92ZXIgYG1gLlwiXG4gW29iaiBtXVxuIChsZXRcbiAgW29yaWctbWV0YSAobWV0YSBvYmopXVxuICAod2l0aC1tZXRhIG9iaiAobWVyZ2UgbSAoZGlzc29jIG9yaWctbWV0YSA6c291cmNlKSkpKSlcbiJ9IHs6c3ltIFJlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHBlZWstY2hhciByZWFkLWNoYXIpfSB7OnN5bSBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyIiwgOmFyZ2xpc3RzIFtbcy1vci1yZHJdIFtzLW9yLXJkciBidWYtbGVuXSBbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlclxuIFwiQ3JlYXRlcyBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcbiAoW3Mtb3ItcmRyXSAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW5dXG4gIChzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4gbmlsKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxuICAoU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxuICAgKGlmXG4gICAgKHN0cmluZz8gcy1vci1yZHIpXG4gICAgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4pXG4gICAgcy1vci1yZHIpXG4gICAxXG4gICAxXG4gICB0cnVlXG4gICBuaWxcbiAgIDBcbiAgIGZpbGUtbmFtZVxuICAgKGF0b20gezpidWZmZXIgKFN0cmluZ0J1ZmZlci4pLCA6b2Zmc2V0ICcoMCl9KSkpKVxuIn0gezpzeW0gdW5yZWFkLCA6bWV0YSB7OmRvYyAiUHVzaGVzIGJhY2sgYSBzaW5nbGUgY2hhcmFjdGVyIG9uIHRvIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXIgY2hdKX0sIDpwcm90b2NvbCBJUHVzaGJhY2tSZWFkZXJ9IHs6c3ltIHBlZWstY2hhciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgY2hhciBmcm9tIHRoZSBSZWFkZXIgd2l0aG91dCByZW1vdmluZyBpdCBmcm9tIHRoZSByZWFkZXIgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgUmVhZGVyfSB7OnN5bSBJUHVzaGJhY2tSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh1bnJlYWQpfSB7OnN5bSBpbmRleGluZy1yZWFkZXI/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHRoZSByZWFkZXIgc2F0aXNmaWVzIEluZGV4aW5nUmVhZGVyIiwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4aW5nLXJlYWRlcj9cbiBcIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlclwiXG4gW3Jkcl1cbiAoaW1wbGVtZW50cz8gSW5kZXhpbmdSZWFkZXIgcmRyKSlcbiJ9IHs6c3ltIHN0cmluZy1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmciLCA6YXJnbGlzdHMgW1tzXV19LCA6c291cmNlICIoZGVmblxuIHN0cmluZy1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBTdHJpbmdSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZ1wiXG4gKFtzXSAoU3RyaW5nUmVhZGVyLiBzIChjb3VudCBzKSAwKSkpXG4ifSB7OnN5bSByZWFkLWNoYXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGNoYXIgZnJvbSB0aGUgUmVhZGVyLCBuaWwgaWYgdGhlIGVuZCBvZiBzdHJlYW0gaGFzIGJlZW4gcmVhY2hlZCIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIFJlYWRlcn0gezpzeW0gZ2V0LWNvbHVtbi1udW1iZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZWFkIGZyb20gdGhlIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIEluZGV4aW5nUmVhZGVyfSB7OnN5bSBnZXQtZmlsZS1uYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlsZSBuYW1lIHRoZSByZWFkZXIgaXMgcmVhZGluZyBmcm9tLCBvciBuaWwiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0gezpzeW0gcmVhZC1saW5lLCA6bWV0YSB7OmRvYyAiUmVhZHMgYSBsaW5lIGZyb20gdGhlIHJlYWRlciBvciBmcm9tICppbiogaWYgbm8gcmVhZGVyIGlzIHNwZWNpZmllZCIsIDphcmdsaXN0cyBbW3Jkcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLWxpbmVcbiBcIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWRcIlxuIChbcmRyXVxuICAobG9vcFxuICAgW2MgKHJlYWQtY2hhciByZHIpIHMgKFN0cmluZ0J1ZmZlci4pXVxuICAgKGlmIChuZXdsaW5lPyBjKSAoc3RyIHMpIChyZWN1ciAocmVhZC1jaGFyIHJkcikgKC5hcHBlbmQgcyBjKSkpKSkpXG4ifSB7OnN5bSBzdHJpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIiwgOmFyZ2xpc3RzIFtbc10gW3MgYnVmLWxlbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctcHVzaC1iYWNrLXJlYWRlclxuIFwiQ3JlYXRlcyBhIFB1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmdcIlxuIChbc10gKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMgMSkpXG4gKFtzIGJ1Zi1sZW5dXG4gIChQdXNoYmFja1JlYWRlci5cbiAgIChzdHJpbmctcmVhZGVyIHMpXG4gICAob2JqZWN0LWFycmF5IGJ1Zi1sZW4pXG4gICBidWYtbGVuXG4gICBidWYtbGVuKSkpXG4ifSB7OnN5bSBsaW5lLXN0YXJ0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIgYW5kIHRoZSBjdXJyZW50IGNoYXIgc3RhcnRzIGEgbmV3IGxpbmUiLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGluZS1zdGFydD9cbiBcIlJldHVybnMgdHJ1ZSBpZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIgYW5kIHRoZSBjdXJyZW50IGNoYXIgc3RhcnRzIGEgbmV3IGxpbmVcIlxuIFtyZHJdXG4gKHdoZW4gKGluZGV4aW5nLXJlYWRlcj8gcmRyKSAoPT0gMSAoZ2V0LWNvbHVtbi1udW1iZXIgcmRyKSkpKVxuIn0gezpzeW0gc291cmNlLWxvZ2dpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc291cmNlLWxvZ2dpbmctcmVhZGVyP1xuIFtyZHJdXG4gKGluc3RhbmNlPyBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgcmRyKSlcbiJ9IHs6c3ltIEluZGV4aW5nUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSBnZXQtbGluZS1udW1iZXIpfSB7OnN5bSBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVhZGFibGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm9kZS1yZWFkYWJsZS1wdXNoLWJhY2stcmVhZGVyXG4gW3JlYWRhYmxlXVxuIChQdXNoYmFja1JlYWRlci5cbiAgKE5vZGVSZWFkYWJsZVJlYWRlci4gcmVhZGFibGUgbmlsKVxuICAob2JqZWN0LWFycmF5IDEpXG4gIDFcbiAgMSkpXG4ifSB7OnN5bSBnZXQtbGluZS1udW1iZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0pLCBwbGF5LWNsamMudHJhbnNmb3JtcyAoezpzeW0gSVJvdGF0ZSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHJvdGF0ZSl9IHs6c3ltIGNyb3AsIDptZXRhIHs6ZG9jICJDcm9wcyB0aGUgdmlzaWJsZSBhcmVhIG9mIHRoZSBlbnRpdHkuIiwgOmFyZ2xpc3RzIChbZW50aXR5IHggeSB3aWR0aCBoZWlnaHRdKX0sIDpwcm90b2NvbCBJQ3JvcH0gezpzeW0gSUludmVydCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGludmVydCl9IHs6c3ltIGludmVydCwgOm1ldGEgezpkb2MgIkFwcGxpZXMgYSBjYW1lcmEgdG8gdGhlIGVudGl0eSBhZnRlciBjcmVhdGluZyBhbiBpbnZlcnNlIG1hdHJpeCBvZiBpdC4iLCA6YXJnbGlzdHMgKFtlbnRpdHkgY2FtZXJhXSl9LCA6cHJvdG9jb2wgSUludmVydH0gezpzeW0gbG9vay1hdCwgOm1ldGEgezpkb2MgIkFwcGxpZXMgYSBsb29rIGF0IG1hdHJpeCB0byB0aGUgY2FtZXJhLiIsIDphcmdsaXN0cyAoW2NhbWVyYSB0YXJnZXQgdXBdKX0sIDpwcm90b2NvbCBJTG9va0F0fSB7OnN5bSBJQ2FtZXJhLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoY2FtZXJhKX0gezpzeW0gdHJhbnNmb3JtLCA6bWV0YSB7OmRvYyAiV29yayBpbiBwcm9ncmVzcyEgU3ViamVjdCB0byBjaGFuZ2UvYnJlYWsgaW4gZnV0dXJlIHJlbGVhc2VzLiIsIDphcmdsaXN0cyBbW2NvbnRlbnRdIFtbY29udGVudC10eXBlIGNvbnRlbnQtdmFsXSBlbnRpdGllcyB0cmFuc2Zvcm1zXV19LCA6c291cmNlICIoZGVmblxuIHRyYW5zZm9ybVxuIFwiV29yayBpbiBwcm9ncmVzcyEgU3ViamVjdCB0byBjaGFuZ2UvYnJlYWsgaW4gZnV0dXJlIHJlbGVhc2VzLlwiXG4gKFtjb250ZW50XVxuICAodHJhbnNmb3JtIChwYXJzZSA6cGxheS1jbGpjLnRyYW5zZm9ybXMvY29udGVudCBjb250ZW50KSBbXSBbXSkpXG4gKFtbY29udGVudC10eXBlIGNvbnRlbnQtdmFsXSBlbnRpdGllcyB0cmFuc2Zvcm1zXVxuICAoY2FzZVxuICAgY29udGVudC10eXBlXG4gICA6c3ViY29udGVudFxuICAgKHJlZHVjZVxuICAgIChmblxuICAgICBbZW50aXRpZXMgY29udGVudF1cbiAgICAgKHRyYW5zZm9ybVxuICAgICAgY29udGVudFxuICAgICAgZW50aXRpZXNcbiAgICAgIChpbnRvIHRyYW5zZm9ybXMgKChqdXh0IDpuYW1lIDphcmdzKSBjb250ZW50LXZhbCkpKSlcbiAgICBlbnRpdGllc1xuICAgICg6Y29udGVudCBjb250ZW50LXZhbCkpXG4gICA6ZW50aXR5XG4gICAoY29uaiBlbnRpdGllcyAodHJhbnNmb3JtLWVudGl0eSBjb250ZW50LXZhbCB0cmFuc2Zvcm1zKSkpKSlcbiJ9IHs6c3ltIGNvbG9yLCA6bWV0YSB7OmRvYyAiQXBwbGllcyBhIGNvbG9yIHRvIHRoZSBlbnRpdHkuIiwgOmFyZ2xpc3RzIChbZW50aXR5IHJnYmFdKX0sIDpwcm90b2NvbCBJQ29sb3J9IHs6c3ltIElTY2FsZSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHNjYWxlKX0gezpzeW0gc2NhbGUsIDptZXRhIHs6ZG9jICJBcHBsaWVzIGEgc2NhbGluZyBtYXRyaXggdG8gdGhlIGVudGl0eSBvciBjYW1lcmEuIiwgOmFyZ2xpc3RzIChbZW50aXR5IHggeV0gW2VudGl0eSB4IHkgel0pfSwgOnByb3RvY29sIElTY2FsZX0gezpzeW0gSVByb2plY3QsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChwcm9qZWN0KX0gezpzeW0gSUNvbG9yLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoY29sb3IpfSB7OnN5bSBJQ3JvcCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGNyb3ApfSB7OnN5bSBwcm9qZWN0LCA6bWV0YSB7OmRvYyAiQXBwbGllcyBhIHByb2plY3Rpb24gbWF0cml4IHRvIHRoZSBlbnRpdHkuIiwgOmFyZ2xpc3RzIChbZW50aXR5IHdpZHRoIGhlaWdodF0gW2VudGl0eSBsZWZ0IHJpZ2h0IGJvdHRvbSB0b3AgbmVhciBmYXJdIFtlbnRpdHkgZmllbGQtb2YtdmlldyBhc3BlY3QgbmVhciBmYXJdKX0sIDpwcm90b2NvbCBJUHJvamVjdH0gezpzeW0gSVRyYW5zbGF0ZSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRyYW5zbGF0ZSl9IHs6c3ltIHBhcnNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgY29udGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZVxuIFtzcGVjIGNvbnRlbnRdXG4gKGxldFxuICBbcmVzIChzL2NvbmZvcm0gc3BlYyBjb250ZW50KV1cbiAgKGlmXG4gICAoPSA6Y2xvanVyZS5zcGVjLmFscGhhL2ludmFsaWQgcmVzKVxuICAgKHRocm93IChleC1pbmZvIChleHBvdW5kL2V4cG91bmQtc3RyIHNwZWMgY29udGVudCkge30pKVxuICAgcmVzKSkpXG4ifSB7OnN5bSByb3RhdGUsIDptZXRhIHs6ZG9jICJBcHBsaWVzIGEgcm90YXRpb24gbWF0cml4IHRvIHRoZSBlbnRpdHkgb3IgY2FtZXJhLiIsIDphcmdsaXN0cyAoW2VudGl0eSBhbmdsZV0gW2VudGl0eSBhbmdsZSBheGlzXSl9LCA6cHJvdG9jb2wgSVJvdGF0ZX0gezpzeW0gdHJhbnNmb3JtLWVudGl0eSwgOm1ldGEgezpkb2MgIldvcmsgaW4gcHJvZ3Jlc3MhIFN1YmplY3QgdG8gY2hhbmdlL2JyZWFrIGluIGZ1dHVyZSByZWxlYXNlcy4iLCA6YXJnbGlzdHMgKFtlbnRpdHkgdHJhbnNmb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2Zvcm0tZW50aXR5XG4gXCJXb3JrIGluIHByb2dyZXNzISBTdWJqZWN0IHRvIGNoYW5nZS9icmVhayBpbiBmdXR1cmUgcmVsZWFzZXMuXCJcbiBbZW50aXR5IHRyYW5zZm9ybXNdXG4gKGNvbmNhdFxuICBbJy0+IGVudGl0eV1cbiAgKG1hcFxuICAgKGZuIFtbbmFtZSBhcmdzXV0gKHRyYW5zZm9ybS1lbnRpdHkqIG5hbWUgYXJncykpXG4gICAocGFydGl0aW9uIDIgdHJhbnNmb3JtcykpKSlcbiJ9IHs6c3ltIGNhbWVyYSwgOm1ldGEgezpkb2MgIlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCAtLSB1c2UgYGludmVydGAgaW5zdGVhZCEiLCA6YXJnbGlzdHMgKFtlbnRpdHkgY2FtZXJhXSl9LCA6cHJvdG9jb2wgSUNhbWVyYX0gezpzeW0gdHJhbnNsYXRlLCA6bWV0YSB7OmRvYyAiQXBwbGllcyBhIHRyYW5zbGF0aW9uIG1hdHJpeCB0byB0aGUgZW50aXR5IG9yIGNhbWVyYS4iLCA6YXJnbGlzdHMgKFtlbnRpdHkgeCB5XSBbZW50aXR5IHggeSB6XSl9LCA6cHJvdG9jb2wgSVRyYW5zbGF0ZX0gezpzeW0gSUxvb2tBdCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGxvb2stYXQpfSksIGNsanMuZW52ICh7OnN5bSAqY29tcGlsZXIqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY29tcGlsZXIqIG5pbClcbiJ9IHs6c3ltIGRlZmF1bHQtY29tcGlsZXItZW52KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRpb25zXSl9LCA6c291cmNlICIoZGVmblxuIGRlZmF1bHQtY29tcGlsZXItZW52KlxuIFtvcHRpb25zXVxuIChtZXJnZVxuICB7OmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyB7J2NsanMudXNlciB7Om5hbWUgJ2NsanMudXNlcn19LFxuICAgOmNsanMuYW5hbHl6ZXIvY29uc3RhbnQtdGFibGUge30sXG4gICA6Y2xqcy5hbmFseXplci9kYXRhLXJlYWRlcnMge30sXG4gICA6Y2xqcy5hbmFseXplci9leHRlcm5zXG4gICAjPyg6Y2xqIChleHRlcm5zL2V4dGVybnMtbWFwICg6ZXh0ZXJucy1zb3VyY2VzIG9wdGlvbnMpKSA6Y2xqcyBuaWwpLFxuICAgOm9wdGlvbnMgb3B0aW9uc31cbiAgIz9AKDpjbGogWyh3aGVuIChhbmQgKD0gOm5vZGVqcyAoOnRhcmdldCBvcHRpb25zKSkgKG5vdCAoZmFsc2U/ICg6bm9kZWpzLXJ0IG9wdGlvbnMpKSkpIHs6bm9kZS1tb2R1bGUtaW5kZXggZGVwcy9uYXRpdmUtbm9kZS1tb2R1bGVzfSkgezpqcy1kZXBlbmRlbmN5LWluZGV4IChkZXBzL2pzLWRlcGVuZGVuY3ktaW5kZXggb3B0aW9ucyl9XSkpKVxuIn0gezpzeW0gZGVmYXVsdC1jb21waWxlci1lbnYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbb3B0aW9uc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWZhdWx0LWNvbXBpbGVyLWVudlxuIChbXSAoZGVmYXVsdC1jb21waWxlci1lbnYge30pKVxuIChbb3B0aW9uc10gKGF0b20gKGRlZmF1bHQtY29tcGlsZXItZW52KiBvcHRpb25zKSkpKVxuIn0pLCBwYXJlbi1zb3VwLmNvbnNvbGUgKHs6c3ltIGNyZWF0ZS1jb25zb2xlLWhpc3RvcnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGNyZWF0ZS1jb25zb2xlLWhpc3RvcnlcbiBbXVxuIChhdG9tIHs6Y3VycmVudC1saW5lIDAsIDpsaW5lcyBbXSwgOnN0YXJ0IDB9KSlcbiJ9IHs6c3ltIGdldC1jb25zb2xlLXN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWNvbnNvbGUtc3RhcnRcbiBbKmNvbnNvbGUtaGlzdG9yeV1cbiAoLT4gKmNvbnNvbGUtaGlzdG9yeSBkZXJlZiA6c3RhcnQpKVxuIn0gezpzeW0gdXBkYXRlLWNvbnNvbGUtc3RhcnQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3Rvcnkgc3RhcnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWNvbnNvbGUtc3RhcnQhXG4gWypjb25zb2xlLWhpc3Rvcnkgc3RhcnRdXG4gKHN3YXAhICpjb25zb2xlLWhpc3RvcnkgYXNzb2MgOnN0YXJ0IHN0YXJ0KSlcbiJ9IHs6c3ltIHVwZGF0ZS1jb25zb2xlLWhpc3RvcnkhLCA6bWV0YSB7OmRvYyAiVXBkYXRlcyB0aGUgY29uc29sZSBoaXN0b3J5IGF0b20uIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeSBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1jb25zb2xlLWhpc3RvcnkhXG4gXCJVcGRhdGVzIHRoZSBjb25zb2xlIGhpc3RvcnkgYXRvbS5cIlxuIFsqY29uc29sZS1oaXN0b3J5IGxpbmVdXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LWxpbmUgbGluZXNdfSBAKmNvbnNvbGUtaGlzdG9yeV1cbiAgKHN3YXAhXG4gICAqY29uc29sZS1oaXN0b3J5XG4gICAoZm5cbiAgICBbY29uc29sZS1oaXN0b3J5XVxuICAgIChsZXRcbiAgICAgW2xpbmVzXG4gICAgICAoaWZcbiAgICAgICAoYW5kIChzZXEgbGluZSkgKG5vdD0gbGluZSAobGFzdCBsaW5lcykpKVxuICAgICAgIChjb25qIGxpbmVzIGxpbmUpXG4gICAgICAgbGluZXMpXVxuICAgICAoYXNzb2NcbiAgICAgIGNvbnNvbGUtaGlzdG9yeVxuICAgICAgOmN1cnJlbnQtbGluZVxuICAgICAgKGNvdW50IGxpbmVzKVxuICAgICAgOmxpbmVzXG4gICAgICBsaW5lcykpKSkpKVxuIn0gezpzeW0gZ2V0LXByZXZpb3VzLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcmV2aW91cyBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1wcmV2aW91cy1saW5lXG4gXCJSZXR1cm5zIHRoZSBwcmV2aW91cyBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqY29uc29sZS1oaXN0b3J5XVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1saW5lIGxpbmVzXX0gQCpjb25zb2xlLWhpc3RvcnldXG4gIChnZXQgbGluZXMgKGRlYyBjdXJyZW50LWxpbmUpKSkpXG4ifSB7OnN5bSBnZXQtbmV4dC1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1uZXh0LWxpbmVcbiBcIlJldHVybnMgdGhlIG5leHQgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmNvbnNvbGUtaGlzdG9yeV1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtbGluZSBsaW5lc119IEAqY29uc29sZS1oaXN0b3J5XVxuICAoZ2V0IGxpbmVzIChpbmMgY3VycmVudC1saW5lKSkpKVxuIn0gezpzeW0gdXAhLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBsaW5lIGFuZCByZXR1cm5zIHRoZSBwcmV2aW91cyBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIHVwIVxuIFwiQ2hhbmdlcyB0aGUgY3VycmVudCBsaW5lIGFuZCByZXR1cm5zIHRoZSBwcmV2aW91cyBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqY29uc29sZS1oaXN0b3J5XVxuIChsZXRcbiAgW2xpbmUgKGdldC1wcmV2aW91cy1saW5lICpjb25zb2xlLWhpc3RvcnkpXVxuICAoaWZcbiAgIGxpbmVcbiAgIChzd2FwISAqY29uc29sZS1oaXN0b3J5IHVwZGF0ZSA6Y3VycmVudC1saW5lIGRlYylcbiAgIChzd2FwISAqY29uc29sZS1oaXN0b3J5IGFzc29jIDpjdXJyZW50LWxpbmUgLTEpKVxuICBsaW5lKSlcbiJ9IHs6c3ltIGRvd24hLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBsaW5lIGFuZCByZXR1cm5zIHRoZSBuZXh0IGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZG93biFcbiBcIkNoYW5nZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqY29uc29sZS1oaXN0b3J5XVxuIChsZXRcbiAgW2xpbmUgKGdldC1uZXh0LWxpbmUgKmNvbnNvbGUtaGlzdG9yeSldXG4gIChpZlxuICAgbGluZVxuICAgKHN3YXAhICpjb25zb2xlLWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LWxpbmUgaW5jKVxuICAgKHN3YXAhXG4gICAgKmNvbnNvbGUtaGlzdG9yeVxuICAgIGFzc29jXG4gICAgOmN1cnJlbnQtbGluZVxuICAgICgtPiBAKmNvbnNvbGUtaGlzdG9yeSA6bGluZXMgY291bnQpKSlcbiAgbGluZSkpXG4ifSksIHBsYXktY2xqYy5nbC5leGFtcGxlcy10ZXh0ICh7OnN5bSBsb2FkLXJvYm90bywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjYWxsYmFja10pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb2FkLXJvYm90b1xuIFtjYWxsYmFja11cbiAoIz8oOmNsaiBsb2FkLWZvbnQtY2xqIDpjbGpzIGxvYWQtZm9udC1jbGpzKSA6cm9ib3RvIGNhbGxiYWNrKSlcbiJ9IHs6c3ltIGluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0XG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIEJMRU5EKSlcbiAoZ2wgZ2FtZSBibGVuZEZ1bmMgKGdsIGdhbWUgU1JDX0FMUEhBKSAoZ2wgZ2FtZSBPTkVfTUlOVVNfU1JDX0FMUEhBKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSkpXG4ifSksIGNsanMuY29yZS5hc3luYyAoezpzeW0gUHViLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoc3ViKiB1bnN1YiogdW5zdWItYWxsKil9IHs6c3ltIHJlZHVjZSwgOm1ldGEgezpkb2MgImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIFJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmdcbiAgdGhlIHNpbmdsZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0IGFuZCB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZVxuICBjaGFubmVsLCB0aGVuIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZlxuICB0aGUgY2hhbm5lbCBjbG9zZXMgd2l0aG91dCB5aWVsZGluZyBpdGVtcywgcmV0dXJucyBpbml0IGFuZCBmIGlzIG5vdFxuICBjYWxsZWQuIGNoIG11c3QgY2xvc2UgYmVmb3JlIHJlZHVjZSBwcm9kdWNlcyBhIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtmIGluaXQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWNlXG4gXCJmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDIgYXJndW1lbnRzLiBSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nXFxuICB0aGUgc2luZ2xlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlXFxuICBjaGFubmVsLCB0aGVuIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZlxcbiAgdGhlIGNoYW5uZWwgY2xvc2VzIHdpdGhvdXQgeWllbGRpbmcgaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3RcXG4gIGNhbGxlZC4gY2ggbXVzdCBjbG9zZSBiZWZvcmUgcmVkdWNlIHByb2R1Y2VzIGEgcmVzdWx0LlwiXG4gW2YgaW5pdCBjaF1cbiAoZ28tbG9vcFxuICBbcmV0IGluaXRdXG4gIChsZXRcbiAgIFt2ICg8ISBjaCldXG4gICAoaWZcbiAgICAobmlsPyB2KVxuICAgIHJldFxuICAgIChsZXQgW3JldCcgKGYgcmV0IHYpXSAoaWYgKHJlZHVjZWQ/IHJldCcpIEByZXQnIChyZWN1ciByZXQnKSkpKSkpKVxuIn0gezpzeW0gcmVtb3ZlPiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyAoW3AgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlPlxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiBbcCBjaF1cbiAoZmlsdGVyPiAoY29tcGxlbWVudCBwKSBjaCkpXG4ifSB7OnN5bSB0aW1lb3V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIGNsb3NlIGFmdGVyIG1zZWNzIiwgOmFyZ2xpc3RzIChbbXNlY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGltZW91dFxuIFwiUmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIGNsb3NlIGFmdGVyIG1zZWNzXCJcbiBbbXNlY3NdXG4gKHRpbWVycy90aW1lb3V0IG1zZWNzKSlcbiJ9IHs6c3ltIHVuc3ViKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIHYgY2hdKX0sIDpwcm90b2NvbCBQdWJ9IHs6c3ltIGFkbWl4KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIGNoXSl9LCA6cHJvdG9jb2wgTWl4fSB7OnN5bSB1bm1peCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBjaF0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gbWl4LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG1peCBvZiBvbmUgb3IgbW9yZSBpbnB1dCBjaGFubmVscyB3aGljaCB3aWxsXG4gIGJlIHB1dCBvbiB0aGUgc3VwcGxpZWQgb3V0IGNoYW5uZWwuIElucHV0IHNvdXJjZXMgY2FuIGJlIGFkZGVkIHRvXG4gIHRoZSBtaXggd2l0aCAnYWRtaXgnLCBhbmQgcmVtb3ZlZCB3aXRoICd1bm1peCcuIEEgbWl4IHN1cHBvcnRzXG4gIHNvbG9pbmcsIG11dGluZyBhbmQgcGF1c2luZyBtdWx0aXBsZSBpbnB1dHMgYXRvbWljYWxseSB1c2luZ1xuICAndG9nZ2xlJywgYW5kIGNhbiBzb2xvIHVzaW5nIGVpdGhlciBtdXRpbmcgb3IgcGF1c2luZyBhcyBkZXRlcm1pbmVkXG4gIGJ5ICdzb2xvLW1vZGUnLlxuXG4gIEVhY2ggY2hhbm5lbCBjYW4gaGF2ZSB6ZXJvIG9yIG1vcmUgYm9vbGVhbiBtb2RlcyBzZXQgdmlhICd0b2dnbGUnOlxuXG4gIDpzb2xvIC0gd2hlbiB0cnVlLCBvbmx5IHRoaXMgKG9uZCBvdGhlciBzb2xvZWQpIGNoYW5uZWwocykgd2lsbCBhcHBlYXJcbiAgICAgICAgICBpbiB0aGUgbWl4IG91dHB1dCBjaGFubmVsLiA6bXV0ZSBhbmQgOnBhdXNlIHN0YXRlcyBvZiBzb2xvZWRcbiAgICAgICAgICBjaGFubmVscyBhcmUgaWdub3JlZC4gSWYgc29sby1tb2RlIGlzIDptdXRlLCBub24tc29sb2VkXG4gICAgICAgICAgY2hhbm5lbHMgYXJlIG11dGVkLCBpZiA6cGF1c2UsIG5vbi1zb2xvZWQgY2hhbm5lbHMgYXJlXG4gICAgICAgICAgcGF1c2VkLlxuXG4gIDptdXRlIC0gbXV0ZWQgY2hhbm5lbHMgd2lsbCBoYXZlIHRoZWlyIGNvbnRlbnRzIGNvbnN1bWVkIGJ1dCBub3QgaW5jbHVkZWQgaW4gdGhlIG1peFxuICA6cGF1c2UgLSBwYXVzZWQgY2hhbm5lbHMgd2lsbCBub3QgaGF2ZSB0aGVpciBjb250ZW50cyBjb25zdW1lZCAoYW5kIHRodXMgYWxzbyBub3QgaW5jbHVkZWQgaW4gdGhlIG1peClcbiIsIDphcmdsaXN0cyAoW291dF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXhcbiBcIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBtaXggb2Ygb25lIG9yIG1vcmUgaW5wdXQgY2hhbm5lbHMgd2hpY2ggd2lsbFxcbiAgYmUgcHV0IG9uIHRoZSBzdXBwbGllZCBvdXQgY2hhbm5lbC4gSW5wdXQgc291cmNlcyBjYW4gYmUgYWRkZWQgdG9cXG4gIHRoZSBtaXggd2l0aCAnYWRtaXgnLCBhbmQgcmVtb3ZlZCB3aXRoICd1bm1peCcuIEEgbWl4IHN1cHBvcnRzXFxuICBzb2xvaW5nLCBtdXRpbmcgYW5kIHBhdXNpbmcgbXVsdGlwbGUgaW5wdXRzIGF0b21pY2FsbHkgdXNpbmdcXG4gICd0b2dnbGUnLCBhbmQgY2FuIHNvbG8gdXNpbmcgZWl0aGVyIG11dGluZyBvciBwYXVzaW5nIGFzIGRldGVybWluZWRcXG4gIGJ5ICdzb2xvLW1vZGUnLlxcblxcbiAgRWFjaCBjaGFubmVsIGNhbiBoYXZlIHplcm8gb3IgbW9yZSBib29sZWFuIG1vZGVzIHNldCB2aWEgJ3RvZ2dsZSc6XFxuXFxuICA6c29sbyAtIHdoZW4gdHJ1ZSwgb25seSB0aGlzIChvbmQgb3RoZXIgc29sb2VkKSBjaGFubmVsKHMpIHdpbGwgYXBwZWFyXFxuICAgICAgICAgIGluIHRoZSBtaXggb3V0cHV0IGNoYW5uZWwuIDptdXRlIGFuZCA6cGF1c2Ugc3RhdGVzIG9mIHNvbG9lZFxcbiAgICAgICAgICBjaGFubmVscyBhcmUgaWdub3JlZC4gSWYgc29sby1tb2RlIGlzIDptdXRlLCBub24tc29sb2VkXFxuICAgICAgICAgIGNoYW5uZWxzIGFyZSBtdXRlZCwgaWYgOnBhdXNlLCBub24tc29sb2VkIGNoYW5uZWxzIGFyZVxcbiAgICAgICAgICBwYXVzZWQuXFxuXFxuICA6bXV0ZSAtIG11dGVkIGNoYW5uZWxzIHdpbGwgaGF2ZSB0aGVpciBjb250ZW50cyBjb25zdW1lZCBidXQgbm90IGluY2x1ZGVkIGluIHRoZSBtaXhcXG4gIDpwYXVzZSAtIHBhdXNlZCBjaGFubmVscyB3aWxsIG5vdCBoYXZlIHRoZWlyIGNvbnRlbnRzIGNvbnN1bWVkIChhbmQgdGh1cyBhbHNvIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWl4KVxcblwiXG4gW291dF1cbiAobGV0XG4gIFtjc1xuICAgKGF0b20ge30pXG4gICBzb2xvLW1vZGVzXG4gICAjezpwYXVzZSA6bXV0ZX1cbiAgIGF0dHJzXG4gICAoY29uaiBzb2xvLW1vZGVzIDpzb2xvKVxuICAgc29sby1tb2RlXG4gICAoYXRvbSA6bXV0ZSlcbiAgIGNoYW5nZVxuICAgKGNoYW4gKHNsaWRpbmctYnVmZmVyIDEpKVxuICAgY2hhbmdlZFxuICAgKGZuKiBbXSAocHV0ISBjaGFuZ2UgdHJ1ZSkpXG4gICBwaWNrXG4gICAoZm5cbiAgICBbYXR0ciBjaHNdXG4gICAgKHJlZHVjZS1rdiAoZm4gW3JldCBjIHZdIChpZiAoYXR0ciB2KSAoY29uaiByZXQgYykgcmV0KSkgI3t9IGNocykpXG4gICBjYWxjLXN0YXRlXG4gICAoZm5cbiAgICBbXVxuICAgIChsZXRcbiAgICAgW2Noc1xuICAgICAgQGNzXG4gICAgICBtb2RlXG4gICAgICBAc29sby1tb2RlXG4gICAgICBzb2xvc1xuICAgICAgKHBpY2sgOnNvbG8gY2hzKVxuICAgICAgcGF1c2VzXG4gICAgICAocGljayA6cGF1c2UgY2hzKV1cbiAgICAgezpzb2xvcyBzb2xvcyxcbiAgICAgIDptdXRlcyAocGljayA6bXV0ZSBjaHMpLFxuICAgICAgOnJlYWRzXG4gICAgICAoY29ualxuICAgICAgIChpZlxuICAgICAgICAoYW5kICg9IG1vZGUgOnBhdXNlKSAobm90IChlbXB0eT8gc29sb3MpKSlcbiAgICAgICAgKHZlYyBzb2xvcylcbiAgICAgICAgKHZlYyAocmVtb3ZlIHBhdXNlcyAoa2V5cyBjaHMpKSkpXG4gICAgICAgY2hhbmdlKX0pKVxuICAgbVxuICAgKHJlaWZ5XG4gICAgTXV4XG4gICAgKG11eGNoKiBbX10gb3V0KVxuICAgIE1peFxuICAgIChhZG1peCogW18gY2hdIChzd2FwISBjcyBhc3NvYyBjaCB7fSkgKGNoYW5nZWQpKVxuICAgICh1bm1peCogW18gY2hdIChzd2FwISBjcyBkaXNzb2MgY2gpIChjaGFuZ2VkKSlcbiAgICAodW5taXgtYWxsKiBbX10gKHJlc2V0ISBjcyB7fSkgKGNoYW5nZWQpKVxuICAgICh0b2dnbGUqXG4gICAgIFtfIHN0YXRlLW1hcF1cbiAgICAgKHN3YXAhIGNzIChwYXJ0aWFsIG1lcmdlLXdpdGggY2xqcy5jb3JlL21lcmdlKSBzdGF0ZS1tYXApXG4gICAgIChjaGFuZ2VkKSlcbiAgICAoc29sby1tb2RlKlxuICAgICBbXyBtb2RlXVxuICAgICAoYXNzZXJ0XG4gICAgICAoc29sby1tb2RlcyBtb2RlKVxuICAgICAgKHN0ciBcIm1vZGUgbXVzdCBiZSBvbmUgb2Y6IFwiIHNvbG8tbW9kZXMpKVxuICAgICAocmVzZXQhIHNvbG8tbW9kZSBtb2RlKVxuICAgICAoY2hhbmdlZCkpKV1cbiAgKGdvLWxvb3BcbiAgIFt7OmtleXMgW3NvbG9zIG11dGVzIHJlYWRzXSwgOmFzIHN0YXRlfSAoY2FsYy1zdGF0ZSldXG4gICAobGV0XG4gICAgW1t2IGNdIChhbHRzISByZWFkcyldXG4gICAgKGlmXG4gICAgIChvciAobmlsPyB2KSAoPSBjIGNoYW5nZSkpXG4gICAgIChkbyAod2hlbiAobmlsPyB2KSAoc3dhcCEgY3MgZGlzc29jIGMpKSAocmVjdXIgKGNhbGMtc3RhdGUpKSlcbiAgICAgKGlmXG4gICAgICAob3IgKHNvbG9zIGMpIChhbmQgKGVtcHR5PyBzb2xvcykgKG5vdCAobXV0ZXMgYykpKSlcbiAgICAgICh3aGVuICg+ISBvdXQgdikgKHJlY3VyIHN0YXRlKSlcbiAgICAgIChyZWN1ciBzdGF0ZSkpKSkpXG4gIG0pKVxuIn0gezpzeW0gcHViLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIHB1YihsaWNhdGlvbikgb2YgdGhlIHN1cHBsaWVkIGNoYW5uZWwsXG4gIHBhcnRpdGlvbmVkIGludG8gdG9waWNzIGJ5IHRoZSB0b3BpYy1mbi4gdG9waWMtZm4gd2lsbCBiZSBhcHBsaWVkIHRvXG4gIGVhY2ggdmFsdWUgb24gdGhlIGNoYW5uZWwgYW5kIHRoZSByZXN1bHQgd2lsbCBkZXRlcm1pbmUgdGhlICd0b3BpYydcbiAgb24gd2hpY2ggdGhhdCB2YWx1ZSB3aWxsIGJlIHB1dC4gQ2hhbm5lbHMgY2FuIGJlIHN1YnNjcmliZWQgdG9cbiAgcmVjZWl2ZSBjb3BpZXMgb2YgdG9waWNzIHVzaW5nICdzdWInLCBhbmQgdW5zdWJzY3JpYmVkIHVzaW5nXG4gICd1bnN1YicuIEVhY2ggdG9waWMgd2lsbCBiZSBoYW5kbGVkIGJ5IGFuIGludGVybmFsIG11bHQgb24gYVxuICBkZWRpY2F0ZWQgY2hhbm5lbC4gQnkgZGVmYXVsdCB0aGVzZSBpbnRlcm5hbCBjaGFubmVscyBhcmVcbiAgdW5idWZmZXJlZCwgYnV0IGEgYnVmLWZuIGNhbiBiZSBzdXBwbGllZCB3aGljaCwgZ2l2ZW4gYSB0b3BpYyxcbiAgY3JlYXRlcyBhIGJ1ZmZlciB3aXRoIGRlc2lyZWQgcHJvcGVydGllcy5cblxuICBFYWNoIGl0ZW0gaXMgZGlzdHJpYnV0ZWQgdG8gYWxsIHN1YnMgaW4gcGFyYWxsZWwgYW5kIHN5bmNocm9ub3VzbHksXG4gIGkuZS4gZWFjaCBzdWIgbXVzdCBhY2NlcHQgYmVmb3JlIHRoZSBuZXh0IGl0ZW0gaXMgZGlzdHJpYnV0ZWQuIFVzZVxuICBidWZmZXJpbmcvd2luZG93aW5nIHRvIHByZXZlbnQgc2xvdyBzdWJzIGZyb20gaG9sZGluZyB1cCB0aGUgcHViLlxuXG4gIEl0ZW1zIHJlY2VpdmVkIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIHN1YnMgZ2V0IGRyb3BwZWQuXG5cbiAgTm90ZSB0aGF0IGlmIGJ1Zi1mbnMgYXJlIHVzZWQgdGhlbiBlYWNoIHRvcGljIGlzIGhhbmRsZWRcbiAgYXN5bmNocm9ub3VzbHksIGkuZS4gaWYgYSBjaGFubmVsIGlzIHN1YnNjcmliZWQgdG8gbW9yZSB0aGFuIG9uZVxuICB0b3BpYyBpdCBzaG91bGQgbm90IGV4cGVjdCB0aGVtIHRvIGJlIGludGVybGVhdmVkIGlkZW50aWNhbGx5IHdpdGhcbiAgdGhlIHNvdXJjZS4iLCA6YXJnbGlzdHMgW1tjaCB0b3BpYy1mbl0gW2NoIHRvcGljLWZuIGJ1Zi1mbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwdWJcbiBcIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBwdWIobGljYXRpb24pIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsLFxcbiAgcGFydGl0aW9uZWQgaW50byB0b3BpY3MgYnkgdGhlIHRvcGljLWZuLiB0b3BpYy1mbiB3aWxsIGJlIGFwcGxpZWQgdG9cXG4gIGVhY2ggdmFsdWUgb24gdGhlIGNoYW5uZWwgYW5kIHRoZSByZXN1bHQgd2lsbCBkZXRlcm1pbmUgdGhlICd0b3BpYydcXG4gIG9uIHdoaWNoIHRoYXQgdmFsdWUgd2lsbCBiZSBwdXQuIENoYW5uZWxzIGNhbiBiZSBzdWJzY3JpYmVkIHRvXFxuICByZWNlaXZlIGNvcGllcyBvZiB0b3BpY3MgdXNpbmcgJ3N1YicsIGFuZCB1bnN1YnNjcmliZWQgdXNpbmdcXG4gICd1bnN1YicuIEVhY2ggdG9waWMgd2lsbCBiZSBoYW5kbGVkIGJ5IGFuIGludGVybmFsIG11bHQgb24gYVxcbiAgZGVkaWNhdGVkIGNoYW5uZWwuIEJ5IGRlZmF1bHQgdGhlc2UgaW50ZXJuYWwgY2hhbm5lbHMgYXJlXFxuICB1bmJ1ZmZlcmVkLCBidXQgYSBidWYtZm4gY2FuIGJlIHN1cHBsaWVkIHdoaWNoLCBnaXZlbiBhIHRvcGljLFxcbiAgY3JlYXRlcyBhIGJ1ZmZlciB3aXRoIGRlc2lyZWQgcHJvcGVydGllcy5cXG5cXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgc3VicyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcXG4gIGkuZS4gZWFjaCBzdWIgbXVzdCBhY2NlcHQgYmVmb3JlIHRoZSBuZXh0IGl0ZW0gaXMgZGlzdHJpYnV0ZWQuIFVzZVxcbiAgYnVmZmVyaW5nL3dpbmRvd2luZyB0byBwcmV2ZW50IHNsb3cgc3VicyBmcm9tIGhvbGRpbmcgdXAgdGhlIHB1Yi5cXG5cXG4gIEl0ZW1zIHJlY2VpdmVkIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIHN1YnMgZ2V0IGRyb3BwZWQuXFxuXFxuICBOb3RlIHRoYXQgaWYgYnVmLWZucyBhcmUgdXNlZCB0aGVuIGVhY2ggdG9waWMgaXMgaGFuZGxlZFxcbiAgYXN5bmNocm9ub3VzbHksIGkuZS4gaWYgYSBjaGFubmVsIGlzIHN1YnNjcmliZWQgdG8gbW9yZSB0aGFuIG9uZVxcbiAgdG9waWMgaXQgc2hvdWxkIG5vdCBleHBlY3QgdGhlbSB0byBiZSBpbnRlcmxlYXZlZCBpZGVudGljYWxseSB3aXRoXFxuICB0aGUgc291cmNlLlwiXG4gKFtjaCB0b3BpYy1mbl0gKHB1YiBjaCB0b3BpYy1mbiAoY29uc3RhbnRseSBuaWwpKSlcbiAoW2NoIHRvcGljLWZuIGJ1Zi1mbl1cbiAgKGxldFxuICAgW211bHRzXG4gICAgKGF0b20ge30pXG4gICAgZW5zdXJlLW11bHRcbiAgICAoZm5cbiAgICAgW3RvcGljXVxuICAgICAob3JcbiAgICAgIChnZXQgQG11bHRzIHRvcGljKVxuICAgICAgKGdldFxuICAgICAgIChzd2FwIVxuICAgICAgICBtdWx0c1xuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQ1MTI3I11cbiAgICAgICAgIChpZlxuICAgICAgICAgIChwMV9fNDUxMjcjIHRvcGljKVxuICAgICAgICAgIHAxX180NTEyNyNcbiAgICAgICAgICAoYXNzb2MgcDFfXzQ1MTI3IyB0b3BpYyAobXVsdCAoY2hhbiAoYnVmLWZuIHRvcGljKSkpKSkpKVxuICAgICAgIHRvcGljKSkpXG4gICAgcFxuICAgIChyZWlmeVxuICAgICBNdXhcbiAgICAgKG11eGNoKiBbX10gY2gpXG4gICAgIFB1YlxuICAgICAoc3ViKlxuICAgICAgW3AgdG9waWMgY2ggY2xvc2U/XVxuICAgICAgKGxldCBbbSAoZW5zdXJlLW11bHQgdG9waWMpXSAodGFwIG0gY2ggY2xvc2U/KSkpXG4gICAgICh1bnN1YipcbiAgICAgIFtwIHRvcGljIGNoXVxuICAgICAgKHdoZW4tbGV0IFttIChnZXQgQG11bHRzIHRvcGljKV0gKHVudGFwIG0gY2gpKSlcbiAgICAgKHVuc3ViLWFsbCogW19dIChyZXNldCEgbXVsdHMge30pKVxuICAgICAodW5zdWItYWxsKiBbXyB0b3BpY10gKHN3YXAhIG11bHRzIGRpc3NvYyB0b3BpYykpKV1cbiAgIChnby1sb29wXG4gICAgW11cbiAgICAobGV0XG4gICAgIFt2YWwgKDwhIGNoKV1cbiAgICAgKGlmXG4gICAgICAobmlsPyB2YWwpXG4gICAgICAoZG9zZXEgW20gKHZhbHMgQG11bHRzKV0gKGNsb3NlISAobXV4Y2gqIG0pKSlcbiAgICAgIChsZXRcbiAgICAgICBbdG9waWMgKHRvcGljLWZuIHZhbCkgbSAoZ2V0IEBtdWx0cyB0b3BpYyldXG4gICAgICAgKHdoZW5cbiAgICAgICAgbVxuICAgICAgICAod2hlbi1ub3QgKD4hIChtdXhjaCogbSkgdmFsKSAoc3dhcCEgbXVsdHMgZGlzc29jIHRvcGljKSkpXG4gICAgICAgKHJlY3VyKSkpKSlcbiAgIHApKSlcbiJ9IHs6c3ltIHRha2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgcmV0dXJuLCBhdCBtb3N0LCBuIGl0ZW1zIGZyb20gY2guIEFmdGVyIG4gaXRlbXNcbiAgIGhhdmUgYmVlbiByZXR1cm5lZCwgb3IgY2ggaGFzIGJlZW4gY2xvc2VkLCB0aGUgcmV0dXJuIGNoYW5lbCB3aWxsIGNsb3NlLlxuXG4gIFRoZSBvdXRwdXQgY2hhbm5lbCBpcyB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIHVubGVzcyBidWYtb3ItbiBpcyBnaXZlbi4iLCA6YXJnbGlzdHMgW1tuIGNoXSBbbiBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWtlXG4gXCJSZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgcmV0dXJuLCBhdCBtb3N0LCBuIGl0ZW1zIGZyb20gY2guIEFmdGVyIG4gaXRlbXNcXG4gICBoYXZlIGJlZW4gcmV0dXJuZWQsIG9yIGNoIGhhcyBiZWVuIGNsb3NlZCwgdGhlIHJldHVybiBjaGFuZWwgd2lsbCBjbG9zZS5cXG5cXG4gIFRoZSBvdXRwdXQgY2hhbm5lbCBpcyB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIHVubGVzcyBidWYtb3ItbiBpcyBnaXZlbi5cIlxuIChbbiBjaF0gKHRha2UgbiBjaCBuaWwpKVxuIChbbiBjaCBidWYtb3Itbl1cbiAgKGxldFxuICAgW291dCAoY2hhbiBidWYtb3ItbildXG4gICAoZ29cbiAgICAobG9vcFxuICAgICBbeCAwXVxuICAgICAod2hlblxuICAgICAgKDwgeCBuKVxuICAgICAgKGxldFxuICAgICAgIFt2ICg8ISBjaCldXG4gICAgICAgKHdoZW4gKG5vdCAobmlsPyB2KSkgKD4hIG91dCB2KSAocmVjdXIgKGluYyB4KSkpKSkpXG4gICAgKGNsb3NlISBvdXQpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSB1bnN1Yi1hbGwqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BdIFtwIHZdKX0sIDpwcm90b2NvbCBQdWJ9IHs6c3ltIDwhLCA6bWV0YSB7OmRvYyAidGFrZXMgYSB2YWwgZnJvbSBwb3J0LiBNdXN0IGJlIGNhbGxlZCBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gV2lsbFxuICByZXR1cm4gbmlsIGlmIGNsb3NlZC4gV2lsbCBwYXJrIGlmIG5vdGhpbmcgaXMgYXZhaWxhYmxlLlxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWQiLCA6YXJnbGlzdHMgKFtwb3J0XSl9LCA6c291cmNlICIoZGVmblxuIDwhXG4gXCJ0YWtlcyBhIHZhbCBmcm9tIHBvcnQuIE11c3QgYmUgY2FsbGVkIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBXaWxsXFxuICByZXR1cm4gbmlsIGlmIGNsb3NlZC4gV2lsbCBwYXJrIGlmIG5vdGhpbmcgaXMgYXZhaWxhYmxlLlxcbiAgUmV0dXJucyB0cnVlIHVubGVzcyBwb3J0IGlzIGFscmVhZHkgY2xvc2VkXCJcbiBbcG9ydF1cbiAodGhyb3cgKGpzL0Vycm9yLiBcIjwhIHVzZWQgbm90IGluIChnbyAuLi4pIGJsb2NrXCIpKSlcbiJ9IHs6c3ltIG1hcCwgOm1ldGEgezpkb2MgIlRha2VzIGEgZnVuY3Rpb24gYW5kIGEgY29sbGVjdGlvbiBvZiBzb3VyY2UgY2hhbm5lbHMsIGFuZCByZXR1cm5zIGFcbiAgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgdmFsdWVzIHByb2R1Y2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlIHNldFxuICBvZiBmaXJzdCBpdGVtcyB0YWtlbiBmcm9tIGVhY2ggc291cmNlIGNoYW5uZWwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nXG4gIGYgdG8gdGhlIHNldCBvZiBzZWNvbmQgaXRlbXMgZnJvbSBlYWNoIGNoYW5uZWwsIHVudGlsIGFueSBvbmUgb2YgdGhlXG4gIGNoYW5uZWxzIGlzIGNsb3NlZCwgYXQgd2hpY2ggcG9pbnQgdGhlIG91dHB1dCBjaGFubmVsIHdpbGwgYmVcbiAgY2xvc2VkLiBUaGUgcmV0dXJuZWQgY2hhbm5lbCB3aWxsIGJlIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgYVxuICBidWYtb3ItbiBjYW4gYmUgc3VwcGxpZWQiLCA6YXJnbGlzdHMgW1tmIGNoc10gW2YgY2hzIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIG1hcFxuIFwiVGFrZXMgYSBmdW5jdGlvbiBhbmQgYSBjb2xsZWN0aW9uIG9mIHNvdXJjZSBjaGFubmVscywgYW5kIHJldHVybnMgYVxcbiAgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgdmFsdWVzIHByb2R1Y2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlIHNldFxcbiAgb2YgZmlyc3QgaXRlbXMgdGFrZW4gZnJvbSBlYWNoIHNvdXJjZSBjaGFubmVsLCBmb2xsb3dlZCBieSBhcHBseWluZ1xcbiAgZiB0byB0aGUgc2V0IG9mIHNlY29uZCBpdGVtcyBmcm9tIGVhY2ggY2hhbm5lbCwgdW50aWwgYW55IG9uZSBvZiB0aGVcXG4gIGNoYW5uZWxzIGlzIGNsb3NlZCwgYXQgd2hpY2ggcG9pbnQgdGhlIG91dHB1dCBjaGFubmVsIHdpbGwgYmVcXG4gIGNsb3NlZC4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZSB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIGFcXG4gIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZFwiXG4gKFtmIGNoc10gKG1hcCBmIGNocyBuaWwpKVxuIChbZiBjaHMgYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtjaHNcbiAgICAodmVjIGNocylcbiAgICBvdXRcbiAgICAoY2hhbiBidWYtb3ItbilcbiAgICBjbnRcbiAgICAoY291bnQgY2hzKVxuICAgIHJldHNcbiAgICAob2JqZWN0LWFycmF5IGNudClcbiAgICBkY2hhblxuICAgIChjaGFuIDEpXG4gICAgZGN0clxuICAgIChhdG9tIG5pbClcbiAgICBkb25lXG4gICAgKG1hcHZcbiAgICAgKGZuXG4gICAgICBbaV1cbiAgICAgIChmblxuICAgICAgIFtyZXRdXG4gICAgICAgKGFzZXQgcmV0cyBpIHJldClcbiAgICAgICAod2hlbiAoemVybz8gKHN3YXAhIGRjdHIgZGVjKSkgKHB1dCEgZGNoYW4gKC5zbGljZSByZXRzIDApKSkpKVxuICAgICAocmFuZ2UgY250KSldXG4gICAoZ28tbG9vcFxuICAgIFtdXG4gICAgKHJlc2V0ISBkY3RyIGNudClcbiAgICAoZG90aW1lc1xuICAgICBbaSBjbnRdXG4gICAgICh0cnlcbiAgICAgICh0YWtlISAoY2hzIGkpIChkb25lIGkpKVxuICAgICAgKGNhdGNoIGpzL09iamVjdCBlIChzd2FwISBkY3RyIGRlYykpKSlcbiAgICAobGV0XG4gICAgIFtyZXRzICg8ISBkY2hhbildXG4gICAgIChpZlxuICAgICAgKHNvbWUgbmlsPyByZXRzKVxuICAgICAgKGNsb3NlISBvdXQpXG4gICAgICAoZG8gKD4hIG91dCAoYXBwbHkgZiByZXRzKSkgKHJlY3VyKSkpKSlcbiAgIG91dCkpKVxuIn0gezpzeW0gTXV4LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAobXV4Y2gqKX0gezpzeW0gbWFwY2F0PiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW2Ygb3V0XSBbZiBvdXQgYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwY2F0PlxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW2Ygb3V0XSAobWFwY2F0PiBmIG91dCBuaWwpKVxuIChbZiBvdXQgYnVmLW9yLW5dIChsZXQgW2luIChjaGFuIGJ1Zi1vci1uKV0gKG1hcGNhdCogZiBpbiBvdXQpIGluKSkpXG4ifSB7OnN5bSBidWZmZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgZml4ZWQgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgYmxvY2svcGFyay4iLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGJ1ZmZlclxuIFwiUmV0dXJucyBhIGZpeGVkIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGJsb2NrL3BhcmsuXCJcbiBbbl1cbiAoYnVmZmVycy9maXhlZC1idWZmZXIgbikpXG4ifSB7OnN5bSBjbG9zZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcG9ydF1dfSwgOnNvdXJjZSAiKGRlZm4gY2xvc2UhIChbcG9ydF0gKGltcGwvY2xvc2UhIHBvcnQpKSlcbiJ9IHs6c3ltIG9mZmVyISwgOm1ldGEgezpkb2MgIlB1dHMgYSB2YWwgaW50byBwb3J0IGlmIGl0J3MgcG9zc2libGUgdG8gZG8gc28gaW1tZWRpYXRlbHkuXG4gIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBOZXZlciBibG9ja3MuIFJldHVybnMgdHJ1ZSBpZiBvZmZlciBzdWNjZWVkcy4iLCA6YXJnbGlzdHMgKFtwb3J0IHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvZmZlciFcbiBcIlB1dHMgYSB2YWwgaW50byBwb3J0IGlmIGl0J3MgcG9zc2libGUgdG8gZG8gc28gaW1tZWRpYXRlbHkuXFxuICBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gTmV2ZXIgYmxvY2tzLiBSZXR1cm5zIHRydWUgaWYgb2ZmZXIgc3VjY2VlZHMuXCJcbiBbcG9ydCB2YWxdXG4gKGxldFxuICBbcmV0IChpbXBsL3B1dCEgcG9ydCB2YWwgKGZuLWhhbmRsZXIgbm9wIGZhbHNlKSldXG4gICh3aGVuIHJldCBAcmV0KSkpXG4ifSB7OnN5bSBjaGFuLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIGNoYW5uZWwgd2l0aCBhbiBvcHRpb25hbCBidWZmZXIsIGFuIG9wdGlvbmFsIHRyYW5zZHVjZXIgKGxpa2UgKG1hcCBmKSxcbiAgKGZpbHRlciBwKSBldGMgb3IgYSBjb21wb3NpdGlvbiB0aGVyZW9mKSwgYW5kIGFuIG9wdGlvbmFsIGV4Y2VwdGlvbiBoYW5kbGVyLlxuICBJZiBidWYtb3ItbiBpcyBhIG51bWJlciwgd2lsbCBjcmVhdGUgYW5kIHVzZSBhIGZpeGVkIGJ1ZmZlciBvZiB0aGF0IHNpemUuIElmIGFcbiAgdHJhbnNkdWNlciBpcyBzdXBwbGllZCBhIGJ1ZmZlciBtdXN0IGJlIHNwZWNpZmllZC4gZXgtaGFuZGxlciBtdXN0IGJlIGFcbiAgZm4gb2Ygb25lIGFyZ3VtZW50IC0gaWYgYW4gZXhjZXB0aW9uIG9jY3VycyBkdXJpbmcgdHJhbnNmb3JtYXRpb24gaXQgd2lsbCBiZSBjYWxsZWRcbiAgd2l0aCB0aGUgdGhyb3duIHZhbHVlIGFzIGFuIGFyZ3VtZW50LCBhbmQgYW55IG5vbi1uaWwgcmV0dXJuIHZhbHVlIHdpbGwgYmUgcGxhY2VkXG4gIGluIHRoZSBjaGFubmVsLiIsIDphcmdsaXN0cyBbW10gW2J1Zi1vci1uXSBbYnVmLW9yLW4geGZvcm1dIFtidWYtb3ItbiB4Zm9ybSBleC1oYW5kbGVyXV19LCA6c291cmNlICIoZGVmblxuIGNoYW5cbiBcIkNyZWF0ZXMgYSBjaGFubmVsIHdpdGggYW4gb3B0aW9uYWwgYnVmZmVyLCBhbiBvcHRpb25hbCB0cmFuc2R1Y2VyIChsaWtlIChtYXAgZiksXFxuICAoZmlsdGVyIHApIGV0YyBvciBhIGNvbXBvc2l0aW9uIHRoZXJlb2YpLCBhbmQgYW4gb3B0aW9uYWwgZXhjZXB0aW9uIGhhbmRsZXIuXFxuICBJZiBidWYtb3ItbiBpcyBhIG51bWJlciwgd2lsbCBjcmVhdGUgYW5kIHVzZSBhIGZpeGVkIGJ1ZmZlciBvZiB0aGF0IHNpemUuIElmIGFcXG4gIHRyYW5zZHVjZXIgaXMgc3VwcGxpZWQgYSBidWZmZXIgbXVzdCBiZSBzcGVjaWZpZWQuIGV4LWhhbmRsZXIgbXVzdCBiZSBhXFxuICBmbiBvZiBvbmUgYXJndW1lbnQgLSBpZiBhbiBleGNlcHRpb24gb2NjdXJzIGR1cmluZyB0cmFuc2Zvcm1hdGlvbiBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgd2l0aCB0aGUgdGhyb3duIHZhbHVlIGFzIGFuIGFyZ3VtZW50LCBhbmQgYW55IG5vbi1uaWwgcmV0dXJuIHZhbHVlIHdpbGwgYmUgcGxhY2VkXFxuICBpbiB0aGUgY2hhbm5lbC5cIlxuIChbXSAoY2hhbiBuaWwpKVxuIChbYnVmLW9yLW5dIChjaGFuIGJ1Zi1vci1uIG5pbCBuaWwpKVxuIChbYnVmLW9yLW4geGZvcm1dIChjaGFuIGJ1Zi1vci1uIHhmb3JtIG5pbCkpXG4gKFtidWYtb3ItbiB4Zm9ybSBleC1oYW5kbGVyXVxuICAobGV0XG4gICBbYnVmLW9yLW4gKGlmICg9IGJ1Zi1vci1uIDApIG5pbCBidWYtb3ItbildXG4gICAod2hlblxuICAgIHhmb3JtXG4gICAgKGFzc2VydCBidWYtb3ItbiBcImJ1ZmZlciBtdXN0IGJlIHN1cHBsaWVkIHdoZW4gdHJhbnNkdWNlciBpc1wiKSlcbiAgIChjaGFubmVscy9jaGFuXG4gICAgKGlmIChudW1iZXI/IGJ1Zi1vci1uKSAoYnVmZmVyIGJ1Zi1vci1uKSBidWYtb3ItbilcbiAgICB4Zm9ybVxuICAgIGV4LWhhbmRsZXIpKSkpXG4ifSB7OnN5bSBzb2xvLW1vZGUqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gbW9kZV0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gb250by1jaGFuISwgOm1ldGEgezpkb2MgIlB1dHMgdGhlIGNvbnRlbnRzIG9mIGNvbGwgaW50byB0aGUgc3VwcGxpZWQgY2hhbm5lbC5cblxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHRoZSBpdGVtcyBhcmUgY29waWVkLFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuXG5cbiAgUmV0dXJucyBhIGNoYW5uZWwgd2hpY2ggd2lsbCBjbG9zZSBhZnRlciB0aGUgaXRlbXMgYXJlIGNvcGllZC4iLCA6YXJnbGlzdHMgW1tjaCBjb2xsXSBbY2ggY29sbCBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXG4gb250by1jaGFuIVxuIFwiUHV0cyB0aGUgY29udGVudHMgb2YgY29sbCBpbnRvIHRoZSBzdXBwbGllZCBjaGFubmVsLlxcblxcbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCBhZnRlciB0aGUgaXRlbXMgYXJlIGNvcGllZCxcXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci5cXG5cXG4gIFJldHVybnMgYSBjaGFubmVsIHdoaWNoIHdpbGwgY2xvc2UgYWZ0ZXIgdGhlIGl0ZW1zIGFyZSBjb3BpZWQuXCJcbiAoW2NoIGNvbGxdIChvbnRvLWNoYW4hIGNoIGNvbGwgdHJ1ZSkpXG4gKFtjaCBjb2xsIGNsb3NlP11cbiAgKGdvLWxvb3BcbiAgIFt2cyAoc2VxIGNvbGwpXVxuICAgKGlmXG4gICAgKGFuZCB2cyAoPiEgY2ggKGZpcnN0IHZzKSkpXG4gICAgKHJlY3VyIChuZXh0IHZzKSlcbiAgICAod2hlbiBjbG9zZT8gKGNsb3NlISBjaCkpKSkpKVxuIn0gezpzeW0gdGFwLCA6bWV0YSB7OmRvYyAiQ29waWVzIHRoZSBtdWx0IHNvdXJjZSBvbnRvIHRoZSBzdXBwbGllZCBjaGFubmVsLlxuXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgc291cmNlIGNsb3NlcyxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLiIsIDphcmdsaXN0cyBbW211bHQgY2hdIFttdWx0IGNoIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiB0YXBcbiBcIkNvcGllcyB0aGUgbXVsdCBzb3VyY2Ugb250byB0aGUgc3VwcGxpZWQgY2hhbm5lbC5cXG5cXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgc291cmNlIGNsb3NlcyxcXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci5cIlxuIChbbXVsdCBjaF0gKHRhcCBtdWx0IGNoIHRydWUpKVxuIChbbXVsdCBjaCBjbG9zZT9dICh0YXAqIG11bHQgY2ggY2xvc2U/KSBjaCkpXG4ifSB7OnN5bSBhZG1peCwgOm1ldGEgezpkb2MgIkFkZHMgY2ggYXMgYW4gaW5wdXQgdG8gdGhlIG1peCIsIDphcmdsaXN0cyAoW21peCBjaF0pfSwgOnNvdXJjZSAiKGRlZm4gYWRtaXggXCJBZGRzIGNoIGFzIGFuIGlucHV0IHRvIHRoZSBtaXhcIiBbbWl4IGNoXSAoYWRtaXgqIG1peCBjaCkpXG4ifSB7OnN5bSBwcm9taXNlLWNoYW4sIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgcHJvbWlzZSBjaGFubmVsIHdpdGggYW4gb3B0aW9uYWwgdHJhbnNkdWNlciwgYW5kIGFuIG9wdGlvbmFsXG4gIGV4Y2VwdGlvbi1oYW5kbGVyLiBBIHByb21pc2UgY2hhbm5lbCBjYW4gdGFrZSBleGFjdGx5IG9uZSB2YWx1ZSB0aGF0IGNvbnN1bWVyc1xuICB3aWxsIHJlY2VpdmUuIE9uY2UgZnVsbCwgcHV0cyBjb21wbGV0ZSBidXQgdmFsIGlzIGRyb3BwZWQgKG5vIHRyYW5zZmVyKS5cbiAgQ29uc3VtZXJzIHdpbGwgYmxvY2sgdW50aWwgZWl0aGVyIGEgdmFsdWUgaXMgcGxhY2VkIGluIHRoZSBjaGFubmVsIG9yIHRoZVxuICBjaGFubmVsIGlzIGNsb3NlZC4gU2VlIGNoYW4gZm9yIHRoZSBzZW1hbnRpY3Mgb2YgeGZvcm0gYW5kIGV4LWhhbmRsZXIuIiwgOmFyZ2xpc3RzIFtbXSBbeGZvcm1dIFt4Zm9ybSBleC1oYW5kbGVyXV19LCA6c291cmNlICIoZGVmblxuIHByb21pc2UtY2hhblxuIFwiQ3JlYXRlcyBhIHByb21pc2UgY2hhbm5lbCB3aXRoIGFuIG9wdGlvbmFsIHRyYW5zZHVjZXIsIGFuZCBhbiBvcHRpb25hbFxcbiAgZXhjZXB0aW9uLWhhbmRsZXIuIEEgcHJvbWlzZSBjaGFubmVsIGNhbiB0YWtlIGV4YWN0bHkgb25lIHZhbHVlIHRoYXQgY29uc3VtZXJzXFxuICB3aWxsIHJlY2VpdmUuIE9uY2UgZnVsbCwgcHV0cyBjb21wbGV0ZSBidXQgdmFsIGlzIGRyb3BwZWQgKG5vIHRyYW5zZmVyKS5cXG4gIENvbnN1bWVycyB3aWxsIGJsb2NrIHVudGlsIGVpdGhlciBhIHZhbHVlIGlzIHBsYWNlZCBpbiB0aGUgY2hhbm5lbCBvciB0aGVcXG4gIGNoYW5uZWwgaXMgY2xvc2VkLiBTZWUgY2hhbiBmb3IgdGhlIHNlbWFudGljcyBvZiB4Zm9ybSBhbmQgZXgtaGFuZGxlci5cIlxuIChbXSAocHJvbWlzZS1jaGFuIG5pbCkpXG4gKFt4Zm9ybV0gKHByb21pc2UtY2hhbiB4Zm9ybSBuaWwpKVxuIChbeGZvcm0gZXgtaGFuZGxlcl0gKGNoYW4gKGJ1ZmZlcnMvcHJvbWlzZS1idWZmZXIpIHhmb3JtIGV4LWhhbmRsZXIpKSlcbiJ9IHs6c3ltIHVuaXF1ZSwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW2NoXSBbY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5pcXVlXG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbY2hdICh1bmlxdWUgY2ggbmlsKSlcbiAoW2NoIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cbiAgIChnb1xuICAgIChsb29wXG4gICAgIFtsYXN0IG5pbF1cbiAgICAgKGxldFxuICAgICAgW3YgKDwhIGNoKV1cbiAgICAgICh3aGVuXG4gICAgICAgKG5vdCAobmlsPyB2KSlcbiAgICAgICAoaWYgKD0gdiBsYXN0KSAocmVjdXIgbGFzdCkgKGRvICg+ISBvdXQgdikgKHJlY3VyIHYpKSkpKSlcbiAgICAoY2xvc2UhIG91dCkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIG11eGNoKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtfXSl9LCA6cHJvdG9jb2wgTXV4fSB7OnN5bSBzb2xvLW1vZGUsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSBzb2xvIG1vZGUgb2YgdGhlIG1peC4gbW9kZSBtdXN0IGJlIG9uZSBvZiA6bXV0ZSBvciA6cGF1c2UiLCA6YXJnbGlzdHMgKFttaXggbW9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb2xvLW1vZGVcbiBcIlNldHMgdGhlIHNvbG8gbW9kZSBvZiB0aGUgbWl4LiBtb2RlIG11c3QgYmUgb25lIG9mIDptdXRlIG9yIDpwYXVzZVwiXG4gW21peCBtb2RlXVxuIChzb2xvLW1vZGUqIG1peCBtb2RlKSlcbiJ9IHs6c3ltIHRyYW5zZHVjZSwgOm1ldGEgezpkb2MgImFzeW5jL3JlZHVjZXMgYSBjaGFubmVsIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiAoeGZvcm0gZikuXG4gIFJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC4gIGNoIG11c3QgY2xvc2UgYmVmb3JlXG4gIHRyYW5zZHVjZSBwcm9kdWNlcyBhIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFt4Zm9ybSBmIGluaXQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNkdWNlXG4gXCJhc3luYy9yZWR1Y2VzIGEgY2hhbm5lbCB3aXRoIGEgdHJhbnNmb3JtYXRpb24gKHhmb3JtIGYpLlxcbiAgUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZyB0aGUgcmVzdWx0LiAgY2ggbXVzdCBjbG9zZSBiZWZvcmVcXG4gIHRyYW5zZHVjZSBwcm9kdWNlcyBhIHJlc3VsdC5cIlxuIFt4Zm9ybSBmIGluaXQgY2hdXG4gKGxldCBbZiAoeGZvcm0gZildIChnbyAobGV0IFtyZXQgKDwhIChyZWR1Y2UgZiBpbml0IGNoKSldIChmIHJldCkpKSkpXG4ifSB7OnN5bSBvbnRvLWNoYW4sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdXNlIG9udG8tY2hhbiEiLCA6YXJnbGlzdHMgW1tjaCBjb2xsXSBbY2ggY29sbCBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXG4gb250by1jaGFuXG4gXCJEZXByZWNhdGVkIC0gdXNlIG9udG8tY2hhbiFcIlxuIHs6ZGVwcmVjYXRlZCBcIjEuMlwifVxuIChbY2ggY29sbF0gKG9udG8tY2hhbiEgY2ggY29sbCB0cnVlKSlcbiAoW2NoIGNvbGwgY2xvc2U/XSAob250by1jaGFuISBjaCBjb2xsIGNsb3NlPykpKVxuIn0gezpzeW0gdG8tY2hhbiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB1c2UgdG8tY2hhbiEiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHRvLWNoYW5cbiBcIkRlcHJlY2F0ZWQgLSB1c2UgdG8tY2hhbiFcIlxuIHs6ZGVwcmVjYXRlZCBcIjEuMlwifVxuIFtjb2xsXVxuICh0by1jaGFuISBjb2xsKSlcbiJ9IHs6c3ltIGRyb3BwaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSBidXRcbiAgdmFsIHdpbGwgYmUgZHJvcHBlZCAobm8gdHJhbnNmZXIpLiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gZHJvcHBpbmctYnVmZmVyXG4gXCJSZXR1cm5zIGEgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgY29tcGxldGUgYnV0XFxuICB2YWwgd2lsbCBiZSBkcm9wcGVkIChubyB0cmFuc2ZlcikuXCJcbiBbbl1cbiAoYnVmZmVycy9kcm9wcGluZy1idWZmZXIgbikpXG4ifSB7OnN5bSB1bnRhcC1hbGwsIDptZXRhIHs6ZG9jICJEaXNjb25uZWN0cyBhbGwgdGFyZ2V0IGNoYW5uZWxzIGZyb20gYSBtdWx0IiwgOmFyZ2xpc3RzIChbbXVsdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bnRhcC1hbGxcbiBcIkRpc2Nvbm5lY3RzIGFsbCB0YXJnZXQgY2hhbm5lbHMgZnJvbSBhIG11bHRcIlxuIFttdWx0XVxuICh1bnRhcC1hbGwqIG11bHQpKVxuIn0gezpzeW0gaW50bywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHNpbmdsZSAoY29sbGVjdGlvbikgcmVzdWx0IG9mIHRoZVxuICBpdGVtcyB0YWtlbiBmcm9tIHRoZSBjaGFubmVsIGNvbmpvaW5lZCB0byB0aGUgc3VwcGxpZWRcbiAgY29sbGVjdGlvbi4gY2ggbXVzdCBjbG9zZSBiZWZvcmUgaW50byBwcm9kdWNlcyBhIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjb2xsIGNoXSl9LCA6c291cmNlICIoZGVmblxuIGludG9cbiBcIlJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHNpbmdsZSAoY29sbGVjdGlvbikgcmVzdWx0IG9mIHRoZVxcbiAgaXRlbXMgdGFrZW4gZnJvbSB0aGUgY2hhbm5lbCBjb25qb2luZWQgdG8gdGhlIHN1cHBsaWVkXFxuICBjb2xsZWN0aW9uLiBjaCBtdXN0IGNsb3NlIGJlZm9yZSBpbnRvIHByb2R1Y2VzIGEgcmVzdWx0LlwiXG4gW2NvbGwgY2hdXG4gKHJlZHVjZSBjb25qIGNvbGwgY2gpKVxuIn0gezpzeW0gdG8tY2hhbiEsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgY29udGVudHMgb2YgY29sbCxcbiAgY2xvc2luZyB3aGVuIGV4aGF1c3RlZC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHRvLWNoYW4hXG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgY29udGVudHMgb2YgY29sbCxcXG4gIGNsb3Npbmcgd2hlbiBleGhhdXN0ZWQuXCJcbiBbY29sbF1cbiAobGV0IFtjaCAoY2hhbiAoYm91bmRlZC1jb3VudCAxMDAgY29sbCkpXSAob250by1jaGFuISBjaCBjb2xsKSBjaCkpXG4ifSB7OnN5bSBwaXBlbGluZSwgOm1ldGEgezpkb2MgIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cbiAgY2hhbm5lbCwgc3ViamVjdCB0byB0aGUgdHJhbnNkdWNlciB4Ziwgd2l0aCBwYXJhbGxlbGlzbSBuLiBCZWNhdXNlXG4gIGl0IGlzIHBhcmFsbGVsLCB0aGUgdHJhbnNkdWNlciB3aWxsIGJlIGFwcGxpZWQgaW5kZXBlbmRlbnRseSB0byBlYWNoXG4gIGVsZW1lbnQsIG5vdCBhY3Jvc3MgZWxlbWVudHMsIGFuZCBtYXkgcHJvZHVjZSB6ZXJvIG9yIG1vcmUgb3V0cHV0c1xuICBwZXIgaW5wdXQuICBPdXRwdXRzIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgcmVsYXRpdmUgdG8gdGhlXG4gIGlucHV0cy4gQnkgZGVmYXVsdCwgdGhlIHRvIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbVxuICBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbFxuICBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbSBjaGFubmVsIGlmIHRoZSB0byBjaGFubmVsIGNsb3Nlcy5cblxuICBOb3RlIHRoaXMgaXMgc3VwcGxpZWQgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIENsb2p1cmUgdmVyc2lvbi5cbiAgVmFsdWVzIG9mIE4gPiAxIHdpbGwgbm90IHJlc3VsdCBpbiBhY3R1YWwgY29uY3VycmVuY3kgaW4gYVxuICBzaW5nbGUtdGhyZWFkZWQgcnVudGltZS4iLCA6YXJnbGlzdHMgW1tuIHRvIHhmIGZyb21dIFtuIHRvIHhmIGZyb20gY2xvc2U/XSBbbiB0byB4ZiBmcm9tIGNsb3NlPyBleC1oYW5kbGVyXV19LCA6c291cmNlICIoZGVmblxuIHBpcGVsaW5lXG4gXCJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXFxuICBjaGFubmVsLCBzdWJqZWN0IHRvIHRoZSB0cmFuc2R1Y2VyIHhmLCB3aXRoIHBhcmFsbGVsaXNtIG4uIEJlY2F1c2VcXG4gIGl0IGlzIHBhcmFsbGVsLCB0aGUgdHJhbnNkdWNlciB3aWxsIGJlIGFwcGxpZWQgaW5kZXBlbmRlbnRseSB0byBlYWNoXFxuICBlbGVtZW50LCBub3QgYWNyb3NzIGVsZW1lbnRzLCBhbmQgbWF5IHByb2R1Y2UgemVybyBvciBtb3JlIG91dHB1dHNcXG4gIHBlciBpbnB1dC4gIE91dHB1dHMgd2lsbCBiZSByZXR1cm5lZCBpbiBvcmRlciByZWxhdGl2ZSB0byB0aGVcXG4gIGlucHV0cy4gQnkgZGVmYXVsdCwgdGhlIHRvIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbVxcbiAgY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGxcXG4gIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzLlxcblxcbiAgTm90ZSB0aGlzIGlzIHN1cHBsaWVkIGZvciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDbG9qdXJlIHZlcnNpb24uXFxuICBWYWx1ZXMgb2YgTiA+IDEgd2lsbCBub3QgcmVzdWx0IGluIGFjdHVhbCBjb25jdXJyZW5jeSBpbiBhXFxuICBzaW5nbGUtdGhyZWFkZWQgcnVudGltZS5cIlxuIChbbiB0byB4ZiBmcm9tXSAocGlwZWxpbmUgbiB0byB4ZiBmcm9tIHRydWUpKVxuIChbbiB0byB4ZiBmcm9tIGNsb3NlP10gKHBpcGVsaW5lIG4gdG8geGYgZnJvbSBjbG9zZT8gbmlsKSlcbiAoW24gdG8geGYgZnJvbSBjbG9zZT8gZXgtaGFuZGxlcl1cbiAgKHBpcGVsaW5lKiBuIHRvIHhmIGZyb20gY2xvc2U/IGV4LWhhbmRsZXIgOmNvbXB1dGUpKSlcbiJ9IHs6c3ltIHN1YiwgOm1ldGEgezpkb2MgIlN1YnNjcmliZXMgYSBjaGFubmVsIHRvIGEgdG9waWMgb2YgYSBwdWIuXG5cbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzLFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuIiwgOmFyZ2xpc3RzIFtbcCB0b3BpYyBjaF0gW3AgdG9waWMgY2ggY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxuIHN1YlxuIFwiU3Vic2NyaWJlcyBhIGNoYW5uZWwgdG8gYSB0b3BpYyBvZiBhIHB1Yi5cXG5cXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgc291cmNlIGNsb3NlcyxcXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci5cIlxuIChbcCB0b3BpYyBjaF0gKHN1YiBwIHRvcGljIGNoIHRydWUpKVxuIChbcCB0b3BpYyBjaCBjbG9zZT9dIChzdWIqIHAgdG9waWMgY2ggY2xvc2U/KSkpXG4ifSB7OnN5bSBtYXA+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIChbZiBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXA+XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIFtmIGNoXVxuIChyZWlmeVxuICBpbXBsL0NoYW5uZWxcbiAgKGNsb3NlISBbX10gKGltcGwvY2xvc2UhIGNoKSlcbiAgaW1wbC9SZWFkUG9ydFxuICAodGFrZSEgW18gZm4xXSAoaW1wbC90YWtlISBjaCBmbjEpKVxuICBpbXBsL1dyaXRlUG9ydFxuICAocHV0ISBbXyB2YWwgZm4xXSAoaW1wbC9wdXQhIGNoIChmIHZhbCkgZm4xKSkpKVxuIn0gezpzeW0gcGlwZSwgOm1ldGEgezpkb2MgIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cbiAgIGNoYW5uZWwuIEJ5IGRlZmF1bHQsIHRoZSB0byBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb21cbiAgIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsXG4gICBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbSBjaGFubmVsIGlmIHRoZSB0byBjaGFubmVsIGNsb3NlcyIsIDphcmdsaXN0cyBbW2Zyb20gdG9dIFtmcm9tIHRvIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBwaXBlXG4gXCJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXFxuICAgY2hhbm5lbC4gQnkgZGVmYXVsdCwgdGhlIHRvIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbVxcbiAgIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsXFxuICAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXNcIlxuIChbZnJvbSB0b10gKHBpcGUgZnJvbSB0byB0cnVlKSlcbiAoW2Zyb20gdG8gY2xvc2U/XVxuICAoZ28tbG9vcFxuICAgW11cbiAgIChsZXRcbiAgICBbdiAoPCEgZnJvbSldXG4gICAgKGlmIChuaWw/IHYpICh3aGVuIGNsb3NlPyAoY2xvc2UhIHRvKSkgKHdoZW4gKD4hIHRvIHYpIChyZWN1cikpKSkpXG4gIHRvKSlcbiJ9IHs6c3ltIHVubWl4LCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4IiwgOmFyZ2xpc3RzIChbbWl4IGNoXSl9LCA6c291cmNlICIoZGVmblxuIHVubWl4XG4gXCJSZW1vdmVzIGNoIGFzIGFuIGlucHV0IHRvIHRoZSBtaXhcIlxuIFttaXggY2hdXG4gKHVubWl4KiBtaXggY2gpKVxuIn0gezpzeW0gZmlsdGVyPCwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW3AgY2hdIFtwIGNoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIGZpbHRlcjxcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtwIGNoXSAoZmlsdGVyPCBwIGNoIG5pbCkpXG4gKFtwIGNoIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cbiAgIChnby1sb29wXG4gICAgW11cbiAgICAobGV0XG4gICAgIFt2YWwgKDwhIGNoKV1cbiAgICAgKGlmXG4gICAgICAobmlsPyB2YWwpXG4gICAgICAoY2xvc2UhIG91dClcbiAgICAgIChkbyAod2hlbiAocCB2YWwpICg+ISBvdXQgdmFsKSkgKHJlY3VyKSkpKSlcbiAgIG91dCkpKVxuIn0gezpzeW0gc3ViKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIHYgY2ggY2xvc2U/XSl9LCA6cHJvdG9jb2wgUHVifSB7OnN5bSByZW1vdmU8LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbcCBjaF0gW3AgY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlPFxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW3AgY2hdIChyZW1vdmU8IHAgY2ggbmlsKSlcbiAoW3AgY2ggYnVmLW9yLW5dIChmaWx0ZXI8IChjb21wbGVtZW50IHApIGNoIGJ1Zi1vci1uKSkpXG4ifSB7OnN5bSB1bnRhcCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBjaF0pfSwgOnByb3RvY29sIE11bHR9IHs6c3ltIHRvZ2dsZSwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgc3RhdGUocykgb2Ygb25lIG9yIG1vcmUgY2hhbm5lbHMgaW4gYSBtaXguIFRoZVxuICBzdGF0ZSBtYXAgaXMgYSBtYXAgb2YgY2hhbm5lbHMgLT4gY2hhbm5lbC1zdGF0ZS1tYXAuIEFcbiAgY2hhbm5lbC1zdGF0ZS1tYXAgaXMgYSBtYXAgb2YgYXR0cnMgLT4gYm9vbGVhbiwgd2hlcmUgYXR0ciBpcyBvbmUgb3JcbiAgbW9yZSBvZiA6bXV0ZSwgOnBhdXNlIG9yIDpzb2xvLiBBbnkgc3RhdGVzIHN1cHBsaWVkIGFyZSBtZXJnZWQgd2l0aFxuICB0aGUgY3VycmVudCBzdGF0ZS5cblxuICBOb3RlIHRoYXQgY2hhbm5lbHMgY2FuIGJlIGFkZGVkIHRvIGEgbWl4IHZpYSB0b2dnbGUsIHdoaWNoIGNhbiBiZVxuICB1c2VkIHRvIGFkZCBjaGFubmVscyBpbiBhIHBhcnRpY3VsYXIgKGUuZy4gcGF1c2VkKSBzdGF0ZS4iLCA6YXJnbGlzdHMgKFttaXggc3RhdGUtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHRvZ2dsZVxuIFwiQXRvbWljYWxseSBzZXRzIHRoZSBzdGF0ZShzKSBvZiBvbmUgb3IgbW9yZSBjaGFubmVscyBpbiBhIG1peC4gVGhlXFxuICBzdGF0ZSBtYXAgaXMgYSBtYXAgb2YgY2hhbm5lbHMgLT4gY2hhbm5lbC1zdGF0ZS1tYXAuIEFcXG4gIGNoYW5uZWwtc3RhdGUtbWFwIGlzIGEgbWFwIG9mIGF0dHJzIC0+IGJvb2xlYW4sIHdoZXJlIGF0dHIgaXMgb25lIG9yXFxuICBtb3JlIG9mIDptdXRlLCA6cGF1c2Ugb3IgOnNvbG8uIEFueSBzdGF0ZXMgc3VwcGxpZWQgYXJlIG1lcmdlZCB3aXRoXFxuICB0aGUgY3VycmVudCBzdGF0ZS5cXG5cXG4gIE5vdGUgdGhhdCBjaGFubmVscyBjYW4gYmUgYWRkZWQgdG8gYSBtaXggdmlhIHRvZ2dsZSwgd2hpY2ggY2FuIGJlXFxuICB1c2VkIHRvIGFkZCBjaGFubmVscyBpbiBhIHBhcnRpY3VsYXIgKGUuZy4gcGF1c2VkKSBzdGF0ZS5cIlxuIFttaXggc3RhdGUtbWFwXVxuICh0b2dnbGUqIG1peCBzdGF0ZS1tYXApKVxuIn0gezpzeW0gdW50YXAtYWxsKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6cHJvdG9jb2wgTXVsdH0gezpzeW0gc2xpZGluZy1idWZmZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgY29tcGxldGUsIGFuZCBiZVxuICBidWZmZXJlZCwgYnV0IG9sZGVzdCBlbGVtZW50cyBpbiBidWZmZXIgd2lsbCBiZSBkcm9wcGVkIChub3RcbiAgdHJhbnNmZXJyZWQpLiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2xpZGluZy1idWZmZXJcbiBcIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSwgYW5kIGJlXFxuICBidWZmZXJlZCwgYnV0IG9sZGVzdCBlbGVtZW50cyBpbiBidWZmZXIgd2lsbCBiZSBkcm9wcGVkIChub3RcXG4gIHRyYW5zZmVycmVkKS5cIlxuIFtuXVxuIChidWZmZXJzL3NsaWRpbmctYnVmZmVyIG4pKVxuIn0gezpzeW0gcGFydGl0aW9uLCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbbiBjaF0gW24gY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uXG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbbiBjaF0gKHBhcnRpdGlvbiBuIGNoIG5pbCkpXG4gKFtuIGNoIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cbiAgIChnb1xuICAgIChsb29wXG4gICAgIFthcnIgKG1ha2UtYXJyYXkgbikgaWR4IDBdXG4gICAgIChsZXRcbiAgICAgIFt2ICg8ISBjaCldXG4gICAgICAoaWZcbiAgICAgICAobm90IChuaWw/IHYpKVxuICAgICAgIChkb1xuICAgICAgICAoYXNldCBhcnIgaWR4IHYpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtuZXctaWR4IChpbmMgaWR4KV1cbiAgICAgICAgIChpZlxuICAgICAgICAgICg8IG5ldy1pZHggbilcbiAgICAgICAgICAocmVjdXIgYXJyIG5ldy1pZHgpXG4gICAgICAgICAgKGRvICg+ISBvdXQgKHZlYyBhcnIpKSAocmVjdXIgKG1ha2UtYXJyYXkgbikgMCkpKSkpXG4gICAgICAgKGRvICh3aGVuICg+IGlkeCAwKSAoPiEgb3V0ICh2ZWMgYXJyKSkpIChjbG9zZSEgb3V0KSkpKSkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIE11bHQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0YXAqIHVudGFwKiB1bnRhcC1hbGwqKX0gezpzeW0gbWVyZ2UsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGNvbGxlY3Rpb24gb2Ygc291cmNlIGNoYW5uZWxzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaFxuICBjb250YWlucyBhbGwgdmFsdWVzIHRha2VuIGZyb20gdGhlbS4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZVxuICB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIGEgYnVmLW9yLW4gY2FuIGJlIHN1cHBsaWVkLiBUaGUgY2hhbm5lbFxuICB3aWxsIGNsb3NlIGFmdGVyIGFsbCB0aGUgc291cmNlIGNoYW5uZWxzIGhhdmUgY2xvc2VkLiIsIDphcmdsaXN0cyBbW2Noc10gW2NocyBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZVxuIFwiVGFrZXMgYSBjb2xsZWN0aW9uIG9mIHNvdXJjZSBjaGFubmVscyBhbmQgcmV0dXJucyBhIGNoYW5uZWwgd2hpY2hcXG4gIGNvbnRhaW5zIGFsbCB2YWx1ZXMgdGFrZW4gZnJvbSB0aGVtLiBUaGUgcmV0dXJuZWQgY2hhbm5lbCB3aWxsIGJlXFxuICB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIGEgYnVmLW9yLW4gY2FuIGJlIHN1cHBsaWVkLiBUaGUgY2hhbm5lbFxcbiAgd2lsbCBjbG9zZSBhZnRlciBhbGwgdGhlIHNvdXJjZSBjaGFubmVscyBoYXZlIGNsb3NlZC5cIlxuIChbY2hzXSAobWVyZ2UgY2hzIG5pbCkpXG4gKFtjaHMgYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxuICAgKGdvLWxvb3BcbiAgICBbY3MgKHZlYyBjaHMpXVxuICAgIChpZlxuICAgICAocG9zPyAoY291bnQgY3MpKVxuICAgICAobGV0XG4gICAgICBbW3YgY10gKGFsdHMhIGNzKV1cbiAgICAgIChpZlxuICAgICAgIChuaWw/IHYpXG4gICAgICAgKHJlY3VyIChmaWx0ZXJ2IChmbiogW3AxX180NTEyOCNdIChub3Q9IGMgcDFfXzQ1MTI4IykpIGNzKSlcbiAgICAgICAoZG8gKD4hIG91dCB2KSAocmVjdXIgY3MpKSkpXG4gICAgIChjbG9zZSEgb3V0KSkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIHBhcnRpdGlvbi1ieSwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW2YgY2hdIFtmIGNoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIHBhcnRpdGlvbi1ieVxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW2YgY2hdIChwYXJ0aXRpb24tYnkgZiBjaCBuaWwpKVxuIChbZiBjaCBidWYtb3Itbl1cbiAgKGxldFxuICAgW291dCAoY2hhbiBidWYtb3ItbildXG4gICAoZ29cbiAgICAobG9vcFxuICAgICBbbHN0IChtYWtlLWFycmF5IDApIGxhc3QgOmNsanMuY29yZS5hc3luYy9ub3RoaW5nXVxuICAgICAobGV0XG4gICAgICBbdiAoPCEgY2gpXVxuICAgICAgKGlmXG4gICAgICAgKG5vdCAobmlsPyB2KSlcbiAgICAgICAobGV0XG4gICAgICAgIFtuZXctaXRtIChmIHYpXVxuICAgICAgICAoaWZcbiAgICAgICAgIChvclxuICAgICAgICAgICg9IG5ldy1pdG0gbGFzdClcbiAgICAgICAgICAoa2V5d29yZC1pZGVudGljYWw/IGxhc3QgOmNsanMuY29yZS5hc3luYy9ub3RoaW5nKSlcbiAgICAgICAgIChkbyAoLnB1c2ggbHN0IHYpIChyZWN1ciBsc3QgbmV3LWl0bSkpXG4gICAgICAgICAoZG9cbiAgICAgICAgICAoPiEgb3V0ICh2ZWMgbHN0KSlcbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtuZXctbHN0IChtYWtlLWFycmF5IDApXVxuICAgICAgICAgICAoLnB1c2ggbmV3LWxzdCB2KVxuICAgICAgICAgICAocmVjdXIgbmV3LWxzdCBuZXctaXRtKSkpKSlcbiAgICAgICAoZG9cbiAgICAgICAgKHdoZW4gKD4gKGFsZW5ndGggbHN0KSAwKSAoPiEgb3V0ICh2ZWMgbHN0KSkpXG4gICAgICAgIChjbG9zZSEgb3V0KSkpKSkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIHVuc3ViLWFsbCwgOm1ldGEgezpkb2MgIlVuc3Vic2NyaWJlcyBhbGwgY2hhbm5lbHMgZnJvbSBhIHB1Yiwgb3IgYSB0b3BpYyBvZiBhIHB1YiIsIDphcmdsaXN0cyBbW3BdIFtwIHRvcGljXV19LCA6c291cmNlICIoZGVmblxuIHVuc3ViLWFsbFxuIFwiVW5zdWJzY3JpYmVzIGFsbCBjaGFubmVscyBmcm9tIGEgcHViLCBvciBhIHRvcGljIG9mIGEgcHViXCJcbiAoW3BdICh1bnN1Yi1hbGwqIHApKVxuIChbcCB0b3BpY10gKHVuc3ViLWFsbCogcCB0b3BpYykpKVxuIn0gezpzeW0gPiEsIDptZXRhIHs6ZG9jICJwdXRzIGEgdmFsIGludG8gcG9ydC4gbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIE11c3QgYmUgY2FsbGVkXG4gIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBXaWxsIHBhcmsgaWYgbm8gYnVmZmVyIHNwYWNlIGlzIGF2YWlsYWJsZS5cbiAgUmV0dXJucyB0cnVlIHVubGVzcyBwb3J0IGlzIGFscmVhZHkgY2xvc2VkLiIsIDphcmdsaXN0cyAoW3BvcnQgdmFsXSl9LCA6c291cmNlICIoZGVmblxuID4hXG4gXCJwdXRzIGEgdmFsIGludG8gcG9ydC4gbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIE11c3QgYmUgY2FsbGVkXFxuICBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gV2lsbCBwYXJrIGlmIG5vIGJ1ZmZlciBzcGFjZSBpcyBhdmFpbGFibGUuXFxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWQuXCJcbiBbcG9ydCB2YWxdXG4gKHRocm93IChqcy9FcnJvci4gXCI+ISB1c2VkIG5vdCBpbiAoZ28gLi4uKSBibG9ja1wiKSkpXG4ifSB7OnN5bSB1bm1peC1hbGwqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIHNwbGl0LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBwcmVkaWNhdGUgYW5kIGEgc291cmNlIGNoYW5uZWwgYW5kIHJldHVybnMgYSB2ZWN0b3Igb2YgdHdvXG4gIGNoYW5uZWxzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggd2lsbCBjb250YWluIHRoZSB2YWx1ZXMgZm9yIHdoaWNoIHRoZVxuICBwcmVkaWNhdGUgcmV0dXJuZWQgdHJ1ZSwgdGhlIHNlY29uZCB0aG9zZSBmb3Igd2hpY2ggaXQgcmV0dXJuZWRcbiAgZmFsc2UuXG5cbiAgVGhlIG91dCBjaGFubmVscyB3aWxsIGJlIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgdHdvIGJ1Zi1vci1ucyBjYW5cbiAgYmUgc3VwcGxpZWQuIFRoZSBjaGFubmVscyB3aWxsIGNsb3NlIGFmdGVyIHRoZSBzb3VyY2UgY2hhbm5lbCBoYXNcbiAgY2xvc2VkLiIsIDphcmdsaXN0cyBbW3AgY2hdIFtwIGNoIHQtYnVmLW9yLW4gZi1idWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGxpdFxuIFwiVGFrZXMgYSBwcmVkaWNhdGUgYW5kIGEgc291cmNlIGNoYW5uZWwgYW5kIHJldHVybnMgYSB2ZWN0b3Igb2YgdHdvXFxuICBjaGFubmVscywgdGhlIGZpcnN0IG9mIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgdmFsdWVzIGZvciB3aGljaCB0aGVcXG4gIHByZWRpY2F0ZSByZXR1cm5lZCB0cnVlLCB0aGUgc2Vjb25kIHRob3NlIGZvciB3aGljaCBpdCByZXR1cm5lZFxcbiAgZmFsc2UuXFxuXFxuICBUaGUgb3V0IGNoYW5uZWxzIHdpbGwgYmUgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciB0d28gYnVmLW9yLW5zIGNhblxcbiAgYmUgc3VwcGxpZWQuIFRoZSBjaGFubmVscyB3aWxsIGNsb3NlIGFmdGVyIHRoZSBzb3VyY2UgY2hhbm5lbCBoYXNcXG4gIGNsb3NlZC5cIlxuIChbcCBjaF0gKHNwbGl0IHAgY2ggbmlsIG5pbCkpXG4gKFtwIGNoIHQtYnVmLW9yLW4gZi1idWYtb3Itbl1cbiAgKGxldFxuICAgW3RjIChjaGFuIHQtYnVmLW9yLW4pIGZjIChjaGFuIGYtYnVmLW9yLW4pXVxuICAgKGdvLWxvb3BcbiAgICBbXVxuICAgIChsZXRcbiAgICAgW3YgKDwhIGNoKV1cbiAgICAgKGlmXG4gICAgICAobmlsPyB2KVxuICAgICAgKGRvIChjbG9zZSEgdGMpIChjbG9zZSEgZmMpKVxuICAgICAgKHdoZW4gKD4hIChpZiAocCB2KSB0YyBmYykgdikgKHJlY3VyKSkpKSlcbiAgIFt0YyBmY10pKSlcbiJ9IHs6c3ltIHVubWl4LWFsbCwgOm1ldGEgezpkb2MgInJlbW92ZXMgYWxsIGlucHV0cyBmcm9tIHRoZSBtaXgiLCA6YXJnbGlzdHMgKFttaXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5taXgtYWxsXG4gXCJyZW1vdmVzIGFsbCBpbnB1dHMgZnJvbSB0aGUgbWl4XCJcbiBbbWl4XVxuICh1bm1peC1hbGwqIG1peCkpXG4ifSB7OnN5bSBmaWx0ZXI+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIChbcCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWx0ZXI+XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIFtwIGNoXVxuIChyZWlmeVxuICBpbXBsL0NoYW5uZWxcbiAgKGNsb3NlISBbX10gKGltcGwvY2xvc2UhIGNoKSlcbiAgKGNsb3NlZD8gW19dIChpbXBsL2Nsb3NlZD8gY2gpKVxuICBpbXBsL1JlYWRQb3J0XG4gICh0YWtlISBbXyBmbjFdIChpbXBsL3Rha2UhIGNoIGZuMSkpXG4gIGltcGwvV3JpdGVQb3J0XG4gIChwdXQhXG4gICBbXyB2YWwgZm4xXVxuICAgKGlmXG4gICAgKHAgdmFsKVxuICAgIChpbXBsL3B1dCEgY2ggdmFsIGZuMSlcbiAgICAoY2hhbm5lbHMvYm94IChub3QgKGltcGwvY2xvc2VkPyBjaCkpKSkpKSlcbiJ9IHs6c3ltIHRhcCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBjaCBjbG9zZT9dKX0sIDpwcm90b2NvbCBNdWx0fSB7OnN5bSB1bnRhcCwgOm1ldGEgezpkb2MgIkRpc2Nvbm5lY3RzIGEgdGFyZ2V0IGNoYW5uZWwgZnJvbSBhIG11bHQiLCA6YXJnbGlzdHMgKFttdWx0IGNoXSl9LCA6c291cmNlICIoZGVmblxuIHVudGFwXG4gXCJEaXNjb25uZWN0cyBhIHRhcmdldCBjaGFubmVsIGZyb20gYSBtdWx0XCJcbiBbbXVsdCBjaF1cbiAodW50YXAqIG11bHQgY2gpKVxuIn0gezpzeW0gYWx0cyEsIDptZXRhIHs6ZG9jICJDb21wbGV0ZXMgYXQgbW9zdCBvbmUgb2Ygc2V2ZXJhbCBjaGFubmVsIG9wZXJhdGlvbnMuIE11c3QgYmUgY2FsbGVkXG4gICBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gcG9ydHMgaXMgYSB2ZWN0b3Igb2YgY2hhbm5lbCBlbmRwb2ludHMsXG4gICB3aGljaCBjYW4gYmUgZWl0aGVyIGEgY2hhbm5lbCB0byB0YWtlIGZyb20gb3IgYSB2ZWN0b3Igb2ZcbiAgW2NoYW5uZWwtdG8tcHV0LXRvIHZhbC10by1wdXRdLCBpbiBhbnkgY29tYmluYXRpb24uIFRha2VzIHdpbGwgYmVcbiAgbWFkZSBhcyBpZiBieSA8ISwgYW5kIHB1dHMgd2lsbCBiZSBtYWRlIGFzIGlmIGJ5ID4hLiBVbmxlc3NcbiAgdGhlIDpwcmlvcml0eSBvcHRpb24gaXMgdHJ1ZSwgaWYgbW9yZSB0aGFuIG9uZSBwb3J0IG9wZXJhdGlvbiBpc1xuICByZWFkeSBhIG5vbi1kZXRlcm1pbmlzdGljIGNob2ljZSB3aWxsIGJlIG1hZGUuIElmIG5vIG9wZXJhdGlvbiBpc1xuICByZWFkeSBhbmQgYSA6ZGVmYXVsdCB2YWx1ZSBpcyBzdXBwbGllZCwgW2RlZmF1bHQtdmFsIDpkZWZhdWx0XSB3aWxsXG4gIGJlIHJldHVybmVkLCBvdGhlcndpc2UgYWx0cyEgd2lsbCBwYXJrIHVudGlsIHRoZSBmaXJzdCBvcGVyYXRpb24gdG9cbiAgYmVjb21lIHJlYWR5IGNvbXBsZXRlcy4gUmV0dXJucyBbdmFsIHBvcnRdIG9mIHRoZSBjb21wbGV0ZWRcbiAgb3BlcmF0aW9uLCB3aGVyZSB2YWwgaXMgdGhlIHZhbHVlIHRha2VuIGZvciB0YWtlcywgYW5kIGFcbiAgYm9vbGVhbiAodHJ1ZSB1bmxlc3MgYWxyZWFkeSBjbG9zZWQsIGFzIHBlciBwdXQhKSBmb3IgcHV0cy5cblxuICBvcHRzIGFyZSBwYXNzZWQgYXMgOmtleSB2YWwgLi4uIFN1cHBvcnRlZCBvcHRpb25zOlxuXG4gIDpkZWZhdWx0IHZhbCAtIHRoZSB2YWx1ZSB0byB1c2UgaWYgbm9uZSBvZiB0aGUgb3BlcmF0aW9ucyBhcmUgaW1tZWRpYXRlbHkgcmVhZHlcbiAgOnByaW9yaXR5IHRydWUgLSAoZGVmYXVsdCBuaWwpIHdoZW4gdHJ1ZSwgdGhlIG9wZXJhdGlvbnMgd2lsbCBiZSB0cmllZCBpbiBvcmRlci5cblxuICBOb3RlOiB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcG9ydCBleHBzIG9yIHZhbCBleHBycyB3aWxsIGJlXG4gIHVzZWQsIG5vciBpbiB3aGF0IG9yZGVyIHNob3VsZCB0aGV5IGJlLCBzbyB0aGV5IHNob3VsZCBub3QgYmVcbiAgZGVwZW5kZWQgdXBvbiBmb3Igc2lkZSBlZmZlY3RzLiIsIDphcmdsaXN0cyAoW3BvcnRzICYgezphcyBvcHRzfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbHRzIVxuIFwiQ29tcGxldGVzIGF0IG1vc3Qgb25lIG9mIHNldmVyYWwgY2hhbm5lbCBvcGVyYXRpb25zLiBNdXN0IGJlIGNhbGxlZFxcbiAgIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBwb3J0cyBpcyBhIHZlY3RvciBvZiBjaGFubmVsIGVuZHBvaW50cyxcXG4gICB3aGljaCBjYW4gYmUgZWl0aGVyIGEgY2hhbm5lbCB0byB0YWtlIGZyb20gb3IgYSB2ZWN0b3Igb2ZcXG4gIFtjaGFubmVsLXRvLXB1dC10byB2YWwtdG8tcHV0XSwgaW4gYW55IGNvbWJpbmF0aW9uLiBUYWtlcyB3aWxsIGJlXFxuICBtYWRlIGFzIGlmIGJ5IDwhLCBhbmQgcHV0cyB3aWxsIGJlIG1hZGUgYXMgaWYgYnkgPiEuIFVubGVzc1xcbiAgdGhlIDpwcmlvcml0eSBvcHRpb24gaXMgdHJ1ZSwgaWYgbW9yZSB0aGFuIG9uZSBwb3J0IG9wZXJhdGlvbiBpc1xcbiAgcmVhZHkgYSBub24tZGV0ZXJtaW5pc3RpYyBjaG9pY2Ugd2lsbCBiZSBtYWRlLiBJZiBubyBvcGVyYXRpb24gaXNcXG4gIHJlYWR5IGFuZCBhIDpkZWZhdWx0IHZhbHVlIGlzIHN1cHBsaWVkLCBbZGVmYXVsdC12YWwgOmRlZmF1bHRdIHdpbGxcXG4gIGJlIHJldHVybmVkLCBvdGhlcndpc2UgYWx0cyEgd2lsbCBwYXJrIHVudGlsIHRoZSBmaXJzdCBvcGVyYXRpb24gdG9cXG4gIGJlY29tZSByZWFkeSBjb21wbGV0ZXMuIFJldHVybnMgW3ZhbCBwb3J0XSBvZiB0aGUgY29tcGxldGVkXFxuICBvcGVyYXRpb24sIHdoZXJlIHZhbCBpcyB0aGUgdmFsdWUgdGFrZW4gZm9yIHRha2VzLCBhbmQgYVxcbiAgYm9vbGVhbiAodHJ1ZSB1bmxlc3MgYWxyZWFkeSBjbG9zZWQsIGFzIHBlciBwdXQhKSBmb3IgcHV0cy5cXG5cXG4gIG9wdHMgYXJlIHBhc3NlZCBhcyA6a2V5IHZhbCAuLi4gU3VwcG9ydGVkIG9wdGlvbnM6XFxuXFxuICA6ZGVmYXVsdCB2YWwgLSB0aGUgdmFsdWUgdG8gdXNlIGlmIG5vbmUgb2YgdGhlIG9wZXJhdGlvbnMgYXJlIGltbWVkaWF0ZWx5IHJlYWR5XFxuICA6cHJpb3JpdHkgdHJ1ZSAtIChkZWZhdWx0IG5pbCkgd2hlbiB0cnVlLCB0aGUgb3BlcmF0aW9ucyB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLlxcblxcbiAgTm90ZTogdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIHBvcnQgZXhwcyBvciB2YWwgZXhwcnMgd2lsbCBiZVxcbiAgdXNlZCwgbm9yIGluIHdoYXQgb3JkZXIgc2hvdWxkIHRoZXkgYmUsIHNvIHRoZXkgc2hvdWxkIG5vdCBiZVxcbiAgZGVwZW5kZWQgdXBvbiBmb3Igc2lkZSBlZmZlY3RzLlwiXG4gW3BvcnRzICYgezphcyBvcHRzfV1cbiAodGhyb3cgKGpzL0Vycm9yLiBcImFsdHMhIHVzZWQgbm90IGluIChnbyAuLi4pIGJsb2NrXCIpKSlcbiJ9IHs6c3ltIHVuc3ViLCA6bWV0YSB7OmRvYyAiVW5zdWJzY3JpYmVzIGEgY2hhbm5lbCBmcm9tIGEgdG9waWMgb2YgYSBwdWIiLCA6YXJnbGlzdHMgKFtwIHRvcGljIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHVuc3ViXG4gXCJVbnN1YnNjcmliZXMgYSBjaGFubmVsIGZyb20gYSB0b3BpYyBvZiBhIHB1YlwiXG4gW3AgdG9waWMgY2hdXG4gKHVuc3ViKiBwIHRvcGljIGNoKSlcbiJ9IHs6c3ltIHBvbGwhLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSB2YWwgZnJvbSBwb3J0IGlmIGl0J3MgcG9zc2libGUgdG8gZG8gc28gaW1tZWRpYXRlbHkuXG4gIE5ldmVyIGJsb2Nrcy4gUmV0dXJucyB2YWx1ZSBpZiBzdWNjZXNzZnVsLCBuaWwgb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3BvcnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcG9sbCFcbiBcIlRha2VzIGEgdmFsIGZyb20gcG9ydCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvIGltbWVkaWF0ZWx5LlxcbiAgTmV2ZXIgYmxvY2tzLiBSZXR1cm5zIHZhbHVlIGlmIHN1Y2Nlc3NmdWwsIG5pbCBvdGhlcndpc2UuXCJcbiBbcG9ydF1cbiAobGV0IFtyZXQgKGltcGwvdGFrZSEgcG9ydCAoZm4taGFuZGxlciBub3AgZmFsc2UpKV0gKHdoZW4gcmV0IEByZXQpKSlcbiJ9IHs6c3ltIG1hcDwsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgKFtmIGNoXSl9LCA6c291cmNlICIoZGVmblxuIG1hcDxcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gW2YgY2hdXG4gKHJlaWZ5XG4gIGltcGwvQ2hhbm5lbFxuICAoY2xvc2UhIFtfXSAoaW1wbC9jbG9zZSEgY2gpKVxuICAoY2xvc2VkPyBbX10gKGltcGwvY2xvc2VkPyBjaCkpXG4gIGltcGwvUmVhZFBvcnRcbiAgKHRha2UhXG4gICBbXyBmbjFdXG4gICAobGV0XG4gICAgW3JldFxuICAgICAoaW1wbC90YWtlIVxuICAgICAgY2hcbiAgICAgIChyZWlmeVxuICAgICAgIGltcGwvSGFuZGxlclxuICAgICAgIChhY3RpdmU/IFtfXSAoaW1wbC9hY3RpdmU/IGZuMSkpXG4gICAgICAgKGJsb2NrYWJsZT8gW19dIHRydWUpXG4gICAgICAgKGNvbW1pdFxuICAgICAgICBbX11cbiAgICAgICAgKGxldFxuICAgICAgICAgW2YxIChpbXBsL2NvbW1pdCBmbjEpXVxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDUxMjkjXVxuICAgICAgICAgIChmMSAoaWYgKG5pbD8gcDFfXzQ1MTI5IykgbmlsIChmIHAxX180NTEyOSMpKSkpKSkpKV1cbiAgICAoaWYgKGFuZCByZXQgKG5vdCAobmlsPyBAcmV0KSkpIChjaGFubmVscy9ib3ggKGYgQHJldCkpIHJldCkpKVxuICBpbXBsL1dyaXRlUG9ydFxuICAocHV0ISBbXyB2YWwgZm4xXSAoaW1wbC9wdXQhIGNoIHZhbCBmbjEpKSkpXG4ifSB7OnN5bSBkby1hbHRzLCA6bWV0YSB7OmRvYyAicmV0dXJucyBkZXJlZmFibGUgW3ZhbCBwb3J0XSBpZiBpbW1lZGlhdGUsIG5pbCBpZiBlbnF1ZXVlZCIsIDphcmdsaXN0cyAoW2ZyZXQgcG9ydHMgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkby1hbHRzXG4gXCJyZXR1cm5zIGRlcmVmYWJsZSBbdmFsIHBvcnRdIGlmIGltbWVkaWF0ZSwgbmlsIGlmIGVucXVldWVkXCJcbiBbZnJldCBwb3J0cyBvcHRzXVxuIChhc3NlcnRcbiAgKHBvcz8gKGNvdW50IHBvcnRzKSlcbiAgXCJhbHRzIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY2hhbm5lbCBvcGVyYXRpb25cIilcbiAobGV0XG4gIFtmbGFnXG4gICAoYWx0LWZsYWcpXG4gICBuXG4gICAoY291bnQgcG9ydHMpXG4gICBpZHhzXG4gICAocmFuZG9tLWFycmF5IG4pXG4gICBwcmlvcml0eVxuICAgKDpwcmlvcml0eSBvcHRzKVxuICAgcmV0XG4gICAobG9vcFxuICAgIFtpIDBdXG4gICAgKHdoZW5cbiAgICAgKDwgaSBuKVxuICAgICAobGV0XG4gICAgICBbaWR4XG4gICAgICAgKGlmIHByaW9yaXR5IGkgKGFnZXQgaWR4cyBpKSlcbiAgICAgICBwb3J0XG4gICAgICAgKG50aCBwb3J0cyBpZHgpXG4gICAgICAgd3BvcnRcbiAgICAgICAod2hlbiAodmVjdG9yPyBwb3J0KSAocG9ydCAwKSlcbiAgICAgICB2Ym94XG4gICAgICAgKGlmXG4gICAgICAgIHdwb3J0XG4gICAgICAgIChsZXRcbiAgICAgICAgIFt2YWwgKHBvcnQgMSldXG4gICAgICAgICAoaW1wbC9wdXQhXG4gICAgICAgICAgd3BvcnRcbiAgICAgICAgICB2YWxcbiAgICAgICAgICAoYWx0LWhhbmRsZXJcbiAgICAgICAgICAgZmxhZ1xuICAgICAgICAgICAoZm4qIFtwMV9fNDUxMjUjXSAoZnJldCBbcDFfXzQ1MTI1IyB3cG9ydF0pKSkpKVxuICAgICAgICAoaW1wbC90YWtlIVxuICAgICAgICAgcG9ydFxuICAgICAgICAgKGFsdC1oYW5kbGVyXG4gICAgICAgICAgZmxhZ1xuICAgICAgICAgIChmbiogW3AxX180NTEyNiNdIChmcmV0IFtwMV9fNDUxMjYjIHBvcnRdKSkpKSldXG4gICAgICAoaWZcbiAgICAgICB2Ym94XG4gICAgICAgKGNoYW5uZWxzL2JveCBbQHZib3ggKG9yIHdwb3J0IHBvcnQpXSlcbiAgICAgICAocmVjdXIgKGluYyBpKSkpKSkpXVxuICAob3JcbiAgIHJldFxuICAgKHdoZW5cbiAgICAoY29udGFpbnM/IG9wdHMgOmRlZmF1bHQpXG4gICAgKHdoZW4tbGV0XG4gICAgIFtnb3QgKGFuZCAoaW1wbC9hY3RpdmU/IGZsYWcpIChpbXBsL2NvbW1pdCBmbGFnKSldXG4gICAgIChjaGFubmVscy9ib3ggWyg6ZGVmYXVsdCBvcHRzKSA6ZGVmYXVsdF0pKSkpKSlcbiJ9IHs6c3ltIHBpcGVsaW5lLWFzeW5jLCA6bWV0YSB7OmRvYyAiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xuICBjaGFubmVsLCBzdWJqZWN0IHRvIHRoZSBhc3luYyBmdW5jdGlvbiBhZiwgd2l0aCBwYXJhbGxlbGlzbSBuLiBhZlxuICBtdXN0IGJlIGEgZnVuY3Rpb24gb2YgdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGFuIGlucHV0IHZhbHVlIGFuZFxuICB0aGUgc2Vjb25kIGEgY2hhbm5lbCBvbiB3aGljaCB0byBwbGFjZSB0aGUgcmVzdWx0KHMpLiBhZiBtdXN0IGNsb3NlIVxuICB0aGUgY2hhbm5lbCBiZWZvcmUgcmV0dXJuaW5nLiAgVGhlIHByZXN1bXB0aW9uIGlzIHRoYXQgYWYgd2lsbFxuICByZXR1cm4gaW1tZWRpYXRlbHksIGhhdmluZyBsYXVuY2hlZCBzb21lIGFzeW5jaHJvbm91cyBvcGVyYXRpb25cbiAgd2hvc2UgY29tcGxldGlvbi9jYWxsYmFjayB3aWxsIG1hbmlwdWxhdGUgdGhlIHJlc3VsdCBjaGFubmVsLiBPdXRwdXRzXG4gIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgcmVsYXRpdmUgdG8gIHRoZSBpbnB1dHMuIEJ5IGRlZmF1bHQsIHRoZSB0b1xuICBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb20gY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmVcbiAgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGwgc3RvcCBjb25zdW1pbmcgdGhlIGZyb21cbiAgY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuIiwgOmFyZ2xpc3RzIFtbbiB0byBhZiBmcm9tXSBbbiB0byBhZiBmcm9tIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBwaXBlbGluZS1hc3luY1xuIFwiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xcbiAgY2hhbm5lbCwgc3ViamVjdCB0byB0aGUgYXN5bmMgZnVuY3Rpb24gYWYsIHdpdGggcGFyYWxsZWxpc20gbi4gYWZcXG4gIG11c3QgYmUgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgYW4gaW5wdXQgdmFsdWUgYW5kXFxuICB0aGUgc2Vjb25kIGEgY2hhbm5lbCBvbiB3aGljaCB0byBwbGFjZSB0aGUgcmVzdWx0KHMpLiBhZiBtdXN0IGNsb3NlIVxcbiAgdGhlIGNoYW5uZWwgYmVmb3JlIHJldHVybmluZy4gIFRoZSBwcmVzdW1wdGlvbiBpcyB0aGF0IGFmIHdpbGxcXG4gIHJldHVybiBpbW1lZGlhdGVseSwgaGF2aW5nIGxhdW5jaGVkIHNvbWUgYXN5bmNocm9ub3VzIG9wZXJhdGlvblxcbiAgd2hvc2UgY29tcGxldGlvbi9jYWxsYmFjayB3aWxsIG1hbmlwdWxhdGUgdGhlIHJlc3VsdCBjaGFubmVsLiBPdXRwdXRzXFxuICB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvICB0aGUgaW5wdXRzLiBCeSBkZWZhdWx0LCB0aGUgdG9cXG4gIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbSBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZVxcbiAgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGwgc3RvcCBjb25zdW1pbmcgdGhlIGZyb21cXG4gIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzLlwiXG4gKFtuIHRvIGFmIGZyb21dIChwaXBlbGluZS1hc3luYyBuIHRvIGFmIGZyb20gdHJ1ZSkpXG4gKFtuIHRvIGFmIGZyb20gY2xvc2U/XSAocGlwZWxpbmUqIG4gdG8gYWYgZnJvbSBjbG9zZT8gbmlsIDphc3luYykpKVxuIn0gezpzeW0gTWl4LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoYWRtaXgqIHNvbG8tbW9kZSogdG9nZ2xlKiB1bm1peCogdW5taXgtYWxsKil9IHs6c3ltIHRvZ2dsZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBzdGF0ZS1tYXBdKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIG11bHQsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgbXVsdChpcGxlKSBvZiB0aGUgc3VwcGxpZWQgY2hhbm5lbC4gQ2hhbm5lbHNcbiAgY29udGFpbmluZyBjb3BpZXMgb2YgdGhlIGNoYW5uZWwgY2FuIGJlIGNyZWF0ZWQgd2l0aCAndGFwJywgYW5kXG4gIGRldGFjaGVkIHdpdGggJ3VudGFwJy5cblxuICBFYWNoIGl0ZW0gaXMgZGlzdHJpYnV0ZWQgdG8gYWxsIHRhcHMgaW4gcGFyYWxsZWwgYW5kIHN5bmNocm9ub3VzbHksXG4gIGkuZS4gZWFjaCB0YXAgbXVzdCBhY2NlcHQgYmVmb3JlIHRoZSBuZXh0IGl0ZW0gaXMgZGlzdHJpYnV0ZWQuIFVzZVxuICBidWZmZXJpbmcvd2luZG93aW5nIHRvIHByZXZlbnQgc2xvdyB0YXBzIGZyb20gaG9sZGluZyB1cCB0aGUgbXVsdC5cblxuICBJdGVtcyByZWNlaXZlZCB3aGVuIHRoZXJlIGFyZSBubyB0YXBzIGdldCBkcm9wcGVkLlxuXG4gIElmIGEgdGFwIHB1dHMgdG8gYSBjbG9zZWQgY2hhbm5lbCwgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIG11bHQuIiwgOmFyZ2xpc3RzIChbY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbXVsdFxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG11bHQoaXBsZSkgb2YgdGhlIHN1cHBsaWVkIGNoYW5uZWwuIENoYW5uZWxzXFxuICBjb250YWluaW5nIGNvcGllcyBvZiB0aGUgY2hhbm5lbCBjYW4gYmUgY3JlYXRlZCB3aXRoICd0YXAnLCBhbmRcXG4gIGRldGFjaGVkIHdpdGggJ3VudGFwJy5cXG5cXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgdGFwcyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcXG4gIGkuZS4gZWFjaCB0YXAgbXVzdCBhY2NlcHQgYmVmb3JlIHRoZSBuZXh0IGl0ZW0gaXMgZGlzdHJpYnV0ZWQuIFVzZVxcbiAgYnVmZmVyaW5nL3dpbmRvd2luZyB0byBwcmV2ZW50IHNsb3cgdGFwcyBmcm9tIGhvbGRpbmcgdXAgdGhlIG11bHQuXFxuXFxuICBJdGVtcyByZWNlaXZlZCB3aGVuIHRoZXJlIGFyZSBubyB0YXBzIGdldCBkcm9wcGVkLlxcblxcbiAgSWYgYSB0YXAgcHV0cyB0byBhIGNsb3NlZCBjaGFubmVsLCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbXVsdC5cIlxuIFtjaF1cbiAobGV0XG4gIFtjc1xuICAgKGF0b20ge30pXG4gICBtXG4gICAocmVpZnlcbiAgICBNdXhcbiAgICAobXV4Y2gqIFtfXSBjaClcbiAgICBNdWx0XG4gICAgKHRhcCogW18gY2ggY2xvc2U/XSAoc3dhcCEgY3MgYXNzb2MgY2ggY2xvc2U/KSBuaWwpXG4gICAgKHVudGFwKiBbXyBjaF0gKHN3YXAhIGNzIGRpc3NvYyBjaCkgbmlsKVxuICAgICh1bnRhcC1hbGwqIFtfXSAocmVzZXQhIGNzIHt9KSBuaWwpKVxuICAgZGNoYW5cbiAgIChjaGFuIDEpXG4gICBkY3RyXG4gICAoYXRvbSBuaWwpXG4gICBkb25lXG4gICAoZm4gW19dICh3aGVuICh6ZXJvPyAoc3dhcCEgZGN0ciBkZWMpKSAocHV0ISBkY2hhbiB0cnVlKSkpXVxuICAoZ28tbG9vcFxuICAgW11cbiAgIChsZXRcbiAgICBbdmFsICg8ISBjaCldXG4gICAgKGlmXG4gICAgIChuaWw/IHZhbClcbiAgICAgKGRvc2VxIFtbYyBjbG9zZT9dIEBjc10gKHdoZW4gY2xvc2U/IChjbG9zZSEgYykpKVxuICAgICAobGV0XG4gICAgICBbY2hzIChrZXlzIEBjcyldXG4gICAgICAocmVzZXQhIGRjdHIgKGNvdW50IGNocykpXG4gICAgICAoZG9zZXEgW2MgY2hzXSAod2hlbi1ub3QgKHB1dCEgYyB2YWwgZG9uZSkgKHVudGFwKiBtIGMpKSlcbiAgICAgICh3aGVuIChzZXEgY2hzKSAoPCEgZGNoYW4pKVxuICAgICAgKHJlY3VyKSkpKSlcbiAgbSkpXG4ifSB7OnN5bSBtYXBjYXQ8LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbZiBpbl0gW2YgaW4gYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwY2F0PFxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW2YgaW5dIChtYXBjYXQ8IGYgaW4gbmlsKSlcbiAoW2YgaW4gYnVmLW9yLW5dIChsZXQgW291dCAoY2hhbiBidWYtb3ItbildIChtYXBjYXQqIGYgaW4gb3V0KSBvdXQpKSlcbiJ9IHs6c3ltIGlvYy1hbHRzISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBjb250LWJsb2NrIHBvcnRzICYgezphcyBvcHRzfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpb2MtYWx0cyFcbiBbc3RhdGUgY29udC1ibG9jayBwb3J0cyAmIHs6YXMgb3B0c31dXG4gKGlvYy9hc2V0LWFsbCEgc3RhdGUgaGVscGVycy9TVEFURS1JRFggY29udC1ibG9jaylcbiAod2hlbi1sZXRcbiAgW2NiXG4gICAoY2xqcy5jb3JlLmFzeW5jL2RvLWFsdHNcbiAgICAoZm5cbiAgICAgW3ZhbF1cbiAgICAgKGlvYy9hc2V0LWFsbCEgc3RhdGUgaGVscGVycy9WQUxVRS1JRFggdmFsKVxuICAgICAoaGVscGVycy9ydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkIHN0YXRlKSlcbiAgICBwb3J0c1xuICAgIG9wdHMpXVxuICAoaW9jL2FzZXQtYWxsISBzdGF0ZSBoZWxwZXJzL1ZBTFVFLUlEWCBAY2IpXG4gIDpyZWN1cikpXG4ifSB7OnN5bSB1bmJsb2NraW5nLWJ1ZmZlcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgYSBjaGFubmVsIGNyZWF0ZWQgd2l0aCBidWZmIHdpbGwgbmV2ZXIgYmxvY2suIFRoYXQgaXMgdG8gc2F5LFxuICAgcHV0cyBpbnRvIHRoaXMgYnVmZmVyIHdpbGwgbmV2ZXIgY2F1c2UgdGhlIGJ1ZmZlciB0byBiZSBmdWxsLiAiLCA6YXJnbGlzdHMgKFtidWZmXSl9LCA6c291cmNlICIoZGVmblxuIHVuYmxvY2tpbmctYnVmZmVyP1xuIFwiUmV0dXJucyB0cnVlIGlmIGEgY2hhbm5lbCBjcmVhdGVkIHdpdGggYnVmZiB3aWxsIG5ldmVyIGJsb2NrLiBUaGF0IGlzIHRvIHNheSxcXG4gICBwdXRzIGludG8gdGhpcyBidWZmZXIgd2lsbCBuZXZlciBjYXVzZSB0aGUgYnVmZmVyIHRvIGJlIGZ1bGwuIFwiXG4gW2J1ZmZdXG4gKHNhdGlzZmllcz8gaW1wbC9VbmJsb2NraW5nQnVmZmVyIGJ1ZmYpKVxuIn0gezpzeW0gcHV0ISwgOm1ldGEgezpkb2MgIkFzeW5jaHJvbm91c2x5IHB1dHMgYSB2YWwgaW50byBwb3J0LCBjYWxsaW5nIGZuMSAoaWYgc3VwcGxpZWQpIHdoZW5cbiAgIGNvbXBsZXRlLiBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gV2lsbCB0aHJvdyBpZiBjbG9zZWQuIElmXG4gICBvbi1jYWxsZXI/IChkZWZhdWx0IHRydWUpIGlzIHRydWUsIGFuZCB0aGUgcHV0IGlzIGltbWVkaWF0ZWx5XG4gICBhY2NlcHRlZCwgd2lsbCBjYWxsIGZuMSBvbiBjYWxsaW5nIHRocmVhZC4gIFJldHVybnMgbmlsLiIsIDphcmdsaXN0cyBbW3BvcnQgdmFsXSBbcG9ydCB2YWwgZm4xXSBbcG9ydCB2YWwgZm4xIG9uLWNhbGxlcj9dXX0sIDpzb3VyY2UgIihkZWZuXG4gcHV0IVxuIFwiQXN5bmNocm9ub3VzbHkgcHV0cyBhIHZhbCBpbnRvIHBvcnQsIGNhbGxpbmcgZm4xIChpZiBzdXBwbGllZCkgd2hlblxcbiAgIGNvbXBsZXRlLiBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gV2lsbCB0aHJvdyBpZiBjbG9zZWQuIElmXFxuICAgb24tY2FsbGVyPyAoZGVmYXVsdCB0cnVlKSBpcyB0cnVlLCBhbmQgdGhlIHB1dCBpcyBpbW1lZGlhdGVseVxcbiAgIGFjY2VwdGVkLCB3aWxsIGNhbGwgZm4xIG9uIGNhbGxpbmcgdGhyZWFkLiAgUmV0dXJucyBuaWwuXCJcbiAoW3BvcnQgdmFsXSAoaWYtbGV0IFtyZXQgKGltcGwvcHV0ISBwb3J0IHZhbCBmaG5vcCldIEByZXQgdHJ1ZSkpXG4gKFtwb3J0IHZhbCBmbjFdIChwdXQhIHBvcnQgdmFsIGZuMSB0cnVlKSlcbiAoW3BvcnQgdmFsIGZuMSBvbi1jYWxsZXI/XVxuICAoaWYtbGV0XG4gICBbcmV0YiAoaW1wbC9wdXQhIHBvcnQgdmFsIChmbi1oYW5kbGVyIGZuMSkpXVxuICAgKGxldFxuICAgIFtyZXQgQHJldGJdXG4gICAgKGlmIG9uLWNhbGxlcj8gKGZuMSByZXQpIChkaXNwYXRjaC9ydW4gKGZuKiBbXSAoZm4xIHJldCkpKSlcbiAgICByZXQpXG4gICB0cnVlKSkpXG4ifSB7OnN5bSB0YWtlISwgOm1ldGEgezpkb2MgIkFzeW5jaHJvbm91c2x5IHRha2VzIGEgdmFsIGZyb20gcG9ydCwgcGFzc2luZyB0byBmbjEuIFdpbGwgcGFzcyBuaWxcbiAgIGlmIGNsb3NlZC4gSWYgb24tY2FsbGVyPyAoZGVmYXVsdCB0cnVlKSBpcyB0cnVlLCBhbmQgdmFsdWUgaXNcbiAgIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwgd2lsbCBjYWxsIGZuMSBvbiBjYWxsaW5nIHRocmVhZC5cbiAgIFJldHVybnMgbmlsLiIsIDphcmdsaXN0cyBbW3BvcnQgZm4xXSBbcG9ydCBmbjEgb24tY2FsbGVyP11dfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWtlIVxuIFwiQXN5bmNocm9ub3VzbHkgdGFrZXMgYSB2YWwgZnJvbSBwb3J0LCBwYXNzaW5nIHRvIGZuMS4gV2lsbCBwYXNzIG5pbFxcbiAgIGlmIGNsb3NlZC4gSWYgb24tY2FsbGVyPyAoZGVmYXVsdCB0cnVlKSBpcyB0cnVlLCBhbmQgdmFsdWUgaXNcXG4gICBpbW1lZGlhdGVseSBhdmFpbGFibGUsIHdpbGwgY2FsbCBmbjEgb24gY2FsbGluZyB0aHJlYWQuXFxuICAgUmV0dXJucyBuaWwuXCJcbiAoW3BvcnQgZm4xXSAodGFrZSEgcG9ydCBmbjEgdHJ1ZSkpXG4gKFtwb3J0IGZuMSBvbi1jYWxsZXI/XVxuICAobGV0XG4gICBbcmV0IChpbXBsL3Rha2UhIHBvcnQgKGZuLWhhbmRsZXIgZm4xKSldXG4gICAod2hlblxuICAgIHJldFxuICAgIChsZXRcbiAgICAgW3ZhbCBAcmV0XVxuICAgICAoaWYgb24tY2FsbGVyPyAoZm4xIHZhbCkgKGRpc3BhdGNoL3J1biAoZm4qIFtdIChmbjEgdmFsKSkpKSkpXG4gICBuaWwpKSlcbiJ9KSwgcGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkICh7OnN5bSBzY2FsZS0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2NhbGUtM2QtZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChmLWVudGl0eSBnYW1lIGRhdGEvZi0zZClcbiAgIHR4XG4gICAxMDBcbiAgIHR5XG4gICAxMDBcbiAgICpzdGF0ZVxuICAgKGF0b20gezp0eCB0eCwgOnR5IHR5LCA6cnggMSwgOnJ5IDF9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAwIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQgMCA0MDAgLTQwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB0eCB0eSAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA0MCkgOngpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDI1KSA6eSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMzI1KSA6eikgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3NjYWxlIHJ4IHJ5IDEpKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9zY2FsZS0zZC1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBzY2FsZS0zZC1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW3s6a2V5cyBbdHggdHkgcnggcnldfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6Y2xlYXJcbiAgIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX1cbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgMCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0IDAgNDAwIC00MDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkgMClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNDApIDp4KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCAyNSkgOnkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDMyNSkgOnopXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSByeCByeSAxKSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9zY2FsZS0zZC1leGFtcGxlLzAifV19IHs6c3ltIHBlcnNwZWN0aXZlLXRleHR1cmUtbWV0YS0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhcmdldC13aWR0aCB0YXJnZXQtaGVpZ2h0IGdhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGVyc3BlY3RpdmUtdGV4dHVyZS1tZXRhLTNkLWV4YW1wbGVcbiBbdGFyZ2V0LXdpZHRoIHRhcmdldC1oZWlnaHQgZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoLT4+XG4gICAgezp2ZXJ0ZXggZGF0YS90ZXh0dXJlLXZlcnRleC1zaGFkZXIsXG4gICAgIDpmcmFnbWVudCBkYXRhL3RleHR1cmUtZnJhZ21lbnQtc2hhZGVyLFxuICAgICA6YXR0cmlidXRlc1xuICAgICB7J2FfcG9zaXRpb24gezpkYXRhIGRhdGEvY3ViZSwgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAzfSxcbiAgICAgICdhX3RleGNvb3JkXG4gICAgICB7OmRhdGEgZGF0YS9jdWJlLXRleGNvb3JkcyxcbiAgICAgICA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksXG4gICAgICAgOnNpemUgMixcbiAgICAgICA6bm9ybWFsaXplIHRydWV9fSxcbiAgICAgOnVuaWZvcm1zXG4gICAgIHsndV90ZXh0dXJlXG4gICAgICB7OmRhdGEgbmlsLFxuICAgICAgIDpvcHRzXG4gICAgICAgezptaXAtbGV2ZWwgMCxcbiAgICAgICAgOmludGVybmFsLWZtdCAoZ2wgZ2FtZSBSR0JBKSxcbiAgICAgICAgOndpZHRoIHRhcmdldC13aWR0aCxcbiAgICAgICAgOmhlaWdodCB0YXJnZXQtaGVpZ2h0LFxuICAgICAgICA6Ym9yZGVyIDAsXG4gICAgICAgIDpzcmMtZm10IChnbCBnYW1lIFJHQkEpLFxuICAgICAgICA6c3JjLXR5cGUgKGdsIGdhbWUgVU5TSUdORURfQllURSl9LFxuICAgICAgIDpwYXJhbXNcbiAgICAgICB7KGdsIGdhbWUgVEVYVFVSRV9XUkFQX1MpIChnbCBnYW1lIENMQU1QX1RPX0VER0UpLFxuICAgICAgICAoZ2wgZ2FtZSBURVhUVVJFX1dSQVBfVCkgKGdsIGdhbWUgQ0xBTVBfVE9fRURHRSksXG4gICAgICAgIChnbCBnYW1lIFRFWFRVUkVfTUlOX0ZJTFRFUikgKGdsIGdhbWUgTElORUFSKX19fSxcbiAgICAgOmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX19XG4gICAgZS9tYXAtPlRocmVlREVudGl0eVxuICAgIChjL2NvbXBpbGUgZ2FtZSkpXG4gICBpbm5lci1lbnRpdHlcbiAgICgtPj5cbiAgICB7OnZlcnRleCBkYXRhL3RleHR1cmUtdmVydGV4LXNoYWRlcixcbiAgICAgOmZyYWdtZW50IGRhdGEvdGV4dHVyZS1mcmFnbWVudC1zaGFkZXIsXG4gICAgIDphdHRyaWJ1dGVzXG4gICAgIHsnYV9wb3NpdGlvbiB7OmRhdGEgZGF0YS9jdWJlLCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDN9LFxuICAgICAgJ2FfdGV4Y29vcmRcbiAgICAgIHs6ZGF0YSBkYXRhL2N1YmUtdGV4Y29vcmRzLFxuICAgICAgIDp0eXBlIChnbCBnYW1lIEZMT0FUKSxcbiAgICAgICA6c2l6ZSAyLFxuICAgICAgIDpub3JtYWxpemUgdHJ1ZX19LFxuICAgICA6dW5pZm9ybXNcbiAgICAgeyd1X3RleHR1cmVcbiAgICAgIHs6ZGF0YSBbMTI4IDY0IDEyOCAwIDE5MiAwXSxcbiAgICAgICA6b3B0c1xuICAgICAgIHs6bWlwLWxldmVsIDAsXG4gICAgICAgIDppbnRlcm5hbC1mbXQgKGdsIGdhbWUgUjgpLFxuICAgICAgICA6d2lkdGggMyxcbiAgICAgICAgOmhlaWdodCAyLFxuICAgICAgICA6Ym9yZGVyIDAsXG4gICAgICAgIDpzcmMtZm10IChnbCBnYW1lIFJFRCksXG4gICAgICAgIDpzcmMtdHlwZSAoZ2wgZ2FtZSBVTlNJR05FRF9CWVRFKX0sXG4gICAgICAgOmFsaWdubWVudCAxLFxuICAgICAgIDpwYXJhbXNcbiAgICAgICB7KGdsIGdhbWUgVEVYVFVSRV9XUkFQX1MpIChnbCBnYW1lIENMQU1QX1RPX0VER0UpLFxuICAgICAgICAoZ2wgZ2FtZSBURVhUVVJFX1dSQVBfVCkgKGdsIGdhbWUgQ0xBTVBfVE9fRURHRSksXG4gICAgICAgIChnbCBnYW1lIFRFWFRVUkVfTUlOX0ZJTFRFUikgKGdsIGdhbWUgTkVBUkVTVCksXG4gICAgICAgIChnbCBnYW1lIFRFWFRVUkVfTUFHX0ZJTFRFUikgKGdsIGdhbWUgTkVBUkVTVCl9fX0sXG4gICAgIDpjbGVhciB7OmNvbG9yIFswIDAgMSAxXSwgOmRlcHRoIDF9fVxuICAgIGUvbWFwLT5UaHJlZURFbnRpdHlcbiAgICAoYy9jb21waWxlIGdhbWUpKVxuICAgc3RhdGVcbiAgIHs6cnggKG0vZGVnLT5yYWQgMTkwKSwgOnJ5IChtL2RlZy0+cmFkIDQwKX1dXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDppbm5lci1lbnRpdHkgaW5uZXItZW50aXR5IDpzdGF0ZSBzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChsZXQgW2NhbWVyYSAoLT4gKHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZC8tPmNhbWVyYSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDAgMikgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2xvb2stYXQgWzAgMCAwXSBbMCAxIDBdKSldICgtPiBlbnRpdHkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSBhc3BlY3QgMSAyMDAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvaW52ZXJ0IGNhbWVyYSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeCA6eCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeSA6eSkpKX0sIDpib2R5IChsZXQgW3RhcmdldC13aWR0aCAyNTYgdGFyZ2V0LWhlaWdodCAyNTYgcmVuZGVyLWN1YmUgKGZuIFtlbnRpdHkgezprZXlzIFtyeCByeV19IGFzcGVjdF0gZm9jdXMpXSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS10ZXh0dXJlLW1ldGEtM2QtZXhhbXBsZSB0YXJnZXQtd2lkdGggdGFyZ2V0LWhlaWdodCkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcGVyc3BlY3RpdmUtdGV4dHVyZS1tZXRhLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgaW5uZXItZW50aXR5IHN0YXRlIGRlbHRhLXRpbWVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFtnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSldIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHJlbmRlci1jdWJlIHN0YXRlICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpKSAoYXNzb2MgOnJlbmRlci10by10ZXh0dXJlIHsocXVvdGUgdV90ZXh0dXJlKSBbKC0+IGlubmVyLWVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggdGFyZ2V0LXdpZHRoLCA6aGVpZ2h0IHRhcmdldC1oZWlnaHR9KSAocmVuZGVyLWN1YmUgc3RhdGUgKC8gdGFyZ2V0LXdpZHRoIHRhcmdldC1oZWlnaHQpKSldfSkpKSkgKC0+IGdhbWUgKHVwZGF0ZS1pbiBbOnN0YXRlIDpyeF0gKyAoKiAxLjIgZGVsdGEtdGltZSkpICh1cGRhdGUtaW4gWzpzdGF0ZSA6cnldICsgKCogMC43IGRlbHRhLXRpbWUpKSkpKSkpLCA6Ym9keS1zdHIgIihsZXRcbiBbY2FtZXJhXG4gICgtPlxuICAgKHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZC8tPmNhbWVyYSlcbiAgIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwIDIpXG4gICAocGxheS1jbGpjLnRyYW5zZm9ybXMvbG9vay1hdCBbMCAwIDBdIFswIDEgMF0pKV1cbiAoLT5cbiAgZW50aXR5XG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0XG4gICAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApXG4gICBhc3BlY3RcbiAgIDFcbiAgIDIwMDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9pbnZlcnQgY2FtZXJhKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ4IDp4KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ5IDp5KSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS10ZXh0dXJlLW1ldGEtM2QtZXhhbXBsZS8wIn1dfSB7OnN5bSBwZXJzcGVjdGl2ZS10ZXh0dXJlLWRhdGEtM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNwZWN0aXZlLXRleHR1cmUtZGF0YS0zZC1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKC0+PlxuICAgIHs6dmVydGV4IGRhdGEvdGV4dHVyZS12ZXJ0ZXgtc2hhZGVyLFxuICAgICA6ZnJhZ21lbnQgZGF0YS90ZXh0dXJlLWZyYWdtZW50LXNoYWRlcixcbiAgICAgOmF0dHJpYnV0ZXNcbiAgICAgeydhX3Bvc2l0aW9uIHs6ZGF0YSBkYXRhL2N1YmUsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgM30sXG4gICAgICAnYV90ZXhjb29yZFxuICAgICAgezpkYXRhIGRhdGEvY3ViZS10ZXhjb29yZHMsXG4gICAgICAgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLFxuICAgICAgIDpzaXplIDIsXG4gICAgICAgOm5vcm1hbGl6ZSB0cnVlfX0sXG4gICAgIDp1bmlmb3Jtc1xuICAgICB7J3VfdGV4dHVyZVxuICAgICAgezpkYXRhIFsxMjggNjQgMTI4IDAgMTkyIDBdLFxuICAgICAgIDpvcHRzXG4gICAgICAgezptaXAtbGV2ZWwgMCxcbiAgICAgICAgOmludGVybmFsLWZtdCAoZ2wgZ2FtZSBSOCksXG4gICAgICAgIDp3aWR0aCAzLFxuICAgICAgICA6aGVpZ2h0IDIsXG4gICAgICAgIDpib3JkZXIgMCxcbiAgICAgICAgOnNyYy1mbXQgKGdsIGdhbWUgUkVEKSxcbiAgICAgICAgOnNyYy10eXBlIChnbCBnYW1lIFVOU0lHTkVEX0JZVEUpfSxcbiAgICAgICA6YWxpZ25tZW50IDEsXG4gICAgICAgOnBhcmFtc1xuICAgICAgIHsoZ2wgZ2FtZSBURVhUVVJFX1dSQVBfUykgKGdsIGdhbWUgQ0xBTVBfVE9fRURHRSksXG4gICAgICAgIChnbCBnYW1lIFRFWFRVUkVfV1JBUF9UKSAoZ2wgZ2FtZSBDTEFNUF9UT19FREdFKSxcbiAgICAgICAgKGdsIGdhbWUgVEVYVFVSRV9NSU5fRklMVEVSKSAoZ2wgZ2FtZSBORUFSRVNUKSxcbiAgICAgICAgKGdsIGdhbWUgVEVYVFVSRV9NQUdfRklMVEVSKSAoZ2wgZ2FtZSBORUFSRVNUKX19fSxcbiAgICAgOmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX19XG4gICAgZS9tYXAtPlRocmVlREVudGl0eVxuICAgIChjL2NvbXBpbGUgZ2FtZSkpXG4gICBzdGF0ZVxuICAgezpyeCAobS9kZWctPnJhZCAxOTApLCA6cnkgKG0vZGVnLT5yYWQgNDApfV1cbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOnN0YXRlIHN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIDEgMjAwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2ludmVydCBjYW1lcmEpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnggOngpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnkgOnkpKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS10ZXh0dXJlLWRhdGEtM2QtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcGVyc3BlY3RpdmUtdGV4dHVyZS1kYXRhLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgc3RhdGUgZGVsdGEtdGltZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW2NhbWVyYSAoLT4gKHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZC8tPmNhbWVyYSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDAgMikgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2xvb2stYXQgWzAgMCAwXSBbMCAxIDBdKSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpIHs6a2V5cyBbcnggcnldfSBzdGF0ZV0gZm9jdXMpICgtPiBnYW1lICh1cGRhdGUtaW4gWzpzdGF0ZSA6cnhdICsgKCogMS4yIGRlbHRhLXRpbWUpKSAodXBkYXRlLWluIFs6c3RhdGUgOnJ5XSArICgqIDAuNyBkZWx0YS10aW1lKSkpKSkpLCA6Ym9keS1zdHIgIihwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiBnYW1lXG4gKC0+XG4gIGVudGl0eVxuICAoYXNzb2NcbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3RcbiAgIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA2MClcbiAgICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpXG4gICAxXG4gICAyMDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvaW52ZXJ0IGNhbWVyYSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeCA6eClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeSA6eSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtdGV4dHVyZS1kYXRhLTNkLWV4YW1wbGUvMCJ9XX0gezpzeW0gcGVyc3BlY3RpdmUtM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNwZWN0aXZlLTNkLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5IChmLWVudGl0eSBnYW1lIGRhdGEvZi0zZCkgKnN0YXRlIChhdG9tIHs6Y3ggMCwgOmN5IDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIDEgMjAwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSBjeCBjeSAtMTUwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCAxODApIDp4KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIDAgOnkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgMCA6eikpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLTNkLWV4YW1wbGUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHBlcnNwZWN0aXZlLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgKnN0YXRlXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbezprZXlzIFtjeCBjeV19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKSBnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSldIGZvY3VzKSBnYW1lKSkpLCA6Ym9keS1zdHIgIihwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiBnYW1lXG4gKC0+XG4gIGVudGl0eVxuICAoYXNzb2NcbiAgIDpjbGVhclxuICAgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfVxuICAgOnZpZXdwb3J0XG4gICB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdFxuICAgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKVxuICAgKC8gZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgIDFcbiAgIDIwMDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgY3ggY3kgLTE1MClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMTgwKSA6eClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAwIDp5KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIDAgOnopKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLTNkLWV4YW1wbGUvMCJ9XX0gezpzeW0gcm90YXRpb24tM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHJvdGF0aW9uLTNkLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoZi1lbnRpdHkgZ2FtZSBkYXRhL2YtM2QpXG4gICB0eFxuICAgMTAwXG4gICB0eVxuICAgMTAwXG4gICAqc3RhdGVcbiAgIChhdG9tIHs6dHggdHgsIDp0eSB0eSwgOnIgMH0pXVxuICAoZXUvbGlzdGVuLWZvci1tb3VzZSBnYW1lICpzdGF0ZSlcbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOipzdGF0ZSAqc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX0gOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IDAgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCAwIDQwMCAtNDAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5IDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgciA6eCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByIDp5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIgOnopIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgLTUwIC03NSAwKSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2Qvcm90YXRpb24tM2QtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcm90YXRpb24tM2QtcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFt7OmtleXMgW3R4IHR5IHJdfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6Y2xlYXJcbiAgIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX1cbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgMCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0IDAgNDAwIC00MDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkgMClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByIDp4KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIgOnkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgciA6eilcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAtNTAgLTc1IDApKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3JvdGF0aW9uLTNkLWV4YW1wbGUvMCJ9XX0gezpzeW0gcGVyc3BlY3RpdmUtdGV4dHVyZS0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWUgezprZXlzIFtkYXRhIHdpZHRoIGhlaWdodF19XSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNwZWN0aXZlLXRleHR1cmUtM2QtZXhhbXBsZVxuIFtnYW1lIHs6a2V5cyBbZGF0YSB3aWR0aCBoZWlnaHRdfV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoLT4+XG4gICAgezp2ZXJ0ZXggZGF0YS90ZXh0dXJlLXZlcnRleC1zaGFkZXIsXG4gICAgIDpmcmFnbWVudCBkYXRhL3RleHR1cmUtZnJhZ21lbnQtc2hhZGVyLFxuICAgICA6YXR0cmlidXRlc1xuICAgICB7J2FfcG9zaXRpb25cbiAgICAgIHs6ZGF0YSAodHJhbnNmb3JtLWYtZGF0YSBkYXRhL2YtM2QpLFxuICAgICAgIDp0eXBlIChnbCBnYW1lIEZMT0FUKSxcbiAgICAgICA6c2l6ZSAzfSxcbiAgICAgICdhX3RleGNvb3JkXG4gICAgICB7OmRhdGEgZGF0YS9mLXRleGNvb3JkcyxcbiAgICAgICA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksXG4gICAgICAgOnNpemUgMixcbiAgICAgICA6bm9ybWFsaXplIHRydWV9fSxcbiAgICAgOnVuaWZvcm1zXG4gICAgIHsndV90ZXh0dXJlXG4gICAgICB7OmRhdGEgZGF0YSxcbiAgICAgICA6b3B0c1xuICAgICAgIHs6bWlwLWxldmVsIDAsXG4gICAgICAgIDppbnRlcm5hbC1mbXQgKGdsIGdhbWUgUkdCQSksXG4gICAgICAgIDp3aWR0aCB3aWR0aCxcbiAgICAgICAgOmhlaWdodCBoZWlnaHQsXG4gICAgICAgIDpib3JkZXIgMCxcbiAgICAgICAgOnNyYy1mbXQgKGdsIGdhbWUgUkdCQSksXG4gICAgICAgIDpzcmMtdHlwZSAoZ2wgZ2FtZSBVTlNJR05FRF9CWVRFKX0sXG4gICAgICAgOm1pcG1hcCB0cnVlfX0sXG4gICAgIDpjbGVhciB7OmNvbG9yIFswIDAgMCAwXSwgOmRlcHRoIDF9fVxuICAgIGUvbWFwLT5UaHJlZURFbnRpdHlcbiAgICAoYy9jb21waWxlIGdhbWUpKVxuICAgc3RhdGVcbiAgIHs6cnggKG0vZGVnLT5yYWQgMTkwKSwgOnJ5IChtL2RlZy0+cmFkIDQwKX1dXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpzdGF0ZSBzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAxIDIwMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9pbnZlcnQgY2FtZXJhKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ4IDp4KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ5IDp5KSkpfSwgOmJvZHkgKGxldCBbZ2FtZSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWltYWdlICJmLXRleHR1cmUucG5nIiAoZm4gW2ltYWdlXSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtdGV4dHVyZS0zZC1leGFtcGxlIGdhbWUgaW1hZ2UpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHBlcnNwZWN0aXZlLXRleHR1cmUtM2QtcmVuZGVyIFt7OmtleXMgW2VudGl0eSBzdGF0ZSBkZWx0YS10aW1lXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbY2FtZXJhICgtPiAocGxheS1jbGpjLmdsLmVudGl0aWVzLTNkLy0+Y2FtZXJhKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIDAgMCAyMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9sb29rLWF0IFswIDAgMF0gWzAgMSAwXSkpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSB7OmtleXMgW3J4IHJ5XX0gc3RhdGVdIGZvY3VzKSAoLT4gZ2FtZSAodXBkYXRlLWluIFs6c3RhdGUgOnJ4XSArICgqIDEuMiBkZWx0YS10aW1lKSkgKHVwZGF0ZS1pbiBbOnN0YXRlIDpyeV0gKyAoKiAwLjcgZGVsdGEtdGltZSkpKSkpKSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0XG4gICAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApXG4gICAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KVxuICAgMVxuICAgMjAwMClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2ludmVydCBjYW1lcmEpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnggOngpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnkgOnkpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLXRleHR1cmUtM2QtZXhhbXBsZS8wIn1dfSB7OnN5bSBwZXJzcGVjdGl2ZS1jYW1lcmEtdGFyZ2V0LTNkLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzcGVjdGl2ZS1jYW1lcmEtdGFyZ2V0LTNkLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoZi1lbnRpdHkgZ2FtZSAodHJhbnNmb3JtLWYtZGF0YSBkYXRhL2YtM2QpKVxuICAgKnN0YXRlXG4gICAoYXRvbSB7OmNyIDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKGRvdGltZXMgW2kgbnVtLWZzXSAobGV0IFthbmdsZSAoLyAoKiBpIFBJIDIpIG51bS1mcykgeCAoKiAoY29zIGFuZ2xlKSByYWRpdXMpIHogKCogKHNpbiBhbmdsZSkgcmFkaXVzKV0gKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgZW50aXR5IHggMCB6KSkpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLWNhbWVyYS10YXJnZXQtM2QtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcGVyc3BlY3RpdmUtY2FtZXJhLXRhcmdldC0zZC1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSB7OmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX19KSAobGV0IFt7OmtleXMgW2NyXX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSByYWRpdXMgMjAwIG51bS1mcyA1IGNhbWVyYSAoLT4gKHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZC8tPmNhbWVyYSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSBjciA6eSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDAgKCogcmFkaXVzIDEuNSkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9sb29rLWF0IFtyYWRpdXMgMCAwXSBbMCAxIDBdKSkgZW50aXR5ICgtPiBlbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIDEgMjAwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2ludmVydCBjYW1lcmEpKSBQSSBwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9QSSBzaW4gcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvc2luIGNvcyBwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9jb3NdIGZvY3VzKSBnYW1lKSkpLCA6Ym9keS1zdHIgIihkb3RpbWVzXG4gW2kgbnVtLWZzXVxuIChsZXRcbiAgW2FuZ2xlXG4gICAoLyAoKiBpIFBJIDIpIG51bS1mcylcbiAgIHhcbiAgICgqIChjb3MgYW5nbGUpIHJhZGl1cylcbiAgIHpcbiAgICgqIChzaW4gYW5nbGUpIHJhZGl1cyldXG4gIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiAgIGdhbWVcbiAgIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgZW50aXR5IHggMCB6KSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtY2FtZXJhLXRhcmdldC0zZC1leGFtcGxlLzAifV19IHs6c3ltIHRyYW5zbGF0aW9uLTNkLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2xhdGlvbi0zZC1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eSAoZi1lbnRpdHkgZ2FtZSBkYXRhL2YtM2QpICpzdGF0ZSAoYXRvbSB7OnggMCwgOnkgMH0pXVxuICAoZXUvbGlzdGVuLWZvci1tb3VzZSBnYW1lICpzdGF0ZSlcbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOipzdGF0ZSAqc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX0gOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IDAgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCAwIDQwMCAtNDAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHggeSAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA0MCkgOngpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDI1KSA6eSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMzI1KSA6eikpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3RyYW5zbGF0aW9uLTNkLWV4YW1wbGUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHRyYW5zbGF0aW9uLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgKnN0YXRlXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbezprZXlzIFt4IHldfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6Y2xlYXJcbiAgIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX1cbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgMCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0IDAgNDAwIC00MDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgeCB5IDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDQwKSA6eClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMjUpIDp5KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCAzMjUpIDp6KSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC90cmFuc2xhdGlvbi0zZC1leGFtcGxlLzAifV19IHs6c3ltIHBlcnNwZWN0aXZlLWNhbWVyYS0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGVyc3BlY3RpdmUtY2FtZXJhLTNkLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoZi1lbnRpdHkgZ2FtZSAodHJhbnNmb3JtLWYtZGF0YSBkYXRhL2YtM2QpKVxuICAgKnN0YXRlXG4gICAoYXRvbSB7OmNyIDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKGRvdGltZXMgW2kgbnVtLWZzXSAobGV0IFthbmdsZSAoLyAoKiBpIFBJIDIpIG51bS1mcykgeCAoKiAoY29zIGFuZ2xlKSByYWRpdXMpIHogKCogKHNpbiBhbmdsZSkgcmFkaXVzKV0gKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgZW50aXR5IHggMCB6KSkpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLWNhbWVyYS0zZC1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBwZXJzcGVjdGl2ZS1jYW1lcmEtM2QtcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgezpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9fSkgKGxldCBbezprZXlzIFtjcl19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKSBnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSkgcmFkaXVzIDIwMCBudW0tZnMgNSBjYW1lcmEgKC0+IChwbGF5LWNsamMuZ2wuZW50aXRpZXMtM2QvLT5jYW1lcmEpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgY3IgOnkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwICgqIHJhZGl1cyAxLjUpKSkgZW50aXR5ICgtPiBlbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIDEgMjAwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2ludmVydCBjYW1lcmEpKSBQSSBwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9QSSBzaW4gcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvc2luIGNvcyBwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9jb3NdIGZvY3VzKSBnYW1lKSkpLCA6Ym9keS1zdHIgIihkb3RpbWVzXG4gW2kgbnVtLWZzXVxuIChsZXRcbiAgW2FuZ2xlXG4gICAoLyAoKiBpIFBJIDIpIG51bS1mcylcbiAgIHhcbiAgICgqIChjb3MgYW5nbGUpIHJhZGl1cylcbiAgIHpcbiAgICgqIChzaW4gYW5nbGUpIHJhZGl1cyldXG4gIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiAgIGdhbWVcbiAgIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgZW50aXR5IHggMCB6KSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtY2FtZXJhLTNkLWV4YW1wbGUvMCJ9XX0gezpzeW0gcGVyc3BlY3RpdmUtYW5pbWF0aW9uLTNkLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzcGVjdGl2ZS1hbmltYXRpb24tM2QtZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChmLWVudGl0eSBnYW1lIGRhdGEvZi0zZClcbiAgIHN0YXRlXG4gICB7OnJ4IChtL2RlZy0+cmFkIDE5MCksIDpyeSAobS9kZWctPnJhZCA0MCksIDpyeiAobS9kZWctPnJhZCAzMjApfV1cbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOnN0YXRlIHN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIDEgMjAwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDAgLTM2MCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeCA6eCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeSA6eSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeiA6eikpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLWFuaW1hdGlvbi0zZC1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBwZXJzcGVjdGl2ZS1hbmltYXRpb24tM2QtcmVuZGVyIFt7OmtleXMgW2VudGl0eSBzdGF0ZSBkZWx0YS10aW1lXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpIHs6a2V5cyBbcnggcnkgcnpdfSBzdGF0ZV0gZm9jdXMpICh1cGRhdGUtaW4gZ2FtZSBbOnN0YXRlIDpyeV0gKyAoKiAxLjIgZGVsdGEtdGltZSkpKSkpLCA6Ym9keS1zdHIgIihwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiBnYW1lXG4gKC0+XG4gIGVudGl0eVxuICAoYXNzb2NcbiAgIDpjbGVhclxuICAgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfVxuICAgOnZpZXdwb3J0XG4gICB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdFxuICAgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKVxuICAgKC8gZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgIDFcbiAgIDIwMDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwIC0zNjApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnggOngpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnkgOnkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnogOnopKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLWFuaW1hdGlvbi0zZC1leGFtcGxlLzAifV19KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwuYnVmZmVycyAoezpzeW0gYWNvcHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3JjIHNyYy1zdGFydCBkZXN0IGRlc3Qtc3RhcnQgbGVuXSl9LCA6c291cmNlICIoZGVmblxuIGFjb3B5XG4gW3NyYyBzcmMtc3RhcnQgZGVzdCBkZXN0LXN0YXJ0IGxlbl1cbiAobG9vcFxuICBbY250IDBdXG4gICh3aGVuXG4gICAoPCBjbnQgbGVuKVxuICAgKGFzZXQgZGVzdCAoKyBkZXN0LXN0YXJ0IGNudCkgKGFnZXQgc3JjICgrIHNyYy1zdGFydCBjbnQpKSlcbiAgIChyZWN1ciAoaW5jIGNudCkpKSkpXG4ifSB7OnN5bSByaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIHJpbmctYnVmZmVyXG4gW25dXG4gKGFzc2VydCAoPiBuIDApIFwiQ2FuJ3QgY3JlYXRlIGEgcmluZyBidWZmZXIgb2Ygc2l6ZSAwXCIpXG4gKFJpbmdCdWZmZXIuIDAgMCAwIChtYWtlLWFycmF5IG4pKSlcbiJ9IHs6c3ltIGZpeGVkLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmbiBmaXhlZC1idWZmZXIgW25dIChGaXhlZEJ1ZmZlci4gKHJpbmctYnVmZmVyIG4pIG4pKVxuIn0gezpzeW0gZHJvcHBpbmctYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuIGRyb3BwaW5nLWJ1ZmZlciBbbl0gKERyb3BwaW5nQnVmZmVyLiAocmluZy1idWZmZXIgbikgbikpXG4ifSB7OnN5bSBzbGlkaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmbiBzbGlkaW5nLWJ1ZmZlciBbbl0gKFNsaWRpbmdCdWZmZXIuIChyaW5nLWJ1ZmZlciBuKSBuKSlcbiJ9IHs6c3ltIHByb21pc2UtYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gcHJvbWlzZS1idWZmZXIgW10gKFByb21pc2VCdWZmZXIuIE5PLVZBTCkpXG4ifSksIGNsanMuYW5hbHl6ZXIucGFzc2VzLmFuZC1vciAoezpzeW0gcmVtb3ZlLWxvb3AtbGV0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZuLWFzdCBsb2NhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtbG9vcC1sZXRcbiBbZm4tYXN0IGxvY2FsXVxuICh1cGRhdGVcbiAgZm4tYXN0XG4gIDpsb29wLWxldHNcbiAgKGZuXG4gICBbbG9vcC1sZXRzXVxuICAgKG1hcFxuICAgIChmblxuICAgICBbbV1cbiAgICAgKHVwZGF0ZVxuICAgICAgbVxuICAgICAgOnBhcmFtc1xuICAgICAgKGZuXG4gICAgICAgW3hzXVxuICAgICAgIChyZW1vdmUgKGZuKiBbcDFfXzQ1NDUwI10gKD0gbG9jYWwgKDpuYW1lIHAxX180NTQ1MCMpKSkgeHMpKSkpXG4gICAgbG9vcC1sZXRzKSkpKVxuIn0gezpzeW0gc2ltcGxlLW9wcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzaW1wbGUtb3BzXG4gI3s6anNcbiAgIDpob3N0LWZpZWxkXG4gICA6Y29uc3RcbiAgIDp2YXJcbiAgIDpxdW90ZVxuICAgOmludm9rZVxuICAgOmpzLXZhclxuICAgOmhvc3QtY2FsbFxuICAgOmxvY2FsfSlcbiJ9IHs6c3ltIG9wdGltaXplLW9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvcHRpbWl6ZS1vclxuIFthc3RdXG4gKGxldFxuICBbezprZXlzIFtpbml0IG5hbWVdfSAoLT4gYXN0IDpiaW5kaW5ncyBmaXJzdCldXG4gIHs6b3AgOmpzLFxuICAgOmVudiAoOmVudiBhc3QpLFxuICAgOnNlZ3MgW1wiKChcIiBcIikgfHwgKFwiIFwiKSlcIl0sXG4gICA6YXJnc1xuICAgW2luaXRcbiAgICAocGFzc2VzL3dhbGtcbiAgICAgKC0+ZXhwci1lbnYgKC0+IGFzdCA6Ym9keSA6cmV0IDplbHNlKSlcbiAgICAgWyhyZW1vdmUtbG9jYWwtcGFzcyBuYW1lKV0pXSxcbiAgIDpmb3JtICg6Zm9ybSBhc3QpLFxuICAgOmNoaWxkcmVuIFs6YXJnc10sXG4gICA6dGFnICdib29sZWFufSkpXG4ifSB7OnN5bSBuby1zdGF0ZW1lbnRzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsZXQtYXN0XSl9LCA6c291cmNlICIoZGVmbiBuby1zdGF0ZW1lbnRzPyBbbGV0LWFzdF0gKD0gW10gKC0+IGxldC1hc3QgOmJvZHkgOnN0YXRlbWVudHMpKSlcbiJ9IHs6c3ltIHNpbXBsZS1vcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXN0XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1vcj9cbiBbYXN0XVxuIChhbmQgKHNpbXBsZS10ZXN0LWJpbmRpbmctbGV0PyBhc3QpICh0ZXN0PXRoZW4/ICgtPiBhc3QgOmJvZHkgOnJldCkpKSlcbiJ9IHs6c3ltIHRlc3Q9dGhlbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaWYtYXN0XSl9LCA6c291cmNlICIoZGVmblxuIHRlc3Q9dGhlbj9cbiBbaWYtYXN0XVxuICg9IChkaXNzb2MgKDp0ZXN0IGlmLWFzdCkgOmVudikgKGRpc3NvYyAoOnRoZW4gaWYtYXN0KSA6ZW52KSkpXG4ifSB7OnN5bSB0ZXN0PWVsc2U/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2lmLWFzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0PWVsc2U/XG4gW2lmLWFzdF1cbiAoPSAoZGlzc29jICg6dGVzdCBpZi1hc3QpIDplbnYpIChkaXNzb2MgKDplbHNlIGlmLWFzdCkgOmVudikpKVxuIn0gezpzeW0gc2ltcGxlLXRlc3QtYmluZGluZy1sZXQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtdGVzdC1iaW5kaW5nLWxldD9cbiBbYXN0XVxuIChhbmRcbiAgKHNpbmdsZS1iaW5kaW5nLWxldD8gYXN0KVxuICAobm8tc3RhdGVtZW50cz8gYXN0KVxuICAoc2ltcGxlLXRlc3QtZXhwcj8gKC0+IGFzdCA6YmluZGluZ3MgZmlyc3QgOmluaXQpKVxuICAocmV0dXJucy1pZj8gYXN0KSkpXG4ifSB7OnN5bSBzaW1wbGUtb3A/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm4gc2ltcGxlLW9wPyBbYXN0XSAoY29udGFpbnM/IHNpbXBsZS1vcHMgKDpvcCBhc3QpKSlcbiJ9IHs6c3ltIG9wdGltaXphYmxlLWFuZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXN0XSl9LCA6c291cmNlICIoZGVmblxuIG9wdGltaXphYmxlLWFuZD9cbiBbYXN0XVxuIChhbmQgKHNpbXBsZS1hbmQ/IGFzdCkgKHNpbXBsZS10ZXN0LWV4cHI/ICgtPiBhc3QgOmJvZHkgOnJldCA6dGhlbikpKSlcbiJ9IHs6c3ltIG9wdGltaXphYmxlLW9yPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3B0aW1pemFibGUtb3I/XG4gW2FzdF1cbiAoYW5kIChzaW1wbGUtb3I/IGFzdCkgKHNpbXBsZS10ZXN0LWV4cHI/ICgtPiBhc3QgOmJvZHkgOnJldCA6ZWxzZSkpKSlcbiJ9IHs6c3ltIC0+ZXhwci1lbnYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXN0XSl9LCA6c291cmNlICIoZGVmbiAtPmV4cHItZW52IFthc3RdIChhc3NvYy1pbiBhc3QgWzplbnYgOmNvbnRleHRdIDpleHByKSlcbiJ9IHs6c3ltIHJldHVybnMtaWY/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xldC1hc3RdKX0sIDpzb3VyY2UgIihkZWZuIHJldHVybnMtaWY/IFtsZXQtYXN0XSAoPSA6aWYgKC0+IGxldC1hc3QgOmJvZHkgOnJldCA6b3ApKSlcbiJ9IHs6c3ltIHJlbW92ZS1sb2NhbC1wYXNzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xvY2FsXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS1sb2NhbC1wYXNzXG4gW2xvY2FsXVxuIChmblxuICBbZW52IGFzdCBvcHRzXVxuICAoY29uZC0+XG4gICAodXBkYXRlLWluIGFzdCBbOmVudiA6bG9jYWxzXSBkaXNzb2MgbG9jYWwpXG4gICAoPSA6Zm4gKDpvcCBhc3QpKVxuICAgKHJlbW92ZS1sb29wLWxldCBsb2NhbCkpKSlcbiJ9IHs6c3ltIHNpbXBsZS1hbmQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtYW5kP1xuIFthc3RdXG4gKGFuZCAoc2ltcGxlLXRlc3QtYmluZGluZy1sZXQ/IGFzdCkgKHRlc3Q9ZWxzZT8gKC0+IGFzdCA6Ym9keSA6cmV0KSkpKVxuIn0gezpzeW0gb3B0aW1pemUtYW5kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvcHRpbWl6ZS1hbmRcbiBbYXN0XVxuIChsZXRcbiAgW3s6a2V5cyBbaW5pdCBuYW1lXX0gKC0+IGFzdCA6YmluZGluZ3MgZmlyc3QpXVxuICB7Om9wIDpqcyxcbiAgIDplbnYgKDplbnYgYXN0KSxcbiAgIDpzZWdzIFtcIigoXCIgXCIpICYmIChcIiBcIikpXCJdLFxuICAgOmFyZ3NcbiAgIFtpbml0XG4gICAgKHBhc3Nlcy93YWxrXG4gICAgICgtPmV4cHItZW52ICgtPiBhc3QgOmJvZHkgOnJldCA6dGhlbikpXG4gICAgIFsocmVtb3ZlLWxvY2FsLXBhc3MgbmFtZSldKV0sXG4gICA6Zm9ybSAoOmZvcm0gYXN0KSxcbiAgIDpjaGlsZHJlbiBbOmFyZ3NdLFxuICAgOnRhZyAnYm9vbGVhbn0pKVxuIn0gezpzeW0gc2ltcGxlLXRlc3QtZXhwcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBhc3R9XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS10ZXN0LWV4cHI/XG4gW3s6a2V5cyBbb3BdLCA6YXMgYXN0fV1cbiAoYm9vbGVhblxuICAoYW5kXG4gICAoc2ltcGxlLW9wPyBhc3QpXG4gICAoJyN7c2VxIGJvb2xlYW59XG4gICAgKG9yICg6dGFnIGFzdCkgKHdoZW4gKCN7OnZhciA6bG9jYWx9IG9wKSAoLT4gYXN0IDppbmZvIDp0YWcpKSkpKSkpXG4ifSB7OnN5bSBzaW5nbGUtYmluZGluZy1sZXQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW5nbGUtYmluZGluZy1sZXQ/XG4gW2FzdF1cbiAoYW5kICg9IDpsZXQgKDpvcCBhc3QpKSAoPSAxIChjb3VudCAoLT4gYXN0IDpiaW5kaW5ncykpKSkpXG4ifSB7OnN5bSBvcHRpbWl6ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgYXN0IF9dKX0sIDpzb3VyY2UgIihkZWZuXG4gb3B0aW1pemVcbiBbZW52IGFzdCBfXVxuIChjb25kXG4gIChvcHRpbWl6YWJsZS1hbmQ/IGFzdClcbiAgKG9wdGltaXplLWFuZCBhc3QpXG4gIChvcHRpbWl6YWJsZS1vcj8gYXN0KVxuICAob3B0aW1pemUtb3IgYXN0KVxuICA6ZWxzZVxuICBhc3QpKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5wcm90b2NvbHMgKHs6c3ltIHJlbW92ZSEsIDptZXRhIHs6ZG9jICJyZW1vdmUgYW5kIHJldHVybiBuZXh0IGl0ZW0gZnJvbSBidWZmZXIsIGNhbGxlZCB1bmRlciBjaGFuIG11dGV4IiwgOmFyZ2xpc3RzIChbYl0pfSwgOnByb3RvY29sIEJ1ZmZlcn0gezpzeW0gY2xvc2UtYnVmISwgOm1ldGEgezpkb2MgImNhbGxlZCBvbiBjaGFuIGNsb3NlZCB1bmRlciBjaGFuIG11dGV4LCByZXR1cm4gaWdub3JlZCIsIDphcmdsaXN0cyAoW2JdKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIGNsb3NlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaGFuXSl9LCA6cHJvdG9jb2wgQ2hhbm5lbH0gezpzeW0gSGFuZGxlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFjdGl2ZT8gYmxvY2thYmxlPyBjb21taXQpfSB7OnN5bSBibG9ja2FibGU/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIHRoaXMgaGFuZGxlciBtYXkgYmUgYmxvY2tlZCwgb3RoZXJ3aXNlIGl0IG11c3Qgbm90IGJsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIGFjdGl2ZT8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRydWUgaWYgaGFzIGNhbGxiYWNrLiBNdXN0IHdvcmsgdy9vIGxvY2siLCA6YXJnbGlzdHMgKFtoXSl9LCA6cHJvdG9jb2wgSGFuZGxlcn0gezpzeW0gQnVmZmVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoYWRkISogY2xvc2UtYnVmISBmdWxsPyByZW1vdmUhKX0gezpzeW0gZnVsbD8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRydWUgaWYgYnVmZmVyIGNhbm5vdCBhY2NlcHQgcHV0IiwgOmFyZ2xpc3RzIChbYl0pfSwgOnByb3RvY29sIEJ1ZmZlcn0gezpzeW0gYWRkISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tiXSBbYiBpdG1dXX0sIDpzb3VyY2UgIihkZWZuIGFkZCEgKFtiXSBiKSAoW2IgaXRtXSAoYXNzZXJ0IChub3QgKG5pbD8gaXRtKSkpIChhZGQhKiBiIGl0bSkpKVxuIn0gezpzeW0gYWRkISosIDptZXRhIHs6ZG9jICJpZiByb29tLCBhZGQgaXRlbSB0byB0aGUgYnVmZmVyLCByZXR1cm5zIGIsIGNhbGxlZCB1bmRlciBjaGFuIG11dGV4IiwgOmFyZ2xpc3RzIChbYiBpdG1dKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIFJlYWRQb3J0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodGFrZSEpfSB7OnN5bSBDaGFubmVsLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoY2xvc2UhIGNsb3NlZD8pfSB7OnN5bSBjbG9zZWQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NoYW5dKX0sIDpwcm90b2NvbCBDaGFubmVsfSB7OnN5bSBVbmJsb2NraW5nQnVmZmVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoKX0gezpzeW0gTUFYLVFVRVVFLVNJWkUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1BWC1RVUVVRS1TSVpFIDEwMjQpXG4ifSB7OnN5bSBjb21taXQsIDptZXRhIHs6ZG9jICJjb21taXQgdG8gZnVsZmlsbGluZyBpdHMgZW5kIG9mIHRoZSB0cmFuc2ZlciwgcmV0dXJucyBjYi4gTXVzdCBiZSBjYWxsZWQgd2l0aGluIGxvY2siLCA6YXJnbGlzdHMgKFtoXSl9LCA6cHJvdG9jb2wgSGFuZGxlcn0gezpzeW0gcHV0ISwgOm1ldGEgezpkb2MgImRlcmVmYWJsZSBib29sZWFuIChmYWxzZSBpZiBhbHJlYWR5IGNsb3NlZCkgaWYgaGFuZGxlZCwgbmlsIGlmIHB1dCB3YXMgZW5xdWV1ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCB0aHJvdyBvbiBuaWwgdmFsLiIsIDphcmdsaXN0cyAoW3BvcnQgdmFsIGZuMS1oYW5kbGVyXSl9LCA6cHJvdG9jb2wgV3JpdGVQb3J0fSB7OnN5bSB0YWtlISwgOm1ldGEgezpkb2MgImRlcmVmYWJsZSB2YWwgaWYgdGFrZW4sIG5pbCBpZiB0YWtlIHdhcyBlbnF1ZXVlZCIsIDphcmdsaXN0cyAoW3BvcnQgZm4xLWhhbmRsZXJdKX0sIDpwcm90b2NvbCBSZWFkUG9ydH0gezpzeW0gV3JpdGVQb3J0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAocHV0ISl9KSwgcnVtLmRlcml2ZWQtYXRvbSAoezpzeW0gZGVyaXZlZC1hdG9tLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3JlZnMga2V5IGZdIFtyZWZzIGtleSBmIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGVyaXZlZC1hdG9tXG4gKFtyZWZzIGtleSBmXSAoZGVyaXZlZC1hdG9tIHJlZnMga2V5IGYge30pKVxuIChbcmVmcyBrZXkgZiBvcHRzXVxuICAobGV0XG4gICBbezprZXlzIFtyZWYgY2hlY2stZXF1YWxzP10sIDpvciB7Y2hlY2stZXF1YWxzPyB0cnVlfX1cbiAgICBvcHRzXG4gICAgcmVjYWxjXG4gICAgKGNhc2VcbiAgICAgKGNvdW50IHJlZnMpXG4gICAgIDFcbiAgICAgKGxldCBbW2FdIHJlZnNdIChmbiogW10gKGYgQGEpKSlcbiAgICAgMlxuICAgICAobGV0IFtbYSBiXSByZWZzXSAoZm4qIFtdIChmIEBhIEBiKSkpXG4gICAgIDNcbiAgICAgKGxldCBbW2EgYiBjXSByZWZzXSAoZm4qIFtdIChmIEBhIEBiIEBjKSkpXG4gICAgIChmbiogW10gKGFwcGx5IGYgKG1hcCBkZXJlZiByZWZzKSkpKVxuICAgIHNpbmtcbiAgICAoaWYgcmVmIChkb3RvIHJlZiAocmVzZXQhIChyZWNhbGMpKSkgKGF0b20gKHJlY2FsYykpKVxuICAgIHdhdGNoXG4gICAgKGlmXG4gICAgIGNoZWNrLWVxdWFscz9cbiAgICAgKGZuXG4gICAgICBbXyBfIF8gX11cbiAgICAgIChsZXRcbiAgICAgICBbbmV3LXZhbCAocmVjYWxjKV1cbiAgICAgICAod2hlbiAobm90PSBAc2luayBuZXctdmFsKSAocmVzZXQhIHNpbmsgbmV3LXZhbCkpKSlcbiAgICAgKGZuIFtfIF8gXyBfXSAocmVzZXQhIHNpbmsgKHJlY2FsYykpKSldXG4gICAoZG9zZXEgW3JlZiByZWZzXSAoYWRkLXdhdGNoIHJlZiBrZXkgd2F0Y2gpKVxuICAgc2luaykpKVxuIn0pLCBtaXN0YWtlcy13ZXJlLW1hZGUuY29yZSAoezpzeW0gY2FuLXJlZG8/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHdlIGNhbiByZWRvLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FuLXJlZG8/XG4gXCJSZXR1cm5zIHRydWUgaWYgd2UgY2FuIHJlZG8uXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAoc29tZT8gKGdldC1uZXh0LXN0YXRlICplZGl0LWhpc3RvcnkpKSlcbiJ9IHs6c3ltIGF0b20/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGF0b20/XG4gKGZuKlxuICBbcDFfXzQ1MDMwI11cbiAgKGluc3RhbmNlP1xuICAgIz8oOmNsaiBjbG9qdXJlLmxhbmcuQXRvbSA6Y2xqcyBjbGpzLmNvcmUvQXRvbSlcbiAgIHAxX180NTAzMCMpKSlcbiJ9IHs6c3ltIGdldC1jdXJyZW50LXN0YXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtY3VycmVudC1zdGF0ZVxuIFwiUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtc3RhdGUgc3RhdGVzXX0gQCplZGl0LWhpc3RvcnldXG4gIChnZXQgc3RhdGVzIGN1cnJlbnQtc3RhdGUpKSlcbiJ9IHs6c3ltIHVuZG8hLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5kbyFcbiBcIkNoYW5nZXMgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqZWRpdC1oaXN0b3J5XVxuICh3aGVuLWxldFxuICBbc3RhdGUgKGdldC1wcmV2aW91cy1zdGF0ZSAqZWRpdC1oaXN0b3J5KV1cbiAgKHN3YXAhICplZGl0LWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LXN0YXRlIGRlYylcbiAgc3RhdGUpKVxuIn0gezpzeW0gcmVkbyEsIDptZXRhIHs6ZG9jICJDaGFuZ2VzIHRoZSBjdXJyZW50IHN0YXRlIGFuZCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIHJlZG8hXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IHN0YXRlIGFuZCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqZWRpdC1oaXN0b3J5XVxuICh3aGVuLWxldFxuICBbc3RhdGUgKGdldC1uZXh0LXN0YXRlICplZGl0LWhpc3RvcnkpXVxuICAoc3dhcCEgKmVkaXQtaGlzdG9yeSB1cGRhdGUgOmN1cnJlbnQtc3RhdGUgaW5jKVxuICBzdGF0ZSkpXG4ifSB7OnN5bSBjYW4tdW5kbz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgd2UgY2FuIHVuZG8uIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYW4tdW5kbz9cbiBcIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gdW5kby5cIlxuIFsqZWRpdC1oaXN0b3J5XVxuIChzb21lPyAoZ2V0LXByZXZpb3VzLXN0YXRlICplZGl0LWhpc3RvcnkpKSlcbiJ9IHs6c3ltIGdldC1uZXh0LXN0YXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbmV4dC1zdGF0ZVxuIFwiUmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtc3RhdGUgc3RhdGVzXX0gQCplZGl0LWhpc3RvcnldXG4gIChnZXQgc3RhdGVzIChpbmMgY3VycmVudC1zdGF0ZSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hLCA6bWV0YSB7OmRvYyAiVXBkYXRlcyBvbmx5IHRoZSBjdXJzb3IgcG9zaXRpb24uIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeSBjdXJzb3ItcG9zaXRpb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWN1cnNvci1wb3NpdGlvbiFcbiBcIlVwZGF0ZXMgb25seSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiXG4gWyplZGl0LWhpc3RvcnkgY3Vyc29yLXBvc2l0aW9uXVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZV19IEAqZWRpdC1oaXN0b3J5XVxuICAod2hlblxuICAgKD49IGN1cnJlbnQtc3RhdGUgMClcbiAgIChzd2FwIVxuICAgICplZGl0LWhpc3RvcnlcbiAgICBhc3NvYy1pblxuICAgIFs6c3RhdGVzIGN1cnJlbnQtc3RhdGUgOmN1cnNvci1wb3NpdGlvbl1cbiAgICBjdXJzb3ItcG9zaXRpb24pKSkpXG4ifSB7OnN5bSB1cGRhdGUtZWRpdC1oaXN0b3J5ISwgOm1ldGEgezpkb2MgIlVwZGF0ZXMgdGhlIGVkaXQgaGlzdG9yeSBhdG9tLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3Rvcnkgc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWVkaXQtaGlzdG9yeSFcbiBcIlVwZGF0ZXMgdGhlIGVkaXQgaGlzdG9yeSBhdG9tLlwiXG4gWyplZGl0LWhpc3Rvcnkgc3RhdGVdXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlcyBsaW1pdF19XG4gICBAKmVkaXQtaGlzdG9yeVxuICAgb2xkLXN0YXRlXG4gICAoZ2V0IHN0YXRlcyBjdXJyZW50LXN0YXRlKVxuICAgb2xkLWN1cnNvci1wb3NpdGlvblxuICAgKG9yIChmaXJzdCAoOm9yaWdpbmFsLWN1cnNvci1wb3NpdGlvbiBvbGQtc3RhdGUpKSAwKVxuICAgbmV3LWN1cnNvci1wb3NpdGlvblxuICAgKGZpcnN0ICg6Y3Vyc29yLXBvc2l0aW9uIHN0YXRlKSlcbiAgIG5ldy1jdXJzb3ItY2hhbmdlXG4gICAoLSBuZXctY3Vyc29yLXBvc2l0aW9uIG9sZC1jdXJzb3ItcG9zaXRpb24pXG4gICBzdGF0ZVxuICAgKGFzc29jIHN0YXRlIDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gKDpjdXJzb3ItcG9zaXRpb24gc3RhdGUpKV1cbiAgKHdoZW5cbiAgIChvclxuICAgIChub3Q9ICg6dGV4dCBvbGQtc3RhdGUpICg6dGV4dCBzdGF0ZSkpXG4gICAgKDpzZWxlY3Rpb24tY2hhbmdlPyBzdGF0ZSkpXG4gICAoc3dhcCFcbiAgICAqZWRpdC1oaXN0b3J5XG4gICAgKGZuXG4gICAgIFtlZGl0LWhpc3RvcnldXG4gICAgIChsZXRcbiAgICAgIFtuZXctY3VycmVudC1zdGF0ZVxuICAgICAgIChpZlxuICAgICAgICAob3IgKDw9IGN1cnJlbnQtc3RhdGUgMSkgKG5vdD0gbmV3LWN1cnNvci1jaGFuZ2UgMSkpXG4gICAgICAgIChpbmMgY3VycmVudC1zdGF0ZSlcbiAgICAgICAgY3VycmVudC1zdGF0ZSlcbiAgICAgICBuZXctc3RhdGVzXG4gICAgICAgKHN1YnZlYyBzdGF0ZXMgMCBuZXctY3VycmVudC1zdGF0ZSlcbiAgICAgICBuZXctc3RhdGVzXG4gICAgICAgKGNvbmogbmV3LXN0YXRlcyBzdGF0ZSldXG4gICAgICAoaWZcbiAgICAgICAoYW5kIGxpbWl0ICg+IChjb3VudCBuZXctc3RhdGVzKSBsaW1pdCkpXG4gICAgICAgKGFzc29jXG4gICAgICAgIGVkaXQtaGlzdG9yeVxuICAgICAgICA6Y3VycmVudC1zdGF0ZVxuICAgICAgICAoZGVjIG5ldy1jdXJyZW50LXN0YXRlKVxuICAgICAgICA6c3RhdGVzXG4gICAgICAgIChzdWJ2ZWMgbmV3LXN0YXRlcyAxKSlcbiAgICAgICAoYXNzb2NcbiAgICAgICAgZWRpdC1oaXN0b3J5XG4gICAgICAgIDpjdXJyZW50LXN0YXRlXG4gICAgICAgIG5ldy1jdXJyZW50LXN0YXRlXG4gICAgICAgIDpzdGF0ZXNcbiAgICAgICAgbmV3LXN0YXRlcykpKSkpKSkpXG4ifSB7OnN5bSBjcmVhdGUtZWRpdC1oaXN0b3J5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gY3JlYXRlLWVkaXQtaGlzdG9yeSBbXSAoYXRvbSB7OmN1cnJlbnQtc3RhdGUgLTEsIDpzdGF0ZXMgW119KSlcbiJ9IHs6c3ltIGdldC1wcmV2aW91cy1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByZXZpb3VzIHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1wcmV2aW91cy1zdGF0ZVxuIFwiUmV0dXJucyB0aGUgcHJldmlvdXMgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxuICAoZ2V0IHN0YXRlcyAoZGVjIGN1cnJlbnQtc3RhdGUpKSkpXG4ifSksIGNsanMudG9vbHMucmVhZGVyLmltcGwuaW5zcGVjdCAoezpzeW0gaW5zcGVjdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsdWUgc3VwcGxpZWQuXG4gICBNYXkgYmUgdGhlIGEgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZhbHVlIGl0c2VsZiAoZS5nLiBcInRydWVcIilcbiAgIG9yIGl0IG1heSBiZSBhIGRlc2NyaXB0aW9uIChlLmcuIFwiYW4gaW5zdGFuY2Ugb2YgRm9vXCIpLlxuICAgSWYgdHJ1bmNhdGUgaXMgdHJ1ZSB0aGVuIHJldHVybiBhIHZlcnkgdGVyc2UgdmVyc2lvbiBvZlxuICAgdGhlIGluc3BlY3Rpb24uIiwgOmFyZ2xpc3RzIFtbeF0gW3RydW5jYXRlIHhdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zcGVjdFxuIFwiUmV0dXJuIGEgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIHRoZSB2YWx1ZSBzdXBwbGllZC5cXG4gICBNYXkgYmUgdGhlIGEgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZhbHVlIGl0c2VsZiAoZS5nLiBcXFwidHJ1ZVxcXCIpXFxuICAgb3IgaXQgbWF5IGJlIGEgZGVzY3JpcHRpb24gKGUuZy4gXFxcImFuIGluc3RhbmNlIG9mIEZvb1xcXCIpLlxcbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcXG4gICB0aGUgaW5zcGVjdGlvbi5cIlxuIChbeF0gKGluc3BlY3QqIGZhbHNlIHgpKVxuIChbdHJ1bmNhdGUgeF0gKGluc3BlY3QqIHRydW5jYXRlIHgpKSlcbiJ9KSwgc2FibG9uby5jb3JlICh7OnN5bSB3cmFwLWF0dHJzLCA6bWV0YSB7OmRvYyAiQWRkIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGVsZW1lbnQgdmVjdG9yLiIsIDphcmdsaXN0cyAoW2Z1bmNdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JhcC1hdHRyc1xuIFwiQWRkIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGVsZW1lbnQgdmVjdG9yLlwiXG4gW2Z1bmNdXG4gKGZuXG4gIFsmIGFyZ3NdXG4gIChpZlxuICAgKG1hcD8gKGZpcnN0IGFyZ3MpKVxuICAgKGxldFxuICAgIFtbdGFnICYgYm9keV0gKGFwcGx5IGZ1bmMgKHJlc3QgYXJncykpXVxuICAgIChpZlxuICAgICAobWFwPyAoZmlyc3QgYm9keSkpXG4gICAgIChpbnRvIFt0YWcgKG1lcmdlIChmaXJzdCBib2R5KSAoZmlyc3QgYXJncykpXSAocmVzdCBib2R5KSlcbiAgICAgKGludG8gW3RhZyAoZmlyc3QgYXJncyldIGJvZHkpKSlcbiAgIChhcHBseSBmdW5jIGFyZ3MpKSkpXG4ifSB7OnN5bSBpbmNsdWRlLWNzcywgOm1ldGEgezpkb2MgIkluY2x1ZGUgYSBsaXN0IG9mIGV4dGVybmFsIHN0eWxlc2hlZXQgZmlsZXMuIiwgOmFyZ2xpc3RzIChbJiBzdHlsZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5jbHVkZS1jc3NcbiBcIkluY2x1ZGUgYSBsaXN0IG9mIGV4dGVybmFsIHN0eWxlc2hlZXQgZmlsZXMuXCJcbiBbJiBzdHlsZXNdXG4gKGZvclxuICBbc3R5bGUgc3R5bGVzXVxuICBbOmxpbmsgezp0eXBlIFwidGV4dC9jc3NcIiwgOmhyZWYgKGFzLXN0ciBzdHlsZSksIDpyZWwgXCJzdHlsZXNoZWV0XCJ9XSkpXG4ifSB7OnN5bSBpbmNsdWRlLWpzLCA6bWV0YSB7OmRvYyAiSW5jbHVkZSB0aGUgSmF2YVNjcmlwdCBsaWJyYXJ5IGF0IGBzcmNgLiIsIDphcmdsaXN0cyAoW3NyY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmNsdWRlLWpzXG4gXCJJbmNsdWRlIHRoZSBKYXZhU2NyaXB0IGxpYnJhcnkgYXQgYHNyY2AuXCJcbiBbc3JjXVxuIChkb20vYXBwZW5kQ2hpbGRcbiAgKC4tYm9keSAoZG9tL2dldERvY3VtZW50KSlcbiAgKGRvbS9jcmVhdGVEb20gXCJzY3JpcHRcIiAjanMgezpzcmMgc3JjfSkpKVxuIn0gezpzeW0gaW5jbHVkZS1yZWFjdCwgOm1ldGEgezpkb2MgIkluY2x1ZGUgRmFjZWJvb2sncyBSZWFjdCBKYXZhU2NyaXB0IGxpYnJhcnkuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGluY2x1ZGUtcmVhY3RcbiBcIkluY2x1ZGUgRmFjZWJvb2sncyBSZWFjdCBKYXZhU2NyaXB0IGxpYnJhcnkuXCJcbiBbXVxuIChpbmNsdWRlLWpzIFwiaHR0cDovL2ZiLm1lL3JlYWN0LTAuMTIuMi5qc1wiKSlcbiJ9IHs6c3ltICpncm91cCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpncm91cCogW10pXG4ifSB7OnN5bSBmaWxlLXVwbG9hZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZmlsZS11cGxvYWQgZmlsZS1maWVsZClcbiJ9KSwgY2xvanVyZS5zZXQgKHs6c3ltIHVuaW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBpbnB1dCBzZXRzIiwgOmFyZ2xpc3RzIFtbXSBbczFdIFtzMSBzMl0gW3MxIHMyICYgc2V0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmlvblxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBpbnB1dCBzZXRzXCJcbiAoW10gI3t9KVxuIChbczFdIHMxKVxuIChbczEgczJdXG4gIChpZlxuICAgKDwgKGNvdW50IHMxKSAoY291bnQgczIpKVxuICAgKHJlZHVjZSBjb25qIHMyIHMxKVxuICAgKHJlZHVjZSBjb25qIHMxIHMyKSkpXG4gKFtzMSBzMiAmIHNldHNdXG4gIChsZXRcbiAgIFtidWJibGVkLXNldHMgKGJ1YmJsZS1tYXgta2V5IGNvdW50IChjb25qIHNldHMgczIgczEpKV1cbiAgIChyZWR1Y2UgaW50byAoZmlyc3QgYnViYmxlZC1zZXRzKSAocmVzdCBidWJibGVkLXNldHMpKSkpKVxuIn0gezpzeW0gbWFwLWludmVydCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSB2YWxzIG1hcHBlZCB0byB0aGUga2V5cy4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1pbnZlcnRcbiBcIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSB2YWxzIG1hcHBlZCB0byB0aGUga2V5cy5cIlxuIFttXVxuIChyZWR1Y2UgKGZuIFttIFtrIHZdXSAoYXNzb2MgbSB2IGspKSB7fSBtKSlcbiJ9IHs6c3ltIGpvaW4sIDptZXRhIHs6ZG9jICJXaGVuIHBhc3NlZCAyIHJlbHMsIHJldHVybnMgdGhlIHJlbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYXR1cmFsXG4gIGpvaW4uIFdoZW4gcGFzc2VkIGFuIGFkZGl0aW9uYWwga2V5bWFwLCBqb2lucyBvbiB0aGUgY29ycmVzcG9uZGluZ1xuICBrZXlzLiIsIDphcmdsaXN0cyBbW3hyZWwgeXJlbF0gW3hyZWwgeXJlbCBrbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBqb2luXG4gXCJXaGVuIHBhc3NlZCAyIHJlbHMsIHJldHVybnMgdGhlIHJlbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYXR1cmFsXFxuICBqb2luLiBXaGVuIHBhc3NlZCBhbiBhZGRpdGlvbmFsIGtleW1hcCwgam9pbnMgb24gdGhlIGNvcnJlc3BvbmRpbmdcXG4gIGtleXMuXCJcbiAoW3hyZWwgeXJlbF1cbiAgKGlmXG4gICAoYW5kIChzZXEgeHJlbCkgKHNlcSB5cmVsKSlcbiAgIChsZXRcbiAgICBba3NcbiAgICAgKGludGVyc2VjdGlvbiAoc2V0IChrZXlzIChmaXJzdCB4cmVsKSkpIChzZXQgKGtleXMgKGZpcnN0IHlyZWwpKSkpXG4gICAgIFtyIHNdXG4gICAgIChpZiAoPD0gKGNvdW50IHhyZWwpIChjb3VudCB5cmVsKSkgW3hyZWwgeXJlbF0gW3lyZWwgeHJlbF0pXG4gICAgIGlkeFxuICAgICAoaW5kZXggciBrcyldXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtyZXQgeF1cbiAgICAgIChsZXRcbiAgICAgICBbZm91bmQgKGlkeCAoc2VsZWN0LWtleXMgeCBrcykpXVxuICAgICAgIChpZlxuICAgICAgICBmb3VuZFxuICAgICAgICAocmVkdWNlXG4gICAgICAgICAoZm4qXG4gICAgICAgICAgW3AxX180NDk3NCMgcDJfXzQ0OTc1I11cbiAgICAgICAgICAoY29uaiBwMV9fNDQ5NzQjIChtZXJnZSBwMl9fNDQ5NzUjIHgpKSlcbiAgICAgICAgIHJldFxuICAgICAgICAgZm91bmQpXG4gICAgICAgIHJldCkpKVxuICAgICAje31cbiAgICAgcykpXG4gICAje30pKVxuIChbeHJlbCB5cmVsIGttXVxuICAobGV0XG4gICBbW3IgcyBrXVxuICAgIChpZlxuICAgICAoPD0gKGNvdW50IHhyZWwpIChjb3VudCB5cmVsKSlcbiAgICAgW3hyZWwgeXJlbCAobWFwLWludmVydCBrbSldXG4gICAgIFt5cmVsIHhyZWwga21dKVxuICAgIGlkeFxuICAgIChpbmRleCByICh2YWxzIGspKV1cbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3JldCB4XVxuICAgICAobGV0XG4gICAgICBbZm91bmQgKGlkeCAocmVuYW1lLWtleXMgKHNlbGVjdC1rZXlzIHggKGtleXMgaykpIGspKV1cbiAgICAgIChpZlxuICAgICAgIGZvdW5kXG4gICAgICAgKHJlZHVjZVxuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQ0OTc2IyBwMl9fNDQ5NzcjXVxuICAgICAgICAgKGNvbmogcDFfXzQ0OTc2IyAobWVyZ2UgcDJfXzQ0OTc3IyB4KSkpXG4gICAgICAgIHJldFxuICAgICAgICBmb3VuZClcbiAgICAgICByZXQpKSlcbiAgICAje31cbiAgICBzKSkpKVxuIn0gezpzeW0gc2VsZWN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNldCBvZiB0aGUgZWxlbWVudHMgZm9yIHdoaWNoIHByZWQgaXMgdHJ1ZSIsIDphcmdsaXN0cyAoW3ByZWQgeHNldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZWxlY3RcbiBcIlJldHVybnMgYSBzZXQgb2YgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBwcmVkIGlzIHRydWVcIlxuIFtwcmVkIHhzZXRdXG4gKHJlZHVjZSAoZm4gW3Mga10gKGlmIChwcmVkIGspIHMgKGRpc2ogcyBrKSkpIHhzZXQgeHNldCkpXG4ifSB7OnN5bSBpbnRlcnNlY3Rpb24sIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzZXQgdGhhdCBpcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBpbnB1dCBzZXRzIiwgOmFyZ2xpc3RzIFtbczFdIFtzMSBzMl0gW3MxIHMyICYgc2V0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRlcnNlY3Rpb25cbiBcIlJldHVybiBhIHNldCB0aGF0IGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIGlucHV0IHNldHNcIlxuIChbczFdIHMxKVxuIChbczEgczJdXG4gIChpZlxuICAgKDwgKGNvdW50IHMyKSAoY291bnQgczEpKVxuICAgKHJlY3VyIHMyIHMxKVxuICAgKHJlZHVjZVxuICAgIChmblxuICAgICBbcmVzdWx0IGl0ZW1dXG4gICAgIChpZiAoY29udGFpbnM/IHMyIGl0ZW0pIHJlc3VsdCAoZGlzaiByZXN1bHQgaXRlbSkpKVxuICAgIHMxXG4gICAgczEpKSlcbiAoW3MxIHMyICYgc2V0c11cbiAgKGxldFxuICAgW2J1YmJsZWQtc2V0c1xuICAgIChidWJibGUtbWF4LWtleVxuICAgICAoZm4qIFtwMV9fNDQ5NzEjXSAoLSAoY291bnQgcDFfXzQ0OTcxIykpKVxuICAgICAoY29uaiBzZXRzIHMyIHMxKSldXG4gICAocmVkdWNlIGludGVyc2VjdGlvbiAoZmlyc3QgYnViYmxlZC1zZXRzKSAocmVzdCBidWJibGVkLXNldHMpKSkpKVxuIn0gezpzeW0gc3VwZXJzZXQ/LCA6bWV0YSB7OmRvYyAiSXMgc2V0MSBhIHN1cGVyc2V0IG9mIHNldDI/IiwgOmFyZ2xpc3RzIChbc2V0MSBzZXQyXSl9LCA6c291cmNlICIoZGVmblxuIHN1cGVyc2V0P1xuIFwiSXMgc2V0MSBhIHN1cGVyc2V0IG9mIHNldDI/XCJcbiBbc2V0MSBzZXQyXVxuIChhbmRcbiAgKD49IChjb3VudCBzZXQxKSAoY291bnQgc2V0MikpXG4gIChldmVyeT8gKGZuKiBbcDFfXzQ0OTc5I10gKGNvbnRhaW5zPyBzZXQxIHAxX180NDk3OSMpKSBzZXQyKSkpXG4ifSB7OnN5bSBpbmRleCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgb2YgdGhlIGRpc3RpbmN0IHZhbHVlcyBvZiBrcyBpbiB0aGUgeHJlbCBtYXBwZWQgdG8gYVxuICBzZXQgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBvZiBrcy4iLCA6YXJnbGlzdHMgKFt4cmVsIGtzXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4XG4gXCJSZXR1cm5zIGEgbWFwIG9mIHRoZSBkaXN0aW5jdCB2YWx1ZXMgb2Yga3MgaW4gdGhlIHhyZWwgbWFwcGVkIHRvIGFcXG4gIHNldCBvZiB0aGUgbWFwcyBpbiB4cmVsIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIG9mIGtzLlwiXG4gW3hyZWwga3NdXG4gKHJlZHVjZVxuICAoZm5cbiAgIFttIHhdXG4gICAobGV0IFtpayAoc2VsZWN0LWtleXMgeCBrcyldIChhc3NvYyBtIGlrIChjb25qIChnZXQgbSBpayAje30pIHgpKSkpXG4gIHt9XG4gIHhyZWwpKVxuIn0gezpzeW0gc3Vic2V0PywgOm1ldGEgezpkb2MgIklzIHNldDEgYSBzdWJzZXQgb2Ygc2V0Mj8iLCA6YXJnbGlzdHMgKFtzZXQxIHNldDJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3Vic2V0P1xuIFwiSXMgc2V0MSBhIHN1YnNldCBvZiBzZXQyP1wiXG4gW3NldDEgc2V0Ml1cbiAoYW5kXG4gICg8PSAoY291bnQgc2V0MSkgKGNvdW50IHNldDIpKVxuICAoZXZlcnk/IChmbiogW3AxX180NDk3OCNdIChjb250YWlucz8gc2V0MiBwMV9fNDQ5NzgjKSkgc2V0MSkpKVxuIn0gezpzeW0gcmVuYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJlbCBvZiB0aGUgbWFwcyBpbiB4cmVsIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXAiLCA6YXJnbGlzdHMgKFt4cmVsIGttYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVuYW1lXG4gXCJSZXR1cm5zIGEgcmVsIG9mIHRoZSBtYXBzIGluIHhyZWwgd2l0aCB0aGUga2V5cyBpbiBrbWFwIHJlbmFtZWQgdG8gdGhlIHZhbHMgaW4ga21hcFwiXG4gW3hyZWwga21hcF1cbiAoc2V0IChtYXAgKGZuKiBbcDFfXzQ0OTczI10gKHJlbmFtZS1rZXlzIHAxX180NDk3MyMga21hcCkpIHhyZWwpKSlcbiJ9IHs6c3ltIHJlbmFtZS1rZXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFwIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXAiLCA6YXJnbGlzdHMgKFttYXAga21hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW5hbWUta2V5c1xuIFwiUmV0dXJucyB0aGUgbWFwIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXBcIlxuIFttYXAga21hcF1cbiAocmVkdWNlXG4gIChmblxuICAgW20gW29sZCBuZXddXVxuICAgKGlmIChjb250YWlucz8gbWFwIG9sZCkgKGFzc29jIG0gbmV3IChnZXQgbWFwIG9sZCkpIG0pKVxuICAoYXBwbHkgZGlzc29jIG1hcCAoa2V5cyBrbWFwKSlcbiAga21hcCkpXG4ifSB7OnN5bSBwcm9qZWN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJlbCBvZiB0aGUgZWxlbWVudHMgb2YgeHJlbCB3aXRoIG9ubHkgdGhlIGtleXMgaW4ga3MiLCA6YXJnbGlzdHMgKFt4cmVsIGtzXSl9LCA6c291cmNlICIoZGVmblxuIHByb2plY3RcbiBcIlJldHVybnMgYSByZWwgb2YgdGhlIGVsZW1lbnRzIG9mIHhyZWwgd2l0aCBvbmx5IHRoZSBrZXlzIGluIGtzXCJcbiBbeHJlbCBrc11cbiAoc2V0IChtYXAgKGZuKiBbcDFfXzQ0OTcyI10gKHNlbGVjdC1rZXlzIHAxX180NDk3MiMga3MpKSB4cmVsKSkpXG4ifSB7OnN5bSBkaWZmZXJlbmNlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGZpcnN0IHNldCB3aXRob3V0IGVsZW1lbnRzIG9mIHRoZSByZW1haW5pbmcgc2V0cyIsIDphcmdsaXN0cyBbW3MxXSBbczEgczJdIFtzMSBzMiAmIHNldHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlmZmVyZW5jZVxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGZpcnN0IHNldCB3aXRob3V0IGVsZW1lbnRzIG9mIHRoZSByZW1haW5pbmcgc2V0c1wiXG4gKFtzMV0gczEpXG4gKFtzMSBzMl1cbiAgKGlmXG4gICAoPCAoY291bnQgczEpIChjb3VudCBzMikpXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFtyZXN1bHQgaXRlbV1cbiAgICAgKGlmIChjb250YWlucz8gczIgaXRlbSkgKGRpc2ogcmVzdWx0IGl0ZW0pIHJlc3VsdCkpXG4gICAgczFcbiAgICBzMSlcbiAgIChyZWR1Y2UgZGlzaiBzMSBzMikpKVxuIChbczEgczIgJiBzZXRzXSAocmVkdWNlIGRpZmZlcmVuY2UgczEgKGNvbmogc2V0cyBzMikpKSlcbiJ9KSwgb2RveWxlLnJ1bSAoezpzeW0gKm1hdGNoZXMqLCA6bWV0YSB7OmRvYyAiSWYgYm91bmQgdG8gYSB2b2xhdGlsZSBjb250YWluaW5nIGEgaGFzaCBtYXAsXG4gICAgICAgICAgICBtYXRjaGVzIHRyaWdnZXJlZCBieSBgZmlyZS1ydWxlc2Agd2lsbCBiZSBzdG9yZWQgaW4gaXRcbiAgICAgICAgICAgIHJhdGhlciB0aGFuIGluIHRoZSBhdG9tIGNyZWF0ZWQgYnkgYHJ1bGVzZXRgLlxuICAgICAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBtb2RpZnlpbmcgdGhlIHNlc3Npb24gaW4gYSBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgcm91dGUgYmVjYXVzZSBpdCBlbnN1cmVzIHRoZSBtb2RpZmljYXRpb25zIHdpbGwgYmUgbG9jYWxcbiAgICAgICAgICAgIGFuZCB3aWxsIG5vdCBhZmZlY3Qgb3RoZXIgY29ubmVjdGlvbnMgaGFwcGVuaW5nIHNpbXVsdGFuZW91c2x5LlxuICAgICAgICAgICAgRG8gbm90IHVzZSBpdCBmcm9tIGNsb2p1cmVzY3JpcHQuIn0sIDpzb3VyY2UgIihkZWYgKm1hdGNoZXMqIG5pbClcbiJ9IHs6c3ltIGF0b20sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGF0b20gdGhhdCBjYW4gaG9sZCBsb2NhbCBzdGF0ZSBmb3IgYSBjb21wb25lbnQuXG4gIE9ubHkgd29ya3MgaW4gYSA6dGhlbiBibG9jay4iLCA6YXJnbGlzdHMgKFtpbml0aWFsLXZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGF0b21cbiBcIlJldHVybnMgYW4gYXRvbSB0aGF0IGNhbiBob2xkIGxvY2FsIHN0YXRlIGZvciBhIGNvbXBvbmVudC5cXG4gIE9ubHkgd29ya3MgaW4gYSA6dGhlbiBibG9jay5cIlxuIFtpbml0aWFsLXZhbHVlXVxuICh3aGVuLW5vdFxuICAqbG9jYWwtcG9pbnRlcipcbiAgKHRocm93IChleC1pbmZvIFwiWW91IGNhbm5vdCBjYWxsIGBhdG9tYCBoZXJlXCIge30pKSlcbiAod2hlbi1ub3RcbiAgQCpjYW4tcmV0dXJuLWF0b20/KlxuICAodGhyb3dcbiAgIChleC1pbmZvIFwiWW91IGNhbiBvbmx5IGNhbGwgYGF0b21gIG9uY2UgaW4gZWFjaCA6dGhlbiBibG9ja1wiIHt9KSkpXG4gKHZyZXNldCEgKmNhbi1yZXR1cm4tYXRvbT8qIGZhbHNlKVxuIChpZi1sZXRcbiAgWypsb2NhbCBAKmxvY2FsLXBvaW50ZXIqXVxuICAqbG9jYWxcbiAgKGxldFxuICAgWypsb2NhbCAocmVzZXQhICpsb2NhbC1wb2ludGVyKiAoY2xvanVyZS5jb3JlL2F0b20gaW5pdGlhbC12YWx1ZSkpXVxuICAgKHdoZW4tbGV0XG4gICAgW2NtcCAqcmVhY3QtY29tcG9uZW50Kl1cbiAgICAoYWRkLXdhdGNoXG4gICAgICpsb2NhbFxuICAgICA6b2RveWxlLnJ1bS9sb2NhbFxuICAgICAoZm4gW18gXyBwIG5dICh3aGVuIChub3Q9IHAgbikgKC5mb3JjZVVwZGF0ZSBjbXApKSkpKVxuICAgKmxvY2FsKSkpXG4ifSB7OnN5bSBwcm9wLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcHJvcCBzZW50IHRvIHRoZSBjb21wb25lbnQuIE9ubHkgd29ya3MgaW4gYSA6dGhlbiBibG9jay4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvcFxuIFwiUmV0dXJucyB0aGUgcHJvcCBzZW50IHRvIHRoZSBjb21wb25lbnQuIE9ubHkgd29ya3MgaW4gYSA6dGhlbiBibG9jay5cIlxuIFtdXG4gKHdoZW4tbm90XG4gICpsb2NhbC1wb2ludGVyKlxuICAodGhyb3cgKGV4LWluZm8gXCJZb3UgY2Fubm90IGNhbGwgYHByb3BgIGhlcmVcIiB7fSkpKVxuICpwcm9wKilcbiJ9IHs6c3ltIHJlYWN0aXZlLCA6bWV0YSB7OmRvYyAiQSBydW0gbWl4aW4gdGhhdCBtYWtlcyB0aGUgYXNzb2NpYXRlZCBjb21wb25lbnQgcmVhY3QgdG8gY2hhbmdlcyBmcm9tXG4gIHRoZSBzZXNzaW9uIGFuZCB0aGUgbG9jYWwgYXRvbS4iLCA6YXJnbGlzdHMgKFtydWxlLWtleSAqbWF0Y2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhY3RpdmVcbiBcIkEgcnVtIG1peGluIHRoYXQgbWFrZXMgdGhlIGFzc29jaWF0ZWQgY29tcG9uZW50IHJlYWN0IHRvIGNoYW5nZXMgZnJvbVxcbiAgdGhlIHNlc3Npb24gYW5kIHRoZSBsb2NhbCBhdG9tLlwiXG4gW3J1bGUta2V5ICptYXRjaF1cbiB7OmluaXRcbiAgKGZuXG4gICBbc3RhdGUgcHJvcHNdXG4gICAoLT5cbiAgICBzdGF0ZVxuICAgIChhc3NvYyA6b2RveWxlLnJ1bS9sb2NhbC1wb2ludGVyIChjbG9qdXJlLmNvcmUvYXRvbSBuaWwpKVxuICAgICM/KDpjbGpzIChhc3NvYyA6b2RveWxlLnJ1bS9nbG9iYWwta2V5IChsZXQgW2dsb2JhbC1rZXkgKHJhbmRvbS11dWlkKSBjbXAgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKV0gKGFkZC13YXRjaCAqbWF0Y2ggZ2xvYmFsLWtleSAoZm4gW18gXyBwIG5dICh3aGVuIChub3Q9IHAgbikgKC5mb3JjZVVwZGF0ZSBjbXApKSkpIGdsb2JhbC1rZXkpKSkpKSxcbiAgOndyYXAtcmVuZGVyXG4gIChmblxuICAgW3JlbmRlci1mbl1cbiAgIChmblxuICAgIFtzdGF0ZV1cbiAgICAoYmluZGluZ1xuICAgICBbKmxvY2FsLXBvaW50ZXIqXG4gICAgICAoOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlciBzdGF0ZSlcbiAgICAgICpyZWFjdC1jb21wb25lbnQqXG4gICAgICAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpXG4gICAgICAqY2FuLXJldHVybi1hdG9tPypcbiAgICAgICh2b2xhdGlsZSEgdHJ1ZSlcbiAgICAgICpwcm9wKlxuICAgICAgKGZpcnN0ICg6cnVtL2FyZ3Mgc3RhdGUpKVxuICAgICAgby8qbWF0Y2gqXG4gICAgICAjPyg6Y2xqcyAoY2xvanVyZS5jb3JlL2RlcmVmICptYXRjaCkgOmNsaiAob3IgKHNvbWUtPiAqbWF0Y2hlcyogZGVyZWYgcnVsZS1rZXkpIChjbG9qdXJlLmNvcmUvZGVyZWYgKm1hdGNoKSkpXVxuICAgICAocmVuZGVyLWZuIHN0YXRlKSkpKSxcbiAgOndpbGwtdW5tb3VudFxuICAoZm5cbiAgIFtzdGF0ZV1cbiAgICM/KDpjbGpzIChyZW1vdmUtd2F0Y2ggKm1hdGNoICg6b2RveWxlLnJ1bS9nbG9iYWwta2V5IHN0YXRlKSkpXG4gICAod2hlbi1sZXRcbiAgICBbKmxvY2FsIEAoOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlciBzdGF0ZSldXG4gICAgKHJlbW92ZS13YXRjaCAqbG9jYWwgOm9kb3lsZS5ydW0vbG9jYWwpKVxuICAgKGRpc3NvYyBzdGF0ZSA6b2RveWxlLnJ1bS9sb2NhbC1wb2ludGVyKSl9KVxuIn0pLCBwYXJlbi1zb3VwLmluc3RhcmVwbCAoezpzeW0gKndlYi13b3JrZXItcGF0aCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp3ZWItd29ya2VyLXBhdGgqIG5pbClcbiJ9IHs6c3ltIGZvcm0tPnNlcmlhbGl6YWJsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGZvcm0tPnNlcmlhbGl6YWJsZVxuIFtmb3JtXVxuIChpZlxuICAoaW5zdGFuY2U/IGpzL0Vycm9yIGZvcm0pXG4gIChhcnJheVxuICAgKG9yIChzb21lLT4gZm9ybSAuLWNhdXNlIC4tbWVzc2FnZSkgKC4tbWVzc2FnZSBmb3JtKSlcbiAgICguLWZpbGVOYW1lIGZvcm0pXG4gICAoLi1saW5lTnVtYmVyIGZvcm0pKVxuICAocHItc3RyIGZvcm0pKSlcbiJ9IHs6c3ltIHJlc3VsdHMtPmh0bWwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIEhUTUwgZm9yIHRoZSBnaXZlbiBldmFsIHJlc3VsdHMuIiwgOmFyZ2xpc3RzIChbcmVzdWx0cyBsb2NhdGlvbnMgbGltaXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzdWx0cy0+aHRtbFxuIFwiUmV0dXJucyBIVE1MIGZvciB0aGUgZ2l2ZW4gZXZhbCByZXN1bHRzLlwiXG4gW3Jlc3VsdHMgbG9jYXRpb25zIGxpbWl0XVxuIChsb29wXG4gIFtpIDAgZXZhbHMgKHRyYW5zaWVudCBbXSldXG4gIChsZXRcbiAgIFtyZXMgKGdldCByZXN1bHRzIGkpIHs6a2V5cyBbdG9wIGhlaWdodF19IChnZXQgbG9jYXRpb25zIGkpXVxuICAgKGlmXG4gICAgKGFuZCByZXMgdG9wIGhlaWdodClcbiAgICAocmVjdXJcbiAgICAgKGluYyBpKVxuICAgICAoY29uaiFcbiAgICAgIGV2YWxzXG4gICAgICAoZm9ybWF0XG4gICAgICAgXCI8ZGl2IGNsYXNzPSclcycgc3R5bGU9J3RvcDogJXNweDsgaGVpZ2h0OiAlc3B4OyBtaW4taGVpZ2h0OiAlc3B4Jz4lczwvZGl2PlwiXG4gICAgICAgKGlmIChhcnJheT8gcmVzKSBcInJlc3VsdCBlcnJvclwiIFwicmVzdWx0XCIpXG4gICAgICAgdG9wXG4gICAgICAgaGVpZ2h0XG4gICAgICAgaGVpZ2h0XG4gICAgICAgKHNvbWUtPlxuICAgICAgICAoaWYgKGFycmF5PyByZXMpIChmaXJzdCByZXMpIHJlcylcbiAgICAgICAgKHRydW5jYXRlIGxpbWl0KVxuICAgICAgICBocy9lc2NhcGUtaHRtbC1zdHIpKSkpXG4gICAgKGpvaW4gKHBlcnNpc3RlbnQhIGV2YWxzKSkpKSkpXG4ifSB7OnN5bSB1c2Utd2ViLXdvcmtlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHVzZS13ZWItd29ya2VyIVxuIFtdXG4gKHNldCEgKndlYi13b3JrZXItcGF0aCogXCJwYXJlbi1zb3VwLWNvbXBpbGVyLmpzXCIpKVxuIn0gezpzeW0gZWxlbT8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGVsZW0/IChmbiogW3AxX180NTAzMiNdIChpbnN0YW5jZT8ganMvRWxlbWVudCBwMV9fNDUwMzIjKSkpXG4ifSB7OnN5bSBjb2xsZWN0aW9uLT5jb250ZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VsZW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbGVjdGlvbi0+Y29udGVudFxuIFtlbGVtXVxuIChsb29wXG4gIFtlIGVsZW0gY29udGVudCAoLi10ZXh0Q29udGVudCBlbGVtKV1cbiAgKGlmLWxldFxuICAgW3ByZXYgKC4tcHJldmlvdXNTaWJsaW5nIGUpXVxuICAgKGlmXG4gICAgKHRleHQtbm9kZT8gcHJldilcbiAgICAocmVjdXIgcHJldiAoc3RyICguLXRleHRDb250ZW50IHByZXYpIGNvbnRlbnQpKVxuICAgIGNvbnRlbnQpXG4gICBjb250ZW50KSkpXG4ifSB7OnN5bSB0cnVuY2F0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0ZXh0IGxpbWl0XSl9LCA6c291cmNlICIoZGVmblxuIHRydW5jYXRlXG4gW3RleHQgbGltaXRdXG4gKGlmICg+IChjb3VudCB0ZXh0KSBsaW1pdCkgKHN0ciAoc3VicyB0ZXh0IDAgbGltaXQpIFwiLi4uXCIpIHRleHQpKVxuIn0gezpzeW0gY3JlYXRlLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLWNvbXBpbGVyLWZuXG4gW29wdHNdXG4gKGlmLWxldFxuICBbd29ya2VyIChzb21lLT4gKndlYi13b3JrZXItcGF0aCoganMvV29ya2VyLildXG4gIChmblxuICAgW2NvbGwgcmVjZWl2ZS1mbl1cbiAgIChzZXQhXG4gICAgKC4tb25tZXNzYWdlIHdvcmtlcilcbiAgICAoZm4qIFtwMV9fNDUwMzMjXSAocmVjZWl2ZS1mbiAodmVjICguLWRhdGEgcDFfXzQ1MDMzIykpKSkpXG4gICAoLnBvc3RNZXNzYWdlIHdvcmtlciAoaW50by1hcnJheSBjb2xsKSkpXG4gIChmblxuICAgW2NvbGwgcmVjZWl2ZS1mbl1cbiAgIChlcy9jb2RlLT5yZXN1bHRzXG4gICAgY29sbFxuICAgIChmblxuICAgICBbcmVzdWx0c11cbiAgICAgKHJlY2VpdmUtZm4gKGludG8tYXJyYXkgKG1hcHYgZm9ybS0+c2VyaWFsaXphYmxlIHJlc3VsdHMpKSkpXG4gICAgb3B0cykpKSlcbiJ9IHs6c3ltIGdldC1jb2xsZWN0aW9ucywgOm1ldGEgezpkb2MgIlJldHVybnMgY29sbGVjdGlvbnMgZnJvbSB0aGUgZ2l2ZW4gRE9NIG5vZGUuIiwgOmFyZ2xpc3RzIChbZWxlbWVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtY29sbGVjdGlvbnNcbiBcIlJldHVybnMgY29sbGVjdGlvbnMgZnJvbSB0aGUgZ2l2ZW4gRE9NIG5vZGUuXCJcbiBbZWxlbWVudF1cbiAodmVjXG4gIChmb3JcbiAgIFtlbGVtXG4gICAgKC0+IGVsZW1lbnQgLi1jaGlsZHJlbiBhcnJheS1zZXEpXG4gICAgOmxldFxuICAgIFtjbGFzc2VzICguLWNsYXNzTGlzdCBlbGVtKV1cbiAgICA6d2hlblxuICAgIChvciAoLmNvbnRhaW5zIGNsYXNzZXMgXCJjb2xsZWN0aW9uXCIpICguY29udGFpbnMgY2xhc3NlcyBcInN5bWJvbFwiKSldXG4gICBlbGVtKSkpXG4ifSB7OnN5bSBlbGVtcy0+bG9jYXRpb25zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbG9jYXRpb24gb2YgZWFjaCBlbGVtLiIsIDphcmdsaXN0cyAoW2VsZW1zIHRvcC1vZmZzZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZWxlbXMtPmxvY2F0aW9uc1xuIFwiUmV0dXJucyB0aGUgbG9jYXRpb24gb2YgZWFjaCBlbGVtLlwiXG4gW2VsZW1zIHRvcC1vZmZzZXRdXG4gKGxvb3BcbiAgW2kgMCBsb2NhdGlvbnMgKHRyYW5zaWVudCBbXSldXG4gIChpZi1sZXRcbiAgIFtlbGVtIChnZXQgZWxlbXMgaSldXG4gICAobGV0XG4gICAgW3RvcFxuICAgICAoLT4gZWxlbSAuLW9mZnNldFRvcCAoLSB0b3Atb2Zmc2V0KSlcbiAgICAgaGVpZ2h0XG4gICAgICgtPiBlbGVtIC4tb2Zmc2V0SGVpZ2h0KV1cbiAgICAocmVjdXIgKGluYyBpKSAoY29uaiEgbG9jYXRpb25zIHs6dG9wIHRvcCwgOmhlaWdodCBoZWlnaHR9KSkpXG4gICAocGVyc2lzdGVudCEgbG9jYXRpb25zKSkpKVxuIn0pLCBjbGpzLnBwcmludCAoezpzeW0gcHByaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW29iamVjdF0gW29iamVjdCB3cml0ZXJdXX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50XG4gKFtvYmplY3RdXG4gIChsZXRcbiAgIFtzYiAoU3RyaW5nQnVmZmVyLildXG4gICAoYmluZGluZ1xuICAgIFsqb3V0KiAoU3RyaW5nQnVmZmVyV3JpdGVyLiBzYildXG4gICAgKHBwcmludCBvYmplY3QgKm91dCopXG4gICAgKHN0cmluZy1wcmludCAoc3RyIHNiKSkpKSlcbiAoW29iamVjdCB3cml0ZXJdXG4gICh3aXRoLXByZXR0eS13cml0ZXJcbiAgIHdyaXRlclxuICAgKGJpbmRpbmcgWypwcmludC1wcmV0dHkqIHRydWVdICh3cml0ZS1vdXQgb2JqZWN0KSlcbiAgIChpZiAobm90ICg9IDAgKGdldC1jb2x1bW4gKm91dCopKSkgKC13cml0ZSAqb3V0KiBcXG5ld2xpbmUpKSkpKVxuIn0gezpzeW0gZ2V0LXByZXR0eS13cml0ZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBJV3JpdGVyIHBhc3NlZCBpbiB3cmFwcGVkIGluIGEgcHJldHR5IHdyaXRlciBwcm94eSwgdW5sZXNzIGl0J3NcbmFscmVhZHkgYSBwcmV0dHkgd3JpdGVyLiBHZW5lcmFsbHksIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiwgc2luY2UgcHByaW50LFxud3JpdGUsIGFuZCBjbC1mb3JtYXQgYWxsIGNhbGwgaXQgaWYgdGhleSBuZWVkIHRvLiBIb3dldmVyIGlmIHlvdSB3YW50IHRoZSBzdGF0ZSB0byBiZVxucHJlc2VydmVkIGFjcm9zcyBjYWxscywgeW91IHdpbGwgd2FudCB0byB3cmFwIHRoZW0gd2l0aCB0aGlzLlxuXG5Gb3IgZXhhbXBsZSwgd2hlbiB5b3Ugd2FudCB0byBnZW5lcmF0ZSBjb2x1bW4tYXdhcmUgb3V0cHV0IHdpdGggbXVsdGlwbGUgY2FsbHMgdG8gY2wtZm9ybWF0LFxuZG8gaXQgbGlrZSBpbiB0aGlzIGV4YW1wbGU6XG5cbiAgICAoZGVmbiBwcmludC10YWJsZSBbYXNlcSBjb2x1bW4td2lkdGhdXG4gICAgICAoYmluZGluZyBbKm91dCogKGdldC1wcmV0dHktd3JpdGVyICpvdXQqKV1cbiAgICAgICAgKGRvc2VxIFtyb3cgYXNlcV1cbiAgICAgICAgICAoZG9zZXEgW2NvbCByb3ddXG4gICAgICAgICAgICAoY2wtZm9ybWF0IHRydWUgXCJ+NER+Nyx2VFwiIGNvbCBjb2x1bW4td2lkdGgpKVxuICAgICAgICAgIChwcm4pKSkpXG5cbk5vdyB3aGVuIHlvdSBydW46XG5cbiAgICB1c2VyPiAocHJpbnQtdGFibGUgKG1hcCAjKHZlY3RvciAlICgqICUgJSkgKCogJSAlICUpKSAocmFuZ2UgMSAxMSkpIDgpXG5cbkl0IHByaW50cyBhIHRhYmxlIG9mIHNxdWFyZXMgYW5kIGN1YmVzIGZvciB0aGUgbnVtYmVycyBmcm9tIDEgdG8gMTA6XG5cbiAgICAgICAxICAgICAgMSAgICAgICAxXG4gICAgICAgMiAgICAgIDQgICAgICAgOFxuICAgICAgIDMgICAgICA5ICAgICAgMjdcbiAgICAgICA0ICAgICAxNiAgICAgIDY0XG4gICAgICAgNSAgICAgMjUgICAgIDEyNVxuICAgICAgIDYgICAgIDM2ICAgICAyMTZcbiAgICAgICA3ICAgICA0OSAgICAgMzQzXG4gICAgICAgOCAgICAgNjQgICAgIDUxMlxuICAgICAgIDkgICAgIDgxICAgICA3MjlcbiAgICAgIDEwICAgIDEwMCAgICAxMDAwIiwgOmFyZ2xpc3RzIChbd3JpdGVyXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1wcmV0dHktd3JpdGVyXG4gXCJSZXR1cm5zIHRoZSBJV3JpdGVyIHBhc3NlZCBpbiB3cmFwcGVkIGluIGEgcHJldHR5IHdyaXRlciBwcm94eSwgdW5sZXNzIGl0J3NcXG5hbHJlYWR5IGEgcHJldHR5IHdyaXRlci4gR2VuZXJhbGx5LCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjYWxsIHRoaXMgZnVuY3Rpb24sIHNpbmNlIHBwcmludCxcXG53cml0ZSwgYW5kIGNsLWZvcm1hdCBhbGwgY2FsbCBpdCBpZiB0aGV5IG5lZWQgdG8uIEhvd2V2ZXIgaWYgeW91IHdhbnQgdGhlIHN0YXRlIHRvIGJlXFxucHJlc2VydmVkIGFjcm9zcyBjYWxscywgeW91IHdpbGwgd2FudCB0byB3cmFwIHRoZW0gd2l0aCB0aGlzLlxcblxcbkZvciBleGFtcGxlLCB3aGVuIHlvdSB3YW50IHRvIGdlbmVyYXRlIGNvbHVtbi1hd2FyZSBvdXRwdXQgd2l0aCBtdWx0aXBsZSBjYWxscyB0byBjbC1mb3JtYXQsXFxuZG8gaXQgbGlrZSBpbiB0aGlzIGV4YW1wbGU6XFxuXFxuICAgIChkZWZuIHByaW50LXRhYmxlIFthc2VxIGNvbHVtbi13aWR0aF1cXG4gICAgICAoYmluZGluZyBbKm91dCogKGdldC1wcmV0dHktd3JpdGVyICpvdXQqKV1cXG4gICAgICAgIChkb3NlcSBbcm93IGFzZXFdXFxuICAgICAgICAgIChkb3NlcSBbY29sIHJvd11cXG4gICAgICAgICAgICAoY2wtZm9ybWF0IHRydWUgXFxcIn40RH43LHZUXFxcIiBjb2wgY29sdW1uLXdpZHRoKSlcXG4gICAgICAgICAgKHBybikpKSlcXG5cXG5Ob3cgd2hlbiB5b3UgcnVuOlxcblxcbiAgICB1c2VyPiAocHJpbnQtdGFibGUgKG1hcCAjKHZlY3RvciAlICgqICUgJSkgKCogJSAlICUpKSAocmFuZ2UgMSAxMSkpIDgpXFxuXFxuSXQgcHJpbnRzIGEgdGFibGUgb2Ygc3F1YXJlcyBhbmQgY3ViZXMgZm9yIHRoZSBudW1iZXJzIGZyb20gMSB0byAxMDpcXG5cXG4gICAgICAgMSAgICAgIDEgICAgICAgMVxcbiAgICAgICAyICAgICAgNCAgICAgICA4XFxuICAgICAgIDMgICAgICA5ICAgICAgMjdcXG4gICAgICAgNCAgICAgMTYgICAgICA2NFxcbiAgICAgICA1ICAgICAyNSAgICAgMTI1XFxuICAgICAgIDYgICAgIDM2ICAgICAyMTZcXG4gICAgICAgNyAgICAgNDkgICAgIDM0M1xcbiAgICAgICA4ICAgICA2NCAgICAgNTEyXFxuICAgICAgIDkgICAgIDgxICAgICA3MjlcXG4gICAgICAxMCAgICAxMDAgICAgMTAwMFwiXG4gW3dyaXRlcl1cbiAoaWZcbiAgKHByZXR0eS13cml0ZXI/IHdyaXRlcilcbiAgd3JpdGVyXG4gIChwcmV0dHktd3JpdGVyIHdyaXRlciAqcHJpbnQtcmlnaHQtbWFyZ2luKiAqcHJpbnQtbWlzZXItd2lkdGgqKSkpXG4ifSB7OnN5bSAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcyosIDptZXRhIHs6ZG9jICJEb24ndCBwcmludCBuYW1lc3BhY2VzIHdpdGggc3ltYm9scy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW5cbnByZXR0eSBwcmludGluZyB0aGUgcmVzdWx0cyBvZiBtYWNybyBleHBhbnNpb25zIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqIG5pbClcbiJ9IHs6c3ltIGNoYXItY29kZSwgOm1ldGEgezpkb2MgIkNvbnZlcnQgY2hhciB0byBpbnQiLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxuIGNoYXItY29kZVxuIFwiQ29udmVydCBjaGFyIHRvIGludFwiXG4gW2NdXG4gKGNvbmRcbiAgKG51bWJlcj8gYylcbiAgY1xuICAoYW5kIChzdHJpbmc/IGMpICg9PSAoLi1sZW5ndGggYykgMSkpXG4gICguY2hhckNvZGVBdCBjIDApXG4gIDplbHNlXG4gICh0aHJvdyAoanMvRXJyb3IuIFwiQXJndW1lbnQgdG8gY2hhciBtdXN0IGJlIGEgY2hhcmFjdGVyIG9yIG51bWJlclwiKSkpKVxuIn0gezpzeW0gKnByaW50LXByZXR0eSosIDptZXRhIHs6ZG9jICJCaW5kIHRvIHRydWUgaWYgeW91IHdhbnQgd3JpdGUgdG8gdXNlIHByZXR0eSBwcmludGluZyJ9LCA6c291cmNlICIoZGVmICpwcmludC1wcmV0dHkqIHRydWUpXG4ifSB7OnN5bSAqcHJpbnQtcHByaW50LWRpc3BhdGNoKiwgOm1ldGEgezpkb2MgIlRoZSBwcmV0dHkgcHJpbnQgZGlzcGF0Y2ggZnVuY3Rpb24uIFVzZSB3aXRoLXBwcmludC1kaXNwYXRjaCBvclxuc2V0LXBwcmludC1kaXNwYXRjaCB0byBtb2RpZnkuIn0sIDpzb3VyY2UgIihkZWZvbmNlICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqIG5pbClcbiJ9IHs6c3ltIHBwcmludC1uZXdsaW5lLCA6bWV0YSB7OmRvYyAiUHJpbnQgYSBjb25kaXRpb25hbCBuZXdsaW5lIHRvIGEgcHJldHR5IHByaW50aW5nIHN0cmVhbS4ga2luZCBzcGVjaWZpZXMgaWYgdGhlXG4gIG5ld2xpbmUgaXMgOmxpbmVhciwgOm1pc2VyLCA6ZmlsbCwgb3IgOm1hbmRhdG9yeS5cblxuICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXG5cbiAgT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuIiwgOmFyZ2xpc3RzIChba2luZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcHJpbnQtbmV3bGluZVxuIFwiUHJpbnQgYSBjb25kaXRpb25hbCBuZXdsaW5lIHRvIGEgcHJldHR5IHByaW50aW5nIHN0cmVhbS4ga2luZCBzcGVjaWZpZXMgaWYgdGhlXFxuICBuZXdsaW5lIGlzIDpsaW5lYXIsIDptaXNlciwgOmZpbGwsIG9yIDptYW5kYXRvcnkuXFxuXFxuICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXFxuXFxuICBPdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci5cIlxuIFtraW5kXVxuIChjaGVjay1lbnVtZXJhdGVkLWFyZyBraW5kICN7Om1hbmRhdG9yeSA6bWlzZXIgOmZpbGwgOmxpbmVhcn0pXG4gKG5sICpvdXQqIGtpbmQpKVxuIn0gezpzeW0gZmxvYXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG4gaXMgYW4gZmxvYXQuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbG9hdD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGFuIGZsb2F0LlwiXG4gW25dXG4gKGFuZFxuICAobnVtYmVyPyBuKVxuICAobm90IChqcy9pc05hTiBuKSlcbiAgKG5vdCAoaWRlbnRpY2FsPyBuIGpzL0luZmluaXR5KSlcbiAgKG5vdCAoPT0gKGpzL3BhcnNlRmxvYXQgbikgKGpzL3BhcnNlSW50IG4gMTApKSkpKVxuIn0gezpzeW0gcHByaW50LXRhYiwgOm1ldGEgezpkb2MgIlRhYiBhdCB0aGlzIHBvaW50IGluIHRoZSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBraW5kIHNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJcbmlzIDpsaW5lLCA6c2VjdGlvbiwgOmxpbmUtcmVsYXRpdmUsIG9yIDpzZWN0aW9uLXJlbGF0aXZlLlxuXG5Db2xudW0gYW5kIGNvbGluYyBzcGVjaWZ5IHRoZSB0YXJnZXQgY29sdW1uIGFuZCB0aGUgaW5jcmVtZW50IHRvIG1vdmUgdGhlIHRhcmdldFxuZm9yd2FyZCBpZiB0aGUgb3V0cHV0IGlzIGFscmVhZHkgcGFzdCB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxuXG5UaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXG5cbk91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLlxuXG5USElTIEZVTkNUSU9OIElTIE5PVCBZRVQgSU1QTEVNRU5URUQuIiwgOmFyZ2xpc3RzIChba2luZCBjb2xudW0gY29saW5jXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC10YWJcbiBcIlRhYiBhdCB0aGlzIHBvaW50IGluIHRoZSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBraW5kIHNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJcXG5pcyA6bGluZSwgOnNlY3Rpb24sIDpsaW5lLXJlbGF0aXZlLCBvciA6c2VjdGlvbi1yZWxhdGl2ZS5cXG5cXG5Db2xudW0gYW5kIGNvbGluYyBzcGVjaWZ5IHRoZSB0YXJnZXQgY29sdW1uIGFuZCB0aGUgaW5jcmVtZW50IHRvIG1vdmUgdGhlIHRhcmdldFxcbmZvcndhcmQgaWYgdGhlIG91dHB1dCBpcyBhbHJlYWR5IHBhc3QgdGhlIG9yaWdpbmFsIHRhcmdldC5cXG5cXG5UaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXFxuXFxuT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuXFxuXFxuVEhJUyBGVU5DVElPTiBJUyBOT1QgWUVUIElNUExFTUVOVEVELlwiXG4gezphZGRlZCBcIjEuMlwifVxuIFtraW5kIGNvbG51bSBjb2xpbmNdXG4gKGNoZWNrLWVudW1lcmF0ZWQtYXJnXG4gIGtpbmRcbiAgI3s6c2VjdGlvbiA6bGluZSA6bGluZS1yZWxhdGl2ZSA6c2VjdGlvbi1yZWxhdGl2ZX0pXG4gKHRocm93IChqcy9FcnJvci4gXCJwcHJpbnQtdGFiIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWRcIikpKVxuIn0gezpzeW0gcHByaW50LXNldCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgcHByaW50LXNldCAoZm9ybWF0dGVyLW91dCBcIn48I3t+O35Ae353fl4gfjpffn1+O31+Oj5cIikpXG4ifSB7OnN5bSBwcmludC10YWJsZSwgOm1ldGEgezpkb2MgIlByaW50cyBhIGNvbGxlY3Rpb24gb2YgbWFwcyBpbiBhIHRleHR1YWwgdGFibGUuIFByaW50cyB0YWJsZSBoZWFkaW5nc1xuICAga3MsIGFuZCB0aGVuIGEgbGluZSBvZiBvdXRwdXQgZm9yIGVhY2ggcm93LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBrZXlzXG4gICBpbiBrcy4gSWYga3MgYXJlIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUga2V5cyBvZiB0aGUgZmlyc3QgaXRlbSBpbiByb3dzLiIsIDphcmdsaXN0cyBbW2tzIHJvd3NdIFtyb3dzXV19LCA6c291cmNlICIoZGVmblxuIHByaW50LXRhYmxlXG4gXCJQcmludHMgYSBjb2xsZWN0aW9uIG9mIG1hcHMgaW4gYSB0ZXh0dWFsIHRhYmxlLiBQcmludHMgdGFibGUgaGVhZGluZ3NcXG4gICBrcywgYW5kIHRoZW4gYSBsaW5lIG9mIG91dHB1dCBmb3IgZWFjaCByb3csIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGtleXNcXG4gICBpbiBrcy4gSWYga3MgYXJlIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUga2V5cyBvZiB0aGUgZmlyc3QgaXRlbSBpbiByb3dzLlwiXG4gezphZGRlZCBcIjEuM1wifVxuIChba3Mgcm93c11cbiAgKHdoZW5cbiAgIChzZXEgcm93cylcbiAgIChsZXRcbiAgICBbd2lkdGhzXG4gICAgIChtYXBcbiAgICAgIChmblxuICAgICAgIFtrXVxuICAgICAgIChhcHBseVxuICAgICAgICBtYXhcbiAgICAgICAgKGNvdW50IChzdHIgaykpXG4gICAgICAgIChtYXBcbiAgICAgICAgIChmbiogW3AxX180NTM5NSNdIChjb3VudCAoc3RyIChnZXQgcDFfXzQ1Mzk1IyBrKSkpKVxuICAgICAgICAgcm93cykpKVxuICAgICAga3MpXG4gICAgIHNwYWNlcnNcbiAgICAgKG1hcFxuICAgICAgKGZuKiBbcDFfXzQ1Mzk2I10gKGFwcGx5IHN0ciAocmVwZWF0IHAxX180NTM5NiMgXCItXCIpKSlcbiAgICAgIHdpZHRocylcbiAgICAgZm10LXJvd1xuICAgICAoZm5cbiAgICAgIFtsZWFkZXIgZGl2aWRlciB0cmFpbGVyIHJvd11cbiAgICAgIChzdHJcbiAgICAgICBsZWFkZXJcbiAgICAgICAoYXBwbHlcbiAgICAgICAgc3RyXG4gICAgICAgIChpbnRlcnBvc2VcbiAgICAgICAgIGRpdmlkZXJcbiAgICAgICAgIChmb3JcbiAgICAgICAgICBbW2NvbCB3aWR0aF1cbiAgICAgICAgICAgKG1hcFxuICAgICAgICAgICAgdmVjdG9yXG4gICAgICAgICAgICAobWFwIChmbiogW3AxX180NTM5NyNdIChnZXQgcm93IHAxX180NTM5NyMpKSBrcylcbiAgICAgICAgICAgIHdpZHRocyldXG4gICAgICAgICAgKGFkZC1wYWRkaW5nIHdpZHRoIChzdHIgY29sKSkpKSlcbiAgICAgICB0cmFpbGVyKSldXG4gICAgKGNsanMuY29yZS9wcmludGxuKVxuICAgIChjbGpzLmNvcmUvcHJpbnRsbiAoZm10LXJvdyBcInwgXCIgXCIgfCBcIiBcIiB8XCIgKHppcG1hcCBrcyBrcykpKVxuICAgIChjbGpzLmNvcmUvcHJpbnRsbiAoZm10LXJvdyBcInwtXCIgXCItKy1cIiBcIi18XCIgKHppcG1hcCBrcyBzcGFjZXJzKSkpXG4gICAgKGRvc2VxXG4gICAgIFtyb3cgcm93c11cbiAgICAgKGNsanMuY29yZS9wcmludGxuIChmbXQtcm93IFwifCBcIiBcIiB8IFwiIFwiIHxcIiByb3cpKSkpKSlcbiAoW3Jvd3NdIChwcmludC10YWJsZSAoa2V5cyAoZmlyc3Qgcm93cykpIHJvd3MpKSlcbiJ9IHs6c3ltIHNldC1wcHJpbnQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZnVuY3Rpb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LXBwcmludC1kaXNwYXRjaFxuIFtmdW5jdGlvbl1cbiAoc2V0ISAqcHJpbnQtcHByaW50LWRpc3BhdGNoKiBmdW5jdGlvbilcbiBuaWwpXG4ifSB7OnN5bSBmcmVzaC1saW5lLCA6bWV0YSB7OmRvYyAiTWFrZSBhIG5ld2xpbmUgaWYgKm91dCogaXMgbm90IGFscmVhZHkgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gSWYgKm91dCogaXNcbm5vdCBhIHByZXR0eSB3cml0ZXIgKHdoaWNoIGtlZXBzIHRyYWNrIG9mIGNvbHVtbnMpLCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyBvdXRwdXRzIGEgbmV3bGluZS4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZnJlc2gtbGluZVxuIFwiTWFrZSBhIG5ld2xpbmUgaWYgKm91dCogaXMgbm90IGFscmVhZHkgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gSWYgKm91dCogaXNcXG5ub3QgYSBwcmV0dHkgd3JpdGVyICh3aGljaCBrZWVwcyB0cmFjayBvZiBjb2x1bW5zKSwgdGhpcyBmdW5jdGlvbiBhbHdheXMgb3V0cHV0cyBhIG5ld2xpbmUuXCJcbiBbXVxuIChpZlxuICAoc2F0aXNmaWVzPyBJRGVyZWYgKm91dCopXG4gIChpZiAobm90ICg9IDAgKGdldC1jb2x1bW4gKDpiYXNlIEBAKm91dCopKSkpIChwcm4pKVxuICAocHJuKSkpXG4ifSB7OnN5bSBwcHJpbnQtaW5kZW50LCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGFuIGluZGVudCBhdCB0aGlzIHBvaW50IGluIHRoZSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBUaGlzIGRlZmluZXMgaG93XG5mb2xsb3dpbmcgbGluZXMgYXJlIGluZGVudGVkLiByZWxhdGl2ZS10byBjYW4gYmUgZWl0aGVyIDpibG9jayBvciA6Y3VycmVudCBkZXBlbmRpbmdcbndoZXRoZXIgdGhlIGluZGVudCBzaG91bGQgYmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsb2dpY2FsIGJsb2NrIG9yXG50aGUgY3VycmVudCBjb2x1bW4gcG9zaXRpb24uIG4gaXMgYW4gb2Zmc2V0LlxuXG5UaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXG5cbk91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLiIsIDphcmdsaXN0cyAoW3JlbGF0aXZlLXRvIG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50LWluZGVudFxuIFwiQ3JlYXRlIGFuIGluZGVudCBhdCB0aGlzIHBvaW50IGluIHRoZSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBUaGlzIGRlZmluZXMgaG93XFxuZm9sbG93aW5nIGxpbmVzIGFyZSBpbmRlbnRlZC4gcmVsYXRpdmUtdG8gY2FuIGJlIGVpdGhlciA6YmxvY2sgb3IgOmN1cnJlbnQgZGVwZW5kaW5nXFxud2hldGhlciB0aGUgaW5kZW50IHNob3VsZCBiZSBjb21wdXRlZCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGxvZ2ljYWwgYmxvY2sgb3JcXG50aGUgY3VycmVudCBjb2x1bW4gcG9zaXRpb24uIG4gaXMgYW4gb2Zmc2V0LlxcblxcblRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cXG5cXG5PdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci5cIlxuIFtyZWxhdGl2ZS10byBuXVxuIChjaGVjay1lbnVtZXJhdGVkLWFyZyByZWxhdGl2ZS10byAjezpibG9jayA6Y3VycmVudH0pXG4gKGluZGVudCAqb3V0KiByZWxhdGl2ZS10byBuKSlcbiJ9IHs6c3ltICpwcmludC1yYWRpeCosIDptZXRhIHs6ZG9jICJQcmludCBhIHJhZGl4IHNwZWNpZmllciBpbiBmcm9udCBvZiBpbnRlZ2VycyBhbmQgcmF0aW9uYWxzLiBJZiAqcHJpbnQtYmFzZSogaXMgMiwgOCxcbm9yIDE2LCB0aGVuIHRoZSByYWRpeCBzcGVjaWZpZXIgdXNlZCBpcyAjYiwgI28sIG9yICN4LCByZXNwZWN0aXZlbHkuIE90aGVyd2lzZSB0aGVcbnJhZGl4IHNwZWNpZmllciBpcyBpbiB0aGUgZm9ybSAjWFhyIHdoZXJlIFhYIGlzIHRoZSBkZWNpbWFsIHZhbHVlIG9mICpwcmludC1iYXNlKiAifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtcmFkaXgqIG5pbClcbiJ9IHs6c3ltIElQcmV0dHlGbHVzaCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1wcGZsdXNoKX0gezpzeW0gY2wtZm9ybWF0LCA6bWV0YSB7OmRvYyAiQW4gaW1wbGVtZW50YXRpb24gb2YgYSBDb21tb24gTGlzcCBjb21wYXRpYmxlIGZvcm1hdCBmdW5jdGlvbi4gY2wtZm9ybWF0IGZvcm1hdHMgaXRzXG5hcmd1bWVudHMgdG8gYW4gb3V0cHV0IHN0cmVhbSBvciBzdHJpbmcgYmFzZWQgb24gdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBnaXZlbi4gSXRcbnN1cHBvcnRzIHNvcGhpc3RpY2F0ZWQgZm9ybWF0dGluZyBvZiBzdHJ1Y3R1cmVkIGRhdGEuXG5cbldyaXRlciBzYXRpc2ZpZXMgSVdyaXRlciwgdHJ1ZSB0byBvdXRwdXQgdmlhICpwcmludC1mbiogb3IgbmlsIHRvIG91dHB1dFxudG8gYSBzdHJpbmcsIGZvcm1hdC1pbiBpcyB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGFuZCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50c1xuYXJlIHRoZSBkYXRhIHRvIGJlIGZvcm1hdHRlZC5cblxuVGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBpcyBhIHN0cmluZyB0byBiZSBvdXRwdXQgd2l0aCBlbWJlZGRlZCAnZm9ybWF0IGRpcmVjdGl2ZXMnXG5kZXNjcmliaW5nIGhvdyB0byBmb3JtYXQgdGhlIHZhcmlvdXMgYXJndW1lbnRzIHBhc3NlZCBpbi5cblxuSWYgd3JpdGVyIGlzIG5pbCwgY2wtZm9ybWF0IHJldHVybnMgdGhlIGZvcm1hdHRlZCByZXN1bHQgc3RyaW5nLiBPdGhlcndpc2UsIGNsLWZvcm1hdFxucmV0dXJucyBuaWwuXG5cbkZvciBleGFtcGxlOlxuIChsZXQgW3Jlc3VsdHMgWzQ2IDM4IDIyXV1cbiAgICAgICAgKGNsLWZvcm1hdCB0cnVlIFwiVGhlcmUgflthcmV+O2lzfjo7YXJlfl1+OiogfmQgcmVzdWx0fjpwOiB+e35kfl4sIH59fiVcIlxuICAgICAgICAgICAgICAgICAgIChjb3VudCByZXN1bHRzKSByZXN1bHRzKSlcblxuUHJpbnRzIHZpYSAqcHJpbnQtZm4qOlxuIFRoZXJlIGFyZSAzIHJlc3VsdHM6IDQ2LCAzOCwgMjJcblxuRGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvbiBmb3JtYXQgY29udHJvbCBzdHJpbmdzIGlzIGF2YWlsYWJsZSBpbiB0aGUgXCJDb21tb24gTGlzcCB0aGVcbkxhbmd1YWdlLCAybmQgZWRpdGlvblwiLCBDaGFwdGVyIDIyIChhdmFpbGFibGUgb25saW5lIGF0OlxuaHR0cDovL3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy5jbXUuZWR1L3Byb2plY3QvYWktcmVwb3NpdG9yeS9haS9odG1sL2NsdGwvY2xtL25vZGUyMDAuaHRtbCNTRUNUSU9OMDAyNjMzMDAwMDAwMDAwMDAwMDAwKVxuYW5kIGluIHRoZSBDb21tb24gTGlzcCBIeXBlclNwZWMgYXRcbmh0dHA6Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5LzIyX2MuaHRtIiwgOmFyZ2xpc3RzIChbd3JpdGVyIGZvcm1hdC1pbiAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2wtZm9ybWF0XG4gXCJBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIENvbW1vbiBMaXNwIGNvbXBhdGlibGUgZm9ybWF0IGZ1bmN0aW9uLiBjbC1mb3JtYXQgZm9ybWF0cyBpdHNcXG5hcmd1bWVudHMgdG8gYW4gb3V0cHV0IHN0cmVhbSBvciBzdHJpbmcgYmFzZWQgb24gdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBnaXZlbi4gSXRcXG5zdXBwb3J0cyBzb3BoaXN0aWNhdGVkIGZvcm1hdHRpbmcgb2Ygc3RydWN0dXJlZCBkYXRhLlxcblxcbldyaXRlciBzYXRpc2ZpZXMgSVdyaXRlciwgdHJ1ZSB0byBvdXRwdXQgdmlhICpwcmludC1mbiogb3IgbmlsIHRvIG91dHB1dFxcbnRvIGEgc3RyaW5nLCBmb3JtYXQtaW4gaXMgdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBhbmQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHNcXG5hcmUgdGhlIGRhdGEgdG8gYmUgZm9ybWF0dGVkLlxcblxcblRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgaXMgYSBzdHJpbmcgdG8gYmUgb3V0cHV0IHdpdGggZW1iZWRkZWQgJ2Zvcm1hdCBkaXJlY3RpdmVzJ1xcbmRlc2NyaWJpbmcgaG93IHRvIGZvcm1hdCB0aGUgdmFyaW91cyBhcmd1bWVudHMgcGFzc2VkIGluLlxcblxcbklmIHdyaXRlciBpcyBuaWwsIGNsLWZvcm1hdCByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgcmVzdWx0IHN0cmluZy4gT3RoZXJ3aXNlLCBjbC1mb3JtYXRcXG5yZXR1cm5zIG5pbC5cXG5cXG5Gb3IgZXhhbXBsZTpcXG4gKGxldCBbcmVzdWx0cyBbNDYgMzggMjJdXVxcbiAgICAgICAgKGNsLWZvcm1hdCB0cnVlIFxcXCJUaGVyZSB+W2FyZX47aXN+OjthcmV+XX46KiB+ZCByZXN1bHR+OnA6IH57fmR+Xiwgfn1+JVxcXCJcXG4gICAgICAgICAgICAgICAgICAgKGNvdW50IHJlc3VsdHMpIHJlc3VsdHMpKVxcblxcblByaW50cyB2aWEgKnByaW50LWZuKjpcXG4gVGhlcmUgYXJlIDMgcmVzdWx0czogNDYsIDM4LCAyMlxcblxcbkRldGFpbGVkIGRvY3VtZW50YXRpb24gb24gZm9ybWF0IGNvbnRyb2wgc3RyaW5ncyBpcyBhdmFpbGFibGUgaW4gdGhlIFxcXCJDb21tb24gTGlzcCB0aGVcXG5MYW5ndWFnZSwgMm5kIGVkaXRpb25cXFwiLCBDaGFwdGVyIDIyIChhdmFpbGFibGUgb25saW5lIGF0Olxcbmh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3MuY211LmVkdS9wcm9qZWN0L2FpLXJlcG9zaXRvcnkvYWkvaHRtbC9jbHRsL2NsbS9ub2RlMjAwLmh0bWwjU0VDVElPTjAwMjYzMzAwMDAwMDAwMDAwMDAwMClcXG5hbmQgaW4gdGhlIENvbW1vbiBMaXNwIEh5cGVyU3BlYyBhdFxcbmh0dHA6Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5LzIyX2MuaHRtXCJcbiB7OnNlZS1hbHNvXG4gIFtbXCJodHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzLmNtdS5lZHUvcHJvamVjdC9haS1yZXBvc2l0b3J5L2FpL2h0bWwvY2x0bC9jbG0vbm9kZTIwMC5odG1sI1NFQ1RJT04wMDI2MzMwMDAwMDAwMDAwMDAwMDBcIlxuICAgIFwiQ29tbW9uIExpc3AgdGhlIExhbmd1YWdlXCJdXG4gICBbXCJodHRwOi8vd3d3Lmxpc3B3b3Jrcy5jb20vZG9jdW1lbnRhdGlvbi9IeXBlclNwZWMvQm9keS8yMl9jLmh0bVwiXG4gICAgXCJDb21tb24gTGlzcCBIeXBlclNwZWNcIl1dfVxuIFt3cml0ZXIgZm9ybWF0LWluICYgYXJnc11cbiAobGV0XG4gIFtjb21waWxlZC1mb3JtYXRcbiAgIChpZiAoc3RyaW5nPyBmb3JtYXQtaW4pIChjb21waWxlLWZvcm1hdCBmb3JtYXQtaW4pIGZvcm1hdC1pbilcbiAgIG5hdmlnYXRvclxuICAgKGluaXQtbmF2aWdhdG9yIGFyZ3MpXVxuICAoZXhlY3V0ZS1mb3JtYXQgd3JpdGVyIGNvbXBpbGVkLWZvcm1hdCBuYXZpZ2F0b3IpKSlcbiJ9IHs6c3ltICpwcmludC1taXNlci13aWR0aCosIDptZXRhIHs6ZG9jICJUaGUgY29sdW1uIGF0IHdoaWNoIHRvIGVudGVyIG1pc2VyIHN0eWxlLiBEZXBlbmRpbmcgb24gdGhlIGRpc3BhdGNoIHRhYmxlLFxubWlzZXIgc3R5bGUgYWRkIG5ld2xpbmVzIGluIG1vcmUgcGxhY2VzIHRvIHRyeSB0byBrZWVwIGxpbmVzIHNob3J0IGFsbG93aW5nIGZvciBmdXJ0aGVyXG5sZXZlbHMgb2YgbmVzdGluZy4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbWlzZXItd2lkdGgqIDQwKVxuIn0gezpzeW0gd3JpdGUsIDptZXRhIHs6ZG9jICJXcml0ZSBhbiBvYmplY3Qgc3ViamVjdCB0byB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiB0aGUgcHJpbnRlciBjb250cm9sIHZhcmlhYmxlcy5cblVzZSB0aGUga3ctYXJncyBhcmd1bWVudCB0byBvdmVycmlkZSBpbmRpdmlkdWFsIHZhcmlhYmxlcyBmb3IgdGhpcyBjYWxsIChhbmQgYW55XG5yZWN1cnNpdmUgY2FsbHMpLiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVzdWx0IGlmIDpzdHJlYW0gaXMgbmlsIG9yIG5pbCBvdGhlcndpc2UuXG5cblRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgY2FuIGJlIHBhc3NlZCB3aXRoIHZhbHVlczpcbiAgS2V5d29yZCAgICAgICAgICAgICAgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWVcbiAgOnN0cmVhbSAgICAgICAgICAgICAgV3JpdGVyIGZvciBvdXRwdXQgb3IgbmlsICAgICAgICAgICAgIHRydWUgKGluZGljYXRlcyAqb3V0KilcbiAgOmJhc2UgICAgICAgICAgICAgICAgQmFzZSB0byB1c2UgZm9yIHdyaXRpbmcgcmF0aW9uYWxzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWJhc2UqXG4gIDpjaXJjbGUqICAgICAgICAgICAgIElmIHRydWUsIG1hcmsgY2lyY3VsYXIgc3RydWN0dXJlcyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1jaXJjbGUqXG4gIDpsZW5ndGggICAgICAgICAgICAgIE1heGltdW0gZWxlbWVudHMgdG8gc2hvdyBpbiBzdWJsaXN0cyBDdXJyZW50IHZhbHVlIG9mICpwcmludC1sZW5ndGgqXG4gIDpsZXZlbCAgICAgICAgICAgICAgIE1heGltdW0gZGVwdGggICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1sZXZlbCpcbiAgOmxpbmVzKiAgICAgICAgICAgICAgTWF4aW11bSBsaW5lcyBvZiBvdXRwdXQgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxpbmVzKlxuICA6bWlzZXItd2lkdGggICAgICAgICBXaWR0aCB0byBlbnRlciBtaXNlciBtb2RlICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbWlzZXItd2lkdGgqXG4gIDpkaXNwYXRjaCAgICAgICAgICAgIFRoZSBwcmV0dHkgcHJpbnQgZGlzcGF0Y2ggZnVuY3Rpb24gICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqXG4gIDpwcmV0dHkgICAgICAgICAgICAgIElmIHRydWUsIGRvIHByZXR0eSBwcmludGluZyAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1wcmV0dHkqXG4gIDpyYWRpeCAgICAgICAgICAgICAgIElmIHRydWUsIHByZXBlbmQgYSByYWRpeCBzcGVjaWZpZXIgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yYWRpeCpcbiAgOnJlYWRhYmx5KiAgICAgICAgICAgSWYgdHJ1ZSwgcHJpbnQgcmVhZGFibHkgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJlYWRhYmx5KlxuICA6cmlnaHQtbWFyZ2luICAgICAgICBUaGUgY29sdW1uIGZvciB0aGUgcmlnaHQgbWFyZ2luICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmlnaHQtbWFyZ2luKlxuICA6c3VwcHJlc3MtbmFtZXNwYWNlcyBJZiB0cnVlLCBubyBuYW1lc3BhY2VzIGluIHN5bWJvbHMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcypcblxuICAqID0gbm90IHlldCBzdXBwb3J0ZWRcbiIsIDphcmdsaXN0cyAoW29iamVjdCAmIGt3LWFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JpdGVcbiBcIldyaXRlIGFuIG9iamVjdCBzdWJqZWN0IHRvIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIHRoZSBwcmludGVyIGNvbnRyb2wgdmFyaWFibGVzLlxcblVzZSB0aGUga3ctYXJncyBhcmd1bWVudCB0byBvdmVycmlkZSBpbmRpdmlkdWFsIHZhcmlhYmxlcyBmb3IgdGhpcyBjYWxsIChhbmQgYW55XFxucmVjdXJzaXZlIGNhbGxzKS4gUmV0dXJucyB0aGUgc3RyaW5nIHJlc3VsdCBpZiA6c3RyZWFtIGlzIG5pbCBvciBuaWwgb3RoZXJ3aXNlLlxcblxcblRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgY2FuIGJlIHBhc3NlZCB3aXRoIHZhbHVlczpcXG4gIEtleXdvcmQgICAgICAgICAgICAgIE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlXFxuICA6c3RyZWFtICAgICAgICAgICAgICBXcml0ZXIgZm9yIG91dHB1dCBvciBuaWwgICAgICAgICAgICAgdHJ1ZSAoaW5kaWNhdGVzICpvdXQqKVxcbiAgOmJhc2UgICAgICAgICAgICAgICAgQmFzZSB0byB1c2UgZm9yIHdyaXRpbmcgcmF0aW9uYWxzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWJhc2UqXFxuICA6Y2lyY2xlKiAgICAgICAgICAgICBJZiB0cnVlLCBtYXJrIGNpcmN1bGFyIHN0cnVjdHVyZXMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtY2lyY2xlKlxcbiAgOmxlbmd0aCAgICAgICAgICAgICAgTWF4aW11bSBlbGVtZW50cyB0byBzaG93IGluIHN1Ymxpc3RzIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxlbmd0aCpcXG4gIDpsZXZlbCAgICAgICAgICAgICAgIE1heGltdW0gZGVwdGggICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1sZXZlbCpcXG4gIDpsaW5lcyogICAgICAgICAgICAgIE1heGltdW0gbGluZXMgb2Ygb3V0cHV0ICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1saW5lcypcXG4gIDptaXNlci13aWR0aCAgICAgICAgIFdpZHRoIHRvIGVudGVyIG1pc2VyIG1vZGUgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1taXNlci13aWR0aCpcXG4gIDpkaXNwYXRjaCAgICAgICAgICAgIFRoZSBwcmV0dHkgcHJpbnQgZGlzcGF0Y2ggZnVuY3Rpb24gICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqXFxuICA6cHJldHR5ICAgICAgICAgICAgICBJZiB0cnVlLCBkbyBwcmV0dHkgcHJpbnRpbmcgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcHJldHR5KlxcbiAgOnJhZGl4ICAgICAgICAgICAgICAgSWYgdHJ1ZSwgcHJlcGVuZCBhIHJhZGl4IHNwZWNpZmllciAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJhZGl4KlxcbiAgOnJlYWRhYmx5KiAgICAgICAgICAgSWYgdHJ1ZSwgcHJpbnQgcmVhZGFibHkgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJlYWRhYmx5KlxcbiAgOnJpZ2h0LW1hcmdpbiAgICAgICAgVGhlIGNvbHVtbiBmb3IgdGhlIHJpZ2h0IG1hcmdpbiAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJpZ2h0LW1hcmdpbipcXG4gIDpzdXBwcmVzcy1uYW1lc3BhY2VzIElmIHRydWUsIG5vIG5hbWVzcGFjZXMgaW4gc3ltYm9scyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKlxcblxcbiAgKiA9IG5vdCB5ZXQgc3VwcG9ydGVkXFxuXCJcbiBbb2JqZWN0ICYga3ctYXJnc11cbiAobGV0XG4gIFtvcHRpb25zIChtZXJnZSB7OnN0cmVhbSB0cnVlfSAoYXBwbHkgaGFzaC1tYXAga3ctYXJncykpXVxuICAoYmluZGluZ1xuICAgW2NsanMucHByaW50LypwcmludC1iYXNlKlxuICAgICg6YmFzZSBvcHRpb25zIGNsanMucHByaW50LypwcmludC1iYXNlKilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtY2lyY2xlKlxuICAgICg6Y2lyY2xlIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LWNpcmNsZSopXG4gICAgY2xqcy5jb3JlLypwcmludC1sZW5ndGgqXG4gICAgKDpsZW5ndGggb3B0aW9ucyBjbGpzLmNvcmUvKnByaW50LWxlbmd0aCopXG4gICAgY2xqcy5jb3JlLypwcmludC1sZXZlbCpcbiAgICAoOmxldmVsIG9wdGlvbnMgY2xqcy5jb3JlLypwcmludC1sZXZlbCopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LWxpbmVzKlxuICAgICg6bGluZXMgb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtbGluZXMqKVxuICAgIGNsanMucHByaW50LypwcmludC1taXNlci13aWR0aCpcbiAgICAoOm1pc2VyLXdpZHRoIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LW1pc2VyLXdpZHRoKilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcHByaW50LWRpc3BhdGNoKlxuICAgICg6ZGlzcGF0Y2ggb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtcHByaW50LWRpc3BhdGNoKilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcHJldHR5KlxuICAgICg6cHJldHR5IG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LXByZXR0eSopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LXJhZGl4KlxuICAgICg6cmFkaXggb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtcmFkaXgqKVxuICAgIGNsanMuY29yZS8qcHJpbnQtcmVhZGFibHkqXG4gICAgKDpyZWFkYWJseSBvcHRpb25zIGNsanMuY29yZS8qcHJpbnQtcmVhZGFibHkqKVxuICAgIGNsanMucHByaW50LypwcmludC1yaWdodC1tYXJnaW4qXG4gICAgKDpyaWdodC1tYXJnaW4gb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtcmlnaHQtbWFyZ2luKilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcypcbiAgICAoOnN1cHByZXNzLW5hbWVzcGFjZXNcbiAgICAgb3B0aW9uc1xuICAgICBjbGpzLnBwcmludC8qcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcyopXVxuICAgKGJpbmRpbmdcbiAgICBbXVxuICAgIChsZXRcbiAgICAgW3NiXG4gICAgICAoU3RyaW5nQnVmZmVyLilcbiAgICAgIG9wdHZhbFxuICAgICAgKGlmIChjb250YWlucz8gb3B0aW9ucyA6c3RyZWFtKSAoOnN0cmVhbSBvcHRpb25zKSB0cnVlKVxuICAgICAgYmFzZS13cml0ZXJcbiAgICAgIChpZlxuICAgICAgIChvciAodHJ1ZT8gb3B0dmFsKSAobmlsPyBvcHR2YWwpKVxuICAgICAgIChTdHJpbmdCdWZmZXJXcml0ZXIuIHNiKVxuICAgICAgIG9wdHZhbCldXG4gICAgIChpZlxuICAgICAgKnByaW50LXByZXR0eSpcbiAgICAgICh3aXRoLXByZXR0eS13cml0ZXIgYmFzZS13cml0ZXIgKHdyaXRlLW91dCBvYmplY3QpKVxuICAgICAgKGJpbmRpbmcgWypvdXQqIGJhc2Utd3JpdGVyXSAocHIgb2JqZWN0KSkpXG4gICAgIChpZiAodHJ1ZT8gb3B0dmFsKSAoc3RyaW5nLXByaW50IChzdHIgc2IpKSlcbiAgICAgKGlmIChuaWw/IG9wdHZhbCkgKHN0ciBzYikpKSkpKSlcbiJ9IHs6c3ltIC1wcGZsdXNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BwXSl9LCA6cHJvdG9jb2wgSVByZXR0eUZsdXNofSB7OnN5bSAqcHJpbnQtcmlnaHQtbWFyZ2luKiwgOm1ldGEgezpkb2MgIlByZXR0eSBwcmludGluZyB3aWxsIHRyeSB0byBhdm9pZCBhbnl0aGluZyBnb2luZyBiZXlvbmQgdGhpcyBjb2x1bW4uXG5TZXQgaXQgdG8gbmlsIHRvIGhhdmUgcHByaW50IGxldCB0aGUgbGluZSBiZSBhcmJpdHJhcmlseSBsb25nLiBUaGlzIHdpbGwgaWdub3JlIGFsbFxubm9uLW1hbmRhdG9yeSBuZXdsaW5lcy4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtcmlnaHQtbWFyZ2luKiA3MilcbiJ9IHs6c3ltIHdyaXRlLW91dCwgOm1ldGEgezpkb2MgIldyaXRlIGFuIG9iamVjdCB0byAqb3V0KiBzdWJqZWN0IHRvIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIHRoZSBwcmludGVyIGNvbnRyb2xcbnZhcmlhYmxlcy4gVXNlIHRoZSBrdy1hcmdzIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGluZGl2aWR1YWwgdmFyaWFibGVzIGZvciB0aGlzIGNhbGwgKGFuZFxuYW55IHJlY3Vyc2l2ZSBjYWxscykuXG5cbipvdXQqIG11c3QgYmUgYSBQcmV0dHlXcml0ZXIgaWYgcHJldHR5IHByaW50aW5nIGlzIGVuYWJsZWQuIFRoaXMgaXMgdGhlIHJlc3BvbnNpYmlsaXR5XG5vZiB0aGUgY2FsbGVyLlxuXG5UaGlzIG1ldGhvZCBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHVzZSBieSBwcmV0dHkgcHJpbnQgZGlzcGF0Y2ggZnVuY3Rpb25zIHRoYXRcbmFscmVhZHkga25vdyB0aGF0IHRoZSBwcmV0dHkgcHJpbnRlciB3aWxsIGhhdmUgc2V0IHVwIHRoZWlyIGVudmlyb25tZW50IGFwcHJvcHJpYXRlbHkuXG5Ob3JtYWwgbGlicmFyeSBjbGllbnRzIHNob3VsZCB1c2UgdGhlIHN0YW5kYXJkIFwid3JpdGVcIiBpbnRlcmZhY2UuICIsIDphcmdsaXN0cyAoW29iamVjdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3cml0ZS1vdXRcbiBcIldyaXRlIGFuIG9iamVjdCB0byAqb3V0KiBzdWJqZWN0IHRvIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIHRoZSBwcmludGVyIGNvbnRyb2xcXG52YXJpYWJsZXMuIFVzZSB0aGUga3ctYXJncyBhcmd1bWVudCB0byBvdmVycmlkZSBpbmRpdmlkdWFsIHZhcmlhYmxlcyBmb3IgdGhpcyBjYWxsIChhbmRcXG5hbnkgcmVjdXJzaXZlIGNhbGxzKS5cXG5cXG4qb3V0KiBtdXN0IGJlIGEgUHJldHR5V3JpdGVyIGlmIHByZXR0eSBwcmludGluZyBpcyBlbmFibGVkLiBUaGlzIGlzIHRoZSByZXNwb25zaWJpbGl0eVxcbm9mIHRoZSBjYWxsZXIuXFxuXFxuVGhpcyBtZXRob2QgaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciB1c2UgYnkgcHJldHR5IHByaW50IGRpc3BhdGNoIGZ1bmN0aW9ucyB0aGF0XFxuYWxyZWFkeSBrbm93IHRoYXQgdGhlIHByZXR0eSBwcmludGVyIHdpbGwgaGF2ZSBzZXQgdXAgdGhlaXIgZW52aXJvbm1lbnQgYXBwcm9wcmlhdGVseS5cXG5Ob3JtYWwgbGlicmFyeSBjbGllbnRzIHNob3VsZCB1c2UgdGhlIHN0YW5kYXJkIFxcXCJ3cml0ZVxcXCIgaW50ZXJmYWNlLiBcIlxuIFtvYmplY3RdXG4gKGxldFxuICBbbGVuZ3RoLXJlYWNoZWRcbiAgIChhbmRcbiAgICAqY3VycmVudC1sZW5ndGgqXG4gICAgKnByaW50LWxlbmd0aCpcbiAgICAoPj0gKmN1cnJlbnQtbGVuZ3RoKiAqcHJpbnQtbGVuZ3RoKikpXVxuICAoaWYtbm90XG4gICAqcHJpbnQtcHJldHR5KlxuICAgKHByIG9iamVjdClcbiAgIChpZlxuICAgIGxlbmd0aC1yZWFjaGVkXG4gICAgKC13cml0ZSAqb3V0KiBcIi4uLlwiKVxuICAgIChkb1xuICAgICAoaWZcbiAgICAgICpjdXJyZW50LWxlbmd0aCpcbiAgICAgIChzZXQhICpjdXJyZW50LWxlbmd0aCogKGluYyAqY3VycmVudC1sZW5ndGgqKSkpXG4gICAgICgqcHJpbnQtcHByaW50LWRpc3BhdGNoKiBvYmplY3QpKSkpXG4gIGxlbmd0aC1yZWFjaGVkKSlcbiJ9IHs6c3ltICpwcmludC1iYXNlKiwgOm1ldGEgezpkb2MgIlRoZSBiYXNlIHRvIHVzZSBmb3IgcHJpbnRpbmcgaW50ZWdlcnMgYW5kIHJhdGlvbmFscy4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtYmFzZSogMTApXG4ifSksIGlnbHUuY29yZSAoezpzeW0gaWdsdS0+Z2xzbCwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGFuIGlnbHUgbWFwIGludG8gYSBHTFNMIHN0cmluZy4gVGhlIHNlY29uZCBhcml0eSBpcyBvbmx5IGZvciBiYWNrd2FyZHNcbiAgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiIsIDphcmdsaXN0cyBbW3NoYWRlcl0gW3NoYWRlci10eXBlIHNoYWRlcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpZ2x1LT5nbHNsXG4gXCJDb252ZXJ0cyBhbiBpZ2x1IG1hcCBpbnRvIGEgR0xTTCBzdHJpbmcuIFRoZSBzZWNvbmQgYXJpdHkgaXMgb25seSBmb3IgYmFja3dhcmRzXFxuICBjb21wYXRpYmlsaXR5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQuXCJcbiAoW3NoYWRlcl0gKC0+IHNoYWRlciBwYXJzZS9wYXJzZSBnbHNsL2lnbHUtPmdsc2wpKVxuIChbc2hhZGVyLXR5cGUgc2hhZGVyXVxuICAoLT5cbiAgIChyZWR1Y2Uta3ZcbiAgICAoZm5cbiAgICAgW3NoYWRlciBvbGQta2V5IG5ldy1rZXldXG4gICAgIChsZXRcbiAgICAgIFtjb21iaW5lZC12YWxzIChtZXJnZSAobmV3LWtleSBzaGFkZXIpIChvbGQta2V5IHNoYWRlcikpXVxuICAgICAgKGNvbmQtPlxuICAgICAgIChkaXNzb2Mgc2hhZGVyIG9sZC1rZXkpXG4gICAgICAgKHNlcSBjb21iaW5lZC12YWxzKVxuICAgICAgIChhc3NvYyBuZXcta2V5IGNvbWJpbmVkLXZhbHMpKSkpXG4gICAgc2hhZGVyXG4gICAgKGNhc2VcbiAgICAgc2hhZGVyLXR5cGVcbiAgICAgOnZlcnRleFxuICAgICB7OmF0dHJpYnV0ZXMgOmlucHV0cywgOnZhcnlpbmdzIDpvdXRwdXRzfVxuICAgICA6ZnJhZ21lbnRcbiAgICAgezp2YXJ5aW5ncyA6aW5wdXRzfSkpXG4gICBwYXJzZS9wYXJzZVxuICAgZ2xzbC9pZ2x1LT5nbHNsKSkpXG4ifSksIHJ1bS51dGlsICh7OnN5bSBjb2xsZWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleSBtaXhpbnNdKX0sIDpzb3VyY2UgIihkZWZuIGNvbGxlY3QgW2tleSBtaXhpbnNdIChpbnRvIFtdIChrZWVwIChmbiBbbV0gKGdldCBtIGtleSkpKSBtaXhpbnMpKVxuIn0gezpzeW0gY29sbGVjdCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5cyBtaXhpbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbGVjdCpcbiBba2V5cyBtaXhpbnNdXG4gKGludG8gW10gKG1hcGNhdCAoZm4gW21dIChrZWVwIChmbiBba10gKGdldCBtIGspKSBrZXlzKSkpIG1peGlucykpXG4ifSB7OnN5bSBjYWxsLWFsbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBmbnMgJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGNhbGwtYWxsXG4gW3N0YXRlIGZucyAmIGFyZ3NdXG4gKHJlZHVjZSAoZm4gW3N0YXRlIGZuXSAoYXBwbHkgZm4gc3RhdGUgYXJncykpIHN0YXRlIGZucykpXG4ifSksIHBsYXktY2xqYy5nbC5leGFtcGxlLWRhdGEgKHs6c3ltIGFkdmFuY2VkLXZlcnRleC1zaGFkZXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYWR2YW5jZWQtdmVydGV4LXNoYWRlclxuIHs6dW5pZm9ybXNcbiAgJ3t1X3dvcmxkVmlld1Byb2plY3Rpb24gbWF0NCxcbiAgICB1X2xpZ2h0V29ybGRQb3MgdmVjMyxcbiAgICB1X3dvcmxkIG1hdDQsXG4gICAgdV92aWV3SW52ZXJzZSBtYXQ0LFxuICAgIHVfd29ybGRJbnZlcnNlVHJhbnNwb3NlIG1hdDR9LFxuICA6aW5wdXRzICd7YV9wb3NpdGlvbiB2ZWM0LCBhX25vcm1hbCB2ZWMzLCBhX3RleENvb3JkIHZlYzJ9LFxuICA6b3V0cHV0c1xuICAne3ZfcG9zaXRpb24gdmVjNCxcbiAgICB2X3RleENvb3JkIHZlYzIsXG4gICAgdl9ub3JtYWwgdmVjMyxcbiAgICB2X3N1cmZhY2VUb0xpZ2h0IHZlYzMsXG4gICAgdl9zdXJmYWNlVG9WaWV3IHZlYzN9LFxuICA6c2lnbmF0dXJlcyAne21haW4gKFtdIHZvaWQpfSxcbiAgOmZ1bmN0aW9uc1xuICAne21haW5cbiAgICAoW11cbiAgICAgKD0gdl90ZXhDb29yZCBhX3RleENvb3JkKVxuICAgICAoPSB2X3Bvc2l0aW9uICgqIHVfd29ybGRWaWV3UHJvamVjdGlvbiBhX3Bvc2l0aW9uKSlcbiAgICAgKD0gdl9ub3JtYWwgKC54eXogKCogdV93b3JsZEludmVyc2VUcmFuc3Bvc2UgKHZlYzQgYV9ub3JtYWwgMCkpKSlcbiAgICAgKD1cbiAgICAgIHZfc3VyZmFjZVRvTGlnaHRcbiAgICAgICgtIHVfbGlnaHRXb3JsZFBvcyAoLnh5eiAoKiB1X3dvcmxkIGFfcG9zaXRpb24pKSkpXG4gICAgICg9XG4gICAgICB2X3N1cmZhY2VUb1ZpZXdcbiAgICAgICgueHl6ICgtIFt1X3ZpZXdJbnZlcnNlIDNdICgqIHVfd29ybGQgYV9wb3NpdGlvbikpKSlcbiAgICAgKD0gZ2xfUG9zaXRpb24gdl9wb3NpdGlvbikpfX0pXG4ifSB7OnN5bSBmLTNkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGYtM2RcbiBbMFxuICAwXG4gIDBcbiAgMFxuICAxNTBcbiAgMFxuICAzMFxuICAwXG4gIDBcbiAgMFxuICAxNTBcbiAgMFxuICAzMFxuICAxNTBcbiAgMFxuICAzMFxuICAwXG4gIDBcbiAgMzBcbiAgMFxuICAwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMTAwXG4gIDBcbiAgMFxuICAzMFxuICAzMFxuICAwXG4gIDEwMFxuICAzMFxuICAwXG4gIDEwMFxuICAwXG4gIDBcbiAgMzBcbiAgNjBcbiAgMFxuICAzMFxuICA5MFxuICAwXG4gIDY3XG4gIDYwXG4gIDBcbiAgMzBcbiAgOTBcbiAgMFxuICA2N1xuICA5MFxuICAwXG4gIDY3XG4gIDYwXG4gIDBcbiAgMFxuICAwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMzBcbiAgMFxuICAxNTBcbiAgMzBcbiAgMFxuICAxNTBcbiAgMzBcbiAgMzBcbiAgMFxuICAzMFxuICAzMFxuICAxNTBcbiAgMzBcbiAgMzBcbiAgMFxuICAzMFxuICAxMDBcbiAgMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAxMDBcbiAgMFxuICAzMFxuICAxMDBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgNjBcbiAgMzBcbiAgNjdcbiAgNjBcbiAgMzBcbiAgMzBcbiAgOTBcbiAgMzBcbiAgMzBcbiAgOTBcbiAgMzBcbiAgNjdcbiAgNjBcbiAgMzBcbiAgNjdcbiAgOTBcbiAgMzBcbiAgMFxuICAwXG4gIDBcbiAgMTAwXG4gIDBcbiAgMFxuICAxMDBcbiAgMFxuICAzMFxuICAwXG4gIDBcbiAgMFxuICAxMDBcbiAgMFxuICAzMFxuICAwXG4gIDBcbiAgMzBcbiAgMTAwXG4gIDBcbiAgMFxuICAxMDBcbiAgMzBcbiAgMFxuICAxMDBcbiAgMzBcbiAgMzBcbiAgMTAwXG4gIDBcbiAgMFxuICAxMDBcbiAgMzBcbiAgMzBcbiAgMTAwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMFxuICAzMFxuICAzMFxuICAzMFxuICAxMDBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMFxuICAxMDBcbiAgMzBcbiAgMzBcbiAgMTAwXG4gIDMwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMFxuICAzMFxuICA2MFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAwXG4gIDMwXG4gIDYwXG4gIDBcbiAgMzBcbiAgNjBcbiAgMzBcbiAgMzBcbiAgNjBcbiAgMFxuICA2N1xuICA2MFxuICAzMFxuICAzMFxuICA2MFxuICAzMFxuICAzMFxuICA2MFxuICAwXG4gIDY3XG4gIDYwXG4gIDBcbiAgNjdcbiAgNjBcbiAgMzBcbiAgNjdcbiAgNjBcbiAgMFxuICA2N1xuICA5MFxuICAzMFxuICA2N1xuICA2MFxuICAzMFxuICA2N1xuICA2MFxuICAwXG4gIDY3XG4gIDkwXG4gIDBcbiAgNjdcbiAgOTBcbiAgMzBcbiAgMzBcbiAgOTBcbiAgMFxuICAzMFxuICA5MFxuICAzMFxuICA2N1xuICA5MFxuICAzMFxuICAzMFxuICA5MFxuICAwXG4gIDY3XG4gIDkwXG4gIDMwXG4gIDY3XG4gIDkwXG4gIDBcbiAgMzBcbiAgOTBcbiAgMFxuICAzMFxuICAxNTBcbiAgMzBcbiAgMzBcbiAgOTBcbiAgMzBcbiAgMzBcbiAgOTBcbiAgMFxuICAzMFxuICAxNTBcbiAgMFxuICAzMFxuICAxNTBcbiAgMzBcbiAgMFxuICAxNTBcbiAgMFxuICAwXG4gIDE1MFxuICAzMFxuICAzMFxuICAxNTBcbiAgMzBcbiAgMFxuICAxNTBcbiAgMFxuICAzMFxuICAxNTBcbiAgMzBcbiAgMzBcbiAgMTUwXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDMwXG4gIDBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMTUwXG4gIDBdKVxuIn0gezpzeW0gdGV4dHVyZS1mcmFnbWVudC1zaGFkZXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gdGV4dHVyZS1mcmFnbWVudC1zaGFkZXJcbiB7OnByZWNpc2lvbiBcIm1lZGl1bXAgZmxvYXRcIixcbiAgOnVuaWZvcm1zICd7dV90ZXh0dXJlIHNhbXBsZXIyRH0sXG4gIDppbnB1dHMgJ3t2X3RleGNvb3JkIHZlYzJ9LFxuICA6b3V0cHV0cyAne291dENvbG9yIHZlYzR9LFxuICA6c2lnbmF0dXJlcyAne21haW4gKFtdIHZvaWQpfSxcbiAgOmZ1bmN0aW9ucyAne21haW4gKFtdICg9IG91dENvbG9yICh0ZXh0dXJlIHVfdGV4dHVyZSB2X3RleGNvb3JkKSkpfX0pXG4ifSB7OnN5bSBmLTJkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGYtMmRcbiBbMFxuICAwXG4gIDMwXG4gIDBcbiAgMFxuICAxNTBcbiAgMFxuICAxNTBcbiAgMzBcbiAgMFxuICAzMFxuICAxNTBcbiAgMzBcbiAgMFxuICAxMDBcbiAgMFxuICAzMFxuICAzMFxuICAzMFxuICAzMFxuICAxMDBcbiAgMFxuICAxMDBcbiAgMzBcbiAgMzBcbiAgNjBcbiAgNjdcbiAgNjBcbiAgMzBcbiAgOTBcbiAgMzBcbiAgOTBcbiAgNjdcbiAgNjBcbiAgNjdcbiAgOTBdKVxuIn0gezpzeW0gZi10ZXhjb29yZHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZi10ZXhjb29yZHNcbiBbMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBdKVxuIn0gezpzeW0gZi0zZC1jb2xvcnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZi0zZC1jb2xvcnNcbiBbMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgNzBcbiAgMjAwXG4gIDIxMFxuICA3MFxuICAyMDBcbiAgMjEwXG4gIDcwXG4gIDIwMFxuICAyMTBcbiAgNzBcbiAgMjAwXG4gIDIxMFxuICA3MFxuICAyMDBcbiAgMjEwXG4gIDcwXG4gIDIwMFxuICAyMTBcbiAgMjAwXG4gIDIwMFxuICA3MFxuICAyMDBcbiAgMjAwXG4gIDcwXG4gIDIwMFxuICAyMDBcbiAgNzBcbiAgMjAwXG4gIDIwMFxuICA3MFxuICAyMDBcbiAgMjAwXG4gIDcwXG4gIDIwMFxuICAyMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDE2MFxuICA3MFxuICAyMTBcbiAgMTYwXG4gIDcwXG4gIDIxMFxuICAxNjBcbiAgNzBcbiAgMjEwXG4gIDE2MFxuICA3MFxuICAyMTBcbiAgMTYwXG4gIDcwXG4gIDIxMFxuICAxNjBcbiAgNzBcbiAgNzBcbiAgMTgwXG4gIDIxMFxuICA3MFxuICAxODBcbiAgMjEwXG4gIDcwXG4gIDE4MFxuICAyMTBcbiAgNzBcbiAgMTgwXG4gIDIxMFxuICA3MFxuICAxODBcbiAgMjEwXG4gIDcwXG4gIDE4MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgNzZcbiAgMjEwXG4gIDEwMFxuICA3NlxuICAyMTBcbiAgMTAwXG4gIDc2XG4gIDIxMFxuICAxMDBcbiAgNzZcbiAgMjEwXG4gIDEwMFxuICA3NlxuICAyMTBcbiAgMTAwXG4gIDc2XG4gIDIxMFxuICAxMDBcbiAgMTQwXG4gIDIxMFxuICA4MFxuICAxNDBcbiAgMjEwXG4gIDgwXG4gIDE0MFxuICAyMTBcbiAgODBcbiAgMTQwXG4gIDIxMFxuICA4MFxuICAxNDBcbiAgMjEwXG4gIDgwXG4gIDE0MFxuICAyMTBcbiAgODBcbiAgOTBcbiAgMTMwXG4gIDExMFxuICA5MFxuICAxMzBcbiAgMTEwXG4gIDkwXG4gIDEzMFxuICAxMTBcbiAgOTBcbiAgMTMwXG4gIDExMFxuICA5MFxuICAxMzBcbiAgMTEwXG4gIDkwXG4gIDEzMFxuICAxMTBcbiAgMTYwXG4gIDE2MFxuICAyMjBcbiAgMTYwXG4gIDE2MFxuICAyMjBcbiAgMTYwXG4gIDE2MFxuICAyMjBcbiAgMTYwXG4gIDE2MFxuICAyMjBcbiAgMTYwXG4gIDE2MFxuICAyMjBcbiAgMTYwXG4gIDE2MFxuICAyMjBdKVxuIn0gezpzeW0gdGV4dHVyZS12ZXJ0ZXgtc2hhZGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRleHR1cmUtdmVydGV4LXNoYWRlclxuIHs6aW5wdXRzICd7YV9wb3NpdGlvbiB2ZWM0LCBhX3RleGNvb3JkIHZlYzJ9LFxuICA6dW5pZm9ybXMgJ3t1X21hdHJpeCBtYXQ0fSxcbiAgOm91dHB1dHMgJ3t2X3RleGNvb3JkIHZlYzJ9LFxuICA6c2lnbmF0dXJlcyAne21haW4gKFtdIHZvaWQpfSxcbiAgOmZ1bmN0aW9uc1xuICAne21haW5cbiAgICAoW11cbiAgICAgKD0gZ2xfUG9zaXRpb24gKCogdV9tYXRyaXggYV9wb3NpdGlvbikpXG4gICAgICg9IHZfdGV4Y29vcmQgYV90ZXhjb29yZCkpfX0pXG4ifSB7OnN5bSBhZHZhbmNlZC1mcmFnbWVudC1zaGFkZXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYWR2YW5jZWQtZnJhZ21lbnQtc2hhZGVyXG4gezpwcmVjaXNpb24gXCJtZWRpdW1wIGZsb2F0XCIsXG4gIDp1bmlmb3Jtc1xuICAne3VfbGlnaHRDb2xvciB2ZWM0LFxuICAgIHVfY29sb3IgdmVjNCxcbiAgICB1X3NwZWN1bGFyIHZlYzQsXG4gICAgdV9zaGluaW5lc3MgZmxvYXQsXG4gICAgdV9zcGVjdWxhckZhY3RvciBmbG9hdH0sXG4gIDppbnB1dHNcbiAgJ3t2X3Bvc2l0aW9uIHZlYzQsXG4gICAgdl90ZXhDb29yZCB2ZWMyLFxuICAgIHZfbm9ybWFsIHZlYzMsXG4gICAgdl9zdXJmYWNlVG9MaWdodCB2ZWMzLFxuICAgIHZfc3VyZmFjZVRvVmlldyB2ZWMzfSxcbiAgOm91dHB1dHMgJ3tvdXRDb2xvciB2ZWM0fSxcbiAgOnNpZ25hdHVyZXMgJ3tsaXQgKFtmbG9hdCBmbG9hdCBmbG9hdF0gdmVjNCksIG1haW4gKFtdIHZvaWQpfSxcbiAgOmZ1bmN0aW9uc1xuICAne2xpdFxuICAgIChbbCBoIG1dXG4gICAgICh2ZWM0XG4gICAgICBcIjEuMFwiXG4gICAgICAoYWJzIGwpXG4gICAgICAoPyAoPiBsIFwiMC4wXCIpIChwb3cgKG1heCBcIjAuMFwiIGgpIG0pIFwiMC4wXCIpXG4gICAgICBcIjEuMFwiKSksXG4gICAgbWFpblxuICAgIChbXVxuICAgICAoPXZlYzMgYV9ub3JtYWwgKG5vcm1hbGl6ZSB2X25vcm1hbCkpXG4gICAgICg9dmVjMyBzdXJmYWNlVG9MaWdodCAobm9ybWFsaXplIHZfc3VyZmFjZVRvTGlnaHQpKVxuICAgICAoPXZlYzMgc3VyZmFjZVRvVmlldyAobm9ybWFsaXplIHZfc3VyZmFjZVRvVmlldykpXG4gICAgICg9dmVjMyBoYWxmVmVjdG9yIChub3JtYWxpemUgKCsgc3VyZmFjZVRvTGlnaHQgc3VyZmFjZVRvVmlldykpKVxuICAgICAoPXZlYzRcbiAgICAgIGxpdFJcbiAgICAgIChsaXRcbiAgICAgICAoZG90IGFfbm9ybWFsIHN1cmZhY2VUb0xpZ2h0KVxuICAgICAgIChkb3QgYV9ub3JtYWwgaGFsZlZlY3RvcilcbiAgICAgICB1X3NoaW5pbmVzcykpXG4gICAgICg9XG4gICAgICBvdXRDb2xvclxuICAgICAgKHZlYzRcbiAgICAgICAoLnJnYlxuICAgICAgICAoKlxuICAgICAgICAgdV9saWdodENvbG9yXG4gICAgICAgICAoK1xuICAgICAgICAgICgqICgueSBsaXRSKSB1X2NvbG9yKVxuICAgICAgICAgICgqIHVfc3BlY3VsYXIgKC56IGxpdFIpIHVfc3BlY3VsYXJGYWN0b3IpKSkpXG4gICAgICAgMSkpKX19KVxuIn0gezpzeW0gY3ViZS10ZXhjb29yZHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY3ViZS10ZXhjb29yZHNcbiBbMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFdKVxuIn0gezpzeW0gY3ViZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBjdWJlXG4gWy0wLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XSlcbiJ9KSwgb2FrY2xqcy50b29scy5yZWFkZXIuaW1wbC5pbnNwZWN0ICh7OnN5bSBpbnNwZWN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIHRoZSB2YWx1ZSBzdXBwbGllZC5cbiAgIE1heSBiZSB0aGUgYSBzdHJpbmcgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXRzZWxmIChlLmcuIFwidHJ1ZVwiKVxuICAgb3IgaXQgbWF5IGJlIGEgZGVzY3JpcHRpb24gKGUuZy4gXCJhbiBpbnN0YW5jZSBvZiBGb29cIikuXG4gICBJZiB0cnVuY2F0ZSBpcyB0cnVlIHRoZW4gcmV0dXJuIGEgdmVyeSB0ZXJzZSB2ZXJzaW9uIG9mXG4gICB0aGUgaW5zcGVjdGlvbi4iLCA6YXJnbGlzdHMgW1t4XSBbdHJ1bmNhdGUgeF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnNwZWN0XG4gXCJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxcbiAgIE1heSBiZSB0aGUgYSBzdHJpbmcgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXRzZWxmIChlLmcuIFxcXCJ0cnVlXFxcIilcXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcXFwiYW4gaW5zdGFuY2Ugb2YgRm9vXFxcIikuXFxuICAgSWYgdHJ1bmNhdGUgaXMgdHJ1ZSB0aGVuIHJldHVybiBhIHZlcnkgdGVyc2UgdmVyc2lvbiBvZlxcbiAgIHRoZSBpbnNwZWN0aW9uLlwiXG4gKFt4XSAoaW5zcGVjdCogZmFsc2UgeCkpXG4gKFt0cnVuY2F0ZSB4XSAoaW5zcGVjdCogdHJ1bmNhdGUgeCkpKVxuIn0pLCBzYWJsb25vLmludGVycHJldGVyICh7OnN5bSBpbnRlcnByZXQsIDptZXRhIHs6ZG9jICJJbnRlcnByZXQgYSBDbG9qdXJlIGRhdGEgc3RydWN0dXJlIGFzIGEgUmVhY3QgZm4gY2FsbC4iLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgSUludGVycHJldGVyfSB7OnN5bSBJSW50ZXJwcmV0ZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChpbnRlcnByZXQpfSB7OnN5bSBjb250cm9sbGVkLWlucHV0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBgdHlwZWAgYW5kIGBwcm9wc2AgYXJlIHVzZWQgYSBjb250cm9sbGVkIGlucHV0LFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIChbdHlwZSBwcm9wc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb250cm9sbGVkLWlucHV0P1xuIFwiUmV0dXJucyB0cnVlIGlmIGB0eXBlYCBhbmQgYHByb3BzYCBhcmUgdXNlZCBhIGNvbnRyb2xsZWQgaW5wdXQsXFxuICBvdGhlcndpc2UgZmFsc2UuXCJcbiBbdHlwZSBwcm9wc11cbiAjPyg6Y2xqcyAoYW5kIChvYmplY3Q/IHByb3BzKSAoY2FzZSB0eXBlIFwiaW5wdXRcIiAob3IgKGV4aXN0cz8gKC4tY2hlY2tlZCBwcm9wcykpIChleGlzdHM/ICguLXZhbHVlIHByb3BzKSkpIFwic2VsZWN0XCIgKGV4aXN0cz8gKC4tdmFsdWUgcHJvcHMpKSBcInRleHRhcmVhXCIgKGV4aXN0cz8gKC4tdmFsdWUgcHJvcHMpKSBmYWxzZSkpKSlcbiJ9IHs6c3ltIGNyZWF0ZS1lbGVtZW50LCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGEgUmVhY3QgZWxlbWVudC4gUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdoZW4gcnVubmluZ1xuICB1bmRlciBDbG9qdXJlU2NyaXB0LCBhbmQgYSBvbS5kb20uRWxlbWVudCByZWNvcmQgaW4gQ2xvanVyZS4iLCA6YXJnbGlzdHMgKFt0eXBlIHByb3BzICYgY2hpbGRyZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLWVsZW1lbnRcbiBcIkNyZWF0ZSBhIFJlYWN0IGVsZW1lbnQuIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aGVuIHJ1bm5pbmdcXG4gIHVuZGVyIENsb2p1cmVTY3JpcHQsIGFuZCBhIG9tLmRvbS5FbGVtZW50IHJlY29yZCBpbiBDbG9qdXJlLlwiXG4gW3R5cGUgcHJvcHMgJiBjaGlsZHJlbl1cbiAjPyg6Y2xqIChkb20vZWxlbWVudCB7OmF0dHJzIHByb3BzLCA6Y2hpbGRyZW4gY2hpbGRyZW4sIDpyZWFjdC1rZXkgbmlsLCA6dGFnIHR5cGV9KSA6Y2xqcyAoYXBwbHkganMvUmVhY3QuY3JlYXRlRWxlbWVudCAoZWxlbWVudC1jbGFzcyB0eXBlIHByb3BzKSBwcm9wcyBjaGlsZHJlbikpKVxuIn0gezpzeW0gYXR0cmlidXRlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthdHRyc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhdHRyaWJ1dGVzXG4gW2F0dHJzXVxuICM/KDpjbGogKC0+ICh1dGlsL2h0bWwtdG8tZG9tLWF0dHJzIGF0dHJzKSAodXBkYXRlIDpjbGFzc05hbWUgKGZuKiBbcDFfXzQ1MDUwI10gKHNvbWUtPj4gcDFfXzQ1MDUwIyAoc3RyL2pvaW4gXCIgXCIpKSkpKSA6Y2xqcyAod2hlbi1sZXQgW2pzLWF0dHJzIChjbGotPmpzICh1dGlsL2h0bWwtdG8tZG9tLWF0dHJzIGF0dHJzKSldIChsZXQgW2NsYXNzICguLWNsYXNzTmFtZSBqcy1hdHRycykgY2xhc3MgKGlmIChhcnJheT8gY2xhc3MpIChqb2luIFwiIFwiIGNsYXNzKSBjbGFzcyldIChpZiAoYmxhbms/IGNsYXNzKSAoanMtZGVsZXRlIGpzLWF0dHJzIFwiY2xhc3NOYW1lXCIpIChzZXQhICguLWNsYXNzTmFtZSBqcy1hdHRycykgY2xhc3MpKSBqcy1hdHRycykpKSlcbiJ9IHs6c3ltIGVsZW1lbnQsIDptZXRhIHs6ZG9jICJSZW5kZXIgYW4gZWxlbWVudCB2ZWN0b3IgYXMgYSBIVE1MIGVsZW1lbnQuIiwgOmFyZ2xpc3RzIChbZWxlbWVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGVtZW50XG4gXCJSZW5kZXIgYW4gZWxlbWVudCB2ZWN0b3IgYXMgYSBIVE1MIGVsZW1lbnQuXCJcbiBbZWxlbWVudF1cbiAobGV0XG4gIFtbdHlwZSBhdHRycyBjb250ZW50XSAobm9ybWFsaXplL2VsZW1lbnQgZWxlbWVudCldXG4gIChhcHBseVxuICAgY3JlYXRlLWVsZW1lbnRcbiAgIHR5cGVcbiAgIChhdHRyaWJ1dGVzIGF0dHJzKVxuICAgKGludGVycHJldC1zZXEgY29udGVudCkpKSlcbiJ9KSwgY2xqcy50b29scy5yZWFkZXIuaW1wbC51dGlscyAoezpzeW0gcmVhZGVyLWNvbmRpdGlvbmFsLCA6bWV0YSB7OmRvYyAiQ29uc3RydWN0IGEgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbC5cbiAgSWYgdHJ1ZSwgc3BsaWNpbmc/IGluZGljYXRlcyByZWFkLWNvbmQtc3BsaWNpbmcuIiwgOmFyZ2xpc3RzIChbZm9ybSBzcGxpY2luZz9dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZGVyLWNvbmRpdGlvbmFsXG4gXCJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxcbiAgSWYgdHJ1ZSwgc3BsaWNpbmc/IGluZGljYXRlcyByZWFkLWNvbmQtc3BsaWNpbmcuXCJcbiBbZm9ybSBzcGxpY2luZz9dXG4gKFJlYWRlckNvbmRpdGlvbmFsLiBzcGxpY2luZz8gZm9ybSkpXG4ifSB7OnN5bSB3aGl0ZXNwYWNlPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2UiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3aGl0ZXNwYWNlP1xuIFwiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgd2hpdGVzcGFjZVwiXG4gW2NoXVxuICh3aGVuLW5vdCAobmlsPyBjaCkgKGlmIChpZGVudGljYWw/IGNoIFxcLCkgdHJ1ZSAoLnRlc3Qgd3MtcnggY2gpKSkpXG4ifSB7OnN5bSBjaGFyLWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2ggYmFzZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGFyLWNvZGVcbiBbY2ggYmFzZV1cbiAobGV0IFtjb2RlIChqcy9wYXJzZUludCBjaCBiYXNlKV0gKGlmIChqcy9pc05hTiBjb2RlKSAtMSBjb2RlKSkpXG4ifSB7OnN5bSBsYXN0LWlkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBsYXN0LWlkIChhdG9tIDApKVxuIn0gezpzeW0gY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBjaGFyIFt4XSAod2hlbi1ub3QgKG5pbD8geCkgKGNsanMuY29yZS9jaGFyIHgpKSlcbiJ9IHs6c3ltIG51bWVyaWM/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgbnVtZXJpYyIsIDphcmdsaXN0cyAoW2NoXSl9LCA6c291cmNlICIoZGVmblxuIG51bWVyaWM/XG4gXCJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyBudW1lcmljXCJcbiBbY2hdXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoZ3N0cmluZy9pc051bWVyaWMgY2gpKSlcbiJ9IHs6c3ltIHNlY29uZCcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW2EgYl1dKX0sIDpzb3VyY2UgIihkZWZuIHNlY29uZCcgW1thIGJdXSAod2hlbi1ub3QgYSBiKSlcbiJ9IHs6c3ltIGRlc3VnYXItbWV0YSwgOm1ldGEgezpkb2MgIlJlc29sdmVzIHN5bnRhY3RpY2FsIHN1Z2FyIGluIG1ldGFkYXRhIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXN1Z2FyLW1ldGFcbiBcIlJlc29sdmVzIHN5bnRhY3RpY2FsIHN1Z2FyIGluIG1ldGFkYXRhXCJcbiBbZl1cbiAoY29uZFxuICAoa2V5d29yZD8gZilcbiAge2YgdHJ1ZX1cbiAgKHN5bWJvbD8gZilcbiAgezp0YWcgZn1cbiAgKHN0cmluZz8gZilcbiAgezp0YWcgZn1cbiAgOmVsc2VcbiAgZikpXG4ifSB7OnN5bSBuZXh0LWlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gbmV4dC1pZCBbXSAoc3dhcCEgbGFzdC1pZCBpbmMpKVxuIn0gezpzeW0gZXgtaW5mbz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuIGV4LWluZm8/IFtleF0gKGluc3RhbmNlPyBjbGpzLmNvcmUuRXhjZXB0aW9uSW5mbyBleCkpXG4ifSB7OnN5bSByZWFkZXItY29uZGl0aW9uYWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsIiwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZGVyLWNvbmRpdGlvbmFsP1xuIFwiUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsXCJcbiBbdmFsdWVdXG4gKGluc3RhbmNlPyBSZWFkZXJDb25kaXRpb25hbCB2YWx1ZSkpXG4ifSB7OnN5bSBuZXdsaW5lPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lIiwgOmFyZ2xpc3RzIChbY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBuZXdsaW5lP1xuIFwiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcIlxuIFtjXVxuIChvciAoaWRlbnRpY2FsPyBcXG5ld2xpbmUgYykgKGlkZW50aWNhbD8gXCJcXG5cIiBjKSAobmlsPyBjKSkpXG4ifSB7OnN5bSBuYW1lc3BhY2Uta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBrZXlzXSl9LCA6c291cmNlICIoZGVmblxuIG5hbWVzcGFjZS1rZXlzXG4gW25zIGtleXNdXG4gKGZvclxuICBba2V5IGtleXNdXG4gIChpZlxuICAgKG9yIChzeW1ib2w/IGtleSkgKGtleXdvcmQ/IGtleSkpXG4gICAobGV0XG4gICAgW1trZXktbnMga2V5LW5hbWVdXG4gICAgICgoanV4dCBuYW1lc3BhY2UgbmFtZSkga2V5KVxuICAgICAtPmtleVxuICAgICAoaWYgKHN5bWJvbD8ga2V5KSBzeW1ib2wga2V5d29yZCldXG4gICAgKGNvbmRcbiAgICAgKG5pbD8ga2V5LW5zKVxuICAgICAoLT5rZXkgbnMga2V5LW5hbWUpXG4gICAgICg9IFwiX1wiIGtleS1ucylcbiAgICAgKC0+a2V5IGtleS1uYW1lKVxuICAgICA6ZWxzZVxuICAgICBrZXkpKVxuICAga2V5KSkpXG4ifSB7OnN5bSB3cy1yeCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgd3MtcnggI1wiW1xcc11cIilcbiJ9KSwgY2xqcy50YWdnZWQtbGl0ZXJhbHMgKHs6c3ltIHJlYWQtcXVldWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXF1ZXVlXG4gW2Zvcm1dXG4gKHdoZW4tbm90XG4gICh2ZWN0b3I/IGZvcm0pXG4gICh0aHJvd1xuICAgIz8oOmNsaiAoUnVudGltZUV4Y2VwdGlvbi4gXCJRdWV1ZSBsaXRlcmFsIGV4cGVjdHMgYSB2ZWN0b3IgZm9yIGl0cyBlbGVtZW50cy5cIikgOmNsanMgKGpzL0Vycm9yLiBcIlF1ZXVlIGxpdGVyYWwgZXhwZWN0cyBhIHZlY3RvciBmb3IgaXRzIGVsZW1lbnRzLlwiKSkpKVxuIChsaXN0ICdjbGpzLmNvcmUvaW50byAnY2xqcy5jb3JlLlBlcnNpc3RlbnRRdWV1ZS5FTVBUWSBmb3JtKSlcbiJ9IHs6c3ltIHZhbGlkLWpzLWxpdGVyYWwta2V5PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIHZhbGlkLWpzLWxpdGVyYWwta2V5P1xuIFtrXVxuIChvciAoc3RyaW5nPyBrKSAoYW5kIChrZXl3b3JkPyBrKSAobmlsPyAobmFtZXNwYWNlIGspKSkpKVxuIn0gezpzeW0gcmVhZC1qcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtanNcbiBbZm9ybV1cbiAod2hlbi1ub3RcbiAgKG9yICh2ZWN0b3I/IGZvcm0pIChtYXA/IGZvcm0pKVxuICAodGhyb3dcbiAgICM/KDpjbGogKFJ1bnRpbWVFeGNlcHRpb24uIFwiSmF2YVNjcmlwdCBsaXRlcmFsIG11c3QgdXNlIG1hcCBvciB2ZWN0b3Igbm90YXRpb25cIikgOmNsanMgKGpzL0Vycm9yLiBcIkphdmFTY3JpcHQgbGl0ZXJhbCBtdXN0IHVzZSBtYXAgb3IgdmVjdG9yIG5vdGF0aW9uXCIpKSkpXG4gKHdoZW4tbm90XG4gIChvciAobm90IChtYXA/IGZvcm0pKSAoZXZlcnk/IHZhbGlkLWpzLWxpdGVyYWwta2V5PyAoa2V5cyBmb3JtKSkpXG4gICh0aHJvd1xuICAgIz8oOmNsaiAoUnVudGltZUV4Y2VwdGlvbi4gXCJKYXZhU2NyaXB0IGxpdGVyYWwga2V5cyBtdXN0IGJlIHN0cmluZ3Mgb3IgdW5xdWFsaWZpZWQga2V5d29yZHNcIikgOmNsanMgKGpzL0Vycm9yLiBcIkphdmFTY3JpcHQgbGl0ZXJhbCBrZXlzIG11c3QgYmUgc3RyaW5ncyBvciB1bnF1YWxpZmllZCBrZXl3b3Jkc1wiKSkpKVxuIChKU1ZhbHVlLiBmb3JtKSlcbiJ9IHs6c3ltICpjbGpzLWRhdGEtcmVhZGVycyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmNsanMtZGF0YS1yZWFkZXJzKlxuIChtZXJnZVxuICAjPyg6Y2xqICpkYXRhLXJlYWRlcnMqKVxuICB7J3F1ZXVlIHJlYWQtcXVldWUsICd1dWlkIHJlYWQtdXVpZCwgJ2luc3QgcmVhZC1pbnN0LCAnanMgcmVhZC1qc30pKVxuIn0pLCBpZ2x1Lmdsc2wgKHs6c3ltIHNvcnQtZm5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Z1bmN0aW9ucyBmbi1kZXBzXSl9LCA6c291cmNlICIoZGVmblxuIHNvcnQtZm5zXG4gW2Z1bmN0aW9ucyBmbi1kZXBzXVxuICgtPj5cbiAgZnVuY3Rpb25zXG4gIHNlcVxuICAoc29ydC1ieVxuICAgZmlyc3RcbiAgIChmblxuICAgIFthIGJdXG4gICAgKGNvbmRcbiAgICAgKGNvbnRhaW5zPyAoZm4tZGVwcyBhKSBiKVxuICAgICAxXG4gICAgIChjb250YWlucz8gKGZuLWRlcHMgYikgYSlcbiAgICAgLTFcbiAgICAgOmVsc2VcbiAgICAgMCkpKSkpXG4ifSB7OnN5bSAtPmluLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1tuYW1lIHR5cGVdXSl9LCA6c291cmNlICIoZGVmbiAtPmluIFtbbmFtZSB0eXBlXV0gKHN0ciBcImluIFwiIChwYXJzZS10eXBlIHR5cGUpIFwiIFwiIG5hbWUpKVxuIn0gezpzeW0gaWdsdS0+Z2xzbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3ZlcnNpb24gcHJlY2lzaW9uIHVuaWZvcm1zIGF0dHJpYnV0ZXMgdmFyeWluZ3MgaW5wdXRzIG91dHB1dHMgc2lnbmF0dXJlcyBmdW5jdGlvbnMgZm4tZGVwc10sIDphcyBzaGFkZXJ9XSl9LCA6c291cmNlICIoZGVmblxuIGlnbHUtPmdsc2xcbiBbezprZXlzXG4gICBbdmVyc2lvblxuICAgIHByZWNpc2lvblxuICAgIHVuaWZvcm1zXG4gICAgYXR0cmlidXRlc1xuICAgIHZhcnlpbmdzXG4gICAgaW5wdXRzXG4gICAgb3V0cHV0c1xuICAgIHNpZ25hdHVyZXNcbiAgICBmdW5jdGlvbnNcbiAgICBmbi1kZXBzXSxcbiAgIDphcyBzaGFkZXJ9XVxuIChsZXRcbiAgW1tmbi1raW5kIGZuLXZhbF0gZnVuY3Rpb25zXVxuICAoLT4+XG4gICAoY29uZC0+XG4gICAgW11cbiAgICB2ZXJzaW9uXG4gICAgKGNvbmogKHN0ciBcIiN2ZXJzaW9uIFwiIHZlcnNpb24pKVxuICAgIHByZWNpc2lvblxuICAgIChjb25qIChzdHIgXCJwcmVjaXNpb24gXCIgcHJlY2lzaW9uKSlcbiAgICB1bmlmb3Jtc1xuICAgIChpbnRvIChtYXB2IC0+dW5pZm9ybSB1bmlmb3JtcykpXG4gICAgYXR0cmlidXRlc1xuICAgIChpbnRvIChtYXB2IC0+YXR0cmlidXRlIGF0dHJpYnV0ZXMpKVxuICAgIHZhcnlpbmdzXG4gICAgKGludG8gKG1hcHYgLT52YXJ5aW5nIHZhcnlpbmdzKSlcbiAgICBpbnB1dHNcbiAgICAoaW50byAobWFwdiAtPmluIGlucHV0cykpXG4gICAgb3V0cHV0c1xuICAgIChpbnRvIChtYXB2IC0+b3V0IG91dHB1dHMpKVxuICAgICg9IGZuLWtpbmQgOmlnbHUpXG4gICAgKGludG9cbiAgICAgKG1hcHYgKHBhcnRpYWwgLT5mdW5jdGlvbiBzaWduYXR1cmVzKSAoc29ydC1mbnMgZm4tdmFsIGZuLWRlcHMpKSkpXG4gICAocmVkdWNlIChwYXJ0aWFsIHN0cmluZ2lmeSAwKSBbXSlcbiAgIChzdHIvam9pbiBcXG5ld2xpbmUpXG4gICAoKGZuXG4gICAgIFtvdXRwdXRdXG4gICAgIChpZiAoPSBmbi1raW5kIDpnbHNsKSAoc3RyIG91dHB1dCBcXG5ld2xpbmUgZm4tdmFsKSBvdXRwdXQpKSkpKSlcbiJ9IHs6c3ltIGluZGVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsZXZlbCBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIGluZGVudFxuIFtsZXZlbCBsaW5lXVxuIChzdHIgKHN0ci9qb2luIChyZXBlYXQgKCogbGV2ZWwgMikgXCIgXCIpKSBsaW5lKSlcbiJ9IHs6c3ltIC0+ZnVuY3Rpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2lnbmF0dXJlcyBbbmFtZSB7OmtleXMgW2FyZ3MgYm9keV19XV0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmZ1bmN0aW9uXG4gW3NpZ25hdHVyZXMgW25hbWUgezprZXlzIFthcmdzIGJvZHldfV1dXG4gKGlmLWxldFxuICBbezprZXlzIFtpbiBvdXRdfSAoZ2V0IHNpZ25hdHVyZXMgbmFtZSldXG4gIChsZXRcbiAgIFtfXG4gICAgKHdoZW5cbiAgICAgKG5vdD0gKGNvdW50IGluKSAoY291bnQgYXJncykpXG4gICAgICh0aHJvd1xuICAgICAgKGV4LWluZm9cbiAgICAgICBcIkZ1bmN0aW9uIGhhcyBhcmdzIHNpZ25hdHVyZSBvZiBhIGRpZmZlcmVudCBsZW5ndGggdGhhbiBpdHMgYXJncyBkZWZpbml0aW9uXCJcbiAgICAgICB7OmZuIG5hbWUsIDpzaWduYXR1cmUgaW4sIDpkZWZpbml0aW9uIGFyZ3N9KSkpXG4gICAgYXJncy1saXN0XG4gICAgKHN0ci9qb2luIFwiLCBcIiAobWFwdiAoZm4gW3R5cGUgbmFtZV0gKHN0ciB0eXBlIFwiIFwiIG5hbWUpKSBpbiBhcmdzKSlcbiAgICBzaWduYXR1cmVcbiAgICAoc3RyIG91dCBcIiBcIiBuYW1lIFwiKFwiIGFyZ3MtbGlzdCBcIilcIildXG4gICAoaW50b1xuICAgIFtzaWduYXR1cmVdXG4gICAgKGxldFxuICAgICBbYm9keS1saW5lcyAobWFwdiAtPnN0YXRlbWVudCBib2R5KV1cbiAgICAgKGlmXG4gICAgICAoPSAndm9pZCBvdXQpXG4gICAgICBib2R5LWxpbmVzXG4gICAgICAoY29ualxuICAgICAgICh2ZWMgKGJ1dGxhc3QgYm9keS1saW5lcykpXG4gICAgICAgKHN0ciBcInJldHVybiBcIiAobGFzdCBib2R5LWxpbmVzKSkpKSkpKVxuICAodGhyb3dcbiAgIChleC1pbmZvIFwiTm90aGluZyBmb3VuZCBpbiA6c2lnbmF0dXJlcyBmb3IgZnVuY3Rpb25cIiB7OmZuIG5hbWV9KSkpKVxuIn0gezpzeW0gLT51bmlmb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1tuYW1lIHR5cGVdXSl9LCA6c291cmNlICIoZGVmblxuIC0+dW5pZm9ybVxuIFtbbmFtZSB0eXBlXV1cbiAoc3RyIFwidW5pZm9ybSBcIiAocGFyc2UtdHlwZSB0eXBlKSBcIiBcIiBuYW1lKSlcbiJ9IHs6c3ltIHN0cmluZ2lmeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsZXZlbCBsaW5lcyBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIHN0cmluZ2lmeVxuIFtsZXZlbCBsaW5lcyBsaW5lXVxuIChjb25kXG4gIChzdHJpbmc/IGxpbmUpXG4gIChjb25qXG4gICBsaW5lc1xuICAgKGlmXG4gICAgKG9yIChzdHIvc3RhcnRzLXdpdGg/IGxpbmUgXCIjXCIpIChzdHIvZW5kcy13aXRoPyBsaW5lIFwiO1wiKSlcbiAgICBsaW5lXG4gICAgKHN0ciAoaW5kZW50IGxldmVsIGxpbmUpIFwiO1wiKSkpXG4gIChzdHJpbmc/IChmaXJzdCBsaW5lKSlcbiAgKC0+XG4gICBsaW5lc1xuICAgKGNvbmogKGluZGVudCBsZXZlbCAoZmlyc3QgbGluZSkpKVxuICAgKGNvbmogKGluZGVudCBsZXZlbCBcIntcIikpXG4gICAoaW50byAocmVkdWNlIChwYXJ0aWFsIHN0cmluZ2lmeSAoaW5jIGxldmVsKSkgW10gKHJlc3QgbGluZSkpKVxuICAgKGNvbmogKGluZGVudCBsZXZlbCBcIn1cIikpKVxuICA6ZWxzZVxuICAoaW50byBsaW5lcyAocmVkdWNlIChwYXJ0aWFsIHN0cmluZ2lmeSBsZXZlbCkgW10gbGluZSkpKSlcbiJ9IHs6c3ltIC0+dmFyeWluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbbmFtZSB0eXBlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnZhcnlpbmdcbiBbW25hbWUgdHlwZV1dXG4gKHN0ciBcInZhcnlpbmcgXCIgKHBhcnNlLXR5cGUgdHlwZSkgXCIgXCIgbmFtZSkpXG4ifSB7OnN5bSAtPm91dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbbmFtZSB0eXBlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPm91dFxuIFtbbmFtZSB0eXBlXV1cbiAod2hlbiB0eXBlIChzdHIgXCJvdXQgXCIgKHBhcnNlLXR5cGUgdHlwZSkgXCIgXCIgbmFtZSkpKVxuIn0gezpzeW0gLT5hdHRyaWJ1dGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW25hbWUgdHlwZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5hdHRyaWJ1dGVcbiBbW25hbWUgdHlwZV1dXG4gKHN0ciBcImF0dHJpYnV0ZSBcIiAocGFyc2UtdHlwZSB0eXBlKSBcIiBcIiBuYW1lKSlcbiJ9KSwgcGxheS1jbGpjLmdsLmVudGl0aWVzLTNkICh7OnN5bSAtPmNhbWVyYSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSAzRCBjYW1lcmEiLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5jYW1lcmFcbiBcIlJldHVybnMgYSAzRCBjYW1lcmFcIlxuIFtdXG4gKC0+Q2FtZXJhIChtL2lkZW50aXR5LW1hdHJpeCA0KSkpXG4ifSB7OnN5bSAtPmVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSAzRCBlbnRpdHkgd2l0aCBhIHZlY3RvciBvZiBhdHRyaWJ1dGUgYGRhdGFgIGFuZCBvcHRpb25hbGx5IGEgdmVjdG9yIG9mIGBjb2xvci1kYXRhYC4iLCA6YXJnbGlzdHMgW1tnYW1lIGRhdGFdIFtnYW1lIGRhdGEgY29sb3ItZGF0YV1dfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmVudGl0eVxuIFwiUmV0dXJucyBhIDNEIGVudGl0eSB3aXRoIGEgdmVjdG9yIG9mIGF0dHJpYnV0ZSBgZGF0YWAgYW5kIG9wdGlvbmFsbHkgYSB2ZWN0b3Igb2YgYGNvbG9yLWRhdGFgLlwiXG4gKFtnYW1lIGRhdGFdXG4gICgtPj5cbiAgIHs6dmVydGV4IHRocmVlLWQtdW5pZm9ybS1jb2xvcnMtdmVydGV4LXNoYWRlcixcbiAgICA6ZnJhZ21lbnQgdGhyZWUtZC11bmlmb3JtLWNvbG9ycy1mcmFnbWVudC1zaGFkZXIsXG4gICAgOmF0dHJpYnV0ZXNcbiAgICB7J2FfcG9zaXRpb24gezpkYXRhIGRhdGEsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgM319fVxuICAgbWFwLT5UaHJlZURFbnRpdHkpKVxuIChbZ2FtZSBkYXRhIGNvbG9yLWRhdGFdXG4gICgtPj5cbiAgIHs6dmVydGV4IHRocmVlLWQtYXR0cmlidXRlLWNvbG9ycy12ZXJ0ZXgtc2hhZGVyLFxuICAgIDpmcmFnbWVudCB0aHJlZS1kLWF0dHJpYnV0ZS1jb2xvcnMtZnJhZ21lbnQtc2hhZGVyLFxuICAgIDphdHRyaWJ1dGVzXG4gICAgeydhX3Bvc2l0aW9uIHs6ZGF0YSBkYXRhLCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDN9LFxuICAgICAnYV9jb2xvciB7OmRhdGEgY29sb3ItZGF0YSwgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAzfX19XG4gICBtYXAtPlRocmVlREVudGl0eSkpKVxuIn0pLCBjbGpzLmFuYWx5emVyLnBhc3NlcyAoezpzeW0gYXBwbHktcGFzc2VzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2FzdCBwYXNzZXNdIFthc3QgcGFzc2VzIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYXBwbHktcGFzc2VzXG4gKFthc3QgcGFzc2VzXSAoYXBwbHktcGFzc2VzIGFzdCBwYXNzZXMgbmlsKSlcbiAoW2FzdCBwYXNzZXMgb3B0c11cbiAgKHJlZHVjZSAoZm4gW2FzdCBwYXNzXSAocGFzcyAoOmVudiBhc3QpIGFzdCBvcHRzKSkgYXN0IHBhc3NlcykpKVxuIn0gezpzeW0gd2FsaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1thc3QgcGFzc2VzXSBbYXN0IHBhc3NlcyBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIHdhbGtcbiAoW2FzdCBwYXNzZXNdICh3YWxrIGFzdCBwYXNzZXMgbmlsKSlcbiAoW2FzdCBwYXNzZXMgb3B0c11cbiAgKHJlZHVjZVxuICAgKGZuXG4gICAgW2FzdCBjaGlsZC1rXVxuICAgIChhc3NvY1xuICAgICBhc3RcbiAgICAgY2hpbGQta1xuICAgICAobGV0XG4gICAgICBbY2hpbGQgKGdldCBhc3QgY2hpbGQtayldXG4gICAgICAoaWZcbiAgICAgICAodmVjdG9yPyBjaGlsZClcbiAgICAgICAoaW50b1xuICAgICAgICBbXVxuICAgICAgICAobWFwIChmbiogW3AxX180NTQ0OSNdICh3YWxrIHAxX180NTQ0OSMgcGFzc2VzIG9wdHMpKSlcbiAgICAgICAgY2hpbGQpXG4gICAgICAgKHdhbGsgY2hpbGQgcGFzc2VzIG9wdHMpKSkpKVxuICAgKHNvbWUtPiBhc3QgKGFwcGx5LXBhc3NlcyBwYXNzZXMgb3B0cykpXG4gICAoOmNoaWxkcmVuIGFzdCkpKSlcbiJ9KSwgcGxheS1jbGpjLmdsLmVudGl0aWVzLTJkICh7OnN5bSAtPmNhbWVyYSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSAyRCBjYW1lcmEuIFRoZSAxLWFyZyBhcml0eSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQhIiwgOmFyZ2xpc3RzIFtbXSBbeS1kb3duP11dfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmNhbWVyYVxuIFwiUmV0dXJucyBhIDJEIGNhbWVyYS4gVGhlIDEtYXJnIGFyaXR5IGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCFcIlxuIChbXSAoLT5DYW1lcmEgKG0vaWRlbnRpdHktbWF0cml4IDMpKSlcbiAoW3ktZG93bj9dXG4gICgtPkNhbWVyYVxuICAgKGlmXG4gICAgeS1kb3duP1xuICAgIChtL2xvb2stYXQtbWF0cml4IFswIDAgMV0gWzAgLTEgMF0pXG4gICAgKG0vbG9vay1hdC1tYXRyaXggWzAgMCAtMV0gWzAgMSAwXSkpKSkpXG4ifSB7OnN5bSAtPmVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSAyRCBlbnRpdHkgd2l0aCBhIHZlY3RvciBvZiBhdHRyaWJ1dGUgYGRhdGFgLiIsIDphcmdsaXN0cyAoW2dhbWUgZGF0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmVudGl0eVxuIFwiUmV0dXJucyBhIDJEIGVudGl0eSB3aXRoIGEgdmVjdG9yIG9mIGF0dHJpYnV0ZSBgZGF0YWAuXCJcbiBbZ2FtZSBkYXRhXVxuICgtPj5cbiAgezp2ZXJ0ZXggdHdvLWQtdmVydGV4LXNoYWRlcixcbiAgIDpmcmFnbWVudCB0d28tZC1mcmFnbWVudC1zaGFkZXIsXG4gICA6YXR0cmlidXRlc1xuICAgeydhX3Bvc2l0aW9uIHs6ZGF0YSBkYXRhLCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDJ9fSxcbiAgIDp1bmlmb3JtcyB7J3VfbWF0cml4IChtL2lkZW50aXR5LW1hdHJpeCAzKSwgJ3VfY29sb3IgWzAgMCAwIDFdfX1cbiAgbWFwLT5Ud29ERW50aXR5KSlcbiJ9IHs6c3ltIC0+aW1hZ2UtZW50aXR5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBpbWFnZSBlbnRpdHkgd2l0aCBhIHZlY3RvciBvZiBpbWFnZSBgZGF0YWAsXG4gIGFsb25nIHdpdGggYSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBpbiBwaXhlbHMuIiwgOmFyZ2xpc3RzIChbZ2FtZSBkYXRhIHdpZHRoIGhlaWdodF0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmltYWdlLWVudGl0eVxuIFwiUmV0dXJucyBhbiBpbWFnZSBlbnRpdHkgd2l0aCBhIHZlY3RvciBvZiBpbWFnZSBgZGF0YWAsXFxuICBhbG9uZyB3aXRoIGEgYHdpZHRoYCBhbmQgYGhlaWdodGAgaW4gcGl4ZWxzLlwiXG4gW2dhbWUgZGF0YSB3aWR0aCBoZWlnaHRdXG4gKC0+PlxuICB7OnZlcnRleCBpbWFnZS12ZXJ0ZXgtc2hhZGVyLFxuICAgOmZyYWdtZW50IGltYWdlLWZyYWdtZW50LXNoYWRlcixcbiAgIDphdHRyaWJ1dGVzXG4gICB7J2FfcG9zaXRpb25cbiAgICB7OmRhdGEgcHJpbWl0aXZlcy9yZWN0LCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDJ9fSxcbiAgIDp1bmlmb3Jtc1xuICAgeyd1X2ltYWdlXG4gICAgezpkYXRhIGRhdGEsXG4gICAgIDpvcHRzXG4gICAgIHs6bWlwLWxldmVsIDAsXG4gICAgICA6aW50ZXJuYWwtZm10IChnbCBnYW1lIFJHQkEpLFxuICAgICAgOndpZHRoIHdpZHRoLFxuICAgICAgOmhlaWdodCBoZWlnaHQsXG4gICAgICA6Ym9yZGVyIDAsXG4gICAgICA6c3JjLWZtdCAoZ2wgZ2FtZSBSR0JBKSxcbiAgICAgIDpzcmMtdHlwZSAoZ2wgZ2FtZSBVTlNJR05FRF9CWVRFKX0sXG4gICAgIDpwYXJhbXNcbiAgICAgeyhnbCBnYW1lIFRFWFRVUkVfV1JBUF9TKSAoZ2wgZ2FtZSBDTEFNUF9UT19FREdFKSxcbiAgICAgIChnbCBnYW1lIFRFWFRVUkVfV1JBUF9UKSAoZ2wgZ2FtZSBDTEFNUF9UT19FREdFKSxcbiAgICAgIChnbCBnYW1lIFRFWFRVUkVfTUlOX0ZJTFRFUikgKGdsIGdhbWUgTkVBUkVTVCksXG4gICAgICAoZ2wgZ2FtZSBURVhUVVJFX01BR19GSUxURVIpIChnbCBnYW1lIE5FQVJFU1QpfX0sXG4gICAgJ3VfdGV4dHVyZV9tYXRyaXggKG0vaWRlbnRpdHktbWF0cml4IDMpfSxcbiAgIDp3aWR0aCB3aWR0aCxcbiAgIDpoZWlnaHQgaGVpZ2h0fVxuICBtYXAtPkltYWdlRW50aXR5KSlcbiJ9KSwgY2xqcy5hbmFseXplciAoezpzeW0gdHlwZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHlwZT9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbZW52IHRdXG4gKHdoZW5cbiAgKGFuZCAoc29tZT8gdCkgKHN5bWJvbD8gdCkpXG4gIChsZXRcbiAgIFt2YXJcbiAgICAoYmluZGluZyBbKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIHRydWVdIChyZXNvbHZlLXZhciBlbnYgdCkpXVxuICAgKGlmLXNvbWVcbiAgICBbdHlwZSAoOnR5cGUgdmFyKV1cbiAgICB0eXBlXG4gICAgKGlmLXNvbWVcbiAgICAgW3R5cGUgKC0+IHZhciA6aW5mbyA6dHlwZSldXG4gICAgIHR5cGVcbiAgICAgKGlmLXNvbWVcbiAgICAgIFtwcm90byAoOnByb3RvY29sLXN5bWJvbCB2YXIpXVxuICAgICAgcHJvdG9cbiAgICAgIChnZXQgJyN7Y2xqcy5jb3JlL1BlcnNpc3RlbnRIYXNoTWFwIGNsanMuY29yZS9MaXN0fSB0KSkpKSkpKVxuIn0gezpzeW0gZ2V0LW5hbWVzcGFjZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1trZXldIFtjZW52IGtleV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbmFtZXNwYWNlXG4gKFtrZXldIChnZXQtbmFtZXNwYWNlIGVudi8qY29tcGlsZXIqIGtleSkpXG4gKFtjZW52IGtleV1cbiAgKGlmLXNvbWVcbiAgIFtucyAoZ2V0LWluIEBjZW52IFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGtleV0pXVxuICAgbnNcbiAgICh3aGVuICg9ICdjbGpzLnVzZXIga2V5KSB7Om5hbWUgJ2NsanMudXNlcn0pKSkpXG4ifSB7OnN5bSBlbGlkZS1yZWFkZXItbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGVsaWRlLXJlYWRlci1tZXRhXG4gW21dXG4gKGRpc3NvYyBtIDpmaWxlIDpsaW5lIDpjb2x1bW4gOmVuZC1jb2x1bW4gOmVuZC1saW5lIDpzb3VyY2UpKVxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bSBjZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctcmVuYW1lP1xuIFtzeW0gY2Vudl1cbiAobGV0XG4gIFtsaWIgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpIHN5bSAoc3ltYm9sIChuYW1lIHN5bSkpXVxuICAobWlzc2luZy11c2U/IGxpYiBzeW0gY2VudikpKVxuIn0gezpzeW0gcmVzb2x2ZS1pbnZva2VhYmxlLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zIGN1cnJlbnQtbnMgZW52XSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtaW52b2tlYWJsZS1uc1xuIFtucyBjdXJyZW50LW5zIGVudl1cbiAobGV0XG4gIFtucyAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpIG1vZHVsZS10eXBlIChucy0+bW9kdWxlLXR5cGUgbnMpXVxuICAoY2FzZVxuICAgbW9kdWxlLXR5cGVcbiAgIDpqc1xuICAgezpuYW1lXG4gICAgKHN5bWJvbFxuICAgICAob3JcbiAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IG5zIDpuYW1lKVxuICAgICAgKHJlc29sdmUtbnMtYWxpYXMgZW52IG5zKSkpLFxuICAgIDpvcCA6anMtdmFyLFxuICAgIDpucyAnanN9XG4gICA6bm9kZVxuICAgezpuYW1lXG4gICAgKHN5bWJvbFxuICAgICAoc3RyIGN1cnJlbnQtbnMpXG4gICAgIChtdW5nZS1ub2RlLWxpYiAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpKSksXG4gICAgOm9wIDpqcy12YXIsXG4gICAgOm5zIGN1cnJlbnQtbnN9XG4gICA6Z2xvYmFsXG4gICB7Om5hbWVcbiAgICAoc3ltYm9sXG4gICAgIChzdHIgY3VycmVudC1ucylcbiAgICAgKG11bmdlLWdsb2JhbC1leHBvcnQgKHJlc29sdmUtbnMtYWxpYXMgZW52IG5zKSkpLFxuICAgIDpvcCA6anMtdmFyLFxuICAgIDpucyBjdXJyZW50LW5zfSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1sZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW5jbC1lbnYgW18gYmluZGluZ3MgJiBleHBycyA6YXMgZm9ybV0gaXMtbG9vcCB3aWRlbmVkLXRhZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXRcbiBbZW5jbC1lbnYgW18gYmluZGluZ3MgJiBleHBycyA6YXMgZm9ybV0gaXMtbG9vcCB3aWRlbmVkLXRhZ3NdXG4gKHdoZW4tbm90XG4gIChhbmQgKHZlY3Rvcj8gYmluZGluZ3MpIChldmVuPyAoY291bnQgYmluZGluZ3MpKSlcbiAgKHRocm93XG4gICAoZXJyb3JcbiAgICBlbmNsLWVudlxuICAgIFwiYmluZGluZ3MgbXVzdCBiZSB2ZWN0b3Igb2YgZXZlbiBudW1iZXIgb2YgZWxlbWVudHNcIikpKVxuIChsZXRcbiAgW2NvbnRleHRcbiAgICg6Y29udGV4dCBlbmNsLWVudilcbiAgIG9wXG4gICAoaWYgKHRydWU/IGlzLWxvb3ApIDpsb29wIDpsZXQpXG4gICBiaW5kaW5nc1xuICAgKGlmXG4gICAgd2lkZW5lZC10YWdzXG4gICAgKHZlY1xuICAgICAobWFwY2F0XG4gICAgICAoZm5cbiAgICAgICBbW25hbWUgaW5pdF0gd2lkZW5lZC10YWddXG4gICAgICAgWyh2YXJ5LW1ldGEgbmFtZSBhc3NvYyA6dGFnIHdpZGVuZWQtdGFnKSBpbml0XSlcbiAgICAgIChwYXJ0aXRpb24gMiBiaW5kaW5ncylcbiAgICAgIHdpZGVuZWQtdGFncykpXG4gICAgYmluZGluZ3MpXG4gICBbYmVzIGVudl1cbiAgICgtPlxuICAgIGVuY2wtZW52XG4gICAgKGNvbmQtPiAodHJ1ZT8gaXMtbG9vcCkgKGFzc29jIDppbi1sb29wIHRydWUpKVxuICAgIChhbmFseXplLWxldC1iaW5kaW5ncyBiaW5kaW5ncyBvcCkpXG4gICByZWN1ci1mcmFtZVxuICAgKHdoZW5cbiAgICAodHJ1ZT8gaXMtbG9vcClcbiAgICB7OnBhcmFtcyBiZXMsIDpmbGFnIChhdG9tIG5pbCksIDp0YWdzIChhdG9tIChtYXB2IDp0YWcgYmVzKSl9KVxuICAgcmVjdXItZnJhbWVzXG4gICAoaWYgcmVjdXItZnJhbWUgKGNvbnMgcmVjdXItZnJhbWUgKnJlY3VyLWZyYW1lcyopICpyZWN1ci1mcmFtZXMqKVxuICAgbG9vcC1sZXRzXG4gICAoY29uZFxuICAgICh0cnVlPyBpcy1sb29wKVxuICAgICpsb29wLWxldHMqXG4gICAgKHNvbWU/ICpsb29wLWxldHMqKVxuICAgIChjb25zIHs6cGFyYW1zIGJlc30gKmxvb3AtbGV0cyopKVxuICAgd2Fybi1hY2NcbiAgICh3aGVuIChhbmQgaXMtbG9vcCAobm90IHdpZGVuZWQtdGFncykpIChhdG9tIFtdKSlcbiAgIGV4cHJcbiAgIChpZlxuICAgIHdhcm4tYWNjXG4gICAgKHdpdGgtd2FybmluZy1oYW5kbGVyc1xuICAgICBbKGFjY3VtdWxhdGluZy13YXJuaW5nLWhhbmRsZXIgd2Fybi1hY2MpXVxuICAgICAoYW5hbHl6ZS1sZXQtYm9keSBlbnYgY29udGV4dCBleHBycyByZWN1ci1mcmFtZXMgbG9vcC1sZXRzKSlcbiAgICAoYW5hbHl6ZS1sZXQtYm9keSBlbnYgY29udGV4dCBleHBycyByZWN1ci1mcmFtZXMgbG9vcC1sZXRzKSlcbiAgIGNoaWxkcmVuXG4gICBbOmJpbmRpbmdzIDpib2R5XVxuICAgbmlsLT5hbnlcbiAgIChmbmlsIGlkZW50aXR5ICdhbnkpXVxuICAoaWZcbiAgIChhbmRcbiAgICBpcy1sb29wXG4gICAgKG5vdCB3aWRlbmVkLXRhZ3MpXG4gICAgKG5vdD1cbiAgICAgKG1hcHYgbmlsLT5hbnkgQCg6dGFncyByZWN1ci1mcmFtZSkpXG4gICAgIChtYXB2IChjb21wIG5pbC0+YW55IDp0YWcpIGJlcykpKVxuICAgKHJlY3VyIGVuY2wtZW52IGZvcm0gaXMtbG9vcCBAKDp0YWdzIHJlY3VyLWZyYW1lKSlcbiAgIChkb1xuICAgICh3aGVuIHdhcm4tYWNjIChyZXBsYXktYWNjdW11bGF0ZWQtd2FybmluZ3Mgd2Fybi1hY2MpKVxuICAgIHs6b3Agb3AsXG4gICAgIDplbnYgZW5jbC1lbnYsXG4gICAgIDpiaW5kaW5ncyBiZXMsXG4gICAgIDpib2R5IChhc3NvYyBleHByIDpib2R5PyB0cnVlKSxcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOmNoaWxkcmVuIGNoaWxkcmVufSkpKSlcbiJ9IHs6c3ltIHZhci1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3Zhcl0gW3ZhciBleHByLWVudl1dfSwgOnNvdXJjZSAiKGRlZm5cbiB2YXItbWV0YVxuIChbdmFyXSAodmFyLW1ldGEgdmFyIG5pbCkpXG4gKFt2YXIgZXhwci1lbnZdXG4gIChsZXRcbiAgIFtzeW1cbiAgICAoOm5hbWUgdmFyKVxuICAgIGtzXG4gICAgWzpucyA6ZG9jIDpmaWxlIDpsaW5lIDpjb2x1bW5dXG4gICAgbVxuICAgIChtZXJnZVxuICAgICAobGV0XG4gICAgICBbdXNlci1tZXRhICg6bWV0YSB2YXIpIHVrcyAoa2V5cyB1c2VyLW1ldGEpXVxuICAgICAgKHppcG1hcFxuICAgICAgIHVrc1xuICAgICAgIChtYXBcbiAgICAgICAgKGZuKiBbcDFfXzQ1MDc0I10gKGxpc3QgJ3F1b3RlIChnZXQgdXNlci1tZXRhIHAxX180NTA3NCMpKSlcbiAgICAgICAgdWtzKSkpXG4gICAgIChhc3NvY1xuICAgICAgKHppcG1hcFxuICAgICAgIGtzXG4gICAgICAgKG1hcCAoZm4qIFtwMV9fNDUwNzUjXSAobGlzdCAncXVvdGUgKGdldCB2YXIgcDFfXzQ1MDc1IykpKSBrcykpXG4gICAgICA6bmFtZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ3F1b3RlKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChzeW1ib2wgKG5hbWUgKDpuYW1lIHZhcikpKSkpKSlcbiAgICAgIDp0ZXN0XG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL3doZW4pXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3Qgc3ltKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJy4tY2xqcyRsYW5nJHRlc3QpXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHN5bSkpKSkpKSkpXG4gICAgICA6YXJnbGlzdHNcbiAgICAgIChsZXRcbiAgICAgICBbYXJnbGlzdHNcbiAgICAgICAgKDphcmdsaXN0cyB2YXIpXG4gICAgICAgIGFyZ2xpc3RzJ1xuICAgICAgICAoaWYgKD0gJ3F1b3RlIChmaXJzdCBhcmdsaXN0cykpIChzZWNvbmQgYXJnbGlzdHMpIGFyZ2xpc3RzKV1cbiAgICAgICAobGlzdFxuICAgICAgICAncXVvdGVcbiAgICAgICAgKGRvYWxsIChtYXAgd2l0aC1tZXRhIGFyZ2xpc3RzJyAoOmFyZ2xpc3RzLW1ldGEgdmFyKSkpKSkpKV1cbiAgIChpZiBleHByLWVudiAoYW5hbHl6ZSBleHByLWVudiBtKSBtKSkpKVxuIn0gezpzeW0gZGVzdWdhci1ucy1zcGVjcywgOm1ldGEgezpkb2MgIkdpdmVuIGFuIG9yaWdpbmFsIHNldCBvZiBucyBzcGVjcyBkZXN1Z2FyIDppbmNsdWRlLW1hY3JvcyBhbmQgOnJlZmVyLW1hY3Jvc1xuICAgdXNhZ2UgaW50byBvbmx5IHByaW1pdGl2ZSBzcGVjIGZvcm1zIC0gOnVzZSwgOnJlcXVpcmUsIDp1c2UtbWFjcm9zLFxuICAgOnJlcXVpcmUtbWFjcm9zLiBJZiBhIGxpYnJhcnkgaW5jbHVkZXMgYSBtYWNybyBmaWxlIG9mIHdpdGggdGhlIHNhbWUgbmFtZVxuICAgYXMgdGhlIG5hbWVzcGFjZSB3aWxsIGFsc28gYmUgZGVzdWdhcmVkLiIsIDphcmdsaXN0cyAoW2FyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzdWdhci1ucy1zcGVjc1xuIFwiR2l2ZW4gYW4gb3JpZ2luYWwgc2V0IG9mIG5zIHNwZWNzIGRlc3VnYXIgOmluY2x1ZGUtbWFjcm9zIGFuZCA6cmVmZXItbWFjcm9zXFxuICAgdXNhZ2UgaW50byBvbmx5IHByaW1pdGl2ZSBzcGVjIGZvcm1zIC0gOnVzZSwgOnJlcXVpcmUsIDp1c2UtbWFjcm9zLFxcbiAgIDpyZXF1aXJlLW1hY3Jvcy4gSWYgYSBsaWJyYXJ5IGluY2x1ZGVzIGEgbWFjcm8gZmlsZSBvZiB3aXRoIHRoZSBzYW1lIG5hbWVcXG4gICBhcyB0aGUgbmFtZXNwYWNlIHdpbGwgYWxzbyBiZSBkZXN1Z2FyZWQuXCJcbiBbYXJnc11cbiAobGV0XG4gIFt7OmtleXMgW3JlcXVpcmVdLCA6YXMgaW5kZXhlZH1cbiAgICgtPj4gYXJncyAobWFwIChmbiBbW2sgJiBzcGVjc11dIFtrIChpbnRvIFtdIHNwZWNzKV0pKSAoaW50byB7fSkpXG4gICBzdWdhci1rZXlzXG4gICAjezppbmNsdWRlLW1hY3JvcyA6cmVmZXItbWFjcm9zfVxuICAgcmVtb3ZlLWZyb20tc3BlY1xuICAgKGZuXG4gICAgW3ByZWQgc3BlY11cbiAgICAoaWYtbm90XG4gICAgIChhbmQgKHNlcXVlbnRpYWw/IHNwZWMpIChzb21lIHByZWQgc3BlYykpXG4gICAgIHNwZWNcbiAgICAgKGxldFxuICAgICAgW1tsIHJdIChzcGxpdC13aXRoIChjb21wbGVtZW50IHByZWQpIHNwZWMpXVxuICAgICAgKHJlY3VyIHByZWQgKGNvbmNhdCBsIChkcm9wIDIgcikpKSkpKVxuICAgcmVwbGFjZS1yZWZlci1tYWNyb3NcbiAgIChmblxuICAgIFtzcGVjXVxuICAgIChpZi1ub3RcbiAgICAgKHNlcXVlbnRpYWw/IHNwZWMpXG4gICAgIHNwZWNcbiAgICAgKG1hcCAoZm4gW3hdIChpZiAoPSB4IDpyZWZlci1tYWNyb3MpIDpyZWZlciB4KSkgc3BlYykpKVxuICAgcmVsb2FkLXNwZWM/XG4gICAoZm4qIFtwMV9fNDUwOTkjXSAoI3s6cmVsb2FkIDpyZWxvYWQtYWxsfSBwMV9fNDUwOTkjKSlcbiAgIHRvLW1hY3JvLXNwZWNzXG4gICAoZm5cbiAgICBbc3BlY3NdXG4gICAgKC0+PlxuICAgICBzcGVjc1xuICAgICAoZmlsdGVyXG4gICAgICAoZm5cbiAgICAgICBbeF1cbiAgICAgICAob3JcbiAgICAgICAgKGFuZCAoc2VxdWVudGlhbD8geCkgKHNvbWUgc3VnYXIta2V5cyB4KSlcbiAgICAgICAgKHJlbG9hZC1zcGVjPyB4KVxuICAgICAgICAobWFjcm8tYXV0b2xvYWQtbnM/IHgpKSkpXG4gICAgIChtYXBcbiAgICAgIChmblxuICAgICAgIFt4XVxuICAgICAgIChpZi1ub3RcbiAgICAgICAgKHJlbG9hZC1zcGVjPyB4KVxuICAgICAgICAoLT4+XG4gICAgICAgICB4XG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezppbmNsdWRlLW1hY3Jvc30pXG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezpyZWZlcn0pXG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezpyZW5hbWV9KVxuICAgICAgICAgKHJlcGxhY2UtcmVmZXItbWFjcm9zKSlcbiAgICAgICAgeCkpKSkpXG4gICByZW1vdmUtc3VnYXJcbiAgIChwYXJ0aWFsIHJlbW92ZS1mcm9tLXNwZWMgc3VnYXIta2V5cyldXG4gIChpZi1zb21lXG4gICBbcmVxdWlyZS1zcGVjcyAoc2VxICh0by1tYWNyby1zcGVjcyByZXF1aXJlKSldXG4gICAobWFwXG4gICAgKGZuXG4gICAgIFt4XVxuICAgICAoaWYtbm90XG4gICAgICAocmVsb2FkLXNwZWM/IHgpXG4gICAgICAobGV0IFtbayB2XSB4XSAoY29ucyBrIChtYXAgcmVtb3ZlLXN1Z2FyIHYpKSlcbiAgICAgIHgpKVxuICAgICh1cGRhdGUtaW4gaW5kZXhlZCBbOnJlcXVpcmUtbWFjcm9zXSAoZm5pbCBpbnRvIFtdKSByZXF1aXJlLXNwZWNzKSlcbiAgIGFyZ3MpKSlcbiJ9IHs6c3ltIGpzLXRhZz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy10YWc/XG4gW3hdXG4gKGFuZCAoc3ltYm9sPyB4KSAob3IgKD0gJ2pzIHgpICg9IFwianNcIiAobmFtZXNwYWNlIHgpKSkpKVxuIn0gezpzeW0gZW5zdXJlLWRlZnMsIDptZXRhIHs6ZG9jICJFbnN1cmVzIHRoYXQgYSBub24tbmlsIGRlZnMgbWFwIGV4aXN0cyBpbiB0aGUgY29tcGlsZXIgc3RhdGUgZm9yIGEgZ2l2ZW5cbiAgbnMuIChBIG5vbi1uaWwgZGVmcyBtYXAgc2lnbmlmaWVzIHRoYXQgdGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBhbmFseXplZC4pIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5zdXJlLWRlZnNcbiBcIkVuc3VyZXMgdGhhdCBhIG5vbi1uaWwgZGVmcyBtYXAgZXhpc3RzIGluIHRoZSBjb21waWxlciBzdGF0ZSBmb3IgYSBnaXZlblxcbiAgbnMuIChBIG5vbi1uaWwgZGVmcyBtYXAgc2lnbmlmaWVzIHRoYXQgdGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBhbmFseXplZC4pXCJcbiBbbnNdXG4gKHN3YXAhXG4gIGVudi8qY29tcGlsZXIqXG4gIHVwZGF0ZS1pblxuICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6ZGVmc11cbiAgKGZuKiBbcDFfXzQ1MTI0I10gKG9yIHAxX180NTEyNCMge30pKSkpXG4ifSB7OnN5bSBhbmFseXplLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLW1hcFxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtleHByLWVudlxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGtzXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdlxuICAgICAoZm4qIFtwMV9fNDUxMTMjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDUxMTMjKSlcbiAgICAgKGtleXMgZm9ybSkpKVxuICAgdnNcbiAgIChkaXNhbGxvd2luZy1yZWN1clxuICAgIChtYXB2XG4gICAgIChmbiogW3AxX180NTExNCNdIChhbmFseXplIGV4cHItZW52IHAxX180NTExNCMpKVxuICAgICAodmFscyBmb3JtKSkpXVxuICAoYW5hbHl6ZS13cmFwLW1ldGFcbiAgIHs6b3AgOm1hcCxcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDprZXlzIGtzLFxuICAgIDp2YWxzIHZzLFxuICAgIDpjaGlsZHJlbiBbOmtleXMgOnZhbHNdLFxuICAgIDp0YWcgJ2NsanMuY29yZS9JTWFwfSkpKVxuIn0gezpzeW0gTlVNRVJJQ19TRVQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE5VTUVSSUNfU0VUICcje2FueSBsb25nIGRvdWJsZSBudW1iZXJ9KVxuIn0gezpzeW0gYW5hbHl6ZS1yZWNvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1yZWNvcmRcbiBbZW52IHhdXG4gKGxldFxuICBbX2l0ZW1zX1xuICAgKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpIChpbnRvIHt9IHgpKSlcbiAgIFtucyBuYW1lXVxuICAgKHJlY29yZC1ucytuYW1lIHgpXVxuICB7Om9wIDpjb25zdCxcbiAgIDp2YWwgeCxcbiAgIDplbnYgZW52LFxuICAgOmZvcm0geCxcbiAgIDp0YWcgKHN5bWJvbCAoc3RyIG5zKSAoc3RyIG5hbWUpKX0pKVxuIn0gezpzeW0gYW5hbHl6ZS1zZXEqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wIGVudiBmb3JtIG5hbWUgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXNlcSpcbiBbb3AgZW52IGZvcm0gbmFtZSBvcHRzXVxuIChpZlxuICAoY29udGFpbnM/IHNwZWNpYWxzIG9wKVxuICAocGFyc2Ugb3AgZW52IGZvcm0gbmFtZSBvcHRzKVxuICAocGFyc2UtaW52b2tlIGVudiBmb3JtKSkpXG4ifSB7OnN5bSBjb25zdGFudHMtbnMtc3ltLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNvbnN0YW50cy1ucy1zeW1cbiBcIlRoZSBuYW1lc3BhY2Ugb2YgdGhlIGNvbnN0YW50cyB0YWJsZSBhcyBhIHN5bWJvbC5cIlxuICdjbGpzLmNvcmUuY29uc3RhbnRzKVxuIn0gezpzeW0gcmVzb2x2ZS1hbGlhcywgOm1ldGEgezpkb2MgIlRha2VzIGEgbmFtZXNwYWNlIGFuZCBhbiB1bnF1YWxpZmllZCBzeW1ib2wgYW5kIHBvdGVudGlhbGx5IHJldHVybnMgYSBuZXdcbiAgc3ltYm9sIHRvIGJlIHVzZWQgaW4gbGlldSBvZiB0aGUgb3JpZ2luYWwuIiwgOmFyZ2xpc3RzIChbbnMgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtYWxpYXNcbiBcIlRha2VzIGEgbmFtZXNwYWNlIGFuZCBhbiB1bnF1YWxpZmllZCBzeW1ib2wgYW5kIHBvdGVudGlhbGx5IHJldHVybnMgYSBuZXdcXG4gIHN5bWJvbCB0byBiZSB1c2VkIGluIGxpZXUgb2YgdGhlIG9yaWdpbmFsLlwiXG4gW25zIHN5bV1cbiAoaWZcbiAgKGFuZCAoPSAnY2xqcy5jb3JlIG5zKSAoJyN7YWdldCBhc2V0fSBzeW0pIChjaGVja2VkLWFycmF5cykpXG4gIChnZXQtaW5cbiAgICd7Ondhcm4ge2FnZXQgY2hlY2tlZC1hZ2V0LCBhc2V0IGNoZWNrZWQtYXNldH0sXG4gICAgIDplcnJvciB7YWdldCBjaGVja2VkLWFnZXQnLCBhc2V0IGNoZWNrZWQtYXNldCd9fVxuICAgWyhjaGVja2VkLWFycmF5cykgc3ltXSlcbiAgc3ltKSlcbiJ9IHs6c3ltICpjbGpzLWRlcC1zZXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1kZXAtc2V0KiAod2l0aC1tZXRhICN7fSB7OmRlcC1wYXRoIFtdfSkpXG4ifSB7OnN5bSByZXNvbHZlLXZhciwgOm1ldGEgezpkb2MgIlJlc29sdmUgYSB2YXIuIEFjY2VwdHMgYSBzaWRlLWVmZmVjdGluZyBjb25maXJtIGZuIGZvciBwcm9kdWNpbmdcbiAgIHdhcm5pbmdzIGFib3V0IHVucmVzb2x2ZWQgdmFycy4iLCA6YXJnbGlzdHMgW1tlbnYgc3ltXSBbZW52IHN5bSBjb25maXJtXSBbZW52IHN5bSBjb25maXJtIGRlZmF1bHQ/XV19LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtdmFyXG4gXCJSZXNvbHZlIGEgdmFyLiBBY2NlcHRzIGEgc2lkZS1lZmZlY3RpbmcgY29uZmlybSBmbiBmb3IgcHJvZHVjaW5nXFxuICAgd2FybmluZ3MgYWJvdXQgdW5yZXNvbHZlZCB2YXJzLlwiXG4gKFtlbnYgc3ltXSAocmVzb2x2ZS12YXIgZW52IHN5bSBuaWwpKVxuIChbZW52IHN5bSBjb25maXJtXSAocmVzb2x2ZS12YXIgZW52IHN5bSBjb25maXJtIHRydWUpKVxuIChbZW52IHN5bSBjb25maXJtIGRlZmF1bHQ/XVxuICAobGV0XG4gICBbbG9jYWxzICg6bG9jYWxzIGVudildXG4gICAoaWZcbiAgICAjPyg6Y2xqICg9IFwianNcIiAobmFtZXNwYWNlIHN5bSkpIDpjbGpzIChpZGVudGljYWw/IFwianNcIiAobmFtZXNwYWNlIHN5bSkpKVxuICAgIChsZXRcbiAgICAgW3N5bW5cbiAgICAgICgtPiBzeW0gbmFtZSBzeW1ib2wpXG4gICAgICBzaGFkb3dlZC1ieS1sb2NhbFxuICAgICAgKGhhbmRsZS1zeW1ib2wtbG9jYWwgc3ltbiAoZ2V0IGxvY2FscyBzeW1uKSldXG4gICAgIChjb25kXG4gICAgICAoc29tZT8gc2hhZG93ZWQtYnktbG9jYWwpXG4gICAgICAoZG9cbiAgICAgICAod2FybmluZyA6anMtc2hhZG93ZWQtYnktbG9jYWwgZW52IHs6bmFtZSBzeW19KVxuICAgICAgIChhc3NvYyBzaGFkb3dlZC1ieS1sb2NhbCA6b3AgOmxvY2FsKSlcbiAgICAgIDplbHNlXG4gICAgICAobGV0XG4gICAgICAgW3ByZSAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgc3ltKSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYyldXG4gICAgICAgKHdoZW5cbiAgICAgICAgKGFuZFxuICAgICAgICAgKG5vdCAoaGFzLWV4dGVybj8gcHJlKSlcbiAgICAgICAgIChub3QgKC0+IHN5bSBtZXRhIDpjbGpzLmFuYWx5emVyL25vLXJlc29sdmUpKSlcbiAgICAgICAgKHN3YXAhXG4gICAgICAgICBlbnYvKmNvbXBpbGVyKlxuICAgICAgICAgdXBkYXRlLWluXG4gICAgICAgICAoaW50b1xuICAgICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZXh0ZXJuc11cbiAgICAgICAgICBwcmUpXG4gICAgICAgICBtZXJnZVxuICAgICAgICAge30pKVxuICAgICAgIChtZXJnZVxuICAgICAgICB7Om5hbWUgc3ltLFxuICAgICAgICAgOm9wIDpqcy12YXIsXG4gICAgICAgICA6bnMgJ2pzLFxuICAgICAgICAgOnRhZ1xuICAgICAgICAgKHdpdGgtbWV0YVxuICAgICAgICAgIChvciAoanMtdGFnIHByZSkgKDp0YWcgKG1ldGEgc3ltKSkgJ2pzKVxuICAgICAgICAgIHs6cHJlZml4IHByZX0pfVxuICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgIFtyZXQtdGFnIChqcy10YWcgcHJlIDpyZXQtdGFnKV1cbiAgICAgICAgIHs6anMtZm4tdmFyIHRydWUsIDpyZXQtdGFnIHJldC10YWd9KSkpKSlcbiAgICAobGV0XG4gICAgIFtzXG4gICAgICAoc3RyIHN5bSlcbiAgICAgIGxiXG4gICAgICAoaGFuZGxlLXN5bWJvbC1sb2NhbCBzeW0gKGdldCBsb2NhbHMgc3ltKSlcbiAgICAgIGN1cnJlbnQtbnNcbiAgICAgICgtPiBlbnYgOm5zIDpuYW1lKV1cbiAgICAgKGNvbmRcbiAgICAgIChzb21lPyBsYilcbiAgICAgIChhc3NvYyBsYiA6b3AgOmxvY2FsKVxuICAgICAgKHNvbWU/IChuYW1lc3BhY2Ugc3ltKSlcbiAgICAgIChsZXRcbiAgICAgICBbbnNcbiAgICAgICAgKG5hbWVzcGFjZSBzeW0pXG4gICAgICAgIG5zXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoPSBcImNsb2p1cmUuY29yZVwiIG5zKSA6Y2xqcyAoaWRlbnRpY2FsPyBcImNsb2p1cmUuY29yZVwiIG5zKSlcbiAgICAgICAgIFwiY2xqcy5jb3JlXCJcbiAgICAgICAgIG5zKVxuICAgICAgICBmdWxsLW5zXG4gICAgICAgIChyZXNvbHZlLW5zLWFsaWFzXG4gICAgICAgICBlbnZcbiAgICAgICAgIG5zXG4gICAgICAgICAob3JcbiAgICAgICAgICAoYW5kXG4gICAgICAgICAgIChqcy1tb2R1bGUtZXhpc3RzPyBucylcbiAgICAgICAgICAgKGdldHMgQGVudi8qY29tcGlsZXIqIDpqcy1tb2R1bGUtaW5kZXggbnMgOm5hbWUpKVxuICAgICAgICAgIChzeW1ib2wgbnMpKSldXG4gICAgICAgKHdoZW5cbiAgICAgICAgKHNvbWU/IGNvbmZpcm0pXG4gICAgICAgICh3aGVuIChub3Q9IGN1cnJlbnQtbnMgZnVsbC1ucykgKGNvbmZpcm0tbnMgZW52IGZ1bGwtbnMpKVxuICAgICAgICAoY29uZmlybSBlbnYgZnVsbC1ucyAoc3ltYm9sIChuYW1lIHN5bSkpKSlcbiAgICAgICAocmVzb2x2ZSogZW52IHN5bSBmdWxsLW5zIGN1cnJlbnQtbnMpKVxuICAgICAgKGRvdHRlZC1zeW1ib2w/IHN5bSlcbiAgICAgIChsZXRcbiAgICAgICBbaWR4XG4gICAgICAgICguaW5kZXhPZiBzIFwiLlwiKVxuICAgICAgICBwcmVmaXhcbiAgICAgICAgKHN5bWJvbCAoc3VicyBzIDAgaWR4KSlcbiAgICAgICAgc3VmZml4XG4gICAgICAgIChzdWJzIHMgKGluYyBpZHgpKV1cbiAgICAgICAoaWYtbGV0XG4gICAgICAgIFtyZXNvbHZlZCAocmVzb2x2ZS12YXIgZW52IHByZWZpeCBuaWwgZmFsc2UpXVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICByZXNvbHZlZFxuICAgICAgICAgOm5hbWVcbiAgICAgICAgIChmbiogW3AxX180NTA3MyNdIChzeW1ib2wgKHN0ciBwMV9fNDUwNzMjIFwiLlwiIHN1ZmZpeCkpKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW3NcbiAgICAgICAgICAoc3RyIChjb25kLT4+IHMgKGdvb2ctbW9kdWxlLWRlcD8gc3ltKSAocmVzb2x2ZS1pbXBvcnQgZW52KSkpXG4gICAgICAgICAgaWR4XG4gICAgICAgICAgKC5sYXN0SW5kZXhPZiAoc3RyIHMpIFwiLlwiKVxuICAgICAgICAgIHByZVxuICAgICAgICAgIChzdWJzIHMgMCBpZHgpXG4gICAgICAgICAgc3VmXG4gICAgICAgICAgKHN1YnMgcyAoaW5jIGlkeCkpXVxuICAgICAgICAgezpvcCA6dmFyLCA6bmFtZSAoc3ltYm9sIHByZSBzdWYpLCA6bnMgKHN5bWJvbCBwcmUpfSkpKVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6dXNlc1xuICAgICAgICBzeW0pKVxuICAgICAgKGxldFxuICAgICAgIFtmdWxsLW5zXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDp1c2VzXG4gICAgICAgICBzeW0pXVxuICAgICAgIChyZXNvbHZlKiBlbnYgc3ltIGZ1bGwtbnMgY3VycmVudC1ucykpXG4gICAgICAoc29tZT9cbiAgICAgICAoZ2V0c1xuICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgICAgICBjdXJyZW50LW5zXG4gICAgICAgIDpyZW5hbWVzXG4gICAgICAgIHN5bSkpXG4gICAgICAobGV0XG4gICAgICAgW3F1YWxpZmllZC1zeW1ib2xcbiAgICAgICAgKGdldHNcbiAgICAgICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgICAgICAgY3VycmVudC1uc1xuICAgICAgICAgOnJlbmFtZXNcbiAgICAgICAgIHN5bSlcbiAgICAgICAgZnVsbC1uc1xuICAgICAgICAoc3ltYm9sIChuYW1lc3BhY2UgcXVhbGlmaWVkLXN5bWJvbCkpXG4gICAgICAgIHN5bVxuICAgICAgICAoc3ltYm9sIChuYW1lIHF1YWxpZmllZC1zeW1ib2wpKV1cbiAgICAgICAocmVzb2x2ZSogZW52IHN5bSBmdWxsLW5zIGN1cnJlbnQtbnMpKVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6aW1wb3J0c1xuICAgICAgICBzeW0pKVxuICAgICAgKHJlY3VyXG4gICAgICAgZW52XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6aW1wb3J0c1xuICAgICAgICBzeW0pXG4gICAgICAgY29uZmlybVxuICAgICAgIGRlZmF1bHQ/KVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6ZGVmc1xuICAgICAgICBzeW0pKVxuICAgICAgKGRvXG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiBjdXJyZW50LW5zIHN5bSkpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDpkZWZzXG4gICAgICAgICBzeW0pXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIChzdHIgY3VycmVudC1ucykgKHN0ciBzeW0pKSxcbiAgICAgICAgIDpvcCA6dmFyLFxuICAgICAgICAgOm5zIGN1cnJlbnQtbnN9KSlcbiAgICAgIChjb3JlLW5hbWU/IGVudiBzeW0pXG4gICAgICAobGV0XG4gICAgICAgW3N5bSAocmVzb2x2ZS1hbGlhcyAnY2xqcy5jb3JlIHN5bSldXG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiAnY2xqcy5jb3JlIHN5bSkpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgICdjbGpzLmNvcmVcbiAgICAgICAgIDpkZWZzXG4gICAgICAgICBzeW0pXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIFwiY2xqcy5jb3JlXCIgKHN0ciBzeW0pKSxcbiAgICAgICAgIDpvcCA6dmFyLFxuICAgICAgICAgOm5zICdjbGpzLmNvcmV9KSlcbiAgICAgIChpbnZva2VhYmxlLW5zPyBzIGVudilcbiAgICAgIChyZXNvbHZlLWludm9rZWFibGUtbnMgcyBjdXJyZW50LW5zIGVudilcbiAgICAgIDplbHNlXG4gICAgICAod2hlblxuICAgICAgIGRlZmF1bHQ/XG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiBjdXJyZW50LW5zIHN5bSkpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDpkZWZzXG4gICAgICAgICBzeW0pXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIChzdHIgY3VycmVudC1ucykgKHN0ciBzeW0pKSxcbiAgICAgICAgIDpvcCA6dmFyLFxuICAgICAgICAgOm5zIGN1cnJlbnQtbnN9KSkpKSkpKSlcbiJ9IHs6c3ltIGpzLXN0YXItc2VnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtc3Rhci1zZWdcbiBbc11cbiAobGV0XG4gIFtpZHggKC5pbmRleE9mIHMgXCJ+e1wiKV1cbiAgKGlmXG4gICAoPT0gLTEgaWR4KVxuICAgKGxpc3QgcylcbiAgIChsZXRcbiAgICBbZW5kICguaW5kZXhPZiBzIFwifVwiIGlkeCldXG4gICAgKGxhenktc2VxXG4gICAgIChjb25zIChzdWJzIHMgMCBpZHgpIChqcy1zdGFyLXNlZyAoc3VicyBzIChpbmMgZW5kKSkpKSkpKSkpXG4ifSB7OnN5bSBkZXAtaGFzLWdsb2JhbC1leHBvcnRzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz9cbiBbbW9kdWxlXVxuIChsZXRcbiAgW1ttb2R1bGUgX11cbiAgIChsaWImc3VibGliIG1vZHVsZSlcbiAgIGdsb2JhbC1leHBvcnRzXG4gICAoZ2V0LWluXG4gICAgQGVudi8qY29tcGlsZXIqXG4gICAgWzpqcy1kZXBlbmRlbmN5LWluZGV4IChzdHIgbW9kdWxlKSA6Z2xvYmFsLWV4cG9ydHNdKV1cbiAgKG9yXG4gICAoY29udGFpbnM/IGdsb2JhbC1leHBvcnRzIChzeW1ib2wgbW9kdWxlKSlcbiAgIChjb250YWlucz8gZ2xvYmFsLWV4cG9ydHMgKG5hbWUgbW9kdWxlKSkpKSlcbiJ9IHs6c3ltIHJlZ2lzdGVyLXNwZWNzLCA6bWV0YSB7OmRvYyAiUmVnaXN0ZXJzIHNwZWNlZCB2YXJzIGZvdW5kIGluIGEgbmFtZXNwYWNlIGFuYWx5c2lzIGNhY2hlLiIsIDphcmdsaXN0cyAoW2NhY2hlZC1uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdpc3Rlci1zcGVjc1xuIFwiUmVnaXN0ZXJzIHNwZWNlZCB2YXJzIGZvdW5kIGluIGEgbmFtZXNwYWNlIGFuYWx5c2lzIGNhY2hlLlwiXG4gW2NhY2hlZC1uc11cbiAjPyg6Y2xqICh0cnkgKGxvY2tpbmcgbG9hZC1tdXRleCAoY2xvanVyZS5jb3JlL3JlcXVpcmUgKHF1b3RlIGNsanMuc3BlYy5hbHBoYSkpKSAoY2F0Y2ggVGhyb3dhYmxlIHQpKSlcbiAobGV0XG4gIFt7OmtleXMgW3JlZ2lzdHJ5LXJlZiBzcGVjZWQtdmFyc119IChnZXQtc3BlYy12YXJzKV1cbiAgKHdoZW4tbGV0XG4gICBbcmVnaXN0cnkgKHNlcSAoOmNsanMuc3BlYy9yZWdpc3RyeS1yZWYgY2FjaGVkLW5zKSldXG4gICAod2hlbiByZWdpc3RyeS1yZWYgKHN3YXAhIEByZWdpc3RyeS1yZWYgaW50byByZWdpc3RyeSkpKVxuICAod2hlbi1sZXRcbiAgIFt2YXJzIChzZXEgKDpjbGpzLnNwZWMvc3BlY2VkLXZhcnMgY2FjaGVkLW5zKSldXG4gICAod2hlbiBzcGVjZWQtdmFycyAoc3dhcCEgQHNwZWNlZC12YXJzIGludG8gdmFycykpKSkpXG4ifSB7OnN5bSBnZXQtZXh0ZXJucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1leHRlcm5zIFtdICg6Y2xqcy5hbmFseXplci9leHRlcm5zIEBlbnYvKmNvbXBpbGVyKikpXG4ifSB7OnN5bSAqcGFzc2VzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnBhc3NlcyogbmlsKVxuIn0gezpzeW0gaGFzLWV4dGVybj8qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3ByZSBleHRlcm5zXSBbcHJlIGV4dGVybnMgdG9wXV19LCA6c291cmNlICIoZGVmblxuIGhhcy1leHRlcm4/KlxuIChbcHJlIGV4dGVybnNdXG4gIChsZXRcbiAgIFtwcmVcbiAgICAoaWYtc29tZVxuICAgICBbbWUgKGZpbmQgKGdldC1pbiBleHRlcm5zICdbV2luZG93IHByb3RvdHlwZV0pIChmaXJzdCBwcmUpKV1cbiAgICAgKGlmLXNvbWVcbiAgICAgIFt0YWcgKC0+IG1lIGZpcnN0IG1ldGEgOnRhZyldXG4gICAgICAoaW50byBbdGFnICdwcm90b3R5cGVdIChuZXh0IHByZSkpXG4gICAgICBwcmUpXG4gICAgIHByZSldXG4gICAoaGFzLWV4dGVybj8qIHByZSBleHRlcm5zIGV4dGVybnMpKSlcbiAoW3ByZSBleHRlcm5zIHRvcF1cbiAgKGNvbmRcbiAgIChlbXB0eT8gcHJlKVxuICAgdHJ1ZVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbeCAoZmlyc3QgcHJlKSBtZSAoZmluZCBleHRlcm5zIHgpXVxuICAgIChjb25kXG4gICAgIChub3QgbWUpXG4gICAgIGZhbHNlXG4gICAgIDplbHNlXG4gICAgIChsZXRcbiAgICAgIFtbeCcgZXh0ZXJucyddIG1lIHhtZXRhIChtZXRhIHgnKV1cbiAgICAgIChpZlxuICAgICAgIChhbmQgKD0gJ0Z1bmN0aW9uICg6dGFnIHhtZXRhKSkgKDpjdG9yIHhtZXRhKSlcbiAgICAgICAob3JcbiAgICAgICAgKGhhcy1leHRlcm4/KiAoaW50byAnW3Byb3RvdHlwZV0gKG5leHQgcHJlKSkgZXh0ZXJucycgdG9wKVxuICAgICAgICAoaGFzLWV4dGVybj8qIChuZXh0IHByZSkgZXh0ZXJucycgdG9wKSlcbiAgICAgICAocmVjdXIgKG5leHQgcHJlKSBleHRlcm5zJyB0b3ApKSkpKSkpKVxuIn0gezpzeW0gaGFuZGxlLXN5bWJvbC1sb2NhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW0gbGJdKX0sIDpzb3VyY2UgIihkZWZuIGhhbmRsZS1zeW1ib2wtbG9jYWwgW3N5bSBsYl0gKGlmIChzeW1ib2w/IGxiKSB7Om5hbWUgc3ltfSBsYikpXG4ifSB7OnN5bSBnZXQtZXhwYW5kZXItbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IG5zdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWV4cGFuZGVyLW5zXG4gW2VudiBuc3RyXVxuIChsZXRcbiAgW3Jlc1xuICAgKG9yXG4gICAgKHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgZW52IG5zdHIgbmlsKVxuICAgIChyZXNvbHZlLW5zLWFsaWFzIGVudiBuc3RyIG5pbCkpXG4gICBuc3RyXG4gICAoaWYgKHNvbWU/IHJlcykgKHN0ciByZXMpIG5zdHIpXVxuICAoY29uZFxuICAgIz9AKDpjbGogWyg9IFwiY2xvanVyZS5jb3JlXCIgbnN0cikgKGZpbmQtbnMgKHF1b3RlIGNsanMuY29yZSkpXSA6Y2xqcyBbKGlkZW50aWNhbD8gXCJjbG9qdXJlLmNvcmVcIiBuc3RyKSAoZmluZC1tYWNyb3MtbnMgaW1wbC9DTEpTX0NPUkVfTUFDUk9TX1NZTSldKVxuICAgIz9AKDpjbGogWyg9IFwiY2xvanVyZS5yZXBsXCIgbnN0cikgKGZpbmQtbnMgKHF1b3RlIGNsanMucmVwbCkpXSA6Y2xqcyBbKGlkZW50aWNhbD8gXCJjbG9qdXJlLnJlcGxcIiBuc3RyKSAoZmluZC1tYWNyb3MtbnMgKHF1b3RlIGNsanMucmVwbCkpXSlcbiAgICM/QCg6Y2xqIFsoLmNvbnRhaW5zIG5zdHIgXCIuXCIpIChmaW5kLW5zIChzeW1ib2wgbnN0cikpXSA6Y2xqcyBbKGdvb2cuc3RyaW5nL2NvbnRhaW5zIG5zdHIgXCIuXCIpIChmaW5kLW1hY3Jvcy1ucyAoc3ltYm9sIG5zdHIpKV0pXG4gICA6ZWxzZVxuICAgKHNvbWUtPlxuICAgIGVudlxuICAgIDpuc1xuICAgIDpyZXF1aXJlLW1hY3Jvc1xuICAgIChnZXQgKHN5bWJvbCBuc3RyKSlcbiAgICAjPyg6Y2xqIGZpbmQtbnMgOmNsanMgZmluZC1tYWNyb3MtbnMpKSkpKVxuIn0gezpzeW0gbWVzc2FnZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXNzYWdlXG4gW2VudiBzXVxuIChzdHJcbiAgc1xuICAoaWZcbiAgICg6bGluZSBlbnYpXG4gICAoc3RyIFwiIGF0IGxpbmUgXCIgKDpsaW5lIGVudikgXCIgXCIgKmNsanMtZmlsZSopXG4gICAod2hlbiAqY2xqcy1maWxlKiAoc3RyIFwiIGluIGZpbGUgXCIgKmNsanMtZmlsZSopKSkpKVxuIn0gezpzeW0gcGFyc2UtaW52b2tlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWludm9rZVxuIFtlbnYgZm9ybV1cbiAoZGlzYWxsb3dpbmctcmVjdXIgKHBhcnNlLWludm9rZSogZW52IGZvcm0pKSlcbiJ9IHs6c3ltICpjbGpzLXdhcm5pbmctaGFuZGxlcnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKiBbZGVmYXVsdC13YXJuaW5nLWhhbmRsZXJdKVxuIn0gezpzeW0gYW5hbHl6ZS1zZXEqLXdyYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3AgZW52IGZvcm0gbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtc2VxKi13cmFwXG4gW29wIGVudiBmb3JtIG5hbWUgb3B0c11cbiAod3JhcHBpbmctZXJyb3JzIGVudiAoYW5hbHl6ZS1zZXEqIG9wIGVudiBmb3JtIG5hbWUgb3B0cykpKVxuIn0gezpzeW0gY29uZmlybS1iaW5kaW5ncywgOm1ldGEgezpkb2MgIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQgZW52LCBhbmQgbmFtZXMsIGEgbGlzdCBvZiBzeW1ib2xzLCBjb25maXJtXG4gICB0aGF0IGFsbCBjb3JyZXNwb25kIHRvIGRlY2xhcmVkIGR5bmFtaWMgdmFycy4iLCA6YXJnbGlzdHMgKFtlbnYgbmFtZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZmlybS1iaW5kaW5nc1xuIFwiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCBlbnYsIGFuZCBuYW1lcywgYSBsaXN0IG9mIHN5bWJvbHMsIGNvbmZpcm1cXG4gICB0aGF0IGFsbCBjb3JyZXNwb25kIHRvIGRlY2xhcmVkIGR5bmFtaWMgdmFycy5cIlxuIFtlbnYgbmFtZXNdXG4gKGRvc2VxXG4gIFtuYW1lIG5hbWVzXVxuICAobGV0XG4gICBbZW52XG4gICAgKGFzc29jIGVudiA6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSlcbiAgICBldlxuICAgIChyZXNvbHZlLWV4aXN0aW5nLXZhciBlbnYgbmFtZSldXG4gICAod2hlblxuICAgIChhbmQgZXYgKG5vdCAoLT4gZXYgOmR5bmFtaWMpKSlcbiAgICAod2FybmluZyA6ZHluYW1pYyBlbnYgezpldiBldiwgOm5hbWUgKDpuYW1lIGV2KX0pKSkpKVxuIn0gezpzeW0gaGFzLWV4dGVybj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcHJlXSBbcHJlIGV4dGVybnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzLWV4dGVybj9cbiAoW3ByZV0gKGhhcy1leHRlcm4/IHByZSAoZ2V0LWV4dGVybnMpKSlcbiAoW3ByZSBleHRlcm5zXVxuICAob3JcbiAgIChoYXMtZXh0ZXJuPyogcHJlIGV4dGVybnMpXG4gICAod2hlblxuICAgICg9IDEgKGNvdW50IHByZSkpXG4gICAgKGxldFxuICAgICBbeCAoZmlyc3QgcHJlKV1cbiAgICAgKG9yXG4gICAgICAoZ2V0LWluIGV4dGVybnMgKGNvbmogJ1tXaW5kb3cgcHJvdG90eXBlXSB4KSlcbiAgICAgIChnZXQtaW4gZXh0ZXJucyAoY29uaiAnW051bWJlcl0geCkpKSkpXG4gICAoLT4gKGxhc3QgcHJlKSBzdHIgKHN0cmluZy9zdGFydHMtd2l0aD8gXCJjbGpzJFwiKSkpKSlcbiJ9IHs6c3ltIGZvcmVpZ24tZGVwPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkZXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9yZWlnbi1kZXA/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2RlcF1cbiAobGV0XG4gIFtqcy1pbmRleCAoOmpzLWRlcGVuZGVuY3ktaW5kZXggQGVudi8qY29tcGlsZXIqKV1cbiAgKGlmLXNvbWVcbiAgIFtbXyB7OmtleXMgW2ZvcmVpZ25dfV1cbiAgICAoZmluZCBqcy1pbmRleCAobmFtZSAoLT4gZGVwIGxpYiZzdWJsaWIgZmlyc3QpKSldXG4gICBmb3JlaWduXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWUtbWFjcm8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXJlbmFtZS1tYWNybz9cbiBbc3ltXVxuIChsZXRcbiAgW2xpYlxuICAgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpXG4gICBzeW1cbiAgIChzeW1ib2wgKG5hbWUgc3ltKSlcbiAgIHRoZS1uc1xuICAgIz8oOmNsaiAoZmluZC1ucyBsaWIpIDpjbGpzIChmaW5kLW1hY3Jvcy1ucyBsaWIpKV1cbiAgKG9yIChuaWw/IHRoZS1ucykgKG5pbD8gKC5maW5kSW50ZXJuZWRWYXIgdGhlLW5zIHN5bSkpKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXVzZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXNlcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy11c2VzXG4gW3VzZXMgZW52XVxuIChsZXRcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxuICAoaW50byB7fSAoZmlsdGVyIChmbiBbW3N5bSBsaWJdXSAobWlzc2luZy11c2U/IGxpYiBzeW0gY2VudikpIHVzZXMpKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXVzZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGliIHN5bSBjZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctdXNlP1xuIFtsaWIgc3ltIGNlbnZdXG4gKGxldFxuICBbanMtbGliIChnZXQtaW4gY2VudiBbOmpzLWRlcGVuZGVuY3ktaW5kZXggKG5hbWUgbGliKV0pXVxuICAoYW5kXG4gICAoPVxuICAgIChnZXQtaW5cbiAgICAgY2VudlxuICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBsaWIgOmRlZnMgc3ltXVxuICAgICA6Y2xqcy5hbmFseXplci9ub3QtZm91bmQpXG4gICAgOmNsanMuYW5hbHl6ZXIvbm90LWZvdW5kKVxuICAgKG5vdCAoPSAoZ2V0IGpzLWxpYiA6Z3JvdXApIDpnb29nKSlcbiAgIChub3QgKGdldCBqcy1saWIgOmNsb3N1cmUtbGliKSlcbiAgIChub3QgKG5vZGUtbW9kdWxlLWRlcD8gbGliKSlcbiAgIChub3QgKGRlcC1oYXMtZ2xvYmFsLWV4cG9ydHM/IGxpYikpKSkpXG4ifSB7OnN5bSBlczUtYWxsb3dlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZXM1LWFsbG93ZWQgI3tcImRlZmF1bHRcIn0pXG4ifSB7OnN5bSBhbmFseXplLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYW4gZW52aXJvbm1lbnQsIGEgbWFwIGNvbnRhaW5pbmcgezpsb2NhbHMgKG1hcHBpbmcgb2YgbmFtZXMgdG8gYmluZGluZ3MpLCA6Y29udGV4dFxuICAob25lIG9mIDpzdGF0ZW1lbnQsIDpleHByLCA6cmV0dXJuKSwgOm5zIChhIHN5bWJvbCBuYW1pbmcgdGhlXG4gIGNvbXBpbGF0aW9uIG5zKX0sIGFuZCBmb3JtLCByZXR1cm5zIGFuIGV4cHJlc3Npb24gb2JqZWN0IChhIG1hcFxuICBjb250YWluaW5nIGF0IGxlYXN0IDpmb3JtLCA6b3AgYW5kIDplbnYga2V5cykuIElmIGV4cHIgaGFzIGFueSAoaW1tZWRpYXRlbHkpXG4gIG5lc3RlZCBleHBycywgbXVzdCBoYXZlIGEgOmNoaWxkcmVuIGVudHJ5LiBUaGlzIG11c3QgYmUgYSB2ZWN0b3Igb2Yga2V5d29yZHMgbmFtaW5nXG4gIHRoZSBpbW1lZGlhdGVseSBuZXN0ZWQgZmllbGRzIG1hcHBlZCB0byBhbiBleHByIG9yIHZlY3RvciBvZiBleHBycy4gVGhpcyB3aWxsXG4gIGZhY2lsaXRhdGUgY29kZSB3YWxraW5nIHdpdGhvdXQga25vd2luZyB0aGUgZGV0YWlscyBvZiB0aGUgb3Agc2V0LiIsIDphcmdsaXN0cyBbW2VudiBmb3JtXSBbZW52IGZvcm0gbmFtZV0gW2VudiBmb3JtIG5hbWUgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplXG4gXCJHaXZlbiBhbiBlbnZpcm9ubWVudCwgYSBtYXAgY29udGFpbmluZyB7OmxvY2FscyAobWFwcGluZyBvZiBuYW1lcyB0byBiaW5kaW5ncyksIDpjb250ZXh0XFxuICAob25lIG9mIDpzdGF0ZW1lbnQsIDpleHByLCA6cmV0dXJuKSwgOm5zIChhIHN5bWJvbCBuYW1pbmcgdGhlXFxuICBjb21waWxhdGlvbiBucyl9LCBhbmQgZm9ybSwgcmV0dXJucyBhbiBleHByZXNzaW9uIG9iamVjdCAoYSBtYXBcXG4gIGNvbnRhaW5pbmcgYXQgbGVhc3QgOmZvcm0sIDpvcCBhbmQgOmVudiBrZXlzKS4gSWYgZXhwciBoYXMgYW55IChpbW1lZGlhdGVseSlcXG4gIG5lc3RlZCBleHBycywgbXVzdCBoYXZlIGEgOmNoaWxkcmVuIGVudHJ5LiBUaGlzIG11c3QgYmUgYSB2ZWN0b3Igb2Yga2V5d29yZHMgbmFtaW5nXFxuICB0aGUgaW1tZWRpYXRlbHkgbmVzdGVkIGZpZWxkcyBtYXBwZWQgdG8gYW4gZXhwciBvciB2ZWN0b3Igb2YgZXhwcnMuIFRoaXMgd2lsbFxcbiAgZmFjaWxpdGF0ZSBjb2RlIHdhbGtpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBvcCBzZXQuXCJcbiAoW2VudiBmb3JtXSAoYW5hbHl6ZSBlbnYgZm9ybSBuaWwpKVxuIChbZW52IGZvcm0gbmFtZV1cbiAgKGFuYWx5emVcbiAgIGVudlxuICAgZm9ybVxuICAgbmFtZVxuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcbiAoW2VudiBmb3JtIG5hbWUgb3B0c11cbiAgKHdyYXBwaW5nLWVycm9yc1xuICAgZW52XG4gICAoaWZcbiAgICAoYW5hbHl6ZWQ/IGZvcm0pXG4gICAgKG5vLXdhcm4gKGFuYWx5emUqIGVudiBmb3JtIG5hbWUgb3B0cykpXG4gICAgKGFuYWx5emUqIGVudiBmb3JtIG5hbWUgb3B0cykpKSkpXG4ifSB7OnN5bSB1c2VkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHVzZWQ/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBzeW1dXG4gKG9yXG4gIChzb21lPyAoZ2V0cyBlbnYgOm5zIDp1c2UtbWFjcm9zIHN5bSkpXG4gIChzb21lP1xuICAgKGdldHNcbiAgICBAZW52Lypjb21waWxlcipcbiAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgKGdldHMgZW52IDpucyA6bmFtZSlcbiAgICA6dXNlLW1hY3Jvc1xuICAgIHN5bSkpKSlcbiJ9IHs6c3ltIG5vZGUtbW9kdWxlLWRlcD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW9kdWxlXSl9LCA6c291cmNlICIoZGVmblxuIG5vZGUtbW9kdWxlLWRlcD9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbbW9kdWxlXVxuICM/KDpjbGogKGxldCBbaWR4IChnZXQgKGNsb2p1cmUuY29yZS9kZXJlZiBlbnYvKmNvbXBpbGVyKikgOm5vZGUtbW9kdWxlLWluZGV4KV0gKGNvbnRhaW5zPyBpZHggKHN0ciAoLT4gbW9kdWxlIGxpYiZzdWJsaWIgZmlyc3QpKSkpIDpjbGpzICh0cnkgKGFuZCAoPSAqdGFyZ2V0KiBcIm5vZGVqc1wiKSAoYm9vbGVhbiAob3IgKGpzL3JlcXVpcmUucmVzb2x2ZSAoc3RyIG1vZHVsZSkpIChqcy9yZXF1aXJlLnJlc29sdmUgKC0+IG1vZHVsZSBsaWImc3VibGliIGZpcnN0KSkpKSkgKGNhdGNoIDpkZWZhdWx0IF8gZmFsc2UpKSkpXG4ifSB7OnN5bSBwYXJzZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wIGVudiBbXyB0c3ltIGZpZWxkcyBwbWFza3MgYm9keSA6YXMgZm9ybV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtdHlwZVxuIFtvcCBlbnYgW18gdHN5bSBmaWVsZHMgcG1hc2tzIGJvZHkgOmFzIGZvcm1dXVxuIChsZXRcbiAgW3RcbiAgICg6bmFtZSAocmVzb2x2ZS12YXIgKGRpc3NvYyBlbnYgOmxvY2FscykgdHN5bSkpXG4gICBsb2NhbHNcbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW20gZmxkXVxuICAgICAoYXNzb2NcbiAgICAgIG1cbiAgICAgIGZsZFxuICAgICAgezpuYW1lIGZsZCxcbiAgICAgICA6ZmllbGQgdHJ1ZSxcbiAgICAgICA6Y29sdW1uIChnZXQtY29sIGZsZCBlbnYpLFxuICAgICAgIDp1bnN5bmNocm9uaXplZC1tdXRhYmxlICgtPiBmbGQgbWV0YSA6dW5zeW5jaHJvbml6ZWQtbXV0YWJsZSksXG4gICAgICAgOmxpbmUgKGdldC1saW5lIGZsZCBlbnYpLFxuICAgICAgIDp0YWcgKC0+IGZsZCBtZXRhIDp0YWcpLFxuICAgICAgIDptdXRhYmxlICgtPiBmbGQgbWV0YSA6bXV0YWJsZSksXG4gICAgICAgOnZvbGF0aWxlLW11dGFibGUgKC0+IGZsZCBtZXRhIDp2b2xhdGlsZS1tdXRhYmxlKSxcbiAgICAgICA6c2hhZG93IChtIGZsZCksXG4gICAgICAgOmxvY2FsIDpmaWVsZH0pKVxuICAgIHt9XG4gICAgKGlmXG4gICAgICg9IDpkZWZyZWNvcmQgb3ApXG4gICAgIChjb25jYXQgZmllbGRzICdbX19tZXRhIF9fZXh0bWFwIF9faGFzaF0pXG4gICAgIGZpZWxkcykpXG4gICBwcm90b2NvbHNcbiAgICgtPiB0c3ltIG1ldGEgOnByb3RvY29scyldXG4gIChzd2FwIVxuICAgZW52Lypjb21waWxlcipcbiAgIHVwZGF0ZS1pblxuICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgKC0+IGVudiA6bnMgOm5hbWUpIDpkZWZzIHRzeW1dXG4gICAoZm5cbiAgICBbbV1cbiAgICAobGV0XG4gICAgIFttXG4gICAgICAoYXNzb2NcbiAgICAgICAob3IgbSB7fSlcbiAgICAgICA6bmFtZVxuICAgICAgIHRcbiAgICAgICA6dGFnXG4gICAgICAgJ2Z1bmN0aW9uXG4gICAgICAgOnR5cGVcbiAgICAgICB0cnVlXG4gICAgICAgOm51bS1maWVsZHNcbiAgICAgICAoY291bnQgZmllbGRzKVxuICAgICAgIDpyZWNvcmRcbiAgICAgICAoPSA6ZGVmcmVjb3JkIG9wKSldXG4gICAgIChtZXJnZVxuICAgICAgbVxuICAgICAgKGRpc3NvYyAobWV0YSB0c3ltKSA6cHJvdG9jb2xzKVxuICAgICAgezpwcm90b2NvbHMgcHJvdG9jb2xzfVxuICAgICAgKHNvdXJjZS1pbmZvIHRzeW0gZW52KSkpKSlcbiAgezpjaGlsZHJlbiBbOmJvZHldLFxuICAgOnBtYXNrcyBwbWFza3MsXG4gICA6cHJvdG9jb2xzIChkaXNqIHByb3RvY29scyAnY2xqcy5jb3JlL09iamVjdCksXG4gICA6ZmllbGRzIGZpZWxkcyxcbiAgIDpvcCBvcCxcbiAgIDplbnYgZW52LFxuICAgOnQgdCxcbiAgIDpmb3JtIGZvcm0sXG4gICA6dGFnICdmdW5jdGlvbixcbiAgIDpib2R5IChhbmFseXplIChhc3NvYyBlbnYgOmxvY2FscyBsb2NhbHMpIGJvZHkpfSkpXG4ifSB7OnN5bSBnZXRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW20gazAgazFdIFttIGswIGsxIGsyXSBbbSBrMCBrMSBrMiBrM11dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXRzXG4gKFttIGswIGsxXVxuICAobGV0XG4gICBbbSAoZ2V0IG0gazAgU0VOVElORUwpXVxuICAgKHdoZW4tbm90IChpZGVudGljYWw/IG0gU0VOVElORUwpIChnZXQgbSBrMSkpKSlcbiAoW20gazAgazEgazJdXG4gIChsZXRcbiAgIFttIChnZXQgbSBrMCBTRU5USU5FTCldXG4gICAod2hlbi1ub3RcbiAgICAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKVxuICAgIChsZXRcbiAgICAgW20gKGdldCBtIGsxIFNFTlRJTkVMKV1cbiAgICAgKHdoZW4tbm90IChpZGVudGljYWw/IG0gU0VOVElORUwpIChnZXQgbSBrMikpKSkpKVxuIChbbSBrMCBrMSBrMiBrM11cbiAgKGxldFxuICAgW20gKGdldCBtIGswIFNFTlRJTkVMKV1cbiAgICh3aGVuLW5vdFxuICAgIChpZGVudGljYWw/IG0gU0VOVElORUwpXG4gICAgKGxldFxuICAgICBbbSAoZ2V0IG0gazEgU0VOVElORUwpXVxuICAgICAod2hlbi1ub3RcbiAgICAgIChpZGVudGljYWw/IG0gU0VOVElORUwpXG4gICAgICAobGV0XG4gICAgICAgW20gKGdldCBtIGsyIFNFTlRJTkVMKV1cbiAgICAgICAod2hlbi1ub3QgKGlkZW50aWNhbD8gbSBTRU5USU5FTCkgKGdldCBtIGszKSkpKSkpKSkpXG4ifSB7OnN5bSBjaGVjay1yZW5hbWUtbWFjcm9zLWluZmVycmluZy1taXNzaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbmFtZSByZW5hbWVzXSwgOmFzIGFzdH0gZW52XSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNrLXJlbmFtZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmdcbiBbezprZXlzIFtuYW1lIHJlbmFtZXNdLCA6YXMgYXN0fSBlbnZdXG4gKGxldFxuICBbbWlzc2luZy1yZW5hbWVzXG4gICAod2hlblxuICAgIChhbmQgKmFuYWx5emUtZGVwcyogKHNlcSByZW5hbWVzKSlcbiAgICAobWlzc2luZy1yZW5hbWVzIHJlbmFtZXMgZW52KSlcbiAgIG1heWJlLW1hY3Jvc1xuICAgKGFwcGx5IGRpc3NvYyByZW5hbWVzIChrZXlzIG1pc3NpbmctcmVuYW1lcykpXG4gICBtaXNzaW5nLXJlbmFtZS1tYWNyb3NcbiAgIChpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIG1pc3NpbmctcmVuYW1lcyBlbnYpXG4gICByZW1vdmUtbWlzc2luZy1yZW5hbWVzXG4gICAoZm4qIFtwMV9fNDUwOTMjXSAoYXBwbHkgZGlzc29jIHAxX180NTA5MyMgKGtleXMgbWlzc2luZy1yZW5hbWVzKSkpXG4gICBhc3QnXG4gICAoLT5cbiAgICBhc3RcbiAgICAodXBkYXRlLWluXG4gICAgIFs6cmVuYW1lLW1hY3Jvc11cbiAgICAgKGZuKlxuICAgICAgW3AxX180NTA5NCNdXG4gICAgICAoLT5cbiAgICAgICBwMV9fNDUwOTQjXG4gICAgICAgKG1lcmdlIG1pc3NpbmctcmVuYW1lLW1hY3JvcylcbiAgICAgICAobWVyZ2UgKGluZmVycmVkLXJlbmFtZS1tYWNyb3MgbWF5YmUtbWFjcm9zIGVudikpKSkpXG4gICAgKHVwZGF0ZS1pbiBbOnJlbmFtZXNdIHJlbW92ZS1taXNzaW5nLXJlbmFtZXMpKV1cbiAgKHN3YXAhXG4gICBlbnYvKmNvbXBpbGVyKlxuICAgKGZuKlxuICAgIFtwMV9fNDUwOTUjXVxuICAgICgtPlxuICAgICBwMV9fNDUwOTUjXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5hbWUgOnJlbmFtZS1tYWNyb3NdXG4gICAgICBtZXJnZVxuICAgICAgKDpyZW5hbWUtbWFjcm9zIGFzdCcpKVxuICAgICAodXBkYXRlLWluXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDpyZW5hbWVzXVxuICAgICAgcmVtb3ZlLW1pc3NpbmctcmVuYW1lcykpKSlcbiAgYXN0JykpXG4ifSB7OnN5bSAqYWxsb3ctbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqYWxsb3ctbnMqIHRydWUpXG4ifSB7OnN5bSBhbmFseXplLWNvbnN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtY29uc3RcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbezprZXlzIFt0YWddfSAoYW5hbHl6ZSAoYXNzb2MgZW52IDpxdW90ZWQ/IHRydWUpIGZvcm0pXVxuICB7Om9wIDpjb25zdCxcbiAgIDplbnYgZW52LFxuICAgOmxpdGVyYWw/IHRydWUsXG4gICA6dmFsIGZvcm0sXG4gICA6dGFnIHRhZyxcbiAgIDpmb3JtIGZvcm19KSlcbiJ9IHs6c3ltIG11bmdlLWdvb2ctbW9kdWxlLWxpYiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tuYW1lXSBbbnMgbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZS1nb29nLW1vZHVsZS1saWJcbiAoW25hbWVdXG4gIChzdHJcbiAgIFwiZ29vZyRtb2R1bGUkXCJcbiAgIChtdW5nZVxuICAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpICNcIlsuXFwvXVwiICM/KDpjbGogXCJcXFxcJFwiIDpjbGpzIFwiJCRcIikpKSkpXG4gKFtucyBuYW1lXSAoc3RyIChtdW5nZSBucykgXCIuXCIgKG11bmdlLWdvb2ctbW9kdWxlLWxpYiBuYW1lKSkpKVxuIn0gezpzeW0gaW5mZXItaW52b2tlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB7ZiA6Zm4sIDprZXlzIFthcmdzXSwgOmFzIGV9XSl9LCA6c291cmNlICIoZGVmblxuIGluZmVyLWludm9rZVxuIFtlbnYge2YgOmZuLCA6a2V5cyBbYXJnc10sIDphcyBlfV1cbiAobGV0XG4gIFttZSAoYXNzb2MgKGZpbmQtbWF0Y2hpbmctbWV0aG9kIGYgYXJncykgOm9wIDpmbi1tZXRob2QpXVxuICAoaWYtc29tZVxuICAgW3JldC10YWcgKGluZmVyLXRhZyBlbnYgbWUpXVxuICAgcmV0LXRhZ1xuICAgKGxldFxuICAgIFt7OmtleXMgW2luZm9dfSBmXVxuICAgIChpZi1zb21lXG4gICAgIFtyZXQtdGFnXG4gICAgICAoaWZcbiAgICAgICAob3IgKHRydWU/ICg6Zm4tdmFyIGluZm8pKSAodHJ1ZT8gKDpqcy1mbi12YXIgaW5mbykpKVxuICAgICAgICg6cmV0LXRhZyBpbmZvKVxuICAgICAgICh3aGVuICg9ICdqcyAoOm5zIGluZm8pKSAnanMpKV1cbiAgICAgcmV0LXRhZ1xuICAgICBpbXBsL0FOWV9TWU0pKSkpKVxuIn0gezpzeW0gKmNsanMtc3RhdGljLWZucyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLXN0YXRpYy1mbnMqIGZhbHNlKVxuIn0gezpzeW0gYXJyYXktdHlwZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYXJyYXktdHlwZXNcbiAnI3tib29sZWFuIGZsb2F0cyBsb25ncyBvYmplY3RzIGFycmF5IGRvdWJsZXMgY2hhcnMgaW50cyBzaG9ydHMgYnl0ZXN9KVxuIn0gezpzeW0gKmNoZWNrLWFsaWFzLWR1cGVzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNoZWNrLWFsaWFzLWR1cGVzKiB0cnVlKVxuIn0gezpzeW0gbWFjcm8tbnMtbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG1hY3JvLW5zLW5hbWVcbiBbbmFtZV1cbiAobGV0XG4gIFtuYW1lLXN0ciAoc3RyIG5hbWUpXVxuICAoaWYtbm90XG4gICAjPyg6Y2xqICguZW5kc1dpdGggbmFtZS1zdHIgXCIkbWFjcm9zXCIpIDpjbGpzIChnc3RyaW5nL2VuZHNXaXRoIG5hbWUtc3RyIFwiJG1hY3Jvc1wiKSlcbiAgIChzeW1ib2wgKHN0ciBuYW1lLXN0ciBcIiRtYWNyb3NcIikpXG4gICBuYW1lKSkpXG4ifSB7OnN5bSAqcmVsb2FkLW1hY3JvcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpyZWxvYWQtbWFjcm9zKiBmYWxzZSlcbiJ9IHs6c3ltIGNvbXBpbGVyLW9wdGlvbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBjb21waWxlci1vcHRpb25zIFtdIChnZXQgQGVudi8qY29tcGlsZXIqIDpvcHRpb25zKSlcbiJ9IHs6c3ltIHJlc29sdmUtZXhpc3RpbmctdmFyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIHN5bSwgYSBzeW1ib2wsIHJlc29sdmUgYW4gZXhpc3RpbmcgdmFyLlxuICAgRW1pdHMgYSB3YXJuaW5nIGlmIG5vIHN1Y2ggdmFyIGV4aXN0cy4iLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtZXhpc3RpbmctdmFyXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhbiBleGlzdGluZyB2YXIuXFxuICAgRW1pdHMgYSB3YXJuaW5nIGlmIG5vIHN1Y2ggdmFyIGV4aXN0cy5cIlxuIFtlbnYgc3ltXVxuIChpZi1ub3RcbiAgKC0+IHN5bSBtZXRhIDpjbGpzLmFuYWx5emVyL25vLXJlc29sdmUpXG4gIChyZXNvbHZlLXZhciBlbnYgc3ltIGNvbmZpcm0tdmFyLWV4aXN0cylcbiAgKHJlc29sdmUtdmFyIGVudiBzeW0pKSlcbiJ9IHs6c3ltIHJlcXVpcmVkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVxdWlyZWQ/XG4gW25zIGVudl1cbiAob3JcbiAgKGNvbnRhaW5zPyAoc2V0ICh2YWxzIChnZXRzIGVudiA6bnMgOnJlcXVpcmVzKSkpIG5zKVxuICAoY29udGFpbnM/IChzZXQgKHZhbHMgKGdldHMgZW52IDpucyA6dXNlcykpKSBucykpKVxuIn0gezpzeW0gbm9kZS1saWtlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG5vZGUtbGlrZT9cbiAoW10gKG5vZGUtbGlrZT8gKGNvbXBpbGVyLW9wdGlvbnMpKSlcbiAoW29wdHNdIChhbmQgKD0gOm5vZGVqcyAoOnRhcmdldCBvcHRzKSkgKGZhbHNlPyAoOm5vZGVqcy1ydCBvcHRzKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLWludm9rZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IFtmICYgYXJncyA6YXMgZm9ybV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtaW52b2tlKlxuIFtlbnYgW2YgJiBhcmdzIDphcyBmb3JtXV1cbiAobGV0XG4gIFtlbnZlXG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxuICAgZmV4cHJcbiAgIChhbmFseXplIGVudmUgZilcbiAgIGFyZ2NcbiAgIChjb3VudCBhcmdzKVxuICAgZm4tdmFyP1xuICAgKG9yICgtPiBmZXhwciA6aW5mbyA6Zm4tdmFyKSAoLT4gZmV4cHIgOmluZm8gOmpzLWZuLXZhcikpXG4gICBrdz9cbiAgICg9ICdjbGpzLmNvcmUvS2V5d29yZCAoOnRhZyBmZXhwcikpXG4gICBjdXItbnNcbiAgICgtPiBlbnYgOm5zIDpuYW1lKVxuICAgSE8taW52b2tlP1xuICAgKGFuZFxuICAgIChib29sZWFuICpjbGpzLXN0YXRpYy1mbnMqKVxuICAgIChub3QgZm4tdmFyPylcbiAgICAobm90IChqcy10YWc/IGYpKVxuICAgIChub3Qga3c/KVxuICAgIChub3QgKGFuYWx5emVkPyBmKSkpXG4gICBiaW5kLWYtZXhwcj9cbiAgIChhbmQgSE8taW52b2tlPyAobm90IChzeW1ib2w/IGYpKSlcbiAgIGJpbmQtYXJncz9cbiAgIChhbmQgSE8taW52b2tlPyAobm90IChhbGwtdmFsdWVzPyBhcmdzKSkpXVxuICAod2hlblxuICAgZm4tdmFyP1xuICAgKGxldFxuICAgIFt7dmFyaWFkaWMgOnZhcmlhZGljPyxcbiAgICAgIDprZXlzIFttYXgtZml4ZWQtYXJpdHkgbWV0aG9kLXBhcmFtcyBuYW1lIG5zIG1hY3JvXX1cbiAgICAgKDppbmZvIGZleHByKV1cbiAgICAod2hlblxuICAgICAoYW5kXG4gICAgICAjPyg6Y2xqcyAobm90IChhbmQgKGdzdHJpbmcvZW5kc1dpdGggKHN0ciBjdXItbnMpIFwiJG1hY3Jvc1wiKSAoc3ltYm9sLWlkZW50aWNhbD8gY3VyLW5zIG5zKSAodHJ1ZT8gbWFjcm8pKSkpXG4gICAgICAoaW52YWxpZC1hcml0eT8gYXJnYyBtZXRob2QtcGFyYW1zIHZhcmlhZGljIG1heC1maXhlZC1hcml0eSkpXG4gICAgICh3YXJuaW5nIDpmbi1hcml0eSBlbnYgezpuYW1lIG5hbWUsIDphcmdjIGFyZ2N9KSkpKVxuICAod2hlblxuICAgKGFuZCBrdz8gKG5vdCAob3IgKD09IDEgYXJnYykgKD09IDIgYXJnYykpKSlcbiAgICh3YXJuaW5nIDpmbi1hcml0eSBlbnYgezpuYW1lIChmaXJzdCBmb3JtKSwgOmFyZ2MgYXJnY30pKVxuICAobGV0XG4gICBbZGVwcmVjYXRlZD9cbiAgICAoLT4gZmV4cHIgOmluZm8gOmRlcHJlY2F0ZWQpXG4gICAgbm8td2Fybj9cbiAgICAoLT4gZm9ybSBtZXRhIDpkZXByZWNhdGlvbi1ub3dhcm4pXVxuICAgKHdoZW5cbiAgICAoYW5kIChib29sZWFuIGRlcHJlY2F0ZWQ/KSAobm90IChib29sZWFuIG5vLXdhcm4/KSkpXG4gICAgKHdhcm5pbmcgOmZuLWRlcHJlY2F0ZWQgZW52IHs6ZmV4cHIgZmV4cHJ9KSkpXG4gICh3aGVuXG4gICAoc29tZT8gKC0+IGZleHByIDppbmZvIDp0eXBlKSlcbiAgICh3YXJuaW5nIDppbnZva2UtY3RvciBlbnYgezpmZXhwciBmZXhwcn0pKVxuICAoaWZcbiAgIChvciBiaW5kLWFyZ3M/IGJpbmQtZi1leHByPylcbiAgIChsZXRcbiAgICBbYXJnLXN5bXNcbiAgICAgKHdoZW4gYmluZC1hcmdzPyAodGFrZSBhcmdjIChyZXBlYXRlZGx5IGdlbnN5bSkpKVxuICAgICBmLXN5bVxuICAgICAod2hlbiBiaW5kLWYtZXhwcj8gKGdlbnN5bSBcImZleHByX19cIikpXG4gICAgIGJpbmRpbmdzXG4gICAgIChjb25kLT5cbiAgICAgIFtdXG4gICAgICBiaW5kLWFyZ3M/XG4gICAgICAoaW50byAoaW50ZXJsZWF2ZSBhcmctc3ltcyBhcmdzKSlcbiAgICAgIGJpbmQtZi1leHByP1xuICAgICAgKGNvbmogZi1zeW0gKGFuYWx5emVkIGYpKSlcbiAgICAgdGFnXG4gICAgICg6dGFnIChtZXRhIGZvcm0pKV1cbiAgICAoYW5hbHl6ZVxuICAgICBlbnZcbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9sZXQpXG4gICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS92ZWNcbiAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxIChjbG9qdXJlLmNvcmUvY29uY2F0IGJpbmRpbmdzKSkpKSlcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAod2l0aC1tZXRhXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKGFuYWx5emVkIChpZiBiaW5kLWYtZXhwcj8gZi1zeW0gZikpKVxuICAgICAgICAgICAgIChpZiBiaW5kLWFyZ3M/IGFyZy1zeW1zIGFyZ3MpKSkpXG4gICAgICAgICAgezp0YWcgdGFnfSkpKSkpKSlcbiAgIChsZXRcbiAgICBbYW5hLWV4cHJcbiAgICAgKGZuKiBbcDFfXzQ1MTExI10gKGFuYWx5emUgZW52ZSBwMV9fNDUxMTEjKSlcbiAgICAgYXJnZXhwcnNcbiAgICAgKG1hcHYgYW5hLWV4cHIgYXJncyldXG4gICAgKGlmXG4gICAgIChhbmRcbiAgICAgIChhbmQgKGtleXdvcmQ/IGYpIChuaWw/IChuYW1lc3BhY2UgZikpKVxuICAgICAgKD09IDEgKGNvdW50IGFyZ3MpKVxuICAgICAgKHJlY29yZC13aXRoLWZpZWxkPyAoOnRhZyAoZmlyc3QgYXJnZXhwcnMpKSAoc3ltYm9sIChuYW1lIGYpKSkpXG4gICAgIChsZXRcbiAgICAgIFtmaWVsZC1hY2Nlc3MtZm9ybSAobGlzdCogKHN5bWJvbCAoc3RyIFwiLi1cIiAobmFtZSBmKSkpIGFyZ3MpXVxuICAgICAgKG5vLXdhcm4gKGFuYWx5emUgZW52IGZpZWxkLWFjY2Vzcy1mb3JtKSkpXG4gICAgIHs6ZW52IGVudixcbiAgICAgIDpvcCA6aW52b2tlLFxuICAgICAgOmZvcm0gZm9ybSxcbiAgICAgIDpmbiBmZXhwcixcbiAgICAgIDphcmdzIGFyZ2V4cHJzLFxuICAgICAgOmNoaWxkcmVuIFs6Zm4gOmFyZ3NdfSkpKSkpXG4ifSB7OnN5bSAqY2hlY2tlZC1hcnJheXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2hlY2tlZC1hcnJheXMqIGZhbHNlKVxuIn0gezpzeW0gYXN0LWNoaWxkcmVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3QtY2hpbGRyZW5cbiBbYXN0XVxuIChtYXBjYXRcbiAgKGZuIFtjXSAobGV0IFtnIChnZXQgYXN0IGMpXSAoY29uZCAodmVjdG9yPyBnKSBnIGcgW2ddKSkpXG4gICg6Y2hpbGRyZW4gYXN0KSkpXG4ifSB7OnN5bSBsb2FkZWQtanMtbnM/LCA6bWV0YSB7OmRvYyAiQ2hlY2sgaWYgYSBKYXZhU2NyaXB0IG5hbWVzcGFjZSBoYXMgYmVlbiBsb2FkZWQuIEphdmFTY3JpcHQgdmFycyBhcmVcbiAgbm90IGN1cnJlbnRseSBjaGVja2VkLiIsIDphcmdsaXN0cyAoW2VudiBwcmVmaXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZGVkLWpzLW5zP1xuIFwiQ2hlY2sgaWYgYSBKYXZhU2NyaXB0IG5hbWVzcGFjZSBoYXMgYmVlbiBsb2FkZWQuIEphdmFTY3JpcHQgdmFycyBhcmVcXG4gIG5vdCBjdXJyZW50bHkgY2hlY2tlZC5cIlxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtlbnYgcHJlZml4XVxuICh3aGVuLW5vdFxuICAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBwcmVmaXgpXG4gIChsZXRcbiAgIFtucyAoOm5zIGVudildXG4gICAob3JcbiAgICAoc29tZT8gKGdldCAoOnJlcXVpcmVzIG5zKSBwcmVmaXgpKVxuICAgIChzb21lPyAoZ2V0ICg6aW1wb3J0cyBucykgcHJlZml4KSkpKSkpXG4ifSB7OnN5bSBhbmFseXplLXZlY3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXZlY3RvclxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtleHByLWVudlxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGl0ZW1zXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdiAoZm4qIFtwMV9fNDUxMTYjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDUxMTYjKSkgZm9ybSkpXVxuICAoYW5hbHl6ZS13cmFwLW1ldGFcbiAgIHs6b3AgOnZlY3RvcixcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDppdGVtcyBpdGVtcyxcbiAgICA6Y2hpbGRyZW4gWzppdGVtc10sXG4gICAgOnRhZyAnY2xqcy5jb3JlL0lWZWN0b3J9KSkpXG4ifSB7OnN5bSB1bndyYXAtcXVvdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBleHByfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bndyYXAtcXVvdGVcbiBbezprZXlzIFtvcF0sIDphcyBleHByfV1cbiAoaWZcbiAgIz8oOmNsaiAoPSBvcCA6cXVvdGUpIDpjbGpzIChrZXl3b3JkLWlkZW50aWNhbD8gb3AgOnF1b3RlKSlcbiAgKDpleHByIGV4cHIpXG4gIGV4cHIpKVxuIn0gezpzeW0gbmFtZXNwYWNlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBuYW1lc3BhY2VzXG4gIz8oOmNsaiAocmVpZnkgY2xvanVyZS5sYW5nLklEZXJlZiAoZGVyZWYgW19dIChpZiAoc29tZT8gZW52Lypjb21waWxlciopICg6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopKSBkZWZhdWx0LW5hbWVzcGFjZXMpKSkgOmNsanMgKHJlaWZ5IElEZXJlZiAoLWRlcmVmIFtfXSAoaWYgKHNvbWU/IGVudi8qY29tcGlsZXIqKSAoOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSkgZGVmYXVsdC1uYW1lc3BhY2VzKSkpKSlcbiJ9IHs6c3ltIGVsaWRlLWFuYWx5emVyLW1ldGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm4gZWxpZGUtYW5hbHl6ZXItbWV0YSBbbV0gKGRpc3NvYyBtIDpjbGpzLmFuYWx5emVyL2FuYWx5emVkKSlcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJvZHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGNvbnRleHQgZXhwcnMgcmVjdXItZnJhbWVzIGxvb3AtbGV0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1ib2R5XG4gW2VudiBjb250ZXh0IGV4cHJzIHJlY3VyLWZyYW1lcyBsb29wLWxldHNdXG4gKGJpbmRpbmdcbiAgWypyZWN1ci1mcmFtZXMqIHJlY3VyLWZyYW1lcyAqbG9vcC1sZXRzKiBsb29wLWxldHNdXG4gIChhbmFseXplLWxldC1ib2R5KiBlbnYgY29udGV4dCBleHBycykpKVxuIn0gezpzeW0gZXh0ZXJuLXByZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW0gY3VycmVudC1uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHRlcm4tcHJlXG4gW3N5bSBjdXJyZW50LW5zXVxuIChsZXRcbiAgW3ByZVxuICAgKGludG9cbiAgICAnW09iamVjdF1cbiAgICAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgc3ltKSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYykpXVxuICAod2hlbi1ub3RcbiAgIChoYXMtZXh0ZXJuPyBwcmUpXG4gICAoc3dhcCFcbiAgICBlbnYvKmNvbXBpbGVyKlxuICAgIHVwZGF0ZS1pblxuICAgIChpbnRvIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGN1cnJlbnQtbnMgOmV4dGVybnNdIHByZSlcbiAgICBtZXJnZVxuICAgIHt9KSlcbiAgcHJlKSlcbiJ9IHs6c3ltIGdldC1jb2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBlbnZdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1jb2wgW3ggZW52XSAob3IgKC0+IHggbWV0YSA6Y29sdW1uKSAoOmNvbHVtbiBlbnYpKSlcbiJ9IHs6c3ltIGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IG1hY3Jvcz8gc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBiYXNpYy12YWxpZGF0ZS1ucy1zcGVjXG4gW2VudiBtYWNyb3M/IHNwZWNdXG4gKHdoZW4tbm90XG4gIChvciAoc3ltYm9sPyBzcGVjKSAoc3RyaW5nPyBzcGVjKSAoc2VxdWVudGlhbD8gc3BlYykpXG4gICh0aHJvd1xuICAgKGVycm9yXG4gICAgZW52XG4gICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICBzcGVjXG4gICAgIFwiT25seSBbbGliLm5zICYgb3B0aW9uc10gYW5kIGxpYi5ucyBzcGVjcyBzdXBwb3J0ZWQgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSlcbiAod2hlblxuICAoc2VxdWVudGlhbD8gc3BlYylcbiAgKHdoZW4tbm90XG4gICAob3IgKHN5bWJvbD8gKGZpcnN0IHNwZWMpKSAoc3RyaW5nPyAoZmlyc3Qgc3BlYykpKVxuICAgKHRocm93XG4gICAgKGVycm9yXG4gICAgIGVudlxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICBzcGVjXG4gICAgICBcIkxpYnJhcnkgbmFtZSBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIHN5bWJvbCBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAod2hlbi1ub3RcbiAgIChvZGQ/IChjb3VudCBzcGVjKSlcbiAgICh0aHJvd1xuICAgIChlcnJvclxuICAgICBlbnZcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgc3BlY1xuICAgICAgXCJPbmx5IDphcyBhbGlhcywgOnJlZmVyIChuYW1lcykgYW5kIDpyZW5hbWUge2Zyb20gdG99IG9wdGlvbnMgc3VwcG9ydGVkIGluIDpyZXF1aXJlXCIpKSkpXG4gICh3aGVuLW5vdFxuICAgKGV2ZXJ5PyAjezphcyA6cmVuYW1lIDpyZWZlcn0gKG1hcCBmaXJzdCAocGFydGl0aW9uIDIgKG5leHQgc3BlYykpKSlcbiAgICh0aHJvd1xuICAgIChlcnJvclxuICAgICBlbnZcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgc3BlY1xuICAgICAgXCJPbmx5IDphcywgOnJlZmVyIGFuZCA6cmVuYW1lIG9wdGlvbnMgc3VwcG9ydGVkIGluIDpyZXF1aXJlIC8gOnJlcXVpcmUtbWFjcm9zXCIpKSkpXG4gICh3aGVuLW5vdFxuICAgKGxldFxuICAgIFtmcyAoZnJlcXVlbmNpZXMgKG5leHQgc3BlYykpXVxuICAgIChhbmQgKDw9IChmcyA6YXMgMCkgMSkgKDw9IChmcyA6cmVmZXIgMCkgMSkpKVxuICAgKHRocm93XG4gICAgKGVycm9yXG4gICAgIGVudlxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICBzcGVjXG4gICAgICBcIkVhY2ggb2YgOmFzIGFuZCA6cmVmZXIgb3B0aW9ucyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKSkpXG4ifSB7OnN5bSAqY2xqcy13YXJuaW5ncyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmNsanMtd2FybmluZ3MqXG4gezppbnZva2UtY3RvciB0cnVlLFxuICA6ZXh0ZW5kaW5nLWJhc2UtanMtdHlwZSB0cnVlLFxuICA6dW5zdXBwb3J0ZWQtcHJlcHJvY2Vzcy12YWx1ZSB0cnVlLFxuICA6cmVkZWYgdHJ1ZSxcbiAgOmpzLXNoYWRvd2VkLWJ5LWxvY2FsIHRydWUsXG4gIDp1bnN1cHBvcnRlZC1qcy1tb2R1bGUtdHlwZSB0cnVlLFxuICA6aW52YWxpZC1wcm90b2NvbC1zeW1ib2wgdHJ1ZSxcbiAgOnByaXZhdGUtdmFyLWFjY2VzcyB0cnVlLFxuICA6cHJvdG9jb2wtZHVwZWQtbWV0aG9kIHRydWUsXG4gIDptdW5nZWQtbmFtZXNwYWNlIHRydWUsXG4gIDpzaW5nbGUtc2VnbWVudC1uYW1lc3BhY2UgdHJ1ZSxcbiAgOmZuLWFyaXR5IHRydWUsXG4gIDppbmZlci13YXJuaW5nIGZhbHNlLFxuICA6dmFyaWFkaWMtbWF4LWFyaXR5IHRydWUsXG4gIDpwcm90b2NvbC13aXRoLXZhcmlhZGljLW1ldGhvZCB0cnVlLFxuICA6Zm4tZGVwcmVjYXRlZCB0cnVlLFxuICA6dW5kZWNsYXJlZC12YXIgdHJ1ZSxcbiAgOmRlY2xhcmVkLWFyZ2xpc3RzLW1pc21hdGNoIHRydWUsXG4gIDpwcmVhbWJsZS1taXNzaW5nIHRydWUsXG4gIDp1bmRlY2xhcmVkLXByb3RvY29sLXN5bWJvbCB0cnVlLFxuICA6cHJvdG9jb2wtd2l0aC1vdmVyd3JpdGluZy1tZXRob2QgdHJ1ZSxcbiAgOmR5bmFtaWMgdHJ1ZSxcbiAgOmludmFsaWQtYXJyYXktYWNjZXNzIHRydWUsXG4gIDp1bnByb3ZpZGVkIHRydWUsXG4gIDpucy12YXItY2xhc2ggdHJ1ZSxcbiAgOnVuZGVjbGFyZWQtbnMgdHJ1ZSxcbiAgOm5vbi1keW5hbWljLWVhcm11ZmZlZC12YXIgdHJ1ZSxcbiAgOnVuZGVjbGFyZWQtbnMtZm9ybSB0cnVlLFxuICA6aW52YWxpZC1hcml0aG1ldGljIHRydWUsXG4gIDpwcm90b2NvbC1kZXByZWNhdGVkIHRydWUsXG4gIDpmbi12YXIgdHJ1ZSxcbiAgOnByb3RvY29sLWltcGwtcmVjdXItd2l0aC10YXJnZXQgdHJ1ZSxcbiAgOm92ZXJsb2FkLWFyaXR5IHRydWUsXG4gIDpwcm90b2NvbC1tdWx0aXBsZS1pbXBscyB0cnVlLFxuICA6cmVkZWYtaW4tZmlsZSB0cnVlLFxuICA6cHJvdG9jb2wtaW52YWxpZC1tZXRob2QgdHJ1ZSxcbiAgOmV4dGVuZC10eXBlLWludmFsaWQtbWV0aG9kLXNoYXBlIHRydWUsXG4gIDptdWx0aXBsZS12YXJpYWRpYy1vdmVybG9hZHMgdHJ1ZSxcbiAgOnByb3RvY29sLWltcGwtd2l0aC12YXJpYWRpYy1tZXRob2QgdHJ1ZX0pXG4ifSB7OnN5bSBhbGlhcy0+dHlwZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhbGlhcy0+dHlwZVxuICd7b2JqZWN0IE9iamVjdCxcbiAgIHN0cmluZyBTdHJpbmcsXG4gICBudW1iZXIgTnVtYmVyLFxuICAgYXJyYXkgQXJyYXksXG4gICBmdW5jdGlvbiBGdW5jdGlvbixcbiAgIGJvb2xlYW4gQm9vbGVhbixcbiAgIHN5bWJvbCBTeW1ib2x9KVxuIn0gezpzeW0gYW5hbHl6ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBib29sZWFuIGlmIHRoZSBmb3JtIGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGFzIGFuYWx5emVkLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZWQ/XG4gXCJSZXR1cm5zIGJvb2xlYW4gaWYgdGhlIGZvcm0gaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgYXMgYW5hbHl6ZWQuXCJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbeF1cbiAoYm9vbGVhblxuICAoY29uZFxuICAgKHVuc29ydGVkLW1hcD8geClcbiAgICg6Y2xqcy5hbmFseXplci9hbmFseXplZCB4KVxuICAgOmVsc2VcbiAgICg6Y2xqcy5hbmFseXplci9hbmFseXplZCAobWV0YSB4KSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZGVwcywgOm1ldGEgezpkb2MgIkdpdmVuIGEgbGliLCBhIG5hbWVzcGFjZSwgZGVwcywgaXRzIGRlcGVuZGVuY2llcywgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxuICAgYW5kIG9wdHMsIGNvbXBpbGVyIG9wdGlvbnMgLSBhbmFseXplIGFsbCBvZiB0aGUgZGVwZW5kZW5jaWVzLiBSZXF1aXJlZCB0b1xuICAgY29ycmVjdGx5IGFuYWx5emUgdXNhZ2Ugb2Ygb3RoZXIgbmFtZXNwYWNlcy4iLCA6YXJnbGlzdHMgW1tsaWIgZGVwcyBlbnZdIFtsaWIgZGVwcyBlbnYgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWRlcHNcbiBcIkdpdmVuIGEgbGliLCBhIG5hbWVzcGFjZSwgZGVwcywgaXRzIGRlcGVuZGVuY2llcywgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxcbiAgIGFuZCBvcHRzLCBjb21waWxlciBvcHRpb25zIC0gYW5hbHl6ZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcy4gUmVxdWlyZWQgdG9cXG4gICBjb3JyZWN0bHkgYW5hbHl6ZSB1c2FnZSBvZiBvdGhlciBuYW1lc3BhY2VzLlwiXG4gKFtsaWIgZGVwcyBlbnZdXG4gIChhbmFseXplLWRlcHNcbiAgIGxpYlxuICAgZGVwc1xuICAgZW52XG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoOm9wdGlvbnMgQGVudi8qY29tcGlsZXIqKSkpKVxuIChbbGliIGRlcHMgZW52IG9wdHNdXG4gIChsZXRcbiAgIFtjb21waWxlciBAZW52Lypjb21waWxlcipdXG4gICAoYmluZGluZ1xuICAgIFsqY2xqcy1kZXAtc2V0KlxuICAgICAodmFyeS1tZXRhXG4gICAgICAoY29uaiAqY2xqcy1kZXAtc2V0KiBsaWIpXG4gICAgICB1cGRhdGUtaW5cbiAgICAgIFs6ZGVwLXBhdGhdXG4gICAgICBjb25qXG4gICAgICBsaWIpXVxuICAgIChhc3NlcnRcbiAgICAgKGV2ZXJ5P1xuICAgICAgKGZuKiBbcDFfXzQ1MDg5I10gKG5vdCAoY29udGFpbnM/ICpjbGpzLWRlcC1zZXQqIHAxX180NTA4OSMpKSlcbiAgICAgIGRlcHMpXG4gICAgIChzdHJcbiAgICAgIFwiQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCwgXCJcbiAgICAgIChhcHBseVxuICAgICAgIHN0clxuICAgICAgIChpbnRlcnBvc2VcbiAgICAgICAgXCIgLT4gXCJcbiAgICAgICAgKGNvbmpcbiAgICAgICAgICgtPiAqY2xqcy1kZXAtc2V0KiBtZXRhIDpkZXAtcGF0aClcbiAgICAgICAgIChzb21lICpjbGpzLWRlcC1zZXQqIGRlcHMpKSkpKSlcbiAgICAoZG9zZXFcbiAgICAgW2RlcCBkZXBzXVxuICAgICAod2hlbi1ub3RcbiAgICAgIChvclxuICAgICAgIChzb21lPyAoZ2V0LWluIGNvbXBpbGVyIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGRlcCA6ZGVmc10pKVxuICAgICAgIChub2RlLW1vZHVsZS1kZXA/IGRlcClcbiAgICAgICAoanMtbW9kdWxlLWV4aXN0cz8gKG5hbWUgZGVwKSlcbiAgICAgICAjPyg6Y2xqIChkZXBzL2ZpbmQtY2xhc3NwYXRoLWxpYiBkZXApKSlcbiAgICAgIChsZXRcbiAgICAgICBbaWR4XG4gICAgICAgICg6anMtZGVwZW5kZW5jeS1pbmRleCBjb21waWxlcilcbiAgICAgICAgZGVwXG4gICAgICAgICgtPiBkZXAgbGliJnN1YmxpYiBmaXJzdCldXG4gICAgICAgKGlmXG4gICAgICAgIChjb250YWlucz8gaWR4IChuYW1lIGRlcCkpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtkZXAtbmFtZSAobmFtZSBkZXApXVxuICAgICAgICAgKHdoZW5cbiAgICAgICAgICAoc3RyaW5nL3N0YXJ0cy13aXRoPyBkZXAtbmFtZSBcImdvb2cuXCIpXG4gICAgICAgICAgIz8oOmNsaiAobGV0IFtqcy1saWIgKGdldCBpZHggZGVwLW5hbWUpIG5zIChleHRlcm5zL2FuYWx5emUtZ29vZy1maWxlICg6ZmlsZSBqcy1saWIpIChzeW1ib2wgZGVwLW5hbWUpKV0gKHN3YXAhIGVudi8qY29tcGlsZXIqIHVwZGF0ZS1pbiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBkZXBdIG1lcmdlIG5zKSkpKSlcbiAgICAgICAgIz8oOmNsaiAoaWYtc29tZSBbc3JjIChsb2NhdGUtc3JjIGRlcCldIChhbmFseXplLWZpbGUgc3JjIG9wdHMpICh0aHJvdyAoZXJyb3IgZW52IChlcnJvci1tZXNzYWdlIDp1bmRlY2xhcmVkLW5zIHs6bnMtc3ltIGRlcCwgOmpzLXByb3ZpZGUgKG5hbWUgZGVwKX0pKSkpIDpjbGpzICh0aHJvdyAoZXJyb3IgZW52IChlcnJvci1tZXNzYWdlIDp1bmRlY2xhcmVkLW5zIHs6bnMtc3ltIGRlcCwgOmpzLXByb3ZpZGUgKG5hbWUgZGVwKX0pKSkpKSkpKSkpKSlcbiJ9IHs6c3ltIGFycmF5LXR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJyYXktdHlwZT9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbdF1cbiAoY29uZFxuICAobmlsPyB0KVxuICB0cnVlXG4gICg9ICdjbGotbmlsIHQpXG4gIHRydWVcbiAgKGpzLXRhZz8gdClcbiAgdHJ1ZVxuICAoPSAnYW55IHQpXG4gIHRydWVcbiAgKGNvbnRhaW5zPyBhcnJheS10eXBlcyB0KVxuICB0cnVlXG4gIDplbHNlXG4gIChib29sZWFuXG4gICAod2hlblxuICAgICM/KDpjbGogKHNldD8gdCkgOmNsanMgKGltcGwvY2xqcy1zZXQ/IHQpKVxuICAgIChvciAoY29udGFpbnM/IHQgJ2FueSkgKGNvbnRhaW5zPyB0ICdqcykgKHNvbWUgYXJyYXktdHlwZXMgdCkpKSkpKVxuIn0gezpzeW0gZG90dGVkLXN5bWJvbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltXSl9LCA6c291cmNlICIoZGVmblxuIGRvdHRlZC1zeW1ib2w/XG4gW3N5bV1cbiAobGV0XG4gIFtzIChzdHIgc3ltKV1cbiAgIz8oOmNsaiAoYW5kICguY29udGFpbnMgcyBcIi5cIikgKG5vdCAoLmNvbnRhaW5zIHMgXCIuLlwiKSkpIDpjbGpzIChhbmQgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIHMgXCIuXCIpIChub3QgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIHMgXCIuLlwiKSkpKSkpXG4ifSB7OnN5bSAqY2xqcy1tYWNyb3MtaXMtY2xhc3NwYXRoKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCogdHJ1ZSlcbiJ9IHs6c3ltICphbGxvdy1yZWRlZiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICphbGxvdy1yZWRlZiogZmFsc2UpXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZC1ib2R5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtIHJlY3VyLWZyYW1lc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWZuLW1ldGhvZC1ib2R5XG4gW2VudiBmb3JtIHJlY3VyLWZyYW1lc11cbiAoYmluZGluZyBbKnJlY3VyLWZyYW1lcyogcmVjdXItZnJhbWVzXSAoYW5hbHl6ZSBlbnYgZm9ybSkpKVxuIn0gezpzeW0gaW5mZXItdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgezprZXlzIFt0YWddLCA6YXMgYXN0fSBfXSl9LCA6c291cmNlICIoZGVmblxuIGluZmVyLXR5cGVcbiBbZW52IHs6a2V5cyBbdGFnXSwgOmFzIGFzdH0gX11cbiAoaWZcbiAgKG9yIChuaWw/IHRhZykgKD0gJ2Z1bmN0aW9uIHRhZykpXG4gIChpZlxuICAgKD0gOmZuICg6b3AgYXN0KSlcbiAgICh1cGRhdGVcbiAgICBhc3RcbiAgICA6bWV0aG9kc1xuICAgIChmblxuICAgICBbbXNdXG4gICAgIChpbnRvXG4gICAgICBbXVxuICAgICAgKG1hcCAoZm4qIFtwMV9fNDUxMjEjXSAoaW5mZXItdHlwZSBlbnYgcDFfXzQ1MTIxIyBfKSkpXG4gICAgICBtcykpKVxuICAgKGlmLXNvbWUgW3RhZyAoaW5mZXItdGFnIGVudiBhc3QpXSAoYXNzb2MgYXN0IDp0YWcgdGFnKSBhc3QpKVxuICBhc3QpKVxuIn0gezpzeW0gcGFyc2UtaW1wb3J0LXNwZWMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGRlcHMgc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1pbXBvcnQtc3BlY1xuIFtlbnYgZGVwcyBzcGVjXVxuICh3aGVuLW5vdFxuICAob3JcbiAgIChhbmQgKHNlcXVlbnRpYWw/IHNwZWMpIChldmVyeT8gc3ltYm9sPyBzcGVjKSlcbiAgIChhbmQgKHN5bWJvbD8gc3BlYykgKG5pbD8gKG5hbWVzcGFjZSBzcGVjKSkpKVxuICAodGhyb3dcbiAgIChlcnJvclxuICAgIGVudlxuICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgc3BlY1xuICAgICBcIk9ubHkgbGliLm5zLkN0b3Igb3IgW2xpYi5ucyBDdG9yKl0gc3BlYyBzdXBwb3J0ZWQgaW4gOmltcG9ydFwiKSkpKVxuIChsZXRcbiAgW2ltcG9ydC1tYXBcbiAgIChjb25kXG4gICAgKHNlcXVlbnRpYWw/IHNwZWMpXG4gICAgKC0+PlxuICAgICAocmVzdCBzcGVjKVxuICAgICAobWFwXG4gICAgICAoZm4qXG4gICAgICAgW3AxX180NTA5OCNdXG4gICAgICAgKHZlY3RvciBwMV9fNDUwOTgjIChzeW1ib2wgKHN0ciAoZmlyc3Qgc3BlYykgXCIuXCIgcDFfXzQ1MDk4IykpKSkpXG4gICAgIChpbnRvIHt9KSlcbiAgICAobm90ICg9PSAtMSAoLmluZGV4T2YgKHN0ciBzcGVjKSBcIi5cIikpKVxuICAgIHsoc3ltYm9sIChsYXN0IChzdHJpbmcvc3BsaXQgKHN0ciBzcGVjKSAjXCJcXC5cIikpKSBzcGVjfVxuICAgIDplbHNlXG4gICAge30pXVxuICAoZG9zZXEgW1tfIHNwZWNdIGltcG9ydC1tYXBdIChzd2FwISBkZXBzIGNvbmogc3BlYykpXG4gIHs6aW1wb3J0IGltcG9ydC1tYXAsIDpyZXF1aXJlIGltcG9ydC1tYXB9KSlcbiJ9IHs6c3ltIGNsai1ucy0+Y2xqcy1ucywgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3ltYm9sIHRoYXQgc3RhcnRzIHdpdGggY2xvanVyZSBhcyB0aGUgZmlyc3Qgc2VnbWVudCByZXR1cm4gdGhlXG4gICBzYW1lIHN5bWJvbCB3aXRoIHRoZSBmaXJzdCBzZWdtZW50IHJlcGxhY2VkIHdpdGggY2xqcyIsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGotbnMtPmNsanMtbnNcbiBcIkdpdmVuIGEgc3ltYm9sIHRoYXQgc3RhcnRzIHdpdGggY2xvanVyZSBhcyB0aGUgZmlyc3Qgc2VnbWVudCByZXR1cm4gdGhlXFxuICAgc2FtZSBzeW1ib2wgd2l0aCB0aGUgZmlyc3Qgc2VnbWVudCByZXBsYWNlZCB3aXRoIGNsanNcIlxuIFtzeW1dXG4gKGxldFxuICBbc2VncyAoc3RyaW5nL3NwbGl0IChjbG9qdXJlLmNvcmUvbmFtZSBzeW0pICNcIlxcLlwiKV1cbiAgKGlmXG4gICAoPSBcImNsb2p1cmVcIiAoZmlyc3Qgc2VncykpXG4gICAoc3ltYm9sIChzdHJpbmcvam9pbiBcIi5cIiAoY29ucyBcImNsanNcIiAobmV4dCBzZWdzKSkpKVxuICAgc3ltKSkpXG4ifSB7OnN5bSBjb25zdGFudC12YWx1ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBhc3R9XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnN0YW50LXZhbHVlP1xuIFt7OmtleXMgW29wXSwgOmFzIGFzdH1dXG4gKG9yXG4gICgjezpjb25zdCA6cXVvdGV9IG9wKVxuICAoYW5kXG4gICAoI3s6dmVjdG9yIDpzZXQgOm1hcH0gb3ApXG4gICAoZXZlcnk/IGNvbnN0YW50LXZhbHVlPyAoYXN0LWNoaWxkcmVuIGFzdCkpKSkpXG4ifSB7OnN5bSBkdW1wLXNwZWNzLCA6bWV0YSB7OmRvYyAiRHVtcHMgcmVnaXN0ZXJlZCBzcGVjZWQgdmFycyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UgaW50byB0aGUgY29tcGlsZXJcbiAgZW52aXJvbm1lbnQuIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZHVtcC1zcGVjc1xuIFwiRHVtcHMgcmVnaXN0ZXJlZCBzcGVjZWQgdmFycyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UgaW50byB0aGUgY29tcGlsZXJcXG4gIGVudmlyb25tZW50LlwiXG4gW25zXVxuIChsZXRcbiAgW3NwZWMtdmFycyAoZ2V0LXNwZWMtdmFycykgbnMtc3RyIChzdHIgbnMpXVxuICAoc3dhcCFcbiAgIGVudi8qY29tcGlsZXIqXG4gICB1cGRhdGUtaW5cbiAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zXVxuICAgbWVyZ2VcbiAgICh3aGVuLWxldFxuICAgIFtyZWdpc3RyeS1yZWYgKDpyZWdpc3RyeS1yZWYgc3BlYy12YXJzKV1cbiAgICB7OmNsanMuc3BlYy9yZWdpc3RyeS1yZWZcbiAgICAgKGludG9cbiAgICAgIFtdXG4gICAgICAoZmlsdGVyIChmbiBbW2sgX11dICg9IG5zLXN0ciAobmFtZXNwYWNlIGspKSkpXG4gICAgICBAQHJlZ2lzdHJ5LXJlZil9KVxuICAgKHdoZW4tbGV0XG4gICAgW3NwZWNlZC12YXJzICg6c3BlY2VkLXZhcnMgc3BlYy12YXJzKV1cbiAgICB7OmNsanMuc3BlYy9zcGVjZWQtdmFyc1xuICAgICAoaW50b1xuICAgICAgW11cbiAgICAgIChmaWx0ZXJcbiAgICAgICAoZm5cbiAgICAgICAgW3ZdXG4gICAgICAgIChvciAoPSBucy1zdHIgKG5hbWVzcGFjZSB2KSkgKD0gbnMgKC0+IHYgbWV0YSA6ZmRlZi1ucykpKSkpXG4gICAgICBAQHNwZWNlZC12YXJzKX0pKSkpXG4ifSB7OnN5bSAqZm4taW52b2tlLWRpcmVjdCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpmbi1pbnZva2UtZGlyZWN0KiBmYWxzZSlcbiJ9IHs6c3ltIHVzZS0+cmVxdWlyZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgW2xpYiAmIGZpbHRlcnMgOmFzIHNwZWNdXSl9LCA6c291cmNlICIoZGVmblxuIHVzZS0+cmVxdWlyZVxuIFtlbnYgW2xpYiAmIGZpbHRlcnMgOmFzIHNwZWNdXVxuICh3aGVuLW5vdFxuICAoYW5kIChzeW1ib2w/IGxpYikgKG9kZD8gKGNvdW50IHNwZWMpKSlcbiAgKHRocm93XG4gICAoZXJyb3JcbiAgICBlbnZcbiAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgIHNwZWNcbiAgICAgXCJPbmx5IFtsaWIubnMgOm9ubHkgKG5hbWVzKV0gYW5kIG9wdGlvbmFsbHkgYDpyZW5hbWUge2Zyb20gdG99YCBzcGVjcyBzdXBwb3J0ZWQgaW4gOnVzZSAvIDp1c2UtbWFjcm9zXCIpKSkpXG4gKGxvb3BcbiAgW2ZzIChzZXEgZmlsdGVycykgcmV0IFtsaWJdIGVyciBmYWxzZV1cbiAgKGNvbmRcbiAgICh0cnVlPyBlcnIpXG4gICAodGhyb3dcbiAgICAoZXJyb3JcbiAgICAgZW52XG4gICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgIHNwZWNcbiAgICAgIFwiT25seSBbbGliLm5zIDpvbmx5IChuYW1lcyldIGFuZCBvcHRpb25hbGx5IGA6cmVuYW1lIHtmcm9tIHRvfWAgc3BlY3Mgc3VwcG9ydGVkIGluIDp1c2UgLyA6dXNlLW1hY3Jvc1wiKSkpXG4gICAoc29tZT8gZnMpXG4gICAobGV0XG4gICAgW2t3IChmaXJzdCBmcykgb25seT8gKD0ga3cgOm9ubHkpXVxuICAgIChpZlxuICAgICAob3Igb25seT8gKD0ga3cgOnJlbmFtZSkpXG4gICAgIChpZlxuICAgICAgKHNvbWU/IChzb21lICN7KGlmIG9ubHk/IDpyZWZlciBrdyl9IHJldCkpXG4gICAgICAodGhyb3dcbiAgICAgICAoZXJyb3JcbiAgICAgICAgZW52XG4gICAgICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgICAgIHNwZWNcbiAgICAgICAgIFwiRWFjaCBvZiA6b25seSBhbmQgOnJlbmFtZSBvcHRpb25zIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIGluIDp1c2UgLyA6dXNlLW1hY3Jvc1wiKSkpXG4gICAgICAobGV0XG4gICAgICAgW3JlZnMgKHNlY29uZCBmcyldXG4gICAgICAgKGlmLW5vdFxuICAgICAgICAob3JcbiAgICAgICAgIChhbmQgb25seT8gKHNlcXVlbnRpYWw/IHJlZnMpIChldmVyeT8gc3ltYm9sPyByZWZzKSlcbiAgICAgICAgIChhbmRcbiAgICAgICAgICAoPSBrdyA6cmVuYW1lKVxuICAgICAgICAgIChtYXA/IHJlZnMpXG4gICAgICAgICAgKGV2ZXJ5P1xuICAgICAgICAgICAoZm4qIFtwMV9fNDUwOTcjXSAoZXZlcnk/IHN5bWJvbD8gcDFfXzQ1MDk3IykpXG4gICAgICAgICAgIHJlZnMpKSlcbiAgICAgICAgKHJlY3VyIGZzIHJldCB0cnVlKVxuICAgICAgICAocmVjdXJcbiAgICAgICAgIChubmV4dCBmcylcbiAgICAgICAgIChpbnRvIHJldCBbKGlmIG9ubHk/IDpyZWZlciBrdykgcmVmc10pXG4gICAgICAgICBmYWxzZSkpKSlcbiAgICAgKHJlY3VyIGZzIHJldCB0cnVlKSkpXG4gICA6ZWxzZVxuICAgKGlmIChzb21lPyAoc29tZSAjezpyZWZlcn0gcmV0KSkgcmV0IChyZWN1ciBmcyByZXQgdHJ1ZSkpKSkpXG4ifSB7OnN5bSBpbmZlcnJlZC11c2UtbWFjcm9zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3VzZS1tYWNyb3MgZW52XSl9LCA6c291cmNlICIoZGVmblxuIGluZmVycmVkLXVzZS1tYWNyb3NcbiBbdXNlLW1hY3JvcyBlbnZdXG4gKGxldFxuICBbY2VudiBAZW52Lypjb21waWxlcipdXG4gIChpbnRvXG4gICB7fVxuICAgKGZpbHRlclxuICAgIChmbiBbW3N5bSBsaWJdXSAobm90IChtaXNzaW5nLXVzZS1tYWNybz8gbGliIHN5bSkpKVxuICAgIHVzZS1tYWNyb3MpKSkpXG4ifSB7OnN5bSBhbmFseXplLXN5bWJvbCwgOm1ldGEgezpkb2MgIkZpbmRzIHRoZSB2YXIgYXNzb2NpYXRlZCB3aXRoIHN5bSIsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zeW1ib2xcbiBcIkZpbmRzIHRoZSB2YXIgYXNzb2NpYXRlZCB3aXRoIHN5bVwiXG4gW2VudiBzeW1dXG4gKGlmXG4gICg6cXVvdGVkPyBlbnYpXG4gIChkb1xuICAgKHJlZ2lzdGVyLWNvbnN0YW50ISBlbnYgc3ltKVxuICAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICAgezpvcCA6Y29uc3QsXG4gICAgIDp2YWwgc3ltLFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gc3ltLFxuICAgICA6dGFnICdjbGpzLmNvcmUvU3ltYm9sfSkpXG4gIChsZXRcbiAgIFt7OmtleXMgW2xpbmUgY29sdW1uXX1cbiAgICAobWV0YSBzeW0pXG4gICAgZW52XG4gICAgKGlmLW5vdCAobmlsPyBsaW5lKSAoYXNzb2MgZW52IDpsaW5lIGxpbmUpIGVudilcbiAgICBlbnZcbiAgICAoaWYtbm90IChuaWw/IGNvbHVtbikgKGFzc29jIGVudiA6Y29sdW1uIGNvbHVtbikgZW52KVxuICAgIHJldFxuICAgIHs6ZW52IGVudiwgOmZvcm0gc3ltfVxuICAgIGxjbHNcbiAgICAoOmxvY2FscyBlbnYpXVxuICAgKGlmLXNvbWVcbiAgICBbbGIgKGhhbmRsZS1zeW1ib2wtbG9jYWwgc3ltIChnZXQgbGNscyBzeW0pKV1cbiAgICAobWVyZ2VcbiAgICAgKGFzc29jIHJldCA6b3AgOmxvY2FsIDppbmZvIGxiKVxuICAgICAod2hlblxuICAgICAgKG1hcD8gbGIpXG4gICAgICAoc2VsZWN0LWtleXMgbGIgWzpuYW1lIDpsb2NhbCA6YXJnLWlkIDp2YXJpYWRpYz8gOmluaXRdKSkpXG4gICAgKGxldFxuICAgICBbc3ltLW1ldGFcbiAgICAgIChtZXRhIHN5bSlcbiAgICAgIHN5bS1uc1xuICAgICAgKG5hbWVzcGFjZSBzeW0pXG4gICAgICBjdXItbnNcbiAgICAgIChzdHIgKC0+IGVudiA6bnMgOm5hbWUpKVxuICAgICAgIz9AKDpjbGpzIFtzeW0gKGlmIChhbmQgc3ltLW5zIChub3Q9IHN5bS1ucyBcImNsanMuY29yZVwiKSAoZ3N0cmluZy9lbmRzV2l0aCBjdXItbnMgXCIkbWFjcm9zXCIpIChub3QgKGdzdHJpbmcvZW5kc1dpdGggc3ltLW5zIFwiJG1hY3Jvc1wiKSkgKD0gc3ltLW5zIChzdWJzIGN1ci1ucyAwICgtIChjb3VudCBjdXItbnMpIDcpKSkpIChzeW1ib2wgKHN0ciBzeW0tbnMgXCIkbWFjcm9zXCIpIChuYW1lIHN5bSkpIHN5bSldKVxuICAgICAgaW5mb1xuICAgICAgKGlmLW5vdFxuICAgICAgIChjb250YWlucz8gc3ltLW1ldGEgOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQpXG4gICAgICAgKHJlc29sdmUtZXhpc3RpbmctdmFyIGVudiBzeW0pXG4gICAgICAgKHJlc29sdmUtdmFyIGVudiBzeW0pKV1cbiAgICAgKGFzc2VydCAoOm9wIGluZm8pICg6b3AgaW5mbykpXG4gICAgIChkZXN1Z2FyLWRvdHRlZC1leHByXG4gICAgICAoaWYtbm90XG4gICAgICAgKHRydWU/ICg6ZGVmLXZhciBlbnYpKVxuICAgICAgIChtZXJnZVxuICAgICAgICAoYXNzb2MgcmV0IDppbmZvIGluZm8pXG4gICAgICAgIChzZWxlY3Qta2V5cyBpbmZvIFs6b3AgOm5hbWUgOm5zIDp0YWddKVxuICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgIFtjb25zdC1leHByICg6Y29uc3QtZXhwciBpbmZvKV1cbiAgICAgICAgIHs6Y29uc3QtZXhwciBjb25zdC1leHByfSkpXG4gICAgICAgKGxldFxuICAgICAgICBbaW5mbyAocmVzb2x2ZS12YXIgZW52IHN5bSldXG4gICAgICAgIChtZXJnZVxuICAgICAgICAgKGFzc29jIHJldCA6b3AgOnZhciA6aW5mbyBpbmZvKVxuICAgICAgICAgKHNlbGVjdC1rZXlzIGluZm8gWzpvcCA6bmFtZSA6bnMgOnRhZ10pKSkpKSkpKSkpXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZW52IHByZWZpeCBzdWZmaXhdIFtlbnYgcHJlZml4IHN1ZmZpeCBtaXNzaW5nLWZuXV19LCA6c291cmNlICIoZGVmblxuIGNvbmZpcm0tdmFyLWV4aXN0c1xuIChbZW52IHByZWZpeCBzdWZmaXhdXG4gIChsZXRcbiAgIFt3YXJuIChjb25maXJtLXZhci1leGlzdC13YXJuaW5nIGVudiBwcmVmaXggc3VmZml4KV1cbiAgIChjb25maXJtLXZhci1leGlzdHMgZW52IHByZWZpeCBzdWZmaXggd2FybikpKVxuIChbZW52IHByZWZpeCBzdWZmaXggbWlzc2luZy1mbl1cbiAgKGxldFxuICAgW3N1ZnN0clxuICAgIChzdHIgc3VmZml4KVxuICAgIHN1ZmZpeC1zdHJcbiAgICAoaWZcbiAgICAgKGFuZFxuICAgICAgIz8oOmNsaiAobm90PSBcIi4uXCIgc3Vmc3RyKSA6Y2xqcyAobm90IChpZGVudGljYWw/IFwiLi5cIiBzdWZzdHIpKSlcbiAgICAgICM/KDpjbGogKHJlLWZpbmQgI1wiXFwuXCIgc3Vmc3RyKSA6Y2xqcyAoLnRlc3QgI1wiXFwuXCIgc3Vmc3RyKSkpXG4gICAgIChmaXJzdCAoc3RyaW5nL3NwbGl0IHN1ZnN0ciAjXCJcXC5cIikpXG4gICAgIHN1ZmZpeClcbiAgICBzdWZmaXhcbiAgICAoc3ltYm9sIHN1ZmZpeC1zdHIpXVxuICAgKHdoZW5cbiAgICAoYW5kXG4gICAgIChub3QgKGltcGxpY2l0LWltcG9ydD8gZW52IHByZWZpeCBzdWZmaXgpKVxuICAgICAobm90IChsb2FkZWQtanMtbnM/IGVudiBwcmVmaXgpKVxuICAgICAobm90IChhbmQgKD0gJ2NsanMuY29yZSBwcmVmaXgpICg9ICd1bnF1b3RlIHN1ZmZpeCkpKVxuICAgICAobmlsP1xuICAgICAgKGdldHNcbiAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgcHJlZml4XG4gICAgICAgOmRlZnNcbiAgICAgICBzdWZmaXgpKVxuICAgICAobm90IChqcy1tb2R1bGUtZXhpc3RzPyBwcmVmaXgpKSlcbiAgICAobWlzc2luZy1mbiBlbnYgcHJlZml4IHN1ZmZpeCkpKSkpXG4ifSB7OnN5bSBhbmFseXplLWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWtleXdvcmRcbiBbZW52IHN5bV1cbiAocmVnaXN0ZXItY29uc3RhbnQhIGVudiBzeW0pXG4gezpvcCA6Y29uc3QsIDp2YWwgc3ltLCA6ZW52IGVudiwgOmZvcm0gc3ltLCA6dGFnICdjbGpzLmNvcmUvS2V5d29yZH0pXG4ifSB7OnN5bSBhbmFseXplLWxldC1iaW5kaW5ncywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbmNsLWVudiBiaW5kaW5ncyBvcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1iaW5kaW5nc1xuIFtlbmNsLWVudiBiaW5kaW5ncyBvcF1cbiAoZGlzYWxsb3dpbmctcmVjdXIgKGFuYWx5emUtbGV0LWJpbmRpbmdzKiBlbmNsLWVudiBiaW5kaW5ncyBvcCkpKVxuIn0gezpzeW0gbXVuZ2UtZ2xvYmFsLWV4cG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlLWdsb2JhbC1leHBvcnRcbiBbbmFtZV1cbiAoc3RyXG4gIFwiZ2xvYmFsJG1vZHVsZSRcIlxuICAobXVuZ2VcbiAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpICNcIlsuXFwvXVwiICM/KDpjbGogXCJcXFxcJFwiIDpjbGpzIFwiJCRcIikpKSkpXG4ifSB7OnN5bSAqbG9vcC1sZXRzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvb3AtbGV0cyogKCkpXG4ifSB7OnN5bSAtPnR5cGUtc2V0LCA6bWV0YSB7OmRvYyAiRW5zdXJlcyB0aGF0IGEgdHlwZSB0YWcgaXMgYSBzZXQuIiwgOmFyZ2xpc3RzIChbdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnR5cGUtc2V0XG4gXCJFbnN1cmVzIHRoYXQgYSB0eXBlIHRhZyBpcyBhIHNldC5cIlxuIFt0XVxuIChpZiAjPyg6Y2xqIChzZXQ/IHQpIDpjbGpzIChpbXBsL2NsanMtc2V0PyB0KSkgdCAje3R9KSlcbiJ9IHs6c3ltIGpzLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1twcmVdIFtwcmUgdGFnLXR5cGVdIFtwcmUgdGFnLXR5cGUgZXh0ZXJuc10gW3ByZSB0YWctdHlwZSBleHRlcm5zIHRvcF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy10YWdcbiAoW3ByZV0gKGpzLXRhZyBwcmUgOnRhZykpXG4gKFtwcmUgdGFnLXR5cGVdIChqcy10YWcgcHJlIHRhZy10eXBlIChnZXQtZXh0ZXJucykpKVxuIChbcHJlIHRhZy10eXBlIGV4dGVybnNdIChqcy10YWcgcHJlIHRhZy10eXBlIGV4dGVybnMgZXh0ZXJucykpXG4gKFtwcmUgdGFnLXR5cGUgZXh0ZXJucyB0b3BdXG4gICh3aGVuLWxldFxuICAgW1twIGV4dGVybnMnIDphcyBtZV0gKGZpbmQgZXh0ZXJucyAoZmlyc3QgcHJlKSldXG4gICAobGV0XG4gICAgW3RhZyAoLT4gcCBtZXRhIHRhZy10eXBlKV1cbiAgICAoaWZcbiAgICAgKD0gKGNvdW50IHByZSkgMSlcbiAgICAgKHdoZW4gdGFnIChzeW1ib2wgXCJqc1wiIChzdHIgKGFsaWFzLT50eXBlIHRhZyB0YWcpKSkpXG4gICAgIChvclxuICAgICAgKGpzLXRhZyAobmV4dCBwcmUpIHRhZy10eXBlIGV4dGVybnMnIHRvcClcbiAgICAgIChqcy10YWdcbiAgICAgICAoaW50byAnW3Byb3RvdHlwZV0gKG5leHQgcHJlKSlcbiAgICAgICB0YWctdHlwZVxuICAgICAgIChnZXQgdG9wIHRhZylcbiAgICAgICB0b3ApKSkpKSkpXG4ifSB7OnN5bSBqcy1yZXNlcnZlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBqcy1yZXNlcnZlZFxuICN7XCJ0eXBlb2ZcIlxuICAgXCJmbG9hdFwiXG4gICBcImltcGxlbWVudHNcIlxuICAgXCJlbHNlXCJcbiAgIFwiYm9vbGVhblwiXG4gICBcImFic3RyYWN0XCJcbiAgIFwiaW50XCJcbiAgIFwic3RhdGljXCJcbiAgIFwicGFja2FnZVwiXG4gICBcInRoaXNcIlxuICAgXCJhd2FpdFwiXG4gICBcInlpZWxkXCJcbiAgIFwiaW50ZXJmYWNlXCJcbiAgIFwidm9pZFwiXG4gICBcImRlbGV0ZVwiXG4gICBcImNsYXNzXCJcbiAgIFwiZXhwb3J0XCJcbiAgIFwidmFyXCJcbiAgIFwidHJ5XCJcbiAgIFwibG9uZ1wiXG4gICBcIm51bGxcIlxuICAgXCJyZXR1cm5cIlxuICAgXCJtZXRob2RzXCJcbiAgIFwibmF0aXZlXCJcbiAgIFwicHJpdmF0ZVwiXG4gICBcIm5ld1wiXG4gICBcImZvclwiXG4gICBcImNhdGNoXCJcbiAgIFwiZXh0ZW5kc1wiXG4gICBcInNob3J0XCJcbiAgIFwicHJvdGVjdGVkXCJcbiAgIFwidGhyb3dzXCJcbiAgIFwic3luY2hyb25pemVkXCJcbiAgIFwidHJhbnNpZW50XCJcbiAgIFwic3VwZXJcIlxuICAgXCJpZlwiXG4gICBcImxldFwiXG4gICBcImltcG9ydFwiXG4gICBcImNoYXJcIlxuICAgXCJzd2l0Y2hcIlxuICAgXCJjb25zdFwiXG4gICBcImNhc2VcIlxuICAgXCJicmVha1wiXG4gICBcInZvbGF0aWxlXCJcbiAgIFwiZnVuY3Rpb25cIlxuICAgXCJjb250aW51ZVwiXG4gICBcImZpbmFsXCJcbiAgIFwiZG9cIlxuICAgXCJkb3VibGVcIlxuICAgXCJ3aGlsZVwiXG4gICBcInB1YmxpY1wiXG4gICBcImFyZ3VtZW50c1wiXG4gICBcImRlYnVnZ2VyXCJcbiAgIFwid2l0aFwiXG4gICBcImluc3RhbmNlb2ZcIlxuICAgXCJkZWZhdWx0XCJcbiAgIFwidGhyb3dcIlxuICAgXCJnb3RvXCJcbiAgIFwiZmluYWxseVwiXG4gICBcImJ5dGVcIlxuICAgXCJjb25zdHJ1Y3RvclwiXG4gICBcImluXCJcbiAgIFwiZW51bVwifSlcbiJ9IHs6c3ltICpsb2FkLXRlc3RzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvYWQtdGVzdHMqIHRydWUpXG4ifSB7OnN5bSBjaGVjay11c2UtbWFjcm9zLWluZmVycmluZy1taXNzaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbmFtZSB1c2VzIHVzZS1tYWNyb3NdLCA6YXMgYXN0fSBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stdXNlLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZ1xuIFt7OmtleXMgW25hbWUgdXNlcyB1c2UtbWFjcm9zXSwgOmFzIGFzdH0gZW52XVxuIChsZXRcbiAgW21pc3NpbmctdXNlc1xuICAgKHdoZW4gKGFuZCAqYW5hbHl6ZS1kZXBzKiAoc2VxIHVzZXMpKSAobWlzc2luZy11c2VzIHVzZXMgZW52KSlcbiAgIG1heWJlLW1hY3Jvc1xuICAgKGFwcGx5IGRpc3NvYyB1c2VzIChrZXlzIG1pc3NpbmctdXNlcykpXG4gICByZW1vdmUtbWlzc2luZy11c2VzXG4gICAoZm4qIFtwMV9fNDUwOTAjXSAoYXBwbHkgZGlzc29jIHAxX180NTA5MCMgKGtleXMgbWlzc2luZy11c2VzKSkpXG4gICBhc3QnXG4gICAoLT5cbiAgICBhc3RcbiAgICAodXBkYXRlLWluXG4gICAgIFs6dXNlLW1hY3Jvc11cbiAgICAgKGZuKlxuICAgICAgW3AxX180NTA5MSNdXG4gICAgICAoLT5cbiAgICAgICBwMV9fNDUwOTEjXG4gICAgICAgKG1lcmdlIChjaGVjay11c2UtbWFjcm9zIHVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikpXG4gICAgICAgKG1lcmdlIChpbmZlcnJlZC11c2UtbWFjcm9zIG1heWJlLW1hY3JvcyBlbnYpKSkpKVxuICAgICh1cGRhdGUtaW4gWzp1c2VzXSByZW1vdmUtbWlzc2luZy11c2VzKSldXG4gIChzd2FwIVxuICAgZW52Lypjb21waWxlcipcbiAgIChmbipcbiAgICBbcDFfXzQ1MDkyI11cbiAgICAoLT5cbiAgICAgcDFfXzQ1MDkyI1xuICAgICAodXBkYXRlLWluXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDp1c2UtbWFjcm9zXVxuICAgICAgbWVyZ2VcbiAgICAgICg6dXNlLW1hY3JvcyBhc3QnKSlcbiAgICAgKHVwZGF0ZS1pblxuICAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbmFtZSA6dXNlc11cbiAgICAgIHJlbW92ZS1taXNzaW5nLXVzZXMpKSkpXG4gIGFzdCcpKVxuIn0gezpzeW0gY2Fub25pY2FsaXplLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYW5vbmljYWxpemUtdHlwZVxuIFt0XVxuIFwiRW5zdXJlcyB0aGF0IGEgdHlwZSB0YWcgaXMgZWl0aGVyIG5pbCwgYSB0eXBlIHN5bWJvbCwgb3IgYSBub24tc2luZ2xldG9uXFxuICBzZXQgb2YgdHlwZSBzeW1ib2xzLCBhYnNvcmJpbmcgY2xqLW5pbCBpbnRvIHNlcSBhbmQgYWxsIHR5cGVzIGludG8gYW55LlwiXG4gKGNvbmRcbiAgKHN5bWJvbD8gdClcbiAgdFxuICAoZW1wdHk/IHQpXG4gIG5pbFxuICAoPT0gMSAoY291bnQgdCkpXG4gIChmaXJzdCB0KVxuICAoY29udGFpbnM/IHQgJ2FueSlcbiAgJ2FueVxuICAoY29udGFpbnM/IHQgJ3NlcSlcbiAgKGxldCBbcmVzIChkaXNqIHQgJ2Nsai1uaWwpXSAoaWYgKD09IDEgKGNvdW50IHJlcykpICdzZXEgcmVzKSlcbiAgOmVsc2VcbiAgdCkpXG4ifSB7OnN5bSBtYWNyb2V4cGFuZC0xKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWNyb2V4cGFuZC0xKlxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtvcCAoZmlyc3QgZm9ybSldXG4gIChpZlxuICAgKGNvbnRhaW5zPyBzcGVjaWFscyBvcClcbiAgIChkb1xuICAgICh3aGVuXG4gICAgICg9ICducyBvcClcbiAgICAgKGRvLW1hY3JvZXhwYW5kLWNoZWNrXG4gICAgICBlbnZcbiAgICAgIGZvcm1cbiAgICAgIChnZXQtZXhwYW5kZXIgJ2NsanMuY29yZS9ucy1zcGVjaWFsLWZvcm0gZW52KSkpXG4gICAgZm9ybSlcbiAgIChpZi1zb21lXG4gICAgW21hYy12YXIgKHdoZW4gKHN5bWJvbD8gb3ApIChnZXQtZXhwYW5kZXIgb3AgZW52KSldXG4gICAgKCM/QCg6Y2xqIFtiaW5kaW5nIFsqbnMqIChjcmVhdGUtbnMgKmNsanMtbnMqKV1dIDpjbGpzIFtkb10pXG4gICAgIChkby1tYWNyb2V4cGFuZC1jaGVjayBlbnYgZm9ybSBtYWMtdmFyKVxuICAgICAobGV0XG4gICAgICBbZm9ybSdcbiAgICAgICAodHJ5XG4gICAgICAgICM/KDpjbGpzIChjaGVjay1tYWNyby1hcml0eSBtYWMtdmFyIGZvcm0pKVxuICAgICAgICAoYXBwbHkgQG1hYy12YXIgZm9ybSBlbnYgKHJlc3QgZm9ybSkpXG4gICAgICAgICM/KDpjbGogKGNhdGNoIEFyaXR5RXhjZXB0aW9uIGUgKHRocm93IChBcml0eUV4Y2VwdGlvbi4gKC0gKC5hY3R1YWwgZSkgMikgKC5uYW1lIGUpKSkpKVxuICAgICAgICAoY2F0Y2hcbiAgICAgICAgICM/KDpjbGogVGhyb3dhYmxlIDpjbGpzIDpkZWZhdWx0KVxuICAgICAgICAgZVxuICAgICAgICAgKHRocm93XG4gICAgICAgICAgKGV4LWluZm9cbiAgICAgICAgICAgbmlsXG4gICAgICAgICAgIChlcnJvci1kYXRhIGVudiA6bWFjcm9leHBhbnNpb24gKHZhci0+c3ltIG1hYy12YXIpKVxuICAgICAgICAgICBlKSkpKV1cbiAgICAgIChpZlxuICAgICAgICM/KDpjbGogKHNlcT8gZm9ybScpIDpjbGpzIChpbXBsL2NsanMtc2VxPyBmb3JtJykpXG4gICAgICAgKGxldFxuICAgICAgICBbc3ltJyAoZmlyc3QgZm9ybScpIHN5bSAoZmlyc3QgZm9ybSldXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoPSBzeW0nIChxdW90ZSBqcyopKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gc3ltJyBpbXBsL0pTX1NUQVJfU1lNKSlcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbc3ltXG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgKHNvbWU/IChuYW1lc3BhY2Ugc3ltKSlcbiAgICAgICAgICAgIHN5bVxuICAgICAgICAgICAgKHN5bWJvbCBcImNsanMuY29yZVwiIChzdHIgc3ltKSkpXG4gICAgICAgICAgIGpzLW9wXG4gICAgICAgICAgIHs6anMtb3Agc3ltfVxuICAgICAgICAgICBudW1lcmljXG4gICAgICAgICAgICM/KDpjbGogKC0+IG1hYy12YXIgbWV0YSA6Y2xqcy5hbmFseXplci9udW1lcmljKSA6Y2xqcyAobGV0IFttYWMtdmFyLW5zIChzeW1ib2wgKG5hbWVzcGFjZSAoLi1zeW0gbWFjLXZhcikpKSBtYWMtdmFyLW5hbWUgKHN5bWJvbCAobmFtZSAoLi1zeW0gbWFjLXZhcikpKV0gKGdldC1pbiAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBtYWMtdmFyLW5zIDpkZWZzIG1hYy12YXItbmFtZSA6bWV0YSA6Y2xqcy5hbmFseXplci9udW1lcmljXSkpKVxuICAgICAgICAgICBqcy1vcFxuICAgICAgICAgICAoaWYgKHRydWU/IG51bWVyaWMpIChhc3NvYyBqcy1vcCA6bnVtZXJpYyB0cnVlKSBqcy1vcCldXG4gICAgICAgICAgKHZhcnktbWV0YSBmb3JtJyBtZXJnZSBqcy1vcCkpXG4gICAgICAgICBmb3JtJykpXG4gICAgICAgZm9ybScpKSlcbiAgICAoaWZcbiAgICAgKHN5bWJvbD8gb3ApXG4gICAgIChsZXRcbiAgICAgIFtvcG5hbWUgKHN0ciBvcCldXG4gICAgICAoY29uZFxuICAgICAgIChpZGVudGljYWw/IFxcLiAjPyg6Y2xqIChmaXJzdCBvcG5hbWUpIDpjbGpzICguY2hhckF0IG9wbmFtZSAwKSkpXG4gICAgICAgKGxldFxuICAgICAgICBbW3RhcmdldCAmIGFyZ3NdIChuZXh0IGZvcm0pXVxuICAgICAgICAod2l0aC1tZXRhXG4gICAgICAgICAobGlzdCpcbiAgICAgICAgICAjPyg6Y2xqIChxdW90ZSAuKSA6Y2xqcyBpbXBsL0RPVF9TWU0pXG4gICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAgKHN5bWJvbCAoc3VicyBvcG5hbWUgMSkpXG4gICAgICAgICAgYXJncylcbiAgICAgICAgIChtZXRhIGZvcm0pKSlcbiAgICAgICAoaWRlbnRpY2FsP1xuICAgICAgICBcXC5cbiAgICAgICAgIz8oOmNsaiAobGFzdCBvcG5hbWUpIDpjbGpzICguY2hhckF0IG9wbmFtZSAoZGVjICguIG9wbmFtZSAtbGVuZ3RoKSkpKSlcbiAgICAgICAod2l0aC1tZXRhXG4gICAgICAgIChsaXN0KlxuICAgICAgICAgIz8oOmNsaiAocXVvdGUgbmV3KSA6Y2xqcyBpbXBsL05FV19TWU0pXG4gICAgICAgICAoc3ltYm9sIChzdWJzIG9wbmFtZSAwIChkZWMgKGNvdW50IG9wbmFtZSkpKSlcbiAgICAgICAgIChuZXh0IGZvcm0pKVxuICAgICAgICAobWV0YSBmb3JtKSlcbiAgICAgICA6ZWxzZVxuICAgICAgIGZvcm0pKVxuICAgICBmb3JtKSkpKSlcbiJ9IHs6c3ltIGNoZWNrLXVzZS1tYWNyb3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbdXNlLW1hY3JvcyBlbnZdIFt1c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnZdXX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stdXNlLW1hY3Jvc1xuIChbdXNlLW1hY3JvcyBlbnZdIChjaGVjay11c2UtbWFjcm9zIHVzZS1tYWNyb3MgbmlsIGVudikpXG4gKFt1c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnZdXG4gIChsZXRcbiAgIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgIChkb3NlcVxuICAgIFtbc3ltIGxpYl0gdXNlLW1hY3Jvc11cbiAgICAod2hlblxuICAgICAobWlzc2luZy11c2UtbWFjcm8/IGxpYiBzeW0pXG4gICAgICh0aHJvd1xuICAgICAgKGVycm9yXG4gICAgICAgZW52XG4gICAgICAgKGVycm9yLW1lc3NhZ2VcbiAgICAgICAgOnVuZGVjbGFyZWQtbnMtZm9ybVxuICAgICAgICB7OnR5cGUgXCJtYWNyb1wiLCA6bGliIGxpYiwgOnN5bSBzeW19KSkpKSlcbiAgIChjaGVjay11c2VzIChtaXNzaW5nLXVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikgZW52KVxuICAgKGluZmVycmVkLXVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikpKSlcbiJ9IHs6c3ltIGdldC1leHBhbmRlciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhIG1hY3JvLCBhbmQgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxuICAgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIENsb2p1cmUgbWFjcm9leHBhbmRlci4iLCA6YXJnbGlzdHMgKFtzeW0gZW52XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1leHBhbmRlclxuIFwiR2l2ZW4gYSBzeW0sIGEgc3ltYm9sIGlkZW50aWZ5aW5nIGEgbWFjcm8sIGFuZCBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50XFxuICAgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIENsb2p1cmUgbWFjcm9leHBhbmRlci5cIlxuIFtzeW0gZW52XVxuIChsZXRcbiAgW212YXIgKGdldC1leHBhbmRlciogc3ltIGVudildXG4gICh3aGVuXG4gICAoYW5kIChzb21lPyBtdmFyKSAjPyg6Y2xqICguaXNNYWNybyBtdmFyKSA6Y2xqcyAoLmlzTWFjcm8gbXZhcikpKVxuICAgbXZhcikpKVxuIn0gezpzeW0gYW5hbHl6ZS1qcy1zdGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBqc2Zvcm0gYXJncyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtanMtc3RhclxuIFtlbnYganNmb3JtIGFyZ3MgZm9ybV1cbiAoZGlzYWxsb3dpbmctcmVjdXIgKGFuYWx5emUtanMtc3RhciogZW52IGpzZm9ybSBhcmdzIGZvcm0pKSlcbiJ9IHs6c3ltIGpzLXN0YXItaW50ZXJwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzXSl9LCA6c291cmNlICIoZGVmblxuIGpzLXN0YXItaW50ZXJwXG4gW2VudiBzXVxuIChsZXRcbiAgW2lkeCAoLmluZGV4T2YgcyBcIn57XCIpXVxuICAoaWZcbiAgICg9PSAtMSBpZHgpXG4gICAobGlzdCBzKVxuICAgKGxldFxuICAgIFtlbmRcbiAgICAgKC5pbmRleE9mIHMgXCJ9XCIgaWR4KVxuICAgICBpbm5lclxuICAgICAoOm5hbWVcbiAgICAgIChyZXNvbHZlLWV4aXN0aW5nLXZhciBlbnYgKHN5bWJvbCAoc3VicyBzICgrIDIgaWR4KSBlbmQpKSkpXVxuICAgIChsYXp5LXNlcVxuICAgICAoY29uc1xuICAgICAgKHN1YnMgcyAwIGlkeClcbiAgICAgIChjb25zIGlubmVyIChqcy1zdGFyLWludGVycCBlbnYgKHN1YnMgcyAoaW5jIGVuZCkpKSkpKSkpKSlcbiJ9IHs6c3ltICpyZWN1ci1mcmFtZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVjdXItZnJhbWVzKiBuaWwpXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZHMtcGFzczIqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21lbnYgbG9jYWxzIHR5cGUgbWV0aHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyKlxuIFttZW52IGxvY2FscyB0eXBlIG1ldGhzXVxuIChtYXB2XG4gIChmbipcbiAgIFtwMV9fNDUwODMjXVxuICAgKGFuYWx5emUtZm4tbWV0aG9kIG1lbnYgbG9jYWxzIHAxX180NTA4MyMgdHlwZSB0cnVlKSlcbiAgbWV0aHMpKVxuIn0gezpzeW0gbWFjcm9leHBhbmQtMSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIGZvcm0sIGEgQ2xvanVyZVNjcmlwdCBmb3JtLFxuICAgbWFjcm9leHBhbmQgdGhlIGZvcm0gb25jZS4iLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWNyb2V4cGFuZC0xXG4gXCJHaXZlbiBhIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBmb3JtLCBhIENsb2p1cmVTY3JpcHQgZm9ybSxcXG4gICBtYWNyb2V4cGFuZCB0aGUgZm9ybSBvbmNlLlwiXG4gW2VudiBmb3JtXVxuICh3cmFwcGluZy1lcnJvcnMgZW52IChtYWNyb2V4cGFuZC0xKiBlbnYgZm9ybSkpKVxuIn0gezpzeW0gcmVzb2x2ZS1tYWNyby12YXIsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhIG1hY3JvLiIsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1tYWNyby12YXJcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBzeW0sIGEgc3ltYm9sLCByZXNvbHZlIGEgbWFjcm8uXCJcbiBbZW52IHN5bV1cbiAobGV0XG4gIFtuc1xuICAgKC0+IGVudiA6bnMgOm5hbWUpXG4gICBuYW1lc3BhY2VzXG4gICAoZ2V0IEBlbnYvKmNvbXBpbGVyKiA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzKV1cbiAgKGNvbmRcbiAgIChzb21lPyAobmFtZXNwYWNlIHN5bSkpXG4gICAobGV0XG4gICAgW25zXG4gICAgIChuYW1lc3BhY2Ugc3ltKVxuICAgICBuc1xuICAgICAoaWYgKD0gXCJjbG9qdXJlLmNvcmVcIiBucykgXCJjbGpzLmNvcmVcIiBucylcbiAgICAgZnVsbC1uc1xuICAgICAocmVzb2x2ZS1tYWNyby1ucy1hbGlhcyBlbnYgbnMpXG4gICAgICM/QCg6Y2xqcyBbZnVsbC1ucyAoaWYtbm90IChzdHJpbmcvZW5kcy13aXRoPyAoc3RyIGZ1bGwtbnMpIFwiJG1hY3Jvc1wiKSAoc3ltYm9sIChzdHIgZnVsbC1ucyBcIiRtYWNyb3NcIikpIGZ1bGwtbnMpXSldXG4gICAgIz8oOmNsaiAoZ2V0LWluIG5hbWVzcGFjZXMgW2Z1bGwtbnMgOm1hY3JvcyAoc3ltYm9sIChuYW1lIHN5bSkpXSkgOmNsanMgKGdldC1pbiBuYW1lc3BhY2VzIFtmdWxsLW5zIDpkZWZzIChzeW1ib2wgKG5hbWUgc3ltKSldKSkpXG4gICAoc29tZT8gKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6dXNlLW1hY3JvcyBzeW1dKSlcbiAgIChsZXRcbiAgICBbZnVsbC1ucyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDp1c2UtbWFjcm9zIHN5bV0pXVxuICAgIChnZXQtaW4gbmFtZXNwYWNlcyBbZnVsbC1ucyA6bWFjcm9zIHN5bV0pKVxuICAgKHNvbWU/IChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOnJlbmFtZS1tYWNyb3Mgc3ltXSkpXG4gICAobGV0XG4gICAgW3F1YWxpZmllZC1zeW1ib2xcbiAgICAgKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6cmVuYW1lLW1hY3JvcyBzeW1dKVxuICAgICBmdWxsLW5zXG4gICAgIChzeW1ib2wgKG5hbWVzcGFjZSBxdWFsaWZpZWQtc3ltYm9sKSlcbiAgICAgc3ltXG4gICAgIChzeW1ib2wgKG5hbWUgcXVhbGlmaWVkLXN5bWJvbCkpXVxuICAgIChnZXQtaW4gbmFtZXNwYWNlcyBbZnVsbC1ucyA6bWFjcm9zIHN5bV0pKVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbbnNcbiAgICAgKGNvbmRcbiAgICAgIChzb21lPyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDptYWNyb3Mgc3ltXSkpXG4gICAgICBuc1xuICAgICAgKGNvcmUtbmFtZT8gZW52IHN5bSlcbiAgICAgICM/KDpjbGogKHF1b3RlIGNsanMuY29yZSkgOmNsanMgaW1wbC9DTEpTX0NPUkVfTUFDUk9TX1NZTSkpXVxuICAgICh3aGVuXG4gICAgIChzb21lPyBucylcbiAgICAgIz8oOmNsaiAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDptYWNyb3Mgc3ltXSkgOmNsanMgKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6ZGVmcyBzeW1dKSkpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBpbml0IGxvb3AtbGV0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1iaW5kaW5nLWluaXRcbiBbZW52IGluaXQgbG9vcC1sZXRzXVxuIChiaW5kaW5nIFsqbG9vcC1sZXRzKiBsb29wLWxldHNdIChhbmFseXplIGVudiBpbml0KSkpXG4ifSB7OnN5bSBpbmZlci10YWcsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgZSwgYW4gQVNUIG5vZGUsIHJldHVybiB0aGUgaW5mZXJyZWRcbiAgIHR5cGUgb2YgdGhlIG5vZGUiLCA6YXJnbGlzdHMgKFtlbnYgZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlci10YWdcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBlLCBhbiBBU1Qgbm9kZSwgcmV0dXJuIHRoZSBpbmZlcnJlZFxcbiAgIHR5cGUgb2YgdGhlIG5vZGVcIlxuIFtlbnYgZV1cbiAoaWYtc29tZVxuICBbdGFnIChnZXQtdGFnIGUpXVxuICB0YWdcbiAgKGNhc2VcbiAgICg6b3AgZSlcbiAgIDpyZWN1clxuICAgaW1wbC9JR05PUkVfU1lNXG4gICA6dGhyb3dcbiAgIGltcGwvSUdOT1JFX1NZTVxuICAgOmxldFxuICAgKGluZmVyLXRhZyBlbnYgKDpib2R5IGUpKVxuICAgOmxvb3BcbiAgIChpbmZlci10YWcgZW52ICg6Ym9keSBlKSlcbiAgIDpkb1xuICAgKGluZmVyLXRhZyBlbnYgKDpyZXQgZSkpXG4gICA6Zm4tbWV0aG9kXG4gICAoaW5mZXItdGFnIGVudiAoOmJvZHkgZSkpXG4gICA6ZGVmXG4gICAoaW5mZXItdGFnIGVudiAoOmluaXQgZSkpXG4gICA6aW52b2tlXG4gICAoaW5mZXItaW52b2tlIGVudiBlKVxuICAgOmlmXG4gICAoaW5mZXItaWYgZW52IGUpXG4gICA6Y29uc3RcbiAgIChjYXNlXG4gICAgKDpmb3JtIGUpXG4gICAgdHJ1ZVxuICAgIGltcGwvQk9PTEVBTl9TWU1cbiAgICBmYWxzZVxuICAgIGltcGwvQk9PTEVBTl9TWU1cbiAgICBpbXBsL0FOWV9TWU0pXG4gICA6cXVvdGVcbiAgIChpbmZlci10YWcgZW52ICg6ZXhwciBlKSlcbiAgICg6dmFyIDpsb2NhbCA6anMtdmFyIDpiaW5kaW5nKVxuICAgKGlmLXNvbWVcbiAgICBbaW5pdCAoOmluaXQgZSldXG4gICAgKGluZmVyLXRhZyBlbnYgaW5pdClcbiAgICAoaW5mZXItdGFnIGVudiAoOmluZm8gZSkpKVxuICAgKDpob3N0LWZpZWxkIDpob3N0LWNhbGwpXG4gICBpbXBsL0FOWV9TWU1cbiAgIDpqc1xuICAgaW1wbC9BTllfU1lNXG4gICBuaWwpKSlcbiJ9IHs6c3ltIGNhbm9uaWNhbGl6ZS1pbXBvcnQtc3BlY3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2Fub25pY2FsaXplLWltcG9ydC1zcGVjc1xuIFtzcGVjc11cbiAobGV0Zm5cbiAgWyhjYW5vbmljYWxpemVcbiAgICBbcXVvdGVkLXNwZWMtb3Ita3ddXG4gICAgKGlmXG4gICAgIChrZXl3b3JkPyBxdW90ZWQtc3BlYy1vci1rdylcbiAgICAgcXVvdGVkLXNwZWMtb3Ita3dcbiAgICAgKHNlY29uZCBxdW90ZWQtc3BlYy1vci1rdykpKV1cbiAgKG1hcCBjYW5vbmljYWxpemUgc3BlY3MpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZm9ybS1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZm9ybXNdIFtmb3JtcyBvcHRzXSBbZm9ybXMgb3B0cyByZXR1cm4tbGFzdD9dXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1mb3JtLXNlcVxuIChbZm9ybXNdXG4gIChhbmFseXplLWZvcm0tc2VxXG4gICBmb3Jtc1xuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcbiAoW2Zvcm1zIG9wdHNdIChhbmFseXplLWZvcm0tc2VxIGZvcm1zIG9wdHMgZmFsc2UpKVxuIChbZm9ybXMgb3B0cyByZXR1cm4tbGFzdD9dXG4gIChsZXRcbiAgIFtlbnYgKGFzc29jIChlbXB0eS1lbnYpIDpidWlsZC1vcHRpb25zIG9wdHMpXVxuICAgKGJpbmRpbmdcbiAgICBbKmZpbGUtZGVmcypcbiAgICAgbmlsXG4gICAgICM/QCg6Y2xqIFsqdW5jaGVja2VkLWlmKiBmYWxzZSAqdW5jaGVja2VkLWFycmF5cyogZmFsc2VdKVxuICAgICAqY2xqcy1ucypcbiAgICAgJ2NsanMudXNlclxuICAgICAqY2xqcy1maWxlKlxuICAgICBuaWxcbiAgICAgcmVhZGVyLyphbGlhcy1tYXAqXG4gICAgIChvciByZWFkZXIvKmFsaWFzLW1hcCoge30pXVxuICAgIChsb29wXG4gICAgIFtucyBuaWwgZm9ybXMgZm9ybXMgbGFzdC1hc3QgbmlsXVxuICAgICAoaWZcbiAgICAgIChzb21lPyBmb3JtcylcbiAgICAgIChsZXRcbiAgICAgICBbZm9ybVxuICAgICAgICAoZmlyc3QgZm9ybXMpXG4gICAgICAgIGVudlxuICAgICAgICAoYXNzb2MgZW52IDpucyAoZ2V0LW5hbWVzcGFjZSAqY2xqcy1ucyopKVxuICAgICAgICBhc3RcbiAgICAgICAgKGFuYWx5emUgZW52IGZvcm0gbmlsIG9wdHMpXVxuICAgICAgIChpZlxuICAgICAgICAoPSAoOm9wIGFzdCkgOm5zKVxuICAgICAgICAocmVjdXIgKDpuYW1lIGFzdCkgKG5leHQgZm9ybXMpIGFzdClcbiAgICAgICAgKHJlY3VyIG5zIChuZXh0IGZvcm1zKSBhc3QpKSlcbiAgICAgIChpZiByZXR1cm4tbGFzdD8gbGFzdC1hc3QgbnMpKSkpKSkpXG4ifSB7OnN5bSBhbmFseXplLWxldC1ib2R5KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgY29udGV4dCBleHByc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1ib2R5KlxuIFtlbnYgY29udGV4dCBleHByc11cbiAoYW5hbHl6ZVxuICAoYXNzb2MgZW52IDpjb250ZXh0IChpZiAoPSA6ZXhwciBjb250ZXh0KSA6cmV0dXJuIGNvbnRleHQpKVxuICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAoY2xvanVyZS5jb3JlL3NlcVxuICAgIChjbG9qdXJlLmNvcmUvY29uY2F0IChjbG9qdXJlLmNvcmUvbGlzdCAnZG8pIGV4cHJzKSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtanMtc3RhciosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGpzZm9ybSBhcmdzIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1qcy1zdGFyKlxuIFtlbnYganNmb3JtIGFyZ3MgZm9ybV1cbiAobGV0XG4gIFtlbnZlXG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxuICAgZm9ybS1tZXRhXG4gICAobWV0YSBmb3JtKVxuICAgc2Vnc1xuICAgKGpzLXN0YXItc2VnIGpzZm9ybSlcbiAgIHRhZ1xuICAgKGdldC1qcy10YWcgZm9ybSlcbiAgIGpzLW9wXG4gICAoOmpzLW9wIGZvcm0tbWV0YSlcbiAgIGFyZ2V4cHJzXG4gICAoYW5hbHl6ZS1qcy1zdGFyLWFyZ3MganMtb3AgZW52ZSBhcmdzKVxuICAgbnVtZXJpY1xuICAgKDpudW1lcmljIGZvcm0tbWV0YSlcbiAgIHZhbGlkYXRlXG4gICAoZm5cbiAgICBbd2FybmluZy10eXBlIHZhbGlkLXR5cGVzP11cbiAgICAobGV0XG4gICAgIFt0eXBlc1xuICAgICAgKG1hcCAoZm4qIFtwMV9fNDUxMDgjXSAoaW5mZXItdGFnIGVudiBwMV9fNDUxMDgjKSkgYXJnZXhwcnMpXVxuICAgICAod2hlbi1ub3RcbiAgICAgICh2YWxpZC10eXBlcz8gdHlwZXMpXG4gICAgICAod2FybmluZ1xuICAgICAgIHdhcm5pbmctdHlwZVxuICAgICAgIGVudlxuICAgICAgIHs6anMtb3AganMtb3AsIDp0eXBlcyAoaW50byBbXSB0eXBlcyl9KSkpKVxuICAgb3AtbWF0Y2g/XG4gICAoZm5cbiAgICBbc3ltXVxuICAgICM/KDpjbGogKD0gc3ltICg6anMtb3AgZm9ybS1tZXRhKSkgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHN5bSAoOmpzLW9wIGZvcm0tbWV0YSkpKSldXG4gICh3aGVuXG4gICAodHJ1ZT8gbnVtZXJpYylcbiAgICh2YWxpZGF0ZVxuICAgIDppbnZhbGlkLWFyaXRobWV0aWNcbiAgICAoZm4qIFtwMV9fNDUxMDkjXSAoZXZlcnk/IG51bWVyaWMtdHlwZT8gcDFfXzQ1MTA5IykpKSlcbiAgezphcmdzIGFyZ2V4cHJzLFxuICAgOmNoaWxkcmVuIFs6YXJnc10sXG4gICA6bnVtZXJpYyBudW1lcmljLFxuICAgOnNlZ3Mgc2VncyxcbiAgIDpvcCA6anMsXG4gICA6ZW52IGVudixcbiAgIDpqcy1vcCBqcy1vcCxcbiAgIDpmb3JtIGZvcm0sXG4gICA6dGFnIHRhZ30pKVxuIn0gezpzeW0gaW5mZXJyZWQtcmVuYW1lLW1hY3JvcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5hbWUtbWFjcm9zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlcnJlZC1yZW5hbWUtbWFjcm9zXG4gW3JlbmFtZS1tYWNyb3MgZW52XVxuIChpbnRvXG4gIHt9XG4gIChmaWx0ZXJcbiAgIChmbiBbW18gcXVhbGlmaWVkLXN5bV1dIChub3QgKG1pc3NpbmctcmVuYW1lLW1hY3JvPyBxdWFsaWZpZWQtc3ltKSkpXG4gICByZW5hbWUtbWFjcm9zKSkpXG4ifSB7OnN5bSBwYXJzZS1ucy1lcnJvci1tc2csIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBtc2ddKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtbnMtZXJyb3ItbXNnXG4gW3NwZWMgbXNnXVxuIChzdHIgbXNnIFwiOyBvZmZlbmRpbmcgc3BlYzogXCIgKHByLXN0ciBzcGVjKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXVzZS1tYWNybz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGliIHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXVzZS1tYWNybz9cbiBbbGliIHN5bV1cbiAod2hlblxuICAoc3ltYm9sPyBsaWIpXG4gIChsZXRcbiAgIFt0aGUtbnMgIz8oOmNsaiAoZmluZC1ucyBsaWIpIDpjbGpzIChmaW5kLW1hY3Jvcy1ucyBsaWIpKV1cbiAgIChvciAobmlsPyB0aGUtbnMpIChuaWw/ICguZmluZEludGVybmVkVmFyIHRoZS1ucyBzeW0pKSkpKSlcbiJ9IHs6c3ltIHJlY29yZC1ucytuYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVjb3JkLW5zK25hbWVcbiBbeF1cbiAobWFwXG4gIHN5bWJvbFxuICAjPyg6Y2xqICgoanV4dCAoY29tcCAoZm4qIFtwMV9fNDUxMjAjXSAoc3RyaW5nL2pvaW4gXCIuXCIgcDFfXzQ1MTIwIykpIGJ1dGxhc3QpIGxhc3QpIChzdHJpbmcvc3BsaXQgKC5nZXROYW1lICh0eXBlIHgpKSAjXCJcXC5cIikpIDpjbGpzIChzdHJpbmcvc3BsaXQgKHByLXN0ciAodHlwZSB4KSkgI1wiL1wiKSkpKVxuIn0gezpzeW0gYW5hbHl6ZWQsIDptZXRhIHs6ZG9jICJNYXJrIGEgZm9ybSBhcyBiZWluZyBhbmFseXplZC4gQXNzdW1lcyB4IHNhdGlzZmllcyBJTWV0YS4gVXNlZnVsIHRvIHN1cHByZXNzXG4gIHdhcm5pbmdzIHRoYXQgd2lsbCBoYXZlIGJlZW4gY2F1Z2h0IGJ5IGEgZmlyc3QgY29tcGlsZXIgcGFzcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emVkXG4gXCJNYXJrIGEgZm9ybSBhcyBiZWluZyBhbmFseXplZC4gQXNzdW1lcyB4IHNhdGlzZmllcyBJTWV0YS4gVXNlZnVsIHRvIHN1cHByZXNzXFxuICB3YXJuaW5ncyB0aGF0IHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBieSBhIGZpcnN0IGNvbXBpbGVyIHBhc3MuXCJcbiBbeF1cbiAoY29uZFxuICAodW5zb3J0ZWQtbWFwPyB4KVxuICAoYXNzb2MgeCA6Y2xqcy5hbmFseXplci9hbmFseXplZCB0cnVlKVxuICA6ZWxzZVxuICAodmFyeS1tZXRhIHggYXNzb2MgOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgdHJ1ZSkpKVxuIn0gezpzeW0gcmVzb2x2ZS1zeW1ib2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtc3ltYm9sXG4gW3N5bV1cbiAoaWZcbiAgKGFuZCAobm90IChuYW1lc3BhY2Ugc3ltKSkgKGRvdHRlZC1zeW1ib2w/IHN5bSkpXG4gIHN5bVxuICAoOm5hbWVcbiAgIChiaW5kaW5nXG4gICAgWypwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiB0cnVlXVxuICAgIChyZXNvbHZlLXZhclxuICAgICAoYXNzb2MgQGVudi8qY29tcGlsZXIqIDpucyAoZ2V0LW5hbWVzcGFjZSAqY2xqcy1ucyopKVxuICAgICBzeW0pKSkpKVxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmFtZXMgZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctcmVuYW1lc1xuIFtyZW5hbWVzIGVudl1cbiAobGV0XG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgKGludG9cbiAgIHt9XG4gICAoZmlsdGVyXG4gICAgKGZuIFtbXyBxdWFsaWZpZWQtc3ltXV0gKG1pc3NpbmctcmVuYW1lPyBxdWFsaWZpZWQtc3ltIGNlbnYpKVxuICAgIHJlbmFtZXMpKSkpXG4ifSB7OnN5bSBkZWZhdWx0LXBhc3NlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBkZWZhdWx0LXBhc3Nlc1xuICM/KDpjbGogW2luZmVyLXR5cGUgYW5kLW9yL29wdGltaXplIGNoZWNrLWludm9rZS1hcmctdHlwZXMgbnMtc2lkZS1lZmZlY3RzXSA6Y2xqcyBbaW5mZXItdHlwZSBhbmQtb3Ivb3B0aW1pemUgY2hlY2staW52b2tlLWFyZy10eXBlc10pKVxuIn0gezpzeW0gKmNsanMtbWFjcm9zLXBhdGgqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1tYWNyb3MtcGF0aCogXCIvY2xqcy9jb3JlXCIpXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdC13YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBwcmVmaXggc3VmZml4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbmZpcm0tdmFyLWV4aXN0LXdhcm5pbmdcbiBbZW52IHByZWZpeCBzdWZmaXhdXG4gKGZuXG4gIFtlbnYgcHJlZml4IHN1ZmZpeF1cbiAgKHdhcm5pbmdcbiAgIDp1bmRlY2xhcmVkLXZhclxuICAgZW52XG4gICB7OnByZWZpeCBwcmVmaXgsXG4gICAgOnN1ZmZpeCBzdWZmaXgsXG4gICAgOm1hY3JvLXByZXNlbnQ/XG4gICAgKG5vdFxuICAgICAobmlsPyAoZ2V0LWV4cGFuZGVyIChzeW1ib2wgKHN0ciBwcmVmaXgpIChzdHIgc3VmZml4KSkgZW52KSkpfSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWFycmF5cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtYXJyYXlzPyBbXSAqdW5jaGVja2VkLWFycmF5cyopXG4ifSB7OnN5bSBhbmFseXplLWRvdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgdGFyZ2V0IGZpZWxkIG1lbWJlcisgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWRvdFxuIFtlbnYgdGFyZ2V0IGZpZWxkIG1lbWJlcisgZm9ybV1cbiAobGV0XG4gIFt2XG4gICBbdGFyZ2V0IGZpZWxkIG1lbWJlcitdXG4gICB7OmtleXMgW2RvdC1hY3Rpb24gdGFyZ2V0IG1ldGhvZCBmaWVsZCBhcmdzXX1cbiAgIChidWlsZC1kb3QtZm9ybSB2KVxuICAgZW52ZVxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIHRhcmdldGV4cHJcbiAgIChhbmFseXplIGVudmUgdGFyZ2V0KVxuICAgZm9ybS1tZXRhXG4gICAobWV0YSBmb3JtKVxuICAgdGFyZ2V0LXRhZ1xuICAgKDp0YWcgdGFyZ2V0ZXhwcilcbiAgIHByb3BcbiAgIChvciBmaWVsZCBtZXRob2QpXG4gICB0YWdcbiAgIChvclxuICAgICg6dGFnIGZvcm0tbWV0YSlcbiAgICAoYW5kXG4gICAgIChqcy10YWc/IHRhcmdldC10YWcpXG4gICAgICh2YXJ5LW1ldGFcbiAgICAgIChub3JtYWxpemUtanMtdGFnIHRhcmdldC10YWcpXG4gICAgICB1cGRhdGUtaW5cbiAgICAgIFs6cHJlZml4XVxuICAgICAgKGZuaWwgY29uaiAnW09iamVjdF0pXG4gICAgICBwcm9wKSlcbiAgICBuaWwpXVxuICAod2hlblxuICAgKGFuZFxuICAgIChub3Q9ICdjb25zdHJ1Y3RvciBwcm9wKVxuICAgIChub3QgKHN0cmluZy9zdGFydHMtd2l0aD8gKHN0ciBwcm9wKSBcImNsanMkXCIpKVxuICAgIChub3QgKC0+IHByb3AgbWV0YSA6cHJvdG9jb2wtcHJvcCkpKVxuICAgKHdoZW5cbiAgICAoPSAnT2JqZWN0IChmaXJzdCAoLT4gdGFnIG1ldGEgOnByZWZpeCkpKVxuICAgICh3YXJuaW5nXG4gICAgIDppbmZlci13YXJuaW5nXG4gICAgIGVudlxuICAgICB7Ondhcm4tdHlwZSA6b2JqZWN0LCA6Zm9ybSBmb3JtLCA6cHJvcGVydHkgcHJvcH0pKVxuICAgKHdoZW5cbiAgICAobm90PSAnanMgdGFyZ2V0LXRhZylcbiAgICAod2hlblxuICAgICAob3IgKG5pbD8gdGFyZ2V0LXRhZykgKCcje2FueX0gdGFyZ2V0LXRhZykpXG4gICAgICh3YXJuaW5nXG4gICAgICA6aW5mZXItd2FybmluZ1xuICAgICAgZW52XG4gICAgICB7Ondhcm4tdHlwZSA6dGFyZ2V0LCA6Zm9ybSBmb3JtLCA6cHJvcGVydHkgcHJvcH0pKVxuICAgIChsZXRcbiAgICAgW1twcmUnIHByZV0gKChqdXh0IGJ1dGxhc3QgaWRlbnRpdHkpICgtPiB0YWcgbWV0YSA6cHJlZml4KSldXG4gICAgICh3aGVuXG4gICAgICAoYW5kIChoYXMtZXh0ZXJuPyBwcmUnKSAobm90IChoYXMtZXh0ZXJuPyBwcmUpKSlcbiAgICAgICh3YXJuaW5nXG4gICAgICAgOmluZmVyLXdhcm5pbmdcbiAgICAgICBlbnZcbiAgICAgICB7Ondhcm4tdHlwZSA6cHJvcGVydHksXG4gICAgICAgIDpmb3JtIGZvcm0sXG4gICAgICAgIDp0eXBlXG4gICAgICAgIChzeW1ib2xcbiAgICAgICAgIFwianNcIlxuICAgICAgICAgKHN0cmluZy9qb2luXG4gICAgICAgICAgXCIuXCJcbiAgICAgICAgICAoY29uZC0+IHByZScgKD0gJ3Byb3RvdHlwZSAobGFzdCBwcmUnKSkgYnV0bGFzdCkpKSxcbiAgICAgICAgOnByb3BlcnR5IHByb3B9KSkpKSlcbiAgKHdoZW5cbiAgIChqcy10YWc/IHRhZylcbiAgIChsZXRcbiAgICBbcHJlICgtPiB0YWcgbWV0YSA6cHJlZml4KV1cbiAgICAod2hlbi1ub3RcbiAgICAgKGhhcy1leHRlcm4/IHByZSlcbiAgICAgKHN3YXAhXG4gICAgICBlbnYvKmNvbXBpbGVyKlxuICAgICAgdXBkYXRlLWluXG4gICAgICAoaW50b1xuICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZXh0ZXJuc11cbiAgICAgICBwcmUpXG4gICAgICBtZXJnZVxuICAgICAge30pKSkpXG4gIChjYXNlXG4gICBkb3QtYWN0aW9uXG4gICA6Y2xqcy5hbmFseXplci9hY2Nlc3NcbiAgIChsZXRcbiAgICBbY2hpbGRyZW4gWzp0YXJnZXRdXVxuICAgIHs6b3AgOmhvc3QtZmllbGQsXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6dGFyZ2V0IHRhcmdldGV4cHIsXG4gICAgIDpmaWVsZCBmaWVsZCxcbiAgICAgOmNoaWxkcmVuIGNoaWxkcmVuLFxuICAgICA6dGFnXG4gICAgIChpZlxuICAgICAgKGpzLXRhZz8gdGFnKVxuICAgICAgKG9yIChqcy10YWcgKC0+IHRhZyBtZXRhIDpwcmVmaXgpIDp0YWcpIHRhZylcbiAgICAgIHRhZyl9KVxuICAgOmNsanMuYW5hbHl6ZXIvY2FsbFxuICAgKGxldFxuICAgIFthcmdleHByc1xuICAgICAobWFwdiAoZm4qIFtwMV9fNDUxMDcjXSAoYW5hbHl6ZSBlbnZlIHAxX180NTEwNyMpKSBhcmdzKVxuICAgICBjaGlsZHJlblxuICAgICBbOnRhcmdldCA6YXJnc11dXG4gICAgezpvcCA6aG9zdC1jYWxsLFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOnRhcmdldCB0YXJnZXRleHByLFxuICAgICA6bWV0aG9kIG1ldGhvZCxcbiAgICAgOmFyZ3MgYXJnZXhwcnMsXG4gICAgIDpjaGlsZHJlbiBjaGlsZHJlbixcbiAgICAgOnRhZ1xuICAgICAoaWZcbiAgICAgIChqcy10YWc/IHRhZylcbiAgICAgIChvciAoanMtdGFnICgtPiB0YWcgbWV0YSA6cHJlZml4KSA6cmV0LXRhZykgJ2pzKVxuICAgICAgdGFnKX0pKSkpXG4ifSB7OnN5bSBhbmFseXplLWRvLXN0YXRlbWVudHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGV4cHJzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZG8tc3RhdGVtZW50c1xuIFtlbnYgZXhwcnNdXG4gKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplLWRvLXN0YXRlbWVudHMqIGVudiBleHBycykpKVxuIn0gezpzeW0gZ2V0LWxpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBlbnZdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1saW5lIFt4IGVudl0gKG9yICgtPiB4IG1ldGEgOmxpbmUpICg6bGluZSBlbnYpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZG8tc3RhdGVtZW50cyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGV4cHJzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZG8tc3RhdGVtZW50cypcbiBbZW52IGV4cHJzXVxuIChtYXB2XG4gIChmbipcbiAgIFtwMV9fNDUwODUjXVxuICAgKGFuYWx5emUgKGFzc29jIGVudiA6Y29udGV4dCA6c3RhdGVtZW50KSBwMV9fNDUwODUjKSlcbiAgKGJ1dGxhc3QgZXhwcnMpKSlcbiJ9IHs6c3ltIGFuYWx5emUtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBmb3JtIG5hbWVdIFtlbnYgZm9ybSBuYW1lIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zZXFcbiAoW2VudiBmb3JtIG5hbWVdXG4gIChhbmFseXplLXNlcVxuICAgZW52XG4gICBmb3JtXG4gICBuYW1lXG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoOm9wdGlvbnMgQGVudi8qY29tcGlsZXIqKSkpKVxuIChbZW52IGZvcm0gbmFtZSBvcHRzXVxuICAoaWZcbiAgICg6cXVvdGVkPyBlbnYpXG4gICAoYW5hbHl6ZS1saXN0IGVudiBmb3JtKVxuICAgKGxldFxuICAgIFtsaW5lXG4gICAgICgtPiBmb3JtIG1ldGEgOmxpbmUpXG4gICAgIGxpbmVcbiAgICAgKGlmIChuaWw/IGxpbmUpICg6bGluZSBlbnYpIGxpbmUpXG4gICAgIGNvbFxuICAgICAoLT4gZm9ybSBtZXRhIDpjb2x1bW4pXG4gICAgIGNvbFxuICAgICAoaWYgKG5pbD8gY29sKSAoOmNvbHVtbiBlbnYpIGNvbClcbiAgICAgZW52XG4gICAgIChhc3NvYyBlbnYgOmxpbmUgbGluZSA6Y29sdW1uIGNvbCldXG4gICAgKGxldFxuICAgICBbb3AgKGZpcnN0IGZvcm0pXVxuICAgICAod2hlbiAobmlsPyBvcCkgKHRocm93IChlcnJvciBlbnYgXCJDYW4ndCBjYWxsIG5pbFwiKSkpXG4gICAgIChsZXRcbiAgICAgIFttZm9ybSAobWFjcm9leHBhbmQtMSBlbnYgZm9ybSldXG4gICAgICAoaWZcbiAgICAgICAoaWRlbnRpY2FsPyBmb3JtIG1mb3JtKVxuICAgICAgIChhbmFseXplLXNlcSotd3JhcCBvcCBlbnYgZm9ybSBuYW1lIG9wdHMpXG4gICAgICAgKGFuYWx5emUgZW52IG1mb3JtIG5hbWUgb3B0cykpKSkpKSkpXG4ifSB7OnN5bSBkZXN1Z2FyLWRvdHRlZC1leHByLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgZXhwcn1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzdWdhci1kb3R0ZWQtZXhwclxuIFt7OmtleXMgW29wXSwgOmFzIGV4cHJ9XVxuIChjYXNlXG4gIG9wXG4gICg6dmFyIDpsb2NhbClcbiAgKGlmXG4gICAoZG90dGVkLXN5bWJvbD8gKHN5bWJvbCAobmFtZSAoOm5hbWUgZXhwcikpKSlcbiAgIChsZXRcbiAgICBbc1xuICAgICAobmFtZSAoOm5hbWUgZXhwcikpXG4gICAgIGlkeFxuICAgICAoLmxhc3RJbmRleE9mIHMgXCIuXCIpXG4gICAgIF9cbiAgICAgKGFzc2VydCAobm90PSAoaW5jIGlkeCkgKGNvdW50IHMpKSlcbiAgICAgcHJlZml4XG4gICAgICh3aXRoLW1ldGFcbiAgICAgIChzeW1ib2wgKG5hbWVzcGFjZSAoOm5hbWUgZXhwcikpIChzdWJzIHMgMCBpZHgpKVxuICAgICAgKG1ldGEgKDpmb3JtIGV4cHIpKSlcbiAgICAgZmllbGRcbiAgICAgKHN5bWJvbCAoc3VicyBzIChpbmMgaWR4KSkpXVxuICAgIChhc3NlcnQgKG5vdCAoOmNvbnN0LWV4cHIgZXhwcikpKVxuICAgIHs6b3AgOmhvc3QtZmllbGQsXG4gICAgIDplbnYgKDplbnYgZXhwciksXG4gICAgIDpmb3JtIChsaXN0ICcuIHByZWZpeCBmaWVsZCksXG4gICAgIDp0YXJnZXRcbiAgICAgKGRlc3VnYXItZG90dGVkLWV4cHJcbiAgICAgICgtPlxuICAgICAgIGV4cHJcbiAgICAgICAoYXNzb2MgOm5hbWUgcHJlZml4IDpmb3JtIHByZWZpeClcbiAgICAgICAoZGlzc29jIDp0YWcpXG4gICAgICAgKGFzc29jLWluIFs6aW5mbyA6bmFtZV0gcHJlZml4KVxuICAgICAgIChhc3NvYy1pbiBbOmVudiA6Y29udGV4dF0gOmV4cHIpKSksXG4gICAgIDpmaWVsZCBmaWVsZCxcbiAgICAgOnRhZyAoOnRhZyBleHByKSxcbiAgICAgOmNoaWxkcmVuIFs6dGFyZ2V0XX0pXG4gICBleHByKVxuICBleHByKSlcbiJ9IHs6c3ltIGZpbmQtZGVmLWNsYXNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBucyBzZWdtZW50c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLWRlZi1jbGFzaFxuIFtlbnYgbnMgc2VnbWVudHNdXG4gKGxldFxuICBbdG8tY2hlY2tcbiAgIChtYXBcbiAgICAoZm5cbiAgICAgW3hzXVxuICAgICBbKHN5bWJvbCAoc3RyaW5nL2pvaW4gXCIuXCIgKGJ1dGxhc3QgeHMpKSkgKHN5bWJvbCAobGFzdCB4cykpXSlcbiAgICAoZHJvcCAyIChyZWR1Y3Rpb25zIGNvbmogW10gc2VnbWVudHMpKSldXG4gIChkb3NlcVxuICAgW1tjbGFzaC1ucyBuYW1lXSB0by1jaGVja11cbiAgICh3aGVuXG4gICAgKGdldC1pblxuICAgICBAZW52Lypjb21waWxlcipcbiAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgY2xhc2gtbnMgOmRlZnMgbmFtZV0pXG4gICAgKHdhcm5pbmdcbiAgICAgOm5zLXZhci1jbGFzaFxuICAgICBlbnZcbiAgICAgezpucyBucywgOnZhciAoc3ltYm9sIChzdHIgY2xhc2gtbnMpIChzdHIgbmFtZSkpfSkpKSkpXG4ifSB7OnN5bSBoYXMtZXJyb3ItZGF0YT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzLWVycm9yLWRhdGE/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2V4XVxuIChjb250YWlucz8gKGV4LWRhdGEgZXgpIDpjbG9qdXJlLmVycm9yL3BoYXNlKSlcbiJ9IHs6c3ltIGZuLW5hbWUtdmFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBsb2NhbHMgbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbi1uYW1lLXZhclxuIFtlbnYgbG9jYWxzIG5hbWVdXG4gKHdoZW5cbiAgKHNvbWU/IG5hbWUpXG4gIChsZXRcbiAgIFtuc1xuICAgICgtPiBlbnYgOm5zIDpuYW1lKVxuICAgIHNoYWRvd1xuICAgIChoYW5kbGUtc3ltYm9sLWxvY2FsIG5hbWUgKGdldCBsb2NhbHMgbmFtZSkpXG4gICAgc2hhZG93XG4gICAgKHdoZW4gKG5pbD8gc2hhZG93KSAoZ2V0LWluIGVudiBbOmpzLWdsb2JhbHMgbmFtZV0pKVxuICAgIGZuLXNjb3BlXG4gICAgKDpmbi1zY29wZSBlbnYpXG4gICAgbmFtZS12YXJcbiAgICB7Om5hbWUgbmFtZSxcbiAgICAgOm9wIDpiaW5kaW5nLFxuICAgICA6bG9jYWwgOmZuLFxuICAgICA6aW5mb1xuICAgICB7OmZuLXNlbGYtbmFtZSB0cnVlLCA6Zm4tc2NvcGUgZm4tc2NvcGUsIDpucyBucywgOnNoYWRvdyBzaGFkb3d9fVxuICAgIHRhZ1xuICAgICgtPiBuYW1lIG1ldGEgOnRhZylcbiAgICByZXQtdGFnXG4gICAgKHdoZW4gKHNvbWU/IHRhZykgezpyZXQtdGFnIHRhZ30pXVxuICAgKG1lcmdlIG5hbWUtdmFyIHJldC10YWcpKSkpXG4ifSB7OnN5bSBnb29nLW1vZHVsZS1kZXA/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21vZHVsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnb29nLW1vZHVsZS1kZXA/XG4gW21vZHVsZV1cbiAobGV0XG4gIFtbbW9kdWxlIF9dXG4gICAobGliJnN1YmxpYiBtb2R1bGUpXG4gICBtb2R1bGUtc3RyXG4gICAoc3RyIG1vZHVsZSlcbiAgIG9wdGlvbnNcbiAgIChjb21waWxlci1vcHRpb25zKV1cbiAgKGlmXG4gICAoYW5kXG4gICAgKDpnbG9iYWwtZ29vZy1vYmplY3QmYXJyYXkgb3B0aW9ucylcbiAgICAoI3tcImdvb2cuYXJyYXlcIiBcImdvb2cub2JqZWN0XCJ9IG1vZHVsZS1zdHIpKVxuICAgZmFsc2VcbiAgICg9XG4gICAgOmdvb2dcbiAgICAoZ2V0LWluXG4gICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICBbOmpzLWRlcGVuZGVuY3ktaW5kZXggbW9kdWxlLXN0ciA6bW9kdWxlXSkpKSkpXG4ifSB7OnN5bSBtdW5nZS1ub2RlLWxpYiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlLW5vZGUtbGliXG4gW25hbWVdXG4gKHN0clxuICBcIm5vZGUkbW9kdWxlJFwiXG4gIChtdW5nZVxuICAgKHN0cmluZy9yZXBsYWNlIChzdHIgbmFtZSkgI1wiWy5cXC9dXCIgIz8oOmNsaiBcIlxcXFwkXCIgOmNsanMgXCIkJFwiKSkpKSlcbiJ9IHs6c3ltICpsb2FkLW1hY3JvcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpsb2FkLW1hY3JvcyogdHJ1ZSlcbiJ9IHs6c3ltIGFkZC10eXBlcywgOm1ldGEgezpkb2MgIlByb2R1Y2VzIGEgdW5pb24gb2YgdHlwZXMuIiwgOmFyZ2xpc3RzIFtbXSBbdDFdIFt0MSB0Ml0gW3QxIHQyICYgdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLXR5cGVzXG4gXCJQcm9kdWNlcyBhIHVuaW9uIG9mIHR5cGVzLlwiXG4gKFtdICdhbnkpXG4gKFt0MV0gdDEpXG4gKFt0MSB0Ml1cbiAgKGlmXG4gICAob3IgKG5pbD8gdDEpIChuaWw/IHQyKSlcbiAgICdhbnlcbiAgICgtPiAoc2V0L3VuaW9uICgtPnR5cGUtc2V0IHQxKSAoLT50eXBlLXNldCB0MikpIGNhbm9uaWNhbGl6ZS10eXBlKSkpXG4gKFt0MSB0MiAmIHRzXSAoYXBwbHkgYWRkLXR5cGVzIChhZGQtdHlwZXMgdDEgdDIpIHRzKSkpXG4ifSB7OnN5bSBleGNsdWRlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleGNsdWRlZD9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbZW52IHN5bV1cbiAob3JcbiAgKHNvbWU/IChnZXRzIGVudiA6bnMgOmV4Y2x1ZGVzIHN5bSkpXG4gIChzb21lP1xuICAgKGdldHNcbiAgICBAZW52Lypjb21waWxlcipcbiAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgKGdldHMgZW52IDpucyA6bmFtZSlcbiAgICA6ZXhjbHVkZXNcbiAgICBzeW0pKSkpXG4ifSB7OnN5bSBlbXB0eS1lbnYsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYW4gZW1wdHkgYW5hbHlzaXMgZW52aXJvbm1lbnQuIFJlcXVpcmVkIHRvIGFuYWx5emUgZm9ybXMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGVtcHR5LWVudlxuIFwiQ29uc3RydWN0IGFuIGVtcHR5IGFuYWx5c2lzIGVudmlyb25tZW50LiBSZXF1aXJlZCB0byBhbmFseXplIGZvcm1zLlwiXG4gW11cbiAoZW5zdXJlXG4gIHs6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSxcbiAgIDpjb250ZXh0IDpzdGF0ZW1lbnQsXG4gICA6bG9jYWxzIHt9LFxuICAgOmZuLXNjb3BlIFtdLFxuICAgOmpzLWdsb2JhbHNcbiAgIChpbnRvXG4gICAge31cbiAgICAobWFwXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUwNzAjXVxuICAgICAgKHZlY3RvciBwMV9fNDUwNzAjIHs6b3AgOmpzLXZhciwgOm5hbWUgcDFfXzQ1MDcwIywgOm5zICdqc30pKVxuICAgICAnKGFsZXJ0XG4gICAgICAgd2luZG93XG4gICAgICAgZG9jdW1lbnRcbiAgICAgICBjb25zb2xlXG4gICAgICAgZXNjYXBlXG4gICAgICAgdW5lc2NhcGVcbiAgICAgICBzY3JlZW5cbiAgICAgICBsb2NhdGlvblxuICAgICAgIG5hdmlnYXRvclxuICAgICAgIGhpc3RvcnlcbiAgICAgICBsb2NhdGlvblxuICAgICAgIGdsb2JhbFxuICAgICAgIHByb2Nlc3NcbiAgICAgICByZXF1aXJlXG4gICAgICAgbW9kdWxlXG4gICAgICAgZXhwb3J0cykpKX0pKVxuIn0gezpzeW0gcHVibGljLW5hbWU/LCA6bWV0YSB7OmRvYyAiSXMgc3ltIHB1YmxpYz8iLCA6YXJnbGlzdHMgKFtucyBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHVibGljLW5hbWU/XG4gXCJJcyBzeW0gcHVibGljP1wiXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW25zIHN5bV1cbiAobGV0XG4gIFt2YXItYXN0XG4gICAob3JcbiAgICAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6ZGVmcyBzeW0pXG4gICAgIz8oOmNsaiAoZ2V0cyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zIDptYWNyb3Mgc3ltKSA6Y2xqcyAoZ2V0cyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIChzeW1ib2wgKHN0ciAobmFtZSBucykgXCIkbWFjcm9zXCIpKSA6ZGVmcyBzeW0pKSldXG4gIChhbmRcbiAgIChzb21lPyB2YXItYXN0KVxuICAgKG5vdCAob3IgKDpwcml2YXRlIHZhci1hc3QpICg6YW5vbnltb3VzIHZhci1hc3QpKSkpKSlcbiJ9IHs6c3ltIGRlZmF1bHQtd2FybmluZy1oYW5kbGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dhcm5pbmctdHlwZSBlbnYgZXh0cmFdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVmYXVsdC13YXJuaW5nLWhhbmRsZXJcbiBbd2FybmluZy10eXBlIGVudiBleHRyYV1cbiAod2hlblxuICAod2FybmluZy10eXBlICpjbGpzLXdhcm5pbmdzKilcbiAgKHdoZW4tbGV0XG4gICBbcyAoZXJyb3ItbWVzc2FnZSB3YXJuaW5nLXR5cGUgZXh0cmEpXVxuICAgIz8oOmNsaiAoYmluZGluZyBbKm91dCogKmVycipdIChwcmludGxuIChtZXNzYWdlIGVudiAoc3RyIFwiV0FSTklORzogXCIgcykpKSkgOmNsanMgKGJpbmRpbmcgWypwcmludC1mbiogKnByaW50LWVyci1mbipdIChwcmludGxuIChtZXNzYWdlIGVudiAoc3RyIFwiV0FSTklORzogXCIgcykpKSkpKSkpXG4ifSB7OnN5bSByZXNvbHZlLW5zLWFsaWFzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBuYW1lXSBbZW52IG5hbWUgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtbnMtYWxpYXNcbiAoW2VudiBuYW1lXSAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbmFtZSAoc3ltYm9sIG5hbWUpKSlcbiAoW2VudiBuYW1lIG5vdC1mb3VuZF1cbiAgKGxldCBbc3ltIChzeW1ib2wgbmFtZSldIChnZXQgKDpyZXF1aXJlcyAoOm5zIGVudikpIHN5bSBub3QtZm91bmQpKSkpXG4ifSB7OnN5bSBpbnRlcm4tbWFjcm9zLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBDbG9qdXJlIG5hbWVzcGFjZSBpbnRlcm4gYWxsIG1hY3JvcyBpbnRvIHRoZSBhbWJpZW50IENsb2p1cmVTY3JpcHRcbiAgIGFuYWx5c2lzIGVudmlyb25tZW50LiIsIDphcmdsaXN0cyBbW25zXSBbbnMgcmVsb2FkXV19LCA6c291cmNlICIoZGVmblxuIGludGVybi1tYWNyb3NcbiBcIkdpdmVuIGEgQ2xvanVyZSBuYW1lc3BhY2UgaW50ZXJuIGFsbCBtYWNyb3MgaW50byB0aGUgYW1iaWVudCBDbG9qdXJlU2NyaXB0XFxuICAgYW5hbHlzaXMgZW52aXJvbm1lbnQuXCJcbiAoW25zXSAoaW50ZXJuLW1hY3JvcyBucyBmYWxzZSkpXG4gKFtucyByZWxvYWRdXG4gICh3aGVuXG4gICAob3JcbiAgICAobmlsPyAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6bWFjcm9zKSlcbiAgICByZWxvYWQpXG4gICAoc3dhcCFcbiAgICBlbnYvKmNvbXBpbGVyKlxuICAgIGFzc29jLWluXG4gICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOm1hY3Jvc11cbiAgICAoLT4+XG4gICAgICM/KDpjbGogKG5zLWludGVybnMgbnMpIDpjbGpzIChucy1pbnRlcm5zKiBucykpXG4gICAgIChmaWx0ZXIgKGZuIFtbXyB2XV0gKC5pc01hY3JvIHYpKSlcbiAgICAgKG1hcFxuICAgICAgKGZuXG4gICAgICAgW1trIHZdXVxuICAgICAgIFtrXG4gICAgICAgIChhcy0+XG4gICAgICAgICAobWV0YSB2KVxuICAgICAgICAgdm1cbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbbnMgKC5nZXROYW1lICg6bnMgdm0pKV1cbiAgICAgICAgICAoYXNzb2NcbiAgICAgICAgICAgdm1cbiAgICAgICAgICAgOm5zXG4gICAgICAgICAgIG5zXG4gICAgICAgICAgIDpuYW1lXG4gICAgICAgICAgIChzeW1ib2wgKHN0ciBucykgKHN0ciBrKSlcbiAgICAgICAgICAgOm1hY3JvXG4gICAgICAgICAgIHRydWUpKSldKSlcbiAgICAgKGludG8ge30pKSkpKSlcbiJ9IHs6c3ltIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWVcbiBbezprZXlzIFtvcF0sIDphcyBlfV1cbiAoY2FzZVxuICBvcFxuICA6cXVvdGVcbiAgKGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlICg6ZXhwciBlKSlcbiAgOmNvbnN0XG4gICg6dmFsIGUpXG4gIDptYXBcbiAgKHppcG1hcFxuICAgKG1hcCBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOmtleXMgZSkpXG4gICAobWFwIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlICg6dmFscyBlKSkpXG4gIDpzZXRcbiAgKGludG8gI3t9IChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDppdGVtcyBlKSkpXG4gIDp2ZWN0b3JcbiAgKGludG8gW10gKG1hcCBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOml0ZW1zIGUpKSkpKVxuIn0gezpzeW0gKm1hY3JvLWluZmVyKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKm1hY3JvLWluZmVyKiB0cnVlKVxuIn0gezpzeW0gZ2VuLWNvbnN0YW50LWlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGdlbi1jb25zdGFudC1pZFxuIFt2YWx1ZV1cbiAobGV0XG4gIFtwcmVmaXhcbiAgIChjb25kXG4gICAgKGtleXdvcmQ/IHZhbHVlKVxuICAgIFwiY3N0JGt3JFwiXG4gICAgKHN5bWJvbD8gdmFsdWUpXG4gICAgXCJjc3Qkc3ltJFwiXG4gICAgOmVsc2VcbiAgICAodGhyb3dcbiAgICAgIz8oOmNsaiAoRXhjZXB0aW9uLiAoc3RyIFwiY29uc3RhbnQgdHlwZSBcIiAodHlwZSB2YWx1ZSkgXCIgbm90IHN1cHBvcnRlZFwiKSkgOmNsanMgKGpzL0Vycm9yLiAoc3RyIFwiY29uc3RhbnQgdHlwZSBcIiAodHlwZSB2YWx1ZSkgXCIgbm90IHN1cHBvcnRlZFwiKSkpKSlcbiAgIG5hbWVcbiAgIChpZiAoa2V5d29yZD8gdmFsdWUpIChzdWJzIChzdHIgdmFsdWUpIDEpIChzdHIgdmFsdWUpKVxuICAgbmFtZVxuICAgKGlmXG4gICAgKD0gXCIuXCIgbmFtZSlcbiAgICBcIl9ET1RfXCJcbiAgICAoLT5cbiAgICAgbmFtZVxuICAgICAoc3RyaW5nL3JlcGxhY2UgXCItXCIgXCJfREFTSF9cIilcbiAgICAgKG11bmdlKVxuICAgICAoc3RyaW5nL3JlcGxhY2UgXCIuXCIgXCIkXCIpXG4gICAgIChzdHJpbmcvcmVwbGFjZVxuICAgICAgI1wiKD9pKVteYS16MC05JF9dXCJcbiAgICAgIChmbiogW3AxX180NTA2OSNdIChoZXgtZm9ybWF0IHAxX180NTA2OSMgNCkpKSkpXVxuICAoc3ltYm9sIChzdHIgcHJlZml4IG5hbWUpKSkpXG4ifSB7OnN5bSBsaWImc3VibGliLCA6bWV0YSB7OmRvYyAiSWYgYSBsaWJyYXJ5IG5hbWUgaGFzIHRoZSBmb3JtIGZvbyRiYXIsIHJldHVybiBhIHZlY3RvciBvZiB0aGUgbGlicmFyeSBhbmRcbiAgIHRoZSBzdWJsaWJyYXJ5IHByb3BlcnR5LiIsIDphcmdsaXN0cyAoW2xpYl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaWImc3VibGliXG4gXCJJZiBhIGxpYnJhcnkgbmFtZSBoYXMgdGhlIGZvcm0gZm9vJGJhciwgcmV0dXJuIGEgdmVjdG9yIG9mIHRoZSBsaWJyYXJ5IGFuZFxcbiAgIHRoZSBzdWJsaWJyYXJ5IHByb3BlcnR5LlwiXG4gW2xpYl1cbiAoaWYtbGV0XG4gIFt4cyAocmUtbWF0Y2hlcyAjXCIoLiopXFwkKC4qKVwiIChzdHIgbGliKSldXG4gIChkcm9wIDEgeHMpXG4gIFtsaWIgbmlsXSkpXG4ifSB7OnN5bSBtYWNyby1hdXRvbG9hZC1ucz8sIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgZm9ybSBjaGVjayB3aGV0aGVyIHRoZSBzcGVjIG5hbWVzcGFjZSByZXF1aXJlcyBhIG1hY3JvIGZpbGVcbiAgIG9mIHRoZSBzYW1lIG5hbWUuIElmIHNvIHJldHVybiB0cnVlLiIsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFjcm8tYXV0b2xvYWQtbnM/XG4gXCJHaXZlbiBhIHNwZWMgZm9ybSBjaGVjayB3aGV0aGVyIHRoZSBzcGVjIG5hbWVzcGFjZSByZXF1aXJlcyBhIG1hY3JvIGZpbGVcXG4gICBvZiB0aGUgc2FtZSBuYW1lLiBJZiBzbyByZXR1cm4gdHJ1ZS5cIlxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtmb3JtXVxuICh3aGVuXG4gICptYWNyby1pbmZlcipcbiAgKGxldFxuICAgW25zXG4gICAgKGlmIChzZXF1ZW50aWFsPyBmb3JtKSAoZmlyc3QgZm9ybSkgZm9ybSlcbiAgICB7OmtleXMgW3VzZS1tYWNyb3MgcmVxdWlyZS1tYWNyb3NdfVxuICAgIChvclxuICAgICAoZ2V0LWluIEBlbnYvKmNvbXBpbGVyKiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuc10pXG4gICAgICM/KDpjbGogKHdoZW4tbGV0IFtyZXMgKHV0aWwvbnMtPnNvdXJjZSBucyldICg6YXN0IChwYXJzZS1ucyByZXMpKSkpKV1cbiAgIChvclxuICAgIChzb21lICN7bnN9ICh2YWxzIHVzZS1tYWNyb3MpKVxuICAgIChzb21lICN7bnN9ICh2YWxzIHJlcXVpcmUtbWFjcm9zKSkpKSkpXG4ifSB7OnN5bSBnZXQtdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXRhZ1xuIFtlXVxuIChpZi1zb21lXG4gIFt0YWcgKC0+IGUgOmZvcm0gbWV0YSA6dGFnKV1cbiAgdGFnXG4gIChpZi1zb21lIFt0YWcgKC0+IGUgOnRhZyldIHRhZyAoLT4gZSA6aW5mbyA6dGFnKSkpKVxuIn0gezpzeW0gaW1wbGljaXQtbnNlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBpbXBsaWNpdC1uc2VzXG4gJyN7U3RyaW5nIGdvb2cuc3RyaW5nIGdvb2cgZ29vZy5vYmplY3QgTWF0aCBnb29nLmFycmF5fSlcbiJ9IHs6c3ltIHZhbGlkLXByb3RvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHZhbGlkLXByb3RvIFt4XSAod2hlbiAoc3ltYm9sPyB4KSB4KSlcbiJ9IHs6c3ltIG5vcm1hbGl6ZS1qcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3JtYWxpemUtanMtdGFnXG4gW3hdXG4gKGlmLW5vdFxuICAoPSAnanMgeClcbiAgKHdpdGgtbWV0YVxuICAgJ2pzXG4gICB7OnByZWZpeFxuICAgIChjb25qXG4gICAgICgtPj4gKHN0cmluZy9zcGxpdCAobmFtZSB4KSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYylcbiAgICAgJ3Byb3RvdHlwZSl9KVxuICB4KSlcbiJ9IHs6c3ltIGFuYWx5emUtbGlzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxpc3RcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbZXhwci1lbnZcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXG4gICBpdGVtc1xuICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgKG1hcHYgKGZuKiBbcDFfXzQ1MTE1I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQ1MTE1IykpIGZvcm0pKV1cbiAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICB7Om9wIDpsaXN0LFxuICAgIDplbnYgZW52LFxuICAgIDpmb3JtIGZvcm0sXG4gICAgOml0ZW1zIGl0ZW1zLFxuICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcbiAgICA6dGFnICdjbGpzLmNvcmUvSUxpc3R9KSkpXG4ifSB7OnN5bSB3YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dhcm5pbmctdHlwZSBlbnYgZXh0cmFdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2FybmluZ1xuIFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXVxuIChkb3NlcVxuICBbaGFuZGxlciAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKl1cbiAgKGhhbmRsZXIgd2FybmluZy10eXBlIGVudiBleHRyYSkpKVxuIn0gezpzeW0gaW1wbGljaXQtaW1wb3J0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgcHJlZml4IHN1ZmZpeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbXBsaWNpdC1pbXBvcnQ/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBwcmVmaXggc3VmZml4XVxuIChjb250YWlucz8gaW1wbGljaXQtbnNlcyBwcmVmaXgpKVxuIn0gezpzeW0gbWlzc2luZy11c2UtbWFjcm9zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3VzZS1tYWNyb3MgZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctdXNlLW1hY3Jvc1xuIFt1c2UtbWFjcm9zIGVudl1cbiAobGV0XG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgKGludG9cbiAgIHt9XG4gICAoZmlsdGVyIChmbiBbW3N5bSBsaWJdXSAobWlzc2luZy11c2UtbWFjcm8/IGxpYiBzeW0pKSB1c2UtbWFjcm9zKSkpKVxuIn0gezpzeW0gYW5hbHl6ZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm0gbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUqXG4gW2VudiBmb3JtIG5hbWUgb3B0c11cbiAobGV0XG4gIFtwYXNzZXNcbiAgICpwYXNzZXMqXG4gICBwYXNzZXNcbiAgIChpZiAobmlsPyBwYXNzZXMpIGRlZmF1bHQtcGFzc2VzIHBhc3NlcylcbiAgIGZvcm1cbiAgIChpZiAoaW5zdGFuY2U/IExhenlTZXEgZm9ybSkgKGlmIChzZXEgZm9ybSkgZm9ybSAoKSkgZm9ybSlcbiAgIGFzdFxuICAgKGFuYWx5emUtZm9ybSBlbnYgZm9ybSBuYW1lIG9wdHMpXVxuICAocmVkdWNlIChmbiBbYXN0IHBhc3NdIChwYXNzIGVudiBhc3Qgb3B0cykpIGFzdCBwYXNzZXMpKSlcbiJ9IHs6c3ltIC1jbGpzLW1hY3Jvcy1sb2FkZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIC1jbGpzLW1hY3Jvcy1sb2FkZWQgKGF0b20gZmFsc2UpKVxuIn0gezpzeW0gY2hlY2stdXNlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt1c2VzIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay11c2VzXG4gW3VzZXMgZW52XVxuIChsZXRcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxuICAoZG9zZXFcbiAgIFtbc3ltIGxpYl0gdXNlc11cbiAgICh3aGVuXG4gICAgKG1pc3NpbmctdXNlPyBsaWIgc3ltIGNlbnYpXG4gICAgKHRocm93XG4gICAgIChlcnJvclxuICAgICAgZW52XG4gICAgICAoZXJyb3ItbWVzc2FnZVxuICAgICAgIDp1bmRlY2xhcmVkLW5zLWZvcm1cbiAgICAgICB7OnR5cGUgXCJ2YXJcIiwgOmxpYiBsaWIsIDpzeW0gc3ltfSkpKSkpKSlcbiJ9IHs6c3ltIGZpbmQtbWF0Y2hpbmctbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2YgcGFyYW1zXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtbWF0Y2hpbmctbWV0aG9kXG4gW2YgcGFyYW1zXVxuIChsZXRcbiAgW21ldGhvZHMgKG9yICg6bWV0aG9kcyBmKSAoLT4gZiA6aW5mbyA6bWV0aG9kcykpIGMgKGNvdW50IHBhcmFtcyldXG4gIChzb21lXG4gICAoZm4gW21dIChhbmQgKG9yICg9PSAoOmZpeGVkLWFyaXR5IG0pIGMpICg6dmFyaWFkaWM/IG0pKSBtKSlcbiAgIG1ldGhvZHMpKSlcbiJ9IHs6c3ltICpwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIGZhbHNlKVxuIn0gezpzeW0gaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnNcbiAobGV0XG4gIFthZ2V0LXZhbGlkYXRvclxuICAgezp2YWxpZD9cbiAgICAoZm4qXG4gICAgIFtwMV9fNDUxMjIjXVxuICAgICAoYW5kXG4gICAgICAoYXJyYXktdHlwZT8gKGZpcnN0IHAxX180NTEyMiMpKVxuICAgICAgKGV2ZXJ5PyBudW1lcmljLXR5cGU/IChyZXN0IHAxX180NTEyMiMpKSkpLFxuICAgIDp3YXJuaW5nLXR5cGUgOmludmFsaWQtYXJyYXktYWNjZXNzfVxuICAgYXNldC12YWxpZGF0b3JcbiAgIHs6dmFsaWQ/XG4gICAgKGZuKlxuICAgICBbcDFfXzQ1MTIzI11cbiAgICAgKGFuZFxuICAgICAgKGFycmF5LXR5cGU/IChmaXJzdCBwMV9fNDUxMjMjKSlcbiAgICAgIChldmVyeT8gbnVtZXJpYy10eXBlPyAoYnV0bGFzdCAocmVzdCBwMV9fNDUxMjMjKSkpKSksXG4gICAgOndhcm5pbmctdHlwZSA6aW52YWxpZC1hcnJheS1hY2Nlc3N9XVxuICB7J2NsanMuY29yZS9jaGVja2VkLWFnZXQgYWdldC12YWxpZGF0b3IsXG4gICAnY2xqcy5jb3JlL2NoZWNrZWQtYXNldCBhc2V0LXZhbGlkYXRvcixcbiAgICdjbGpzLmNvcmUvY2hlY2tlZC1hZ2V0JyBhZ2V0LXZhbGlkYXRvcixcbiAgICdjbGpzLmNvcmUvY2hlY2tlZC1hc2V0JyBhc2V0LXZhbGlkYXRvcn0pKVxuIn0gezpzeW0gKmNsanMtZmlsZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLWZpbGUqIG5pbClcbiJ9IHs6c3ltICpmaWxlLWRlZnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZmlsZS1kZWZzKiBuaWwpXG4ifSB7OnN5bSBpbmZlci1pZiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlci1pZlxuIFtlbnYgZV1cbiAobGV0XG4gIFt7OmtleXMgW29wIGZvcm1dfVxuICAgKHVud3JhcC1xdW90ZSAoOnRlc3QgZSkpXG4gICB0aGVuLXRhZ1xuICAgKGluZmVyLXRhZyBlbnYgKDp0aGVuIGUpKV1cbiAgKGlmXG4gICAoYW5kXG4gICAgIz8oOmNsaiAoPSBvcCA6Y29uc3QpIDpjbGpzIChrZXl3b3JkLWlkZW50aWNhbD8gb3AgOmNvbnN0KSlcbiAgICAobm90IChuaWw/IGZvcm0pKVxuICAgIChub3QgKGZhbHNlPyBmb3JtKSkpXG4gICB0aGVuLXRhZ1xuICAgKGxldFxuICAgIFtlbHNlLXRhZyAoaW5mZXItdGFnIGVudiAoOmVsc2UgZSkpXVxuICAgIChjb25kXG4gICAgIChvclxuICAgICAgIz8oOmNsaiAoPSB0aGVuLXRhZyBlbHNlLXRhZykgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHRoZW4tdGFnIGVsc2UtdGFnKSlcbiAgICAgICM/KDpjbGogKD0gZWxzZS10YWcgaW1wbC9JR05PUkVfU1lNKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gZWxzZS10YWcgaW1wbC9JR05PUkVfU1lNKSkpXG4gICAgIHRoZW4tdGFnXG4gICAgICM/KDpjbGogKD0gdGhlbi10YWcgaW1wbC9JR05PUkVfU1lNKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gdGhlbi10YWcgaW1wbC9JR05PUkVfU1lNKSlcbiAgICAgZWxzZS10YWdcbiAgICAgKGFuZFxuICAgICAgKG9yIChzb21lPyAoZ2V0IGltcGwvTk9UX05BVElWRSB0aGVuLXRhZykpICh0eXBlPyBlbnYgdGhlbi10YWcpKVxuICAgICAgKG9yIChzb21lPyAoZ2V0IGltcGwvTk9UX05BVElWRSBlbHNlLXRhZykpICh0eXBlPyBlbnYgZWxzZS10YWcpKSlcbiAgICAgJ2NsalxuICAgICA6ZWxzZVxuICAgICAoaWZcbiAgICAgIChhbmRcbiAgICAgICAoc29tZT8gKGdldCBpbXBsL0JPT0xFQU5fT1JfU0VRIHRoZW4tdGFnKSlcbiAgICAgICAoc29tZT8gKGdldCBpbXBsL0JPT0xFQU5fT1JfU0VRIGVsc2UtdGFnKSkpXG4gICAgICAnc2VxXG4gICAgICAobGV0XG4gICAgICAgW3RoZW4tdGFnXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoc2V0PyB0aGVuLXRhZykgOmNsanMgKGltcGwvY2xqcy1zZXQ/IHRoZW4tdGFnKSlcbiAgICAgICAgIHRoZW4tdGFnXG4gICAgICAgICAje3RoZW4tdGFnfSlcbiAgICAgICAgZWxzZS10YWdcbiAgICAgICAgKGlmXG4gICAgICAgICAjPyg6Y2xqIChzZXQ/IGVsc2UtdGFnKSA6Y2xqcyAoaW1wbC9jbGpzLXNldD8gZWxzZS10YWcpKVxuICAgICAgICAgZWxzZS10YWdcbiAgICAgICAgICN7ZWxzZS10YWd9KV1cbiAgICAgICAoaW50byB0aGVuLXRhZyBlbHNlLXRhZykpKSkpKSkpXG4ifSB7OnN5bSAqdmVyYm9zZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp2ZXJib3NlKiBmYWxzZSlcbiJ9IHs6c3ltIGFuYWx5emUtanMtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1qcy12YWx1ZVxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFt2YWwgKC4tdmFsIGZvcm0pIGV4cHItZW52IChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXVxuICAoaWZcbiAgIChtYXA/IHZhbClcbiAgIChsZXRcbiAgICBba2V5c1xuICAgICAodmVjIChrZXlzIHZhbCkpXG4gICAgIHZhbHNcbiAgICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgICAobWFwdlxuICAgICAgIChmbiogW3AxX180NTExOCNdIChhbmFseXplIGV4cHItZW52IHAxX180NTExOCMpKVxuICAgICAgICh2YWxzIHZhbCkpKV1cbiAgICB7Om9wIDpqcy1vYmplY3QsXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6a2V5cyBrZXlzLFxuICAgICA6dmFscyB2YWxzLFxuICAgICA6Y2hpbGRyZW4gWzp2YWxzXSxcbiAgICAgOnRhZyAnb2JqZWN0fSlcbiAgIChsZXRcbiAgICBbaXRlbXNcbiAgICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgICAobWFwdiAoZm4qIFtwMV9fNDUxMTkjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDUxMTkjKSkgdmFsKSldXG4gICAgezpvcCA6anMtYXJyYXksXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6aXRlbXMgaXRlbXMsXG4gICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcbiAgICAgOnRhZyAnYXJyYXl9KSkpKVxuIn0gezpzeW0gbnMtPm1vZHVsZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIG5zLT5tb2R1bGUtdHlwZVxuIFtuc11cbiAoY29uZFxuICAoZ29vZy1tb2R1bGUtZGVwPyBucylcbiAgOmdvb2ctbW9kdWxlXG4gIChqcy1tb2R1bGUtZXhpc3RzPyBucylcbiAgOmpzXG4gIChub2RlLW1vZHVsZS1kZXA/IG5zKVxuICA6bm9kZVxuICAoZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8gbnMpXG4gIDpnbG9iYWwpKVxuIn0gezpzeW0gc291cmNlLWluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZW52XSBbbmFtZSBlbnZdXX0sIDpzb3VyY2UgIihkZWZuXG4gc291cmNlLWluZm9cbiAoW2Vudl0gKHdoZW4gKDpsaW5lIGVudikgKHNvdXJjZS1pbmZvIG5pbCBlbnYpKSlcbiAoW25hbWUgZW52XVxuICAoY29uZC0+XG4gICB7OmZpbGVcbiAgICAoaWZcbiAgICAgKD0gKC0+IGVudiA6bnMgOm5hbWUpICdjbGpzLmNvcmUpXG4gICAgIFwiY2xqcy9jb3JlLmNsanNcIlxuICAgICAqY2xqcy1maWxlKiksXG4gICAgOmxpbmUgKGdldC1saW5lIG5hbWUgZW52KSxcbiAgICA6Y29sdW1uIChnZXQtY29sIG5hbWUgZW52KX1cbiAgICg6cm9vdC1zb3VyY2UtaW5mbyBlbnYpXG4gICAobWVyZ2UgKHNlbGVjdC1rZXlzIGVudiBbOnJvb3Qtc291cmNlLWluZm9dKSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZm4tbWV0aG9kLXBhcmFtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Vudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWZuLW1ldGhvZC1wYXJhbVxuIFtlbnZdXG4gKGZuXG4gIFtbbG9jYWxzIHBhcmFtc10gW2FyZy1pZCBuYW1lXV1cbiAgKHdoZW5cbiAgIChuYW1lc3BhY2UgbmFtZSlcbiAgICh0aHJvd1xuICAgIChlcnJvciBlbnYgKHN0ciBcIkNhbid0IHVzZSBxdWFsaWZpZWQgbmFtZSBhcyBwYXJhbWV0ZXI6IFwiIG5hbWUpKSkpXG4gIChsZXRcbiAgIFtsaW5lXG4gICAgKGdldC1saW5lIG5hbWUgZW52KVxuICAgIGNvbHVtblxuICAgIChnZXQtY29sIG5hbWUgZW52KVxuICAgIG5tZXRhXG4gICAgKG1ldGEgbmFtZSlcbiAgICB0YWdcbiAgICAoOnRhZyBubWV0YSlcbiAgICBzaGFkb3dcbiAgICAod2hlbiAoc29tZT8gbG9jYWxzKSAoaGFuZGxlLXN5bWJvbC1sb2NhbCBuYW1lIChsb2NhbHMgbmFtZSkpKVxuICAgIGVudlxuICAgIChtZXJnZSAoc2VsZWN0LWtleXMgZW52IFs6Y29udGV4dF0pIHs6bGluZSBsaW5lLCA6Y29sdW1uIGNvbHVtbn0pXG4gICAgcGFyYW1cbiAgICB7Om5hbWUgbmFtZSxcbiAgICAgOmJpbmRpbmctZm9ybT8gdHJ1ZSxcbiAgICAgOm9wIDpiaW5kaW5nLFxuICAgICA6ZW52IGVudixcbiAgICAgOmNvbHVtbiBjb2x1bW4sXG4gICAgIDpsaW5lIGxpbmUsXG4gICAgIDphcmctaWQgYXJnLWlkLFxuICAgICA6aW5mbyB7Om5hbWUgbmFtZSwgOnNoYWRvdyBzaGFkb3d9LFxuICAgICA6dGFnIHRhZyxcbiAgICAgOnNoYWRvdyBzaGFkb3csXG4gICAgIDpsb2NhbCA6YXJnfV1cbiAgIFsoYXNzb2MgbG9jYWxzIG5hbWUgcGFyYW0pIChjb25qIHBhcmFtcyBwYXJhbSldKSkpXG4ifSB7OnN5bSBhbmFseXplLXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXNldFxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtleHByLWVudlxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGl0ZW1zXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdiAoZm4qIFtwMV9fNDUxMTcjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDUxMTcjKSkgZm9ybSkpXVxuICAoYW5hbHl6ZS13cmFwLW1ldGFcbiAgIHs6b3AgOnNldCxcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDppdGVtcyBpdGVtcyxcbiAgICA6Y2hpbGRyZW4gWzppdGVtc10sXG4gICAgOnRhZyAnY2xqcy5jb3JlL0lTZXR9KSkpXG4ifSB7OnN5bSBudW1lcmljLXR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtZXJpYy10eXBlP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFt0XVxuIChjb25kXG4gIChuaWw/IHQpXG4gIHRydWVcbiAgKD0gJ2Nsai1uaWwgdClcbiAgdHJ1ZVxuICAoanMtdGFnPyB0KVxuICB0cnVlXG4gIDplbHNlXG4gIChpZlxuICAgKGFuZCAoc3ltYm9sPyB0KSAoc29tZT8gKGdldCBOVU1FUklDX1NFVCB0KSkpXG4gICB0cnVlXG4gICAod2hlblxuICAgICM/KDpjbGogKHNldD8gdCkgOmNsanMgKGltcGwvY2xqcy1zZXQ/IHQpKVxuICAgIChvclxuICAgICAoY29udGFpbnM/IHQgJ251bWJlcilcbiAgICAgKGNvbnRhaW5zPyB0ICdsb25nKVxuICAgICAoY29udGFpbnM/IHQgJ2RvdWJsZSlcbiAgICAgKGNvbnRhaW5zPyB0ICdhbnkpXG4gICAgIChjb250YWlucz8gdCAnanMpKSkpKSlcbiJ9IHs6c3ltIGFzdD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3Q/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3hdXG4gKGFuZCAobWFwPyB4KSAoY29udGFpbnM/IHggOm9wKSkpXG4ifSB7OnN5bSBjaGVja2VkLWFycmF5cywgOm1ldGEgezpkb2MgIlJldHVybnMgZmFsc2UteSwgOndhcm4sIG9yIDplcnJvciBiYXNlZCBvbiBjb25maWd1cmF0aW9uIGFuZCB0aGVcbiAgIGN1cnJlbnQgdmFsdWUgb2YgKnVuY2hlY2tlZC1hcnJheXMqLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVja2VkLWFycmF5c1xuIFwiUmV0dXJucyBmYWxzZS15LCA6d2Fybiwgb3IgOmVycm9yIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gYW5kIHRoZVxcbiAgIGN1cnJlbnQgdmFsdWUgb2YgKnVuY2hlY2tlZC1hcnJheXMqLlwiXG4gW11cbiAod2hlblxuICAoYW5kXG4gICAobm90PSA6YWR2YW5jZWQgKDpvcHRpbWl6YXRpb25zIChjb21waWxlci1vcHRpb25zKSkpXG4gICAobm90ICp1bmNoZWNrZWQtYXJyYXlzKikpXG4gICpjaGVja2VkLWFycmF5cyopKVxuIn0gezpzeW0gZWxpZGUtZW52LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBhc3Qgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm4gZWxpZGUtZW52IFtlbnYgYXN0IG9wdHNdIChkaXNzb2MgYXN0IDplbnYpKVxuIn0gezpzeW0ganMtbW9kdWxlLWV4aXN0cz8qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBqcy1tb2R1bGUtZXhpc3RzPyogKG1lbW9pemUgaW50ZXJuYWwtanMtbW9kdWxlLWV4aXN0cz8pKVxuIn0gezpzeW0gcGFyc2UtcmVxdWlyZS1zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBtYWNyb3M/IGRlcHMgYWxpYXNlcyBzcGVjXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXJlcXVpcmUtc3BlY1xuIFtlbnYgbWFjcm9zPyBkZXBzIGFsaWFzZXMgc3BlY11cbiAoaWZcbiAgKG9yIChzeW1ib2w/IHNwZWMpIChzdHJpbmc/IHNwZWMpKVxuICAocmVjdXIgZW52IG1hY3Jvcz8gZGVwcyBhbGlhc2VzIFtzcGVjXSlcbiAgKGRvXG4gICAoYmFzaWMtdmFsaWRhdGUtbnMtc3BlYyBlbnYgbWFjcm9zPyBzcGVjKVxuICAgKGxldFxuICAgIFtbbGliICYgb3B0c11cbiAgICAgc3BlY1xuICAgICBbbGliIGpzLW1vZHVsZS1wcm92aWRlc11cbiAgICAgKGlmLXNvbWVcbiAgICAgIFtqcy1tb2R1bGUtbmFtZVxuICAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IChzdHIgbGliKSA6bmFtZSldXG4gICAgICBbKHN5bWJvbCBqcy1tb2R1bGUtbmFtZSkgbGliXVxuICAgICAgW2xpYiBuaWxdKVxuICAgICB7YWxpYXMgOmFzLFxuICAgICAgcmVmZXJyZWQgOnJlZmVyLFxuICAgICAgcmVuYW1lZCA6cmVuYW1lLFxuICAgICAgOm9yIHthbGlhcyAoaWYgKHN0cmluZz8gbGliKSAoc3ltYm9sIChtdW5nZSBsaWIpKSBsaWIpfX1cbiAgICAgKGFwcGx5IGhhc2gtbWFwIG9wdHMpXG4gICAgIHJlZmVycmVkLXdpdGhvdXQtcmVuYW1lZFxuICAgICAoc2VxIChyZW1vdmUgKHNldCAoa2V5cyByZW5hbWVkKSkgcmVmZXJyZWQpKVxuICAgICBbcmsgdWsgcmVua11cbiAgICAgKGlmXG4gICAgICBtYWNyb3M/XG4gICAgICBbOnJlcXVpcmUtbWFjcm9zIDp1c2UtbWFjcm9zIDpyZW5hbWUtbWFjcm9zXVxuICAgICAgWzpyZXF1aXJlIDp1c2UgOnJlbmFtZV0pXVxuICAgICh3aGVuLW5vdFxuICAgICAob3IgKHN5bWJvbD8gYWxpYXMpIChuaWw/IGFsaWFzKSlcbiAgICAgKHRocm93XG4gICAgICAoZXJyb3JcbiAgICAgICBlbnZcbiAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICAgIHNwZWNcbiAgICAgICAgXCI6YXMgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHN5bWJvbCBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAgICh3aGVuXG4gICAgIChzb21lPyBhbGlhcylcbiAgICAgKGxldFxuICAgICAgW2FsaWFzLXR5cGVcbiAgICAgICAoaWYgbWFjcm9zPyA6bWFjcm9zIDpmbnMpXG4gICAgICAgbGliJ1xuICAgICAgICgoYWxpYXMtdHlwZSBAYWxpYXNlcykgYWxpYXMpXVxuICAgICAgKHdoZW5cbiAgICAgICAoYW5kIChzb21lPyBsaWInKSAobm90PSBsaWIgbGliJykpXG4gICAgICAgKHRocm93XG4gICAgICAgIChlcnJvclxuICAgICAgICAgZW52XG4gICAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnIHNwZWMgXCI6YXMgYWxpYXMgbXVzdCBiZSB1bmlxdWVcIikpKSlcbiAgICAgIChzd2FwIVxuICAgICAgIGFsaWFzZXNcbiAgICAgICB1cGRhdGUtaW5cbiAgICAgICBbYWxpYXMtdHlwZV1cbiAgICAgICBjb25qXG4gICAgICAgW2FsaWFzIGxpYl1cbiAgICAgICAod2hlbiBqcy1tb2R1bGUtcHJvdmlkZXMgW2pzLW1vZHVsZS1wcm92aWRlcyBsaWJdKSkpKVxuICAgICh3aGVuLW5vdFxuICAgICAob3JcbiAgICAgIChhbmQgKHNlcXVlbnRpYWw/IHJlZmVycmVkKSAoZXZlcnk/IHN5bWJvbD8gcmVmZXJyZWQpKVxuICAgICAgKG5pbD8gcmVmZXJyZWQpKVxuICAgICAodGhyb3dcbiAgICAgIChlcnJvclxuICAgICAgIGVudlxuICAgICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgICAgc3BlY1xuICAgICAgICBcIjpyZWZlciBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgc2VxdWVuY2Ugb2Ygc3ltYm9scyBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAgICh3aGVuLW5vdCBtYWNyb3M/IChzd2FwISBkZXBzIGNvbmogbGliKSlcbiAgICAobWVyZ2VcbiAgICAgKHdoZW5cbiAgICAgIChzb21lPyBhbGlhcylcbiAgICAgIHtya1xuICAgICAgIChtZXJnZVxuICAgICAgICB7YWxpYXMgbGlifVxuICAgICAgICB7bGliIGxpYn1cbiAgICAgICAgKHdoZW4ganMtbW9kdWxlLXByb3ZpZGVzIHtqcy1tb2R1bGUtcHJvdmlkZXMgbGlifSkpfSlcbiAgICAgKHdoZW5cbiAgICAgIChzb21lPyByZWZlcnJlZC13aXRob3V0LXJlbmFtZWQpXG4gICAgICB7dWtcbiAgICAgICAoYXBwbHlcbiAgICAgICAgaGFzaC1tYXBcbiAgICAgICAgKGludGVybGVhdmUgcmVmZXJyZWQtd2l0aG91dC1yZW5hbWVkIChyZXBlYXQgbGliKSkpfSlcbiAgICAgKHdoZW5cbiAgICAgIChzb21lPyByZW5hbWVkKVxuICAgICAge3JlbmtcbiAgICAgICAocmVkdWNlXG4gICAgICAgIChmblxuICAgICAgICAgW20gW29yaWdpbmFsIHJlbmFtZWRdXVxuICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgKHNvbWUgI3tvcmlnaW5hbH0gcmVmZXJyZWQpXG4gICAgICAgICAgKHRocm93XG4gICAgICAgICAgIChlcnJvclxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAoc3RyIFwiUmVuYW1lZCBzeW1ib2wgXCIgb3JpZ2luYWwgXCIgbm90IHJlZmVycmVkXCIpKSkpXG4gICAgICAgICAoYXNzb2MgbSByZW5hbWVkIChzeW1ib2wgKHN0ciBsaWIpIChzdHIgb3JpZ2luYWwpKSkpXG4gICAgICAgIHt9XG4gICAgICAgIHJlbmFtZWQpfSkpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS13cmFwLW1ldGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXdyYXAtbWV0YVxuIFtleHByXVxuIChsZXRcbiAgW2Zvcm0gKDpmb3JtIGV4cHIpIG0gKGVsaWRlLWlycmVsZXZhbnQtbWV0YSAobWV0YSBmb3JtKSldXG4gIChpZlxuICAgKHNvbWU/IChzZXEgbSkpXG4gICAobGV0XG4gICAgW2VudlxuICAgICAoOmVudiBleHByKVxuICAgICBleHByXG4gICAgIChhc3NvYy1pbiBleHByIFs6ZW52IDpjb250ZXh0XSA6ZXhwcilcbiAgICAgbWV0YS1leHByXG4gICAgIChhbmFseXplLW1hcCAoOmVudiBleHByKSBtKV1cbiAgICB7Om9wIDp3aXRoLW1ldGEsXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6bWV0YSBtZXRhLWV4cHIsXG4gICAgIDpleHByIGV4cHIsXG4gICAgIDpjaGlsZHJlbiBbOm1ldGEgOmV4cHJdfSlcbiAgIGV4cHIpKSlcbiJ9IHs6c3ltIGdldC1qcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtanMtdGFnXG4gW2Zvcm1dXG4gKGxldFxuICBbZm9ybS1tZXRhIChtZXRhIGZvcm0pXVxuICAoaWYtc29tZVxuICAgW3RhZyAoOnRhZyBmb3JtLW1ldGEpXVxuICAgdGFnXG4gICAod2hlbiAodHJ1ZT8gKDpudW1lcmljIGZvcm0tbWV0YSkpICdudW1iZXIpKSkpXG4ifSB7OnN5bSAqYW5hbHl6ZS1kZXBzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmFuYWx5emUtZGVwcyogdHJ1ZSlcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJpbmRpbmdzKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbmNsLWVudiBiaW5kaW5ncyBvcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1iaW5kaW5ncypcbiBbZW5jbC1lbnYgYmluZGluZ3Mgb3BdXG4gKGxvb3BcbiAgW2Jlc1xuICAgW11cbiAgIGVudlxuICAgKGFzc29jIGVuY2wtZW52IDpjb250ZXh0IDpleHByKVxuICAgYmluZGluZ3NcbiAgIChzZXEgKHBhcnRpdGlvbiAyIGJpbmRpbmdzKSldXG4gIChpZi1zb21lXG4gICBbW25hbWUgaW5pdF0gKGZpcnN0IGJpbmRpbmdzKV1cbiAgIChsZXRcbiAgICBbXVxuICAgICh3aGVuXG4gICAgIChvclxuICAgICAgKHNvbWU/IChuYW1lc3BhY2UgbmFtZSkpXG4gICAgICAjPyg6Y2xqICguY29udGFpbnMgKHN0ciBuYW1lKSBcIi5cIikgOmNsanMgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIChzdHIgbmFtZSkgXCIuXCIpKSlcbiAgICAgKHRocm93IChlcnJvciBlbmNsLWVudiAoc3RyIFwiSW52YWxpZCBsb2NhbCBuYW1lOiBcIiBuYW1lKSkpKVxuICAgIChsZXRcbiAgICAgW2luaXQtZXhwclxuICAgICAgKGFuYWx5emUtbGV0LWJpbmRpbmctaW5pdFxuICAgICAgIGVudlxuICAgICAgIGluaXRcbiAgICAgICAoY29ucyB7OnBhcmFtcyBiZXN9ICpsb29wLWxldHMqKSlcbiAgICAgIGxpbmVcbiAgICAgIChnZXQtbGluZSBuYW1lIGVudilcbiAgICAgIGNvbFxuICAgICAgKGdldC1jb2wgbmFtZSBlbnYpXG4gICAgICBzaGFkb3dcbiAgICAgIChoYW5kbGUtc3ltYm9sLWxvY2FsIG5hbWUgKGdldC1pbiBlbnYgWzpsb2NhbHMgbmFtZV0pKVxuICAgICAgYmVcbiAgICAgIHs6Y2hpbGRyZW4gWzppbml0XSxcbiAgICAgICA6aW5pdCBpbml0LWV4cHIsXG4gICAgICAgOm5hbWUgbmFtZSxcbiAgICAgICA6YmluZGluZy1mb3JtPyB0cnVlLFxuICAgICAgIDpvcCA6YmluZGluZyxcbiAgICAgICA6ZW52IHs6bGluZSBsaW5lLCA6Y29sdW1uIGNvbH0sXG4gICAgICAgOmNvbHVtbiBjb2wsXG4gICAgICAgOmxpbmUgbGluZSxcbiAgICAgICA6aW5mbyB7Om5hbWUgbmFtZSwgOnNoYWRvdyBzaGFkb3d9LFxuICAgICAgIDp0YWcgKGdldC1sZXQtdGFnIG5hbWUgaW5pdC1leHByKSxcbiAgICAgICA6c2hhZG93IHNoYWRvdyxcbiAgICAgICA6bG9jYWwgb3B9XG4gICAgICBiZVxuICAgICAgKGlmXG4gICAgICAgKD0gOmZuICg6b3AgaW5pdC1leHByKSlcbiAgICAgICAobWVyZ2VcbiAgICAgICAgYmVcbiAgICAgICAgezpmbi12YXIgdHJ1ZSxcbiAgICAgICAgIDptZXRob2RzXG4gICAgICAgICAoaW50b1xuICAgICAgICAgIFtdXG4gICAgICAgICAgKG1hcFxuICAgICAgICAgICAoZm4qXG4gICAgICAgICAgICBbcDFfXzQ1MDg2I11cbiAgICAgICAgICAgIChzZWxlY3Qta2V5cyBwMV9fNDUwODYjIFs6dGFnIDpmaXhlZC1hcml0eSA6dmFyaWFkaWM/XSkpXG4gICAgICAgICAgICg6bWV0aG9kcyBpbml0LWV4cHIpKSksXG4gICAgICAgICA6dmFyaWFkaWM/ICg6dmFyaWFkaWM/IGluaXQtZXhwciksXG4gICAgICAgICA6bWF4LWZpeGVkLWFyaXR5ICg6bWF4LWZpeGVkLWFyaXR5IGluaXQtZXhwciksXG4gICAgICAgICA6bWV0aG9kLXBhcmFtcyAobWFwIDpwYXJhbXMgKDptZXRob2RzIGluaXQtZXhwcikpfSlcbiAgICAgICBiZSldXG4gICAgIChyZWN1clxuICAgICAgKGNvbmogYmVzIGJlKVxuICAgICAgKGFzc29jLWluIGVudiBbOmxvY2FscyBuYW1lXSBiZSlcbiAgICAgIChuZXh0IGJpbmRpbmdzKSkpKVxuICAgW2JlcyBlbnZdKSkpXG4ifSB7OnN5bSByZXNvbHZlLWltcG9ydCwgOm1ldGEgezpkb2MgImdvb2cubW9kdWxlcyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgYXNzaWduZWQgdG8gYSBwcm9wZXJ0eSBvZiB0aGUgbmFtZXNwYWNlLFxuICAgd2UgY2Fubm90IGV4cGVjdCB0aGUgcmVmZXJlbmNlIHdpbGwgYmUgZ2xvYmFsbHkgYXZhaWxhYmxlLCBzbyB3ZSByZXNvbHZlIHRvXG4gICBuYW1lc3BhY2UgbG9jYWwgcmVmZXJlbmNlLiIsIDphcmdsaXN0cyAoW2VudiBpbXBvcnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1pbXBvcnRcbiBcImdvb2cubW9kdWxlcyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgYXNzaWduZWQgdG8gYSBwcm9wZXJ0eSBvZiB0aGUgbmFtZXNwYWNlLFxcbiAgIHdlIGNhbm5vdCBleHBlY3QgdGhlIHJlZmVyZW5jZSB3aWxsIGJlIGdsb2JhbGx5IGF2YWlsYWJsZSwgc28gd2UgcmVzb2x2ZSB0b1xcbiAgIG5hbWVzcGFjZSBsb2NhbCByZWZlcmVuY2UuXCJcbiBbZW52IGltcG9ydF1cbiAoaWZcbiAgKGdvb2ctbW9kdWxlLWRlcD8gaW1wb3J0KVxuICAoc3ltYm9sIChtdW5nZS1nb29nLW1vZHVsZS1saWIgKC0+IGVudiA6bnMgOm5hbWUpIGltcG9ydCkpXG4gIGltcG9ydCkpXG4ifSB7OnN5bSBhbmFseXNpcy1lcnJvcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHlzaXMtZXJyb3I/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2V4XVxuICg9IDpjbGpzL2FuYWx5c2lzLWVycm9yICg6dGFnIChleC1kYXRhIGV4KSkpKVxuIn0gezpzeW0gcmVwbGFjZS1lbnYtcGFzcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuZXctZW52XSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2UtZW52LXBhc3NcbiBbbmV3LWVudl1cbiAoZm4gW2VudiBhc3Qgb3B0c10gKGFzc29jIGFzdCA6ZW52IG5ldy1lbnYpKSlcbiJ9IHs6c3ltIHBhcnNlLW5zLWV4Y2x1ZGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLW5zLWV4Y2x1ZGVzXG4gW2VudiBhcmdzXVxuIChyZWR1Y2VcbiAgKGZuXG4gICBbcyBbayAmIGZpbHRlcnNdXVxuICAgKGlmXG4gICAgKD0gayA6cmVmZXItY2xvanVyZSlcbiAgICAoZG9cbiAgICAgKHdoZW5cbiAgICAgIChzZXEgKDpleGNsdWRlcyBzKSlcbiAgICAgICh0aHJvd1xuICAgICAgIChlcnJvclxuICAgICAgICBlbnZcbiAgICAgICAgXCJPbmx5IG9uZSA6cmVmZXItY2xvanVyZSBmb3JtIGlzIGFsbG93ZWQgcGVyIG5hbWVzcGFjZSBkZWZpbml0aW9uXCIpKSlcbiAgICAgKGxldFxuICAgICAgW3ZhbGlkLWt3c1xuICAgICAgICN7OmV4Y2x1ZGUgOnJlbmFtZX1cbiAgICAgICB4c1xuICAgICAgIChsb29wXG4gICAgICAgIFtmc1xuICAgICAgICAgKHNlcSBmaWx0ZXJzKVxuICAgICAgICAgcmV0XG4gICAgICAgICB7OmV4Y2x1ZGVzICN7fSwgOnJlbmFtZXMge319XG4gICAgICAgICBlcnJcbiAgICAgICAgIChub3QgKGV2ZW4/IChjb3VudCBmaWx0ZXJzKSkpXVxuICAgICAgICAoY29uZFxuICAgICAgICAgKHRydWU/IGVycilcbiAgICAgICAgICh0aHJvd1xuICAgICAgICAgIChlcnJvclxuICAgICAgICAgICBlbnZcbiAgICAgICAgICAgXCJPbmx5IFs6cmVmZXItY2xvanVyZSA6ZXhjbHVkZSAobmFtZXMpXSBhbmQgb3B0aW9uYWxseSBgOnJlbmFtZSB7ZnJvbSB0b31gIHNwZWNzIHN1cHBvcnRlZFwiKSlcbiAgICAgICAgIChzb21lPyBmcylcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBba3cgKGZpcnN0IGZzKV1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKHZhbGlkLWt3cyBrdylcbiAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgW3JlZnMgKHNlY29uZCBmcyldXG4gICAgICAgICAgICAoY29uZFxuICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgKG9yXG4gICAgICAgICAgICAgICAoYW5kXG4gICAgICAgICAgICAgICAgKD0ga3cgOmV4Y2x1ZGUpXG4gICAgICAgICAgICAgICAgKHNlcXVlbnRpYWw/IHJlZnMpXG4gICAgICAgICAgICAgICAgKGV2ZXJ5PyBzeW1ib2w/IHJlZnMpKVxuICAgICAgICAgICAgICAgKGFuZFxuICAgICAgICAgICAgICAgICg9IGt3IDpyZW5hbWUpXG4gICAgICAgICAgICAgICAgKG1hcD8gcmVmcylcbiAgICAgICAgICAgICAgICAoZXZlcnk/XG4gICAgICAgICAgICAgICAgIChmbiogW3AxX180NTA5NiNdIChldmVyeT8gc3ltYm9sPyBwMV9fNDUwOTYjKSlcbiAgICAgICAgICAgICAgICAgcmVmcykpKSlcbiAgICAgICAgICAgICAocmVjdXIgZnMgcmV0IHRydWUpXG4gICAgICAgICAgICAgKD0ga3cgOmV4Y2x1ZGUpXG4gICAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAgIChubmV4dCBmcylcbiAgICAgICAgICAgICAgKHVwZGF0ZS1pbiByZXQgWzpleGNsdWRlc10gaW50byByZWZzKVxuICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAoPSBrdyA6cmVuYW1lKVxuICAgICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAgICAobm5leHQgZnMpXG4gICAgICAgICAgICAgICh1cGRhdGUtaW4gcmV0IFs6cmVuYW1lc10gbWVyZ2UgcmVmcylcbiAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgKHJlY3VyIGZzIHJldCB0cnVlKSkpXG4gICAgICAgICA6ZWxzZVxuICAgICAgICAgcmV0KSldXG4gICAgICAobWVyZ2Utd2l0aCBpbnRvIHMgeHMpKSlcbiAgICBzKSlcbiAgezpleGNsdWRlcyAje30sIDpyZW5hbWVzIHt9fVxuICBhcmdzKSlcbiJ9IHs6c3ltIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZW52IGxvY2FscyB0eXBlIG1ldGhzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMlxuIFttZW52IGxvY2FscyB0eXBlIG1ldGhzXVxuIChhbmFseXplLWZuLW1ldGhvZHMtcGFzczIqIG1lbnYgbG9jYWxzIHR5cGUgbWV0aHMpKVxuIn0gezpzeW0gY29yZS1uYW1lPywgOm1ldGEgezpkb2MgIklzIHN5bSB2aXNpYmxlIGZyb20gY29yZSBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiBuYW1lc3BhY2U/IiwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb3JlLW5hbWU/XG4gXCJJcyBzeW0gdmlzaWJsZSBmcm9tIGNvcmUgaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gbmFtZXNwYWNlP1wiXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBzeW1dXG4gKGFuZFxuICAob3JcbiAgIChzb21lP1xuICAgIChnZXRzXG4gICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICdjbGpzLmNvcmVcbiAgICAgOmRlZnNcbiAgICAgc3ltKSlcbiAgIChpZi1zb21lXG4gICAgW21hYyAoZ2V0LWV4cGFuZGVyIHN5bSBlbnYpXVxuICAgIChsZXRcbiAgICAgW25zICgtPiBtYWMgbWV0YSA6bnMpXVxuICAgICAoPVxuICAgICAgKC5nZXROYW1lIG5zKVxuICAgICAgIz8oOmNsaiAocXVvdGUgY2xqcy5jb3JlKSA6Y2xqcyAocXVvdGUgY2xqcy5jb3JlJG1hY3JvcykpKSlcbiAgICBmYWxzZSkpXG4gIChub3QgKGNvbnRhaW5zPyAoLT4gZW52IDpucyA6ZXhjbHVkZXMpIHN5bSkpKSlcbiJ9IHs6c3ltIGdldC1sZXQtdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25hbWUgaW5pdC1leHByXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1sZXQtdGFnXG4gW25hbWUgaW5pdC1leHByXVxuIChpZi1zb21lXG4gIFt0YWcgKC0+IG5hbWUgbWV0YSA6dGFnKV1cbiAgdGFnXG4gIChpZi1zb21lIFt0YWcgKC0+IGluaXQtZXhwciA6dGFnKV0gdGFnICgtPiBpbml0LWV4cHIgOmluZm8gOnRhZykpKSlcbiJ9IHs6c3ltIHNwZWNpYWxzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNwZWNpYWxzXG4gJyN7JlxuICAgIGNhc2UqXG4gICAgZGVmcmVjb3JkKlxuICAgIHRyeVxuICAgIG5zKlxuICAgIGxvb3AqXG4gICAgZG9cbiAgICBsZXRmbipcbiAgICBpZlxuICAgIG5ld1xuICAgIG5zXG4gICAgZGVmdHlwZSpcbiAgICBsZXQqXG4gICAganMqXG4gICAgZm4qXG4gICAgcmVjdXJcbiAgICBzZXQhXG4gICAgLlxuICAgIHZhclxuICAgIHF1b3RlXG4gICAgdGhyb3dcbiAgICBkZWZ9KVxuIn0gezpzeW0gZWxpZGUtaXJyZWxldmFudC1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuXG4gZWxpZGUtaXJyZWxldmFudC1tZXRhXG4gW21dXG4gKC0+IG0gZWxpZGUtcmVhZGVyLW1ldGEgZWxpZGUtYW5hbHl6ZXItbWV0YSkpXG4ifSB7OnN5bSByZXNvbHZlLW1hY3JvLW5zLWFsaWFzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBuYW1lXSBbZW52IG5hbWUgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtbWFjcm8tbnMtYWxpYXNcbiAoW2VudiBuYW1lXSAocmVzb2x2ZS1tYWNyby1ucy1hbGlhcyBlbnYgbmFtZSAoc3ltYm9sIG5hbWUpKSlcbiAoW2VudiBuYW1lIG5vdC1mb3VuZF1cbiAgKGxldFxuICAgW3N5bSAoc3ltYm9sIG5hbWUpXVxuICAgKGdldCAoOnJlcXVpcmUtbWFjcm9zICg6bnMgZW52KSkgc3ltIG5vdC1mb3VuZCkpKSlcbiJ9IHs6c3ltIGNoZWNrLWludm9rZS1hcmctdHlwZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHs6a2V5cyBbb3BdLCA6YXMgYXN0fSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNrLWludm9rZS1hcmctdHlwZXNcbiBbZW52IHs6a2V5cyBbb3BdLCA6YXMgYXN0fSBvcHRzXVxuICh3aGVuXG4gIChhbmRcbiAgIChub3QgKGFuYWx5emVkPyBhc3QpKVxuICAgIz8oOmNsaiAoPSA6aW52b2tlIG9wKSA6Y2xqcyAoa2V5d29yZC1pZGVudGljYWw/IDppbnZva2Ugb3ApKSlcbiAgKHdoZW4tc29tZVxuICAgW1tuYW1lIHs6a2V5cyBbdmFsaWQ/IHdhcm5pbmctdHlwZV19XVxuICAgIChmaW5kIGludm9rZS1hcmctdHlwZS12YWxpZGF0b3JzICgtPiBhc3QgOmZuIDppbmZvIDpuYW1lKSldXG4gICAobGV0XG4gICAgW3R5cGVzIChtYXB2IDp0YWcgKDphcmdzIGFzdCkpXVxuICAgICh3aGVuLW5vdFxuICAgICAodmFsaWQ/IHR5cGVzKVxuICAgICAod2FybmluZyB3YXJuaW5nLXR5cGUgZW52IHs6bmFtZSBuYW1lLCA6dHlwZXMgdHlwZXN9KSkpKSlcbiAoYW5hbHl6ZWQgYXN0KSlcbiJ9IHs6c3ltIGNvbmZpcm0tbnMsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgbnMtc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhXG4gICBuYW1lc3BhY2UsIGNvbmZpcm0gdGhhdCB0aGUgbmFtZXNwYWNlIGV4aXN0cy4gV2FybiBpZiBub3QgZm91bmQuIiwgOmFyZ2xpc3RzIChbZW52IG5zLXN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25maXJtLW5zXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgbnMtc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhXFxuICAgbmFtZXNwYWNlLCBjb25maXJtIHRoYXQgdGhlIG5hbWVzcGFjZSBleGlzdHMuIFdhcm4gaWYgbm90IGZvdW5kLlwiXG4gW2VudiBucy1zeW1dXG4gKHdoZW5cbiAgKGFuZFxuICAgKG5vdD0gJ2NsanMuY29yZSBucy1zeW0pXG4gICAobmlsPyAoZ2V0IGltcGxpY2l0LW5zZXMgbnMtc3ltKSlcbiAgIChuaWw/IChnZXQgKC0+IGVudiA6bnMgOnJlcXVpcmVzKSBucy1zeW0pKVxuICAgKG5pbD8gKGdldHMgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMtc3ltKSlcbiAgICM/KDpjbGogKG5pbD8gKHV0aWwvbnMtPnNvdXJjZSBucy1zeW0pKSlcbiAgIChub3QgKGpzLW1vZHVsZS1leGlzdHM/IG5zLXN5bSkpKVxuICAod2FybmluZyA6dW5kZWNsYXJlZC1ucyBlbnYgezpucy1zeW0gbnMtc3ltLCA6anMtcHJvdmlkZSBucy1zeW19KSkpXG4ifSB7OnN5bSBkZWZhdWx0LW5hbWVzcGFjZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZGVmYXVsdC1uYW1lc3BhY2VzXG4gJ3tjbGpzLmNvcmUgezpuYW1lIGNsanMuY29yZX0sIGNsanMudXNlciB7Om5hbWUgY2xqcy51c2VyfX0pXG4ifSB7OnN5bSBjYW5vbmljYWxpemUtc3BlY3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2Fub25pY2FsaXplLXNwZWNzXG4gW3NwZWNzXVxuIChsZXRmblxuICBbKGNhbm9uaWNhbGl6ZVxuICAgIFtxdW90ZWQtc3BlYy1vci1rd11cbiAgICAoaWZcbiAgICAgKGtleXdvcmQ/IHF1b3RlZC1zcGVjLW9yLWt3KVxuICAgICBxdW90ZWQtc3BlYy1vci1rd1xuICAgICAoYXMtPlxuICAgICAgKHNlY29uZCBxdW90ZWQtc3BlYy1vci1rdylcbiAgICAgIHNwZWNcbiAgICAgIChpZiAob3IgKHZlY3Rvcj8gc3BlYykgKG1hcD8gc3BlYykpIHNwZWMgW3NwZWNdKSkpKV1cbiAgKG1hcCBjYW5vbmljYWxpemUgc3BlY3MpKSlcbiJ9IHs6c3ltIGNvbmZpcm0tdmFyLWV4aXN0cy10aHJvdywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZmlybS12YXItZXhpc3RzLXRocm93XG4gW11cbiAoZm5cbiAgW2VudiBwcmVmaXggc3VmZml4XVxuICAoY29uZmlybS12YXItZXhpc3RzXG4gICBlbnZcbiAgIHByZWZpeFxuICAgc3VmZml4XG4gICAoZm5cbiAgICBbZW52IHByZWZpeCBzdWZmaXhdXG4gICAgKHRocm93XG4gICAgIChlcnJvclxuICAgICAgZW52XG4gICAgICAoc3RyIFwiVW5hYmxlIHRvIHJlc29sdmUgdmFyOiBcIiBzdWZmaXggXCIgaW4gdGhpcyBjb250ZXh0XCIpKSkpKSkpXG4ifSB7OnN5bSBqcy1tb2R1bGUtZXhpc3RzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtbW9kdWxlLWV4aXN0cz9cbiBbbW9kdWxlXVxuIChqcy1tb2R1bGUtZXhpc3RzPypcbiAgKGdldC1pbiBAZW52Lypjb21waWxlciogWzpqcy1tb2R1bGUtaW5kZXhdKVxuICBtb2R1bGUpKVxuIn0gezpzeW0gdmFyLWFzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHZhci1hc3RcbiBbZW52IHN5bV1cbiAoYmluZGluZ1xuICBbKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIHRydWVdXG4gIChsZXRcbiAgIFtlbnZcbiAgICAoZGlzc29jIGVudiA6bG9jYWxzKVxuICAgIHZhclxuICAgIChyZXNvbHZlLXZhciBlbnYgc3ltIChjb25maXJtLXZhci1leGlzdHMtdGhyb3cpKVxuICAgIGV4cHItZW52XG4gICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcildXG4gICAod2hlbi1zb21lXG4gICAgW3Zhci1ucyAoOm5zIHZhcildXG4gICAgezp2YXIgKGFuYWx5emUgZXhwci1lbnYgc3ltKSxcbiAgICAgOnN5bVxuICAgICAoYW5hbHl6ZVxuICAgICAgZXhwci1lbnZcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdxdW90ZSlcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgIChzeW1ib2wgKG5hbWUgdmFyLW5zKSAobmFtZSAoOm5hbWUgdmFyKSkpKSkpKSksXG4gICAgIDptZXRhICh2YXItbWV0YSB2YXIgZXhwci1lbnYpfSkpKSlcbiJ9IHs6c3ltIGFkZC1jb25zdHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNvbXBpbGVyIHN0YXRlIGFuZCBhIG1hcCBmcm9tIGZ1bGx5IHF1YWxpZmllZCBzeW1ib2xzIHRvIGNvbnN0YW50XG4gIEVETiB2YWx1ZXMsIHVwZGF0ZSB0aGUgY29tcGlsZXIgc3RhdGUgbWFya2luZyB0aGVzZSB2YXJzIGFzIGNvbnN0IHRvIHN1cHBvcnRcbiAgZGlyZWN0IHN1YnN0aXR1dGlvbiBvZiB0aGVzZSB2YXJzIGluIHNvdXJjZS4iLCA6YXJnbGlzdHMgKFtjb21waWxlci1zdGF0ZSBjb25zdGFudHMtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1jb25zdHNcbiBcIkdpdmVuIGEgY29tcGlsZXIgc3RhdGUgYW5kIGEgbWFwIGZyb20gZnVsbHkgcXVhbGlmaWVkIHN5bWJvbHMgdG8gY29uc3RhbnRcXG4gIEVETiB2YWx1ZXMsIHVwZGF0ZSB0aGUgY29tcGlsZXIgc3RhdGUgbWFya2luZyB0aGVzZSB2YXJzIGFzIGNvbnN0IHRvIHN1cHBvcnRcXG4gIGRpcmVjdCBzdWJzdGl0dXRpb24gb2YgdGhlc2UgdmFycyBpbiBzb3VyY2UuXCJcbiBbY29tcGlsZXItc3RhdGUgY29uc3RhbnRzLW1hcF1cbiAocmVkdWNlLWt2XG4gIChmblxuICAgW2NvbXBpbGVyLXN0YXRlIHN5bSB2YWx1ZV1cbiAgIChsZXRcbiAgICBbbnMgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpXVxuICAgICh1cGRhdGUtaW5cbiAgICAgY29tcGlsZXItc3RhdGVcbiAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOmRlZnMgKHN5bWJvbCAobmFtZSBzeW0pKV1cbiAgICAgbWVyZ2VcbiAgICAgezpjb25zdC1leHByXG4gICAgICAoYmluZGluZ1xuICAgICAgIFsqcGFzc2VzKiAoY29uaiAqcGFzc2VzKiAocmVwbGFjZS1lbnYtcGFzcyB7OmNvbnRleHQgOmV4cHJ9KSldXG4gICAgICAgKGFuYWx5emUgKGVtcHR5LWVudikgdmFsdWUpKX0pKSlcbiAgY29tcGlsZXItc3RhdGVcbiAgY29uc3RhbnRzLW1hcCkpXG4ifSB7OnN5bSBlcnJvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tlbnYgbXNnXSBbZW52IG1zZyBjYXVzZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBlcnJvclxuIChbZW52IG1zZ10gKGVycm9yIGVudiBtc2cgbmlsKSlcbiAoW2VudiBtc2cgY2F1c2VdXG4gIChleC1pbmZvXG4gICAobWVzc2FnZSBlbnYgbXNnKVxuICAgKGFzc29jIChzb3VyY2UtaW5mbyBlbnYpIDp0YWcgOmNsanMvYW5hbHlzaXMtZXJyb3IpXG4gICBjYXVzZSkpKVxuIn0gezpzeW0gaW52b2tlYWJsZS1ucz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbnMgaXMgYSByZXF1aXJlZCBuYW1lc3BhY2UgYW5kIGEgSmF2YVNjcmlwdCBtb2R1bGUgdGhhdFxuICAgbWlnaHQgYmUgaW52b2tlYWJsZSBhcyBhIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW25zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnZva2VhYmxlLW5zP1xuIFwiUmV0dXJucyB0cnVlIGlmIG5zIGlzIGEgcmVxdWlyZWQgbmFtZXNwYWNlIGFuZCBhIEphdmFTY3JpcHQgbW9kdWxlIHRoYXRcXG4gICBtaWdodCBiZSBpbnZva2VhYmxlIGFzIGEgZnVuY3Rpb24uXCJcbiBbbnMgZW52XVxuIChsZXRcbiAgW25zIChyZXNvbHZlLW5zLWFsaWFzIGVudiBucyldXG4gIChhbmRcbiAgIChyZXF1aXJlZD8gbnMgZW52KVxuICAgKG9yXG4gICAgKGpzLW1vZHVsZS1leGlzdHM/IG5zKVxuICAgIChub2RlLW1vZHVsZS1kZXA/IG5zKVxuICAgIChkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyBucykpKSkpXG4ifSB7OnN5bSAqY2xqcy1ucyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLW5zKiAnY2xqcy51c2VyKVxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMgKHs6c3ltIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIEluZGV4aW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcbiAoW3Mtb3ItcmRyXSAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW5dIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4gbmlsKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxuICAoSW5kZXhpbmdQdXNoYmFja1JlYWRlci5cbiAgIChpZlxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxuICAgIHMtb3ItcmRyKVxuICAgMVxuICAgMVxuICAgdHJ1ZVxuICAgbmlsXG4gICAwXG4gICBmaWxlLW5hbWUpKSlcbiJ9IHs6c3ltIGxvZy1zb3VyY2UqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRlciBmXSl9LCA6c291cmNlICIoZGVmblxuIGxvZy1zb3VyY2UqXG4gW3JlYWRlciBmXVxuIChsZXRcbiAgW2J1ZmZlciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHJlYWRlcikpXVxuICAodHJ5XG4gICAoc3dhcCFcbiAgICAoLi1mcmFtZXMgcmVhZGVyKVxuICAgIHVwZGF0ZS1pblxuICAgIFs6b2Zmc2V0XVxuICAgIGNvbmpcbiAgICAoLmdldExlbmd0aCBidWZmZXIpKVxuICAgKGxldFxuICAgIFtyZXQgKGYpXVxuICAgIChpZlxuICAgICAoaW1wbGVtZW50cz8gSU1ldGEgcmV0KVxuICAgICAobWVyZ2UtbWV0YSByZXQgezpzb3VyY2UgKHBlZWstc291cmNlLWxvZyBAKC4tZnJhbWVzIHJlYWRlcikpfSlcbiAgICAgcmV0KSlcbiAgIChmaW5hbGx5IChzd2FwISAoLi1mcmFtZXMgcmVhZGVyKSB1cGRhdGUtaW4gWzpvZmZzZXRdIHJlc3QpKSkpKVxuIn0gezpzeW0gbWVyZ2UtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xubWV0YWRhdGEgbWVyZ2VkIG92ZXIgYG1gLiIsIDphcmdsaXN0cyAoW29iaiBtXSl9LCA6c291cmNlICIoZGVmblxuIG1lcmdlLW1ldGFcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xcbm1ldGFkYXRhIG1lcmdlZCBvdmVyIGBtYC5cIlxuIFtvYmogbV1cbiAobGV0XG4gIFtvcmlnLW1ldGEgKG1ldGEgb2JqKV1cbiAgKHdpdGgtbWV0YSBvYmogKG1lcmdlIG0gKGRpc3NvYyBvcmlnLW1ldGEgOnNvdXJjZSkpKSkpXG4ifSB7OnN5bSBSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChwZWVrLWNoYXIgcmVhZC1jaGFyKX0gezpzeW0gc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlclwiXG4gKFtzLW9yLXJkcl0gKHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgMSkpXG4gKFtzLW9yLXJkciBidWYtbGVuXVxuICAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuIG5pbCkpXG4gKFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1cbiAgKFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cbiAgIChpZlxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxuICAgIHMtb3ItcmRyKVxuICAgMVxuICAgMVxuICAgdHJ1ZVxuICAgbmlsXG4gICAwXG4gICBmaWxlLW5hbWVcbiAgIChhdG9tIHs6YnVmZmVyIChTdHJpbmdCdWZmZXIuKSwgOm9mZnNldCAnKDApfSkpKSlcbiJ9IHs6c3ltIHVucmVhZCwgOm1ldGEgezpkb2MgIlB1c2hlcyBiYWNrIGEgc2luZ2xlIGNoYXJhY3RlciBvbiB0byB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyIGNoXSl9LCA6cHJvdG9jb2wgSVB1c2hiYWNrUmVhZGVyfSB7OnN5bSBwZWVrLWNoYXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGNoYXIgZnJvbSB0aGUgUmVhZGVyIHdpdGhvdXQgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgcmVhZGVyIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIFJlYWRlcn0gezpzeW0gSVB1c2hiYWNrUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodW5yZWFkKX0gezpzeW0gaW5kZXhpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlciIsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleGluZy1yZWFkZXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgdGhlIHJlYWRlciBzYXRpc2ZpZXMgSW5kZXhpbmdSZWFkZXJcIlxuIFtyZHJdXG4gKGltcGxlbWVudHM/IEluZGV4aW5nUmVhZGVyIHJkcikpXG4ifSB7OnN5bSBzdHJpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFN0cmluZ1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIiwgOmFyZ2xpc3RzIFtbc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctcmVhZGVyXG4gXCJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmdcIlxuIChbc10gKFN0cmluZ1JlYWRlci4gcyAoY291bnQgcykgMCkpKVxuIn0gezpzeW0gcmVhZC1jaGFyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBjaGFyIGZyb20gdGhlIFJlYWRlciwgbmlsIGlmIHRoZSBlbmQgb2Ygc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBSZWFkZXJ9IHs6c3ltIGdldC1jb2x1bW4tbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0gezpzeW0gZ2V0LWZpbGUtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpbGUgbmFtZSB0aGUgcmVhZGVyIGlzIHJlYWRpbmcgZnJvbSwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9IHs6c3ltIHJlYWQtbGluZSwgOm1ldGEgezpkb2MgIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWQiLCA6YXJnbGlzdHMgW1tyZHJdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1saW5lXG4gXCJSZWFkcyBhIGxpbmUgZnJvbSB0aGUgcmVhZGVyIG9yIGZyb20gKmluKiBpZiBubyByZWFkZXIgaXMgc3BlY2lmaWVkXCJcbiAoW3Jkcl1cbiAgKGxvb3BcbiAgIFtjIChyZWFkLWNoYXIgcmRyKSBzIChTdHJpbmdCdWZmZXIuKV1cbiAgIChpZiAobmV3bGluZT8gYykgKHN0ciBzKSAocmVjdXIgKHJlYWQtY2hhciByZHIpICguYXBwZW5kIHMgYykpKSkpKVxuIn0gezpzeW0gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyIsIDphcmdsaXN0cyBbW3NdIFtzIGJ1Zi1sZW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nXCJcbiAoW3NdIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzIDEpKVxuIChbcyBidWYtbGVuXVxuICAoUHVzaGJhY2tSZWFkZXIuXG4gICAoc3RyaW5nLXJlYWRlciBzKVxuICAgKG9iamVjdC1hcnJheSBidWYtbGVuKVxuICAgYnVmLWxlblxuICAgYnVmLWxlbikpKVxuIn0gezpzeW0gbGluZS1zdGFydD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lIiwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtc3RhcnQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lXCJcbiBbcmRyXVxuICh3aGVuIChpbmRleGluZy1yZWFkZXI/IHJkcikgKD09IDEgKGdldC1jb2x1bW4tbnVtYmVyIHJkcikpKSlcbiJ9IHs6c3ltIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj9cbiBbcmRyXVxuIChpbnN0YW5jZT8gU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIHJkcikpXG4ifSB7OnN5bSBJbmRleGluZ1JlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGdldC1jb2x1bW4tbnVtYmVyIGdldC1maWxlLW5hbWUgZ2V0LWxpbmUtbnVtYmVyKX0gezpzeW0gbm9kZS1yZWFkYWJsZS1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRhYmxlXSl9LCA6c291cmNlICIoZGVmblxuIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlclxuIFtyZWFkYWJsZV1cbiAoUHVzaGJhY2tSZWFkZXIuXG4gIChOb2RlUmVhZGFibGVSZWFkZXIuIHJlYWRhYmxlIG5pbClcbiAgKG9iamVjdC1hcnJheSAxKVxuICAxXG4gIDEpKVxuIn0gezpzeW0gZ2V0LWxpbmUtbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9KSwgc2FibG9uby5ub3JtYWxpemUgKHs6c3ltIG1hcC1sb29rdXA/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGB4YCBpcyBhIG1hcCBsb29rdXAgZm9ybSwgb3RoZXJ3aXNlIGZhbHNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLWxvb2t1cD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBgeGAgaXMgYSBtYXAgbG9va3VwIGZvcm0sIG90aGVyd2lzZSBmYWxzZS5cIlxuIFt4XVxuIChhbmQgKGxpc3Q/IHgpIChrZXl3b3JkPyAoZmlyc3QgeCkpKSlcbiJ9IHs6c3ltIGF0dHJpYnV0ZXMsIDptZXRhIHs6ZG9jICJOb3JtYWxpemUgdGhlIGBhdHRyc2Agb2YgYW4gZWxlbWVudC4iLCA6YXJnbGlzdHMgKFthdHRyc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhdHRyaWJ1dGVzXG4gXCJOb3JtYWxpemUgdGhlIGBhdHRyc2Agb2YgYW4gZWxlbWVudC5cIlxuIFthdHRyc11cbiAoY29uZC0+IGF0dHJzICg6Y2xhc3MgYXR0cnMpICh1cGRhdGUtaW4gWzpjbGFzc10gY2xhc3MpKSlcbiJ9IHs6c3ltIGNvbXBhY3QtbWFwLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBhbGwgbWFwIGVudHJpZXMgd2hlcmUgdGhlIHZhbHVlIG9mIHRoZSBlbnRyeSBpcyBlbXB0eS4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGNvbXBhY3QtbWFwXG4gXCJSZW1vdmVzIGFsbCBtYXAgZW50cmllcyB3aGVyZSB0aGUgdmFsdWUgb2YgdGhlIGVudHJ5IGlzIGVtcHR5LlwiXG4gW21dXG4gKHdoZW4gbSAoaW50byB7fSAocmVtb3ZlIChmbiBbW18gdl1dIChlbXB0eT8gdikpKSBtKSkpXG4ifSB7OnN5bSBjaGlsZHJlbiwgOm1ldGEgezpkb2MgIk5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gb2YgYSBIVE1MIGVsZW1lbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGlsZHJlblxuIFwiTm9ybWFsaXplIHRoZSBjaGlsZHJlbiBvZiBhIEhUTUwgZWxlbWVudC5cIlxuIFt4XVxuICgtPj5cbiAgKGNvbmRcbiAgIChuaWw/IHgpXG4gICAnKClcbiAgIChzdHJpbmc/IHgpXG4gICAobGlzdCB4KVxuICAgKHV0aWwvZWxlbWVudD8geClcbiAgIChsaXN0IHgpXG4gICAoYW5kIChsaXN0PyB4KSAoc3ltYm9sPyAoZmlyc3QgeCkpKVxuICAgKGxpc3QgeClcbiAgIChsaXN0PyB4KVxuICAgeFxuICAgKGFuZFxuICAgIChzZXF1ZW50aWFsPyB4KVxuICAgICg9IChjb3VudCB4KSAxKVxuICAgIChzZXF1ZW50aWFsPyAoZmlyc3QgeCkpXG4gICAgKG5vdCAoc3RyaW5nPyAoZmlyc3QgeCkpKVxuICAgIChub3QgKHV0aWwvZWxlbWVudD8gKGZpcnN0IHgpKSkpXG4gICAoY2hpbGRyZW4gKGZpcnN0IHgpKVxuICAgKHNlcXVlbnRpYWw/IHgpXG4gICB4XG4gICA6ZWxzZVxuICAgKGxpc3QgeCkpXG4gIChyZW1vdmUgbmlsPykpKVxuIn0gezpzeW0gZWxlbWVudCwgOm1ldGEgezpkb2MgIkVuc3VyZSBhbiBlbGVtZW50IHZlY3RvciBpcyBvZiB0aGUgZm9ybSBbdGFnLW5hbWUgYXR0cnMgY29udGVudF0uIiwgOmFyZ2xpc3RzIChbW3RhZyAmIGNvbnRlbnRdXSl9LCA6c291cmNlICIoZGVmblxuIGVsZW1lbnRcbiBcIkVuc3VyZSBhbiBlbGVtZW50IHZlY3RvciBpcyBvZiB0aGUgZm9ybSBbdGFnLW5hbWUgYXR0cnMgY29udGVudF0uXCJcbiBbW3RhZyAmIGNvbnRlbnRdXVxuICh3aGVuLW5vdFxuICAob3IgKGtleXdvcmQ/IHRhZykgKHN5bWJvbD8gdGFnKSAoc3RyaW5nPyB0YWcpKVxuICAodGhyb3dcbiAgIChleC1pbmZvXG4gICAgKHN0ciB0YWcgXCIgaXMgbm90IGEgdmFsaWQgZWxlbWVudCBuYW1lLlwiKVxuICAgIHs6dGFnIHRhZywgOmNvbnRlbnQgY29udGVudH0pKSlcbiAobGV0XG4gIFtbdGFnIGlkIGNsYXNzXVxuICAgKG1hdGNoLXRhZyB0YWcpXG4gICB0YWctYXR0cnNcbiAgIChjb21wYWN0LW1hcCB7OmlkIGlkLCA6Y2xhc3MgY2xhc3N9KVxuICAgbWFwLWF0dHJzXG4gICAoZmlyc3QgY29udGVudCldXG4gIChpZlxuICAgKGF0dHJzPyBtYXAtYXR0cnMpXG4gICBbdGFnXG4gICAgKG1lcmdlLXdpdGgtY2xhc3MgdGFnLWF0dHJzIG1hcC1hdHRycylcbiAgICAoY2hpbGRyZW4gKG5leHQgY29udGVudCkpXVxuICAgW3RhZyAoYXR0cmlidXRlcyB0YWctYXR0cnMpIChjaGlsZHJlbiBjb250ZW50KV0pKSlcbiJ9IHs6c3ltIG1hdGNoLXRhZywgOm1ldGEgezpkb2MgIk1hdGNoIGBzYCBhcyBhIENTUyB0YWcgYW5kIHJldHVybiBhIHZlY3RvciBvZiB0YWcgbmFtZSwgQ1NTIGlkIGFuZFxuICBDU1MgY2xhc3Nlcy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIG1hdGNoLXRhZ1xuIFwiTWF0Y2ggYHNgIGFzIGEgQ1NTIHRhZyBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHRhZyBuYW1lLCBDU1MgaWQgYW5kXFxuICBDU1MgY2xhc3Nlcy5cIlxuIFtzXVxuIChsZXRcbiAgW21hdGNoZXNcbiAgIChyZS1zZXEgI1wiWyMuXT9bXiMuXStcIiAobmFtZSBzKSlcbiAgIFt0YWctbmFtZSBuYW1lc11cbiAgIChjb25kXG4gICAgKGVtcHR5PyBtYXRjaGVzKVxuICAgICh0aHJvdyAoZXgtaW5mbyAoc3RyIFwiQ2FuJ3QgbWF0Y2ggQ1NTIHRhZzogXCIgcykgezp0YWcgc30pKVxuICAgICgje1xcIyBcXC59IChmZmlyc3QgbWF0Y2hlcykpXG4gICAgW1wiZGl2XCIgbWF0Y2hlc11cbiAgICA6ZGVmYXVsdFxuICAgIFsoZmlyc3QgbWF0Y2hlcykgKHJlc3QgbWF0Y2hlcyldKV1cbiAgW3RhZy1uYW1lXG4gICAoc3RyaXAtY3NzXG4gICAgKHNvbWVcbiAgICAgKGZuKiBbcDFfXzQ1MDU2I10gKHdoZW4gKD0gXFwjIChmaXJzdCBwMV9fNDUwNTYjKSkgcDFfXzQ1MDU2IykpXG4gICAgIG5hbWVzKSlcbiAgIChpbnRvXG4gICAgW11cbiAgICAoY29tcFxuICAgICAoZmlsdGVyIChmbiogW3AxX180NTA1NyNdICg9IFxcLiAoZmlyc3QgcDFfXzQ1MDU3IykpKSlcbiAgICAgKG1hcCBzdHJpcC1jc3MpKVxuICAgIG5hbWVzKV0pKVxuIn0gezpzeW0gc3RyaXAtY3NzLCA6bWV0YSB7OmRvYyAiU3RyaXAgdGhlICMgYW5kIC4gY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYHNgLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaXAtY3NzXG4gXCJTdHJpcCB0aGUgIyBhbmQgLiBjaGFyYWN0ZXJzIGZyb20gdGhlIGJlZ2lubmluZyBvZiBgc2AuXCJcbiBbc11cbiAod2hlbiBzIChzdHIvcmVwbGFjZSBzICNcIl5bLiNdXCIgXCJcIikpKVxuIn0gezpzeW0gY2xhc3MsIDptZXRhIHs6ZG9jICJOb3JtYWxpemUgYGNsYXNzYCBpbnRvIGEgdmVjdG9yIG9mIGNsYXNzZXMuIiwgOmFyZ2xpc3RzIChbY2xhc3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xhc3NcbiBcIk5vcm1hbGl6ZSBgY2xhc3NgIGludG8gYSB2ZWN0b3Igb2YgY2xhc3Nlcy5cIlxuIFtjbGFzc11cbiAoY29uZFxuICAobmlsPyBjbGFzcylcbiAgbmlsXG4gIChtYXAtbG9va3VwPyBjbGFzcylcbiAgW2NsYXNzXVxuICAobGlzdD8gY2xhc3MpXG4gIChpZiAoc3ltYm9sPyAoZmlyc3QgY2xhc3MpKSBbY2xhc3NdIChtYXAgY2xhc3MtbmFtZSBjbGFzcykpXG4gIChzeW1ib2w/IGNsYXNzKVxuICBbY2xhc3NdXG4gIChzdHJpbmc/IGNsYXNzKVxuICBbY2xhc3NdXG4gIChrZXl3b3JkPyBjbGFzcylcbiAgWyhjbGFzcy1uYW1lIGNsYXNzKV1cbiAgKGFuZFxuICAgKG9yIChzZXQ/IGNsYXNzKSAoc2VxdWVudGlhbD8gY2xhc3MpKVxuICAgKGV2ZXJ5P1xuICAgIChmbiogW3AxX180NTA1NSNdIChvciAoa2V5d29yZD8gcDFfXzQ1MDU1IykgKHN0cmluZz8gcDFfXzQ1MDU1IykpKVxuICAgIGNsYXNzKSlcbiAgKG1hcHYgY2xhc3MtbmFtZSBjbGFzcylcbiAgKGFuZCAob3IgKHNldD8gY2xhc3MpIChzZXF1ZW50aWFsPyBjbGFzcykpKVxuICAobWFwdiBjbGFzcy1uYW1lIGNsYXNzKVxuICA6ZWxzZVxuICBjbGFzcykpXG4ifSB7OnN5bSBjbGFzcy1uYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNsYXNzLW5hbWUgW3hdIChjb25kIChzdHJpbmc/IHgpIHggKGtleXdvcmQ/IHgpIChuYW1lIHgpIDplbHNlIHgpKVxuIn0gezpzeW0gbWVyZ2Utd2l0aC1jbGFzcywgOm1ldGEgezpkb2MgIkxpa2UgY2xvanVyZS5jb3JlL21lcmdlIGJ1dCBjb25jYXRlbmF0ZSA6Y2xhc3MgZW50cmllcy4iLCA6YXJnbGlzdHMgKFsmIG1hcHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2Utd2l0aC1jbGFzc1xuIFwiTGlrZSBjbG9qdXJlLmNvcmUvbWVyZ2UgYnV0IGNvbmNhdGVuYXRlIDpjbGFzcyBlbnRyaWVzLlwiXG4gWyYgbWFwc11cbiAobGV0XG4gIFttYXBzIChtYXAgYXR0cmlidXRlcyBtYXBzKSBjbGFzc2VzIChtYXBjYXQgOmNsYXNzIG1hcHMpXVxuICAod2hlblxuICAgKHNlcSBtYXBzKVxuICAgKGNvbmQtPlxuICAgIChyZWR1Y2UgaW50byB7fSBtYXBzKVxuICAgIChub3QgKGVtcHR5PyBjbGFzc2VzKSlcbiAgICAoYXNzb2MgOmNsYXNzICh2ZWMgY2xhc3NlcykpKSkpKVxuIn0pLCBwbGF5LWNsamMubWF0aCAoezpzeW0gaW52ZXJzZS1tYXRyaXgsIDptZXRhIHs6ZG9jICJHaXZlbiB0d28gYXJndW1lbnRzLCByZXR1cm5zIHRoZSBpbnZlcnNlIG9mIHRoZSBnaXZlbiAzeDMgbWF0cml4LlxuICBJZiBhbiBhZGRpdGlvbmFsIGBzaXplYCBhcmcgaXMgcHJvdmlkZWQsIHJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGdpdmVuIG1hdHJpeCBvZiB0aGF0IHNpemUuIiwgOmFyZ2xpc3RzIFtbbV0gW3NpemUgbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnZlcnNlLW1hdHJpeFxuIFwiR2l2ZW4gdHdvIGFyZ3VtZW50cywgcmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGUgZ2l2ZW4gM3gzIG1hdHJpeC5cXG4gIElmIGFuIGFkZGl0aW9uYWwgYHNpemVgIGFyZyBpcyBwcm92aWRlZCwgcmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGUgZ2l2ZW4gbWF0cml4IG9mIHRoYXQgc2l6ZS5cIlxuIChbbV0gKChpbnYtbWF0LWZuIDMpIG0pKVxuIChbc2l6ZSBtXVxuICAoY2FzZVxuICAgc2l6ZVxuICAgMlxuICAgKChpbnYtbWF0LWZuIDIpIG0pXG4gICAzXG4gICAoKGludi1tYXQtZm4gMykgbSlcbiAgIDRcbiAgICgoaW52LW1hdC1mbiA0KSBtKVxuICAgKGludi1tYXQgc2l6ZSBtKSkpKVxuIn0gezpzeW0gaWRlbnRpdHktbWF0cml4LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGlkZW50aXR5LW1hdHJpeFxuIChtZW1vaXplXG4gIChmblxuICAgW3NpemVdXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbcm93ICgtPnJhbmdlIHNpemUpIGNvbCAoLT5yYW5nZSBzaXplKV1cbiAgICAgKGlmICg9IHJvdyBjb2wpIDEgMCkpKSkpKVxuIn0gezpzeW0gdmVjdG9yLT5hcnJheSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmbiB2ZWN0b3ItPmFycmF5IFt2XSAoIz8oOmNsaiBmbG9hdC1hcnJheSA6Y2xqcyBjbGotPmpzKSB2KSlcbiJ9IHs6c3ltIGRlZy0+cmFkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RdKX0sIDpzb3VyY2UgIihkZWZuIGRlZy0+cmFkIFtkXSAoLT4gZCAoKiAobWF0aCBQSSkpICgvIDE4MCkpKVxuIn0gezpzeW0gdHJhbnNmb3JtLXZlY3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIHZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNmb3JtLXZlY3RvclxuIFttIHZdXG4gKGxldFxuICBbZHN0ICh2ZWN0b3ItPmFycmF5IHYpXVxuICAoZG90aW1lc1xuICAgW2kgNF1cbiAgICgjPyg6Y2xqIGFzZXQtZmxvYXQgOmNsanMgYXNldCkgZHN0IGkgMC4wKVxuICAgKGRvdGltZXNcbiAgICBbaiA0XVxuICAgICgjPyg6Y2xqIGFzZXQtZmxvYXQgOmNsanMgYXNldClcbiAgICAgZHN0XG4gICAgIGlcbiAgICAgKCsgKGFnZXQgZHN0IGkpICgqIChudGggdiBqKSAobnRoIG0gKC0+IGogKCogNCkgKCsgaSkpKSkpKSkpXG4gICh2ZWMgZHN0KSkpXG4ifSB7OnN5bSB4LXJvdGF0aW9uLW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthbmdsZS1pbi1yYWRpYW5zXSl9LCA6c291cmNlICIoZGVmblxuIHgtcm90YXRpb24tbWF0cml4LTNkXG4gW2FuZ2xlLWluLXJhZGlhbnNdXG4gKGxldFxuICBbYyAobWF0aCBjb3MgYW5nbGUtaW4tcmFkaWFucykgcyAobWF0aCBzaW4gYW5nbGUtaW4tcmFkaWFucyldXG4gIFsxIDAgMCAwIDAgYyBzIDAgMCAoLSBzKSBjIDAgMCAwIDAgMV0pKVxuIn0gezpzeW0gcGVyc3BlY3RpdmUtbWF0cml4LTNkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpZWxkLW9mLXZpZXcgYXNwZWN0IG5lYXIgZmFyXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNwZWN0aXZlLW1hdHJpeC0zZFxuIFtmaWVsZC1vZi12aWV3IGFzcGVjdCBuZWFyIGZhcl1cbiAobGV0XG4gIFtmXG4gICAobWF0aCB0YW4gKC0gKCogKG1hdGggUEkpIDAuNSkgKCogZmllbGQtb2YtdmlldyAwLjUpKSlcbiAgIHJhbmdlLWludlxuICAgKC8gMSAoLSBuZWFyIGZhcikpXVxuICBbKC8gZiBhc3BlY3QpXG4gICAwXG4gICAwXG4gICAwXG4gICAwXG4gICBmXG4gICAwXG4gICAwXG4gICAwXG4gICAwXG4gICAoKiAoKyBuZWFyIGZhcikgcmFuZ2UtaW52KVxuICAgLTFcbiAgIDBcbiAgIDBcbiAgICgqIG5lYXIgZmFyIHJhbmdlLWludiAyKVxuICAgMF0pKVxuIn0gezpzeW0gc2NhbGluZy1tYXRyaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ggc3ldKX0sIDpzb3VyY2UgIihkZWZuIHNjYWxpbmctbWF0cml4IFtzeCBzeV0gW3N4IDAgMCAwIHN5IDAgMCAwIDFdKVxuIn0gezpzeW0gei1yb3RhdGlvbi1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYW5nbGUtaW4tcmFkaWFuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB6LXJvdGF0aW9uLW1hdHJpeC0zZFxuIFthbmdsZS1pbi1yYWRpYW5zXVxuIChsZXRcbiAgW2MgKG1hdGggY29zIGFuZ2xlLWluLXJhZGlhbnMpIHMgKG1hdGggc2luIGFuZ2xlLWluLXJhZGlhbnMpXVxuICBbYyBzIDAgMCAoLSBzKSBjIDAgMCAwIDAgMSAwIDAgMCAwIDFdKSlcbiJ9IHs6c3ltIHJvdGF0aW9uLW1hdHJpeCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthbmdsZS1pbi1yYWRpYW5zXSl9LCA6c291cmNlICIoZGVmblxuIHJvdGF0aW9uLW1hdHJpeFxuIFthbmdsZS1pbi1yYWRpYW5zXVxuIChsZXRcbiAgW2MgKG1hdGggY29zIGFuZ2xlLWluLXJhZGlhbnMpIHMgKG1hdGggc2luIGFuZ2xlLWluLXJhZGlhbnMpXVxuICBbYyAoLSBzKSAwIHMgYyAwIDAgMCAxXSkpXG4ifSB7OnN5bSB0cmFuc2xhdGlvbi1tYXRyaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdHggdHldKX0sIDpzb3VyY2UgIihkZWZuIHRyYW5zbGF0aW9uLW1hdHJpeCBbdHggdHldIFsxIDAgMCAwIDEgMCB0eCB0eSAxXSlcbiJ9IHs6c3ltIHRyYW5zbGF0aW9uLW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0eCB0eSB0el0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2xhdGlvbi1tYXRyaXgtM2RcbiBbdHggdHkgdHpdXG4gWzEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIHR4IHR5IHR6IDFdKVxuIn0gezpzeW0gcHJvamVjdGlvbi1tYXRyaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbd2lkdGggaGVpZ2h0XSl9LCA6c291cmNlICIoZGVmblxuIHByb2plY3Rpb24tbWF0cml4XG4gW3dpZHRoIGhlaWdodF1cbiBbKC8gMiB3aWR0aCkgMCAwIDAgKC8gLTIgaGVpZ2h0KSAwIC0xIDEgMV0pXG4ifSB7OnN5bSBtdWx0aXBseS1tYXRyaWNlcy0zZCwgOm1ldGEgezpkb2MgIk11bHRpcGxpZXMgdHdvIDR4NCBtYXRyaWNlcy4iLCA6YXJnbGlzdHMgKFttMSBtMl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtdWx0aXBseS1tYXRyaWNlcy0zZFxuIFwiTXVsdGlwbGllcyB0d28gNHg0IG1hdHJpY2VzLlwiXG4gW20xIG0yXVxuICgobXVsLW1hdC1mbiA0KSBtMSAob3IgbTIgKGlkZW50aXR5LW1hdHJpeCA0KSkpKVxuIn0gezpzeW0gaW52ZXJzZS1tYXRyaXgtM2QsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW52ZXJzZS1tYXRyaXgtM2RcbiBcIlJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGdpdmVuIDR4NCBtYXRyaXguXCJcbiAoaW52LW1hdC1mbiA0KSlcbiJ9IHs6c3ltIHZlY3Rvci0+MmQtYXJyYXksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm4gdmVjdG9yLT4yZC1hcnJheSBbdl0gKCM/KDpjbGogdG8tYXJyYXktMmQgOmNsanMgY2xqLT5qcykgdikpXG4ifSB7OnN5bSBsb29rLWF0LW1hdHJpeCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YXJnZXQgdXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9vay1hdC1tYXRyaXhcbiBbdGFyZ2V0IHVwXVxuIChsZXRcbiAgW3otYXhpc1xuICAgKG5vcm1hbGl6ZSB0YXJnZXQpXG4gICB4LWF4aXNcbiAgIChub3JtYWxpemUgKGNyb3NzIHVwIHotYXhpcykpXG4gICB5LWF4aXNcbiAgIChub3JtYWxpemUgKGNyb3NzIHotYXhpcyB4LWF4aXMpKV1cbiAgWyhudGggeC1heGlzIDApXG4gICAobnRoIHgtYXhpcyAxKVxuICAgKG50aCB4LWF4aXMgMilcbiAgIChudGggeS1heGlzIDApXG4gICAobnRoIHktYXhpcyAxKVxuICAgKG50aCB5LWF4aXMgMilcbiAgIChudGggei1heGlzIDApXG4gICAobnRoIHotYXhpcyAxKVxuICAgKG50aCB6LWF4aXMgMildKSlcbiJ9IHs6c3ltIG11bHRpcGx5LW1hdHJpY2VzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gdHdvIGFyZ3VtZW50cywgbXVsdGlwbGllcyB0d28gM3gzIG1hdHJpY2VzLlxuICBJZiBhbiBhZGRpdGlvbmFsIGBzaXplYCBhcmcgaXMgcHJvdmlkZWQsIG11bHRpcGxlcyB0d28gbWF0cmljZXMgb2YgdGhhdCBzaXplLiIsIDphcmdsaXN0cyBbW20xIG0yXSBbc2l6ZSBtMSBtMl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtdWx0aXBseS1tYXRyaWNlc1xuIFwiR2l2ZW4gdHdvIGFyZ3VtZW50cywgbXVsdGlwbGllcyB0d28gM3gzIG1hdHJpY2VzLlxcbiAgSWYgYW4gYWRkaXRpb25hbCBgc2l6ZWAgYXJnIGlzIHByb3ZpZGVkLCBtdWx0aXBsZXMgdHdvIG1hdHJpY2VzIG9mIHRoYXQgc2l6ZS5cIlxuIChbbTEgbTJdICgobXVsLW1hdC1mbiAzKSBtMSAob3IgbTIgKGlkZW50aXR5LW1hdHJpeCAzKSkpKVxuIChbc2l6ZSBtMSBtMl1cbiAgKGxldFxuICAgW20yIChvciBtMiAoaWRlbnRpdHktbWF0cml4IHNpemUpKV1cbiAgIChjYXNlXG4gICAgc2l6ZVxuICAgIDJcbiAgICAoKG11bC1tYXQtZm4gMikgbTEgbTIpXG4gICAgM1xuICAgICgobXVsLW1hdC1mbiAzKSBtMSBtMilcbiAgICA0XG4gICAgKChtdWwtbWF0LWZuIDQpIG0xIG0yKVxuICAgIChtdWwtbWF0IHNpemUgbTEgbTIpKSkpKVxuIn0gezpzeW0gb3J0aG8tbWF0cml4LTNkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xlZnQgcmlnaHQgYm90dG9tIHRvcCBuZWFyIGZhcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvcnRoby1tYXRyaXgtM2RcbiBbbGVmdCByaWdodCBib3R0b20gdG9wIG5lYXIgZmFyXVxuIChsZXRcbiAgW3dpZHRoICgtIHJpZ2h0IGxlZnQpIGhlaWdodCAoLSB0b3AgYm90dG9tKSBkZXB0aCAoLSBuZWFyIGZhcildXG4gIFsoLyAyIHdpZHRoKVxuICAgMFxuICAgMFxuICAgMFxuICAgMFxuICAgKC8gMiBoZWlnaHQpXG4gICAwXG4gICAwXG4gICAwXG4gICAwXG4gICAoLyAyIGRlcHRoKVxuICAgMFxuICAgKC8gKCsgbGVmdCByaWdodCkgKC0gbGVmdCByaWdodCkpXG4gICAoLyAoKyBib3R0b20gdG9wKSAoLSBib3R0b20gdG9wKSlcbiAgICgvICgrIG5lYXIgZmFyKSAoLSBuZWFyIGZhcikpXG4gICAxXSkpXG4ifSB7OnN5bSBsb29rLWF0LW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjYW1lcmEtcG9zIHRhcmdldCB1cF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb29rLWF0LW1hdHJpeC0zZFxuIFtjYW1lcmEtcG9zIHRhcmdldCB1cF1cbiAobGV0XG4gIFt6LWF4aXNcbiAgIChub3JtYWxpemUgKHN1YnRyYWN0LXZlY3RvcnMgY2FtZXJhLXBvcyB0YXJnZXQpKVxuICAgeC1heGlzXG4gICAobm9ybWFsaXplIChjcm9zcyB1cCB6LWF4aXMpKVxuICAgeS1heGlzXG4gICAobm9ybWFsaXplIChjcm9zcyB6LWF4aXMgeC1heGlzKSldXG4gIFsobnRoIHgtYXhpcyAwKVxuICAgKG50aCB4LWF4aXMgMSlcbiAgIChudGggeC1heGlzIDIpXG4gICAwXG4gICAobnRoIHktYXhpcyAwKVxuICAgKG50aCB5LWF4aXMgMSlcbiAgIChudGggeS1heGlzIDIpXG4gICAwXG4gICAobnRoIHotYXhpcyAwKVxuICAgKG50aCB6LWF4aXMgMSlcbiAgIChudGggei1heGlzIDIpXG4gICAwXG4gICAobnRoIGNhbWVyYS1wb3MgMClcbiAgIChudGggY2FtZXJhLXBvcyAxKVxuICAgKG50aCBjYW1lcmEtcG9zIDIpXG4gICAxXSkpXG4ifSB7OnN5bSB5LXJvdGF0aW9uLW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthbmdsZS1pbi1yYWRpYW5zXSl9LCA6c291cmNlICIoZGVmblxuIHktcm90YXRpb24tbWF0cml4LTNkXG4gW2FuZ2xlLWluLXJhZGlhbnNdXG4gKGxldFxuICBbYyAobWF0aCBjb3MgYW5nbGUtaW4tcmFkaWFucykgcyAobWF0aCBzaW4gYW5nbGUtaW4tcmFkaWFucyldXG4gIFtjIDAgKC0gcykgMCAwIDEgMCAwIHMgMCBjIDAgMCAwIDAgMV0pKVxuIn0gezpzeW0gc2NhbGluZy1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ggc3kgc3pdKX0sIDpzb3VyY2UgIihkZWZuIHNjYWxpbmctbWF0cml4LTNkIFtzeCBzeSBzel0gW3N4IDAgMCAwIDAgc3kgMCAwIDAgMCBzeiAwIDAgMCAwIDFdKVxuIn0gezpzeW0gdHJhbnNwb3NlLW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zcG9zZS1tYXRyaXgtM2RcbiBbbV1cbiBbKG50aCBtIDApXG4gIChudGggbSA0KVxuICAobnRoIG0gOClcbiAgKG50aCBtIDEyKVxuICAobnRoIG0gMSlcbiAgKG50aCBtIDUpXG4gIChudGggbSA5KVxuICAobnRoIG0gMTMpXG4gIChudGggbSAyKVxuICAobnRoIG0gNilcbiAgKG50aCBtIDEwKVxuICAobnRoIG0gMTQpXG4gIChudGggbSAzKVxuICAobnRoIG0gNylcbiAgKG50aCBtIDExKVxuICAobnRoIG0gMTUpXSlcbiJ9KSwgZXhwb3VuZC51dGlsICh7OnN5bSBhc3NlcnQtbWVzc2FnZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhc3NlcnQtbWVzc2FnZVxuIFwiSW50ZXJuYWwgRXhwb3VuZCBhc3NlcnRpb24gZmFpbGVkLiBQbGVhc2UgcmVwb3J0IHRoaXMgYnVnIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9iaGIvZXhwb3VuZC9pc3N1ZXNcIilcbiJ9IHs6c3ltIG5hbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYW4/XG4gW3hdXG4gIz8oOmNsaiAoYW5kIChudW1iZXI/IHgpIChEb3VibGUvaXNOYU4geCkpIDpjbGpzIChhbmQgKG51bWJlcj8geCkgKGpzL2lzTmFOIHgpKSkpXG4ifSksIGNsanMuc291cmNlLW1hcCAoezpzeW0gdXBkYXRlLXJlc3VsdCwgOm1ldGEgezpkb2MgIkhlbHBlciBmb3IgZGVjb2RlLiBUYWtlIGEgc291cmNlIG1hcCBhbmQgdXBkYXRlIGl0IGJhc2VkIG9uIGFcbiAgc2VnbWVudCBtYXAuIiwgOmFyZ2xpc3RzIChbcmVzdWx0IHNlZ21hcCBnbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtcmVzdWx0XG4gXCJIZWxwZXIgZm9yIGRlY29kZS4gVGFrZSBhIHNvdXJjZSBtYXAgYW5kIHVwZGF0ZSBpdCBiYXNlZCBvbiBhXFxuICBzZWdtZW50IG1hcC5cIlxuIFtyZXN1bHQgc2VnbWFwIGdsaW5lXVxuIChsZXRcbiAgW3s6a2V5cyBbZ2NvbCBzb3VyY2UgbGluZSBjb2wgbmFtZV19XG4gICBzZWdtYXBcbiAgIGRcbiAgIHs6bGluZSBsaW5lLCA6Y29sIGNvbCwgOnNvdXJjZSBzb3VyY2V9XG4gICBkXG4gICAoaWYgbmFtZSAoYXNzb2MgZCA6bmFtZSBuYW1lKSBkKV1cbiAgKHVwZGF0ZS1pblxuICAgcmVzdWx0XG4gICBbZ2xpbmVdXG4gICAoZm5pbFxuICAgIChmblxuICAgICBbbV1cbiAgICAgKHVwZGF0ZS1pblxuICAgICAgbVxuICAgICAgW2djb2xdXG4gICAgICAoZm5pbCAoZm4qIFtwMV9fNDUwNTgjXSAoY29uaiBwMV9fNDUwNTgjIGQpKSBbXSkpKVxuICAgIChzb3J0ZWQtbWFwKSkpKSlcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgIlRha2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgIHNvcnRlZCBtYXBzIG9mIGZpbGUsIGxpbmUsIGNvbHVtbiBhbmQgcmV0dXJuIGEgc291cmNlIG1hcCB2MyBKU09OXG4gICBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbbSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGVuY29kZVxuIFwiVGFrZSBhbiBpbnRlcm5hbCBzb3VyY2UgbWFwIHJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxcbiAgIHNvcnRlZCBtYXBzIG9mIGZpbGUsIGxpbmUsIGNvbHVtbiBhbmQgcmV0dXJuIGEgc291cmNlIG1hcCB2MyBKU09OXFxuICAgc3RyaW5nLlwiXG4gW20gb3B0c11cbiAobGV0XG4gIFtsaW5lc1xuICAgKGF0b20gW1tdXSlcbiAgIG5hbWVzLT5pZHhcbiAgIChhdG9tIHt9KVxuICAgbmFtZS1pZHhcbiAgIChhdG9tIDApXG4gICBwcmVhbWJsZS1saW5lc1xuICAgKHRha2UgKG9yICg6cHJlYW1ibGUtbGluZS1jb3VudCBvcHRzKSAwKSAocmVwZWF0IFtdKSlcbiAgIGluZm8tPnNlZ3ZcbiAgIChmblxuICAgIFtpbmZvIHNvdXJjZS1pZHggbGluZSBjb2xdXG4gICAgKGxldFxuICAgICBbc2VndiBbKDpnY29sIGluZm8pIHNvdXJjZS1pZHggbGluZSBjb2xdXVxuICAgICAoaWYtbGV0XG4gICAgICBbbmFtZSAoOm5hbWUgaW5mbyldXG4gICAgICAobGV0XG4gICAgICAgW2lkeFxuICAgICAgICAoaWYtbGV0XG4gICAgICAgICBbaWR4IChnZXQgQG5hbWVzLT5pZHggbmFtZSldXG4gICAgICAgICBpZHhcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbY2lkeCBAbmFtZS1pZHhdXG4gICAgICAgICAgKHN3YXAhIG5hbWVzLT5pZHggYXNzb2MgbmFtZSBjaWR4KVxuICAgICAgICAgIChzd2FwISBuYW1lLWlkeCBpbmMpXG4gICAgICAgICAgY2lkeCkpXVxuICAgICAgIChjb25qIHNlZ3YgaWR4KSlcbiAgICAgIHNlZ3YpKSlcbiAgIGVuY29kZS1jb2xzXG4gICAoZm5cbiAgICBbaW5mb3Mgc291cmNlLWlkeCBsaW5lIGNvbF1cbiAgICAoZG9zZXFcbiAgICAgW2luZm8gaW5mb3NdXG4gICAgIChsZXRcbiAgICAgIFtzZWd2XG4gICAgICAgKGluZm8tPnNlZ3YgaW5mbyBzb3VyY2UtaWR4IGxpbmUgY29sKVxuICAgICAgIGdsaW5lXG4gICAgICAgKDpnbGluZSBpbmZvKVxuICAgICAgIGxjXG4gICAgICAgKGNvdW50IEBsaW5lcyldXG4gICAgICAoaWZcbiAgICAgICAoPiBnbGluZSAoZGVjIGxjKSlcbiAgICAgICAoc3dhcCFcbiAgICAgICAgbGluZXNcbiAgICAgICAgKGZuXG4gICAgICAgICBbbGluZXNdXG4gICAgICAgICAoY29ualxuICAgICAgICAgIChpbnRvIGxpbmVzIChyZXBlYXQgKGRlYyAoLSBnbGluZSAoZGVjIGxjKSkpIFtdKSlcbiAgICAgICAgICBbc2Vndl0pKSlcbiAgICAgICAoc3dhcCFcbiAgICAgICAgbGluZXNcbiAgICAgICAgKGZuIFtsaW5lc10gKHVwZGF0ZS1pbiBsaW5lcyBbZ2xpbmVdIGNvbmogc2VndikpKSkpKSldXG4gIChkb3NlcVxuICAgW1tzb3VyY2UtaWR4IFtfIGxpbmVzXV0gKG1hcC1pbmRleGVkIChmbiBbaSB2XSBbaSB2XSkgbSldXG4gICAoZG9zZXFcbiAgICBbW2xpbmUgY29sc10gbGluZXNdXG4gICAgKGRvc2VxXG4gICAgIFtbY29sIGluZm9zXSBjb2xzXVxuICAgICAoZW5jb2RlLWNvbHMgaW5mb3Mgc291cmNlLWlkeCBsaW5lIGNvbCkpKSlcbiAgKGxldFxuICAgW3NvdXJjZS1tYXAtZmlsZS1jb250ZW50c1xuICAgIChjb25kLT5cbiAgICAgI2pzIHtcInZlcnNpb25cIiAzLCBcImZpbGVcIiAoOmZpbGUgb3B0cyksIFwic291cmNlc1wiIChsZXQgW3BhdGhzIChrZXlzIG0pIGYgKGNvbXAgKGlmICh0cnVlPyAoOnNvdXJjZS1tYXAtdGltZXN0YW1wIG9wdHMpKSAoZm4qIFtwMV9fNDUwNTkjXSAoc3RyIHAxX180NTA1OSMgXCI/cmVsPVwiICgudmFsdWVPZiAoanMvRGF0ZS4pKSkpIGlkZW50aXR5KSAoZm4qIFtwMV9fNDUwNjAjXSAobGFzdCAoc3RyaW5nL3NwbGl0IHAxX180NTA2MCMgI1wiL1wiKSkpKV0gKC0+PiBwYXRocyAobWFwIGYpIChpbnRvLWFycmF5KSkpLCBcImxpbmVDb3VudFwiICg6bGluZXMgb3B0cyksIFwibWFwcGluZ3NcIiAoLT4+IChsaW5lcy0+c2VncyAoY29uY2F0IHByZWFtYmxlLWxpbmVzIChjbG9qdXJlLmNvcmUvZGVyZWYgbGluZXMpKSkgKG1hcCAoZm4qIFtwMV9fNDUwNjEjXSAoc3RyaW5nL2pvaW4gXCIsXCIgcDFfXzQ1MDYxIykpKSAoc3RyaW5nL2pvaW4gXCI7XCIpKSwgXCJuYW1lc1wiIChpbnRvLWFycmF5IChtYXAgKHNldC9tYXAtaW52ZXJ0IChjbG9qdXJlLmNvcmUvZGVyZWYgbmFtZXMtPmlkeCkpIChyYW5nZSAoY291bnQgKGNsb2p1cmUuY29yZS9kZXJlZiBuYW1lcy0+aWR4KSkpKSl9XG4gICAgICg6c291cmNlcy1jb250ZW50IG9wdHMpXG4gICAgIChkb3RvXG4gICAgICAoZ29iai9zZXRcbiAgICAgICBcInNvdXJjZXNDb250ZW50XCJcbiAgICAgICAoaW50by1hcnJheSAoOnNvdXJjZXMtY29udGVudCBvcHRzKSkpKSldXG4gICAoLnN0cmluZ2lmeSBqcy9KU09OIHNvdXJjZS1tYXAtZmlsZS1jb250ZW50cykpKSlcbiJ9IHs6c3ltIGludmVydC1yZXZlcnNlLW1hcCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgQ2xvanVyZVNjcmlwdCB0byBKYXZhU2NyaXB0IHNvdXJjZSBtYXAsIGludmVydCBpdC4gVXNlZnVsIHdoZW5cbiAgIG1hcHBpbmcgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMgd2hlbiBlbnZpcm9ubWVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLiIsIDphcmdsaXN0cyAoW3JldmVyc2UtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIGludmVydC1yZXZlcnNlLW1hcFxuIFwiR2l2ZW4gYSBDbG9qdXJlU2NyaXB0IHRvIEphdmFTY3JpcHQgc291cmNlIG1hcCwgaW52ZXJ0IGl0LiBVc2VmdWwgd2hlblxcbiAgIG1hcHBpbmcgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMgd2hlbiBlbnZpcm9ubWVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLlwiXG4gW3JldmVyc2UtbWFwXVxuIChsZXRcbiAgW2ludmVydGVkIChhdG9tIChzb3J0ZWQtbWFwKSldXG4gIChkb3NlcVxuICAgW1tsaW5lIGNvbHVtbnNdIHJldmVyc2UtbWFwXVxuICAgKGRvc2VxXG4gICAgW1tjb2x1bW4gY29sdW1uLWluZm9dIGNvbHVtbnNdXG4gICAgKGRvc2VxXG4gICAgIFt7OmtleXMgW2dsaW5lIGdjb2wgbmFtZV19IGNvbHVtbi1pbmZvXVxuICAgICAoc3dhcCFcbiAgICAgIGludmVydGVkXG4gICAgICB1cGRhdGUtaW5cbiAgICAgIFtnbGluZV1cbiAgICAgIChmbmlsXG4gICAgICAgKGZuXG4gICAgICAgIFtjb2x1bW5zXVxuICAgICAgICAodXBkYXRlLWluXG4gICAgICAgICBjb2x1bW5zXG4gICAgICAgICBbZ2NvbF1cbiAgICAgICAgIChmbmlsIGNvbmogW10pXG4gICAgICAgICB7OmxpbmUgbGluZSwgOmNvbCBjb2x1bW4sIDpuYW1lIG5hbWV9KSlcbiAgICAgICAoc29ydGVkLW1hcCkpKSkpKVxuICBAaW52ZXJ0ZWQpKVxuIn0gezpzeW0gZGVjb2RlLCA6bWV0YSB7OmRvYyAiQ29udmVydCBhIHYzIHNvdXJjZSBtYXAgSlNPTiBvYmplY3QgaW50byBhIHNvdXJjZSBtYXAgbWFwcGluZ1xuICBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgbG9jYXRpb25zIHRvIHRoZSBvcmlnaW5hbFxuICBDbG9qdXJlU2NyaXB0LiIsIDphcmdsaXN0cyBbW3NvdXJjZS1tYXBdIFttYXBwaW5ncyBzb3VyY2UtbWFwXV19LCA6c291cmNlICIoZGVmblxuIGRlY29kZVxuIFwiQ29udmVydCBhIHYzIHNvdXJjZSBtYXAgSlNPTiBvYmplY3QgaW50byBhIHNvdXJjZSBtYXAgbWFwcGluZ1xcbiAgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGxvY2F0aW9ucyB0byB0aGUgb3JpZ2luYWxcXG4gIENsb2p1cmVTY3JpcHQuXCJcbiAoW3NvdXJjZS1tYXBdIChkZWNvZGUgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJtYXBwaW5nc1wiKSBzb3VyY2UtbWFwKSlcbiAoW21hcHBpbmdzIHNvdXJjZS1tYXBdXG4gIChsZXRcbiAgIFtzb3VyY2VzXG4gICAgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpXG4gICAgcmVsc2VnLWluaXRcbiAgICBbMCAwIDAgMCAwXVxuICAgIGxpbmVzXG4gICAgKHNlcSAoc3RyaW5nL3NwbGl0IG1hcHBpbmdzICNcIjtcIikpXVxuICAgKGxvb3BcbiAgICBbZ2xpbmUgMCBsaW5lcyBsaW5lcyByZWxzZWcgcmVsc2VnLWluaXQgcmVzdWx0IHt9XVxuICAgIChpZlxuICAgICBsaW5lc1xuICAgICAobGV0XG4gICAgICBbbGluZVxuICAgICAgIChmaXJzdCBsaW5lcylcbiAgICAgICBbcmVzdWx0IHJlbHNlZ11cbiAgICAgICAoaWZcbiAgICAgICAgKHN0cmluZy9ibGFuaz8gbGluZSlcbiAgICAgICAgW3Jlc3VsdCByZWxzZWddXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzZWdzIChzZXEgKHN0cmluZy9zcGxpdCBsaW5lICNcIixcIikpXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbc2VncyBzZWdzIHJlbHNlZyByZWxzZWcgcmVzdWx0IHJlc3VsdF1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgc2Vnc1xuICAgICAgICAgICAobGV0XG4gICAgICAgICAgICBbc2VnXG4gICAgICAgICAgICAgKGZpcnN0IHNlZ3MpXG4gICAgICAgICAgICAgbnJlbHNlZ1xuICAgICAgICAgICAgIChzZWctY29tYmluZSAoYmFzZTY0LXZscS9kZWNvZGUgc2VnKSByZWxzZWcpXVxuICAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAgKG5leHQgc2VncylcbiAgICAgICAgICAgICBucmVsc2VnXG4gICAgICAgICAgICAgKHVwZGF0ZS1yZXN1bHRcbiAgICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgICAgIChzZWctPm1hcCBucmVsc2VnIHNvdXJjZS1tYXApXG4gICAgICAgICAgICAgIGdsaW5lKSkpXG4gICAgICAgICAgIFtyZXN1bHQgcmVsc2VnXSkpKSldXG4gICAgICAocmVjdXIgKGluYyBnbGluZSkgKG5leHQgbGluZXMpIChhc3NvYyByZWxzZWcgMCAwKSByZXN1bHQpKVxuICAgICByZXN1bHQpKSkpKVxuIn0gezpzeW0gc2VnLT5tYXAsIDptZXRhIHs6ZG9jICJUYWtlIGEgc291cmNlIG1hcCBzZWdtZW50IHJlcHJlc2VudGVkIGFzIGEgdmVjdG9yXG4gICBhbmQgcmV0dXJuIGEgbWFwLiIsIDphcmdsaXN0cyAoW3NlZyBzb3VyY2UtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHNlZy0+bWFwXG4gXCJUYWtlIGEgc291cmNlIG1hcCBzZWdtZW50IHJlcHJlc2VudGVkIGFzIGEgdmVjdG9yXFxuICAgYW5kIHJldHVybiBhIG1hcC5cIlxuIFtzZWcgc291cmNlLW1hcF1cbiAobGV0XG4gIFtbZ2NvbCBzb3VyY2UgbGluZSBjb2wgbmFtZV0gc2VnXVxuICB7Omdjb2wgZ2NvbCxcbiAgIDpzb3VyY2UgKGFnZXQgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpIHNvdXJjZSksXG4gICA6bGluZSBsaW5lLFxuICAgOmNvbCBjb2wsXG4gICA6bmFtZVxuICAgKHdoZW4tbGV0XG4gICAgW25hbWUgKC0+IHNlZyBtZXRhIDpuYW1lKV1cbiAgICAoYWdldCAoZ29iai9nZXQgc291cmNlLW1hcCBcIm5hbWVzXCIpIG5hbWUpKX0pKVxuIn0gezpzeW0gc291cmNlLWNvbXBhcmUsIDptZXRhIHs6ZG9jICJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBjb21wYXJhdG9yXG4gICB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIHNvcnRlZCBtYXAuIEZvciByZXZlcnNlXG4gICBzb3VyY2UgbWFwcy4iLCA6YXJnbGlzdHMgKFtzb3VyY2VzXSl9LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1jb21wYXJlXG4gXCJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBjb21wYXJhdG9yXFxuICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBzb3J0ZWQgbWFwLiBGb3IgcmV2ZXJzZVxcbiAgIHNvdXJjZSBtYXBzLlwiXG4gW3NvdXJjZXNdXG4gKGxldFxuICBbc291cmNlcyAoaW5kZXhlZC1zb3VyY2VzIHNvdXJjZXMpXVxuICAoZm4gW2EgYl0gKGNvbXBhcmUgKHNvdXJjZXMgYSkgKHNvdXJjZXMgYikpKSkpXG4ifSB7OnN5bSBkZWNvZGUtcmV2ZXJzZSwgOm1ldGEgezpkb2MgIkNvbnZlcnQgYSB2MyBzb3VyY2UgbWFwIEpTT04gb2JqZWN0IGludG8gYSByZXZlcnNlIHNvdXJjZSBtYXBcbiAgbWFwcGluZyBvcmlnaW5hbCBDbG9qdXJlU2NyaXB0IHNvdXJjZSBsb2NhdGlvbnMgdG8gdGhlIGdlbmVyYXRlZFxuICBKYXZhU2NyaXB0LiIsIDphcmdsaXN0cyBbW3NvdXJjZS1tYXBdIFttYXBwaW5ncyBzb3VyY2UtbWFwXV19LCA6c291cmNlICIoZGVmblxuIGRlY29kZS1yZXZlcnNlXG4gXCJDb252ZXJ0IGEgdjMgc291cmNlIG1hcCBKU09OIG9iamVjdCBpbnRvIGEgcmV2ZXJzZSBzb3VyY2UgbWFwXFxuICBtYXBwaW5nIG9yaWdpbmFsIENsb2p1cmVTY3JpcHQgc291cmNlIGxvY2F0aW9ucyB0byB0aGUgZ2VuZXJhdGVkXFxuICBKYXZhU2NyaXB0LlwiXG4gKFtzb3VyY2UtbWFwXVxuICAoZGVjb2RlLXJldmVyc2UgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJtYXBwaW5nc1wiKSBzb3VyY2UtbWFwKSlcbiAoW21hcHBpbmdzIHNvdXJjZS1tYXBdXG4gIChsZXRcbiAgIFtzb3VyY2VzXG4gICAgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpXG4gICAgcmVsc2VnLWluaXRcbiAgICBbMCAwIDAgMCAwXVxuICAgIGxpbmVzXG4gICAgKHNlcSAoc3RyaW5nL3NwbGl0IG1hcHBpbmdzICNcIjtcIikpXVxuICAgKGxvb3BcbiAgICBbZ2xpbmVcbiAgICAgMFxuICAgICBsaW5lc1xuICAgICBsaW5lc1xuICAgICByZWxzZWdcbiAgICAgcmVsc2VnLWluaXRcbiAgICAgcmVzdWx0XG4gICAgIChzb3J0ZWQtbWFwLWJ5IChzb3VyY2UtY29tcGFyZSBzb3VyY2VzKSldXG4gICAgKGlmXG4gICAgIGxpbmVzXG4gICAgIChsZXRcbiAgICAgIFtsaW5lXG4gICAgICAgKGZpcnN0IGxpbmVzKVxuICAgICAgIFtyZXN1bHQgcmVsc2VnXVxuICAgICAgIChpZlxuICAgICAgICAoc3RyaW5nL2JsYW5rPyBsaW5lKVxuICAgICAgICBbcmVzdWx0IHJlbHNlZ11cbiAgICAgICAgKGxldFxuICAgICAgICAgW3NlZ3MgKHNlcSAoc3RyaW5nL3NwbGl0IGxpbmUgI1wiLFwiKSldXG4gICAgICAgICAobG9vcFxuICAgICAgICAgIFtzZWdzIHNlZ3MgcmVsc2VnIHJlbHNlZyByZXN1bHQgcmVzdWx0XVxuICAgICAgICAgIChpZlxuICAgICAgICAgICBzZWdzXG4gICAgICAgICAgIChsZXRcbiAgICAgICAgICAgIFtzZWdcbiAgICAgICAgICAgICAoZmlyc3Qgc2VncylcbiAgICAgICAgICAgICBucmVsc2VnXG4gICAgICAgICAgICAgKHNlZy1jb21iaW5lIChiYXNlNjQtdmxxL2RlY29kZSBzZWcpIHJlbHNlZyldXG4gICAgICAgICAgICAocmVjdXJcbiAgICAgICAgICAgICAobmV4dCBzZWdzKVxuICAgICAgICAgICAgIG5yZWxzZWdcbiAgICAgICAgICAgICAodXBkYXRlLXJldmVyc2UtcmVzdWx0XG4gICAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgICAgICAoc2VnLT5tYXAgbnJlbHNlZyBzb3VyY2UtbWFwKVxuICAgICAgICAgICAgICBnbGluZSkpKVxuICAgICAgICAgICBbcmVzdWx0IHJlbHNlZ10pKSkpXVxuICAgICAgKHJlY3VyIChpbmMgZ2xpbmUpIChuZXh0IGxpbmVzKSAoYXNzb2MgcmVsc2VnIDAgMCkgcmVzdWx0KSlcbiAgICAgcmVzdWx0KSkpKSlcbiJ9IHs6c3ltIGxpbmVzLT5zZWdzLCA6bWV0YSB7OmRvYyAiVGFrZSBhIG5lc3RlZCBzb3J0ZWQgbWFwIGVuY29kaW5nIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvblxuICAgZm9yIGEgZmlsZSBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHZlY3RvcnMgb2YgZW5jb2RlZCBzZWdtZW50cy5cbiAgIEVhY2ggdmVjdG9yIHJlcHJlc2VudHMgYSBsaW5lLCBhbmQgdGhlIGludGVybmFsIHZlY3RvcnMgYXJlIHNlZ21lbnRzXG4gICByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBsaW5lLiIsIDphcmdsaXN0cyAoW2xpbmVzXSl9LCA6c291cmNlICIoZGVmblxuIGxpbmVzLT5zZWdzXG4gXCJUYWtlIGEgbmVzdGVkIHNvcnRlZCBtYXAgZW5jb2RpbmcgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uXFxuICAgZm9yIGEgZmlsZSBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHZlY3RvcnMgb2YgZW5jb2RlZCBzZWdtZW50cy5cXG4gICBFYWNoIHZlY3RvciByZXByZXNlbnRzIGEgbGluZSwgYW5kIHRoZSBpbnRlcm5hbCB2ZWN0b3JzIGFyZSBzZWdtZW50c1xcbiAgIHJlcHJlc2VudGluZyB0aGUgY29udGVudHMgb2YgdGhlIGxpbmUuXCJcbiBbbGluZXNdXG4gKGxldFxuICBbcmVsc2VnIChhdG9tIFswIDAgMCAwIDBdKV1cbiAgKHJlZHVjZVxuICAgKGZuXG4gICAgW3NlZ3MgY29sc11cbiAgICAoc3dhcCFcbiAgICAgcmVsc2VnXG4gICAgIChmbiBbW18gc291cmNlIGxpbmUgY29sIG5hbWVdXSBbMCBzb3VyY2UgbGluZSBjb2wgbmFtZV0pKVxuICAgIChjb25qXG4gICAgIHNlZ3NcbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW2NvbHMgW2djb2wgc2lkeCBsaW5lIGNvbCBuYW1lIDphcyBzZWddXVxuICAgICAgIChsZXRcbiAgICAgICAgW29mZnNldCAobWFwIC0gc2VnIEByZWxzZWcpXVxuICAgICAgICAoc3dhcCFcbiAgICAgICAgIHJlbHNlZ1xuICAgICAgICAgKGZuIFtbXyBfIF8gXyBsbmFtZV1dIFtnY29sIHNpZHggbGluZSBjb2wgKG9yIG5hbWUgbG5hbWUpXSkpXG4gICAgICAgIChjb25qIGNvbHMgKGJhc2U2NC12bHEvZW5jb2RlIG9mZnNldCkpKSlcbiAgICAgIFtdXG4gICAgICBjb2xzKSkpXG4gICBbXVxuICAgbGluZXMpKSlcbiJ9IHs6c3ltIG1lcmdlLXNvdXJjZS1tYXBzLCA6bWV0YSB7OmRvYyAiTWVyZ2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZVxuICAgQ2xvanVyZVNjcmlwdCBmaWxlIG1hcHBpbmcgb3JpZ2luYWwgdG8gZ2VuZXJhdGVkIHdpdGggYVxuICAgc2Vjb25kIHNvdXJjZSBtYXAgbWFwcGluZyBvcmlnaW5hbCBKUyB0byBnZW5lcmF0ZWQgSlMuXG4gICBUaGUgaXMgdG8gc3VwcG9ydCBzb3VyY2UgbWFwcyB0aGF0IHdvcmsgdGhyb3VnaCBtdWx0aXBsZVxuICAgY29tcGlsYXRpb24gc3RlcHMgbGlrZSBHb29nbGUgQ2xvc3VyZSBvcHRpbWl6YXRpb24gcGFzc2VzLiIsIDphcmdsaXN0cyAoW2NsanMtbWFwIGpzLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS1zb3VyY2UtbWFwc1xuIFwiTWVyZ2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZVxcbiAgIENsb2p1cmVTY3JpcHQgZmlsZSBtYXBwaW5nIG9yaWdpbmFsIHRvIGdlbmVyYXRlZCB3aXRoIGFcXG4gICBzZWNvbmQgc291cmNlIG1hcCBtYXBwaW5nIG9yaWdpbmFsIEpTIHRvIGdlbmVyYXRlZCBKUy5cXG4gICBUaGUgaXMgdG8gc3VwcG9ydCBzb3VyY2UgbWFwcyB0aGF0IHdvcmsgdGhyb3VnaCBtdWx0aXBsZVxcbiAgIGNvbXBpbGF0aW9uIHN0ZXBzIGxpa2UgR29vZ2xlIENsb3N1cmUgb3B0aW1pemF0aW9uIHBhc3Nlcy5cIlxuIFtjbGpzLW1hcCBqcy1tYXBdXG4gKGxvb3BcbiAgW2xpbmUtbWFwLXNlcSAoc2VxIGNsanMtbWFwKSBuZXctbGluZXMgKHNvcnRlZC1tYXApXVxuICAoaWZcbiAgIGxpbmUtbWFwLXNlcVxuICAgKGxldFxuICAgIFtbbGluZSBjb2wtbWFwXVxuICAgICAoZmlyc3QgbGluZS1tYXAtc2VxKVxuICAgICBuZXctY29sc1xuICAgICAobG9vcFxuICAgICAgW2NvbC1tYXAtc2VxIChzZXEgY29sLW1hcCkgbmV3LWNvbHMgKHNvcnRlZC1tYXApXVxuICAgICAgKGlmXG4gICAgICAgY29sLW1hcC1zZXFcbiAgICAgICAobGV0XG4gICAgICAgIFtbY29sIGluZm9zXSAoZmlyc3QgY29sLW1hcC1zZXEpXVxuICAgICAgICAocmVjdXJcbiAgICAgICAgIChuZXh0IGNvbC1tYXAtc2VxKVxuICAgICAgICAgKGFzc29jXG4gICAgICAgICAgbmV3LWNvbHNcbiAgICAgICAgICBjb2xcbiAgICAgICAgICAocmVkdWNlXG4gICAgICAgICAgIChmblxuICAgICAgICAgICAgW3YgezprZXlzIFtnbGluZSBnY29sXX1dXG4gICAgICAgICAgICAoaW50byB2IChnZXQtaW4ganMtbWFwIFtnbGluZSBnY29sXSkpKVxuICAgICAgICAgICBbXVxuICAgICAgICAgICBpbmZvcykpKSlcbiAgICAgICBuZXctY29scykpXVxuICAgIChyZWN1ciAobmV4dCBsaW5lLW1hcC1zZXEpIChhc3NvYyBuZXctbGluZXMgbGluZSBuZXctY29scykpKVxuICAgbmV3LWxpbmVzKSkpXG4ifSB7OnN5bSB1cGRhdGUtcmV2ZXJzZS1yZXN1bHQsIDptZXRhIHs6ZG9jICJIZWxwZXIgZm9yIGRlY29kZS1yZXZlcnNlLiBUYWtlIGEgcmV2ZXJzZSBzb3VyY2UgbWFwIGFuZFxuICB1cGRhdGUgaXQgd2l0aCBhIHNlZ21lbnQgbWFwLiIsIDphcmdsaXN0cyAoW3Jlc3VsdCBzZWdtYXAgZ2xpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLXJldmVyc2UtcmVzdWx0XG4gXCJIZWxwZXIgZm9yIGRlY29kZS1yZXZlcnNlLiBUYWtlIGEgcmV2ZXJzZSBzb3VyY2UgbWFwIGFuZFxcbiAgdXBkYXRlIGl0IHdpdGggYSBzZWdtZW50IG1hcC5cIlxuIFtyZXN1bHQgc2VnbWFwIGdsaW5lXVxuIChsZXRcbiAgW3s6a2V5cyBbZ2NvbCBzb3VyY2UgbGluZSBjb2wgbmFtZV19XG4gICBzZWdtYXBcbiAgIGRcbiAgIHs6Z2xpbmUgZ2xpbmUsIDpnY29sIGdjb2x9XG4gICBkXG4gICAoaWYgbmFtZSAoYXNzb2MgZCA6bmFtZSBuYW1lKSBkKV1cbiAgKHVwZGF0ZS1pblxuICAgcmVzdWx0XG4gICBbc291cmNlXVxuICAgKGZuaWxcbiAgICAoZm5cbiAgICAgW21dXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIG1cbiAgICAgIFtsaW5lXVxuICAgICAgKGZuaWxcbiAgICAgICAoZm4gW21dICh1cGRhdGUtaW4gbSBbY29sXSAoZm5pbCAoZm4gW3ZdIChjb25qIHYgZCkpIFtdKSkpXG4gICAgICAgKHNvcnRlZC1tYXApKSkpXG4gICAgKHNvcnRlZC1tYXApKSkpKVxuIn0gezpzeW0gaW5kZXhlZC1zb3VyY2VzLCA6bWV0YSB7OmRvYyAiVGFrZSBhIHNlcSBvZiBzb3VyY2UgZmlsZSBuYW1lcyBhbmQgcmV0dXJuIGEgbWFwIGZyb21cbiAgIGZpbGUgbnVtYmVyIHRvIGludGVnZXIgaW5kZXguIEZvciByZXZlcnNlIHNvdXJjZSBtYXBzLiIsIDphcmdsaXN0cyAoW3NvdXJjZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhlZC1zb3VyY2VzXG4gXCJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBtYXAgZnJvbVxcbiAgIGZpbGUgbnVtYmVyIHRvIGludGVnZXIgaW5kZXguIEZvciByZXZlcnNlIHNvdXJjZSBtYXBzLlwiXG4gW3NvdXJjZXNdXG4gKC0+PlxuICBzb3VyY2VzXG4gIChtYXAtaW5kZXhlZCAoZm4gW2EgYl0gW2EgYl0pKVxuICAocmVkdWNlIChmbiBbbSBbaSB2XV0gKGFzc29jIG0gdiBpKSkge30pKSlcbiJ9IHs6c3ltIHNlZy1jb21iaW5lLCA6bWV0YSB7OmRvYyAiQ29tYmluZSBhIHNvdXJjZSBtYXAgc2VnbWVudCB2ZWN0b3IgYW5kIGEgcmVsYXRpdmVcbiAgIHNvdXJjZSBtYXAgc2VnbWVudCB2ZWN0b3IgYW5kIGNvbWJpbmUgdGhlbSB0byBnZXRcbiAgIGFuIGFic29sdXRlIHNlZ21lbnQgcG9zaXRpdG9uIGluZm9ybWF0aW9uIGFzIGEgdmVjdG9yLiIsIDphcmdsaXN0cyAoW3NlZyByZWxzZWddKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VnLWNvbWJpbmVcbiBcIkNvbWJpbmUgYSBzb3VyY2UgbWFwIHNlZ21lbnQgdmVjdG9yIGFuZCBhIHJlbGF0aXZlXFxuICAgc291cmNlIG1hcCBzZWdtZW50IHZlY3RvciBhbmQgY29tYmluZSB0aGVtIHRvIGdldFxcbiAgIGFuIGFic29sdXRlIHNlZ21lbnQgcG9zaXRpdG9uIGluZm9ybWF0aW9uIGFzIGEgdmVjdG9yLlwiXG4gW3NlZyByZWxzZWddXG4gKGxldFxuICBbW2djb2wgc291cmNlIGxpbmUgY29sIG5hbWVdXG4gICBzZWdcbiAgIFtyZ2NvbCByc291cmNlIHJsaW5lIHJjb2wgcm5hbWVdXG4gICByZWxzZWdcbiAgIG5zZWdcbiAgIFsoKyBnY29sIHJnY29sKVxuICAgICgrIChvciBzb3VyY2UgMCkgcnNvdXJjZSlcbiAgICAoKyAob3IgbGluZSAwKSBybGluZSlcbiAgICAoKyAob3IgY29sIDApIHJjb2wpXG4gICAgKCsgKG9yIG5hbWUgMCkgcm5hbWUpXV1cbiAgKGlmIG5hbWUgKHdpdGgtbWV0YSBuc2VnIHs6bmFtZSAoKyBuYW1lIHJuYW1lKX0pIG5zZWcpKSlcbiJ9KSwgb2FrY2xqcy50b29scy5yZWFkZXIuaW1wbC5jb21tb25zICh7OnN5bSBtYXRjaC1udW1iZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXRjaC1udW1iZXJcbiBbc11cbiAoaWZcbiAgKG1hdGNoZXM/IGludC1wYXR0ZXJuIHMpXG4gIChtYXRjaC1pbnQgcylcbiAgKGlmXG4gICAobWF0Y2hlcz8gZmxvYXQtcGF0dGVybiBzKVxuICAgKG1hdGNoLWZsb2F0IHMpXG4gICAod2hlbiAobWF0Y2hlcz8gcmF0aW8tcGF0dGVybiBzKSAobWF0Y2gtcmF0aW8gcykpKSkpXG4ifSB7OnN5bSBza2lwLWxpbmUsIDptZXRhIHs6ZG9jICJBZHZhbmNlcyB0aGUgcmVhZGVyIHRvIHRoZSBlbmQgb2YgYSBsaW5lLiBSZXR1cm5zIHRoZSByZWFkZXIiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2tpcC1saW5lXG4gXCJBZHZhbmNlcyB0aGUgcmVhZGVyIHRvIHRoZSBlbmQgb2YgYSBsaW5lLiBSZXR1cm5zIHRoZSByZWFkZXJcIlxuIFtyZWFkZXJdXG4gKGxvb3AgW10gKHdoZW4tbm90IChuZXdsaW5lPyAocmVhZC1jaGFyIHJlYWRlcikpIChyZWN1cikpKVxuIHJlYWRlcilcbiJ9IHs6c3ltIGludC1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGludC1wYXR0ZXJuXG4gI1wiXihbLStdPykoPzooMCl8KFsxLTldWzAtOV0qKXwwW3hYXShbMC05QS1GYS1mXSspfDAoWzAtN10rKXwoWzEtOV1bMC05XT8pW3JSXShbMC05QS1aYS16XSspfDBbMC05XSspKE4pPyRcIilcbiJ9IHs6c3ltIHJlYWQtY29tbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgJiBfXSl9LCA6c291cmNlICIoZGVmbiByZWFkLWNvbW1lbnQgW3JkciAmIF9dIChza2lwLWxpbmUgcmRyKSlcbiJ9IHs6c3ltIHBhcnNlLXN5bWJvbCwgOm1ldGEgezpkb2MgIlBhcnNlcyBhIHN0cmluZyBpbnRvIGEgdmVjdG9yIG9mIHRoZSBuYW1lc3BhY2UgYW5kIHN5bWJvbCIsIDphcmdsaXN0cyAoW3Rva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXN5bWJvbFxuIFwiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sXCJcbiBbdG9rZW5dXG4gKHdoZW4tbm90XG4gIChvclxuICAgKGlkZW50aWNhbD8gXCJcIiB0b2tlbilcbiAgICh0cnVlPyAoLnRlc3QgI1wiOiRcIiB0b2tlbikpXG4gICAodHJ1ZT8gKC50ZXN0ICNcIl46OlwiIHRva2VuKSkpXG4gIChsZXRcbiAgIFtucy1pZHhcbiAgICAoLmluZGV4T2YgdG9rZW4gXCIvXCIpXG4gICAgbnNcbiAgICAod2hlbiAocG9zPyBucy1pZHgpIChzdWJzIHRva2VuIDAgbnMtaWR4KSldXG4gICAoaWYtbm90XG4gICAgKG5pbD8gbnMpXG4gICAgKGxldFxuICAgICBbbnMtaWR4IChpbmMgbnMtaWR4KV1cbiAgICAgKHdoZW4tbm90XG4gICAgICAoPT0gbnMtaWR4IChjb3VudCB0b2tlbikpXG4gICAgICAobGV0XG4gICAgICAgW3N5bSAoc3VicyB0b2tlbiBucy1pZHgpXVxuICAgICAgICh3aGVuXG4gICAgICAgIChhbmRcbiAgICAgICAgIChub3QgKG51bWVyaWM/IChudGggc3ltIDApKSlcbiAgICAgICAgIChub3QgKGlkZW50aWNhbD8gXCJcIiBzeW0pKVxuICAgICAgICAgKGZhbHNlPyAoLnRlc3QgI1wiOiRcIiBucykpXG4gICAgICAgICAob3IgKGlkZW50aWNhbD8gc3ltIFwiL1wiKSAoPT0gLTEgKC5pbmRleE9mIHN5bSBcIi9cIikpKSlcbiAgICAgICAgW25zIHN5bV0pKSkpXG4gICAgKHdoZW5cbiAgICAgKG9yIChpZGVudGljYWw/IHRva2VuIFwiL1wiKSAoPT0gLTEgKC5pbmRleE9mIHRva2VuIFwiL1wiKSkpXG4gICAgIFtuaWwgdG9rZW5dKSkpKSlcbiJ9IHs6c3ltIG51bWJlci1saXRlcmFsPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWwiLCA6YXJnbGlzdHMgKFtyZWFkZXIgaW5pdGNoXSl9LCA6c291cmNlICIoZGVmblxuIG51bWJlci1saXRlcmFsP1xuIFwiQ2hlY2tzIHdoZXRoZXIgdGhlIHJlYWRlciBpcyBhdCB0aGUgc3RhcnQgb2YgYSBudW1iZXIgbGl0ZXJhbFwiXG4gW3JlYWRlciBpbml0Y2hdXG4gKG9yXG4gIChudW1lcmljPyBpbml0Y2gpXG4gIChhbmRcbiAgIChvciAoaWRlbnRpY2FsPyBcXCsgaW5pdGNoKSAoaWRlbnRpY2FsPyBcXC0gaW5pdGNoKSlcbiAgIChudW1lcmljPyAocGVlay1jaGFyIHJlYWRlcikpKSkpXG4ifSB7OnN5bSByZWFkLXBhc3QsIDptZXRhIHs6ZG9jICJSZWFkIHVudGlsIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgbWF0Y2ggcHJlZCwgcmV0dXJuaW5nXG4gICBjaGFyLiIsIDphcmdsaXN0cyAoW3ByZWQgcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtcGFzdFxuIFwiUmVhZCB1bnRpbCBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBkb2Vzbid0IG1hdGNoIHByZWQsIHJldHVybmluZ1xcbiAgIGNoYXIuXCJcbiBbcHJlZCByZHJdXG4gKGxvb3AgW2NoIChyZWFkLWNoYXIgcmRyKV0gKGlmIChwcmVkIGNoKSAocmVjdXIgKHJlYWQtY2hhciByZHIpKSBjaCkpKVxuIn0gezpzeW0gZmxvYXQtcGF0dGVybiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZmxvYXQtcGF0dGVybiAjXCIoWy0rXT9bMC05XSsoXFwuWzAtOV0qKT8oW2VFXVstK10/WzAtOV0rKT8pKE0pP1wiKVxuIn0gezpzeW0gbWF0Y2hlcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcGF0dGVybiBzXSl9LCA6c291cmNlICIoZGVmblxuIG1hdGNoZXM/XG4gW3BhdHRlcm4gc11cbiAobGV0IFtbbWF0Y2hdIChyZS1maW5kIHBhdHRlcm4gcyldIChpZGVudGljYWw/IG1hdGNoIHMpKSlcbiJ9IHs6c3ltIHRocm93aW5nLXJlYWRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttc2ddKX0sIDpzb3VyY2UgIihkZWZuIHRocm93aW5nLXJlYWRlciBbbXNnXSAoZm4gW3JkciAmIF9dIChyZWFkZXItZXJyb3IgcmRyIG1zZykpKVxuIn0gezpzeW0gcmF0aW8tcGF0dGVybiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgcmF0aW8tcGF0dGVybiAjXCIoWy0rXT9bMC05XSspLyhbMC05XSspXCIpXG4ifSksIGR5bmFkb2MudHJhbnNmb3JtICh7OnN5bSB3aXRoLWZvY3VzLT5iaW5kaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dpdGgtZm9jdXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2l0aC1mb2N1cy0+YmluZGluZ1xuIFt3aXRoLWZvY3VzXVxuIChsZXRcbiAgW2Zvcm1cbiAgIChvciAoOmZvcm0gd2l0aC1mb2N1cykgKDpiaW5kaW5nIHdpdGgtZm9jdXMpKVxuICAgW2JpbmRpbmctdHlwZSBiaW5kaW5nLXZhbF1cbiAgIGZvcm1dXG4gICh3aGVuICgjezpsb2NhbC1zeW1ib2wgOnN5bX0gYmluZGluZy10eXBlKSBiaW5kaW5nLXZhbCkpKVxuIn0gezpzeW0gYWRkLWZvY3VzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gd2l0aC1mb2N1cyBib2R5XSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1mb2N1c1xuIFtmb3JtIHdpdGgtZm9jdXMgYm9keV1cbiAoaWYtbGV0XG4gIFtiaW5kICh3aXRoLWZvY3VzLT5iaW5kaW5nIHdpdGgtZm9jdXMpXVxuICAocG9zdHdhbGsgKGZuIFt4XSAoaWYgKD0geCBiaW5kKSBmb3JtIHgpKSBib2R5KVxuICBmb3JtKSlcbiJ9IHs6c3ltIGFkZC1jYXJkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gd2l0aC1jYXJkIGlkXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1jYXJkXG4gW2Zvcm0gd2l0aC1jYXJkIGlkXVxuIChsaXN0XG4gICdsZXRcbiAgW3dpdGgtY2FyZFxuICAgIz8oOmNsanMgKGxpc3QgKHF1b3RlIC5nZXRFbGVtZW50QnlJZCkgKHF1b3RlIGpzL2RvY3VtZW50KSBpZCkgOmNsaiBpZCldXG4gIGZvcm0pKVxuIn0gezpzeW0gYWRkLWNhbGxiYWNrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gd2l0aC1jYWxsYmFja10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtY2FsbGJhY2tcbiBbZm9ybSB3aXRoLWNhbGxiYWNrXVxuIChsaXN0XG4gICdsZXRcbiAgWydlcy1jaGFubmVsXG4gICAnKGR5bmFkb2MuYWxpYXNlcy9jaGFuKVxuICAgd2l0aC1jYWxsYmFja1xuICAgJyhmbiBbZGF0YV0gKGR5bmFkb2MuYWxpYXNlcy9wdXQhIGVzLWNoYW5uZWwgZGF0YSkpXVxuICBmb3JtXG4gICcoZHluYWRvYy5hbGlhc2VzLzwhISBlcy1jaGFubmVsKSkpXG4ifSB7OnN5bSB0cmFuc2Zvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZXhhbXBsZV0gW3s6a2V5cyBbYm9keSBpZCB3aXRoLWZvY3VzIHdpdGgtY2FyZCB3aXRoLWNhbGxiYWNrXX0gZm9ybV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2Zvcm1cbiAoW2V4YW1wbGVdXG4gICh0cmFuc2Zvcm1cbiAgIGV4YW1wbGVcbiAgIChvciAoc29tZS0+IGV4YW1wbGUgOndpdGgtZm9jdXMgOmluaXQtZXhwcikgKDpib2R5IGV4YW1wbGUpKSkpXG4gKFt7OmtleXMgW2JvZHkgaWQgd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja119IGZvcm1dXG4gIChjb25kLT5cbiAgIGZvcm1cbiAgIChzb21lPyB3aXRoLWZvY3VzKVxuICAgKGFkZC1mb2N1cyB3aXRoLWZvY3VzIGJvZHkpXG4gICAoc29tZT8gd2l0aC1jYXJkKVxuICAgKGFkZC1jYXJkIHdpdGgtY2FyZCBpZClcbiAgIChzb21lPyB3aXRoLWNhbGxiYWNrKVxuICAgKGFkZC1jYWxsYmFjayB3aXRoLWNhbGxiYWNrKSkpKVxuIn0pLCBvZG95bGUucnVsZXMgKHs6c3ltIC0+cnVsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbcnVsZS1uYW1lIHJ1bGVdXSl9LCA6c291cmNlICIoZGVmblxuIC0+cnVsZVxuIFtbcnVsZS1uYW1lIHJ1bGVdXVxuIChsZXRcbiAgW3s6a2V5cyBbd2hhdC1ibG9jayB3aGVuLWJsb2NrIHRoZW4tYmxvY2sgdGhlbi1maW5hbGx5LWJsb2NrXX1cbiAgIHJ1bGVcbiAgIGNvbmRpdGlvbnNcbiAgIChtYXB2IC0+Y29uZGl0aW9uICg6Ym9keSB3aGF0LWJsb2NrKSlcbiAgIHdoZW4tYm9keVxuICAgKDpib2R5IHdoZW4tYmxvY2spXG4gICB3aGVuLWJvZHlcbiAgIChpZiAoPiAoY291bnQgd2hlbi1ib2R5KSAxKSAoY29ucyAnYW5kIHdoZW4tYm9keSkgKGZpcnN0IHdoZW4tYm9keSkpXG4gICB0aGVuLWJvZHlcbiAgICg6Ym9keSB0aGVuLWJsb2NrKVxuICAgdGhlbi1maW5hbGx5LWJvZHlcbiAgICg6Ym9keSB0aGVuLWZpbmFsbHktYmxvY2spXG4gICBzeW1zXG4gICAoLT4+XG4gICAgY29uZGl0aW9uc1xuICAgIChtYXBjYXQgOmJpbmRpbmdzKVxuICAgIChtYXAgOnN5bSlcbiAgICAoZmlsdGVyIHNpbXBsZS1zeW1ib2w/KVxuICAgIHNldFxuICAgIHZlYyldXG4gIHs6cnVsZS1uYW1lIHJ1bGUtbmFtZSxcbiAgIDpmbi1uYW1lXG4gICAoLT5cbiAgICAoc3RyIChuYW1lc3BhY2UgcnVsZS1uYW1lKSBcIi1cIiAobmFtZSBydWxlLW5hbWUpKVxuICAgIChzdHIvcmVwbGFjZSBcIi5cIiBcIi1cIilcbiAgICBzeW1ib2wpLFxuICAgOmNvbmRpdGlvbnMgY29uZGl0aW9ucyxcbiAgIDphcmcgezprZXlzIHN5bXN9LFxuICAgOndoZW4tYm9keSB3aGVuLWJvZHksXG4gICA6dGhlbi1ib2R5IHRoZW4tYm9keSxcbiAgIDp0aGVuLWZpbmFsbHktYm9keSB0aGVuLWZpbmFsbHktYm9keX0pKVxuIn0gezpzeW0gZmlyZS1ydWxlcywgOm1ldGEgezpkb2MgIkZpcmVzIDp0aGVuIGFuZCA6dGhlbi1maW5hbGx5IGJsb2NrcyBmb3IgYW55IHJ1bGVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgbWF0Y2hlcy4iLCA6YXJnbGlzdHMgKFtzZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxuIGZpcmUtcnVsZXNcbiBcIkZpcmVzIDp0aGVuIGFuZCA6dGhlbi1maW5hbGx5IGJsb2NrcyBmb3IgYW55IHJ1bGVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgbWF0Y2hlcy5cIlxuIFtzZXNzaW9uXVxuIChsZXRcbiAgW3RoZW4tcXVldWVcbiAgICg6dGhlbi1xdWV1ZSBzZXNzaW9uKVxuICAgdGhlbi1maW5hbGx5LXF1ZXVlXG4gICAoOnRoZW4tZmluYWxseS1xdWV1ZSBzZXNzaW9uKV1cbiAgKGlmXG4gICAoYW5kXG4gICAgKG9yIChzZXEgdGhlbi1xdWV1ZSkgKHNlcSB0aGVuLWZpbmFsbHktcXVldWUpKVxuICAgIChuaWw/ICpzZXNzaW9uKikpXG4gICAobGV0XG4gICAgW3Nlc3Npb25cbiAgICAgKGFzc29jIHNlc3Npb24gOnRoZW4tcXVldWUgI3t9IDp0aGVuLWZpbmFsbHktcXVldWUgI3t9KVxuICAgICBzZXNzaW9uXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtzZXNzaW9uIFtub2RlLWlkIF9dXVxuICAgICAgIChsZXRcbiAgICAgICAgW25vZGUtcGF0aCBbOmJldGEtbm9kZXMgbm9kZS1pZF1dXG4gICAgICAgICh1cGRhdGUtaW4gc2Vzc2lvbiBub2RlLXBhdGggYXNzb2MgOnRyaWdnZXIgZmFsc2UpKSlcbiAgICAgIHNlc3Npb25cbiAgICAgIHRoZW4tcXVldWUpXG4gICAgIHRoZW4tZm5zXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtxdWV1ZSBbbm9kZS1pZCBpZCthdHRyc11dXG4gICAgICAgKGxldFxuICAgICAgICBbbm9kZS1wYXRoXG4gICAgICAgICBbOmJldGEtbm9kZXMgbm9kZS1pZF1cbiAgICAgICAgIG5vZGVcbiAgICAgICAgIChnZXQtaW4gc2Vzc2lvbiBub2RlLXBhdGgpXG4gICAgICAgICB7OmtleXMgW21hdGNoZXMgdGhlbi1mbl19XG4gICAgICAgICBub2RlXVxuICAgICAgICAob3JcbiAgICAgICAgICh3aGVuLWxldFxuICAgICAgICAgIFt7OmtleXMgW3ZhcnMgZW5hYmxlZF19IChnZXQgbWF0Y2hlcyBpZCthdHRycyldXG4gICAgICAgICAgKHdoZW4gZW5hYmxlZCAoY29uaiBxdWV1ZSBbdGhlbi1mbiB2YXJzXSkpKVxuICAgICAgICAgcXVldWUpKSlcbiAgICAgIFtdXG4gICAgICB0aGVuLXF1ZXVlKVxuICAgICBzZXNzaW9uXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtzZXNzaW9uIFt0aGVuLWZuIG1hdGNoXV1cbiAgICAgICAoYmluZGluZ1xuICAgICAgICBbKnNlc3Npb24qXG4gICAgICAgICBzZXNzaW9uXG4gICAgICAgICAqbXV0YWJsZS1zZXNzaW9uKlxuICAgICAgICAgKHZvbGF0aWxlISBzZXNzaW9uKVxuICAgICAgICAgKm1hdGNoKlxuICAgICAgICAgbWF0Y2hdXG4gICAgICAgICh0aGVuLWZuIG1hdGNoKVxuICAgICAgICBAKm11dGFibGUtc2Vzc2lvbiopKVxuICAgICAgc2Vzc2lvblxuICAgICAgdGhlbi1mbnMpXG4gICAgIHRoZW4tZmluYWxseS1mbnNcbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW3F1ZXVlIG5vZGUtaWRdXG4gICAgICAgKGxldFxuICAgICAgICBbbm9kZS1wYXRoXG4gICAgICAgICBbOmJldGEtbm9kZXMgbm9kZS1pZF1cbiAgICAgICAgIG5vZGVcbiAgICAgICAgIChnZXQtaW4gc2Vzc2lvbiBub2RlLXBhdGgpXG4gICAgICAgICB7OmtleXMgW3RoZW4tZmluYWxseS1mbl19XG4gICAgICAgICBub2RlXVxuICAgICAgICAoY29uaiBxdWV1ZSB0aGVuLWZpbmFsbHktZm4pKSlcbiAgICAgIFtdXG4gICAgICB0aGVuLWZpbmFsbHktcXVldWUpXG4gICAgIHNlc3Npb25cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW3Nlc3Npb24gdGhlbi1maW5hbGx5LWZuXVxuICAgICAgIChiaW5kaW5nXG4gICAgICAgIFsqc2Vzc2lvbiogc2Vzc2lvbiAqbXV0YWJsZS1zZXNzaW9uKiAodm9sYXRpbGUhIHNlc3Npb24pXVxuICAgICAgICAodGhlbi1maW5hbGx5LWZuKVxuICAgICAgICBAKm11dGFibGUtc2Vzc2lvbiopKVxuICAgICAgc2Vzc2lvblxuICAgICAgdGhlbi1maW5hbGx5LWZucyldXG4gICAgKGZpcmUtcnVsZXMgc2Vzc2lvbikpXG4gICBzZXNzaW9uKSkpXG4ifSB7OnN5bSBpbnNlcnQsIDptZXRhIHs6ZG9jICJJbnNlcnRzIGEgZmFjdCBpbnRvIHRoZSBzZXNzaW9uLiBDYW4gb3B0aW9uYWxseSBpbnNlcnQgbXVsdGlwbGUgZmFjdHMgd2l0aCB0aGUgc2FtZSBpZC4iLCA6YXJnbGlzdHMgW1tzZXNzaW9uIFtpZCBhdHRyIHZhbHVlXV0gW3Nlc3Npb24gaWQgYXR0ci0+dmFsdWVdIFtzZXNzaW9uIGlkIGF0dHIgdmFsdWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zZXJ0XG4gXCJJbnNlcnRzIGEgZmFjdCBpbnRvIHRoZSBzZXNzaW9uLiBDYW4gb3B0aW9uYWxseSBpbnNlcnQgbXVsdGlwbGUgZmFjdHMgd2l0aCB0aGUgc2FtZSBpZC5cIlxuIChbc2Vzc2lvbiBbaWQgYXR0ciB2YWx1ZV1dIChpbnNlcnQgc2Vzc2lvbiBpZCBhdHRyIHZhbHVlKSlcbiAoW3Nlc3Npb24gaWQgYXR0ci0+dmFsdWVdXG4gIChyZWR1Y2Uta3ZcbiAgIChmbiBbc2Vzc2lvbiBhdHRyIHZhbHVlXSAoaW5zZXJ0IHNlc3Npb24gaWQgYXR0ciB2YWx1ZSkpXG4gICBzZXNzaW9uXG4gICBhdHRyLT52YWx1ZSkpXG4gKFtzZXNzaW9uIGlkIGF0dHIgdmFsdWVdXG4gICgtPj5cbiAgIChnZXQtYWxwaGEtbm9kZXMtZm9yLWZhY3RcbiAgICBzZXNzaW9uXG4gICAgKDphbHBoYS1ub2RlIHNlc3Npb24pXG4gICAgaWRcbiAgICBhdHRyXG4gICAgdmFsdWVcbiAgICB0cnVlKVxuICAgKHVwc2VydC1mYWN0IHNlc3Npb24gaWQgYXR0ciB2YWx1ZSkpKSlcbiJ9IHs6c3ltICptYXRjaCosIDptZXRhIHs6ZG9jICJQcm92aWRlcyBhIG1hcCBvZiBhbGwgdGhlIG1hdGNoZWQgdmFsdWVzIGZyb20gaW5zaWRlIGEgOnRoZW4gYmxvY2suIn0sIDpzb3VyY2UgIihkZWYgKm1hdGNoKiBuaWwpXG4ifSB7OnN5bSBhZGQtcnVsZSwgOm1ldGEgezpkb2MgIkFkZHMgYSBydWxlIHRvIHRoZSBnaXZlbiBzZXNzaW9uLiIsIDphcmdsaXN0cyAoW3Nlc3Npb24gcnVsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtcnVsZVxuIFwiQWRkcyBhIHJ1bGUgdG8gdGhlIGdpdmVuIHNlc3Npb24uXCJcbiBbc2Vzc2lvbiBydWxlXVxuICh3aGVuXG4gIChnZXQtaW4gc2Vzc2lvbiBbOnJ1bGUtaWRzICg6bmFtZSBydWxlKV0pXG4gICh0aHJvdyAoZXgtaW5mbyAoc3RyICg6bmFtZSBydWxlKSBcIiBhbHJlYWR5IGV4aXN0cyBpbiBzZXNzaW9uXCIpIHt9KSkpXG4gKGxldFxuICBbY29uZGl0aW9uc1xuICAgKDpjb25kaXRpb25zIHJ1bGUpXG4gICBzZXNzaW9uXG4gICAocmVkdWNlIGFkZC1jb25kaXRpb24gc2Vzc2lvbiBjb25kaXRpb25zKVxuICAgbGVhZi1ub2RlLWlkXG4gICAoLT4gc2Vzc2lvbiA6bWVtLW5vZGUtaWRzIGxhc3QpXG4gICBiaW5kaW5nc1xuICAgKDpiaW5kaW5ncyBzZXNzaW9uKVxuICAgc2Vzc2lvblxuICAgKHJlZHVjZVxuICAgIChmblxuICAgICBbc2Vzc2lvbiBtZW0tbm9kZS1pZF1cbiAgICAgKHVwZGF0ZS1pblxuICAgICAgc2Vzc2lvblxuICAgICAgWzpiZXRhLW5vZGVzIG1lbS1ub2RlLWlkXVxuICAgICAgKGZuIFttZW0tbm9kZV0gKGFzc29jIG1lbS1ub2RlIDpsZWFmLW5vZGUtaWQgbGVhZi1ub2RlLWlkKSkpKVxuICAgIHNlc3Npb25cbiAgICAoOm1lbS1ub2RlLWlkcyBzZXNzaW9uKSlcbiAgIHNlc3Npb25cbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3Nlc3Npb24gam9pbi1ub2RlLWlkXVxuICAgICAodXBkYXRlLWluXG4gICAgICBzZXNzaW9uXG4gICAgICBbOmJldGEtbm9kZXMgam9pbi1ub2RlLWlkXVxuICAgICAgKGZuXG4gICAgICAgW2pvaW4tbm9kZV1cbiAgICAgICAoYXNzb2NcbiAgICAgICAgam9pbi1ub2RlXG4gICAgICAgIDppZC1rZXlcbiAgICAgICAgKHNvbWVcbiAgICAgICAgIChmblxuICAgICAgICAgIFt7OmtleXMgW2ZpZWxkIGtleV19XVxuICAgICAgICAgICh3aGVuXG4gICAgICAgICAgIChhbmQgKD0gOmlkIGZpZWxkKSAoY29udGFpbnM/ICg6am9pbnMgYmluZGluZ3MpIGtleSkpXG4gICAgICAgICAgIGtleSkpXG4gICAgICAgICAoLT4gam9pbi1ub2RlIDpjb25kaXRpb24gOmJpbmRpbmdzKSlcbiAgICAgICAgOmRpc2FibGUtZmFzdC11cGRhdGVzXG4gICAgICAgIChjb250YWlucz9cbiAgICAgICAgICg6am9pbnMgYmluZGluZ3MpXG4gICAgICAgICAoc29tZVxuICAgICAgICAgIChmbiBbezprZXlzIFtmaWVsZCBrZXldfV0gKHdoZW4gKD0gOnZhbHVlIGZpZWxkKSBrZXkpKVxuICAgICAgICAgICgtPiBqb2luLW5vZGUgOmNvbmRpdGlvbiA6YmluZGluZ3MpKSkpKSkpXG4gICAgc2Vzc2lvblxuICAgICg6am9pbi1ub2RlLWlkcyBzZXNzaW9uKSldXG4gICgtPlxuICAgc2Vzc2lvblxuICAgKGFzc29jLWluIFs6YmV0YS1ub2RlcyBsZWFmLW5vZGUtaWQgOndoZW4tZm5dICg6d2hlbi1mbiBydWxlKSlcbiAgIChhc3NvYy1pbiBbOmJldGEtbm9kZXMgbGVhZi1ub2RlLWlkIDp0aGVuLWZuXSAoOnRoZW4tZm4gcnVsZSkpXG4gICAoYXNzb2MtaW5cbiAgICBbOmJldGEtbm9kZXMgbGVhZi1ub2RlLWlkIDp0aGVuLWZpbmFsbHktZm5dXG4gICAgKDp0aGVuLWZpbmFsbHktZm4gcnVsZSkpXG4gICAoYXNzb2MtaW4gWzpydWxlLWlkcyAoOm5hbWUgcnVsZSldIGxlYWYtbm9kZS1pZClcbiAgIChkaXNzb2MgOm1lbS1ub2RlLWlkcyA6am9pbi1ub2RlLWlkcyA6YmluZGluZ3MpKSkpXG4ifSB7OnN5bSAtPnNlc3Npb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVtcHR5IHNlc3Npb24uIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIC0+c2Vzc2lvblxuIFwiUmV0dXJucyBhbiBlbXB0eSBzZXNzaW9uLlwiXG4gW11cbiAobWFwLT5TZXNzaW9uXG4gIHs6YWxwaGEtbm9kZVxuICAgKG1hcC0+QWxwaGFOb2RlXG4gICAgezpwYXRoIG5pbCxcbiAgICAgOnRlc3QtZmllbGQgbmlsLFxuICAgICA6dGVzdC12YWx1ZSBuaWwsXG4gICAgIDpjaGlsZHJlbiBbXSxcbiAgICAgOnN1Y2Nlc3NvcnMgW10sXG4gICAgIDpmYWN0cyB7fX0pLFxuICAgOmJldGEtbm9kZXMge30sXG4gICA6bGFzdC1pZCAtMSxcbiAgIDpydWxlLWlkcyB7fSxcbiAgIDppZC1hdHRyLW5vZGVzIHt9LFxuICAgOnRoZW4tcXVldWUgI3t9fSkpXG4ifSB7OnN5bSByZXNldCEsIDptZXRhIHs6ZG9jICJNdXRhdGVzIHRoZSBzZXNzaW9uIGZyb20gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrLiIsIDphcmdsaXN0cyAoW25ldy1zZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxuIHJlc2V0IVxuIFwiTXV0YXRlcyB0aGUgc2Vzc2lvbiBmcm9tIGEgOnRoZW4gb3IgOnRoZW4tZmluYWxseSBibG9jay5cIlxuIFtuZXctc2Vzc2lvbl1cbiAoaWZcbiAgKm11dGFibGUtc2Vzc2lvbipcbiAgKGlmXG4gICAoPSAqc2Vzc2lvbiogQCptdXRhYmxlLXNlc3Npb24qKVxuICAgKHZyZXNldCEgKm11dGFibGUtc2Vzc2lvbiogbmV3LXNlc3Npb24pXG4gICAodGhyb3dcbiAgICAoZXgtaW5mb1xuICAgICBcIllvdSBtYXkgb25seSBjYWxsIGByZXNldCFgIG9uY2UgaW4gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrXCJcbiAgICAge30pKSlcbiAgKHRocm93XG4gICAoZXgtaW5mb1xuICAgIFwiWW91IG1heSBvbmx5IGNhbGwgYHJlc2V0IWAgaW4gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrXCJcbiAgICB7fSkpKSlcbiJ9IHs6c3ltIHJldHJhY3QhLCA6bWV0YSB7OmRvYyAiRXF1aXZhbGVudCB0bzpcbiAgXG4gIChvL3Jlc2V0ISAoby9yZXRyYWN0IG8vKnNlc3Npb24qIGlkIGF0dHIpKVxuICBcbiAgVXNpbmcgdGhlIGxvbmcgZm9ybSBpcyByZWNvbW1lbmRlZC4iLCA6YXJnbGlzdHMgKFtpZCBhdHRyXSl9LCA6c291cmNlICIoZGVmblxuIHJldHJhY3QhXG4gXCJFcXVpdmFsZW50IHRvOlxcbiAgXFxuICAoby9yZXNldCEgKG8vcmV0cmFjdCBvLypzZXNzaW9uKiBpZCBhdHRyKSlcXG4gIFxcbiAgVXNpbmcgdGhlIGxvbmcgZm9ybSBpcyByZWNvbW1lbmRlZC5cIlxuIFtpZCBhdHRyXVxuIChpZlxuICAqbXV0YWJsZS1zZXNzaW9uKlxuICAodnN3YXAhICptdXRhYmxlLXNlc3Npb24qIHJldHJhY3QgaWQgYXR0cilcbiAgKHRocm93XG4gICAoZXgtaW5mb1xuICAgIFwiVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2tcIlxuICAgIHt9KSkpKVxuIn0gezpzeW0gaW5zZXJ0ISwgOm1ldGEgezpkb2MgIkVxdWl2YWxlbnQgdG86XG4gIFxuICAoby9yZXNldCEgKG8vaW5zZXJ0IG8vKnNlc3Npb24qIGlkIGF0dHIgdmFsdWUpKVxuICBcbiAgVXNpbmcgdGhlIGxvbmcgZm9ybSBpcyByZWNvbW1lbmRlZC4iLCA6YXJnbGlzdHMgW1tpZCBhdHRyLT52YWx1ZV0gW2lkIGF0dHIgdmFsdWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zZXJ0IVxuIFwiRXF1aXZhbGVudCB0bzpcXG4gIFxcbiAgKG8vcmVzZXQhIChvL2luc2VydCBvLypzZXNzaW9uKiBpZCBhdHRyIHZhbHVlKSlcXG4gIFxcbiAgVXNpbmcgdGhlIGxvbmcgZm9ybSBpcyByZWNvbW1lbmRlZC5cIlxuIChbaWQgYXR0ci0+dmFsdWVdXG4gIChydW4hIChmbiBbW2F0dHIgdmFsdWVdXSAoaW5zZXJ0ISBpZCBhdHRyIHZhbHVlKSkgYXR0ci0+dmFsdWUpKVxuIChbaWQgYXR0ciB2YWx1ZV1cbiAgKGlmXG4gICAqbXV0YWJsZS1zZXNzaW9uKlxuICAgKHZzd2FwISAqbXV0YWJsZS1zZXNzaW9uKiBpbnNlcnQgaWQgYXR0ciB2YWx1ZSlcbiAgICh0aHJvd1xuICAgIChleC1pbmZvXG4gICAgIFwiVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2tcIlxuICAgICB7fSkpKSkpXG4ifSB7OnN5bSAqc2Vzc2lvbiosIDptZXRhIHs6ZG9jICJQcm92aWRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2Vzc2lvbiBmcm9tIGluc2lkZSBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2suIn0sIDpzb3VyY2UgIihkZWYgKnNlc3Npb24qIG5pbClcbiJ9IHs6c3ltIHJldHJhY3QsIDptZXRhIHs6ZG9jICJSZXRyYWN0cyB0aGUgZmFjdCB3aXRoIHRoZSBnaXZlbiBpZCArIGF0dHIgY29tYm8uIiwgOmFyZ2xpc3RzIChbc2Vzc2lvbiBpZCBhdHRyXSl9LCA6c291cmNlICIoZGVmblxuIHJldHJhY3RcbiBcIlJldHJhY3RzIHRoZSBmYWN0IHdpdGggdGhlIGdpdmVuIGlkICsgYXR0ciBjb21iby5cIlxuIFtzZXNzaW9uIGlkIGF0dHJdXG4gKGxldFxuICBbaWQrYXR0clxuICAgW2lkIGF0dHJdXG4gICBub2RlLXBhdGhzXG4gICAoZ2V0LWluIHNlc3Npb24gWzppZC1hdHRyLW5vZGVzIGlkK2F0dHJdKV1cbiAgKHdoZW4tbm90XG4gICBub2RlLXBhdGhzXG4gICAodGhyb3cgKGV4LWluZm8gKHN0ciBpZCthdHRyIFwiIG5vdCBpbiBzZXNzaW9uXCIpIHt9KSkpXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFtzZXNzaW9uIG5vZGUtcGF0aF1cbiAgICAobGV0XG4gICAgIFtub2RlXG4gICAgICAoZ2V0LWluIHNlc3Npb24gbm9kZS1wYXRoKVxuICAgICAgZmFjdFxuICAgICAgKGdldC1pbiBub2RlIFs6ZmFjdHMgaWQgYXR0cl0pXVxuICAgICAocmlnaHQtYWN0aXZhdGUtYWxwaGEtbm9kZVxuICAgICAgc2Vzc2lvblxuICAgICAgbm9kZS1wYXRoXG4gICAgICAoLT5Ub2tlbiBmYWN0IDpyZXRyYWN0IG5pbCkpKSlcbiAgIHNlc3Npb25cbiAgIG5vZGUtcGF0aHMpKSlcbiJ9IHs6c3ltIHF1ZXJ5LWFsbCwgOm1ldGEgezpkb2MgIldoZW4gY2FsbGVkIHdpdGgganVzdCBhIHNlc3Npb24sIHJldHVybnMgYSB2ZWN0b3Igb2YgYWxsIGluc2VydGVkIGZhY3RzLlxuICBPdGhlcndpc2UsIHJldHVybnMgYSB2ZWN0b3Igb2YgbWFwcyBjb250YWluaW5nIGFsbCB0aGUgbWF0Y2hlcyBmb3IgdGhlIGdpdmVuIHJ1bGUuIiwgOmFyZ2xpc3RzIFtbc2Vzc2lvbl0gW3Nlc3Npb24gcnVsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIHF1ZXJ5LWFsbFxuIFwiV2hlbiBjYWxsZWQgd2l0aCBqdXN0IGEgc2Vzc2lvbiwgcmV0dXJucyBhIHZlY3RvciBvZiBhbGwgaW5zZXJ0ZWQgZmFjdHMuXFxuICBPdGhlcndpc2UsIHJldHVybnMgYSB2ZWN0b3Igb2YgbWFwcyBjb250YWluaW5nIGFsbCB0aGUgbWF0Y2hlcyBmb3IgdGhlIGdpdmVuIHJ1bGUuXCJcbiAoW3Nlc3Npb25dXG4gIChtYXB2XG4gICAoZm5cbiAgICBbW1tpZCBhdHRyXSBub2Rlc11dXG4gICAgKC0+XG4gICAgIChnZXQtaW4gc2Vzc2lvbiAoZmlyc3Qgbm9kZXMpKVxuICAgICAoZ2V0LWluIFs6ZmFjdHMgaWQgYXR0cl0pXG4gICAgICgoanV4dCA6aWQgOmF0dHIgOnZhbHVlKSkpKVxuICAgKDppZC1hdHRyLW5vZGVzIHNlc3Npb24pKSlcbiAoW3Nlc3Npb24gcnVsZS1uYW1lXVxuICAobGV0XG4gICBbcnVsZS1pZFxuICAgIChvclxuICAgICAoZ2V0LWluIHNlc3Npb24gWzpydWxlLWlkcyBydWxlLW5hbWVdKVxuICAgICAodGhyb3cgKGV4LWluZm8gKHN0ciBydWxlLW5hbWUgXCIgbm90IGluIHNlc3Npb25cIikge30pKSlcbiAgICBydWxlXG4gICAgKGdldC1pbiBzZXNzaW9uIFs6YmV0YS1ub2RlcyBydWxlLWlkXSldXG4gICAocmVkdWNlLWt2XG4gICAgKGZuIFt2IF8gezprZXlzIFt2YXJzIGVuYWJsZWRdfV0gKGlmIGVuYWJsZWQgKGNvbmogdiB2YXJzKSB2KSlcbiAgICBbXVxuICAgICg6bWF0Y2hlcyBydWxlKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgY29udGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZVxuIFtzcGVjIGNvbnRlbnRdXG4gKGxldFxuICBbcmVzIChzL2NvbmZvcm0gc3BlYyBjb250ZW50KV1cbiAgKGlmXG4gICAoPSA6Y2xvanVyZS5zcGVjLmFscGhhL2ludmFsaWQgcmVzKVxuICAgKHRocm93IChleC1pbmZvIChleHBvdW5kL2V4cG91bmQtc3RyIHNwZWMgY29udGVudCkge30pKVxuICAgcmVzKSkpXG4ifSksIGNyb3NzLXBhcmluZmVyLmNvcmUgKHs6c3ltIHBhcmVuLW1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIHBhcmVuIG1vZGUgb24gdGhlIGdpdmVuIHRleHQuIiwgOmFyZ2xpc3RzIChbdGV4dCB4IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyZW4tbW9kZVxuIFwiUnVucyBwYXJlbiBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LlwiXG4gW3RleHQgeCBsaW5lXVxuICM/KDpjbGogKGxldCBbcmVzICh0cnkgKFBhcmluZmVyL3BhcmVuTW9kZSB0ZXh0IChpbnQgeCkgKGludCBsaW5lKSBuaWwgZmFsc2UpIChjYXRjaCBFeGNlcHRpb24gXyAoUGFyaW5mZXIvcGFyZW5Nb2RlIHRleHQgKGludCAwKSAoaW50IDApIG5pbCBmYWxzZSkpKV0gezp4ICguLWN1cnNvclggcmVzKSwgOnRleHQgKC4tdGV4dCByZXMpfSkgOmNsanMgKGxldCBbcmVzICgucGFyZW5Nb2RlIGpzL3BhcmluZmVyIHRleHQgI2pzIHs6Y3Vyc29yTGluZSBsaW5lLCA6Y3Vyc29yWCB4fSldIHs6eCAoYWdldCByZXMgXCJjdXJzb3JYXCIpLCA6dGV4dCAoYWdldCByZXMgXCJ0ZXh0XCIpfSkpKVxuIn0gezpzeW0gYWRkLWluZGVudCwgOm1ldGEgezpkb2MgIkFkZHMgaW5kZW50IHRvIHRoZSBzdGF0ZS4iLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtaW5kZW50XG4gXCJBZGRzIGluZGVudCB0byB0aGUgc3RhdGUuXCJcbiBbc3RhdGVdXG4gKGxldFxuICBbezprZXlzIFt0ZXh0IGN1cnNvci1wb3NpdGlvbiBpbmRlbnQtdHlwZV19XG4gICBzdGF0ZVxuICAgW3N0YXJ0LXBvcyBlbmQtcG9zXVxuICAgY3Vyc29yLXBvc2l0aW9uXG4gICBbc3RhcnQtbGluZSBzdGFydC14XVxuICAgKHBvc2l0aW9uLT5yb3ctY29sIHRleHQgc3RhcnQtcG9zKVxuICAgW2VuZC1saW5lIF9dXG4gICAocG9zaXRpb24tPnJvdy1jb2wgdGV4dCBlbmQtcG9zKVxuICAgbGluZXNcbiAgIChzcGxpdC1saW5lcyB0ZXh0KVxuICAgdGFnc1xuICAgKHRzL2NvZGUtPnRhZ3MgdGV4dClcbiAgIG5ldy1pbmRlbnQtbGV2ZWxcbiAgIChjYXNlXG4gICAgaW5kZW50LXR5cGVcbiAgICA6cmV0dXJuXG4gICAgKHRzL2luZGVudC1mb3ItbGluZSB0YWdzIChpbmMgc3RhcnQtbGluZSkpXG4gICAgOmJhY2tcbiAgICAodHMvYmFjay1pbmRlbnQtZm9yLWxpbmVcbiAgICAgdGFnc1xuICAgICAoaW5jIHN0YXJ0LWxpbmUpXG4gICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSkpXG4gICAgOmZvcndhcmRcbiAgICAodHMvZm9yd2FyZC1pbmRlbnQtZm9yLWxpbmVcbiAgICAgdGFnc1xuICAgICAoaW5jIHN0YXJ0LWxpbmUpXG4gICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSkpXG4gICAgOm5vcm1hbFxuICAgIHN0YXJ0LXgpXG4gICBsaW5lc1xuICAgKGlmXG4gICAgKD0gaW5kZW50LXR5cGUgOm5vcm1hbClcbiAgICAobG9vcFxuICAgICBbbGluZXMgbGluZXMgdGFncyB0YWdzIGxpbmUtbnVtIChpbmMgc3RhcnQtbGluZSldXG4gICAgIChpZi1sZXRcbiAgICAgIFtsaW5lIChnZXQgbGluZXMgbGluZS1udW0pXVxuICAgICAgKGxldFxuICAgICAgIFtpbmRlbnRcbiAgICAgICAgKHRzL2luZGVudC1mb3ItbGluZSB0YWdzIChpbmMgbGluZS1udW0pKVxuICAgICAgICBjdXJyZW50LWluZGVudFxuICAgICAgICAoaW5kZW50LWNvdW50IGxpbmUpXVxuICAgICAgIChpZlxuICAgICAgICAoYW5kICg+IGluZGVudCAwKSAoPiBpbmRlbnQgc3RhcnQteCkpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtsaW5lc1xuICAgICAgICAgICh1cGRhdGUtaW5kZW50ICgtIGluZGVudCBjdXJyZW50LWluZGVudCkgbGluZXMgbGluZS1udW0pXG4gICAgICAgICAgdGV4dFxuICAgICAgICAgIChzdHIvam9pbiBcXG5ld2xpbmUgbGluZXMpXG4gICAgICAgICAgdGFnc1xuICAgICAgICAgICh0cy9jb2RlLT50YWdzIHRleHQpXVxuICAgICAgICAgKHJlY3VyIGxpbmVzIHRhZ3MgKGluYyBsaW5lLW51bSkpKVxuICAgICAgICBsaW5lcykpXG4gICAgICBsaW5lcykpXG4gICAgKGxldFxuICAgICBbb2xkLWluZGVudC1sZXZlbFxuICAgICAgKGluZGVudC1jb3VudCAoZ2V0IGxpbmVzIHN0YXJ0LWxpbmUpKVxuICAgICAgZGlmZlxuICAgICAgKC0gbmV3LWluZGVudC1sZXZlbCBvbGQtaW5kZW50LWxldmVsKVxuICAgICAgZGlmZlxuICAgICAgKGlmXG4gICAgICAgKG5lZz8gZGlmZilcbiAgICAgICAoLT4+XG4gICAgICAgIChzZXEgKGdldCBsaW5lcyBzdGFydC1saW5lKSlcbiAgICAgICAgKHNwbGl0LXdpdGggKGZuKiBbcDFfXzQ0OTgyI10gKD0gcDFfXzQ0OTgyIyBcXHNwYWNlKSkpXG4gICAgICAgIGZpcnN0XG4gICAgICAgICh0YWtlICgqIC0xIGRpZmYpKVxuICAgICAgICBjb3VudFxuICAgICAgICAoKiAtMSkpXG4gICAgICAgZGlmZildXG4gICAgIChyZWR1Y2VcbiAgICAgIChwYXJ0aWFsIHVwZGF0ZS1pbmRlbnQgZGlmZilcbiAgICAgIGxpbmVzXG4gICAgICAocmFuZ2Ugc3RhcnQtbGluZSAoaW5jIGVuZC1saW5lKSkpKSlcbiAgIHRleHRcbiAgIChzdHIvam9pbiBcXG5ld2xpbmUgbGluZXMpXG4gICB0ZXh0XG4gICAoOnRleHQgKGluZGVudC1tb2RlIHRleHQgbmV3LWluZGVudC1sZXZlbCBzdGFydC1saW5lIHRydWUpKVxuICAgbGluZXNcbiAgIChzcGxpdC1saW5lcyB0ZXh0KV1cbiAgezpjdXJzb3ItcG9zaXRpb25cbiAgIChpZlxuICAgICg9IHN0YXJ0LXBvcyBlbmQtcG9zKVxuICAgIChsZXRcbiAgICAgW3BvcyAocm93LWNvbC0+cG9zaXRpb24gdGV4dCBzdGFydC1saW5lIG5ldy1pbmRlbnQtbGV2ZWwpXVxuICAgICBbcG9zIHBvc10pXG4gICAgWyhyb3ctY29sLT5wb3NpdGlvbiB0ZXh0IHN0YXJ0LWxpbmUgMClcbiAgICAgKHJvdy1jb2wtPnBvc2l0aW9uIHRleHQgZW5kLWxpbmUgKGNvdW50IChnZXQgbGluZXMgZW5kLWxpbmUpKSldKSxcbiAgIDp0ZXh0IHRleHR9KSlcbiJ9IHs6c3ltIGluZGVudC1jb3VudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIGluZGVudC1jb3VudFxuIFtsaW5lXVxuICgtPj5cbiAgbGluZVxuICBzZXFcbiAgKHRha2Utd2hpbGUgKGZuKiBbcDFfXzQ0OTgwI10gKD0gcDFfXzQ0OTgwIyBcXHNwYWNlKSkpXG4gIGNvdW50KSlcbiJ9IHs6c3ltIHJvdy1jb2wtPnBvc2l0aW9uLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgYSByb3cgYW5kIGNvbHVtbiBudW1iZXIgdG8gYSBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFt0ZXh0IHJvdyBjb2xdKX0sIDpzb3VyY2UgIihkZWZuXG4gcm93LWNvbC0+cG9zaXRpb25cbiBcIkNvbnZlcnRzIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyIHRvIGEgcG9zaXRpb24uXCJcbiBbdGV4dCByb3cgY29sXVxuIChsZXRcbiAgW2FsbC1saW5lc1xuICAgKHZlYyAoc3BsaXQtbGluZXMgdGV4dCkpXG4gICBsaW5lc1xuICAgKHZlYyAodGFrZSByb3cgYWxsLWxpbmVzKSlcbiAgIGxhc3QtbGluZVxuICAgKGdldCBhbGwtbGluZXMgcm93KVxuICAgbGluZXNcbiAgIChpZlxuICAgIChhbmQgbGFzdC1saW5lICg+PSAoY291bnQgbGFzdC1saW5lKSBjb2wpKVxuICAgIChjb25qIGxpbmVzIChzdWJzIGxhc3QtbGluZSAwIGNvbCkpXG4gICAgbGluZXMpXG4gICB0ZXh0XG4gICAoc3RyL2pvaW4gXCJcXG5cIiBsaW5lcyldXG4gIChjb3VudCB0ZXh0KSkpXG4ifSB7OnN5bSBwb3NpdGlvbi0+cm93LWNvbCwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGEgcG9zaXRpb24gdG8gYSByb3cgYW5kIGNvbHVtbiBudW1iZXIuIiwgOmFyZ2xpc3RzIChbdGV4dCBwb3NpdGlvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3NpdGlvbi0+cm93LWNvbFxuIFwiQ29udmVydHMgYSBwb3NpdGlvbiB0byBhIHJvdyBhbmQgY29sdW1uIG51bWJlci5cIlxuIFt0ZXh0IHBvc2l0aW9uXVxuIChsZXRcbiAgW3RleHRcbiAgIChzdWJzIHRleHQgMCBwb3NpdGlvbilcbiAgIGxhc3QtbmV3bGluZVxuICAgKC5sYXN0SW5kZXhPZiB0ZXh0IFwiXFxuXCIpXG4gICByb3dcbiAgIChjb3VudCAocmUtc2VxICNcIlxcblwiIHRleHQpKVxuICAgY29sXG4gICAoaWYgKD49IGxhc3QtbmV3bGluZSAwKSAoLSBwb3NpdGlvbiBsYXN0LW5ld2xpbmUgMSkgcG9zaXRpb24pXVxuICBbcm93IGNvbF0pKVxuIn0gezpzeW0gc3BsaXQtbGluZXMsIDptZXRhIHs6ZG9jICJTcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXQtbGluZXNcbiBcIlNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMuXCJcbiBbc11cbiAodmVjICguc3BsaXQgcyBcIlxcblwiIC0xKSkpXG4ifSB7OnN5bSB1cGRhdGUtaW5kZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RpZmYgbGluZXMgbGluZS1udW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWluZGVudFxuIFtkaWZmIGxpbmVzIGxpbmUtbnVtXVxuICh1cGRhdGVcbiAgbGluZXNcbiAgbGluZS1udW1cbiAgKGZuXG4gICBbbGluZV1cbiAgIChsZXRcbiAgICBbW3NwYWNlcyBjb2RlXVxuICAgICAoc3BsaXQtd2l0aCAoZm4qIFtwMV9fNDQ5ODEjXSAoPSBwMV9fNDQ5ODEjIFxcc3BhY2UpKSAoc2VxIGxpbmUpKVxuICAgICBzcGFjZXNcbiAgICAgKGlmXG4gICAgICAocG9zPyBkaWZmKVxuICAgICAgKGNvbmNhdCBzcGFjZXMgKHJlcGVhdCBkaWZmIFxcc3BhY2UpKVxuICAgICAgKGRyb3AgKCogLTEgZGlmZikgc3BhY2VzKSldXG4gICAgKHN0ciAoc3RyL2pvaW4gc3BhY2VzKSAoc3RyL2pvaW4gY29kZSkpKSkpKVxuIn0gezpzeW0gbW9kZSwgOm1ldGEgezpkb2MgIlJ1bnMgdGhlIHNwZWNpZmllZCBtb2RlLCB3aGljaCBjYW4gYmUgOnBhcmVuLCA6aW5kZW50LCBvciA6Ym90aC4iLCA6YXJnbGlzdHMgKFttb2RlLXR5cGUgdGV4dCB4IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbW9kZVxuIFwiUnVucyB0aGUgc3BlY2lmaWVkIG1vZGUsIHdoaWNoIGNhbiBiZSA6cGFyZW4sIDppbmRlbnQsIG9yIDpib3RoLlwiXG4gW21vZGUtdHlwZSB0ZXh0IHggbGluZV1cbiAoY2FzZVxuICBtb2RlLXR5cGVcbiAgOnBhcmVuXG4gIChwYXJlbi1tb2RlIHRleHQgeCBsaW5lKVxuICA6aW5kZW50XG4gIChpbmRlbnQtbW9kZSB0ZXh0IHggbGluZSlcbiAgOmJvdGhcbiAgKC0+IHRleHQgKHBhcmVuLW1vZGUgeCBsaW5lKSA6dGV4dCAoaW5kZW50LW1vZGUgeCBsaW5lKSkpKVxuIn0gezpzeW0gaW5kZW50LW1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIGluZGVudCBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LiIsIDphcmdsaXN0cyBbW3RleHQgeCBsaW5lXSBbdGV4dCB4IGxpbmUgcHJldmlldy1jdXJzb3Itc2NvcGU/XV19LCA6c291cmNlICIoZGVmblxuIGluZGVudC1tb2RlXG4gXCJSdW5zIGluZGVudCBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LlwiXG4gKFt0ZXh0IHggbGluZV0gKGluZGVudC1tb2RlIHRleHQgeCBsaW5lIGZhbHNlKSlcbiAoW3RleHQgeCBsaW5lIHByZXZpZXctY3Vyc29yLXNjb3BlP11cbiAgIz8oOmNsaiAobGV0IFtyZXMgKHRyeSAoUGFyaW5mZXIvaW5kZW50TW9kZSB0ZXh0IChpbnQgeCkgKGludCBsaW5lKSBuaWwgcHJldmlldy1jdXJzb3Itc2NvcGU/KSAoY2F0Y2ggRXhjZXB0aW9uIF8gKFBhcmluZmVyL2luZGVudE1vZGUgdGV4dCAoaW50IDApIChpbnQgMCkgbmlsIHByZXZpZXctY3Vyc29yLXNjb3BlPykpKV0gezp4ICguLWN1cnNvclggcmVzKSwgOnRleHQgKC4tdGV4dCByZXMpfSkgOmNsanMgKGxldCBbcmVzICguaW5kZW50TW9kZSBqcy9wYXJpbmZlciB0ZXh0ICNqcyB7OmN1cnNvckxpbmUgbGluZSwgOmN1cnNvclggeCwgOnByZXZpZXdDdXJzb3JTY29wZSBwcmV2aWV3LWN1cnNvci1zY29wZT99KV0gezp4IChhZ2V0IHJlcyBcImN1cnNvclhcIiksIDp0ZXh0IChhZ2V0IHJlcyBcInRleHRcIil9KSkpKVxuIn0gezpzeW0gYWRkLXBhcmluZmVyLCA6bWV0YSB7OmRvYyAiQWRkcyBwYXJpbmZlciB0byB0aGUgc3RhdGUuIiwgOmFyZ2xpc3RzIChbbW9kZS10eXBlIHN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1wYXJpbmZlclxuIFwiQWRkcyBwYXJpbmZlciB0byB0aGUgc3RhdGUuXCJcbiBbbW9kZS10eXBlIHN0YXRlXVxuIChsZXRcbiAgW3s6a2V5cyBbY3Vyc29yLXBvc2l0aW9uIHRleHRdfVxuICAgc3RhdGVcbiAgIFtzdGFydC1wb3MgZW5kLXBvc11cbiAgIGN1cnNvci1wb3NpdGlvblxuICAgW3JvdyBjb2xdXG4gICAocG9zaXRpb24tPnJvdy1jb2wgdGV4dCBzdGFydC1wb3MpXG4gICByZXN1bHRcbiAgIChtb2RlIG1vZGUtdHlwZSB0ZXh0IGNvbCByb3cpXVxuICAoaWZcbiAgIChub3Q9IHN0YXJ0LXBvcyBlbmQtcG9zKVxuICAgKGFzc29jIHN0YXRlIDp0ZXh0ICg6dGV4dCByZXN1bHQpKVxuICAgKGxldFxuICAgIFtwb3MgKHJvdy1jb2wtPnBvc2l0aW9uICg6dGV4dCByZXN1bHQpIHJvdyAoOnggcmVzdWx0KSldXG4gICAgKGFzc29jIHN0YXRlIDp0ZXh0ICg6dGV4dCByZXN1bHQpIDpjdXJzb3ItcG9zaXRpb24gW3BvcyBwb3NdKSkpKSlcbiJ9KSwgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkICh7OnN5bSBjcmVzY2VudC0zZC1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3Jlc2NlbnQtM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHlcbiAgICBnYW1lXG4gICAgKHByaW1pdGl2ZXMvY3Jlc2NlbnRcbiAgICAgezp2ZXJ0aWNhbC1yYWRpdXMgMjAsXG4gICAgICA6b3V0ZXItcmFkaXVzIDIwLFxuICAgICAgOmlubmVyLXJhZGl1cyAxNSxcbiAgICAgIDp0aGlja25lc3MgMTAsXG4gICAgICA6c3ViZGl2aXNpb25zLWRvd24gMzB9KSlcbiAgIG9iamVjdHNcbiAgICh2ZWNcbiAgICAoZm9yXG4gICAgIFtpIChyYW5nZSA1MCldXG4gICAgIHs6dHogKHJhbmQgMTUwKSxcbiAgICAgIDpyeCAocmFuZCAoKiAyIChtYXRoIFBJKSkpLFxuICAgICAgOnJ5IChyYW5kIChtYXRoIFBJKSksXG4gICAgICA6bWF0LXVuaWZvcm1zXG4gICAgICB7OnVfY29sb3IgWyhyYW5kKSAocmFuZCkgKHJhbmQpIDFdLFxuICAgICAgIDp1X3NwZWN1bGFyIFsxIDEgMSAxXSxcbiAgICAgICA6dV9zaGluaW5lc3MgKHJhbmQgNTAwKSxcbiAgICAgICA6dV9zcGVjdWxhckZhY3RvciAocmFuZCAxKX19KSldXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpvYmplY3RzIG9iamVjdHMpKSlcbiJ9IHs6c3ltIGJhbGxzLTNkLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2JhbGxzLTNkLWluaXQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpLCA6Ym9keS1zdHIgIigtPj5cbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9iYWxscy0zZC1pbml0KVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3BcbiAgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9iYWxscy0zZC8wIn1dfSB7OnN5bSBwbGFuZXMtM2QtaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHBsYW5lcy0zZC1pbml0XG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKHNoYXBlLWVudGl0eVxuICAgIGdhbWVcbiAgICAocHJpbWl0aXZlcy9wbGFuZVxuICAgICB7OndpZHRoIDIwLFxuICAgICAgOmRlcHRoIDIwLFxuICAgICAgOnN1YmRpdmlzaW9ucy13aWR0aCAxMCxcbiAgICAgIDpzdWJkaXZpc2lvbnMtaGVpZ2h0IDEwfSkpXG4gICBvYmplY3RzXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgNTApXVxuICAgICB7OnR6IChyYW5kIDE1MCksXG4gICAgICA6cnggKHJhbmQgKCogMiAobWF0aCBQSSkpKSxcbiAgICAgIDpyeSAocmFuZCAobWF0aCBQSSkpLFxuICAgICAgOm1hdC11bmlmb3Jtc1xuICAgICAgezp1X2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSxcbiAgICAgICA6dV9zcGVjdWxhciBbMSAxIDEgMV0sXG4gICAgICAgOnVfc2hpbmluZXNzIChyYW5kIDUwMCksXG4gICAgICAgOnVfc3BlY3VsYXJGYWN0b3IgKHJhbmQgMSl9fSkpXVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6b2JqZWN0cyBvYmplY3RzKSkpXG4ifSB7OnN5bSBwbGFuZXMtM2QsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvcGxhbmVzLTNkLWluaXQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpLCA6Ym9keS1zdHIgIigtPj5cbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9wbGFuZXMtM2QtaW5pdClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wXG4gIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvcGxhbmVzLTNkLzAifV19IHs6c3ltIGRpc2MtM2QtaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGRpc2MtM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHkgZ2FtZSAocHJpbWl0aXZlcy9kaXNjIHs6cmFkaXVzIDIwLCA6ZGl2aXNpb25zIDIwfSkpXG4gICBvYmplY3RzXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgNTApXVxuICAgICB7OnR6IChyYW5kIDE1MCksXG4gICAgICA6cnggKHJhbmQgKCogMiAobWF0aCBQSSkpKSxcbiAgICAgIDpyeSAocmFuZCAobWF0aCBQSSkpLFxuICAgICAgOm1hdC11bmlmb3Jtc1xuICAgICAgezp1X2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSxcbiAgICAgICA6dV9zcGVjdWxhciBbMSAxIDEgMV0sXG4gICAgICAgOnVfc2hpbmluZXNzIChyYW5kIDUwMCksXG4gICAgICAgOnVfc3BlY3VsYXJGYWN0b3IgKHJhbmQgMSl9fSkpXVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6b2JqZWN0cyBvYmplY3RzKSkpXG4ifSB7OnN5bSBhZHZhbmNlZC1yZW5kZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtlbnRpdHkgb2JqZWN0cyB0b3RhbC10aW1lXSwgOmFzIGdhbWV9XSl9LCA6c291cmNlICIoZGVmblxuIGFkdmFuY2VkLXJlbmRlclxuIFt7OmtleXMgW2VudGl0eSBvYmplY3RzIHRvdGFsLXRpbWVdLCA6YXMgZ2FtZX1dXG4gKGV1L3Jlc2l6ZS1leGFtcGxlIGdhbWUpXG4gKGMvcmVuZGVyIGdhbWUgezpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9fSlcbiAobGV0XG4gIFtbd2lkdGggaGVpZ2h0XVxuICAgKGV1L2dldC1zaXplIGdhbWUpXG4gICBwcm9qZWN0aW9uLW1hdHJpeFxuICAgKG0vcGVyc3BlY3RpdmUtbWF0cml4LTNkIChtL2RlZy0+cmFkIDYwKSAoLyB3aWR0aCBoZWlnaHQpIDEgMjAwMClcbiAgIGNhbWVyYS1wb3NcbiAgIFswIDAgMTAwXVxuICAgdGFyZ2V0XG4gICBbMCAwIDBdXG4gICB1cFxuICAgWzAgMSAwXVxuICAgY2FtZXJhLW1hdHJpeFxuICAgKG0vbG9vay1hdC1tYXRyaXgtM2QgY2FtZXJhLXBvcyB0YXJnZXQgdXApXG4gICB2aWV3LW1hdHJpeFxuICAgKG0vaW52ZXJzZS1tYXRyaXgtM2QgY2FtZXJhLW1hdHJpeClcbiAgIHZpZXctcHJvamVjdGlvbi1tYXRyaXhcbiAgIChtL211bHRpcGx5LW1hdHJpY2VzLTNkIHZpZXctbWF0cml4IHByb2plY3Rpb24tbWF0cml4KVxuICAgZW50aXR5XG4gICAoYXNzb2NcbiAgICBlbnRpdHlcbiAgICA6dW5pZm9ybXNcbiAgICB7J3VfbGlnaHRXb3JsZFBvcyBbLTUwIDMwIDEwMF0sXG4gICAgICd1X3ZpZXdJbnZlcnNlIGNhbWVyYS1tYXRyaXgsXG4gICAgICd1X2xpZ2h0Q29sb3IgWzEgMSAxIDFdfSldXG4gIChkb3NlcVxuICAgW3s6a2V5cyBbcnggcnkgdHogbWF0LXVuaWZvcm1zXX0gb2JqZWN0c11cbiAgIChsZXRcbiAgICBbd29ybGQtbWF0cml4XG4gICAgICgtPj5cbiAgICAgIChtL2lkZW50aXR5LW1hdHJpeCA0KVxuICAgICAgKG0vbXVsdGlwbHktbWF0cmljZXMtM2RcbiAgICAgICAobS94LXJvdGF0aW9uLW1hdHJpeC0zZCAoKiByeCB0b3RhbC10aW1lKSkpXG4gICAgICAobS9tdWx0aXBseS1tYXRyaWNlcy0zZFxuICAgICAgIChtL3ktcm90YXRpb24tbWF0cml4LTNkICgqIHJ5IHRvdGFsLXRpbWUpKSlcbiAgICAgIChtL211bHRpcGx5LW1hdHJpY2VzLTNkIChtL3RyYW5zbGF0aW9uLW1hdHJpeC0zZCAwIDAgdHopKSldXG4gICAgKGMvcmVuZGVyXG4gICAgIGdhbWVcbiAgICAgKC0+XG4gICAgICBlbnRpdHlcbiAgICAgIChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCB3aWR0aCwgOmhlaWdodCBoZWlnaHR9KVxuICAgICAgKHVwZGF0ZVxuICAgICAgIDp1bmlmb3Jtc1xuICAgICAgIGFzc29jXG4gICAgICAgJ3Vfd29ybGRcbiAgICAgICB3b3JsZC1tYXRyaXhcbiAgICAgICAndV93b3JsZFZpZXdQcm9qZWN0aW9uXG4gICAgICAgKC0+PlxuICAgICAgICB2aWV3LXByb2plY3Rpb24tbWF0cml4XG4gICAgICAgIChtL211bHRpcGx5LW1hdHJpY2VzLTNkIHdvcmxkLW1hdHJpeCkpXG4gICAgICAgJ3Vfd29ybGRJbnZlcnNlVHJhbnNwb3NlXG4gICAgICAgKC0+PiB3b3JsZC1tYXRyaXggKG0vaW52ZXJzZS1tYXRyaXgtM2QpIChtL3RyYW5zcG9zZS1tYXRyaXgtM2QpKVxuICAgICAgICd1X2NvbG9yXG4gICAgICAgKDp1X2NvbG9yIG1hdC11bmlmb3JtcylcbiAgICAgICAndV9zcGVjdWxhclxuICAgICAgICg6dV9zcGVjdWxhciBtYXQtdW5pZm9ybXMpXG4gICAgICAgJ3Vfc2hpbmluZXNzXG4gICAgICAgKDp1X3NoaW5pbmVzcyBtYXQtdW5pZm9ybXMpXG4gICAgICAgJ3Vfc3BlY3VsYXJGYWN0b3JcbiAgICAgICAoOnVfc3BlY3VsYXJGYWN0b3IgbWF0LXVuaWZvcm1zKSkpKSkpKVxuIGdhbWUpXG4ifSB7OnN5bSBjdWJlcy0zZC1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3ViZXMtM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHkgZ2FtZSAocHJpbWl0aXZlcy9jdWJlIHs6c2l6ZSAyMH0pKVxuICAgb2JqZWN0c1xuICAgKHZlY1xuICAgIChmb3JcbiAgICAgW2kgKHJhbmdlIDUwKV1cbiAgICAgezp0eiAocmFuZCAxNTApLFxuICAgICAgOnJ4IChyYW5kICgqIDIgKG1hdGggUEkpKSksXG4gICAgICA6cnkgKHJhbmQgKG1hdGggUEkpKSxcbiAgICAgIDptYXQtdW5pZm9ybXNcbiAgICAgIHs6dV9jb2xvciBbKHJhbmQpIChyYW5kKSAocmFuZCkgMV0sXG4gICAgICAgOnVfc3BlY3VsYXIgWzEgMSAxIDFdLFxuICAgICAgIDp1X3NoaW5pbmVzcyAocmFuZCA1MDApLFxuICAgICAgIDp1X3NwZWN1bGFyRmFjdG9yIChyYW5kIDEpfX0pKV1cbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOm9iamVjdHMgb2JqZWN0cykpKVxuIn0gezpzeW0gY3ViZXMtM2QsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvY3ViZXMtM2QtaW5pdCkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSksIDpib2R5LXN0ciAiKC0+PlxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2N1YmVzLTNkLWluaXQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcFxuICBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2N1YmVzLTNkLzAifV19IHs6c3ltIGN5bGluZGVyLTNkLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2N5bGluZGVyLTNkLWluaXQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpLCA6Ym9keS1zdHIgIigtPj5cbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jeWxpbmRlci0zZC1pbml0KVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3BcbiAgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jeWxpbmRlci0zZC8wIn1dfSB7OnN5bSB0b3J1cy0zZCwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC90b3J1cy0zZC1pbml0KSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKSwgOmJvZHktc3RyICIoLT4+XG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvdG9ydXMtM2QtaW5pdClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wXG4gIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvdG9ydXMtM2QvMCJ9XX0gezpzeW0gY3Jlc2NlbnQtM2QsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvY3Jlc2NlbnQtM2QtaW5pdCkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSksIDpib2R5LXN0ciAiKC0+PlxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2NyZXNjZW50LTNkLWluaXQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcFxuICBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2NyZXNjZW50LTNkLzAifV19IHs6c3ltIGJhbGxzLTNkLWluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBiYWxscy0zZC1pbml0XG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKHNoYXBlLWVudGl0eVxuICAgIGdhbWVcbiAgICAocHJpbWl0aXZlcy9zcGhlcmVcbiAgICAgezpyYWRpdXMgMTAsIDpzdWJkaXZpc2lvbnMtYXhpcyA0OCwgOnN1YmRpdmlzaW9ucy1oZWlnaHQgMjR9KSlcbiAgIG9iamVjdHNcbiAgICh2ZWNcbiAgICAoZm9yXG4gICAgIFtpIChyYW5nZSA1MCldXG4gICAgIHs6dHogKHJhbmQgMTUwKSxcbiAgICAgIDpyeCAocmFuZCAoKiAyIChtYXRoIFBJKSkpLFxuICAgICAgOnJ5IChyYW5kIChtYXRoIFBJKSksXG4gICAgICA6bWF0LXVuaWZvcm1zXG4gICAgICB7OnVfY29sb3IgWyhyYW5kKSAocmFuZCkgKHJhbmQpIDFdLFxuICAgICAgIDp1X3NwZWN1bGFyIFsxIDEgMSAxXSxcbiAgICAgICA6dV9zaGluaW5lc3MgKHJhbmQgNTAwKSxcbiAgICAgICA6dV9zcGVjdWxhckZhY3RvciAocmFuZCAxKX19KSldXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpvYmplY3RzIG9iamVjdHMpKSlcbiJ9IHs6c3ltIHNoYXBlLWVudGl0eSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lIHs6a2V5cyBbcG9zaXRpb25zIG5vcm1hbHMgdGV4Y29vcmRzIGluZGljZXNdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaGFwZS1lbnRpdHlcbiBbZ2FtZSB7OmtleXMgW3Bvc2l0aW9ucyBub3JtYWxzIHRleGNvb3JkcyBpbmRpY2VzXX1dXG4gKGMvY29tcGlsZVxuICBnYW1lXG4gIHs6dmVydGV4IGRhdGEvYWR2YW5jZWQtdmVydGV4LXNoYWRlcixcbiAgIDpmcmFnbWVudCBkYXRhL2FkdmFuY2VkLWZyYWdtZW50LXNoYWRlcixcbiAgIDphdHRyaWJ1dGVzXG4gICB7J2FfcG9zaXRpb24gezpkYXRhIHBvc2l0aW9ucywgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAzfSxcbiAgICAnYV9ub3JtYWwgezpkYXRhIG5vcm1hbHMsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgM30sXG4gICAgJ2FfdGV4Q29vcmQgezpkYXRhIHRleGNvb3JkcywgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAyfX0sXG4gICA6aW5kaWNlc1xuICAgezpkYXRhXG4gICAgKCM/KDpjbGogc2hvcnQtYXJyYXkgOmNsanMgKGZuKiBbcDFfXzQ1NDc1I10gKGpzL1VpbnQxNkFycmF5LiBwMV9fNDU0NzUjKSkpXG4gICAgIGluZGljZXMpLFxuICAgIDp0eXBlIChnbCBnYW1lIFVOU0lHTkVEX1NIT1JUKX19KSlcbiJ9IHs6c3ltIGN5bGluZGVyLTNkLWluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjeWxpbmRlci0zZC1pbml0XG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKHNoYXBlLWVudGl0eVxuICAgIGdhbWVcbiAgICAocHJpbWl0aXZlcy9jeWxpbmRlclxuICAgICB7OmJvdHRvbS1yYWRpdXMgMTAsXG4gICAgICA6dG9wLXJhZGl1cyAxMCxcbiAgICAgIDpoZWlnaHQgMzAsXG4gICAgICA6cmFkaWFsLXN1YmRpdmlzaW9ucyAxMCxcbiAgICAgIDp2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMgMTB9KSlcbiAgIG9iamVjdHNcbiAgICh2ZWNcbiAgICAoZm9yXG4gICAgIFtpIChyYW5nZSA1MCldXG4gICAgIHs6dHogKHJhbmQgMTUwKSxcbiAgICAgIDpyeCAocmFuZCAoKiAyIChtYXRoIFBJKSkpLFxuICAgICAgOnJ5IChyYW5kIChtYXRoIFBJKSksXG4gICAgICA6bWF0LXVuaWZvcm1zXG4gICAgICB7OnVfY29sb3IgWyhyYW5kKSAocmFuZCkgKHJhbmQpIDFdLFxuICAgICAgIDp1X3NwZWN1bGFyIFsxIDEgMSAxXSxcbiAgICAgICA6dV9zaGluaW5lc3MgKHJhbmQgNTAwKSxcbiAgICAgICA6dV9zcGVjdWxhckZhY3RvciAocmFuZCAxKX19KSldXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpvYmplY3RzIG9iamVjdHMpKSlcbiJ9IHs6c3ltIGRpc2MtM2QsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvZGlzYy0zZC1pbml0KSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKSwgOmJvZHktc3RyICIoLT4+XG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvZGlzYy0zZC1pbml0KVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3BcbiAgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9kaXNjLTNkLzAifV19IHs6c3ltIHRvcnVzLTNkLWluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0b3J1cy0zZC1pbml0XG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKHNoYXBlLWVudGl0eVxuICAgIGdhbWVcbiAgICAocHJpbWl0aXZlcy90b3J1c1xuICAgICB7OnJhZGl1cyAyMCxcbiAgICAgIDp0aGlja25lc3MgNSxcbiAgICAgIDpyYWRpYWwtc3ViZGl2aXNpb25zIDIwLFxuICAgICAgOmJvZHktc3ViZGl2aXNpb25zIDIwfSkpXG4gICBvYmplY3RzXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgNTApXVxuICAgICB7OnR6IChyYW5kIDE1MCksXG4gICAgICA6cnggKHJhbmQgKCogMiAobWF0aCBQSSkpKSxcbiAgICAgIDpyeSAocmFuZCAobWF0aCBQSSkpLFxuICAgICAgOm1hdC11bmlmb3Jtc1xuICAgICAgezp1X2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSxcbiAgICAgICA6dV9zcGVjdWxhciBbMSAxIDEgMV0sXG4gICAgICAgOnVfc2hpbmluZXNzIChyYW5kIDUwMCksXG4gICAgICAgOnVfc3BlY3VsYXJGYWN0b3IgKHJhbmQgMSl9fSkpXVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6b2JqZWN0cyBvYmplY3RzKSkpXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLmlvYy1oZWxwZXJzICh7OnN5bSBFWENFUFRJT04tRlJBTUVTLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBFWENFUFRJT04tRlJBTUVTIDQpXG4ifSB7OnN5bSBTVEFURS1JRFgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFNUQVRFLUlEWCAxKVxuIn0gezpzeW0gYXNldC1vYmplY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyIGlkeCBvXSl9LCA6c291cmNlICIoZGVmbiBhc2V0LW9iamVjdCBbYXJyIGlkeCBvXSAoYWdldCBhcnIgaWR4IG8pKVxuIn0gezpzeW0gcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkXG4gW3N0YXRlXVxuICh0cnlcbiAgKHJ1bi1zdGF0ZS1tYWNoaW5lIHN0YXRlKVxuICAoY2F0Y2hcbiAgIGpzL09iamVjdFxuICAgZXhcbiAgIChpbXBsL2Nsb3NlISAoYWdldC1vYmplY3Qgc3RhdGUgVVNFUi1TVEFSVC1JRFgpKVxuICAgKHRocm93IGV4KSkpKVxuIn0gezpzeW0gRk4tSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBGTi1JRFggMClcbiJ9IHs6c3ltIGFnZXQtb2JqZWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyciBpZHhdKX0sIDpzb3VyY2UgIihkZWZuIGFnZXQtb2JqZWN0IFthcnIgaWR4XSAoYWdldCBhcnIgaWR4KSlcbiJ9IHs6c3ltIHJldHVybi1jaGFuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIHZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHJldHVybi1jaGFuXG4gW3N0YXRlIHZhbHVlXVxuIChsZXRcbiAgW2MgKGFnZXQgc3RhdGUgVVNFUi1TVEFSVC1JRFgpXVxuICAod2hlbi1ub3QgKG5pbD8gdmFsdWUpIChpbXBsL3B1dCEgYyB2YWx1ZSAoZm4taGFuZGxlciAoZm4gW10gbmlsKSkpKVxuICAoaW1wbC9jbG9zZSEgYylcbiAgYykpXG4ifSB7OnN5bSBCSU5ESU5HUy1JRFgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEJJTkRJTkdTLUlEWCAzKVxuIn0gezpzeW0gQ1VSUkVOVC1FWENFUFRJT04sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIENVUlJFTlQtRVhDRVBUSU9OIDUpXG4ifSB7OnN5bSBydW4tc3RhdGUtbWFjaGluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm4gcnVuLXN0YXRlLW1hY2hpbmUgW3N0YXRlXSAoKGFnZXQtb2JqZWN0IHN0YXRlIEZOLUlEWCkgc3RhdGUpKVxuIn0gezpzeW0gZmluaXNoZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHRoZSBtYWNoaW5lIGlzIGluIGEgZmluaXNoZWQgc3RhdGUiLCA6YXJnbGlzdHMgKFtzdGF0ZS1hcnJheV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5pc2hlZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB0aGUgbWFjaGluZSBpcyBpbiBhIGZpbmlzaGVkIHN0YXRlXCJcbiBbc3RhdGUtYXJyYXldXG4gKGtleXdvcmQtaWRlbnRpY2FsPyAoYWdldCBzdGF0ZS1hcnJheSBTVEFURS1JRFgpIDpmaW5pc2hlZCkpXG4ifSB7OnN5bSBVU0VSLVNUQVJULUlEWCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgVVNFUi1TVEFSVC1JRFggNilcbiJ9IHs6c3ltIHB1dCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgYmxrIGMgdmFsXSl9LCA6c291cmNlICIoZGVmblxuIHB1dCFcbiBbc3RhdGUgYmxrIGMgdmFsXVxuIChpZi1sZXRcbiAgW2NiXG4gICAoaW1wbC9wdXQhXG4gICAgY1xuICAgIHZhbFxuICAgIChmbi1oYW5kbGVyXG4gICAgIChmblxuICAgICAgW3JldC12YWxdXG4gICAgICAoaW9jL2FzZXQtYWxsISBzdGF0ZSBWQUxVRS1JRFggcmV0LXZhbCBTVEFURS1JRFggYmxrKVxuICAgICAgKHJ1bi1zdGF0ZS1tYWNoaW5lLXdyYXBwZWQgc3RhdGUpKSkpXVxuICAoZG8gKGlvYy9hc2V0LWFsbCEgc3RhdGUgVkFMVUUtSURYIEBjYiBTVEFURS1JRFggYmxrKSA6cmVjdXIpXG4gIG5pbCkpXG4ifSB7OnN5bSB0YWtlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBibGsgY10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWtlIVxuIFtzdGF0ZSBibGsgY11cbiAoaWYtbGV0XG4gIFtjYlxuICAgKGltcGwvdGFrZSFcbiAgICBjXG4gICAgKGZuLWhhbmRsZXJcbiAgICAgKGZuXG4gICAgICBbeF1cbiAgICAgIChpb2MvYXNldC1hbGwhIHN0YXRlIFZBTFVFLUlEWCB4IFNUQVRFLUlEWCBibGspXG4gICAgICAocnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBzdGF0ZSkpKSldXG4gIChkbyAoaW9jL2FzZXQtYWxsISBzdGF0ZSBWQUxVRS1JRFggQGNiIFNUQVRFLUlEWCBibGspIDpyZWN1cilcbiAgbmlsKSlcbiJ9IHs6c3ltIFZBTFVFLUlEWCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgVkFMVUUtSURYIDIpXG4ifSksIHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzICh7OnN5bSB0ZXh0dXJlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdGV4dHVyZXMgKGF0b20gMCkpXG4ifSB7OnN5bSBsaXN0ZW4tZm9yLW1vdXNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbY29udGV4dF0sIDphcyBnYW1lfSAqc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGlzdGVuLWZvci1tb3VzZVxuIFt7OmtleXMgW2NvbnRleHRdLCA6YXMgZ2FtZX0gKnN0YXRlXVxuICM/KDpjbGogKEdMRlcvZ2xmd1NldEN1cnNvclBvc0NhbGxiYWNrIGNvbnRleHQgKHByb3h5IFtHTEZXQ3Vyc29yUG9zQ2FsbGJhY2tdIFtdIChpbnZva2UgW3dpbmRvdyB4cG9zIHlwb3NdIChzd2FwISAqc3RhdGUgKGZuIFt7OmtleXMgW3R4IHR5XSwgOm9yIHt0eCAwLCB0eSAwfSwgOmFzIHN0YXRlfV0gKGxldCBbKmZiLXdpZHRoIChNZW1vcnlVdGlsL21lbUFsbG9jSW50IDEpICpmYi1oZWlnaHQgKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgKndpbmRvdy13aWR0aCAoTWVtb3J5VXRpbC9tZW1BbGxvY0ludCAxKSAqd2luZG93LWhlaWdodCAoTWVtb3J5VXRpbC9tZW1BbGxvY0ludCAxKSBfIChHTEZXL2dsZndHZXRGcmFtZWJ1ZmZlclNpemUgY29udGV4dCAqZmItd2lkdGggKmZiLWhlaWdodCkgXyAoR0xGVy9nbGZ3R2V0V2luZG93U2l6ZSBjb250ZXh0ICp3aW5kb3ctd2lkdGggKndpbmRvdy1oZWlnaHQpIGZiLXdpZHRoICguZ2V0ICpmYi13aWR0aCkgZmItaGVpZ2h0ICguZ2V0ICpmYi1oZWlnaHQpIHdpbmRvdy13aWR0aCAoLmdldCAqd2luZG93LXdpZHRoKSB3aW5kb3ctaGVpZ2h0ICguZ2V0ICp3aW5kb3ctaGVpZ2h0KSB3aWR0aC1yYXRpbyAoLyBmYi13aWR0aCB3aW5kb3ctd2lkdGgpIGhlaWdodC1yYXRpbyAoLyBmYi1oZWlnaHQgd2luZG93LWhlaWdodCkgeCAoLSAoKiB4cG9zIHdpZHRoLXJhdGlvKSB0eCkgeSAoLSAoKiB5cG9zIGhlaWdodC1yYXRpbykgdHkpIHJ4ICgvIHggZmItd2lkdGgpIHJ5ICgvIHkgZmItaGVpZ2h0KSByIChNYXRoL2F0YW4yIHJ4IHJ5KSBjeCAoLSB4ICgvIGZiLXdpZHRoIDIpKSBjeSAoLSAoLyBmYi1oZWlnaHQgMikgeSkgY3IgKC0+ICgvIGN4IGZiLXdpZHRoKSAoKiAzNjApIG0vZGVnLT5yYWQpXSAoTWVtb3J5VXRpbC9tZW1GcmVlICpmYi13aWR0aCkgKE1lbW9yeVV0aWwvbWVtRnJlZSAqZmItaGVpZ2h0KSAoTWVtb3J5VXRpbC9tZW1GcmVlICp3aW5kb3ctd2lkdGgpIChNZW1vcnlVdGlsL21lbUZyZWUgKndpbmRvdy1oZWlnaHQpIChhc3NvYyBzdGF0ZSA6eCB4IDp5IHkgOnJ4IHJ4IDpyeSByeSA6ciByIDpjeCBjeCA6Y3kgY3kgOmNyIGNyKSkpKSkpKSA6Y2xqcyAoZXZlbnRzL2xpc3RlbiBqcy93aW5kb3cgXCJtb3VzZW1vdmVcIiAoZm4gW2V2ZW50XSAoc3dhcCEgKnN0YXRlIChmbiBbezprZXlzIFt0eCB0eV0sIDpvciB7dHggMCwgdHkgMH0sIDphcyBzdGF0ZX1dIChsZXQgW2JvdW5kcyAoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCBjb250ZXh0LmNhbnZhcykgeCAoLSAoLi1jbGllbnRYIGV2ZW50KSAoLi1sZWZ0IGJvdW5kcykgdHgpIHkgKC0gKC4tY2xpZW50WSBldmVudCkgKC4tdG9wIGJvdW5kcykgdHkpIHJ4ICgvIHggKC4td2lkdGggYm91bmRzKSkgcnkgKC8geSAoLi1oZWlnaHQgYm91bmRzKSkgciAoanMvTWF0aC5hdGFuMiByeCByeSkgY3ggKC0geCAoLyAoLi13aWR0aCBib3VuZHMpIDIpKSBjeSAoLSAoLyAoLi1oZWlnaHQgYm91bmRzKSAyKSB5KSBjciAoLT4gKC8gY3ggKC4td2lkdGggYm91bmRzKSkgKCogMzYwKSBtL2RlZy0+cmFkKV0gKGFzc29jIHN0YXRlIDp4IHggOnkgeSA6cnggcnggOnJ5IHJ5IDpyIHIgOmN4IGN4IDpjeSBjeSA6Y3IgY3IpKSkpKSkpKVxuIn0gezpzeW0gZ2V0LXNpemUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtc2l6ZVxuIFtnYW1lXVxuICM/KDpjbGogKGxldCBbKndpZHRoIChNZW1vcnlVdGlsL21lbUFsbG9jSW50IDEpICpoZWlnaHQgKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgXyAoR0xGVy9nbGZ3R2V0RnJhbWVidWZmZXJTaXplICg6Y29udGV4dCBnYW1lKSAqd2lkdGggKmhlaWdodCkgdyAoLmdldCAqd2lkdGgpIGggKC5nZXQgKmhlaWdodCldIChNZW1vcnlVdGlsL21lbUZyZWUgKndpZHRoKSAoTWVtb3J5VXRpbC9tZW1GcmVlICpoZWlnaHQpIFt3IGhdKSA6Y2xqcyBbKC0+IGdhbWUgOmNvbnRleHQgLi1jYW52YXMgLi1jbGllbnRXaWR0aCkgKC0+IGdhbWUgOmNvbnRleHQgLi1jYW52YXMgLi1jbGllbnRIZWlnaHQpXSkpXG4ifSB7OnN5bSBnZXQtd2lkdGgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LXdpZHRoIFtnYW1lXSAoZmlyc3QgKGdldC1zaXplIGdhbWUpKSlcbiJ9IHs6c3ltIGNvcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgY29zIChmbiogW3AxX180NTQ3NyNdIChtYXRoIGNvcyBwMV9fNDU0NzcjKSkpXG4ifSB7OnN5bSByZXNpemUtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2NvbnRleHRdLCA6YXMgZ2FtZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzaXplLWV4YW1wbGVcbiBbezprZXlzIFtjb250ZXh0XSwgOmFzIGdhbWV9XVxuICM/KDpjbGpzIChsZXQgW2Rpc3BsYXktd2lkdGggY29udGV4dC5jYW52YXMuY2xpZW50V2lkdGggZGlzcGxheS1oZWlnaHQgY29udGV4dC5jYW52YXMuY2xpZW50SGVpZ2h0XSAod2hlbiAob3IgKG5vdD0gY29udGV4dC5jYW52YXMud2lkdGggZGlzcGxheS13aWR0aCkgKG5vdD0gY29udGV4dC5jYW52YXMuaGVpZ2h0IGRpc3BsYXktaGVpZ2h0KSkgKHNldCEgY29udGV4dC5jYW52YXMud2lkdGggZGlzcGxheS13aWR0aCkgKHNldCEgY29udGV4dC5jYW52YXMuaGVpZ2h0IGRpc3BsYXktaGVpZ2h0KSkpKSlcbiJ9IHs6c3ltIGdldC1pbWFnZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbmFtZSBjYWxsYmFja10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtaW1hZ2VcbiBbZm5hbWUgY2FsbGJhY2tdXG4gIz8oOmNsaiAobGV0IFtpcyAoaW8vaW5wdXQtc3RyZWFtIChpby9yZXNvdXJjZSAoc3RyIFwiZHluYWRvYy1leHRlbmQvY2xqcy9cIiBmbmFtZSkpKSBieXRlcyAod2l0aC1vcGVuIFtvdXQgKGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtLildIChpby9jb3B5IGlzIG91dCkgKC50b0J5dGVBcnJheSBvdXQpKSAqd2lkdGggKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgKmhlaWdodCAoTWVtb3J5VXRpbC9tZW1BbGxvY0ludCAxKSAqY29tcG9uZW50cyAoTWVtb3J5VXRpbC9tZW1BbGxvY0ludCAxKSBkaXJlY3QtYnVmZmVyIChkb3RvIChCeXRlQnVmZmVyL2FsbG9jYXRlRGlyZWN0IChhbGVuZ3RoIGJ5dGVzKSkgKC5wdXQgYnl0ZXMpICguZmxpcCkpIGRlY29kZWQtaW1hZ2UgKFNUQkltYWdlL3N0YmlfbG9hZF9mcm9tX21lbW9yeSBkaXJlY3QtYnVmZmVyICp3aWR0aCAqaGVpZ2h0ICpjb21wb25lbnRzIFNUQkltYWdlL1NUQklfcmdiX2FscGhhKSBpbWFnZSB7OmRhdGEgZGVjb2RlZC1pbWFnZSwgOndpZHRoICguZ2V0ICp3aWR0aCksIDpoZWlnaHQgKC5nZXQgKmhlaWdodCl9XSAoTWVtb3J5VXRpbC9tZW1GcmVlICp3aWR0aCkgKE1lbW9yeVV0aWwvbWVtRnJlZSAqaGVpZ2h0KSAoTWVtb3J5VXRpbC9tZW1GcmVlICpjb21wb25lbnRzKSAoY2FsbGJhY2sgaW1hZ2UpKSA6Y2xqcyAobGV0IFtpbWFnZSAoanMvSW1hZ2UuKV0gKGRvdG8gaW1hZ2UgKC0+IC4tc3JjIChzZXQhIGZuYW1lKSkgKC0+IC4tb25sb2FkIChzZXQhIChmbiogW10gKGNhbGxiYWNrIHs6ZGF0YSBpbWFnZSwgOndpZHRoIGltYWdlLndpZHRoLCA6aGVpZ2h0IGltYWdlLmhlaWdodH0pKSkpKSkpKVxuIn0gezpzeW0gZ2V0LWhlaWdodCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmbiBnZXQtaGVpZ2h0IFtnYW1lXSAoc2Vjb25kIChnZXQtc2l6ZSBnYW1lKSkpXG4ifSB7OnN5bSBQSSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgUEkgKG1hdGggUEkpKVxuIn0gezpzeW0gaW5pdC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyM/KDpjbGogd2luZG93IDpjbGpzIGNhcmQpXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtZXhhbXBsZVxuIFsjPyg6Y2xqIHdpbmRvdyA6Y2xqcyBjYXJkKV1cbiAjPyg6Y2xqIChhc3NvYyAoYy8tPmdhbWUgd2luZG93KSA6dGV4LWNvdW50IHRleHR1cmVzIDp0b3RhbC10aW1lIDAgOmRlbHRhLXRpbWUgMCkgOmNsanMgKGRvICh3aGVuLWxldCBbY2FudmFzICgucXVlcnlTZWxlY3RvciBjYXJkIFwiY2FudmFzXCIpXSAoLnJlbW92ZUNoaWxkIGNhcmQgY2FudmFzKSkgKGxldCBbY2FudmFzIChkb3RvIChqcy9kb2N1bWVudC5jcmVhdGVFbGVtZW50IFwiY2FudmFzXCIpICgtPiAuLXN0eWxlIC4td2lkdGggKHNldCEgXCIxMDAlXCIpKSAoLT4gLi1zdHlsZSAuLWhlaWdodCAoc2V0ISBcIjEwMCVcIikpKSBjb250ZXh0ICguZ2V0Q29udGV4dCBjYW52YXMgXCJ3ZWJnbDJcIildICguYXBwZW5kQ2hpbGQgY2FyZCBjYW52YXMpIChhc3NvYyAoYy8tPmdhbWUgY29udGV4dCkgOnRvdGFsLXRpbWUgMCA6ZGVsdGEtdGltZSAwKSkpKSlcbiJ9IHs6c3ltIGdhbWUtbG9vcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIGdhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2FtZS1sb29wXG4gW2YgZ2FtZV1cbiAjPyg6Y2xqIHs6ZiBmLCA6Z2FtZSBnYW1lfSA6Y2xqcyAobGV0IFtnYW1lIChmIGdhbWUpXSAoanMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lIChmbiBbdHNdIChsZXQgW3RzICgqIHRzIDAuMDAxKV0gKGdhbWUtbG9vcCBmIChhc3NvYyBnYW1lIDpkZWx0YS10aW1lICgtIHRzICg6dG90YWwtdGltZSBnYW1lKSkgOnRvdGFsLXRpbWUgdHMpKSkpKSkpKVxuIn0gezpzeW0gc2luLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzaW4gKGZuKiBbcDFfXzQ1NDc4I10gKG1hdGggc2luIHAxX180NTQ3OCMpKSlcbiJ9KSwgZHluYWRvYy5hbGlhc2VzICh7OnN5bSBjaGFuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjaGFuIGFzeW5jL3Byb21pc2UtY2hhbilcbiJ9IHs6c3ltIHB1dCEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHB1dCEgYXN5bmMvcHV0ISlcbiJ9IHs6c3ltIDwhISwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgPCEhICM/KDpjbGogYXN5bmMvPCEhIDpjbGpzIGlkZW50aXR5KSlcbiJ9KSwgY2xqcy5hbmFseXplci5pbXBsICh7OnN5bSBBTllfU1lNLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBBTllfU1lNICdhbnkpXG4ifSB7OnN5bSBCT09MRUFOX09SX1NFUSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgQk9PTEVBTl9PUl9TRVEgJyN7c2VxIGJvb2xlYW59KVxuIn0gezpzeW0gQk9PTEVBTl9TWU0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEJPT0xFQU5fU1lNICdib29sZWFuKVxuIn0gezpzeW0gSUdOT1JFX1NZTSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgSUdOT1JFX1NZTSAnaWdub3JlKVxuIn0gezpzeW0gTk9UX05BVElWRSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTk9UX05BVElWRSAnI3tjbGogbm90LW5hdGl2ZX0pXG4ifSksIGNsanMuc3BlYy50ZXN0LmFscGhhICh7OnN5bSBnZXQtZW52LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWVudiBbXSB7OnVhLXByb2R1Y3QgKGdldC11YS1wcm9kdWN0KX0pXG4ifSB7OnN5bSBkaXN0aW5jdC1ieSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3QtYnlcbiAoW2YgY29sbF1cbiAgKGxldFxuICAgW3N0ZXBcbiAgICAoZm5cbiAgICAgc3RlcFxuICAgICBbeHMgc2Vlbl1cbiAgICAgKGxhenktc2VxXG4gICAgICAoKGZuXG4gICAgICAgIFtbeCA6YXMgeHNdIHNlZW5dXG4gICAgICAgICh3aGVuLWxldFxuICAgICAgICAgW3MgKHNlcSB4cyldXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKGYgeCldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChjb250YWlucz8gc2VlbiB2KVxuICAgICAgICAgICAocmVjdXIgKHJlc3Qgcykgc2VlbilcbiAgICAgICAgICAgKGNvbnMgeCAoc3RlcCAocmVzdCBzKSAoY29uaiBzZWVuIHYpKSkpKSkpXG4gICAgICAgeHNcbiAgICAgICBzZWVuKSkpXVxuICAgKHN0ZXAgY29sbCAje30pKSkpXG4ifSB7OnN5bSBzdW1tYXJpemUtcmVzdWx0cywgOm1ldGEgezpkb2MgIkdpdmVuIGEgY29sbGVjdGlvbiBvZiBjaGVjay1yZXN1bHRzLCBlLmcuIGZyb20gJ2NoZWNrJywgcHJldHR5XG5wcmludHMgdGhlIHN1bW1hcnktcmVzdWx0IChkZWZhdWx0IGFiYnJldi1yZXN1bHQpIG9mIGVhY2guXG5cblJldHVybnMgYSBtYXAgd2l0aCA6dG90YWwsIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVzdWx0cywgcGx1cyBhXG5rZXkgd2l0aCBhIGNvdW50IGZvciBlYWNoIGRpZmZlcmVudCA6dHlwZSBvZiByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbY2hlY2stcmVzdWx0c10gW2NoZWNrLXJlc3VsdHMgc3VtbWFyeS1yZXN1bHRdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3VtbWFyaXplLXJlc3VsdHNcbiBcIkdpdmVuIGEgY29sbGVjdGlvbiBvZiBjaGVjay1yZXN1bHRzLCBlLmcuIGZyb20gJ2NoZWNrJywgcHJldHR5XFxucHJpbnRzIHRoZSBzdW1tYXJ5LXJlc3VsdCAoZGVmYXVsdCBhYmJyZXYtcmVzdWx0KSBvZiBlYWNoLlxcblxcblJldHVybnMgYSBtYXAgd2l0aCA6dG90YWwsIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVzdWx0cywgcGx1cyBhXFxua2V5IHdpdGggYSBjb3VudCBmb3IgZWFjaCBkaWZmZXJlbnQgOnR5cGUgb2YgcmVzdWx0LlwiXG4gKFtjaGVjay1yZXN1bHRzXSAoc3VtbWFyaXplLXJlc3VsdHMgY2hlY2stcmVzdWx0cyBhYmJyZXYtcmVzdWx0KSlcbiAoW2NoZWNrLXJlc3VsdHMgc3VtbWFyeS1yZXN1bHRdXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFtzdW1tYXJ5IHJlc3VsdF1cbiAgICAocHAvcHByaW50IChzdW1tYXJ5LXJlc3VsdCByZXN1bHQpKVxuICAgICgtPlxuICAgICBzdW1tYXJ5XG4gICAgICh1cGRhdGUgOnRvdGFsIGluYylcbiAgICAgKHVwZGF0ZSAocmVzdWx0LXR5cGUgcmVzdWx0KSAoZm5pbCBpbmMgMCkpKSlcbiAgIHs6dG90YWwgMH1cbiAgIGNoZWNrLXJlc3VsdHMpKSlcbiJ9IHs6c3ltIGluc3RydW1lbnRhYmxlLXN5bXMsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBvcHRzIG1hcCBhcyBwZXIgaW5zdHJ1bWVudCwgcmV0dXJucyB0aGUgc2V0IG9mIHN5bXNcbnRoYXQgY2FuIGJlIGluc3RydW1lbnRlZC4iLCA6YXJnbGlzdHMgW1tdIFtvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGluc3RydW1lbnRhYmxlLXN5bXNcbiBcIkdpdmVuIGFuIG9wdHMgbWFwIGFzIHBlciBpbnN0cnVtZW50LCByZXR1cm5zIHRoZSBzZXQgb2Ygc3ltc1xcbnRoYXQgY2FuIGJlIGluc3RydW1lbnRlZC5cIlxuIChbXSAoaW5zdHJ1bWVudGFibGUtc3ltcyBuaWwpKVxuIChbb3B0c11cbiAgKGFzc2VydFxuICAgKGV2ZXJ5PyBpZGVudD8gKGtleXMgKDpnZW4gb3B0cykpKVxuICAgXCJpbnN0cnVtZW50IDpnZW4gZXhwZWN0cyBpZGVudCBrZXlzXCIpXG4gIChyZWR1Y2VcbiAgIGludG9cbiAgICN7fVxuICAgWyhmaWx0ZXIgZm4tc3BlYy1uYW1lPyAoa2V5cyAocy9yZWdpc3RyeSkpKVxuICAgIChrZXlzICg6c3BlYyBvcHRzKSlcbiAgICAoOnN0dWIgb3B0cylcbiAgICAoa2V5cyAoOnJlcGxhY2Ugb3B0cykpXSkpKVxuIn0gezpzeW0gZ2V0LWhvc3QtcG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWhvc3QtcG9ydFxuIFtdXG4gKGlmXG4gIChub3Q9IFwiYnJvd3NlclwiICp0YXJnZXQqKVxuICB7fVxuICB7Omhvc3QgKC4uIGpzL3dpbmRvdyAtbG9jYXRpb24gLWhvc3QpLFxuICAgOnBvcnQgKC4uIGpzL3dpbmRvdyAtbG9jYXRpb24gLXBvcnQpfSkpXG4ifSB7OnN5bSBnZXQtdWEtcHJvZHVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXVhLXByb2R1Y3RcbiBbXVxuIChpZlxuICAobm90PSBcImJyb3dzZXJcIiAqdGFyZ2V0KilcbiAgKGtleXdvcmQgKnRhcmdldCopXG4gIChjb25kXG4gICBwcm9kdWN0L1NBRkFSSVxuICAgOnNhZmFyaVxuICAgcHJvZHVjdC9DSFJPTUVcbiAgIDpjaHJvbWVcbiAgIHByb2R1Y3QvRklSRUZPWFxuICAgOmZpcmVmb3hcbiAgIHByb2R1Y3QvSUVcbiAgIDppZSkpKVxuIn0gezpzeW0gLT5zeW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gLT5zeW0gW3hdIChAIydzLy0+c3ltIHgpKVxuIn0gezpzeW0gYWJicmV2LXJlc3VsdCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgY2hlY2sgcmVzdWx0LCByZXR1cm5zIGFuIGFiYnJldmlhdGVkIHZlcnNpb25cbnN1aXRhYmxlIGZvciBzdW1tYXJ5IHVzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFiYnJldi1yZXN1bHRcbiBcIkdpdmVuIGEgY2hlY2sgcmVzdWx0LCByZXR1cm5zIGFuIGFiYnJldmlhdGVkIHZlcnNpb25cXG5zdWl0YWJsZSBmb3Igc3VtbWFyeSB1c2UuXCJcbiBbeF1cbiAoaWZcbiAgKDpmYWlsdXJlIHgpXG4gICgtPlxuICAgKGRpc3NvYyB4IDpjbG9qdXJlLnNwZWMudGVzdC5jaGVjay9yZXQpXG4gICAodXBkYXRlIDpzcGVjIHMvZGVzY3JpYmUpXG4gICAodXBkYXRlIDpmYWlsdXJlIHVud3JhcC1mYWlsdXJlKSlcbiAgKGRpc3NvYyB4IDpzcGVjIDpjbG9qdXJlLnNwZWMudGVzdC5jaGVjay9vcHRzKSkpXG4ifSB7OnN5bSB2YWxpZGF0ZS1jaGVjay1vcHRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsaWRhdGUtY2hlY2stb3B0c1xuIFtvcHRzXVxuIChhc3NlcnRcbiAgKGV2ZXJ5PyBpZGVudD8gKGtleXMgKDpnZW4gb3B0cykpKVxuICBcImNoZWNrIDpnZW4gZXhwZWN0cyBpZGVudCBrZXlzXCIpKVxuIn0pLCBwbGF5LWNsamMuZ2wudGV4dCAoezpzeW0gLT5mb250LWVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gZW50aXR5IHdpdGggYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGZvbnQuIFRoZSBzZWNvbmQgYXJpdHkgaXMgZm9yIGJhY2t3YXJkc1xuICBjb21wYXRpYmlsaXR5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIiwgOmFyZ2xpc3RzIFtbZ2FtZSBkYXRhIGJha2VkLWZvbnRdIFtnYW1lIGRhdGEgd2lkdGggaGVpZ2h0XV19LCA6c291cmNlICIoZGVmblxuIC0+Zm9udC1lbnRpdHlcbiBcIlJldHVybnMgYW4gZW50aXR5IHdpdGggYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGZvbnQuIFRoZSBzZWNvbmQgYXJpdHkgaXMgZm9yIGJhY2t3YXJkc1xcbiAgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLlwiXG4gKFtnYW1lIGRhdGEgYmFrZWQtZm9udF1cbiAgKC0+XG4gICAoLT5mb250LWVudGl0eVxuICAgIGdhbWVcbiAgICBkYXRhXG4gICAgKDpiaXRtYXAtd2lkdGggYmFrZWQtZm9udClcbiAgICAoOmJpdG1hcC1oZWlnaHQgYmFrZWQtZm9udCkpXG4gICAoYXNzb2MgOmJha2VkLWZvbnQgYmFrZWQtZm9udClcbiAgIG1hcC0+Rm9udEVudGl0eSkpXG4gKFtnYW1lIGRhdGEgd2lkdGggaGVpZ2h0XVxuICAoLT5cbiAgIChlLy0+aW1hZ2UtZW50aXR5IGdhbWUgZGF0YSB3aWR0aCBoZWlnaHQpXG4gICAoYXNzb2MgOnZlcnRleCBmb250LXZlcnRleC1zaGFkZXIgOmZyYWdtZW50IGZvbnQtZnJhZ21lbnQtc2hhZGVyKVxuICAgKHVwZGF0ZVxuICAgIDp1bmlmb3Jtc1xuICAgIG1lcmdlXG4gICAgeyd1X2NvbG9yIFswIDAgMCAxXSxcbiAgICAgJ3Vfc2NhbGVfbWF0cml4IChtL2lkZW50aXR5LW1hdHJpeCAzKSxcbiAgICAgJ3VfdHJhbnNsYXRlX21hdHJpeCAobS9pZGVudGl0eS1tYXRyaXggMyl9KVxuICAgIz8oOmNsaiAoYXNzb2MtaW4gWzp1bmlmb3JtcyAocXVvdGUgdV9pbWFnZSkgOm9wdHNdIHs6bWlwLWxldmVsIDAsIDppbnRlcm5hbC1mbXQgKGdsIGdhbWUgUkVEKSwgOndpZHRoIHdpZHRoLCA6aGVpZ2h0IGhlaWdodCwgOmJvcmRlciAwLCA6c3JjLWZtdCAoZ2wgZ2FtZSBSRUQpLCA6c3JjLXR5cGUgKGdsIGdhbWUgVU5TSUdORURfQllURSl9KSkpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLnRleHQvLT5mb250LWVudGl0eSBnYW1lIGRhdGEgYmFrZWQtZm9udCl9LCA6Ym9keSAobGV0IFtnYW1lIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCldIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtdGV4dC9pbml0IGdhbWUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtdGV4dC9sb2FkLXJvYm90byAoZm4gW3s6a2V5cyBbZGF0YV0sIDphcyBpbWFnZX0gYmFrZWQtZm9udF0gKGxldCBbZW50aXR5IChwbGF5LWNsamMuZ2wuY29yZS9jb21waWxlIGdhbWUgZm9jdXMpXSAoLT4+IGdhbWUgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gZm9udC1lbnRpdHktcmVuZGVyIFtnYW1lXSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpIHNjcmVlbi1yYXRpbyAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSBpbWFnZS1yYXRpbyAoLyAoOndpZHRoIGVudGl0eSkgKDpoZWlnaHQgZW50aXR5KSkgW2ltZy13aWR0aCBpbWctaGVpZ2h0XSAoaWYgKD4gc2NyZWVuLXJhdGlvIGltYWdlLXJhdGlvKSBbKCogZ2FtZS1oZWlnaHQgKC8gKDp3aWR0aCBlbnRpdHkpICg6aGVpZ2h0IGVudGl0eSkpKSBnYW1lLWhlaWdodF0gW2dhbWUtd2lkdGggKCogZ2FtZS13aWR0aCAoLyAoOmhlaWdodCBlbnRpdHkpICg6d2lkdGggZW50aXR5KSkpXSldIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSA6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSBpbWctd2lkdGggaW1nLWhlaWdodCkpKSkgZ2FtZSkpKSkpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC50ZXh0Ly0+Zm9udC1lbnRpdHkgZ2FtZSBkYXRhIGJha2VkLWZvbnQpXG4iLCA6aWQgInBsYXktY2xqYy5nbC50ZXh0Ly0+Zm9udC1lbnRpdHkvMCJ9XX0gezpzeW0gLT50ZXh0LWVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gZW50aXR5IHdpdGggdGhlIGdpdmVuIHRleHQgcmVuZGVyZWQgdG8gaXQuIFRoZSBzZWNvbmQgYXJpdHkgaXMgZm9yIGJhY2t3YXJkc1xuICBjb21wYXRpYmlsaXR5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIiwgOmFyZ2xpc3RzIFtbZ2FtZSB7ezprZXlzIFtiYWtlZC1jaGFycyBiYXNlbGluZSBmb250LWhlaWdodCBmaXJzdC1jaGFyIGJpdG1hcC13aWR0aCBiaXRtYXAtaGVpZ2h0XX0gOmJha2VkLWZvbnQsIDphcyBmb250LWVudGl0eX0gdGV4dF0gW2dhbWUgYmFrZWQtZm9udCBpbWFnZS1lbnRpdHkgdGV4dF1dfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnRleHQtZW50aXR5XG4gXCJSZXR1cm5zIGFuIGVudGl0eSB3aXRoIHRoZSBnaXZlbiB0ZXh0IHJlbmRlcmVkIHRvIGl0LiBUaGUgc2Vjb25kIGFyaXR5IGlzIGZvciBiYWNrd2FyZHNcXG4gIGNvbXBhdGliaWxpdHkgYW5kIHNob3VsZCBub3QgYmUgdXNlZC5cIlxuIChbZ2FtZVxuICAge3s6a2V5c1xuICAgICBbYmFrZWQtY2hhcnNcbiAgICAgIGJhc2VsaW5lXG4gICAgICBmb250LWhlaWdodFxuICAgICAgZmlyc3QtY2hhclxuICAgICAgYml0bWFwLXdpZHRoXG4gICAgICBiaXRtYXAtaGVpZ2h0XX1cbiAgICA6YmFrZWQtZm9udCxcbiAgICA6YXMgZm9udC1lbnRpdHl9XG4gICB0ZXh0XVxuICAod2hlbi1ub3RcbiAgICg6cHJvZ3JhbSBmb250LWVudGl0eSlcbiAgICh0aHJvd1xuICAgIChleC1pbmZvXG4gICAgIFwiT25seSBjb21waWxlZCBmb250IGVudGl0aWVzIGNhbiBiZSBwYXNzZWQgdG8gLT50ZXh0LWVudGl0eVwiXG4gICAgIHt9KSkpXG4gIChsb29wXG4gICBbdGV4dCAoc2VxIHRleHQpIHRvdGFsIChmbG9hdCAwKSBpbm5lci1lbnRpdGllcyBbXV1cbiAgIChpZi1sZXRcbiAgICBbY2ggKGZpcnN0IHRleHQpXVxuICAgIChsZXRcbiAgICAgW3s6a2V5cyBbeCB5IHcgaCB4b2ZmIHlvZmYgeGFkdl19XG4gICAgICAobnRoXG4gICAgICAgYmFrZWQtY2hhcnNcbiAgICAgICAoLSAjPyg6Y2xqIChpbnQgY2gpIDpjbGpzICguY2hhckNvZGVBdCBjaCAwKSkgZmlyc3QtY2hhcikpXVxuICAgICAocmVjdXJcbiAgICAgIChyZXN0IHRleHQpXG4gICAgICAoKyB0b3RhbCAoZmxvYXQgeGFkdikpXG4gICAgICAoY29ualxuICAgICAgIGlubmVyLWVudGl0aWVzXG4gICAgICAgKC0+XG4gICAgICAgIGZvbnQtZW50aXR5XG4gICAgICAgICh0L3Byb2plY3QgYml0bWFwLXdpZHRoIGJpdG1hcC1oZWlnaHQpXG4gICAgICAgICh0L2Nyb3AgeCB5IHcgaClcbiAgICAgICAgKHQvdHJhbnNsYXRlICgrIHhvZmYgdG90YWwpICgtIGZvbnQtaGVpZ2h0IGJhc2VsaW5lIHlvZmYpKVxuICAgICAgICAodC9zY2FsZSB3IGgpXG4gICAgICAgICh1cGRhdGUtaW5cbiAgICAgICAgIFs6dW5pZm9ybXMgJ3VfbWF0cml4XVxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDQ5OTAjXVxuICAgICAgICAgIChtL211bHRpcGx5LW1hdHJpY2VzIDMgZmxpcC15LW1hdHJpeCBwMV9fNDQ5OTAjKSkpKSkpKVxuICAgICgtPlxuICAgICAoZS8tPmltYWdlLWVudGl0eSBnYW1lIG5pbCB0b3RhbCBmb250LWhlaWdodClcbiAgICAgKGFzc29jXG4gICAgICA6d2lkdGhcbiAgICAgIHRvdGFsXG4gICAgICA6aGVpZ2h0XG4gICAgICBmb250LWhlaWdodFxuICAgICAgOnJlbmRlci10by10ZXh0dXJlXG4gICAgICB7J3VfaW1hZ2VcbiAgICAgICAobWFwdlxuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQ0OTkxI11cbiAgICAgICAgIChhc3NvY1xuICAgICAgICAgIHAxX180NDk5MSNcbiAgICAgICAgICA6dmlld3BvcnRcbiAgICAgICAgICB7OnggMCxcbiAgICAgICAgICAgOnkgKC0gZm9udC1oZWlnaHQgYml0bWFwLWhlaWdodCksXG4gICAgICAgICAgIDp3aWR0aCBiaXRtYXAtd2lkdGgsXG4gICAgICAgICAgIDpoZWlnaHQgYml0bWFwLWhlaWdodH0pKVxuICAgICAgICBpbm5lci1lbnRpdGllcyl9KSkpKSlcbiAoW2dhbWUgYmFrZWQtZm9udCBpbWFnZS1lbnRpdHkgdGV4dF1cbiAgKC0+dGV4dC1lbnRpdHlcbiAgIGdhbWVcbiAgIChhc3NvYyBpbWFnZS1lbnRpdHkgOmJha2VkLWZvbnQgYmFrZWQtZm9udClcbiAgIHRleHQpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLnRleHQvLT50ZXh0LWVudGl0eSBnYW1lIGZvbnQtZW50aXR5ICJIZWxsbywgd29ybGQhIil9LCA6Ym9keSAobGV0IFtnYW1lIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCldIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtdGV4dC9pbml0IGdhbWUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtdGV4dC9sb2FkLXJvYm90byAoZm4gW3s6a2V5cyBbZGF0YV0sIDphcyBpbWFnZX0gYmFrZWQtZm9udF0gKGxldCBbZm9udC1lbnRpdHkgKHBsYXktY2xqYy5nbC5jb3JlL2NvbXBpbGUgZ2FtZSAocGxheS1jbGpjLmdsLnRleHQvLT5mb250LWVudGl0eSBnYW1lIGRhdGEgYmFrZWQtZm9udCkpIGVudGl0eSAocGxheS1jbGpjLmdsLmNvcmUvY29tcGlsZSBnYW1lIGZvY3VzKV0gKC0+PiBnYW1lIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHRleHQtZW50aXR5LXJlbmRlciBbZ2FtZV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW2dhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKV0gKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9IDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIDAgMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3NjYWxlICg6d2lkdGggZW50aXR5KSAoOmhlaWdodCBlbnRpdHkpKSkpKSBnYW1lKSkpKSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLnRleHQvLT50ZXh0LWVudGl0eSBnYW1lIGZvbnQtZW50aXR5IFwiSGVsbG8sIHdvcmxkIVwiKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wudGV4dC8tPnRleHQtZW50aXR5LzAifV19KSwgY2xvanVyZS5zdHJpbmcgKHs6c3ltIGVuZHMtd2l0aD8sIDptZXRhIHs6ZG9jICJUcnVlIGlmIHMgZW5kcyB3aXRoIHN1YnN0ci4iLCA6YXJnbGlzdHMgKFtzIHN1YnN0cl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmRzLXdpdGg/XG4gXCJUcnVlIGlmIHMgZW5kcyB3aXRoIHN1YnN0ci5cIlxuIFtzIHN1YnN0cl1cbiAoZ3N0cmluZy9lbmRzV2l0aCBzIHN1YnN0cikpXG4ifSB7OnN5bSBjYXBpdGFsaXplLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcgdG8gdXBwZXItY2FzZSwgYWxsIG90aGVyXG4gIGNoYXJhY3RlcnMgdG8gbG93ZXItY2FzZS4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGNhcGl0YWxpemVcbiBcIkNvbnZlcnRzIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nIHRvIHVwcGVyLWNhc2UsIGFsbCBvdGhlclxcbiAgY2hhcmFjdGVycyB0byBsb3dlci1jYXNlLlwiXG4gW3NdXG4gKGdzdHJpbmcvY2FwaXRhbGl6ZSBzKSlcbiJ9IHs6c3ltIHJldmVyc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHMgd2l0aCBpdHMgY2hhcmFjdGVycyByZXZlcnNlZC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJldmVyc2VcbiBcIlJldHVybnMgcyB3aXRoIGl0cyBjaGFyYWN0ZXJzIHJldmVyc2VkLlwiXG4gW3NdXG4gKC0+XG4gICgucmVwbGFjZSBzIHJlLXN1cnJvZ2F0ZS1wYWlyIFwiJDIkMVwiKVxuICAoLi4gKHNwbGl0IFwiXCIpIChyZXZlcnNlKSAoam9pbiBcIlwiKSkpKVxuIn0gezpzeW0gam9pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzdHJpbmcgb2YgYWxsIGVsZW1lbnRzIGluIGNvbGwsIGFzIHJldHVybmVkIGJ5IChzZXEgY29sbCksXG4gIHNlcGFyYXRlZCBieSBhbiBvcHRpb25hbCBzZXBhcmF0b3IuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW3NlcGFyYXRvciBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGpvaW5cbiBcIlJldHVybnMgYSBzdHJpbmcgb2YgYWxsIGVsZW1lbnRzIGluIGNvbGwsIGFzIHJldHVybmVkIGJ5IChzZXEgY29sbCksXFxuICBzZXBhcmF0ZWQgYnkgYW4gb3B0aW9uYWwgc2VwYXJhdG9yLlwiXG4gKFtjb2xsXVxuICAobG9vcFxuICAgW3NiIChTdHJpbmdCdWZmZXIuKSBjb2xsIChzZXEgY29sbCldXG4gICAoaWYtbm90XG4gICAgKG5pbD8gY29sbClcbiAgICAocmVjdXIgKC4gc2IgKGFwcGVuZCAoc3RyIChmaXJzdCBjb2xsKSkpKSAobmV4dCBjb2xsKSlcbiAgICAoLnRvU3RyaW5nIHNiKSkpKVxuIChbc2VwYXJhdG9yIGNvbGxdXG4gIChsb29wXG4gICBbc2IgKFN0cmluZ0J1ZmZlci4pIGNvbGwgKHNlcSBjb2xsKV1cbiAgIChpZi1ub3RcbiAgICAobmlsPyBjb2xsKVxuICAgIChkb1xuICAgICAoLiBzYiAoYXBwZW5kIChzdHIgKGZpcnN0IGNvbGwpKSkpXG4gICAgIChsZXRcbiAgICAgIFtjb2xsIChuZXh0IGNvbGwpXVxuICAgICAgKHdoZW4tbm90IChuaWw/IGNvbGwpICguIHNiIChhcHBlbmQgc2VwYXJhdG9yKSkpXG4gICAgICAocmVjdXIgc2IgY29sbCkpKVxuICAgICgudG9TdHJpbmcgc2IpKSkpKVxuIn0gezpzeW0gcmVwbGFjZS1maXJzdCwgOm1ldGEgezpkb2MgIlJlcGxhY2VzIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBtYXRjaCB3aXRoIHJlcGxhY2VtZW50IGluIHMuXG5cbiAgIG1hdGNoL3JlcGxhY2VtZW50IGNhbiBiZTpcblxuICAgc3RyaW5nIC8gc3RyaW5nXG4gICBwYXR0ZXJuIC8gKHN0cmluZyBvciBmdW5jdGlvbiBvZiBtYXRjaCkuXG5cbiAgIFNlZSBhbHNvIHJlcGxhY2UuXG5cbiAgIFRoZSByZXBsYWNlbWVudCBpcyBsaXRlcmFsIChpLmUuIG5vbmUgb2YgaXRzIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWRcbiAgIHNwZWNpYWxseSkgZm9yIGFsbCBjYXNlcyBhYm92ZSBleGNlcHQgcGF0dGVybiAvIHN0cmluZy5cblxuICAgRm9yIHBhdHRlcm4gLyBzdHJpbmcsICQxLCAkMiwgZXRjLiBpbiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGFyZVxuICAgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlZCB0aGUgY29ycmVzcG9uZGluZ1xuICAgcGFyZW50aGVzaXplZCBncm91cCBpbiB0aGUgcGF0dGVybi5cblxuICAgRXhhbXBsZTpcbiAgIChjbG9qdXJlLnN0cmluZy9yZXBsYWNlLWZpcnN0IFwic3dhcCBmaXJzdCB0d28gd29yZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1wiKFxcdyspKFxccyspKFxcdyspXCIgXCIkMyQyJDFcIilcbiAgIC0+IFwiZmlyc3Qgc3dhcCB0d28gd29yZHNcIiIsIDphcmdsaXN0cyAoW3MgbWF0Y2ggcmVwbGFjZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwbGFjZS1maXJzdFxuIFwiUmVwbGFjZXMgdGhlIGZpcnN0IGluc3RhbmNlIG9mIG1hdGNoIHdpdGggcmVwbGFjZW1lbnQgaW4gcy5cXG5cXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XFxuXFxuICAgc3RyaW5nIC8gc3RyaW5nXFxuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxcblxcbiAgIFNlZSBhbHNvIHJlcGxhY2UuXFxuXFxuICAgVGhlIHJlcGxhY2VtZW50IGlzIGxpdGVyYWwgKGkuZS4gbm9uZSBvZiBpdHMgY2hhcmFjdGVycyBhcmUgdHJlYXRlZFxcbiAgIHNwZWNpYWxseSkgZm9yIGFsbCBjYXNlcyBhYm92ZSBleGNlcHQgcGF0dGVybiAvIHN0cmluZy5cXG5cXG4gICBGb3IgcGF0dGVybiAvIHN0cmluZywgJDEsICQyLCBldGMuIGluIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYXJlXFxuICAgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlZCB0aGUgY29ycmVzcG9uZGluZ1xcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXFxuXFxuICAgRXhhbXBsZTpcXG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZS1maXJzdCBcXFwic3dhcCBmaXJzdCB0d28gd29yZHNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1xcXCIoXFxcXHcrKShcXFxccyspKFxcXFx3KylcXFwiIFxcXCIkMyQyJDFcXFwiKVxcbiAgIC0+IFxcXCJmaXJzdCBzd2FwIHR3byB3b3Jkc1xcXCJcIlxuIFtzIG1hdGNoIHJlcGxhY2VtZW50XVxuICgucmVwbGFjZSBzIG1hdGNoIHJlcGxhY2VtZW50KSlcbiJ9IHs6c3ltIHN0YXJ0cy13aXRoPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcyBzdGFydHMgd2l0aCBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RhcnRzLXdpdGg/XG4gXCJUcnVlIGlmIHMgc3RhcnRzIHdpdGggc3Vic3RyLlwiXG4gW3Mgc3Vic3RyXVxuIChnc3RyaW5nL3N0YXJ0c1dpdGggcyBzdWJzdHIpKVxuIn0gezpzeW0gZXNjYXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbmV3IHN0cmluZywgdXNpbmcgY21hcCB0byBlc2NhcGUgZWFjaCBjaGFyYWN0ZXIgY2hcbiAgIGZyb20gcyBhcyBmb2xsb3dzOlxuXG4gICBJZiAoY21hcCBjaCkgaXMgbmlsLCBhcHBlbmQgY2ggdG8gdGhlIG5ldyBzdHJpbmcuXG4gICBJZiAoY21hcCBjaCkgaXMgbm9uLW5pbCwgYXBwZW5kIChzdHIgKGNtYXAgY2gpKSBpbnN0ZWFkLiIsIDphcmdsaXN0cyAoW3MgY21hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGVcbiBcIlJldHVybiBhIG5ldyBzdHJpbmcsIHVzaW5nIGNtYXAgdG8gZXNjYXBlIGVhY2ggY2hhcmFjdGVyIGNoXFxuICAgZnJvbSBzIGFzIGZvbGxvd3M6XFxuXFxuICAgSWYgKGNtYXAgY2gpIGlzIG5pbCwgYXBwZW5kIGNoIHRvIHRoZSBuZXcgc3RyaW5nLlxcbiAgIElmIChjbWFwIGNoKSBpcyBub24tbmlsLCBhcHBlbmQgKHN0ciAoY21hcCBjaCkpIGluc3RlYWQuXCJcbiBbcyBjbWFwXVxuIChsZXRcbiAgW2J1ZmZlciAoU3RyaW5nQnVmZmVyLikgbGVuZ3RoICguLWxlbmd0aCBzKV1cbiAgKGxvb3BcbiAgIFtpbmRleCAwXVxuICAgKGlmXG4gICAgKD09IGxlbmd0aCBpbmRleClcbiAgICAoLiBidWZmZXIgKHRvU3RyaW5nKSlcbiAgICAobGV0XG4gICAgIFtjaCAoLmNoYXJBdCBzIGluZGV4KSByZXBsYWNlbWVudCAoZ2V0IGNtYXAgY2gpXVxuICAgICAoaWYtbm90XG4gICAgICAobmlsPyByZXBsYWNlbWVudClcbiAgICAgICguYXBwZW5kIGJ1ZmZlciAoc3RyIHJlcGxhY2VtZW50KSlcbiAgICAgICguYXBwZW5kIGJ1ZmZlciBjaCkpXG4gICAgIChyZWN1ciAoaW5jIGluZGV4KSkpKSkpKVxuIn0gezpzeW0gbGFzdC1pbmRleC1vZiwgOm1ldGEgezpkb2MgIlJldHVybiBsYXN0IGluZGV4IG9mIHZhbHVlIChzdHJpbmcgb3IgY2hhcikgaW4gcywgb3B0aW9uYWxseVxuICBzZWFyY2hpbmcgYmFja3dhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuIiwgOmFyZ2xpc3RzIFtbcyB2YWx1ZV0gW3MgdmFsdWUgZnJvbS1pbmRleF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBsYXN0LWluZGV4LW9mXG4gXCJSZXR1cm4gbGFzdCBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHlcXG4gIHNlYXJjaGluZyBiYWNrd2FyZCBmcm9tIGZyb20taW5kZXggb3IgbmlsIGlmIG5vdCBmb3VuZC5cIlxuIChbcyB2YWx1ZV1cbiAgKGxldCBbcmVzdWx0ICgubGFzdEluZGV4T2YgcyB2YWx1ZSldIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSlcbiAoW3MgdmFsdWUgZnJvbS1pbmRleF1cbiAgKGxldFxuICAgW3Jlc3VsdCAoLmxhc3RJbmRleE9mIHMgdmFsdWUgZnJvbS1pbmRleCldXG4gICAoaWYgKG5lZz8gcmVzdWx0KSBuaWwgcmVzdWx0KSkpKVxuIn0gezpzeW0gaW5jbHVkZXM/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpZiBzIGluY2x1ZGVzIHN1YnN0ci4iLCA6YXJnbGlzdHMgKFtzIHN1YnN0cl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmNsdWRlcz9cbiBcIlRydWUgaWYgcyBpbmNsdWRlcyBzdWJzdHIuXCJcbiBbcyBzdWJzdHJdXG4gKGdzdHJpbmcvY29udGFpbnMgcyBzdWJzdHIpKVxuIn0gezpzeW0gcmVwbGFjZSwgOm1ldGEgezpkb2MgIlJlcGxhY2VzIGFsbCBpbnN0YW5jZSBvZiBtYXRjaCB3aXRoIHJlcGxhY2VtZW50IGluIHMuXG5cbiAgIG1hdGNoL3JlcGxhY2VtZW50IGNhbiBiZTpcblxuICAgc3RyaW5nIC8gc3RyaW5nXG4gICBwYXR0ZXJuIC8gKHN0cmluZyBvciBmdW5jdGlvbiBvZiBtYXRjaCkuXG5cbiAgIFNlZSBhbHNvIHJlcGxhY2UtZmlyc3QuXG5cbiAgIFRoZSByZXBsYWNlbWVudCBpcyBsaXRlcmFsIChpLmUuIG5vbmUgb2YgaXRzIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWRcbiAgIHNwZWNpYWxseSkgZm9yIGFsbCBjYXNlcyBhYm92ZSBleGNlcHQgcGF0dGVybiAvIHN0cmluZy5cblxuICAgRm9yIHBhdHRlcm4gLyBzdHJpbmcsICQxLCAkMiwgZXRjLiBpbiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGFyZVxuICAgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlZCB0aGUgY29ycmVzcG9uZGluZ1xuICAgcGFyZW50aGVzaXplZCBncm91cCBpbiB0aGUgcGF0dGVybi5cblxuICAgRXhhbXBsZTpcbiAgIChjbG9qdXJlLnN0cmluZy9yZXBsYWNlIFwiQWxtb3N0IFBpZyBMYXRpblwiICNcIlxcYihcXHcpKFxcdyspXFxiXCIgXCIkMiQxYXlcIilcbiAgIC0+IFwibG1vc3RBYXkgaWdQYXkgYXRpbkxheVwiIiwgOmFyZ2xpc3RzIChbcyBtYXRjaCByZXBsYWNlbWVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBsYWNlXG4gXCJSZXBsYWNlcyBhbGwgaW5zdGFuY2Ugb2YgbWF0Y2ggd2l0aCByZXBsYWNlbWVudCBpbiBzLlxcblxcbiAgIG1hdGNoL3JlcGxhY2VtZW50IGNhbiBiZTpcXG5cXG4gICBzdHJpbmcgLyBzdHJpbmdcXG4gICBwYXR0ZXJuIC8gKHN0cmluZyBvciBmdW5jdGlvbiBvZiBtYXRjaCkuXFxuXFxuICAgU2VlIGFsc28gcmVwbGFjZS1maXJzdC5cXG5cXG4gICBUaGUgcmVwbGFjZW1lbnQgaXMgbGl0ZXJhbCAoaS5lLiBub25lIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkXFxuICAgc3BlY2lhbGx5KSBmb3IgYWxsIGNhc2VzIGFib3ZlIGV4Y2VwdCBwYXR0ZXJuIC8gc3RyaW5nLlxcblxcbiAgIEZvciBwYXR0ZXJuIC8gc3RyaW5nLCAkMSwgJDIsIGV0Yy4gaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZyBhcmVcXG4gICBzdWJzdGl0dXRlZCB3aXRoIHRoZSBzdHJpbmcgdGhhdCBtYXRjaGVkIHRoZSBjb3JyZXNwb25kaW5nXFxuICAgcGFyZW50aGVzaXplZCBncm91cCBpbiB0aGUgcGF0dGVybi5cXG5cXG4gICBFeGFtcGxlOlxcbiAgIChjbG9qdXJlLnN0cmluZy9yZXBsYWNlIFxcXCJBbG1vc3QgUGlnIExhdGluXFxcIiAjXFxcIlxcXFxiKFxcXFx3KShcXFxcdyspXFxcXGJcXFwiIFxcXCIkMiQxYXlcXFwiKVxcbiAgIC0+IFxcXCJsbW9zdEFheSBpZ1BheSBhdGluTGF5XFxcIlwiXG4gW3MgbWF0Y2ggcmVwbGFjZW1lbnRdXG4gKGNvbmRcbiAgKHN0cmluZz8gbWF0Y2gpXG4gICgucmVwbGFjZVxuICAgc1xuICAgKGpzL1JlZ0V4cC4gKGdzdHJpbmcvcmVnRXhwRXNjYXBlIG1hdGNoKSBcImdcIilcbiAgIHJlcGxhY2VtZW50KVxuICAoaW5zdGFuY2U/IGpzL1JlZ0V4cCBtYXRjaClcbiAgKGlmXG4gICAoc3RyaW5nPyByZXBsYWNlbWVudClcbiAgIChyZXBsYWNlLWFsbCBzIG1hdGNoIHJlcGxhY2VtZW50KVxuICAgKHJlcGxhY2UtYWxsIHMgbWF0Y2ggKHJlcGxhY2Utd2l0aCByZXBsYWNlbWVudCkpKVxuICA6ZWxzZVxuICAodGhyb3cgKHN0ciBcIkludmFsaWQgbWF0Y2ggYXJnOiBcIiBtYXRjaCkpKSlcbiJ9IHs6c3ltIHNwbGl0LWxpbmVzLCA6bWV0YSB7OmRvYyAiU3BsaXRzIHMgb24gXFxuIG9yIFxcclxcbi4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmbiBzcGxpdC1saW5lcyBcIlNwbGl0cyBzIG9uIFxcXFxuIG9yIFxcXFxyXFxcXG4uXCIgW3NdIChzcGxpdCBzICNcIlxcbnxcXHJcXG5cIikpXG4ifSB7OnN5bSBsb3dlci1jYXNlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgc3RyaW5nIHRvIGFsbCBsb3dlci1jYXNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG93ZXItY2FzZVxuIFwiQ29udmVydHMgc3RyaW5nIHRvIGFsbCBsb3dlci1jYXNlLlwiXG4gW3NdXG4gKC50b0xvd2VyQ2FzZSBzKSlcbiJ9IHs6c3ltIHRyaW0tbmV3bGluZSwgOm1ldGEgezpkb2MgIlJlbW92ZXMgYWxsIHRyYWlsaW5nIG5ld2xpbmUgXFxuIG9yIHJldHVybiBcXHIgY2hhcmFjdGVycyBmcm9tXG4gIHN0cmluZy4gIFNpbWlsYXIgdG8gUGVybCdzIGNob21wLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJpbS1uZXdsaW5lXG4gXCJSZW1vdmVzIGFsbCB0cmFpbGluZyBuZXdsaW5lIFxcXFxuIG9yIHJldHVybiBcXFxcciBjaGFyYWN0ZXJzIGZyb21cXG4gIHN0cmluZy4gIFNpbWlsYXIgdG8gUGVybCdzIGNob21wLlwiXG4gW3NdXG4gKGxvb3BcbiAgW2luZGV4ICguLWxlbmd0aCBzKV1cbiAgKGlmXG4gICAoemVybz8gaW5kZXgpXG4gICBcIlwiXG4gICAobGV0XG4gICAgW2NoIChnZXQgcyAoZGVjIGluZGV4KSldXG4gICAgKGlmXG4gICAgIChvciAoaWRlbnRpY2FsPyBcXG5ld2xpbmUgY2gpIChpZGVudGljYWw/IFxccmV0dXJuIGNoKSlcbiAgICAgKHJlY3VyIChkZWMgaW5kZXgpKVxuICAgICAoLnN1YnN0cmluZyBzIDAgaW5kZXgpKSkpKSlcbiJ9IHs6c3ltIHVwcGVyLWNhc2UsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBzdHJpbmcgdG8gYWxsIHVwcGVyLWNhc2UuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cHBlci1jYXNlXG4gXCJDb252ZXJ0cyBzdHJpbmcgdG8gYWxsIHVwcGVyLWNhc2UuXCJcbiBbc11cbiAoLnRvVXBwZXJDYXNlIHMpKVxuIn0gezpzeW0gc3BsaXQsIDptZXRhIHs6ZG9jICJTcGxpdHMgc3RyaW5nIG9uIGEgcmVndWxhciBleHByZXNzaW9uLiBPcHRpb25hbCBhcmd1bWVudCBsaW1pdCBpc1xuICB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzLiBOb3QgbGF6eS4gUmV0dXJucyB2ZWN0b3Igb2YgdGhlIHNwbGl0cy4iLCA6YXJnbGlzdHMgW1tzIHJlXSBbcyByZSBsaW1pdF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGxpdFxuIFwiU3BsaXRzIHN0cmluZyBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gT3B0aW9uYWwgYXJndW1lbnQgbGltaXQgaXNcXG4gIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzcGxpdHMuIE5vdCBsYXp5LiBSZXR1cm5zIHZlY3RvciBvZiB0aGUgc3BsaXRzLlwiXG4gKFtzIHJlXSAoc3BsaXQgcyByZSAwKSlcbiAoW3MgcmUgbGltaXRdXG4gIChkaXNjYXJkLXRyYWlsaW5nLWlmLW5lZWRlZFxuICAgbGltaXRcbiAgIChpZlxuICAgIChpZGVudGljYWw/IFwiLyg/OikvXCIgKHN0ciByZSkpXG4gICAgKHNwbGl0LXdpdGgtZW1wdHktcmVnZXggcyBsaW1pdClcbiAgICAoaWZcbiAgICAgKDwgbGltaXQgMSlcbiAgICAgKHZlYyAoLnNwbGl0IChzdHIgcykgcmUpKVxuICAgICAobG9vcFxuICAgICAgW3MgcyBsaW1pdCBsaW1pdCBwYXJ0cyBbXV1cbiAgICAgIChpZlxuICAgICAgICg9PSAxIGxpbWl0KVxuICAgICAgIChjb25qIHBhcnRzIHMpXG4gICAgICAgKGxldFxuICAgICAgICBbbSAocmUtZmluZCByZSBzKV1cbiAgICAgICAgKGlmLW5vdFxuICAgICAgICAgKG5pbD8gbSlcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbaW5kZXggKC5pbmRleE9mIHMgbSldXG4gICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICguc3Vic3RyaW5nIHMgKCsgaW5kZXggKGNvdW50IG0pKSlcbiAgICAgICAgICAgKGRlYyBsaW1pdClcbiAgICAgICAgICAgKGNvbmogcGFydHMgKC5zdWJzdHJpbmcgcyAwIGluZGV4KSkpKVxuICAgICAgICAgKGNvbmogcGFydHMgcykpKSkpKSkpKSlcbiJ9IHs6c3ltIHRyaW1yLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gdGhlIHJpZ2h0IHNpZGUgb2Ygc3RyaW5nLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJpbXJcbiBcIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHN0cmluZy5cIlxuIFtzXVxuIChnc3RyaW5nL3RyaW1SaWdodCBzKSlcbiJ9IHs6c3ltIGluZGV4LW9mLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGluZGV4IG9mIHZhbHVlIChzdHJpbmcgb3IgY2hhcikgaW4gcywgb3B0aW9uYWxseSBzZWFyY2hpbmdcbiAgZm9yd2FyZCBmcm9tIGZyb20taW5kZXggb3IgbmlsIGlmIG5vdCBmb3VuZC4iLCA6YXJnbGlzdHMgW1tzIHZhbHVlXSBbcyB2YWx1ZSBmcm9tLWluZGV4XV19LCA6c291cmNlICIoZGVmblxuIGluZGV4LW9mXG4gXCJSZXR1cm4gaW5kZXggb2YgdmFsdWUgKHN0cmluZyBvciBjaGFyKSBpbiBzLCBvcHRpb25hbGx5IHNlYXJjaGluZ1xcbiAgZm9yd2FyZCBmcm9tIGZyb20taW5kZXggb3IgbmlsIGlmIG5vdCBmb3VuZC5cIlxuIChbcyB2YWx1ZV1cbiAgKGxldCBbcmVzdWx0ICguaW5kZXhPZiBzIHZhbHVlKV0gKGlmIChuZWc/IHJlc3VsdCkgbmlsIHJlc3VsdCkpKVxuIChbcyB2YWx1ZSBmcm9tLWluZGV4XVxuICAobGV0XG4gICBbcmVzdWx0ICguaW5kZXhPZiBzIHZhbHVlIGZyb20taW5kZXgpXVxuICAgKGlmIChuZWc/IHJlc3VsdCkgbmlsIHJlc3VsdCkpKSlcbiJ9IHs6c3ltIHRyaW0sIDptZXRhIHs6ZG9jICJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSBib3RoIGVuZHMgb2Ygc3RyaW5nLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJpbVxuIFwiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHN0cmluZy5cIlxuIFtzXVxuIChnc3RyaW5nL3RyaW0gcykpXG4ifSB7OnN5bSB0cmltbCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIHRoZSBsZWZ0IHNpZGUgb2Ygc3RyaW5nLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJpbWxcbiBcIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIHRoZSBsZWZ0IHNpZGUgb2Ygc3RyaW5nLlwiXG4gW3NdXG4gKGdzdHJpbmcvdHJpbUxlZnQgcykpXG4ifSB7OnN5bSBibGFuaz8sIDptZXRhIHs6ZG9jICJUcnVlIGlzIHMgaXMgbmlsLCBlbXB0eSwgb3IgY29udGFpbnMgb25seSB3aGl0ZXNwYWNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gYmxhbms/XG4gXCJUcnVlIGlzIHMgaXMgbmlsLCBlbXB0eSwgb3IgY29udGFpbnMgb25seSB3aGl0ZXNwYWNlLlwiXG4gW3NdXG4gKGdzdHJpbmcvaXNFbXB0eU9yV2hpdGVzcGFjZSAoZ3N0cmluZy9tYWtlU2FmZSBzKSkpXG4ifSksIGNsanMuc3BlYy5hbHBoYSAoezpzeW0gZm9ybSwgOm1ldGEgezpkb2MgInJldHVybnMgdGhlIHNwZWMgYXMgZGF0YSIsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpzb3VyY2UgIihkZWZuIGZvcm0gXCJyZXR1cm5zIHRoZSBzcGVjIGFzIGRhdGFcIiBbc3BlY10gKGRlc2NyaWJlKiAoc3BlY2l6ZSBzcGVjKSkpXG4ifSB7OnN5bSBuaWxhYmxlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ25pbGFibGUnIiwgOmFyZ2xpc3RzIChbZm9ybSBwcmVkIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuaWxhYmxlLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbmlsYWJsZSdcIlxuIFtmb3JtIHByZWQgZ2ZuXVxuIChsZXRcbiAgW3NwZWMgKGRlbGF5IChzcGVjaXplIHByZWQgZm9ybSkpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qIFtfIHhdIChpZiAobmlsPyB4KSBuaWwgKGNvbmZvcm0qIEBzcGVjIHgpKSlcbiAgICh1bmZvcm0qIFtfIHhdIChpZiAobmlsPyB4KSBuaWwgKHVuZm9ybSogQHNwZWMgeCkpKVxuICAgKGV4cGxhaW4qXG4gICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAod2hlbi1ub3RcbiAgICAgKGMvb3IgKHB2YWxpZD8gQHNwZWMgeCkgKG5pbD8geCkpXG4gICAgIChjb25qXG4gICAgICAoZXhwbGFpbi0xIGZvcm0gcHJlZCAoY29uaiBwYXRoIDpjbGpzLnNwZWMuYWxwaGEvcHJlZCkgdmlhIGluIHgpXG4gICAgICB7OnBhdGggKGNvbmogcGF0aCA6Y2xqcy5zcGVjLmFscGhhL25pbCksXG4gICAgICAgOnByZWQgJ25pbD8sXG4gICAgICAgOnZhbCB4LFxuICAgICAgIDp2aWEgdmlhLFxuICAgICAgIDppbiBpbn0pKSlcbiAgIChnZW4qXG4gICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAoaWZcbiAgICAgZ2ZuXG4gICAgIChnZm4pXG4gICAgIChnZW4vZnJlcXVlbmN5XG4gICAgICBbWzEgKGdlbi9kZWxheSAoZ2VuL3JldHVybiBuaWwpKV1cbiAgICAgICBbOVxuICAgICAgICAoZ2VuL2RlbGF5XG4gICAgICAgICAoZ2Vuc3ViXG4gICAgICAgICAgcHJlZFxuICAgICAgICAgIG92ZXJyaWRlc1xuICAgICAgICAgIChjb25qIHBhdGggOmNsanMuc3BlYy5hbHBoYS9wcmVkKVxuICAgICAgICAgIHJtYXBcbiAgICAgICAgICBmb3JtKSldXSkpKVxuICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChuaWxhYmxlLWltcGwgZm9ybSBwcmVkIGdmbikpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9uaWxhYmxlKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAocy9tcmVzIGZvcm0pKSkpKSkpKSlcbiJ9IHs6c3ltICpyZWN1cnNpb24tbGltaXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpyZWN1cnNpb24tbGltaXQqXG4gXCJBIHNvZnQgbGltaXQgb24gaG93IG1hbnkgdGltZXMgYSBicmFuY2hpbmcgc3BlYyAob3IvYWx0Lyovb3B0LWtleXMvbXVsdGktc3BlYylcXG4gIGNhbiBiZSByZWN1cnNlZCB0aHJvdWdoIGR1cmluZyBnZW5lcmF0aW9uLiBBZnRlciB0aGlzIGFcXG4gIG5vbi1yZWN1cnNpdmUgYnJhbmNoIHdpbGwgYmUgY2hvc2VuLlwiXG4gNClcbiJ9IHs6c3ltICpjb2xsLWVycm9yLWxpbWl0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqY29sbC1lcnJvci1saW1pdCpcbiBcIlRoZSBudW1iZXIgb2YgZXJyb3JzIHJlcG9ydGVkIGJ5IGV4cGxhaW4gaW4gYSBjb2xsZWN0aW9uIHNwZWMnZWQgd2l0aCAnZXZlcnknXCJcbiAyMClcbiJ9IHs6c3ltIGV4cGxhaW4tcHJpbnRlciwgOm1ldGEgezpkb2MgIkRlZmF1bHQgcHJpbnRlciBmb3IgZXhwbGFpbi1kYXRhLiBuaWwgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLiIsIDphcmdsaXN0cyAoW2VkXSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tcHJpbnRlclxuIFwiRGVmYXVsdCBwcmludGVyIGZvciBleHBsYWluLWRhdGEuIG5pbCBpbmRpY2F0ZXMgYSBzdWNjZXNzZnVsIHZhbGlkYXRpb24uXCJcbiBbZWRdXG4gKGlmXG4gIGVkXG4gIChsZXRcbiAgIFtwcm9ibGVtc1xuICAgICgtPj5cbiAgICAgKDpjbGpzLnNwZWMuYWxwaGEvcHJvYmxlbXMgZWQpXG4gICAgIChzb3J0LWJ5IChmbiogW3AxX180NTI5OCNdICgtIChjb3VudCAoOmluIHAxX180NTI5OCMpKSkpKVxuICAgICAoc29ydC1ieSAoZm4qIFtwMV9fNDUyOTkjXSAoLSAoY291bnQgKDpwYXRoIHAxX180NTI5OSMpKSkpKSldXG4gICAocHJpbnRcbiAgICAod2l0aC1vdXQtc3RyXG4gICAgIChkb3NlcVxuICAgICAgW3s6a2V5cyBbcGF0aCBwcmVkIHZhbCByZWFzb24gdmlhIGluXSwgOmFzIHByb2J9IHByb2JsZW1zXVxuICAgICAgKHByIHZhbClcbiAgICAgIChwcmludCBcIiAtIGZhaWxlZDogXCIpXG4gICAgICAoaWYgcmVhc29uIChwcmludCByZWFzb24pIChwciAoYWJicmV2IHByZWQpKSlcbiAgICAgICh3aGVuLW5vdCAoZW1wdHk/IGluKSAocHJpbnQgKHN0ciBcIiBpbjogXCIgKHByLXN0ciBpbikpKSlcbiAgICAgICh3aGVuLW5vdCAoZW1wdHk/IHBhdGgpIChwcmludCAoc3RyIFwiIGF0OiBcIiAocHItc3RyIHBhdGgpKSkpXG4gICAgICAod2hlbi1ub3RcbiAgICAgICAoZW1wdHk/IHZpYSlcbiAgICAgICAocHJpbnQgKHN0ciBcIiBzcGVjOiBcIiAocHItc3RyIChsYXN0IHZpYSkpKSkpXG4gICAgICAoZG9zZXFcbiAgICAgICBbW2sgdl0gcHJvYl1cbiAgICAgICAod2hlbi1ub3RcbiAgICAgICAgKCN7OnBhdGggOnByZWQgOnZpYSA6dmFsIDpyZWFzb24gOmlufSBrKVxuICAgICAgICAocHJpbnQgXCJcXG5cXHRcIiAocHItc3RyIGspIFwiIFwiKVxuICAgICAgICAocHIgdikpKVxuICAgICAgKG5ld2xpbmUpKSkpKVxuICAocHJpbnRsbiBcIlN1Y2Nlc3MhXCIpKSlcbiJ9IHs6c3ltIFNwZWNpemUsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChzcGVjaXplKil9IHs6c3ltIGFsdC1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhbHQnIiwgOmFyZ2xpc3RzIChba3MgcHMgZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWx0LWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYWx0J1wiXG4gW2tzIHBzIGZvcm1zXVxuIChhc3NvYyAoYWx0KiBwcyBrcyBmb3JtcykgOmlkIChyYW5kb20tdXVpZCkpKVxuIn0gezpzeW0gZGVmLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2RlZiciLCA6YXJnbGlzdHMgKFtrIGZvcm0gc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWYtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdkZWYnXCJcbiBbayBmb3JtIHNwZWNdXG4gKGFzc2VydFxuICAoYy9hbmQgKGlkZW50PyBrKSAobmFtZXNwYWNlIGspKVxuICBcImsgbXVzdCBiZSBuYW1lc3BhY2VkIGtleXdvcmQgb3IgcmVzb2x2ZWFibGUgc3ltYm9sXCIpXG4gKGlmXG4gIChuaWw/IHNwZWMpXG4gIChzd2FwISByZWdpc3RyeS1yZWYgZGlzc29jIGspXG4gIChsZXRcbiAgIFtzcGVjXG4gICAgKGlmXG4gICAgIChjL29yIChzcGVjPyBzcGVjKSAocmVnZXg/IHNwZWMpIChnZXQgQHJlZ2lzdHJ5LXJlZiBzcGVjKSlcbiAgICAgc3BlY1xuICAgICAoc3BlYy1pbXBsIGZvcm0gc3BlYyBuaWwgbmlsKSldXG4gICAoc3dhcCEgcmVnaXN0cnktcmVmIGFzc29jIGsgKHdpdGgtbmFtZSBzcGVjIGspKSkpXG4gaylcbiJ9IHs6c3ltICpleHBsYWluLW91dCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpleHBsYWluLW91dCogZXhwbGFpbi1wcmludGVyKVxuIn0gezpzeW0gcmVnZXgtc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyB3aXRoIGEgcmVnZXggb3AgYXJndW1lbnQiLCA6YXJnbGlzdHMgKFtyZSBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVnZXgtc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3NwZWMnIHdpdGggYSByZWdleCBvcCBhcmd1bWVudFwiXG4gW3JlIGdmbl1cbiAocmVpZnlcbiAgU3BlY2l6ZVxuICAoc3BlY2l6ZSogW3NdIHMpXG4gIChzcGVjaXplKiBbcyBfXSBzKVxuICBTcGVjXG4gIChjb25mb3JtKlxuICAgW18geF1cbiAgIChpZlxuICAgIChjL29yIChuaWw/IHgpIChzZXF1ZW50aWFsPyB4KSlcbiAgICAocmUtY29uZm9ybSByZSAoc2VxIHgpKVxuICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICh1bmZvcm0qIFtfIHhdIChvcC11bmZvcm0gcmUgeCkpXG4gIChleHBsYWluKlxuICAgW18gcGF0aCB2aWEgaW4geF1cbiAgIChpZlxuICAgIChjL29yIChuaWw/IHgpIChzZXF1ZW50aWFsPyB4KSlcbiAgICAocmUtZXhwbGFpbiBwYXRoIHZpYSBpbiByZSAoc2VxIHgpKVxuICAgIFt7OnBhdGggcGF0aCxcbiAgICAgIDpwcmVkXG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL2ZuKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgKGNsb2p1cmUuY29yZS92ZWNcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdCAoY2xvanVyZS5jb3JlL2xpc3QgJyUpKSkpKSlcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLmNvcmUvb3IpXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvbmlsPylcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSlcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcbiAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9zZXF1ZW50aWFsPylcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSkpKSkpKSkpLFxuICAgICAgOnZhbCB4LFxuICAgICAgOnZpYSB2aWEsXG4gICAgICA6aW4gaW59XSkpXG4gIChnZW4qXG4gICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgKGlmIGdmbiAoZ2ZuKSAocmUtZ2VuIHJlIG92ZXJyaWRlcyBwYXRoIHJtYXAgKG9wLWRlc2NyaWJlIHJlKSkpKVxuICAod2l0aC1nZW4qIFtfIGdmbl0gKHJlZ2V4LXNwZWMtaW1wbCByZSBnZm4pKVxuICAoZGVzY3JpYmUqIFtfXSAob3AtZGVzY3JpYmUgcmUpKSkpXG4ifSB7OnN5bSBtZXJnZS1zcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ21lcmdlJyIsIDphcmdsaXN0cyAoW2Zvcm1zIHByZWRzIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbWVyZ2UnXCJcbiBbZm9ybXMgcHJlZHMgZ2ZuXVxuIChyZWlmeVxuICBTcGVjaXplXG4gIChzcGVjaXplKiBbc10gcylcbiAgKHNwZWNpemUqIFtzIF9dIHMpXG4gIFNwZWNcbiAgKGNvbmZvcm0qXG4gICBbXyB4XVxuICAgKGxldFxuICAgIFttc1xuICAgICAobWFwXG4gICAgICAoZm4qIFtwMV9fNDUzMTEjIHAyX180NTMxMiNdIChkdCBwMV9fNDUzMTEjIHggcDJfXzQ1MzEyIykpXG4gICAgICBwcmVkc1xuICAgICAgZm9ybXMpXVxuICAgIChpZlxuICAgICAoc29tZSBpbnZhbGlkPyBtcylcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgIChhcHBseSBjL21lcmdlIG1zKSkpKVxuICAodW5mb3JtKlxuICAgW18geF1cbiAgIChhcHBseVxuICAgIGMvbWVyZ2VcbiAgICAobWFwIChmbiogW3AxX180NTMxMyNdICh1bmZvcm0gcDFfXzQ1MzEzIyB4KSkgKHJldmVyc2UgcHJlZHMpKSkpXG4gIChleHBsYWluKlxuICAgW18gcGF0aCB2aWEgaW4geF1cbiAgIChhcHBseVxuICAgIGNvbmNhdFxuICAgIChtYXBcbiAgICAgKGZuKlxuICAgICAgW3AxX180NTMxNCMgcDJfXzQ1MzE1I11cbiAgICAgIChleHBsYWluLTEgcDFfXzQ1MzE0IyBwMl9fNDUzMTUjIHBhdGggdmlhIGluIHgpKVxuICAgICBmb3Jtc1xuICAgICBwcmVkcykpKVxuICAoZ2VuKlxuICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgIChpZlxuICAgIGdmblxuICAgIChnZm4pXG4gICAgKGdlbi9mbWFwXG4gICAgIChmbiogW3AxX180NTMxNiNdIChhcHBseSBjL21lcmdlIHAxX180NTMxNiMpKVxuICAgICAoYXBwbHlcbiAgICAgIGdlbi90dXBsZVxuICAgICAgKG1hcFxuICAgICAgIChmbipcbiAgICAgICAgW3AxX180NTMxNyMgcDJfXzQ1MzE4I11cbiAgICAgICAgKGdlbnN1YiBwMV9fNDUzMTcjIG92ZXJyaWRlcyBwYXRoIHJtYXAgcDJfXzQ1MzE4IykpXG4gICAgICAgcHJlZHNcbiAgICAgICBmb3JtcykpKSkpXG4gICh3aXRoLWdlbiogW18gZ2ZuXSAobWVyZ2Utc3BlYy1pbXBsIGZvcm1zIHByZWRzIGdmbikpXG4gIChkZXNjcmliZSpcbiAgIFtfXVxuICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9tZXJnZSlcbiAgICAgIGZvcm1zKSkpKSkpXG4ifSB7OnN5bSBleHBsYWluLWRhdGEqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgcGF0aCB2aWEgaW4geF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLWRhdGEqXG4gW3NwZWMgcGF0aCB2aWEgaW4geF1cbiAod2hlbi1sZXRcbiAgW3Byb2JzIChleHBsYWluKiAoc3BlY2l6ZSBzcGVjKSBwYXRoIHZpYSBpbiB4KV1cbiAgKHdoZW4tbm90XG4gICAoZW1wdHk/IHByb2JzKVxuICAgezpjbGpzLnNwZWMuYWxwaGEvcHJvYmxlbXMgcHJvYnMsXG4gICAgOmNsanMuc3BlYy5hbHBoYS9zcGVjIHNwZWMsXG4gICAgOmNsanMuc3BlYy5hbHBoYS92YWx1ZSB4fSkpKVxuIn0gezpzeW0gTUFYX0lOVCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTUFYX0lOVCA5MDA3MTk5MjU0NzQwOTkxKVxuIn0gezpzeW0gY2hlY2stYXNzZXJ0cywgOm1ldGEgezpkb2MgIkVuYWJsZSBvciBkaXNhYmxlIHNwZWMgYXNzZXJ0cyB0aGF0IGhhdmUgYmVlbiBjb21waWxlZFxud2l0aCAnKmNvbXBpbGUtYXNzZXJ0cyonIHRydWUuICBTZWUgJ2Fzc2VydCcuXG5Jbml0aWFsbHkgc2V0IHRvIGJvb2xlYW4gdmFsdWUgb2YgY2xqcy5zcGVjLmFscGhhLypydW50aW1lLWFzc2VydHMqLlxuRGVmYXVsdHMgdG8gZmFsc2UuIiwgOmFyZ2xpc3RzIChbZmxhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay1hc3NlcnRzXG4gXCJFbmFibGUgb3IgZGlzYWJsZSBzcGVjIGFzc2VydHMgdGhhdCBoYXZlIGJlZW4gY29tcGlsZWRcXG53aXRoICcqY29tcGlsZS1hc3NlcnRzKicgdHJ1ZS4gIFNlZSAnYXNzZXJ0Jy5cXG5Jbml0aWFsbHkgc2V0IHRvIGJvb2xlYW4gdmFsdWUgb2YgY2xqcy5zcGVjLmFscGhhLypydW50aW1lLWFzc2VydHMqLlxcbkRlZmF1bHRzIHRvIGZhbHNlLlwiXG4gW2ZsYWddXG4gKHNldCEgKnJ1bnRpbWUtYXNzZXJ0cyogZmxhZykpXG4ifSB7OnN5bSBhc3NlcnQqLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhc3NlcnQnLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3NlcnQqXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2Fzc2VydCcuXCJcbiBbc3BlYyB4XVxuIChpZlxuICAodmFsaWQ/IHNwZWMgeClcbiAgeFxuICAobGV0XG4gICBbZWRcbiAgICAoYy9tZXJnZVxuICAgICAoYXNzb2NcbiAgICAgIChleHBsYWluLWRhdGEqIHNwZWMgW10gW10gW10geClcbiAgICAgIDpjbGpzLnNwZWMuYWxwaGEvZmFpbHVyZVxuICAgICAgOmFzc2VydGlvbi1mYWlsZWQpKV1cbiAgICh0aHJvd1xuICAgIChqcy9FcnJvci5cbiAgICAgKHN0clxuICAgICAgXCJTcGVjIGFzc2VydGlvbiBmYWlsZWRcXG5cIlxuICAgICAgKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1vdXQgZWQpKSkpKSkpKVxuIn0gezpzeW0gaW5zdC1pbi1yYW5nZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiBpbnN0IGF0IG9yIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgZW5kIiwgOmFyZ2xpc3RzIChbc3RhcnQgZW5kIGluc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdC1pbi1yYW5nZT9cbiBcIlJldHVybiB0cnVlIGlmIGluc3QgYXQgb3IgYWZ0ZXIgc3RhcnQgYW5kIGJlZm9yZSBlbmRcIlxuIFtzdGFydCBlbmQgaW5zdF1cbiAoYy9hbmRcbiAgKGluc3Q/IGluc3QpXG4gIChsZXRcbiAgIFt0IChpbnN0LW1zIGluc3QpXVxuICAgKGMvYW5kICg8PSAoaW5zdC1tcyBzdGFydCkgdCkgKDwgdCAoaW5zdC1tcyBlbmQpKSkpKSlcbiJ9IHs6c3ltIGFuZC1zcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2FuZCciLCA6YXJnbGlzdHMgKFtmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5kLXNwZWMtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhbmQnXCJcbiBbZm9ybXMgcHJlZHMgZ2ZuXVxuIChsZXRcbiAgW3NwZWNzXG4gICAoZGVsYXkgKG1hcHYgc3BlY2l6ZSBwcmVkcyBmb3JtcykpXG4gICBjZm9ybVxuICAgKGNhc2VcbiAgICAoY291bnQgcHJlZHMpXG4gICAgMlxuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgKGNvbmZvcm0qIChzcGVjcyAxKSByZXQpKSkpXG4gICAgM1xuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgKGxldFxuICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMSkgcmV0KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAoY29uZm9ybSogKHNwZWNzIDIpIHJldCkpKSkpKVxuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjc11cbiAgICAgIChsb29wXG4gICAgICAgW3JldCB4IGkgMF1cbiAgICAgICAoaWZcbiAgICAgICAgKDwgaSAoY291bnQgc3BlY3MpKVxuICAgICAgICAobGV0XG4gICAgICAgICBbbnJldCAoY29uZm9ybSogKHNwZWNzIGkpIHJldCldXG4gICAgICAgICAoaWZcbiAgICAgICAgICAoaW52YWxpZD8gbnJldClcbiAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAocmVjdXIgbnJldCAoaW5jIGkpKSkpXG4gICAgICAgIHJldCkpKSkpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qIFtfIHhdIChjZm9ybSB4KSlcbiAgICh1bmZvcm0qXG4gICAgW18geF1cbiAgICAocmVkdWNlXG4gICAgIChmbiogW3AxX180NTMxMCMgcDJfXzQ1MzA5I10gKHVuZm9ybSBwMl9fNDUzMDkjIHAxX180NTMxMCMpKVxuICAgICB4XG4gICAgIChyZXZlcnNlIHByZWRzKSkpXG4gICAoZXhwbGFpbipcbiAgICBbXyBwYXRoIHZpYSBpbiB4XVxuICAgIChleHBsYWluLXByZWQtbGlzdCBmb3JtcyBwcmVkcyBwYXRoIHZpYSBpbiB4KSlcbiAgIChnZW4qXG4gICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAoaWZcbiAgICAgZ2ZuXG4gICAgIChnZm4pXG4gICAgIChnZW5zdWIgKGZpcnN0IHByZWRzKSBvdmVycmlkZXMgcGF0aCBybWFwIChmaXJzdCBmb3JtcykpKSlcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAoYW5kLXNwZWMtaW1wbCBmb3JtcyBwcmVkcyBnZm4pKVxuICAgKGRlc2NyaWJlKlxuICAgIFtfXVxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvYW5kKVxuICAgICAgIGZvcm1zKSkpKSkpKVxuIn0gezpzeW0gZGVzY3JpYmUqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBtYXAtc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyB3aXRoIGEgbWFwIGFyZ3VtZW50IiwgOmFyZ2xpc3RzIChbezprZXlzIFtyZXEtdW4gb3B0LXVuIGtleXMtcHJlZCBwcmVkLWV4cHJzIG9wdC1rZXlzIHJlcS1zcGVjcyByZXEgcmVxLWtleXMgb3B0LXNwZWNzIHByZWQtZm9ybXMgb3B0IGdmbl0sIDphcyBhcmdtfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3NwZWMnIHdpdGggYSBtYXAgYXJndW1lbnRcIlxuIFt7OmtleXNcbiAgIFtyZXEtdW5cbiAgICBvcHQtdW5cbiAgICBrZXlzLXByZWRcbiAgICBwcmVkLWV4cHJzXG4gICAgb3B0LWtleXNcbiAgICByZXEtc3BlY3NcbiAgICByZXFcbiAgICByZXEta2V5c1xuICAgIG9wdC1zcGVjc1xuICAgIHByZWQtZm9ybXNcbiAgICBvcHRcbiAgICBnZm5dLFxuICAgOmFzIGFyZ219XVxuIChsZXRcbiAgW2stPnNcbiAgICh6aXBtYXAgKGNvbmNhdCByZXEta2V5cyBvcHQta2V5cykgKGNvbmNhdCByZXEtc3BlY3Mgb3B0LXNwZWNzKSlcbiAgIGtleXMtPnNwZWNuYW1lc1xuICAgKGZuKiBbcDFfXzQ1MzAxI10gKGMvb3IgKGstPnMgcDFfXzQ1MzAxIykgcDFfXzQ1MzAxIykpXG4gICBpZFxuICAgKHJhbmRvbS11dWlkKV1cbiAgKHJlaWZ5XG4gICBTcGVjaXplXG4gICAoc3BlY2l6ZSogW3NdIHMpXG4gICAoc3BlY2l6ZSogW3MgX10gcylcbiAgIFNwZWNcbiAgIChjb25mb3JtKlxuICAgIFtfIG1dXG4gICAgKGlmXG4gICAgIChrZXlzLXByZWQgbSlcbiAgICAgKGxldFxuICAgICAgW3JlZyAocmVnaXN0cnkpXVxuICAgICAgKGxvb3BcbiAgICAgICBbcmV0IG0gW1trIHZdICYga3MgOmFzIGtleXNdIG1dXG4gICAgICAgKGlmXG4gICAgICAgIGtleXNcbiAgICAgICAgKGxldFxuICAgICAgICAgW3NuYW1lIChrZXlzLT5zcGVjbmFtZXMgayldXG4gICAgICAgICAoaWYtbGV0XG4gICAgICAgICAgW3MgKGdldCByZWcgc25hbWUpXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW2N2IChjb25mb3JtIHMgdildXG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgKGludmFsaWQ/IGN2KVxuICAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGsgY3YpKSBrcykpKVxuICAgICAgICAgIChyZWN1ciByZXQga3MpKSlcbiAgICAgICAgcmV0KSkpXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICAodW5mb3JtKlxuICAgIFtfIG1dXG4gICAgKGxldFxuICAgICBbcmVnIChyZWdpc3RyeSldXG4gICAgIChsb29wXG4gICAgICBbcmV0IG0gW2sgJiBrcyA6YXMga2V5c10gKGMva2V5cyBtKV1cbiAgICAgIChpZlxuICAgICAgIGtleXNcbiAgICAgICAoaWZcbiAgICAgICAgKGNvbnRhaW5zPyByZWcgKGtleXMtPnNwZWNuYW1lcyBrKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW2N2IChnZXQgbSBrKSB2ICh1bmZvcm0gKGtleXMtPnNwZWNuYW1lcyBrKSBjdildXG4gICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGsgdikpIGtzKSlcbiAgICAgICAgKHJlY3VyIHJldCBrcykpXG4gICAgICAgcmV0KSkpKVxuICAgKGV4cGxhaW4qXG4gICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAoaWYtbm90XG4gICAgIChtYXA/IHgpXG4gICAgIFt7OnBhdGggcGF0aCwgOnByZWQgJ2Nsb2p1cmUuY29yZS9tYXA/LCA6dmFsIHgsIDp2aWEgdmlhLCA6aW4gaW59XVxuICAgICAobGV0XG4gICAgICBbcmVnIChyZWdpc3RyeSldXG4gICAgICAoYXBwbHlcbiAgICAgICBjb25jYXRcbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW3Byb2JzXG4gICAgICAgICAoLT4+XG4gICAgICAgICAgKG1hcFxuICAgICAgICAgICAoZm4gW3ByZWQgZm9ybV0gKHdoZW4tbm90IChwcmVkIHgpIGZvcm0pKVxuICAgICAgICAgICBwcmVkLWV4cHJzXG4gICAgICAgICAgIHByZWQtZm9ybXMpXG4gICAgICAgICAgKGtlZXAgaWRlbnRpdHkpXG4gICAgICAgICAgc2VxKV1cbiAgICAgICAgKG1hcFxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDUzMDIjXVxuICAgICAgICAgIChpZGVudGl0eVxuICAgICAgICAgICB7OnBhdGggcGF0aCwgOnByZWQgcDFfXzQ1MzAyIywgOnZhbCB4LCA6dmlhIHZpYSwgOmluIGlufSkpXG4gICAgICAgICBwcm9icykpXG4gICAgICAgKG1hcFxuICAgICAgICAoZm5cbiAgICAgICAgIFtbayB2XV1cbiAgICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgIChjL29yXG4gICAgICAgICAgIChub3QgKGNvbnRhaW5zPyByZWcgKGtleXMtPnNwZWNuYW1lcyBrKSkpXG4gICAgICAgICAgIChwdmFsaWQ/IChrZXlzLT5zcGVjbmFtZXMgaykgdiBrKSlcbiAgICAgICAgICAoZXhwbGFpbi0xXG4gICAgICAgICAgIChrZXlzLT5zcGVjbmFtZXMgaylcbiAgICAgICAgICAgKGtleXMtPnNwZWNuYW1lcyBrKVxuICAgICAgICAgICAoY29uaiBwYXRoIGspXG4gICAgICAgICAgIHZpYVxuICAgICAgICAgICAoY29uaiBpbiBrKVxuICAgICAgICAgICB2KSkpXG4gICAgICAgIChzZXEgeCkpKSkpKVxuICAgKGdlbipcbiAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgIChpZlxuICAgICBnZm5cbiAgICAgKGdmbilcbiAgICAgKGxldFxuICAgICAgW3JtYXBcbiAgICAgICAoaW5jayBybWFwIGlkKVxuICAgICAgIHJnZW5cbiAgICAgICAoZm4gW2sgc10gW2sgKGdlbnN1YiBzIG92ZXJyaWRlcyAoY29uaiBwYXRoIGspIHJtYXAgayldKVxuICAgICAgIG9nZW5cbiAgICAgICAoZm5cbiAgICAgICAgW2sgc11cbiAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAocmVjdXItbGltaXQ/IHJtYXAgaWQgcGF0aCBrKVxuICAgICAgICAgW2sgKGdlbi9kZWxheSAoZ2Vuc3ViIHMgb3ZlcnJpZGVzIChjb25qIHBhdGggaykgcm1hcCBrKSldKSlcbiAgICAgICByZXFzXG4gICAgICAgKG1hcCByZ2VuIHJlcS1rZXlzIHJlcS1zcGVjcylcbiAgICAgICBvcHRzXG4gICAgICAgKHJlbW92ZSBuaWw/IChtYXAgb2dlbiBvcHQta2V5cyBvcHQtc3BlY3MpKV1cbiAgICAgICh3aGVuXG4gICAgICAgKGV2ZXJ5PyBpZGVudGl0eSAoY29uY2F0IChtYXAgc2Vjb25kIHJlcXMpIChtYXAgc2Vjb25kIG9wdHMpKSlcbiAgICAgICAoZ2VuL2JpbmRcbiAgICAgICAgKGdlbi90dXBsZVxuICAgICAgICAgKGFuZC1rLWdlbiByZXEpXG4gICAgICAgICAob3Itay1nZW4gb3B0KVxuICAgICAgICAgKGFuZC1rLWdlbiByZXEtdW4pXG4gICAgICAgICAob3Itay1nZW4gb3B0LXVuKSlcbiAgICAgICAgKGZuXG4gICAgICAgICBbW3JlcS1rcyBvcHQta3MgcmVxLXVuLWtzIG9wdC11bi1rc11dXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3Frc1xuICAgICAgICAgICAoZmxhdHRlbiAoY29uY2F0IHJlcS1rcyBvcHQta3MpKVxuICAgICAgICAgICB1bnFrc1xuICAgICAgICAgICAobWFwXG4gICAgICAgICAgICAoY29tcCBrZXl3b3JkIG5hbWUpXG4gICAgICAgICAgICAoZmxhdHRlbiAoY29uY2F0IHJlcS11bi1rcyBvcHQtdW4ta3MpKSldXG4gICAgICAgICAgKC0+PlxuICAgICAgICAgICAoaW50byByZXFzIG9wdHMpXG4gICAgICAgICAgIChmaWx0ZXJcbiAgICAgICAgICAgIChmbipcbiAgICAgICAgICAgICBbcDFfXzQ1MzAzI11cbiAgICAgICAgICAgICAoKHNldCAoY29uY2F0IHFrcyB1bnFrcykpIChmaXJzdCBwMV9fNDUzMDMjKSkpKVxuICAgICAgICAgICAoYXBwbHkgY29uY2F0KVxuICAgICAgICAgICAoYXBwbHkgZ2VuL2hhc2gtbWFwKSkpKSkpKSkpXG4gICAod2l0aC1nZW4qIFtfIGdmbl0gKG1hcC1zcGVjLWltcGwgKGFzc29jIGFyZ20gOmdmbiBnZm4pKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY29uc1xuICAgICAnY2xqcy5zcGVjLmFscGhhL2tleXNcbiAgICAgKGNvbmQtPlxuICAgICAgW11cbiAgICAgIHJlcVxuICAgICAgKGNvbmogOnJlcSByZXEpXG4gICAgICBvcHRcbiAgICAgIChjb25qIDpvcHQgb3B0KVxuICAgICAgcmVxLXVuXG4gICAgICAoY29uaiA6cmVxLXVuIHJlcS11bilcbiAgICAgIG9wdC11blxuICAgICAgKGNvbmogOm9wdC11biBvcHQtdW4pKSkpKSkpXG4ifSB7OnN5bSBleHBsYWluLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcHJpbnRzIGFuIGV4cGxhbmF0aW9uIHRvICpvdXQqLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluXG4gXCJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgdGhhdCBmYWlscyB0byBjb25mb3JtLCBwcmludHMgYW4gZXhwbGFuYXRpb24gdG8gKm91dCouXCJcbiBbc3BlYyB4XVxuIChleHBsYWluLW91dCAoZXhwbGFpbi1kYXRhIHNwZWMgeCkpKVxuIn0gezpzeW0gd2l0aC1nZW4qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgZ2ZuXSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gb3Itc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdvciciLCA6YXJnbGlzdHMgKFtrZXlzIGZvcm1zIHByZWRzIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvci1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnb3InXCJcbiBba2V5cyBmb3JtcyBwcmVkcyBnZm5dXG4gKGxldFxuICBbaWRcbiAgIChyYW5kb20tdXVpZClcbiAgIGtwc1xuICAgKHppcG1hcCBrZXlzIHByZWRzKVxuICAgc3BlY3NcbiAgIChkZWxheSAobWFwdiBzcGVjaXplIHByZWRzIGZvcm1zKSlcbiAgIGNmb3JtXG4gICAoY2FzZVxuICAgIChjb3VudCBwcmVkcylcbiAgICAyXG4gICAgKGZuXG4gICAgIFt4XVxuICAgICAobGV0XG4gICAgICBbc3BlY3MgQHNwZWNzIHJldCAoY29uZm9ybSogKHNwZWNzIDApIHgpXVxuICAgICAgKGlmXG4gICAgICAgKGludmFsaWQ/IHJldClcbiAgICAgICAobGV0XG4gICAgICAgIFtyZXQgKGNvbmZvcm0qIChzcGVjcyAxKSB4KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAxKSByZXQpKSlcbiAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAwKSByZXQpKSkpXG4gICAgM1xuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgKGxldFxuICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMSkgeCldXG4gICAgICAgIChpZlxuICAgICAgICAgKGludmFsaWQ/IHJldClcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMikgeCldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAyKSByZXQpKSlcbiAgICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDEpIHJldCkpKVxuICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDApIHJldCkpKSlcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChsZXRcbiAgICAgIFtzcGVjcyBAc3BlY3NdXG4gICAgICAobG9vcFxuICAgICAgIFtpIDBdXG4gICAgICAgKGlmXG4gICAgICAgICg8IGkgKGNvdW50IHNwZWNzKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW3NwZWMgKHNwZWNzIGkpXVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtyZXQgKGNvbmZvcm0qIHNwZWMgeCldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgICAgIChyZWN1ciAoaW5jIGkpKVxuICAgICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyBpKSByZXQpKSkpXG4gICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSkpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qIFtfIHhdIChjZm9ybSB4KSlcbiAgICh1bmZvcm0qIFtfIFtrIHhdXSAodW5mb3JtIChrcHMgaykgeCkpXG4gICAoZXhwbGFpbipcbiAgICBbdGhpcyBwYXRoIHZpYSBpbiB4XVxuICAgICh3aGVuLW5vdFxuICAgICAocHZhbGlkPyB0aGlzIHgpXG4gICAgIChhcHBseVxuICAgICAgY29uY2F0XG4gICAgICAobWFwXG4gICAgICAgKGZuXG4gICAgICAgIFtrIGZvcm0gcHJlZF1cbiAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAocHZhbGlkPyBwcmVkIHgpXG4gICAgICAgICAoZXhwbGFpbi0xIGZvcm0gcHJlZCAoY29uaiBwYXRoIGspIHZpYSBpbiB4KSkpXG4gICAgICAga2V5c1xuICAgICAgIGZvcm1zXG4gICAgICAgcHJlZHMpKSkpXG4gICAoZ2VuKlxuICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgKGlmXG4gICAgIGdmblxuICAgICAoZ2ZuKVxuICAgICAobGV0XG4gICAgICBbZ2VuXG4gICAgICAgKGZuXG4gICAgICAgIFtrIHAgZl1cbiAgICAgICAgKGxldFxuICAgICAgICAgW3JtYXAgKGluY2sgcm1hcCBpZCldXG4gICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAocmVjdXItbGltaXQ/IHJtYXAgaWQgcGF0aCBrKVxuICAgICAgICAgIChnZW4vZGVsYXkgKGdlbnN1YiBwIG92ZXJyaWRlcyAoY29uaiBwYXRoIGspIHJtYXAgZikpKSkpXG4gICAgICAgZ3NcbiAgICAgICAocmVtb3ZlIG5pbD8gKG1hcCBnZW4ga2V5cyBwcmVkcyBmb3JtcykpXVxuICAgICAgKHdoZW4tbm90IChlbXB0eT8gZ3MpIChnZW4vb25lLW9mIGdzKSkpKSlcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAob3Itc3BlYy1pbXBsIGtleXMgZm9ybXMgcHJlZHMgZ2ZuKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL29yKVxuICAgICAgIChtYXBjYXQgdmVjdG9yIGtleXMgZm9ybXMpKSkpKSkpKVxuIn0gezpzeW0gKmZzcGVjLWl0ZXJhdGlvbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpmc3BlYy1pdGVyYXRpb25zKlxuIFwiVGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbm9ueW1vdXMgZm4gc3BlY2lmaWVkIGJ5IGZzcGVjIHdpbGwgYmUgKGdlbmVyYXRpdmVseSkgdGVzdGVkIGR1cmluZyBjb25mb3JtXCJcbiAyMSlcbiJ9IHs6c3ltIFNwZWMsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChjb25mb3JtKiBkZXNjcmliZSogZXhwbGFpbiogZ2VuKiB1bmZvcm0qIHdpdGgtZ2VuKil9IHs6c3ltIHVuZm9ybSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSBjcmVhdGVkIGJ5IG9yIGNvbXBsaWFudCB3aXRoIGEgY2FsbCB0b1xuICAnY29uZm9ybScgd2l0aCB0aGUgc2FtZSBzcGVjLCByZXR1cm5zIGEgdmFsdWUgd2l0aCBhbGwgY29uZm9ybVxuICAgZGVzdHJ1Y3R1cmluZyB1bmRvbmUuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIHVuZm9ybVxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIGNyZWF0ZWQgYnkgb3IgY29tcGxpYW50IHdpdGggYSBjYWxsIHRvXFxuICAnY29uZm9ybScgd2l0aCB0aGUgc2FtZSBzcGVjLCByZXR1cm5zIGEgdmFsdWUgd2l0aCBhbGwgY29uZm9ybVxcbiAgIGRlc3RydWN0dXJpbmcgdW5kb25lLlwiXG4gW3NwZWMgeF1cbiAodW5mb3JtKiAoc3BlY2l6ZSBzcGVjKSB4KSlcbiJ9IHs6c3ltIHZhbGlkPywgOm1ldGEgezpkb2MgIkhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuIHggaXMgdmFsaWQgZm9yIHNwZWMuIiwgOmFyZ2xpc3RzIFtbc3BlYyB4XSBbc3BlYyB4IGZvcm1dXX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsaWQ/XG4gXCJIZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgd2hlbiB4IGlzIHZhbGlkIGZvciBzcGVjLlwiXG4gKFtzcGVjIHhdXG4gIChsZXQgW3NwZWMgKHNwZWNpemUgc3BlYyldIChub3QgKGludmFsaWQ/IChjb25mb3JtKiBzcGVjIHgpKSkpKVxuIChbc3BlYyB4IGZvcm1dXG4gIChsZXQgW3NwZWMgKHNwZWNpemUgc3BlYyBmb3JtKV0gKG5vdCAoaW52YWxpZD8gKGNvbmZvcm0qIHNwZWMgeCkpKSkpKVxuIn0gezpzeW0gZ2VuLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjLCByZXR1cm5zIHRoZSBnZW5lcmF0b3IgZm9yIGl0LCBvciB0aHJvd3MgaWYgbm9uZSBjYW5cbiAgYmUgY29uc3RydWN0ZWQuIE9wdGlvbmFsbHkgYW4gb3ZlcnJpZGVzIG1hcCBjYW4gYmUgcHJvdmlkZWQgd2hpY2hcbiAgc2hvdWxkIG1hcCBzcGVjIG5hbWVzIG9yIHBhdGhzICh2ZWN0b3JzIG9mIGtleXdvcmRzKSB0byBuby1hcmdcbiAgZ2VuZXJhdG9yLWNyZWF0aW5nIGZucy4gVGhlc2Ugd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyYXRvcnMgYXQgdGhvc2VcbiAgbmFtZXMvcGF0aHMuIE5vdGUgdGhhdCBwYXJlbnQgZ2VuZXJhdG9yIChpbiB0aGUgc3BlYyBvciBvdmVycmlkZXNcbiAgbWFwKSB3aWxsIHN1cGVyc2VkZSB0aG9zZSBvZiBhbnkgc3VidHJlZXMuIEEgZ2VuZXJhdG9yIGZvciBhIHJlZ2V4XG4gIG9wIG11c3QgYWx3YXlzIHJldHVybiBhIHNlcXVlbnRpYWwgY29sbGVjdGlvbiAoaS5lLiBhIGdlbmVyYXRvciBmb3JcbiAgcy8/IHNob3VsZCByZXR1cm4gZWl0aGVyIGFuIGVtcHR5IHNlcXVlbmNlL3ZlY3RvciBvciBhXG4gIHNlcXVlbmNlL3ZlY3RvciB3aXRoIG9uZSBpdGVtIGluIGl0KSIsIDphcmdsaXN0cyBbW3NwZWNdIFtzcGVjIG92ZXJyaWRlc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZW5cbiBcIkdpdmVuIGEgc3BlYywgcmV0dXJucyB0aGUgZ2VuZXJhdG9yIGZvciBpdCwgb3IgdGhyb3dzIGlmIG5vbmUgY2FuXFxuICBiZSBjb25zdHJ1Y3RlZC4gT3B0aW9uYWxseSBhbiBvdmVycmlkZXMgbWFwIGNhbiBiZSBwcm92aWRlZCB3aGljaFxcbiAgc2hvdWxkIG1hcCBzcGVjIG5hbWVzIG9yIHBhdGhzICh2ZWN0b3JzIG9mIGtleXdvcmRzKSB0byBuby1hcmdcXG4gIGdlbmVyYXRvci1jcmVhdGluZyBmbnMuIFRoZXNlIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmF0b3JzIGF0IHRob3NlXFxuICBuYW1lcy9wYXRocy4gTm90ZSB0aGF0IHBhcmVudCBnZW5lcmF0b3IgKGluIHRoZSBzcGVjIG9yIG92ZXJyaWRlc1xcbiAgbWFwKSB3aWxsIHN1cGVyc2VkZSB0aG9zZSBvZiBhbnkgc3VidHJlZXMuIEEgZ2VuZXJhdG9yIGZvciBhIHJlZ2V4XFxuICBvcCBtdXN0IGFsd2F5cyByZXR1cm4gYSBzZXF1ZW50aWFsIGNvbGxlY3Rpb24gKGkuZS4gYSBnZW5lcmF0b3IgZm9yXFxuICBzLz8gc2hvdWxkIHJldHVybiBlaXRoZXIgYW4gZW1wdHkgc2VxdWVuY2UvdmVjdG9yIG9yIGFcXG4gIHNlcXVlbmNlL3ZlY3RvciB3aXRoIG9uZSBpdGVtIGluIGl0KVwiXG4gKFtzcGVjXSAoZ2VuIHNwZWMgbmlsKSlcbiAoW3NwZWMgb3ZlcnJpZGVzXVxuICAoZ2Vuc3ViXG4gICBzcGVjXG4gICBvdmVycmlkZXNcbiAgIFtdXG4gICB7OmNsanMuc3BlYy5hbHBoYS9yZWN1cnNpb24tbGltaXQgKnJlY3Vyc2lvbi1saW1pdCp9XG4gICBzcGVjKSkpXG4ifSB7OnN5bSBub25jb25mb3JtaW5nLCA6bWV0YSB7OmRvYyAidGFrZXMgYSBzcGVjIGFuZCByZXR1cm5zIGEgc3BlYyB0aGF0IGhhcyB0aGUgc2FtZSBwcm9wZXJ0aWVzIGV4Y2VwdFxuICAnY29uZm9ybScgcmV0dXJucyB0aGUgb3JpZ2luYWwgKG5vdCB0aGUgY29uZm9ybWVkKSB2YWx1ZS4gTm90ZSwgd2lsbCBzcGVjaXplIHJlZ2V4IG9wcy4iLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmblxuIG5vbmNvbmZvcm1pbmdcbiBcInRha2VzIGEgc3BlYyBhbmQgcmV0dXJucyBhIHNwZWMgdGhhdCBoYXMgdGhlIHNhbWUgcHJvcGVydGllcyBleGNlcHRcXG4gICdjb25mb3JtJyByZXR1cm5zIHRoZSBvcmlnaW5hbCAobm90IHRoZSBjb25mb3JtZWQpIHZhbHVlLiBOb3RlLCB3aWxsIHNwZWNpemUgcmVnZXggb3BzLlwiXG4gW3NwZWNdXG4gKGxldFxuICBbc3BlYyAoZGVsYXkgKHNwZWNpemUgc3BlYykpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qXG4gICAgW18geF1cbiAgICAobGV0XG4gICAgIFtyZXQgKGNvbmZvcm0qIEBzcGVjIHgpXVxuICAgICAoaWYgKGludmFsaWQ/IHJldCkgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkIHgpKSlcbiAgICh1bmZvcm0qIFtfIHhdICh1bmZvcm0qIEBzcGVjIHgpKVxuICAgKGV4cGxhaW4qIFtfIHBhdGggdmlhIGluIHhdIChleHBsYWluKiBAc3BlYyBwYXRoIHZpYSBpbiB4KSlcbiAgIChnZW4qIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdIChnZW4qIEBzcGVjIG92ZXJyaWRlcyBwYXRoIHJtYXApKVxuICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChub25jb25mb3JtaW5nICh3aXRoLWdlbiogQHNwZWMgZ2ZuKSkpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9ub25jb25mb3JtaW5nKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAoZGVzY3JpYmUqIEBzcGVjKSkpKSkpKSkpXG4ifSB7OnN5bSB1bmZvcm0qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgeV0pfSwgOnByb3RvY29sIFNwZWN9IHs6c3ltIGFiYnJldiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFiYnJldlxuIFtmb3JtXVxuIChjb25kXG4gIChzZXE/IGZvcm0pXG4gICh3YWxrL3Bvc3R3YWxrXG4gICAoZm5cbiAgICBbZm9ybV1cbiAgICAoY29uZFxuICAgICAoYy9hbmQgKHN5bWJvbD8gZm9ybSkgKG5hbWVzcGFjZSBmb3JtKSlcbiAgICAgKC0+IGZvcm0gbmFtZSBzeW1ib2wpXG4gICAgIChjL2FuZCAoc2VxPyBmb3JtKSAoPSAnZm4gKGZpcnN0IGZvcm0pKSAoPSAnWyVdIChzZWNvbmQgZm9ybSkpKVxuICAgICAobGFzdCBmb3JtKVxuICAgICA6ZWxzZVxuICAgICBmb3JtKSlcbiAgIGZvcm0pXG4gIChjL2FuZCAoc3ltYm9sPyBmb3JtKSAobmFtZXNwYWNlIGZvcm0pKVxuICAoLT4gZm9ybSBuYW1lIHN5bWJvbClcbiAgOmVsc2VcbiAgZm9ybSkpXG4ifSB7OnN5bSByZWdleD8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHggaWYgeCBpcyBhIChjbGpzLnNwZWMuYWxwaGEpIHJlZ2V4IG9wLCBlbHNlIGxvZ2ljYWwgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2V4P1xuIFwicmV0dXJucyB4IGlmIHggaXMgYSAoY2xqcy5zcGVjLmFscGhhKSByZWdleCBvcCwgZWxzZSBsb2dpY2FsIGZhbHNlXCJcbiBbeF1cbiAoYy9hbmQgKDpjbGpzLnNwZWMuYWxwaGEvb3AgeCkgeCkpXG4ifSB7OnN5bSBpbnQtaW4tcmFuZ2U/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgc3RhcnQgPD0gdmFsLCB2YWwgPCBlbmQgYW5kIHZhbCBpcyBhIGZpeGVkXG4gIHByZWNpc2lvbiBpbnRlZ2VyLiIsIDphcmdsaXN0cyAoW3N0YXJ0IGVuZCB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW50LWluLXJhbmdlP1xuIFwiUmV0dXJuIHRydWUgaWYgc3RhcnQgPD0gdmFsLCB2YWwgPCBlbmQgYW5kIHZhbCBpcyBhIGZpeGVkXFxuICBwcmVjaXNpb24gaW50ZWdlci5cIlxuIFtzdGFydCBlbmQgdmFsXVxuIChjb25kXG4gIChpbnRlZ2VyPyB2YWwpXG4gIChjL2FuZCAoPD0gc3RhcnQgdmFsKSAoPCB2YWwgZW5kKSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB2YWwpXG4gIChjL2FuZCAoLmxlc3NUaGFuT3JFcXVhbCBzdGFydCB2YWwpICgubGVzc1RoYW4gdmFsIGVuZCkpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgdmFsKVxuICAoYy9hbmQgKC5sZXNzVGhhbk9yRXF1YWwgc3RhcnQgdmFsKSAoLmxlc3NUaGFuIHZhbCBlbmQpKVxuICA6ZWxzZVxuICBmYWxzZSkpXG4ifSB7OnN5bSBzcGVjPywgOm1ldGEgezpkb2MgInJldHVybnMgeCBpZiB4IGlzIGEgc3BlYyBvYmplY3QsIGVsc2UgbG9naWNhbCBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BlYz9cbiBcInJldHVybnMgeCBpZiB4IGlzIGEgc3BlYyBvYmplY3QsIGVsc2UgbG9naWNhbCBmYWxzZVwiXG4gW3hdXG4gKHdoZW4gKGltcGxlbWVudHM/IFNwZWMgeCkgeCkpXG4ifSB7OnN5bSByZWdpc3RyeSwgOm1ldGEgezpkb2MgInJldHVybnMgdGhlIHJlZ2lzdHJ5IG1hcCwgcHJlZmVyICdnZXQtc3BlYycgdG8gbG9va3VwIGEgc3BlYyBieSBuYW1lIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2lzdHJ5XG4gXCJyZXR1cm5zIHRoZSByZWdpc3RyeSBtYXAsIHByZWZlciAnZ2V0LXNwZWMnIHRvIGxvb2t1cCBhIHNwZWMgYnkgbmFtZVwiXG4gW11cbiBAcmVnaXN0cnktcmVmKVxuIn0gezpzeW0gcmVwK2ltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJysnIiwgOmFyZ2xpc3RzIChbZm9ybSBwXSl9LCA6c291cmNlICIoZGVmblxuIHJlcCtpbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJysnXCJcbiBbZm9ybSBwXVxuIChwY2F0KlxuICB7OnBzIFtwIChyZXAqIHAgcCBbXSB0cnVlIGZvcm0pXSxcbiAgIDpmb3Jtc1xuICAgKGNsb2p1cmUuY29yZS92ZWNcbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCBmb3JtKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhLyopXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCBmb3JtKSkpKSkpKSkpLFxuICAgOnJldCBbXSxcbiAgIDpyZXArIGZvcm19KSlcbiJ9IHs6c3ltIGV4ZXJjaXNlLCA6bWV0YSB7OmRvYyAiZ2VuZXJhdGVzIGEgbnVtYmVyIChkZWZhdWx0IDEwKSBvZiB2YWx1ZXMgY29tcGF0aWJsZSB3aXRoIHNwZWMgYW5kIG1hcHMgY29uZm9ybSBvdmVyIHRoZW0sXG4gIHJldHVybmluZyBhIHNlcXVlbmNlIG9mIFt2YWwgY29uZm9ybWVkLXZhbF0gdHVwbGVzLiBPcHRpb25hbGx5IHRha2VzXG4gIGEgZ2VuZXJhdG9yIG92ZXJyaWRlcyBtYXAgYXMgcGVyIGdlbiIsIDphcmdsaXN0cyBbW3NwZWNdIFtzcGVjIG5dIFtzcGVjIG4gb3ZlcnJpZGVzXV19LCA6c291cmNlICIoZGVmblxuIGV4ZXJjaXNlXG4gXCJnZW5lcmF0ZXMgYSBudW1iZXIgKGRlZmF1bHQgMTApIG9mIHZhbHVlcyBjb21wYXRpYmxlIHdpdGggc3BlYyBhbmQgbWFwcyBjb25mb3JtIG92ZXIgdGhlbSxcXG4gIHJldHVybmluZyBhIHNlcXVlbmNlIG9mIFt2YWwgY29uZm9ybWVkLXZhbF0gdHVwbGVzLiBPcHRpb25hbGx5IHRha2VzXFxuICBhIGdlbmVyYXRvciBvdmVycmlkZXMgbWFwIGFzIHBlciBnZW5cIlxuIChbc3BlY10gKGV4ZXJjaXNlIHNwZWMgMTApKVxuIChbc3BlYyBuXSAoZXhlcmNpc2Ugc3BlYyBuIG5pbCkpXG4gKFtzcGVjIG4gb3ZlcnJpZGVzXVxuICAobWFwXG4gICAoZm4qIFtwMV9fNDUzMzQjXSAodmVjdG9yIHAxX180NTMzNCMgKGNvbmZvcm0gc3BlYyBwMV9fNDUzMzQjKSkpXG4gICAoZ2VuL3NhbXBsZSAoZ2VuIHNwZWMgb3ZlcnJpZGVzKSBuKSkpKVxuIn0gezpzeW0gZXhwbGFpbi1kYXRhLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHggd2hpY2ggb3VnaHQgdG8gY29uZm9ybSwgcmV0dXJucyBuaWwgaWYgeFxuICBjb25mb3JtcywgZWxzZSBhIG1hcCB3aXRoIGF0IGxlYXN0IHRoZSBrZXkgOjpwcm9ibGVtcyB3aG9zZSB2YWx1ZSBpc1xuICBhIGNvbGxlY3Rpb24gb2YgcHJvYmxlbS1tYXBzLCB3aGVyZSBwcm9ibGVtLW1hcCBoYXMgYXQgbGVhc3QgOnBhdGggOnByZWQgYW5kIDp2YWxcbiAga2V5cyBkZXNjcmliaW5nIHRoZSBwcmVkaWNhdGUgYW5kIHRoZSB2YWx1ZSB0aGF0IGZhaWxlZCBhdCB0aGF0XG4gIHBhdGguIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tZGF0YVxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHggd2hpY2ggb3VnaHQgdG8gY29uZm9ybSwgcmV0dXJucyBuaWwgaWYgeFxcbiAgY29uZm9ybXMsIGVsc2UgYSBtYXAgd2l0aCBhdCBsZWFzdCB0aGUga2V5IDo6cHJvYmxlbXMgd2hvc2UgdmFsdWUgaXNcXG4gIGEgY29sbGVjdGlvbiBvZiBwcm9ibGVtLW1hcHMsIHdoZXJlIHByb2JsZW0tbWFwIGhhcyBhdCBsZWFzdCA6cGF0aCA6cHJlZCBhbmQgOnZhbFxcbiAga2V5cyBkZXNjcmliaW5nIHRoZSBwcmVkaWNhdGUgYW5kIHRoZSB2YWx1ZSB0aGF0IGZhaWxlZCBhdCB0aGF0XFxuICBwYXRoLlwiXG4gW3NwZWMgeF1cbiAoZXhwbGFpbi1kYXRhKlxuICBzcGVjXG4gIFtdXG4gIChpZi1sZXQgW25hbWUgKHNwZWMtbmFtZSBzcGVjKV0gW25hbWVdIFtdKVxuICBbXVxuICB4KSlcbiJ9IHs6c3ltIHR1cGxlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3R1cGxlJyIsIDphcmdsaXN0cyBbW2Zvcm1zIHByZWRzXSBbZm9ybXMgcHJlZHMgZ2ZuXV19LCA6c291cmNlICIoZGVmblxuIHR1cGxlLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAndHVwbGUnXCJcbiAoW2Zvcm1zIHByZWRzXSAodHVwbGUtaW1wbCBmb3JtcyBwcmVkcyBuaWwpKVxuIChbZm9ybXMgcHJlZHMgZ2ZuXVxuICAobGV0XG4gICBbc3BlY3MgKGRlbGF5IChtYXB2IHNwZWNpemUgcHJlZHMgZm9ybXMpKSBjbnQgKGNvdW50IHByZWRzKV1cbiAgIChyZWlmeVxuICAgIFNwZWNpemVcbiAgICAoc3BlY2l6ZSogW3NdIHMpXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICAgU3BlY1xuICAgIChjb25mb3JtKlxuICAgICBbXyB4XVxuICAgICAobGV0XG4gICAgICBbc3BlY3MgQHNwZWNzXVxuICAgICAgKGlmLW5vdFxuICAgICAgIChjL2FuZCAodmVjdG9yPyB4KSAoPSAoY291bnQgeCkgY250KSlcbiAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAobG9vcFxuICAgICAgICBbcmV0IHggaSAwXVxuICAgICAgICAoaWZcbiAgICAgICAgICg9IGkgY250KVxuICAgICAgICAgcmV0XG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKHggaSkgY3YgKGNvbmZvcm0qIChzcGVjcyBpKSB2KV1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKGludmFsaWQ/IGN2KVxuICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAoaWYgKGlkZW50aWNhbD8gY3YgdikgcmV0IChhc3NvYyByZXQgaSBjdikpXG4gICAgICAgICAgICAoaW5jIGkpKSkpKSkpKSlcbiAgICAodW5mb3JtKlxuICAgICBbXyB4XVxuICAgICAoYXNzZXJ0IChjL2FuZCAodmVjdG9yPyB4KSAoPSAoY291bnQgeCkgKGNvdW50IHByZWRzKSkpKVxuICAgICAobG9vcFxuICAgICAgW3JldCB4IGkgMF1cbiAgICAgIChpZlxuICAgICAgICg9IGkgKGNvdW50IHgpKVxuICAgICAgIHJldFxuICAgICAgIChsZXRcbiAgICAgICAgW2N2ICh4IGkpIHYgKHVuZm9ybSAocHJlZHMgaSkgY3YpXVxuICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGkgdikpIChpbmMgaSkpKSkpKVxuICAgIChleHBsYWluKlxuICAgICBbXyBwYXRoIHZpYSBpbiB4XVxuICAgICAoY29uZFxuICAgICAgKG5vdCAodmVjdG9yPyB4KSlcbiAgICAgIFt7OnBhdGggcGF0aCxcbiAgICAgICAgOnByZWQgJ2Nsb2p1cmUuY29yZS92ZWN0b3I/LFxuICAgICAgICA6dmFsIHgsXG4gICAgICAgIDp2aWEgdmlhLFxuICAgICAgICA6aW4gaW59XVxuICAgICAgKG5vdD0gKGNvdW50IHgpIChjb3VudCBwcmVkcykpXG4gICAgICBbezpwYXRoIHBhdGgsXG4gICAgICAgIDpwcmVkXG4gICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvPSlcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL2NvdW50KVxuICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSlcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChjb3VudCBwcmVkcykpKSkpLFxuICAgICAgICA6dmFsIHgsXG4gICAgICAgIDp2aWEgdmlhLFxuICAgICAgICA6aW4gaW59XVxuICAgICAgOmVsc2VcbiAgICAgIChhcHBseVxuICAgICAgIGNvbmNhdFxuICAgICAgIChtYXBcbiAgICAgICAgKGZuXG4gICAgICAgICBbaSBmb3JtIHByZWRdXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKHggaSldXG4gICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgIChwdmFsaWQ/IHByZWQgdilcbiAgICAgICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgKGNvbmogcGF0aCBpKSB2aWEgKGNvbmogaW4gaSkgdikpKSlcbiAgICAgICAgKHJhbmdlIChjb3VudCBwcmVkcykpXG4gICAgICAgIGZvcm1zXG4gICAgICAgIHByZWRzKSkpKVxuICAgIChnZW4qXG4gICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgIChpZlxuICAgICAgZ2ZuXG4gICAgICAoZ2ZuKVxuICAgICAgKGxldFxuICAgICAgIFtnZW5cbiAgICAgICAgKGZuIFtpIHAgZl0gKGdlbnN1YiBwIG92ZXJyaWRlcyAoY29uaiBwYXRoIGkpIHJtYXAgZikpXG4gICAgICAgIGdzXG4gICAgICAgIChtYXAgZ2VuIChyYW5nZSAoY291bnQgcHJlZHMpKSBwcmVkcyBmb3JtcyldXG4gICAgICAgKHdoZW4gKGV2ZXJ5PyBpZGVudGl0eSBncykgKGFwcGx5IGdlbi90dXBsZSBncykpKSkpXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dICh0dXBsZS1pbXBsIGZvcm1zIHByZWRzIGdmbikpXG4gICAgKGRlc2NyaWJlKlxuICAgICBbX11cbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS90dXBsZSlcbiAgICAgICAgZm9ybXMpKSkpKSkpKVxuIn0gezpzeW0gbXVsdGktc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdtdWx0aS1zcGVjJyIsIDphcmdsaXN0cyBbW2Zvcm0gbW12YXIgcmV0YWddIFtmb3JtIG1tdmFyIHJldGFnIGdmbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtdWx0aS1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbXVsdGktc3BlYydcIlxuIChbZm9ybSBtbXZhciByZXRhZ10gKG11bHRpLXNwZWMtaW1wbCBmb3JtIG1tdmFyIHJldGFnIG5pbCkpXG4gKFtmb3JtIG1tdmFyIHJldGFnIGdmbl1cbiAgKGxldFxuICAgW2lkXG4gICAgKHJhbmRvbS11dWlkKVxuICAgIHByZWR4XG4gICAgKGZuKlxuICAgICBbcDFfXzQ1MzA0I11cbiAgICAgKGxldFxuICAgICAgW21tIEBtbXZhcl1cbiAgICAgIChjL2FuZFxuICAgICAgICgtZ2V0LW1ldGhvZCBtbSAoKC1kaXNwYXRjaC1mbiBtbSkgcDFfXzQ1MzA0IykpXG4gICAgICAgKG1tIHAxX180NTMwNCMpKSkpXG4gICAgZHZhbFxuICAgIChmbiogW3AxX180NTMwNSNdICgoLWRpc3BhdGNoLWZuIEBtbXZhcikgcDFfXzQ1MzA1IykpXG4gICAgdGFnXG4gICAgKGlmXG4gICAgIChrZXl3b3JkPyByZXRhZylcbiAgICAgKGZuKiBbcDFfXzQ1MzA2IyBwMl9fNDUzMDcjXSAoYXNzb2MgcDFfXzQ1MzA2IyByZXRhZyBwMl9fNDUzMDcjKSlcbiAgICAgcmV0YWcpXVxuICAgKHJlaWZ5XG4gICAgU3BlY2l6ZVxuICAgIChzcGVjaXplKiBbc10gcylcbiAgICAoc3BlY2l6ZSogW3MgX10gcylcbiAgICBTcGVjXG4gICAgKGNvbmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChpZi1sZXRcbiAgICAgIFtwcmVkIChwcmVkeCB4KV1cbiAgICAgIChkdCBwcmVkIHggZm9ybSlcbiAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICAgKHVuZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGlmLWxldFxuICAgICAgW3ByZWQgKHByZWR4IHgpXVxuICAgICAgKHVuZm9ybSBwcmVkIHgpXG4gICAgICAodGhyb3dcbiAgICAgICAoanMvRXJyb3IuXG4gICAgICAgIChzdHJcbiAgICAgICAgIFwiTm8gbWV0aG9kIG9mOiBcIlxuICAgICAgICAgZm9ybVxuICAgICAgICAgXCIgZm9yIGRpc3BhdGNoIHZhbHVlOiBcIlxuICAgICAgICAgKGR2YWwgeCkpKSkpKVxuICAgIChleHBsYWluKlxuICAgICBbXyBwYXRoIHZpYSBpbiB4XVxuICAgICAobGV0XG4gICAgICBbZHYgKGR2YWwgeCkgcGF0aCAoY29uaiBwYXRoIGR2KV1cbiAgICAgIChpZi1sZXRcbiAgICAgICBbcHJlZCAocHJlZHggeCldXG4gICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgcGF0aCB2aWEgaW4geClcbiAgICAgICBbezpwYXRoIHBhdGgsXG4gICAgICAgICA6cHJlZCBmb3JtLFxuICAgICAgICAgOnZhbCB4LFxuICAgICAgICAgOnJlYXNvbiBcIm5vIG1ldGhvZFwiLFxuICAgICAgICAgOnZpYSB2aWEsXG4gICAgICAgICA6aW4gaW59XSkpKVxuICAgIChnZW4qXG4gICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgIChpZlxuICAgICAgZ2ZuXG4gICAgICAoZ2ZuKVxuICAgICAgKGxldFxuICAgICAgIFtnZW5cbiAgICAgICAgKGZuXG4gICAgICAgICBbW2sgZl1dXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3AgKGYgbmlsKV1cbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtybWFwIChpbmNrIHJtYXAgaWQpXVxuICAgICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAgIChyZWN1ci1saW1pdD8gcm1hcCBpZCBwYXRoIGspXG4gICAgICAgICAgICAoZ2VuL2RlbGF5XG4gICAgICAgICAgICAgKGdlbi9mbWFwXG4gICAgICAgICAgICAgIChmbiogW3AxX180NTMwOCNdICh0YWcgcDFfXzQ1MzA4IyBrKSlcbiAgICAgICAgICAgICAgKGdlbnN1YlxuICAgICAgICAgICAgICAgcFxuICAgICAgICAgICAgICAgb3ZlcnJpZGVzXG4gICAgICAgICAgICAgICAoY29uaiBwYXRoIGspXG4gICAgICAgICAgICAgICBybWFwXG4gICAgICAgICAgICAgICAobGlzdCAnbWV0aG9kIGZvcm0gaykpKSkpKSkpXG4gICAgICAgIGdzXG4gICAgICAgICgtPj5cbiAgICAgICAgIChtZXRob2RzIEBtbXZhcilcbiAgICAgICAgIChyZW1vdmUgKGZuIFtba11dIChpbnZhbGlkPyBrKSkpXG4gICAgICAgICAobWFwIGdlbilcbiAgICAgICAgIChyZW1vdmUgbmlsPykpXVxuICAgICAgICh3aGVuIChldmVyeT8gaWRlbnRpdHkgZ3MpIChnZW4vb25lLW9mIGdzKSkpKSlcbiAgICAod2l0aC1nZW4qIFtfIGdmbl0gKG11bHRpLXNwZWMtaW1wbCBmb3JtIG1tdmFyIHJldGFnIGdmbikpXG4gICAgKGRlc2NyaWJlKlxuICAgICBbX11cbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9tdWx0aS1zcGVjKVxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgZm9ybSlcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHJldGFnKSkpKSkpKSkpXG4ifSB7OnN5bSBjb25mb3JtLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlLCByZXR1cm5zIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCBpZiB2YWx1ZSBkb2VzXG4gIG5vdCBtYXRjaCBzcGVjLCBlbHNlIHRoZSAocG9zc2libHkgZGVzdHJ1Y3R1cmVkKSB2YWx1ZS4iLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZm9ybVxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlLCByZXR1cm5zIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCBpZiB2YWx1ZSBkb2VzXFxuICBub3QgbWF0Y2ggc3BlYywgZWxzZSB0aGUgKHBvc3NpYmx5IGRlc3RydWN0dXJlZCkgdmFsdWUuXCJcbiBbc3BlYyB4XVxuIChjb25mb3JtKiAoc3BlY2l6ZSBzcGVjKSB4KSlcbiJ9IHs6c3ltIGdlbiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBvdmVycmlkZXMgcGF0aCBybWFwXSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gZnNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZnNwZWMnIiwgOmFyZ2xpc3RzIChbYXJnc3BlYyBhZm9ybSByZXRzcGVjIHJmb3JtIGZuc3BlYyBmZm9ybSBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gZnNwZWMtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdmc3BlYydcIlxuIFthcmdzcGVjIGFmb3JtIHJldHNwZWMgcmZvcm0gZm5zcGVjIGZmb3JtIGdmbl1cbiAobGV0XG4gIFtzcGVjcyB7OmFyZ3MgYXJnc3BlYywgOnJldCByZXRzcGVjLCA6Zm4gZm5zcGVjfV1cbiAgKHJlaWZ5XG4gICBJTG9va3VwXG4gICAoLWxvb2t1cCBbdGhpcyBrXSAoZ2V0IHNwZWNzIGspKVxuICAgKC1sb29rdXAgW18gayBub3QtZm91bmRdIChnZXQgc3BlY3MgayBub3QtZm91bmQpKVxuICAgU3BlY2l6ZVxuICAgKHNwZWNpemUqIFtzXSBzKVxuICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICBTcGVjXG4gICAoY29uZm9ybSpcbiAgICBbXyBmXVxuICAgIChpZlxuICAgICAoaWZuPyBmKVxuICAgICAoaWZcbiAgICAgIChpZGVudGljYWw/IGYgKHZhbGlkYXRlLWZuIGYgc3BlY3MgKmZzcGVjLWl0ZXJhdGlvbnMqKSlcbiAgICAgIGZcbiAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZClcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSlcbiAgICh1bmZvcm0qIFtfIGZdIGYpXG4gICAoZXhwbGFpbipcbiAgICBbXyBwYXRoIHZpYSBpbiBmXVxuICAgIChpZlxuICAgICAoaWZuPyBmKVxuICAgICAobGV0XG4gICAgICBbYXJncyAodmFsaWRhdGUtZm4gZiBzcGVjcyAxMDApXVxuICAgICAgKGlmXG4gICAgICAgKGlkZW50aWNhbD8gZiBhcmdzKVxuICAgICAgIG5pbFxuICAgICAgIChsZXRcbiAgICAgICAgW3JldCAodHJ5IChhcHBseSBmIGFyZ3MpIChjYXRjaCBqcy9FcnJvciB0IHQpKV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW5zdGFuY2U/IGpzL0Vycm9yIHJldClcbiAgICAgICAgIFt7OnBhdGggcGF0aCxcbiAgICAgICAgICAgOnByZWQgJyhhcHBseSBmbiksXG4gICAgICAgICAgIDp2YWwgYXJncyxcbiAgICAgICAgICAgOnJlYXNvbiAoLi1tZXNzYWdlIHJldCksXG4gICAgICAgICAgIDp2aWEgdmlhLFxuICAgICAgICAgICA6aW4gaW59XVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtjcmV0IChkdCByZXRzcGVjIHJldCByZm9ybSldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyBjcmV0KVxuICAgICAgICAgICAoZXhwbGFpbi0xIHJmb3JtIHJldHNwZWMgKGNvbmogcGF0aCA6cmV0KSB2aWEgaW4gcmV0KVxuICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgZm5zcGVjXG4gICAgICAgICAgICAobGV0XG4gICAgICAgICAgICAgW2NhcmdzIChjb25mb3JtIGFyZ3NwZWMgYXJncyldXG4gICAgICAgICAgICAgKGV4cGxhaW4tMVxuICAgICAgICAgICAgICBmZm9ybVxuICAgICAgICAgICAgICBmbnNwZWNcbiAgICAgICAgICAgICAgKGNvbmogcGF0aCA6Zm4pXG4gICAgICAgICAgICAgIHZpYVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB7OmFyZ3MgY2FyZ3MsIDpyZXQgY3JldH0pKSkpKSkpKSlcbiAgICAgW3s6cGF0aCBwYXRoLCA6cHJlZCAnaWZuPywgOnZhbCBmLCA6dmlhIHZpYSwgOmluIGlufV0pKVxuICAgKGdlbipcbiAgICBbXyBvdmVycmlkZXMgXyBfXVxuICAgIChpZlxuICAgICBnZm5cbiAgICAgKGdmbilcbiAgICAgKGdlbi9yZXR1cm5cbiAgICAgIChmblxuICAgICAgIFsmIGFyZ3NdXG4gICAgICAgKGFzc2VydFxuICAgICAgICAocHZhbGlkPyBhcmdzcGVjIGFyZ3MpXG4gICAgICAgICh3aXRoLW91dC1zdHIgKGV4cGxhaW4gYXJnc3BlYyBhcmdzKSkpXG4gICAgICAgKGdlbi9nZW5lcmF0ZSAoZ2VuIHJldHNwZWMgb3ZlcnJpZGVzKSkpKSkpXG4gICAod2l0aC1nZW4qXG4gICAgW18gZ2ZuXVxuICAgIChmc3BlYy1pbXBsIGFyZ3NwZWMgYWZvcm0gcmV0c3BlYyByZm9ybSBmbnNwZWMgZmZvcm0gZ2ZuKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL2ZzcGVjKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCA6YXJncylcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgYWZvcm0pXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IDpyZXQpXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHJmb3JtKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCA6Zm4pXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGZmb3JtKSkpKSkpKSlcbiJ9IHs6c3ltICpjb2xsLWNoZWNrLWxpbWl0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqY29sbC1jaGVjay1saW1pdCpcbiBcIlRoZSBudW1iZXIgb2YgaXRlbXMgdmFsaWRhdGVkIGluIGEgY29sbGVjdGlvbiBzcGVjJ2VkIHdpdGggJ2V2ZXJ5J1wiXG4gMTAxKVxuIn0gezpzeW0gZ2V0LXNwZWMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHNwZWMgcmVnaXN0ZXJlZCBmb3Iga2V5d29yZC9zeW1ib2wvdmFyIGssIG9yIG5pbC4iLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zcGVjXG4gXCJSZXR1cm5zIHNwZWMgcmVnaXN0ZXJlZCBmb3Iga2V5d29yZC9zeW1ib2wvdmFyIGssIG9yIG5pbC5cIlxuIFtrXVxuIChnZXQgKHJlZ2lzdHJ5KSAoaWYgKGtleXdvcmQ/IGspIGsgKC0+c3ltIGspKSkpXG4ifSB7OnN5bSBldmVyeS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdldmVyeScsICdldmVyeS1rdicsICdjb2xsLW9mJyBvciAnbWFwLW9mJyIsIDphcmdsaXN0cyBbW2Zvcm0gcHJlZCBvcHRzXSBbZm9ybSBwcmVkIHtjb25mb3JtLWludG8gOmludG8sIGRlc2NyaWJlLWZvcm0gOmNsanMuc3BlYy5hbHBoYS9kZXNjcmliZSwgOmtleXMgW2tpbmQgOmNsanMuc3BlYy5hbHBoYS9raW5kLWZvcm0gY291bnQgbWF4LWNvdW50IG1pbi1jb3VudCBkaXN0aW5jdCBnZW4tbWF4IDpjbGpzLnNwZWMuYWxwaGEva2ZuIDpjbGpzLnNwZWMuYWxwaGEvY3ByZWQgY29uZm9ybS1rZXlzIDpjbGpzLnNwZWMuYWxwaGEvY29uZm9ybS1hbGxdLCA6b3Ige2dlbi1tYXggMjB9LCA6YXMgb3B0c30gZ2ZuXV19LCA6c291cmNlICIoZGVmblxuIGV2ZXJ5LWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZXZlcnknLCAnZXZlcnkta3YnLCAnY29sbC1vZicgb3IgJ21hcC1vZidcIlxuIChbZm9ybSBwcmVkIG9wdHNdIChldmVyeS1pbXBsIGZvcm0gcHJlZCBvcHRzIG5pbCkpXG4gKFtmb3JtXG4gICBwcmVkXG4gICB7Y29uZm9ybS1pbnRvIDppbnRvLFxuICAgIGRlc2NyaWJlLWZvcm0gOmNsanMuc3BlYy5hbHBoYS9kZXNjcmliZSxcbiAgICA6a2V5c1xuICAgIFtraW5kXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEva2luZC1mb3JtXG4gICAgIGNvdW50XG4gICAgIG1heC1jb3VudFxuICAgICBtaW4tY291bnRcbiAgICAgZGlzdGluY3RcbiAgICAgZ2VuLW1heFxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2tmblxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2NwcmVkXG4gICAgIGNvbmZvcm0ta2V5c1xuICAgICA6Y2xqcy5zcGVjLmFscGhhL2NvbmZvcm0tYWxsXSxcbiAgICA6b3Ige2dlbi1tYXggMjB9LFxuICAgIDphcyBvcHRzfVxuICAgZ2ZuXVxuICAobGV0XG4gICBbZ2VuLWludG9cbiAgICAoaWYgY29uZm9ybS1pbnRvIChlbXB0eSBjb25mb3JtLWludG8pIChnZXQgZW1wdHktY29sbCBraW5kLWZvcm0pKVxuICAgIHNwZWNcbiAgICAoZGVsYXkgKHNwZWNpemUgcHJlZCkpXG4gICAgY2hlY2s/XG4gICAgKGZuKiBbcDFfXzQ1MzE5I10gKHZhbGlkPyBAc3BlYyBwMV9fNDUzMTkjKSlcbiAgICBrZm5cbiAgICAoYy9vciBrZm4gKGZuIFtpIHZdIGkpKVxuICAgIGFkZGN2XG4gICAgKGZuIFtyZXQgaSB2IGN2XSAoY29uaiByZXQgY3YpKVxuICAgIGNmbnNcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChjb25kXG4gICAgICAoYy9hbmRcbiAgICAgICAodmVjdG9yPyB4KVxuICAgICAgIChjL29yIChub3QgY29uZm9ybS1pbnRvKSAodmVjdG9yPyBjb25mb3JtLWludG8pKSlcbiAgICAgIFtpZGVudGl0eVxuICAgICAgIChmbiBbcmV0IGkgdiBjdl0gKGlmIChpZGVudGljYWw/IHYgY3YpIHJldCAoYXNzb2MgcmV0IGkgY3YpKSlcbiAgICAgICBpZGVudGl0eV1cbiAgICAgIChjL2FuZFxuICAgICAgIChtYXA/IHgpXG4gICAgICAgKGMvb3IgKGMvYW5kIGtpbmQgKG5vdCBjb25mb3JtLWludG8pKSAobWFwPyBjb25mb3JtLWludG8pKSlcbiAgICAgIFsoaWYgY29uZm9ybS1rZXlzIGVtcHR5IGlkZW50aXR5KVxuICAgICAgIChmblxuICAgICAgICBbcmV0IGkgdiBjdl1cbiAgICAgICAgKGlmXG4gICAgICAgICAoYy9hbmQgKGlkZW50aWNhbD8gdiBjdikgKG5vdCBjb25mb3JtLWtleXMpKVxuICAgICAgICAgcmV0XG4gICAgICAgICAoYXNzb2MgcmV0IChudGggKGlmIGNvbmZvcm0ta2V5cyBjdiB2KSAwKSAobnRoIGN2IDEpKSkpXG4gICAgICAgaWRlbnRpdHldXG4gICAgICAoYy9vclxuICAgICAgIChsaXN0PyBjb25mb3JtLWludG8pXG4gICAgICAgKHNlcT8gY29uZm9ybS1pbnRvKVxuICAgICAgIChjL2FuZCAobm90IGNvbmZvcm0taW50bykgKGMvb3IgKGxpc3Q/IHgpIChzZXE/IHgpKSkpXG4gICAgICBbZW1wdHkgYWRkY3YgcmV2ZXJzZV1cbiAgICAgIDplbHNlXG4gICAgICBbKGZuKiBbcDFfXzQ1MzIwI10gKGVtcHR5IChjL29yIGNvbmZvcm0taW50byBwMV9fNDUzMjAjKSkpXG4gICAgICAgYWRkY3ZcbiAgICAgICBpZGVudGl0eV0pKV1cbiAgIChyZWlmeVxuICAgIFNwZWNpemVcbiAgICAoc3BlY2l6ZSogW3NdIHMpXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICAgU3BlY1xuICAgIChjb25mb3JtKlxuICAgICBbXyB4XVxuICAgICAobGV0XG4gICAgICBbc3BlYyBAc3BlY11cbiAgICAgIChjb25kXG4gICAgICAgKG5vdCAoY3ByZWQgeCkpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgY29uZm9ybS1hbGxcbiAgICAgICAobGV0XG4gICAgICAgIFtbaW5pdCBhZGQgY29tcGxldGVdIChjZm5zIHgpXVxuICAgICAgICAobG9vcFxuICAgICAgICAgW3JldCAoaW5pdCB4KSBpIDAgW3YgJiB2cyA6YXMgdnNlcV0gKHNlcSB4KV1cbiAgICAgICAgIChpZlxuICAgICAgICAgIHZzZXFcbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtjdiAoY29uZm9ybSogc3BlYyB2KV1cbiAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAoaW52YWxpZD8gY3YpXG4gICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAgIChyZWN1ciAoYWRkIHJldCBpIHYgY3YpIChpbmMgaSkgdnMpKSlcbiAgICAgICAgICAoY29tcGxldGUgcmV0KSkpKVxuICAgICAgIDplbHNlXG4gICAgICAgKGlmXG4gICAgICAgIChpbmRleGVkPyB4KVxuICAgICAgICAobGV0XG4gICAgICAgICBbc3RlcCAobWF4IDEgKGxvbmcgKC8gKGMvY291bnQgeCkgKmNvbGwtY2hlY2stbGltaXQqKSkpXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbaSAwXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoPj0gaSAoYy9jb3VudCB4KSlcbiAgICAgICAgICAgeFxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICh2YWxpZD8gc3BlYyAobnRoIHggaSkpXG4gICAgICAgICAgICAocmVjdXIgKGMvKyBpIHN0ZXApKVxuICAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSkpKVxuICAgICAgICAobGV0XG4gICAgICAgICBbbGltaXQgKmNvbGwtY2hlY2stbGltaXQqXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbaSAwIFt2ICYgdnMgOmFzIHZzZXFdIChzZXEgeCldXG4gICAgICAgICAgKGNvbmRcbiAgICAgICAgICAgKGMvb3IgKG5pbD8gdnNlcSkgKD0gaSBsaW1pdCkpXG4gICAgICAgICAgIHhcbiAgICAgICAgICAgKHZhbGlkPyBzcGVjIHYpXG4gICAgICAgICAgIChyZWN1ciAoaW5jIGkpIHZzKVxuICAgICAgICAgICA6ZWxzZVxuICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKSkpKSkpXG4gICAgKHVuZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGlmXG4gICAgICBjb25mb3JtLWFsbFxuICAgICAgKGxldFxuICAgICAgIFtzcGVjIEBzcGVjIFtpbml0IGFkZCBjb21wbGV0ZV0gKGNmbnMgeCldXG4gICAgICAgKGxvb3BcbiAgICAgICAgW3JldCAoaW5pdCB4KSBpIDAgW3YgJiB2cyA6YXMgdnNlcV0gKHNlcSB4KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoPj0gaSAoYy9jb3VudCB4KSlcbiAgICAgICAgIChjb21wbGV0ZSByZXQpXG4gICAgICAgICAocmVjdXIgKGFkZCByZXQgaSB2ICh1bmZvcm0qIHNwZWMgdikpIChpbmMgaSkgdnMpKSkpXG4gICAgICB4KSlcbiAgICAoZXhwbGFpbipcbiAgICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAgKGMvb3JcbiAgICAgIChjb2xsLXByb2JcbiAgICAgICB4XG4gICAgICAga2luZFxuICAgICAgIGtpbmQtZm9ybVxuICAgICAgIGRpc3RpbmN0XG4gICAgICAgY291bnRcbiAgICAgICBtaW4tY291bnRcbiAgICAgICBtYXgtY291bnRcbiAgICAgICBwYXRoXG4gICAgICAgdmlhXG4gICAgICAgaW4pXG4gICAgICAoYXBwbHlcbiAgICAgICBjb25jYXRcbiAgICAgICAoKGlmIGNvbmZvcm0tYWxsIGlkZW50aXR5IChwYXJ0aWFsIHRha2UgKmNvbGwtZXJyb3ItbGltaXQqKSlcbiAgICAgICAgKGtlZXBcbiAgICAgICAgIGlkZW50aXR5XG4gICAgICAgICAobWFwXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFtpIHZdXG4gICAgICAgICAgIChsZXRcbiAgICAgICAgICAgIFtrIChrZm4gaSB2KV1cbiAgICAgICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgICAgIChjaGVjaz8gdilcbiAgICAgICAgICAgICAobGV0XG4gICAgICAgICAgICAgIFtwcm9iIChleHBsYWluLTEgZm9ybSBwcmVkIHBhdGggdmlhIChjb25qIGluIGspIHYpXVxuICAgICAgICAgICAgICBwcm9iKSkpKVxuICAgICAgICAgIChyYW5nZSlcbiAgICAgICAgICB4KSkpKSkpXG4gICAgKGdlbipcbiAgICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAgKGlmXG4gICAgICBnZm5cbiAgICAgIChnZm4pXG4gICAgICAobGV0XG4gICAgICAgW3BnZW4gKGdlbnN1YiBwcmVkIG92ZXJyaWRlcyBwYXRoIHJtYXAgZm9ybSldXG4gICAgICAgKGdlbi9iaW5kXG4gICAgICAgIChjb25kXG4gICAgICAgICBnZW4taW50b1xuICAgICAgICAgKGdlbi9yZXR1cm4gZ2VuLWludG8pXG4gICAgICAgICBraW5kXG4gICAgICAgICAoZ2VuL2ZtYXBcbiAgICAgICAgICAoZm4qXG4gICAgICAgICAgIFtwMV9fNDUzMjEjXVxuICAgICAgICAgICAoaWYgKGVtcHR5PyBwMV9fNDUzMjEjKSBwMV9fNDUzMjEjIChlbXB0eSBwMV9fNDUzMjEjKSkpXG4gICAgICAgICAgKGdlbnN1YiBraW5kIG92ZXJyaWRlcyBwYXRoIHJtYXAgZm9ybSkpXG4gICAgICAgICA6ZWxzZVxuICAgICAgICAgKGdlbi9yZXR1cm4gW10pKVxuICAgICAgICAoZm5cbiAgICAgICAgIFtpbml0XVxuICAgICAgICAgKGdlbi9mbWFwXG4gICAgICAgICAgKGZuKlxuICAgICAgICAgICBbcDFfXzQ1MzIyI11cbiAgICAgICAgICAgKGlmICh2ZWN0b3I/IGluaXQpIHAxX180NTMyMiMgKGludG8gaW5pdCBwMV9fNDUzMjIjKSkpXG4gICAgICAgICAgKGNvbmRcbiAgICAgICAgICAgZGlzdGluY3RcbiAgICAgICAgICAgKGlmXG4gICAgICAgICAgICBjb3VudFxuICAgICAgICAgICAgKGdlbi92ZWN0b3ItZGlzdGluY3RcbiAgICAgICAgICAgICBwZ2VuXG4gICAgICAgICAgICAgezpudW0tZWxlbWVudHMgY291bnQsIDptYXgtdHJpZXMgMTAwfSlcbiAgICAgICAgICAgIChnZW4vdmVjdG9yLWRpc3RpbmN0XG4gICAgICAgICAgICAgcGdlblxuICAgICAgICAgICAgIHs6bWluLWVsZW1lbnRzIChjL29yIG1pbi1jb3VudCAwKSxcbiAgICAgICAgICAgICAgOm1heC1lbGVtZW50c1xuICAgICAgICAgICAgICAoYy9vclxuICAgICAgICAgICAgICAgbWF4LWNvdW50XG4gICAgICAgICAgICAgICAobWF4IGdlbi1tYXggKGMvKiAyIChjL29yIG1pbi1jb3VudCAwKSkpKSxcbiAgICAgICAgICAgICAgOm1heC10cmllcyAxMDB9KSlcbiAgICAgICAgICAgY291bnRcbiAgICAgICAgICAgKGdlbi92ZWN0b3IgcGdlbiBjb3VudClcbiAgICAgICAgICAgKGMvb3IgbWluLWNvdW50IG1heC1jb3VudClcbiAgICAgICAgICAgKGdlbi92ZWN0b3JcbiAgICAgICAgICAgIHBnZW5cbiAgICAgICAgICAgIChjL29yIG1pbi1jb3VudCAwKVxuICAgICAgICAgICAgKGMvb3IgbWF4LWNvdW50IChtYXggZ2VuLW1heCAoYy8qIDIgKGMvb3IgbWluLWNvdW50IDApKSkpKVxuICAgICAgICAgICA6ZWxzZVxuICAgICAgICAgICAoZ2VuL3ZlY3RvciBwZ2VuIDAgZ2VuLW1heCkpKSkpKSkpXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChldmVyeS1pbXBsIGZvcm0gcHJlZCBvcHRzIGdmbikpXG4gICAgKGRlc2NyaWJlKlxuICAgICBbX11cbiAgICAgKGMvb3JcbiAgICAgIGRlc2NyaWJlLWZvcm1cbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvZXZlcnkpXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKHMvbXJlcyBmb3JtKSlcbiAgICAgICAgIChtYXBjYXQgaWRlbnRpdHkgb3B0cykpKSkpKSkpKSlcbiJ9IHs6c3ltIHNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYyciLCA6YXJnbGlzdHMgW1tmb3JtIHByZWQgZ2ZuIGNwcmVkP10gW2Zvcm0gcHJlZCBnZm4gY3ByZWQ/IHVuY11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYydcIlxuIChbZm9ybSBwcmVkIGdmbiBjcHJlZD9dIChzcGVjLWltcGwgZm9ybSBwcmVkIGdmbiBjcHJlZD8gbmlsKSlcbiAoW2Zvcm0gcHJlZCBnZm4gY3ByZWQ/IHVuY11cbiAgKGNvbmRcbiAgIChzcGVjPyBwcmVkKVxuICAgKGNvbmQtPiBwcmVkIGdmbiAod2l0aC1nZW4gZ2ZuKSlcbiAgIChyZWdleD8gcHJlZClcbiAgIChyZWdleC1zcGVjLWltcGwgcHJlZCBnZm4pXG4gICAoaWRlbnQ/IHByZWQpXG4gICAoY29uZC0+ICh0aGUtc3BlYyBwcmVkKSBnZm4gKHdpdGgtZ2VuIGdmbikpXG4gICA6ZWxzZVxuICAgKHJlaWZ5XG4gICAgU3BlY2l6ZVxuICAgIChzcGVjaXplKiBbc10gcylcbiAgICAoc3BlY2l6ZSogW3MgX10gcylcbiAgICBTcGVjXG4gICAgKGNvbmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChsZXRcbiAgICAgIFtyZXQgKHByZWQgeCldXG4gICAgICAoaWYgY3ByZWQ/IHJldCAoaWYgcmV0IHggOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSkpKVxuICAgICh1bmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChpZlxuICAgICAgY3ByZWQ/XG4gICAgICAoaWYgdW5jICh1bmMgeCkgKHRocm93IChqcy9FcnJvci4gXCJubyB1bmZvcm0gZm4gZm9yIGNvbmZvcm1lclwiKSkpXG4gICAgICB4KSlcbiAgICAoZXhwbGFpbipcbiAgICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAgKHdoZW5cbiAgICAgIChpbnZhbGlkPyAoZHQgcHJlZCB4IGZvcm0gY3ByZWQ/KSlcbiAgICAgIFt7OnBhdGggcGF0aCwgOnByZWQgZm9ybSwgOnZhbCB4LCA6dmlhIHZpYSwgOmluIGlufV0pKVxuICAgIChnZW4qIFtfIF8gXyBfXSAoaWYgZ2ZuIChnZm4pIChnZW4vZ2VuLWZvci1wcmVkIHByZWQpKSlcbiAgICAod2l0aC1nZW4qIFtfIGdmbl0gKHNwZWMtaW1wbCBmb3JtIHByZWQgZ2ZuIGNwcmVkPyB1bmMpKVxuICAgIChkZXNjcmliZSogW19dIGZvcm0pKSkpKVxuIn0gezpzeW0gaW52YWxpZD8sIDptZXRhIHs6ZG9jICJ0ZXN0cyB0aGUgdmFsaWRpdHkgb2YgYSBjb25mb3JtIHJldHVybiB2YWx1ZSIsIDphcmdsaXN0cyAoW3JldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnZhbGlkP1xuIFwidGVzdHMgdGhlIHZhbGlkaXR5IG9mIGEgY29uZm9ybSByZXR1cm4gdmFsdWVcIlxuIFtyZXRdXG4gKGtleXdvcmQtaWRlbnRpY2FsPyA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQgcmV0KSlcbiJ9IHs6c3ltIGFtcC1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcmJyIsIDphcmdsaXN0cyAoW3JlIHJlLWZvcm0gcHJlZHMgcHJlZC1mb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbXAtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcmJ1wiXG4gW3JlIHJlLWZvcm0gcHJlZHMgcHJlZC1mb3Jtc11cbiB7OmNsanMuc3BlYy5hbHBoYS9vcCA6Y2xqcy5zcGVjLmFscGhhL2FtcCxcbiAgOnAxIHJlLFxuICA6YW1wIHJlLWZvcm0sXG4gIDpwcyBwcmVkcyxcbiAgOmZvcm1zIHByZWQtZm9ybXN9KVxuIn0gezpzeW0gY2F0LWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2NhdCciLCA6YXJnbGlzdHMgKFtrcyBwcyBmb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXQtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdjYXQnXCJcbiBba3MgcHMgZm9ybXNdXG4gKHBjYXQqIHs6a3Mga3MsIDpwcyBwcywgOmZvcm1zIGZvcm1zLCA6cmV0IHt9fSkpXG4ifSB7OnN5bSBleHBsYWluLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSB0aGF0IGZhaWxzIHRvIGNvbmZvcm0sIHJldHVybnMgYW4gZXhwbGFuYXRpb24gYXMgYSBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tc3RyXG4gXCJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgdGhhdCBmYWlscyB0byBjb25mb3JtLCByZXR1cm5zIGFuIGV4cGxhbmF0aW9uIGFzIGEgc3RyaW5nLlwiXG4gW3NwZWMgeF1cbiAod2l0aC1vdXQtc3RyIChleHBsYWluIHNwZWMgeCkpKVxuIn0gezpzeW0gKmNvbXBpbGUtYXNzZXJ0cyosIDptZXRhIHs6ZG9jICJJZiB0cnVlLCBjb21waWxlciB3aWxsIGVuYWJsZSBzcGVjIGFzc2VydHMsIHdoaWNoIGFyZSB0aGVuXG5zdWJqZWN0IHRvIHJ1bnRpbWUgY29udHJvbCB2aWEgY2hlY2stYXNzZXJ0cz8gSWYgZmFsc2UsIGNvbXBpbGVyXG53aWxsIGVsaW1pbmF0ZSBhbGwgc3BlYyBhc3NlcnQgb3ZlcmhlYWQuIFNlZSAnYXNzZXJ0Jy5cbkluaXRpYWxseSBzZXQgdG8gdGhlIG5lZ2F0aW9uIG9mIHRoZSAnOmVsaWRlLWFzc2VydHMnIGNvbXBpbGVyIG9wdGlvbi5cbkRlZmF1bHRzIHRvIHRydWUuIn0sIDpzb3VyY2UgIihkZWZvbmNlICpjb21waWxlLWFzc2VydHMqIChzL2luaXQtY29tcGlsZS1hc3NlcnRzKSlcbiJ9IHs6c3ltIHdpdGgtZ2VuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzcGVjIGFuZCBhIG5vLWFyZywgZ2VuZXJhdG9yLXJldHVybmluZyBmbiBhbmQgcmV0dXJucyBhIHZlcnNpb24gb2YgdGhhdCBzcGVjIHRoYXQgdXNlcyB0aGF0IGdlbmVyYXRvciIsIDphcmdsaXN0cyAoW3NwZWMgZ2VuLWZuXSl9LCA6c291cmNlICIoZGVmblxuIHdpdGgtZ2VuXG4gXCJUYWtlcyBhIHNwZWMgYW5kIGEgbm8tYXJnLCBnZW5lcmF0b3ItcmV0dXJuaW5nIGZuIGFuZCByZXR1cm5zIGEgdmVyc2lvbiBvZiB0aGF0IHNwZWMgdGhhdCB1c2VzIHRoYXQgZ2VuZXJhdG9yXCJcbiBbc3BlYyBnZW4tZm5dXG4gKGxldFxuICBbc3BlYyAocmVnLXJlc29sdmUgc3BlYyldXG4gIChpZlxuICAgKHJlZ2V4PyBzcGVjKVxuICAgKGFzc29jIHNwZWMgOmNsanMuc3BlYy5hbHBoYS9nZm4gZ2VuLWZuKVxuICAgKHdpdGgtZ2VuKiAoc3BlY2l6ZSBzcGVjKSBnZW4tZm4pKSkpXG4ifSB7OnN5bSBjb25mb3JtKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBjaGVjay1hc3NlcnRzPywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIHNldCBieSBjaGVjay1hc3NlcnRzLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay1hc3NlcnRzP1xuIFwiUmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGNoZWNrLWFzc2VydHMuXCJcbiBbXVxuICpydW50aW1lLWFzc2VydHMqKVxuIn0gezpzeW0gcmVwLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJyonIiwgOmFyZ2xpc3RzIChbZm9ybSBwXSl9LCA6c291cmNlICIoZGVmblxuIHJlcC1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJyonXCJcbiBbZm9ybSBwXVxuIChyZXAqIHAgcCBbXSBmYWxzZSBmb3JtKSlcbiJ9IHs6c3ltIGRlc2NyaWJlLCA6bWV0YSB7OmRvYyAicmV0dXJucyBhbiBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgc3BlYyBhcyBkYXRhIiwgOmFyZ2xpc3RzIChbc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXNjcmliZVxuIFwicmV0dXJucyBhbiBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgc3BlYyBhcyBkYXRhXCJcbiBbc3BlY11cbiAoYWJicmV2IChmb3JtIHNwZWMpKSlcbiJ9IHs6c3ltIGV4cGxhaW4tb3V0LCA6bWV0YSB7OmRvYyAiUHJpbnRzIGV4cGxhbmF0aW9uIGRhdGEgKHBlciAnZXhwbGFpbi1kYXRhJykgdG8gKm91dCogdXNpbmcgdGhlIHByaW50ZXIgaW4gKmV4cGxhaW4tb3V0KixcbiAgICBieSBkZWZhdWx0IGV4cGxhaW4tcHJpbnRlci4iLCA6YXJnbGlzdHMgKFtlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLW91dFxuIFwiUHJpbnRzIGV4cGxhbmF0aW9uIGRhdGEgKHBlciAnZXhwbGFpbi1kYXRhJykgdG8gKm91dCogdXNpbmcgdGhlIHByaW50ZXIgaW4gKmV4cGxhaW4tb3V0KixcXG4gICAgYnkgZGVmYXVsdCBleHBsYWluLXByaW50ZXIuXCJcbiBbZWRdXG4gKCpleHBsYWluLW91dCogZWQpKVxuIn0gezpzeW0gc3BlY2l6ZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbX10gW18gZm9ybV0pfSwgOnByb3RvY29sIFNwZWNpemV9IHs6c3ltIG1heWJlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJz8nIiwgOmFyZ2xpc3RzIChbcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIG1heWJlLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnPydcIlxuIFtwIGZvcm1dXG4gKGFzc29jXG4gIChhbHQqXG4gICBbcCAoYWNjZXB0IDpjbGpzLnNwZWMuYWxwaGEvbmlsKV1cbiAgIG5pbFxuICAgW2Zvcm0gOmNsanMuc3BlYy5hbHBoYS9uaWxdKVxuICA6bWF5YmVcbiAgZm9ybSkpXG4ifSB7OnN5bSBleHBsYWluKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHBhdGggdmlhIGluIHhdKX0sIDpwcm90b2NvbCBTcGVjfSksIGNsanMucmVhZGVyICh7OnN5bSAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoYXRvbSBuaWwpKVxuIn0gezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMvSVB1c2hiYWNrUmVhZGVyLlxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZSBvdGhlcndpc2UgcmV0dXJucyBlb2YuXG4gICBJZiBubyByZWFkZXIgaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBkb2Vzbid0IGRlcGVuZCBvbiBkeW5hbWljIFZhcnMsIGFsbCBjb25maWd1cmF0aW9uXG4gICBpcyBkb25lIGJ5IHBhc3NpbmcgYW4gb3B0IG1hcC5cblxuICAgb3B0cyBpcyBhIG1hcCB0aGF0IGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcga2V5czpcbiAgIDplb2YgLSB2YWx1ZSB0byByZXR1cm4gb24gZW5kLW9mLWZpbGUuIFdoZW4gbm90IHN1cHBsaWVkLCBlb2YgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cbiAgICAgICAgICAgICAgV2hlbiBub3Qgc3VwcGxpZWQsIG9ubHkgdGhlIGRlZmF1bHQtZGF0YS1yZWFkZXJzIHdpbGwgYmUgdXNlZC5cbiAgIDpkZWZhdWx0IC0gQSBmdW5jdGlvbiBvZiB0d28gYXJncywgdGhhdCB3aWxsLCBpZiBwcmVzZW50IGFuZCBubyByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnLFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbezprZXlzIFtlb2ZdLCA6YXMgb3B0c30gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZFxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIGNsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlcy9JUHVzaGJhY2tSZWFkZXIuXFxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZSBvdGhlcndpc2UgcmV0dXJucyBlb2YuXFxuICAgSWYgbm8gcmVhZGVyIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cXG5cXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcXG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcXG5cXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBkb2Vzbid0IGRlcGVuZCBvbiBkeW5hbWljIFZhcnMsIGFsbCBjb25maWd1cmF0aW9uXFxuICAgaXMgZG9uZSBieSBwYXNzaW5nIGFuIG9wdCBtYXAuXFxuXFxuICAgb3B0cyBpcyBhIG1hcCB0aGF0IGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcga2V5czpcXG4gICA6ZW9mIC0gdmFsdWUgdG8gcmV0dXJuIG9uIGVuZC1vZi1maWxlLiBXaGVuIG5vdCBzdXBwbGllZCwgZW9mIHRocm93cyBhbiBleGNlcHRpb24uXFxuICAgOnJlYWRlcnMgIC0gYSBtYXAgb2YgdGFnIHN5bWJvbHMgdG8gZGF0YS1yZWFkZXIgZnVuY3Rpb25zIHRvIGJlIGNvbnNpZGVyZWQgYmVmb3JlIGRlZmF1bHQtZGF0YS1yZWFkZXJzLlxcbiAgICAgICAgICAgICAgV2hlbiBub3Qgc3VwcGxpZWQsIG9ubHkgdGhlIGRlZmF1bHQtZGF0YS1yZWFkZXJzIHdpbGwgYmUgdXNlZC5cXG4gICA6ZGVmYXVsdCAtIEEgZnVuY3Rpb24gb2YgdHdvIGFyZ3MsIHRoYXQgd2lsbCwgaWYgcHJlc2VudCBhbmQgbm8gcmVhZGVyIGlzIGZvdW5kIGZvciBhIHRhZyxcXG4gICAgICAgICAgICAgIGJlIGNhbGxlZCB3aXRoIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS5cIlxuIChbcmVhZGVyXVxuICAoZWRuL3JlYWRcbiAgIHs6cmVhZGVycyBAKnRhZy10YWJsZSosXG4gICAgOmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKixcbiAgICA6ZW9mIG5pbH1cbiAgIHJlYWRlcikpXG4gKFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdXG4gIChlZG4vcmVhZFxuICAgKHVwZGF0ZVxuICAgIChtZXJnZSBvcHRzIHs6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qfSlcbiAgICA6cmVhZGVyc1xuICAgIChmbiBbbV0gKG1lcmdlIEAqdGFnLXRhYmxlKiBtKSkpXG4gICByZWFkZXIpKVxuIChbcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHNdXG4gIChlZG4vcmVhZFxuICAgcmVhZGVyXG4gICBlb2YtZXJyb3I/XG4gICBlb2ZcbiAgICh1cGRhdGVcbiAgICAobWVyZ2Ugb3B0cyB7OmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKn0pXG4gICAgOnJlYWRlcnNcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKSkpKVxuIn0gezpzeW0gKnRhZy10YWJsZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKnRhZy10YWJsZSpcbiAoYXRvbVxuICAoYWRkLWRhdGEtcmVhZGVyc1xuICAgeydpbnN0IHJlYWQtZGF0ZSwgJ3V1aWQgcmVhZC11dWlkLCAncXVldWUgcmVhZC1xdWV1ZSwgJ2pzIHJlYWQtanN9KSkpXG4ifSB7OnN5bSBwYXJzZS1hbmQtdmFsaWRhdGUtdGltZXN0YW1wLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtYW5kLXZhbGlkYXRlLXRpbWVzdGFtcFxuIFtzXVxuIChsZXRcbiAgW1tfXG4gICAgeWVhcnNcbiAgICBtb250aHNcbiAgICBkYXlzXG4gICAgaG91cnNcbiAgICBtaW51dGVzXG4gICAgc2Vjb25kc1xuICAgIGZyYWN0aW9uXG4gICAgb2Zmc2V0LXNpZ25cbiAgICBvZmZzZXQtaG91cnNcbiAgICBvZmZzZXQtbWludXRlc1xuICAgIDphc1xuICAgIHZdXG4gICAocmUtbWF0Y2hlcyB0aW1lc3RhbXAtcmVnZXggcyldXG4gIChpZi1ub3RcbiAgIHZcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJVbnJlY29nbml6ZWQgZGF0ZS90aW1lIHN5bnRheDogXCIgcykpKVxuICAgKGxldFxuICAgIFt5ZWFyc1xuICAgICAocGFyc2UtaW50IHllYXJzKVxuICAgICBtb250aHNcbiAgICAgKG9yIChwYXJzZS1pbnQgbW9udGhzKSAxKVxuICAgICBkYXlzXG4gICAgIChvciAocGFyc2UtaW50IGRheXMpIDEpXG4gICAgIGhvdXJzXG4gICAgIChvciAocGFyc2UtaW50IGhvdXJzKSAwKVxuICAgICBtaW51dGVzXG4gICAgIChvciAocGFyc2UtaW50IG1pbnV0ZXMpIDApXG4gICAgIHNlY29uZHNcbiAgICAgKG9yIChwYXJzZS1pbnQgc2Vjb25kcykgMClcbiAgICAgZnJhY3Rpb25cbiAgICAgKG9yIChwYXJzZS1pbnQgKHplcm8tZmlsbC1yaWdodC1hbmQtdHJ1bmNhdGUgZnJhY3Rpb24gMykpIDApXG4gICAgIG9mZnNldC1zaWduXG4gICAgIChpZiAoPSBvZmZzZXQtc2lnbiBcIi1cIikgLTEgMSlcbiAgICAgb2Zmc2V0LWhvdXJzXG4gICAgIChvciAocGFyc2UtaW50IG9mZnNldC1ob3VycykgMClcbiAgICAgb2Zmc2V0LW1pbnV0ZXNcbiAgICAgKG9yIChwYXJzZS1pbnQgb2Zmc2V0LW1pbnV0ZXMpIDApXG4gICAgIG9mZnNldFxuICAgICAoKiBvZmZzZXQtc2lnbiAoKyAoKiBvZmZzZXQtaG91cnMgNjApIG9mZnNldC1taW51dGVzKSldXG4gICAgW3llYXJzXG4gICAgIChjaGVjayAxIG1vbnRocyAxMiBcInRpbWVzdGFtcCBtb250aCBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDEuLjEyXCIpXG4gICAgIChjaGVja1xuICAgICAgMVxuICAgICAgZGF5c1xuICAgICAgKGRheXMtaW4tbW9udGggbW9udGhzIChsZWFwLXllYXI/IHllYXJzKSlcbiAgICAgIFwidGltZXN0YW1wIGRheSBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDEuLmxhc3QgZGF5IGluIG1vbnRoXCIpXG4gICAgIChjaGVjayAwIGhvdXJzIDIzIFwidGltZXN0YW1wIGhvdXIgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi4yM1wiKVxuICAgICAoY2hlY2tcbiAgICAgIDBcbiAgICAgIG1pbnV0ZXNcbiAgICAgIDU5XG4gICAgICBcInRpbWVzdGFtcCBtaW51dGUgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi41OVwiKVxuICAgICAoY2hlY2tcbiAgICAgIDBcbiAgICAgIHNlY29uZHNcbiAgICAgIChpZiAoPSBtaW51dGVzIDU5KSA2MCA1OSlcbiAgICAgIFwidGltZXN0YW1wIHNlY29uZCBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDAuLjYwXCIpXG4gICAgIChjaGVja1xuICAgICAgMFxuICAgICAgZnJhY3Rpb25cbiAgICAgIDk5OVxuICAgICAgXCJ0aW1lc3RhbXAgbWlsbGlzZWNvbmQgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi45OTlcIilcbiAgICAgb2Zmc2V0XSkpKSlcbiJ9IHs6c3ltIHJlZ2lzdGVyLXRhZy1wYXJzZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhZyBmXSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2lzdGVyLXRhZy1wYXJzZXIhXG4gW3RhZyBmXVxuIChsZXRcbiAgW29sZC1wYXJzZXIgKGdldCBAKnRhZy10YWJsZSogdGFnKV1cbiAgKHN3YXAhICp0YWctdGFibGUqIGFzc29jIHRhZyBmKVxuICBvbGQtcGFyc2VyKSlcbiJ9IHs6c3ltIHJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhXG4gW2ZdXG4gKGxldFxuICBbb2xkLXBhcnNlciBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXVxuICAoc3dhcCEgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIChmbiBbX10gZikpXG4gIG9sZC1wYXJzZXIpKVxuIn0gezpzeW0gZGVyZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciFcbiBbXVxuIChsZXRcbiAgW29sZC1wYXJzZXIgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKl1cbiAgKHN3YXAhICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoZm4gW19dIG5pbCkpXG4gIG9sZC1wYXJzZXIpKVxuIn0gezpzeW0gcmVhZC1zdHJpbmcsIDptZXRhIHs6ZG9jICJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cblxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcblxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQiLCA6YXJnbGlzdHMgW1tzXSBbb3B0cyBzXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gXCJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxcbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcIlxuIChbc11cbiAgKGVkbi9yZWFkLXN0cmluZ1xuICAgezpyZWFkZXJzIEAqdGFnLXRhYmxlKixcbiAgICA6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLFxuICAgIDplb2YgbmlsfVxuICAgcykpXG4gKFtvcHRzIHNdXG4gIChlZG4vcmVhZC1zdHJpbmdcbiAgICh1cGRhdGVcbiAgICAobWVyZ2UgezpkZWZhdWx0IEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbip9IG9wdHMpXG4gICAgOnJlYWRlcnNcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKVxuICAgcykpKVxuIn0gezpzeW0gZGVyZWdpc3Rlci10YWctcGFyc2VyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWddKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVyZWdpc3Rlci10YWctcGFyc2VyIVxuIFt0YWddXG4gKGxldFxuICBbb2xkLXBhcnNlciAoZ2V0IEAqdGFnLXRhYmxlKiB0YWcpXVxuICAoc3dhcCEgKnRhZy10YWJsZSogZGlzc29jIHRhZylcbiAgb2xkLXBhcnNlcikpXG4ifSB7OnN5bSBwYXJzZS10aW1lc3RhbXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtdGltZXN0YW1wXG4gW3RzXVxuIChpZi1sZXRcbiAgW1t5ZWFycyBtb250aHMgZGF5cyBob3VycyBtaW51dGVzIHNlY29uZHMgbXMgb2Zmc2V0XVxuICAgKHBhcnNlLWFuZC12YWxpZGF0ZS10aW1lc3RhbXAgdHMpXVxuICAoanMvRGF0ZS5cbiAgICgtXG4gICAgKC5VVEMganMvRGF0ZSB5ZWFycyAoZGVjIG1vbnRocykgZGF5cyBob3VycyBtaW51dGVzIHNlY29uZHMgbXMpXG4gICAgKCogb2Zmc2V0IDYwIDEwMDApKSlcbiAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIlVucmVjb2duaXplZCBkYXRlL3RpbWUgc3ludGF4OiBcIiB0cykpKSkpXG4ifSksIGNsb2p1cmUud2FsayAoezpzeW0gd2FsaywgOm1ldGEgezpkb2MgIlRyYXZlcnNlcyBmb3JtLCBhbiBhcmJpdHJhcnkgZGF0YSBzdHJ1Y3R1cmUuICBpbm5lciBhbmQgb3V0ZXIgYXJlXG4gIGZ1bmN0aW9ucy4gIEFwcGxpZXMgaW5uZXIgdG8gZWFjaCBlbGVtZW50IG9mIGZvcm0sIGJ1aWxkaW5nIHVwIGFcbiAgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIHNhbWUgdHlwZSwgdGhlbiBhcHBsaWVzIG91dGVyIHRvIHRoZSByZXN1bHQuXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuIiwgOmFyZ2xpc3RzIChbaW5uZXIgb3V0ZXIgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3YWxrXG4gXCJUcmF2ZXJzZXMgZm9ybSwgYW4gYXJiaXRyYXJ5IGRhdGEgc3RydWN0dXJlLiAgaW5uZXIgYW5kIG91dGVyIGFyZVxcbiAgZnVuY3Rpb25zLiAgQXBwbGllcyBpbm5lciB0byBlYWNoIGVsZW1lbnQgb2YgZm9ybSwgYnVpbGRpbmcgdXAgYVxcbiAgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIHNhbWUgdHlwZSwgdGhlbiBhcHBsaWVzIG91dGVyIHRvIHRoZSByZXN1bHQuXFxuICBSZWNvZ25pemVzIGFsbCBDbG9qdXJlIGRhdGEgc3RydWN0dXJlcy4gQ29uc3VtZXMgc2VxcyBhcyB3aXRoIGRvYWxsLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtpbm5lciBvdXRlciBmb3JtXVxuIChjb25kXG4gIChsaXN0PyBmb3JtKVxuICAob3V0ZXIgKGFwcGx5IGxpc3QgKG1hcCBpbm5lciBmb3JtKSkpXG4gIChtYXAtZW50cnk/IGZvcm0pXG4gIChvdXRlciAoTWFwRW50cnkuIChpbm5lciAoa2V5IGZvcm0pKSAoaW5uZXIgKHZhbCBmb3JtKSkgbmlsKSlcbiAgKHNlcT8gZm9ybSlcbiAgKG91dGVyIChkb2FsbCAobWFwIGlubmVyIGZvcm0pKSlcbiAgKHJlY29yZD8gZm9ybSlcbiAgKG91dGVyIChyZWR1Y2UgKGZuIFtyIHhdIChjb25qIHIgKGlubmVyIHgpKSkgZm9ybSBmb3JtKSlcbiAgKGNvbGw/IGZvcm0pXG4gIChvdXRlciAoaW50byAoZW1wdHkgZm9ybSkgKG1hcCBpbm5lciBmb3JtKSkpXG4gIDplbHNlXG4gIChvdXRlciBmb3JtKSkpXG4ifSB7OnN5bSBwb3N0d2FsaywgOm1ldGEgezpkb2MgIlBlcmZvcm1zIGEgZGVwdGgtZmlyc3QsIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9mIGZvcm0uICBDYWxscyBmIG9uXG4gIGVhY2ggc3ViLWZvcm0sIHVzZXMgZidzIHJldHVybiB2YWx1ZSBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwuXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuIiwgOmFyZ2xpc3RzIChbZiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHBvc3R3YWxrXG4gXCJQZXJmb3JtcyBhIGRlcHRoLWZpcnN0LCBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvZiBmb3JtLiAgQ2FsbHMgZiBvblxcbiAgZWFjaCBzdWItZm9ybSwgdXNlcyBmJ3MgcmV0dXJuIHZhbHVlIGluIHBsYWNlIG9mIHRoZSBvcmlnaW5hbC5cXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuXCJcbiB7OmFkZGVkIFwiMS4xXCJ9XG4gW2YgZm9ybV1cbiAod2FsayAocGFydGlhbCBwb3N0d2FsayBmKSBmIGZvcm0pKVxuIn0gezpzeW0gcHJld2FsaywgOm1ldGEgezpkb2MgIkxpa2UgcG9zdHdhbGssIGJ1dCBkb2VzIHByZS1vcmRlciB0cmF2ZXJzYWwuIiwgOmFyZ2xpc3RzIChbZiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHByZXdhbGtcbiBcIkxpa2UgcG9zdHdhbGssIGJ1dCBkb2VzIHByZS1vcmRlciB0cmF2ZXJzYWwuXCJcbiB7OmFkZGVkIFwiMS4xXCJ9XG4gW2YgZm9ybV1cbiAod2FsayAocGFydGlhbCBwcmV3YWxrIGYpIGlkZW50aXR5IChmIGZvcm0pKSlcbiJ9IHs6c3ltIGtleXdvcmRpemUta2V5cywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGZyb20gc3RyaW5ncyB0byBrZXl3b3Jkcy4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGtleXdvcmRpemUta2V5c1xuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgZnJvbSBzdHJpbmdzIHRvIGtleXdvcmRzLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFttXVxuIChsZXRcbiAgW2YgKGZuIFtbayB2XV0gKGlmIChzdHJpbmc/IGspIFsoa2V5d29yZCBrKSB2XSBbayB2XSkpXVxuICAocG9zdHdhbGsgKGZuIFt4XSAoaWYgKG1hcD8geCkgKGludG8ge30gKG1hcCBmIHgpKSB4KSkgbSkpKVxuIn0gezpzeW0gc3RyaW5naWZ5LWtleXMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBtYXAga2V5cyBmcm9tIGtleXdvcmRzIHRvIHN0cmluZ3MuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmdpZnkta2V5c1xuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgZnJvbSBrZXl3b3JkcyB0byBzdHJpbmdzLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFttXVxuIChsZXRcbiAgW2YgKGZuIFtbayB2XV0gKGlmIChrZXl3b3JkPyBrKSBbKG5hbWUgaykgdl0gW2sgdl0pKV1cbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmIChtYXA/IHgpIChpbnRvIHt9IChtYXAgZiB4KSkgeCkpIG0pKSlcbiJ9IHs6c3ltIHByZXdhbGstcmVwbGFjZSwgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcbiAgdmFsdWVzLiAgTGlrZSBjbG9qdXJlL3JlcGxhY2UgYnV0IHdvcmtzIG9uIGFueSBkYXRhIHN0cnVjdHVyZS4gIERvZXNcbiAgcmVwbGFjZW1lbnQgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgZmlyc3QuIiwgOmFyZ2xpc3RzIChbc21hcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHByZXdhbGstcmVwbGFjZVxuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBmb3JtIGJ5IHJlcGxhY2luZyBrZXlzIGluIHNtYXAgd2l0aCB0aGVpclxcbiAgdmFsdWVzLiAgTGlrZSBjbG9qdXJlL3JlcGxhY2UgYnV0IHdvcmtzIG9uIGFueSBkYXRhIHN0cnVjdHVyZS4gIERvZXNcXG4gIHJlcGxhY2VtZW50IGF0IHRoZSByb290IG9mIHRoZSB0cmVlIGZpcnN0LlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtzbWFwIGZvcm1dXG4gKHByZXdhbGsgKGZuIFt4XSAoaWYgKGNvbnRhaW5zPyBzbWFwIHgpIChzbWFwIHgpIHgpKSBmb3JtKSlcbiJ9IHs6c3ltIHBvc3R3YWxrLXJlcGxhY2UsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGZvcm0gYnkgcmVwbGFjaW5nIGtleXMgaW4gc21hcCB3aXRoIHRoZWlyXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXG4gIHJlcGxhY2VtZW50IGF0IHRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgZmlyc3QuIiwgOmFyZ2xpc3RzIChbc21hcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHBvc3R3YWxrLXJlcGxhY2VcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXFxuICByZXBsYWNlbWVudCBhdCB0aGUgbGVhdmVzIG9mIHRoZSB0cmVlIGZpcnN0LlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtzbWFwIGZvcm1dXG4gKHBvc3R3YWxrIChmbiBbeF0gKGlmIChjb250YWlucz8gc21hcCB4KSAoc21hcCB4KSB4KSkgZm9ybSkpXG4ifSksIHRhZy1zb3VwLmNvcmUgKHs6c3ltIHNwZWNpYWwtaW5kZW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNwZWNpYWwtaW5kZW50XG4gI3snYW5kXG4gICAnPj1cbiAgICc+XG4gICAnL1xuICAgJy0+PlxuICAgJzw9XG4gICAnPVxuICAgJ2NvbmQtPj5cbiAgICcrXG4gICAnPT1cbiAgICcqXG4gICAnc29tZS0+PlxuICAgJ3NvbWUtPlxuICAgJ25vdD1cbiAgICdjb25kLT5cbiAgICc8XG4gICAnLVxuICAgJy0+XG4gICAnYXMtPlxuICAgJ29yfSlcbiJ9IHs6c3ltIGNvZGUtPnRhZ3MsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB0YWdzIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5pbmcgY29kZS4iLCA6YXJnbGlzdHMgKFt0ZXh0XSl9LCA6c291cmNlICIoZGVmblxuIGNvZGUtPnRhZ3NcbiBcIlJldHVybnMgdGhlIHRhZ3MgZm9yIHRoZSBnaXZlbiBzdHJpbmcgY29udGFpbmluZyBjb2RlLlwiXG4gW3RleHRdXG4gKGxldFxuICBbcmVhZGVyIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHRleHQpXVxuICAobG9vcFxuICAgW20gKHRyYW5zaWVudCB7fSldXG4gICAoaWYtbGV0XG4gICAgW3Rva2VuIChyZWFkLXNhZmUgcmVhZGVyKV1cbiAgICAocmVjdXIgKHRhZy1tYXAgdG9rZW4gbSAwKSlcbiAgICAocGVyc2lzdGVudCEgbSkpKSkpXG4ifSB7OnN5bSBpbmRlbnQtZm9yLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZC4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZW50LWZvci1saW5lXG4gXCJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZC5cIlxuIFt0YWdzIGxpbmVdXG4gKG9yXG4gICgtPj5cbiAgIChnZXQtdGFncy1iZWZvcmUtbGluZSB0YWdzIGxpbmUpXG4gICByZXZlcnNlXG4gICAoc29tZSA6bmV4dC1saW5lLWluZGVudCkpXG4gIDApKVxuIn0gezpzeW0gYWRqdXN0LWluZGVudCwgOm1ldGEgezpkb2MgIlJldHVybnMgaG93IG11Y2ggdGhlIGluZGVudCBzaG91bGQgYmUgYWRqdXN0ZWQgZm9yIHRoZSBnaXZlbiB0b2tlbi4iLCA6YXJnbGlzdHMgKFt0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGp1c3QtaW5kZW50XG4gXCJSZXR1cm5zIGhvdyBtdWNoIHRoZSBpbmRlbnQgc2hvdWxkIGJlIGFkanVzdGVkIGZvciB0aGUgZ2l2ZW4gdG9rZW4uXCJcbiBbdG9rZW5dXG4gKGlmXG4gIChsaXN0PyB0b2tlbilcbiAgKGxldFxuICAgW2ZpcnN0LXZhbCAoLT4gdG9rZW4gZmlyc3QgdW53cmFwLXZhbHVlKV1cbiAgIChjb25kXG4gICAgKG9yICh2ZWN0b3I/IGZpcnN0LXZhbCkgKGxpc3Q/IGZpcnN0LXZhbCkpXG4gICAgMFxuICAgICgjezp1c2UgOnJlcXVpcmUgOmltcG9ydH0gZmlyc3QtdmFsKVxuICAgIChpbmMgKGNvdW50IChzdHIgZmlyc3QtdmFsKSkpXG4gICAgKCN7OmNsanIgOmNsaiA6Y2xqc30gZmlyc3QtdmFsKVxuICAgIDBcbiAgICAoY29udGFpbnM/IHNwZWNpYWwtaW5kZW50IGZpcnN0LXZhbClcbiAgICAoaW5jIChjb3VudCAoc3RyIGZpcnN0LXZhbCkpKVxuICAgIDplbHNlXG4gICAgMSkpXG4gIDApKVxuIn0gezpzeW0gcmVhZC1zYWZlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBlaXRoZXIgYSBmb3JtIG9yIGFuIGV4Y2VwdGlvbiBvYmplY3QsIG9yIG5pbCBpZiBFT0YgaXMgcmVhY2hlZC4iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zYWZlXG4gXCJSZXR1cm5zIGVpdGhlciBhIGZvcm0gb3IgYW4gZXhjZXB0aW9uIG9iamVjdCwgb3IgbmlsIGlmIEVPRiBpcyByZWFjaGVkLlwiXG4gW3JlYWRlcl1cbiAodHJ5XG4gIChiaW5kaW5nXG4gICBbKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qIHRydWUgci8qc3VwcHJlc3MtcmVhZCogdHJ1ZV1cbiAgIChyL3JlYWQgezpyZWFkLWNvbmQgOnByZXNlcnZlLCA6ZW9mIG5pbH0gcmVhZGVyKSlcbiAgKGNhdGNoIEV4Y2VwdGlvbkluZm8gZSBlKSkpXG4ifSB7OnN5bSB1bndyYXAtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW53cmFwLXZhbHVlXG4gW3ZhbHVlXVxuIChpZiAoLT4gdmFsdWUgbWV0YSA6d3JhcHBlZD8pIChmaXJzdCB2YWx1ZSkgdmFsdWUpKVxuIn0gezpzeW0gZ2V0LXRhZ3MtYmVmb3JlLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB0YWdzIGJlZm9yZSB0aGUgZ2l2ZW4gbGluZS4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXRhZ3MtYmVmb3JlLWxpbmVcbiBcIlJldHVybnMgdGhlIHRhZ3MgYmVmb3JlIHRoZSBnaXZlbiBsaW5lLlwiXG4gW3RhZ3MgbGluZV1cbiAoLT4+XG4gIHRhZ3NcbiAgKGZpbHRlciAoZm4qIFtwMV9fNDUwMDAjXSAoPCAoZmlyc3QgcDFfXzQ1MDAwIykgbGluZSkpKVxuICAoc29ydC1ieSBmaXJzdClcbiAgKG1hcCBzZWNvbmQpXG4gIChtYXAgKGZuKiBbcDFfXzQ1MDAxI10gKHNvcnQtYnkgOmNvbHVtbiBwMV9fNDUwMDEjKSkpXG4gIChhcHBseSBjb25jYXQpKSlcbiJ9IHs6c3ltIGZvcndhcmQtaW5kZW50LWZvci1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgZm9yd2FyZC4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmUgY3VycmVudC1pbmRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9yd2FyZC1pbmRlbnQtZm9yLWxpbmVcbiBcIlJldHVybnMgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIGdpdmVuIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIGZvcndhcmQuXCJcbiBbdGFncyBsaW5lIGN1cnJlbnQtaW5kZW50XVxuIChsZXRcbiAgW3RhZ3MtYmVmb3JlIChnZXQtdGFncy1iZWZvcmUtbGluZSB0YWdzIGxpbmUpXVxuICAobG9vcFxuICAgW3RhZ3MgKHJldmVyc2UgdGFncy1iZWZvcmUpIG1heC10YWItc3RvcCAtMSB0YWItc3RvcCAtMV1cbiAgIChpZi1sZXRcbiAgICBbdGFnIChmaXJzdCB0YWdzKV1cbiAgICAoaWYtbGV0XG4gICAgIFtpbmRlbnQgKDppbmRlbnQgdGFnKV1cbiAgICAgKGNvbmRcbiAgICAgICg8PSBpbmRlbnQgY3VycmVudC1pbmRlbnQpXG4gICAgICAocmVjdXIgW10gbWF4LXRhYi1zdG9wIHRhYi1zdG9wKVxuICAgICAgKG9yIChuZWc/IG1heC10YWItc3RvcCkgKDwgY3VycmVudC1pbmRlbnQgaW5kZW50IG1heC10YWItc3RvcCkpXG4gICAgICAocmVjdXJcbiAgICAgICAocmVzdCB0YWdzKVxuICAgICAgIChpbmMgaW5kZW50KVxuICAgICAgIChpZiAoOnNraXAtaW5kZW50PyB0YWcpIHRhYi1zdG9wIGluZGVudCkpXG4gICAgICA6ZWxzZVxuICAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCB0YWItc3RvcCkpXG4gICAgIChyZWN1ciAocmVzdCB0YWdzKSBtYXgtdGFiLXN0b3AgdGFiLXN0b3ApKVxuICAgIChpZiAoPD0gdGFiLXN0b3AgY3VycmVudC1pbmRlbnQpICgrIGN1cnJlbnQtaW5kZW50IDIpIHRhYi1zdG9wKSkpKSlcbiJ9IHs6c3ltIHRhZy1tYXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdHJhbnNpZW50IG1hcCBjb250YWluaW5nIHRoZSB0YWdzLCBvcmdhbml6ZWQgYnkgbGluZSBudW1iZXIuIiwgOmFyZ2xpc3RzIChbdG9rZW4gcmVzdWx0cy1tYXAgcGFyZW50LWluZGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWctbWFwXG4gXCJSZXR1cm5zIGEgdHJhbnNpZW50IG1hcCBjb250YWluaW5nIHRoZSB0YWdzLCBvcmdhbml6ZWQgYnkgbGluZSBudW1iZXIuXCJcbiBbdG9rZW4gcmVzdWx0cy1tYXAgcGFyZW50LWluZGVudF1cbiAoY29uZFxuICAoaW5zdGFuY2U/IEV4Y2VwdGlvbkluZm8gdG9rZW4pXG4gIChsZXRcbiAgIFt7OmtleXMgW2xpbmUgY29sXX0gKGV4LWRhdGEgdG9rZW4pXVxuICAgKGFzc29jIVxuICAgIHJlc3VsdHMtbWFwXG4gICAgbGluZVxuICAgIChjb25qXG4gICAgIChnZXQgcmVzdWx0cy1tYXAgbGluZSBbXSlcbiAgICAgezplcnJvcj8gdHJ1ZSxcbiAgICAgIDptZXNzYWdlICM/KDpjbGogKC5nZXRNZXNzYWdlIHRva2VuKSA6Y2xqcyAoLi1tZXNzYWdlIHRva2VuKSksXG4gICAgICA6Y29sdW1uIGNvbH0pKSlcbiAgKGFuZCAoY29sbD8gdG9rZW4pIChuaWw/IChtZXRhIHRva2VuKSkpXG4gIChyZWR1Y2VcbiAgIChmbiBbcmVzdWx0cy1tYXAgdG9rZW5dICh0YWctbWFwIHRva2VuIHJlc3VsdHMtbWFwIHBhcmVudC1pbmRlbnQpKVxuICAgcmVzdWx0cy1tYXBcbiAgIHRva2VuKVxuICA6ZWxzZVxuICAobGV0XG4gICBbezprZXlzIFtsaW5lIGNvbHVtbiBlbmQtbGluZSBlbmQtY29sdW1uXX0gKG1ldGEgdG9rZW4pXVxuICAgKGlmLW5vdFxuICAgIChhbmQgbGluZSBjb2x1bW4gZW5kLWxpbmUgZW5kLWNvbHVtbilcbiAgICByZXN1bHRzLW1hcFxuICAgIChsZXRcbiAgICAgW3ZhbHVlXG4gICAgICAodW53cmFwLXZhbHVlIHRva2VuKVxuICAgICAgaW5kZW50XG4gICAgICAobWF4IHBhcmVudC1pbmRlbnQgKGRlYyBjb2x1bW4pKVxuICAgICAgdG9wLWxldmVsP1xuICAgICAgKD0gcGFyZW50LWluZGVudCAwKV1cbiAgICAgKGlmXG4gICAgICAoY29sbD8gdmFsdWUpXG4gICAgICAobGV0XG4gICAgICAgW2RlbGltaXRlci1zaXplXG4gICAgICAgIChpZiAoc2V0PyB2YWx1ZSkgMiAxKVxuICAgICAgICBuZXctZW5kLWNvbHVtblxuICAgICAgICAoKyBjb2x1bW4gZGVsaW1pdGVyLXNpemUpXG4gICAgICAgIGFkanVzdG1lbnRcbiAgICAgICAgKGFkanVzdC1pbmRlbnQgdmFsdWUpXG4gICAgICAgIG5leHQtbGluZS1pbmRlbnRcbiAgICAgICAgKCsgKGRlYyBjb2x1bW4pIGRlbGltaXRlci1zaXplIGFkanVzdG1lbnQpXVxuICAgICAgIChhcy0+XG4gICAgICAgIHJlc3VsdHMtbWFwXG4gICAgICAgICRcbiAgICAgICAgKGFzc29jIVxuICAgICAgICAgJFxuICAgICAgICAgbGluZVxuICAgICAgICAgKC0+XG4gICAgICAgICAgKGdldCAkIGxpbmUgW10pXG4gICAgICAgICAgKGNvbmpcbiAgICAgICAgICAgezpiZWdpbj8gdHJ1ZSxcbiAgICAgICAgICAgIDpjb2x1bW4gY29sdW1uLFxuICAgICAgICAgICAgOnZhbHVlIHZhbHVlLFxuICAgICAgICAgICAgOmluZGVudCBpbmRlbnQsXG4gICAgICAgICAgICA6dG9wLWxldmVsPyB0b3AtbGV2ZWw/LFxuICAgICAgICAgICAgOnNraXAtaW5kZW50PyB0cnVlfSlcbiAgICAgICAgICAoY29uaiB7OmRlbGltaXRlcj8gdHJ1ZSwgOmNvbHVtbiBjb2x1bW59KVxuICAgICAgICAgIChjb25qXG4gICAgICAgICAgIHs6ZW5kPyB0cnVlLFxuICAgICAgICAgICAgOmNvbHVtbiBuZXctZW5kLWNvbHVtbixcbiAgICAgICAgICAgIDpuZXh0LWxpbmUtaW5kZW50IG5leHQtbGluZS1pbmRlbnQsXG4gICAgICAgICAgICA6aW5kZW50IG5leHQtbGluZS1pbmRlbnR9KSkpXG4gICAgICAgIChyZWR1Y2VcbiAgICAgICAgIChmblxuICAgICAgICAgIFtyZXN1bHRzLW1hcCB0b2tlbl1cbiAgICAgICAgICAodGFnLW1hcCB0b2tlbiByZXN1bHRzLW1hcCBuZXh0LWxpbmUtaW5kZW50KSlcbiAgICAgICAgICRcbiAgICAgICAgIHZhbHVlKVxuICAgICAgICAoYXNzb2MhXG4gICAgICAgICAkXG4gICAgICAgICBlbmQtbGluZVxuICAgICAgICAgKC0+XG4gICAgICAgICAgKGdldCAkIGVuZC1saW5lIFtdKVxuICAgICAgICAgIChjb25qIHs6ZGVsaW1pdGVyPyB0cnVlLCA6Y29sdW1uIChkZWMgZW5kLWNvbHVtbil9KVxuICAgICAgICAgIChjb25qXG4gICAgICAgICAgIHs6ZW5kPyB0cnVlLFxuICAgICAgICAgICAgOmNvbHVtbiBlbmQtY29sdW1uLFxuICAgICAgICAgICAgOm5leHQtbGluZS1pbmRlbnQgcGFyZW50LWluZGVudH0pXG4gICAgICAgICAgKGNvbmogezplbmQ/IHRydWUsIDpjb2x1bW4gZW5kLWNvbHVtbn0pKSkpKVxuICAgICAgKGFzLT5cbiAgICAgICByZXN1bHRzLW1hcFxuICAgICAgICRcbiAgICAgICAoYXNzb2MhXG4gICAgICAgICRcbiAgICAgICAgbGluZVxuICAgICAgICAoY29ualxuICAgICAgICAgKGdldCAkIGxpbmUgW10pXG4gICAgICAgICB7OmJlZ2luPyB0cnVlLFxuICAgICAgICAgIDpjb2x1bW4gY29sdW1uLFxuICAgICAgICAgIDp2YWx1ZSB2YWx1ZSxcbiAgICAgICAgICA6aW5kZW50IGluZGVudCxcbiAgICAgICAgICA6dG9wLWxldmVsPyB0b3AtbGV2ZWw/fSkpXG4gICAgICAgKGFzc29jIVxuICAgICAgICAkXG4gICAgICAgIGVuZC1saW5lXG4gICAgICAgIChjb25qXG4gICAgICAgICAoZ2V0ICQgZW5kLWxpbmUgW10pXG4gICAgICAgICB7OmVuZD8gdHJ1ZSwgOmNvbHVtbiBlbmQtY29sdW1ufSkpKSkpKSkpKVxuIn0gezpzeW0gYmFjay1pbmRlbnQtZm9yLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZCBiYWNrLiIsIDphcmdsaXN0cyAoW3RhZ3MgbGluZSBjdXJyZW50LWluZGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBiYWNrLWluZGVudC1mb3ItbGluZVxuIFwiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgYmFjay5cIlxuIFt0YWdzIGxpbmUgY3VycmVudC1pbmRlbnRdXG4gKGxldFxuICBbdGFncy1iZWZvcmUgKGdldC10YWdzLWJlZm9yZS1saW5lIHRhZ3MgbGluZSldXG4gIChsb29wXG4gICBbdGFncyAocmV2ZXJzZSB0YWdzLWJlZm9yZSkgbWF4LXRhYi1zdG9wIGN1cnJlbnQtaW5kZW50XVxuICAgKGlmLWxldFxuICAgIFt0YWcgKGZpcnN0IHRhZ3MpXVxuICAgIChpZi1sZXRcbiAgICAgW2luZGVudCAoOmluZGVudCB0YWcpXVxuICAgICAoaWZcbiAgICAgICg8IGluZGVudCBtYXgtdGFiLXN0b3ApXG4gICAgICAoaWYgKDpza2lwLWluZGVudD8gdGFnKSAocmVjdXIgKHJlc3QgdGFncykgKGluYyBpbmRlbnQpKSBpbmRlbnQpXG4gICAgICAocmVjdXIgKHJlc3QgdGFncykgbWF4LXRhYi1zdG9wKSlcbiAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCkpXG4gICAgKC0gY3VycmVudC1pbmRlbnQgMikpKSkpXG4ifSksIGV4cG91bmQucGF0aHMgKHs6c3ltIHBhdGhzLXRvLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIHBhdGggcGF0aHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGF0aHMtdG8tdmFsdWVcbiBbZm9ybSB2YWwgcGF0aCBwYXRoc11cbiAoY29uZFxuICAoPSBmb3JtIHZhbClcbiAgKGNvbmogcGF0aHMgcGF0aClcbiAgKG9yIChzZXF1ZW50aWFsPyBmb3JtKSAoc2V0PyBmb3JtKSlcbiAgKHJlZHVjZVxuICAgKGZuIFtwcyBbeCBpXV0gKHBhdGhzLXRvLXZhbHVlIHggdmFsIChjb25qIHBhdGggaSkgcHMpKVxuICAgcGF0aHNcbiAgIChtYXAgdmVjdG9yIGZvcm0gKHJhbmdlKSkpXG4gIChtYXA/IGZvcm0pXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFtwcyBbayB2XV1cbiAgICAoLT4+XG4gICAgIHBzXG4gICAgIChwYXRocy10by12YWx1ZSBrIHZhbCAoY29uaiBwYXRoICgtPktleVBhdGhTZWdtZW50IGspKSlcbiAgICAgKHBhdGhzLXRvLXZhbHVlIHYgdmFsIChjb25qIHBhdGggaykpKSlcbiAgIHBhdGhzXG4gICBmb3JtKVxuICA6ZWxzZVxuICBwYXRocykpXG4ifSB7OnN5bSBlcXVhbGlzaD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBlcXVhbGlzaD8gW3ggeV0gKG9yICg9IHggeSkgKGZuLWVxdWFsIHggeSkgKGJvdGgtbmFuPyB4IHkpKSlcbiJ9IHs6c3ltIGluLXdpdGgta3BzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGxldFxuICBbcmVzIChpbi13aXRoLWtwcyogZm9ybSB2YWwgaW4gaW4nKV1cbiAgKGlmICg9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCByZXMpIG5pbCByZXMpKSlcbiJ9IHs6c3ltIHZhbHVlLWluLCA6bWV0YSB7OmRvYyAiU2ltaWxhciB0byBnZXQtaW4sIGJ1dCB3b3JrcyB3aXRoIHBhdGhzIHRoYXQgcmVmZXJlbmNlIG1hcCBrZXlzIiwgOmFyZ2xpc3RzIChbZm9ybSBpbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YWx1ZS1pblxuIFwiU2ltaWxhciB0byBnZXQtaW4sIGJ1dCB3b3JrcyB3aXRoIHBhdGhzIHRoYXQgcmVmZXJlbmNlIG1hcCBrZXlzXCJcbiBbZm9ybSBpbl1cbiAoaWZcbiAgKG5pbD8gaW4pXG4gIGZvcm1cbiAgKGxldFxuICAgW1trICYgcnN0XSBpbl1cbiAgIChjb25kXG4gICAgKGVtcHR5PyBpbilcbiAgICBmb3JtXG4gICAgKGFuZCAobWFwPyBmb3JtKSAoa3BzPyBrKSlcbiAgICAocmVjdXIgKDprZXkgaykgcnN0KVxuICAgIChhbmQgKG1hcD8gZm9ybSkgKGt2cHM/IGspKVxuICAgIChyZWN1ciAobnRoIChzZXEgZm9ybSkgKDppZHggaykpIHJzdClcbiAgICAoYXNzb2NpYXRpdmU/IGZvcm0pXG4gICAgKHJlY3VyIChnZXQgZm9ybSBrKSByc3QpXG4gICAgKGFuZCAoaW50PyBrKSAoc2VxYWJsZT8gZm9ybSkpXG4gICAgKHJlY3VyIChudGggKHNlcSBmb3JtKSBrKSByc3QpKSkpKVxuIn0gezpzeW0ga3Zwcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4ga3Zwcz8gW3hdIChpbnN0YW5jZT8gS2V5VmFsdWVQYXRoU2VnbWVudCB4KSlcbiJ9IHs6c3ltIGluLXdpdGgta3BzLWludHMtYXJlLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxuIGluLXdpdGgta3BzLWludHMtYXJlLWtleXNcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChpZlxuICAoPSBmb3JtIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcbiAgZm9ybVxuICAobGV0XG4gICBbW2sgJiByc3RdIGluXVxuICAgKGNvbmRcbiAgICAoYW5kIChlbXB0eT8gaW4pIChlcXVhbGlzaD8gZm9ybSB2YWwpKVxuICAgIGluJ1xuICAgIChhc3NvY2lhdGl2ZT8gZm9ybSlcbiAgICAoaW4td2l0aC1rcHMqXG4gICAgIChnZXQgZm9ybSBrIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcbiAgICAgdmFsXG4gICAgIHJzdFxuICAgICAoY29uaiBpbicgaykpXG4gICAgKGFuZCAoaW50PyBrKSAoc2VxYWJsZT8gZm9ybSkpXG4gICAgKGluLXdpdGgta3BzKlxuICAgICAobnRoIChzZXEgZm9ybSkgayA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gICAgIHZhbFxuICAgICByc3RcbiAgICAgKGNvbmogaW4nIGspKVxuICAgIDplbHNlXG4gICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpKVxuIn0gezpzeW0gY29tcGFyZS1wYXRoLXNlZ21lbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIGNvbXBhcmUtcGF0aC1zZWdtZW50XG4gW3ggeV1cbiAoY29uZFxuICAoYW5kIChpbnQ/IHgpIChrdnBzPyB5KSlcbiAgKGNvbXBhcmUgeCAoOmlkeCB5KSlcbiAgKGFuZCAoa3Zwcz8geCkgKGludD8geSkpXG4gIChjb21wYXJlICg6aWR4IHgpIHkpXG4gIChhbmQgKGtwcz8geCkgKG5vdCAoa3BzPyB5KSkpXG4gIC0xXG4gIChhbmQgKG5vdCAoa3BzPyB4KSkgKGtwcz8geSkpXG4gIDFcbiAgKGFuZCAodmVjdG9yPyB4KSAodmVjdG9yPyB5KSlcbiAgKGNvbXBhcmUtcGF0aHMgeCB5KVxuICA6ZWxzZVxuICAoY29tcGFyZSB4IHkpKSlcbiJ9IHs6c3ltIGt2cHMtcGF0aD8sIDptZXRhIHs6ZG9jICJUcnVlIGlmIHBhdGggcG9pbnRzIHRvIGEga2V5L3ZhbHVlIHBhaXIiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGt2cHMtcGF0aD9cbiBcIlRydWUgaWYgcGF0aCBwb2ludHMgdG8gYSBrZXkvdmFsdWUgcGFpclwiXG4gW3hdXG4gKGJvb2xlYW4gKGFuZCAodmVjdG9yPyB4KSAoc29tZSBrdnBzPyB4KSkpKVxuIn0gezpzeW0gY29tcGFyZS1wYXRocywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXRoMSBwYXRoMl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlLXBhdGhzXG4gW3BhdGgxIHBhdGgyXVxuICgtPj4gKG1hcCBjb21wYXJlLXBhdGgtc2VnbWVudCBwYXRoMSBwYXRoMikgKHJlbW92ZSAjezB9KSBmaXJzdCkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1mdXp6eS1tYXRjaC1mb3ItcmVnZXgtZmFpbHVyZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxuIGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGlmXG4gICg9IGZvcm0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICBmb3JtXG4gIChsZXRcbiAgIFtbayAmIHJzdF0gaW5dXG4gICAoY29uZFxuICAgIChhbmQgKGVtcHR5PyBpbikgKHNlcWFibGU/IGZvcm0pICg9IHZhbCAnKCkpKVxuICAgIGluJ1xuICAgIChhbmQgKGVtcHR5PyBpbikgKGFuZCAoc2VxPyB2YWwpICg9IGZvcm0gKGZpcnN0IHZhbCkpKSlcbiAgICBpbidcbiAgICAoYW5kIChuYXQtaW50PyBrKSAoc2VxYWJsZT8gZm9ybSkpXG4gICAgKGluLXdpdGgta3BzKlxuICAgICAobnRoIChzZXEgZm9ybSkgayA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gICAgIHZhbFxuICAgICByc3RcbiAgICAgKGNvbmogaW4nIGspKVxuICAgIDplbHNlXG4gICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpKVxuIn0gezpzeW0gaW4td2l0aC1rcHMqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwcypcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChpZlxuICAoZm4/IGZvcm0pXG4gIGluJ1xuICAobGV0XG4gICBbYnIxIChpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXktdmFsdWUtaW5kaWNhdG9ycyBmb3JtIHZhbCBpbiBpbicpXVxuICAgKGlmXG4gICAgKG5vdD0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kIGJyMSlcbiAgICBicjFcbiAgICAobGV0XG4gICAgIFticjIgKGluLXdpdGgta3BzLW1hcHMtYXMtc2VxcyBmb3JtIHZhbCBpbiBpbicpXVxuICAgICAoaWZcbiAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjIpXG4gICAgICBicjJcbiAgICAgIChsZXRcbiAgICAgICBbYnIzIChpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzIGZvcm0gdmFsIGluIGluJyldXG4gICAgICAgKGlmXG4gICAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjMpXG4gICAgICAgIGJyM1xuICAgICAgICAobGV0XG4gICAgICAgICBbYnI0XG4gICAgICAgICAgKGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlcyBmb3JtIHZhbCBpbiBpbicpXVxuICAgICAgICAgKGlmXG4gICAgICAgICAgKG5vdD0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kIGJyNClcbiAgICAgICAgICBicjRcbiAgICAgICAgICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpKSkpKSkpKSkpXG4ifSB7OnN5bSBrcHMtcGF0aD8sIDptZXRhIHs6ZG9jICJUcnVlIGlmIHBhdGggcG9pbnRzIHRvIGEga2V5IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBrcHMtcGF0aD9cbiBcIlRydWUgaWYgcGF0aCBwb2ludHMgdG8gYSBrZXlcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKHZlY3Rvcj8geCkgKGtwcz8gKGxhc3QgeCkpKSkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1tYXBzLWFzLXNlcXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxuIGluLXdpdGgta3BzLW1hcHMtYXMtc2Vxc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGxldFxuICBbW2sgJiByc3RdIGluIFtpZHggJiByc3QyXSByc3RdXG4gIChjb25kXG4gICAoPSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgZm9ybSlcbiAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZFxuICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcbiAgIGluJ1xuICAgKGFuZCAobWFwPyBmb3JtKSAobmF0LWludD8gaykgKDwgayAoY291bnQgKHNlcSBmb3JtKSkpKVxuICAgKGluLXdpdGgta3BzKlxuICAgIChudGggKHNlcSBmb3JtKSBrKVxuICAgIHZhbFxuICAgIHJzdFxuICAgIChjb25qIGluJyAoLT5LZXlWYWx1ZVBhdGhTZWdtZW50IGspKSlcbiAgIChhbmRcbiAgICAobWFwPyBmb3JtKVxuICAgIChuYXQtaW50PyBrKVxuICAgIChpbnQ/IGlkeClcbiAgICAoPCBrIChjb3VudCAoc2VxIGZvcm0pKSlcbiAgICAoPCBpZHggKGNvdW50IChudGggKHNlcSBmb3JtKSBrKSkpKVxuICAgKGluLXdpdGgta3BzKlxuICAgIChudGggKG50aCAoc2VxIGZvcm0pIGspIGlkeClcbiAgICB2YWxcbiAgICByc3QyXG4gICAgKGNvbmogaW4nICgtPktleVZhbHVlUGF0aFNlZ21lbnQgaykgaWR4KSlcbiAgIDplbHNlXG4gICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpKSlcbiJ9IHs6c3ltIHByZWZpeC1wYXRoPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcGFydGlhbC1wYXRoIGlzIGEgcHJlZml4IG9mIGZ1bGwtcGF0aC4iLCA6YXJnbGlzdHMgKFtwYXJ0aWFsLXBhdGggZnVsbC1wYXRoXSl9LCA6c291cmNlICIoZGVmblxuIHByZWZpeC1wYXRoP1xuIFwiVHJ1ZSBpZiBwYXJ0aWFsLXBhdGggaXMgYSBwcmVmaXggb2YgZnVsbC1wYXRoLlwiXG4gW3BhcnRpYWwtcGF0aCBmdWxsLXBhdGhdXG4gKGFuZFxuICAoPCAoY291bnQgcGFydGlhbC1wYXRoKSAoY291bnQgZnVsbC1wYXRoKSlcbiAgKD0gcGFydGlhbC1wYXRoIChzdWJ2ZWMgZnVsbC1wYXRoIDAgKGNvdW50IHBhcnRpYWwtcGF0aCkpKSkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXktdmFsdWUtaW5kaWNhdG9ycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXG4gaW4td2l0aC1rcHMtaW50cy1hcmUta2V5LXZhbHVlLWluZGljYXRvcnNcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChpZlxuICAoPSBmb3JtIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcbiAgZm9ybVxuICAobGV0XG4gICBbW2sgJiByc3RdIGluIFtpZHggJiByc3QyXSByc3RdXG4gICAoY29uZFxuICAgIChhbmQgKGVtcHR5PyBpbikgKGVxdWFsaXNoPyBmb3JtIHZhbCkpXG4gICAgaW4nXG4gICAgKGFuZCAobWFwPyBmb3JtKSAoPSAwIGlkeCkpXG4gICAgKGluLXdpdGgta3BzKiBrIHZhbCByc3QyIChjb25qIGluJyAoLT5LZXlQYXRoU2VnbWVudCBrKSkpXG4gICAgKGFuZCAobWFwPyBmb3JtKSAoPSAxIGlkeCkpXG4gICAgKGluLXdpdGgta3BzKlxuICAgICAoZ2V0IGZvcm0gayA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gICAgIHZhbFxuICAgICByc3QyXG4gICAgIChjb25qIGluJyBrKSlcbiAgICA6ZWxzZVxuICAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCkpKSlcbiJ9IHs6c3ltIGZuLWVxdWFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm4gZm4tZXF1YWwgW3ggeV0gKGFuZCAoZm4/IHgpIChmbj8geSkgKD0gKHByLXN0ciB4KSAocHItc3RyIHkpKSkpXG4ifSB7OnN5bSBrcHM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGtwcz8gW3hdIChpbnN0YW5jZT8gS2V5UGF0aFNlZ21lbnQgeCkpXG4ifSB7OnN5bSBib3RoLW5hbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBib3RoLW5hbj8gW3ggeV0gKGFuZCAodXRpbC9uYW4/IHgpICh1dGlsL25hbj8geSkpKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC50aW1lcnMgKHs6c3ltIHRpbWVvdXQsIDptZXRhIHs6ZG9jICJyZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgY2xvc2UgYWZ0ZXIgbXNlY3MiLCA6YXJnbGlzdHMgKFttc2Vjc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aW1lb3V0XG4gXCJyZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgY2xvc2UgYWZ0ZXIgbXNlY3NcIlxuIFttc2Vjc11cbiAobGV0XG4gIFt0aW1lb3V0XG4gICAoKyAoLnZhbHVlT2YgKGpzL0RhdGUuKSkgbXNlY3MpXG4gICBtZVxuICAgKC5jZWlsaW5nRW50cnkgdGltZW91dHMtbWFwIHRpbWVvdXQpXVxuICAob3JcbiAgICh3aGVuXG4gICAgKGFuZCBtZSAoPCAoLi1rZXkgbWUpICgrIHRpbWVvdXQgVElNRU9VVF9SRVNPTFVUSU9OX01TKSkpXG4gICAgKC4tdmFsIG1lKSlcbiAgIChsZXRcbiAgICBbdGltZW91dC1jaGFubmVsIChjaGFubmVscy9jaGFuIG5pbCldXG4gICAgKC5wdXQgdGltZW91dHMtbWFwIHRpbWVvdXQgdGltZW91dC1jaGFubmVsKVxuICAgIChkaXNwYXRjaC9xdWV1ZS1kZWxheVxuICAgICAoZm5cbiAgICAgIFtdXG4gICAgICAoLnJlbW92ZSB0aW1lb3V0cy1tYXAgdGltZW91dClcbiAgICAgIChpbXBsL2Nsb3NlISB0aW1lb3V0LWNoYW5uZWwpKVxuICAgICBtc2VjcylcbiAgICB0aW1lb3V0LWNoYW5uZWwpKSkpXG4ifSB7OnN5bSByYW5kb20tbGV2ZWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbbGV2ZWxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZG9tLWxldmVsXG4gKFtdIChyYW5kb20tbGV2ZWwgMCkpXG4gKFtsZXZlbF1cbiAgKGlmXG4gICAoYW5kICg8ICgucmFuZG9tIGpzL01hdGgpIFApICg8IGxldmVsIE1BWF9MRVZFTCkpXG4gICAocmVjdXIgKGluYyBsZXZlbCkpXG4gICBsZXZlbCkpKVxuIn0gezpzeW0gc2tpcC1saXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gc2tpcC1saXN0IFtdIChTa2lwTGlzdC4gKHNraXAtbGlzdC1ub2RlIDApIDApKVxuIn0gezpzeW0gTUFYX0xFVkVMLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNQVhfTEVWRUwgMTUpXG4ifSB7OnN5bSBQLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBQICgvIDEgMikpXG4ifSB7OnN5bSB0aW1lb3V0cy1tYXAsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHRpbWVvdXRzLW1hcCAoc2tpcC1saXN0KSlcbiJ9IHs6c3ltIHNraXAtbGlzdC1ub2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2xldmVsXSBbayB2IGxldmVsXV19LCA6c291cmNlICIoZGVmblxuIHNraXAtbGlzdC1ub2RlXG4gKFtsZXZlbF0gKHNraXAtbGlzdC1ub2RlIG5pbCBuaWwgbGV2ZWwpKVxuIChbayB2IGxldmVsXVxuICAobGV0XG4gICBbYXJyIChtYWtlLWFycmF5IChpbmMgbGV2ZWwpKV1cbiAgIChsb29wXG4gICAgW2kgMF1cbiAgICAod2hlbiAoPCBpIChhbGVuZ3RoIGFycikpIChhc2V0IGFyciBpIG5pbCkgKHJlY3VyIChpbmMgaSkpKSlcbiAgIChTa2lwTGlzdE5vZGUuIGsgdiBhcnIpKSkpXG4ifSB7OnN5bSBsZWFzdC1ncmVhdGVyLW5vZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbeCBrIGxldmVsXSBbeCBrIGxldmVsIHVwZGF0ZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBsZWFzdC1ncmVhdGVyLW5vZGVcbiAoW3ggayBsZXZlbF0gKGxlYXN0LWdyZWF0ZXItbm9kZSB4IGsgbGV2ZWwgbmlsKSlcbiAoW3ggayBsZXZlbCB1cGRhdGVdXG4gIChpZi1ub3RcbiAgIChuZWc/IGxldmVsKVxuICAgKGxldFxuICAgIFt4XG4gICAgIChsb29wXG4gICAgICBbeCB4XVxuICAgICAgKGlmLWxldFxuICAgICAgIFt4J1xuICAgICAgICAod2hlblxuICAgICAgICAgKDwgbGV2ZWwgKGFsZW5ndGggKC4tZm9yd2FyZCB4KSkpXG4gICAgICAgICAoYWdldCAoLi1mb3J3YXJkIHgpIGxldmVsKSldXG4gICAgICAgKGlmICg8ICguLWtleSB4JykgaykgKHJlY3VyIHgnKSB4KVxuICAgICAgIHgpKV1cbiAgICAod2hlbi1ub3QgKG5pbD8gdXBkYXRlKSAoYXNldCB1cGRhdGUgbGV2ZWwgeCkpXG4gICAgKHJlY3VyIHggayAoZGVjIGxldmVsKSB1cGRhdGUpKVxuICAgeCkpKVxuIn0gezpzeW0gVElNRU9VVF9SRVNPTFVUSU9OX01TLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBUSU1FT1VUX1JFU09MVVRJT05fTVMgMTApXG4ifSksIHBsYXktY2xqYy5wcmltaXRpdmVzLTNkICh7OnN5bSBwbGFuZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3dpZHRoIGRlcHRoIHN1YmRpdmlzaW9ucy13aWR0aCBzdWJkaXZpc2lvbnMtZGVwdGhdLCA6b3Ige3dpZHRoIDEsIGRlcHRoIDEsIHN1YmRpdmlzaW9ucy13aWR0aCAxLCBzdWJkaXZpc2lvbnMtZGVwdGggMX19XSl9LCA6c291cmNlICIoZGVmblxuIHBsYW5lXG4gW3s6a2V5cyBbd2lkdGggZGVwdGggc3ViZGl2aXNpb25zLXdpZHRoIHN1YmRpdmlzaW9ucy1kZXB0aF0sXG4gICA6b3Ige3dpZHRoIDEsIGRlcHRoIDEsIHN1YmRpdmlzaW9ucy13aWR0aCAxLCBzdWJkaXZpc2lvbnMtZGVwdGggMX19XVxuIChsZXRcbiAgW251bS12ZXJ0cy1hY3Jvc3MgKGluYyBzdWJkaXZpc2lvbnMtd2lkdGgpXVxuICAoLT5cbiAgIChmblxuICAgIFttIHpdXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFttIHhdXG4gICAgICAobGV0XG4gICAgICAgW3UgKC8geCBzdWJkaXZpc2lvbnMtd2lkdGgpIHYgKC8geiBzdWJkaXZpc2lvbnMtZGVwdGgpXVxuICAgICAgICgtPlxuICAgICAgICBtXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDpwb3NpdGlvbnNcbiAgICAgICAgIChmblxuICAgICAgICAgIFtwb3NpdGlvbnNdXG4gICAgICAgICAgKC0+XG4gICAgICAgICAgIHBvc2l0aW9uc1xuICAgICAgICAgICAoY29uaiEgKC0gKCogd2lkdGggdSkgKCogd2lkdGggMC41KSkpXG4gICAgICAgICAgIChjb25qISAwKVxuICAgICAgICAgICAoY29uaiEgKC0gKCogZGVwdGggdikgKCogZGVwdGggMC41KSkpKSkpXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDpub3JtYWxzXG4gICAgICAgICAoZm4gW25vcm1hbHNdICgtPiBub3JtYWxzIChjb25qISAwKSAoY29uaiEgMSkgKGNvbmohIDApKSkpXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDp0ZXhjb29yZHNcbiAgICAgICAgIChmbiBbdGV4Y29vcmRzXSAoLT4gdGV4Y29vcmRzIChjb25qISB1KSAoY29uaiEgdikpKSkpKSlcbiAgICAgbVxuICAgICAocmFuZ2UgKGluYyBzdWJkaXZpc2lvbnMtd2lkdGgpKSkpXG4gICAocmVkdWNlXG4gICAgezpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pfVxuICAgIChyYW5nZSAoaW5jIHN1YmRpdmlzaW9ucy1kZXB0aCkpKVxuICAgKGFzc29jXG4gICAgOmluZGljZXNcbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW2luZGljZXMgel1cbiAgICAgIChyZWR1Y2VcbiAgICAgICAoZm5cbiAgICAgICAgW2luZGljZXMgeF1cbiAgICAgICAgKC0+XG4gICAgICAgICBpbmRpY2VzXG4gICAgICAgICAoY29uaiEgKC0+IHogKCogbnVtLXZlcnRzLWFjcm9zcykgKCsgeCkpKVxuICAgICAgICAgKGNvbmohICgtPiB6IGluYyAoKiBudW0tdmVydHMtYWNyb3NzKSAoKyB4KSkpXG4gICAgICAgICAoY29uaiEgKC0+IHogKCogbnVtLXZlcnRzLWFjcm9zcykgKCsgKGluYyB4KSkpKVxuICAgICAgICAgKGNvbmohICgtPiB6IGluYyAoKiBudW0tdmVydHMtYWNyb3NzKSAoKyB4KSkpXG4gICAgICAgICAoY29uaiEgKC0+IHogaW5jICgqIG51bS12ZXJ0cy1hY3Jvc3MpICgrIChpbmMgeCkpKSlcbiAgICAgICAgIChjb25qISAoLT4geiAoKiBudW0tdmVydHMtYWNyb3NzKSAoKyAoaW5jIHgpKSkpKSlcbiAgICAgICBpbmRpY2VzXG4gICAgICAgKHJhbmdlIHN1YmRpdmlzaW9ucy13aWR0aCkpKVxuICAgICAodHJhbnNpZW50IFtdKVxuICAgICAocmFuZ2Ugc3ViZGl2aXNpb25zLWRlcHRoKSkpXG4gICAodXBkYXRlIDpwb3NpdGlvbnMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDpub3JtYWxzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6dGV4Y29vcmRzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6aW5kaWNlcyBwZXJzaXN0ZW50ISkpKSlcbiJ9IHs6c3ltIHNwaGVyZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3JhZGl1cyBzdWJkaXZpc2lvbnMtYXhpcyBzdWJkaXZpc2lvbnMtaGVpZ2h0XX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BoZXJlXG4gW3s6a2V5cyBbcmFkaXVzIHN1YmRpdmlzaW9ucy1heGlzIHN1YmRpdmlzaW9ucy1oZWlnaHRdfV1cbiAobGV0XG4gIFtzdGFydC1sYXRpdHVkZVxuICAgMFxuICAgZW5kLWxhdGl0dWRlXG4gICAobWF0aCBQSSlcbiAgIHN0YXJ0LWxvbmdpdHVkZVxuICAgMFxuICAgZW5kLWxvbmdpdHVkZVxuICAgKCogMiAobWF0aCBQSSkpXG4gICBsYXQtcmFuZ2VcbiAgICgtIGVuZC1sYXRpdHVkZSBzdGFydC1sYXRpdHVkZSlcbiAgIGxvbmctcmFuZ2VcbiAgICgtIGVuZC1sb25naXR1ZGUgc3RhcnQtbG9uZ2l0dWRlKVxuICAgbnVtLXZlcnRpY2VzXG4gICAoKiAoaW5jIHN1YmRpdmlzaW9ucy1heGlzKSAoaW5jIHN1YmRpdmlzaW9ucy1oZWlnaHQpKVxuICAgbnVtLXZlcnRzLWFyb3VuZFxuICAgKGluYyBzdWJkaXZpc2lvbnMtYXhpcyldXG4gICgtPlxuICAgKGZuXG4gICAgW20geV1cbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW20geF1cbiAgICAgIChsZXRcbiAgICAgICBbdVxuICAgICAgICAoLyB4IHN1YmRpdmlzaW9ucy1heGlzKVxuICAgICAgICB2XG4gICAgICAgICgvIHkgc3ViZGl2aXNpb25zLWhlaWdodClcbiAgICAgICAgdGhldGFcbiAgICAgICAgKCsgKCogbG9uZy1yYW5nZSB1KSBzdGFydC1sb25naXR1ZGUpXG4gICAgICAgIHBoaVxuICAgICAgICAoKyAoKiBsYXQtcmFuZ2Ugdikgc3RhcnQtbGF0aXR1ZGUpXG4gICAgICAgIHNpbi10aGV0YVxuICAgICAgICAobWF0aCBzaW4gdGhldGEpXG4gICAgICAgIGNvcy10aGV0YVxuICAgICAgICAobWF0aCBjb3MgdGhldGEpXG4gICAgICAgIHNpbi1waGlcbiAgICAgICAgKG1hdGggc2luIHBoaSlcbiAgICAgICAgY29zLXBoaVxuICAgICAgICAobWF0aCBjb3MgcGhpKVxuICAgICAgICB1eFxuICAgICAgICAoKiBjb3MtdGhldGEgc2luLXBoaSlcbiAgICAgICAgdXlcbiAgICAgICAgY29zLXBoaVxuICAgICAgICB1elxuICAgICAgICAoKiBzaW4tdGhldGEgc2luLXBoaSldXG4gICAgICAgKC0+XG4gICAgICAgIG1cbiAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgOnBvc2l0aW9uc1xuICAgICAgICAgKGZuXG4gICAgICAgICAgW3Bvc2l0aW9uc11cbiAgICAgICAgICAoLT5cbiAgICAgICAgICAgcG9zaXRpb25zXG4gICAgICAgICAgIChjb25qISAoKiByYWRpdXMgdXgpKVxuICAgICAgICAgICAoY29uaiEgKCogcmFkaXVzIHV5KSlcbiAgICAgICAgICAgKGNvbmohICgqIHJhZGl1cyB1eikpKSkpXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDpub3JtYWxzXG4gICAgICAgICAoZm4gW25vcm1hbHNdICgtPiBub3JtYWxzIChjb25qISB1eCkgKGNvbmohIHV5KSAoY29uaiEgdXopKSkpXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDp0ZXhjb29yZHNcbiAgICAgICAgIChmbiBbdGV4Y29vcmRzXSAoLT4gdGV4Y29vcmRzIChjb25qISAoLSAxIHUpKSAoY29uaiEgdikpKSkpKSlcbiAgICAgbVxuICAgICAocmFuZ2UgKGluYyBzdWJkaXZpc2lvbnMtYXhpcykpKSlcbiAgIChyZWR1Y2VcbiAgICB7OnBvc2l0aW9ucyAodHJhbnNpZW50IFtdKSxcbiAgICAgOm5vcm1hbHMgKHRyYW5zaWVudCBbXSksXG4gICAgIDp0ZXhjb29yZHMgKHRyYW5zaWVudCBbXSl9XG4gICAgKHJhbmdlIChpbmMgc3ViZGl2aXNpb25zLWhlaWdodCkpKVxuICAgKGFzc29jXG4gICAgOmluZGljZXNcbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW2luZGljZXMgeV1cbiAgICAgIChyZWR1Y2VcbiAgICAgICAoZm5cbiAgICAgICAgW2luZGljZXMgeF1cbiAgICAgICAgKC0+XG4gICAgICAgICBpbmRpY2VzXG4gICAgICAgICAoY29uaiEgKC0+IHkgKCogbnVtLXZlcnRzLWFyb3VuZCkgKCsgeCkpKVxuICAgICAgICAgKGNvbmohICgtPiB5ICgqIG51bS12ZXJ0cy1hcm91bmQpICgrIChpbmMgeCkpKSlcbiAgICAgICAgIChjb25qISAoLT4geSBpbmMgKCogbnVtLXZlcnRzLWFyb3VuZCkgKCsgeCkpKVxuICAgICAgICAgKGNvbmohICgtPiB5IGluYyAoKiBudW0tdmVydHMtYXJvdW5kKSAoKyB4KSkpXG4gICAgICAgICAoY29uaiEgKC0+IHkgKCogbnVtLXZlcnRzLWFyb3VuZCkgKCsgKGluYyB4KSkpKVxuICAgICAgICAgKGNvbmohICgtPiB5IGluYyAoKiBudW0tdmVydHMtYXJvdW5kKSAoKyAoaW5jIHgpKSkpKSlcbiAgICAgICBpbmRpY2VzXG4gICAgICAgKHJhbmdlIHN1YmRpdmlzaW9ucy1heGlzKSkpXG4gICAgICh0cmFuc2llbnQgW10pXG4gICAgIChyYW5nZSBzdWJkaXZpc2lvbnMtaGVpZ2h0KSkpXG4gICAodXBkYXRlIDpwb3NpdGlvbnMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDpub3JtYWxzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6dGV4Y29vcmRzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6aW5kaWNlcyBwZXJzaXN0ZW50ISkpKSlcbiJ9IHs6c3ltIGN1YmUtZmFjZS1pbmRpY2VzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGN1YmUtZmFjZS1pbmRpY2VzXG4gW1szIDcgNSAxXSBbNiAyIDAgNF0gWzYgNyAzIDJdIFswIDEgNSA0XSBbNyA2IDQgNV0gWzIgMyAxIDBdXSlcbiJ9IHs6c3ltIGN1YmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtzaXplXSwgOm9yIHtzaXplIDF9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjdWJlXG4gW3s6a2V5cyBbc2l6ZV0sIDpvciB7c2l6ZSAxfX1dXG4gKGxldFxuICBba1xuICAgKC8gc2l6ZSAyKVxuICAgY29ybmVyLXZlcnRpY2VzXG4gICBbWygtIGspICgtIGspICgtIGspXVxuICAgIFtrICgtIGspICgtIGspXVxuICAgIFsoLSBrKSBrICgtIGspXVxuICAgIFtrIGsgKC0gayldXG4gICAgWygtIGspICgtIGspIGtdXG4gICAgW2sgKC0gaykga11cbiAgICBbKC0gaykgayBrXVxuICAgIFtrIGsga11dXG4gICBmYWNlLW5vcm1hbHNcbiAgIFtbMSAwIDBdIFstMSAwIDBdIFswIDEgMF0gWzAgLTEgMF0gWzAgMCAxXSBbMCAwIC0xXV1cbiAgIHV2LWNvb3Jkc1xuICAgW1sxIDBdIFswIDBdIFswIDFdIFsxIDFdXVxuICAgbnVtLXZlcnRpY2VzXG4gICAoKiA2IDQpXVxuICAoLT5cbiAgIChmblxuICAgIFttIGZdXG4gICAgKGxldFxuICAgICBbZmFjZS1pbmRpY2VzIChudGggY3ViZS1mYWNlLWluZGljZXMgZikgb2Zmc2V0ICgqIDQgZildXG4gICAgICgtPlxuICAgICAgKGZuXG4gICAgICAgW20gdl1cbiAgICAgICAoLT5cbiAgICAgICAgbVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6cG9zaXRpb25zXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbcG9zaXRpb25zXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW1t4IHkgel0gKG50aCBjb3JuZXItdmVydGljZXMgKG50aCBmYWNlLWluZGljZXMgdikpXVxuICAgICAgICAgICAoLT4gcG9zaXRpb25zIChjb25qISB4KSAoY29uaiEgeSkgKGNvbmohIHopKSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6bm9ybWFsc1xuICAgICAgICAgKGZuXG4gICAgICAgICAgW25vcm1hbHNdXG4gICAgICAgICAgKGxldFxuICAgICAgICAgICBbW3ggeSB6XSAobnRoIGZhY2Utbm9ybWFscyBmKV1cbiAgICAgICAgICAgKC0+IG5vcm1hbHMgKGNvbmohIHgpIChjb25qISB5KSAoY29uaiEgeikpKSkpXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDp0ZXhjb29yZHNcbiAgICAgICAgIChmblxuICAgICAgICAgIFt0ZXhjb29yZHNdXG4gICAgICAgICAgKGxldFxuICAgICAgICAgICBbW3Ugdl0gKG50aCB1di1jb29yZHMgdildXG4gICAgICAgICAgICgtPiB0ZXhjb29yZHMgKGNvbmohIHUpIChjb25qISB2KSkpKSkpKVxuICAgICAgKHJlZHVjZSBtIChyYW5nZSA0KSlcbiAgICAgICh1cGRhdGVcbiAgICAgICA6aW5kaWNlc1xuICAgICAgIChmblxuICAgICAgICBbaW5kaWNlc11cbiAgICAgICAgKC0+XG4gICAgICAgICBpbmRpY2VzXG4gICAgICAgICAoY29uaiEgKCsgb2Zmc2V0IDApKVxuICAgICAgICAgKGNvbmohICgrIG9mZnNldCAxKSlcbiAgICAgICAgIChjb25qISAoKyBvZmZzZXQgMikpXG4gICAgICAgICAoY29uaiEgKCsgb2Zmc2V0IDApKVxuICAgICAgICAgKGNvbmohICgrIG9mZnNldCAyKSlcbiAgICAgICAgIChjb25qISAoKyBvZmZzZXQgMykpKSkpKSkpXG4gICAocmVkdWNlXG4gICAgezpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pLFxuICAgICA6aW5kaWNlcyAodHJhbnNpZW50IFtdKX1cbiAgICAocmFuZ2UgNikpXG4gICAodXBkYXRlIDpwb3NpdGlvbnMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDpub3JtYWxzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6dGV4Y29vcmRzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6aW5kaWNlcyBwZXJzaXN0ZW50ISkpKSlcbiJ9IHs6c3ltIGN5bGluZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbYm90dG9tLXJhZGl1cyB0b3AtcmFkaXVzIGhlaWdodCByYWRpYWwtc3ViZGl2aXNpb25zIHZlcnRpY2FsLXN1YmRpdmlzaW9ucyB0b3AtY2FwPyBib3R0b20tY2FwP10sIDpvciB7dG9wLWNhcD8gdHJ1ZSwgYm90dG9tLWNhcD8gdHJ1ZX19XSl9LCA6c291cmNlICIoZGVmblxuIGN5bGluZGVyXG4gW3s6a2V5c1xuICAgW2JvdHRvbS1yYWRpdXNcbiAgICB0b3AtcmFkaXVzXG4gICAgaGVpZ2h0XG4gICAgcmFkaWFsLXN1YmRpdmlzaW9uc1xuICAgIHZlcnRpY2FsLXN1YmRpdmlzaW9uc1xuICAgIHRvcC1jYXA/XG4gICAgYm90dG9tLWNhcD9dLFxuICAgOm9yIHt0b3AtY2FwPyB0cnVlLCBib3R0b20tY2FwPyB0cnVlfX1dXG4gKGxldFxuICBbZXh0cmFcbiAgICgrIChpZiB0b3AtY2FwPyAyIDApIChpZiBib3R0b20tY2FwPyAyIDApKVxuICAgbnVtLXZlcnRpY2VzXG4gICAoKiAoaW5jIHJhZGlhbC1zdWJkaXZpc2lvbnMpICgrIHZlcnRpY2FsLXN1YmRpdmlzaW9ucyAxIGV4dHJhKSlcbiAgIHZlcnRzLWFyb3VuZC1lZGdlXG4gICAoaW5jIHJhZGlhbC1zdWJkaXZpc2lvbnMpXG4gICBzbGFudFxuICAgKG1hdGggYXRhbjIgKC0gYm90dG9tLXJhZGl1cyB0b3AtcmFkaXVzKSBoZWlnaHQpXG4gICBjb3Mtc2xhbnRcbiAgIChtYXRoIGNvcyBzbGFudClcbiAgIHNpbi1zbGFudFxuICAgKG1hdGggc2luIHNsYW50KVxuICAgc3RhcnRcbiAgIChpZiB0b3AtY2FwPyAtMiAwKVxuICAgZW5kXG4gICAoKyB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMgKGlmIGJvdHRvbS1jYXA/IDIgMCkpXVxuICAoLT5cbiAgIChmblxuICAgIFttIHl5XVxuICAgIChsZXRcbiAgICAgW3ZcbiAgICAgICgvIHl5IHZlcnRpY2FsLXN1YmRpdmlzaW9ucylcbiAgICAgIHlcbiAgICAgICgqIGhlaWdodCB2KVxuICAgICAgW3kgdiByaW5nLXJhZGl1c11cbiAgICAgIChjb25kXG4gICAgICAgKDwgeXkgMClcbiAgICAgICBbMCAxIGJvdHRvbS1yYWRpdXNdXG4gICAgICAgKD4geXkgdmVydGljYWwtc3ViZGl2aXNpb25zKVxuICAgICAgIFtoZWlnaHQgMSB0b3AtcmFkaXVzXVxuICAgICAgIDplbHNlXG4gICAgICAgW3lcbiAgICAgICAgdlxuICAgICAgICAoK1xuICAgICAgICAgYm90dG9tLXJhZGl1c1xuICAgICAgICAgKCpcbiAgICAgICAgICAoLSB0b3AtcmFkaXVzIGJvdHRvbS1yYWRpdXMpXG4gICAgICAgICAgKC8geXkgdmVydGljYWwtc3ViZGl2aXNpb25zKSkpXSlcbiAgICAgIFt5IHYgcmluZy1yYWRpdXNdXG4gICAgICAoaWZcbiAgICAgICAob3IgKD0geXkgLTIpICg9IHl5ICgrIHZlcnRpY2FsLXN1YmRpdmlzaW9ucyAyKSkpXG4gICAgICAgW3kgMCAwXVxuICAgICAgIFt5IHYgcmluZy1yYWRpdXNdKVxuICAgICAgeVxuICAgICAgKC0geSAoLyBoZWlnaHQgMikpXVxuICAgICAocmVkdWNlXG4gICAgICAoZm5cbiAgICAgICBbbSBpaV1cbiAgICAgICAobGV0XG4gICAgICAgIFtzaW5cbiAgICAgICAgIChtYXRoIHNpbiAoLT4gaWkgKCogKG1hdGggUEkpKSAoKiAyKSAoLyByYWRpYWwtc3ViZGl2aXNpb25zKSkpXG4gICAgICAgICBjb3NcbiAgICAgICAgIChtYXRoXG4gICAgICAgICAgY29zXG4gICAgICAgICAgKC0+IGlpICgqIChtYXRoIFBJKSkgKCogMikgKC8gcmFkaWFsLXN1YmRpdmlzaW9ucykpKV1cbiAgICAgICAgKC0+XG4gICAgICAgICBtXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOnBvc2l0aW9uc1xuICAgICAgICAgIChmblxuICAgICAgICAgICBbcG9zaXRpb25zXVxuICAgICAgICAgICAoLT5cbiAgICAgICAgICAgIHBvc2l0aW9uc1xuICAgICAgICAgICAgKGNvbmohICgqIHNpbiByaW5nLXJhZGl1cykpXG4gICAgICAgICAgICAoY29uaiEgeSlcbiAgICAgICAgICAgIChjb25qISAoKiBjb3MgcmluZy1yYWRpdXMpKSkpKVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDpub3JtYWxzXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFtub3JtYWxzXVxuICAgICAgICAgICAoLT5cbiAgICAgICAgICAgIG5vcm1hbHNcbiAgICAgICAgICAgIChjb25qIVxuICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAob3IgKDwgeXkgMCkgKD4geXkgdmVydGljYWwtc3ViZGl2aXNpb25zKSlcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAoKiBzaW4gY29zLXNsYW50KSkpXG4gICAgICAgICAgICAoY29uaiFcbiAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgKDwgeXkgMClcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKGlmICg+IHl5IHZlcnRpY2FsLXN1YmRpdmlzaW9ucykgMSBzaW4tc2xhbnQpKSlcbiAgICAgICAgICAgIChjb25qIVxuICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAob3IgKDwgeXkgMCkgKD4geXkgdmVydGljYWwtc3ViZGl2aXNpb25zKSlcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAoKiBjb3MgY29zLXNsYW50KSkpKSkpXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOnRleGNvb3Jkc1xuICAgICAgICAgIChmblxuICAgICAgICAgICBbdGV4Y29vcmRzXVxuICAgICAgICAgICAoLT5cbiAgICAgICAgICAgIHRleGNvb3Jkc1xuICAgICAgICAgICAgKGNvbmohICgvIGlpIHJhZGlhbC1zdWJkaXZpc2lvbnMpKVxuICAgICAgICAgICAgKGNvbmohICgtIDEgdikpKSkpKSkpXG4gICAgICBtXG4gICAgICAocmFuZ2UgdmVydHMtYXJvdW5kLWVkZ2UpKSkpXG4gICAocmVkdWNlXG4gICAgezpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pfVxuICAgIChyYW5nZSBzdGFydCAoaW5jIGVuZCkpKVxuICAgKGFzc29jXG4gICAgOmluZGljZXNcbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW2luZGljZXMgeXldXG4gICAgICAocmVkdWNlXG4gICAgICAgKGZuXG4gICAgICAgIFtpbmRpY2VzIGlpXVxuICAgICAgICAoLT5cbiAgICAgICAgIGluZGljZXNcbiAgICAgICAgIChjb25qISAoLT4gdmVydHMtYXJvdW5kLWVkZ2UgKCogKCsgeXkgMCkpICgrIDApICgrIGlpKSkpXG4gICAgICAgICAoY29uaiEgKC0+IHZlcnRzLWFyb3VuZC1lZGdlICgqICgrIHl5IDApKSAoKyAxKSAoKyBpaSkpKVxuICAgICAgICAgKGNvbmohICgtPiB2ZXJ0cy1hcm91bmQtZWRnZSAoKiAoKyB5eSAxKSkgKCsgMSkgKCsgaWkpKSlcbiAgICAgICAgIChjb25qISAoLT4gdmVydHMtYXJvdW5kLWVkZ2UgKCogKCsgeXkgMCkpICgrIDApICgrIGlpKSkpXG4gICAgICAgICAoY29uaiEgKC0+IHZlcnRzLWFyb3VuZC1lZGdlICgqICgrIHl5IDEpKSAoKyAxKSAoKyBpaSkpKVxuICAgICAgICAgKGNvbmohICgtPiB2ZXJ0cy1hcm91bmQtZWRnZSAoKiAoKyB5eSAxKSkgKCsgMCkgKCsgaWkpKSkpKVxuICAgICAgIGluZGljZXNcbiAgICAgICAocmFuZ2UgcmFkaWFsLXN1YmRpdmlzaW9ucykpKVxuICAgICAodHJhbnNpZW50IFtdKVxuICAgICAocmFuZ2UgKCsgdmVydGljYWwtc3ViZGl2aXNpb25zIGV4dHJhKSkpKVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSB7OnN5bSBjcmVzY2VudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3ZlcnRpY2FsLXJhZGl1cyBvdXRlci1yYWRpdXMgaW5uZXItcmFkaXVzIHRoaWNrbmVzcyBzdWJkaXZpc2lvbnMtZG93biBzdGFydC1vZmZzZXQgZW5kLW9mZnNldF0sIDpvciB7c3RhcnQtb2Zmc2V0IDAsIGVuZC1vZmZzZXQgMX19XSl9LCA6c291cmNlICIoZGVmblxuIGNyZXNjZW50XG4gW3s6a2V5c1xuICAgW3ZlcnRpY2FsLXJhZGl1c1xuICAgIG91dGVyLXJhZGl1c1xuICAgIGlubmVyLXJhZGl1c1xuICAgIHRoaWNrbmVzc1xuICAgIHN1YmRpdmlzaW9ucy1kb3duXG4gICAgc3RhcnQtb2Zmc2V0XG4gICAgZW5kLW9mZnNldF0sXG4gICA6b3Ige3N0YXJ0LW9mZnNldCAwLCBlbmQtb2Zmc2V0IDF9fV1cbiAobGV0XG4gIFtzdWJkaXZpc2lvbnMtdGhpY2tcbiAgIDJcbiAgIG9mZnNldC1yYW5nZVxuICAgKC0gZW5kLW9mZnNldCBzdGFydC1vZmZzZXQpXG4gICBudW0tdmVydGljZXNcbiAgICgtPiAoaW5jIHN1YmRpdmlzaW9ucy1kb3duKSAoKiAyKSAoKiAoKyAyIHN1YmRpdmlzaW9ucy10aGljaykpKVxuICAgbGVycFxuICAgKGZuIFthIGIgc10gKC0+IGEgKCsgKC0gYiBhKSkgKCogcykpKVxuICAgY3JlYXRlLWFyY1xuICAgKGZuXG4gICAgW20gYXJjLXJhZGl1cyB4IG5vcm1hbC1tdWx0IG5vcm1hbC1hZGQgdS1tdWx0IHUtYWRkXVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbbSB6XVxuICAgICAgKGxldFxuICAgICAgIFt1LWJhY2tcbiAgICAgICAgKC8geCAoZGVjIHN1YmRpdmlzaW9ucy10aGljaykpXG4gICAgICAgIHZcbiAgICAgICAgKC8geiBzdWJkaXZpc2lvbnMtZG93bilcbiAgICAgICAgeC1iYWNrXG4gICAgICAgICgqICgtIHUtYmFjayAwLjUpIDIpXG4gICAgICAgIGFuZ2xlXG4gICAgICAgICgtPiAoKiB2IG9mZnNldC1yYW5nZSkgKCsgc3RhcnQtb2Zmc2V0KSAoKiAobWF0aCBQSSkpKVxuICAgICAgICBzXG4gICAgICAgIChtYXRoIHNpbiBhbmdsZSlcbiAgICAgICAgY1xuICAgICAgICAobWF0aCBjb3MgYW5nbGUpXG4gICAgICAgIHJhZGl1c1xuICAgICAgICAobGVycCB2ZXJ0aWNhbC1yYWRpdXMgYXJjLXJhZGl1cyBzKVxuICAgICAgICBweFxuICAgICAgICAoKiB4LWJhY2sgdGhpY2tuZXNzKVxuICAgICAgICBweVxuICAgICAgICAoKiBjIHZlcnRpY2FsLXJhZGl1cylcbiAgICAgICAgcHpcbiAgICAgICAgKCogcyByYWRpdXMpXG4gICAgICAgIFtueCBueSBuel1cbiAgICAgICAgKC0+PiBbMCBzIGNdIChtYXB2ICogbm9ybWFsLW11bHQpIChtYXB2ICsgbm9ybWFsLWFkZCkpXVxuICAgICAgICgtPlxuICAgICAgICBtXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDpwb3NpdGlvbnNcbiAgICAgICAgIChmblxuICAgICAgICAgIFtwb3NpdGlvbnNdXG4gICAgICAgICAgKC0+IHBvc2l0aW9ucyAoY29uaiEgcHgpIChjb25qISBweSkgKGNvbmohIHB6KSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6bm9ybWFsc1xuICAgICAgICAgKGZuIFtub3JtYWxzXSAoLT4gbm9ybWFscyAoY29uaiEgbngpIChjb25qISBueSkgKGNvbmohIG56KSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6dGV4Y29vcmRzXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbdGV4Y29vcmRzXVxuICAgICAgICAgICgtPlxuICAgICAgICAgICB0ZXhjb29yZHNcbiAgICAgICAgICAgKGNvbmohICgrICgqIHUtYmFjayB1LW11bHQpIHUtYWRkKSlcbiAgICAgICAgICAgKGNvbmohIHYpKSkpKSkpXG4gICAgIG1cbiAgICAgKHJhbmdlIChpbmMgc3ViZGl2aXNpb25zLWRvd24pKSkpXG4gICBudW0tdmVydGljZXMtZG93blxuICAgKGluYyBzdWJkaXZpc2lvbnMtZG93bilcbiAgIGNyZWF0ZS1zdXJmYWNlXG4gICAoZm5cbiAgICBbbSBsZWZ0LWFyYy1vZmZzZXQgcmlnaHQtYXJjLW9mZnNldF1cbiAgICAodXBkYXRlXG4gICAgIG1cbiAgICAgOmluZGljZXNcbiAgICAgKGZuXG4gICAgICBbaW5kaWNlc11cbiAgICAgIChyZWR1Y2VcbiAgICAgICAoZm5cbiAgICAgICAgW2luZGljZXMgel1cbiAgICAgICAgKC0+XG4gICAgICAgICBpbmRpY2VzXG4gICAgICAgICAoY29uaiEgKCsgbGVmdC1hcmMtb2Zmc2V0IHogMCkpXG4gICAgICAgICAoY29uaiEgKCsgbGVmdC1hcmMtb2Zmc2V0IHogMSkpXG4gICAgICAgICAoY29uaiEgKCsgcmlnaHQtYXJjLW9mZnNldCB6IDApKVxuICAgICAgICAgKGNvbmohICgrIGxlZnQtYXJjLW9mZnNldCB6IDEpKVxuICAgICAgICAgKGNvbmohICgrIHJpZ2h0LWFyYy1vZmZzZXQgeiAxKSlcbiAgICAgICAgIChjb25qISAoKyByaWdodC1hcmMtb2Zmc2V0IHogMCkpKSlcbiAgICAgICBpbmRpY2VzXG4gICAgICAgKHJhbmdlIHN1YmRpdmlzaW9ucy1kb3duKSkpKSldXG4gICgtPlxuICAgKGZuXG4gICAgW20geF1cbiAgICAobGV0XG4gICAgIFt1LWJhY2sgKC0+IHggKC8gKGRlYyBzdWJkaXZpc2lvbnMtdGhpY2spKSAoLSAwLjUpICgqIDIpKV1cbiAgICAgKC0+XG4gICAgICBtXG4gICAgICAoY3JlYXRlLWFyYyBvdXRlci1yYWRpdXMgeCBbMSAxIDFdIFswIDAgMF0gMSAwKVxuICAgICAgKGNyZWF0ZS1hcmMgb3V0ZXItcmFkaXVzIHggWzAgMCAwXSBbdS1iYWNrIDAgMF0gMCAwKVxuICAgICAgKGNyZWF0ZS1hcmMgaW5uZXItcmFkaXVzIHggWzEgMSAxXSBbMCAwIDBdIDEgMClcbiAgICAgIChjcmVhdGUtYXJjIGlubmVyLXJhZGl1cyB4IFswIDAgMF0gW3UtYmFjayAwIDBdIDAgMSkpKSlcbiAgIChyZWR1Y2VcbiAgICB7OnBvc2l0aW9ucyAodHJhbnNpZW50IFtdKSxcbiAgICAgOm5vcm1hbHMgKHRyYW5zaWVudCBbXSksXG4gICAgIDp0ZXhjb29yZHMgKHRyYW5zaWVudCBbXSksXG4gICAgIDppbmRpY2VzICh0cmFuc2llbnQgW10pfVxuICAgIChyYW5nZSBzdWJkaXZpc2lvbnMtdGhpY2spKVxuICAgKGNyZWF0ZS1zdXJmYWNlICgqIG51bS12ZXJ0aWNlcy1kb3duIDApICgqIG51bS12ZXJ0aWNlcy1kb3duIDQpKVxuICAgKGNyZWF0ZS1zdXJmYWNlICgqIG51bS12ZXJ0aWNlcy1kb3duIDUpICgqIG51bS12ZXJ0aWNlcy1kb3duIDcpKVxuICAgKGNyZWF0ZS1zdXJmYWNlICgqIG51bS12ZXJ0aWNlcy1kb3duIDYpICgqIG51bS12ZXJ0aWNlcy1kb3duIDIpKVxuICAgKGNyZWF0ZS1zdXJmYWNlICgqIG51bS12ZXJ0aWNlcy1kb3duIDMpICgqIG51bS12ZXJ0aWNlcy1kb3duIDEpKVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSB7OnN5bSB0b3J1cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3JhZGl1cyB0aGlja25lc3MgcmFkaWFsLXN1YmRpdmlzaW9ucyBib2R5LXN1YmRpdmlzaW9ucyBzdGFydC1hbmdsZSBlbmQtYW5nbGVdLCA6b3Ige3N0YXJ0LWFuZ2xlIDAsIGVuZC1hbmdsZSAoKiAyIChtYXRoIFBJKSl9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0b3J1c1xuIFt7OmtleXNcbiAgIFtyYWRpdXNcbiAgICB0aGlja25lc3NcbiAgICByYWRpYWwtc3ViZGl2aXNpb25zXG4gICAgYm9keS1zdWJkaXZpc2lvbnNcbiAgICBzdGFydC1hbmdsZVxuICAgIGVuZC1hbmdsZV0sXG4gICA6b3Ige3N0YXJ0LWFuZ2xlIDAsIGVuZC1hbmdsZSAoKiAyIChtYXRoIFBJKSl9fV1cbiAobGV0XG4gIFthbmdsZS1yYW5nZVxuICAgKC0gZW5kLWFuZ2xlIHN0YXJ0LWFuZ2xlKVxuICAgcmFkaWFsLXBhcnRzXG4gICAoaW5jIHJhZGlhbC1zdWJkaXZpc2lvbnMpXG4gICBib2R5LXBhcnRzXG4gICAoaW5jIGJvZHktc3ViZGl2aXNpb25zKVxuICAgbnVtLXZlcnRpY2VzXG4gICAoKiByYWRpYWwtcGFydHMgYm9keS1wYXJ0cyldXG4gICgtPlxuICAgKGZuXG4gICAgW20gc2xpY2VdXG4gICAgKGxldFxuICAgICBbdlxuICAgICAgKC8gc2xpY2UgYm9keS1zdWJkaXZpc2lvbnMpXG4gICAgICBzbGljZS1hbmdsZVxuICAgICAgKCogdiAobWF0aCBQSSkgMilcbiAgICAgIHNsaWNlLXNpblxuICAgICAgKG1hdGggc2luIHNsaWNlLWFuZ2xlKVxuICAgICAgcmluZy1yYWRpdXNcbiAgICAgICgrIHJhZGl1cyAoKiBzbGljZS1zaW4gdGhpY2tuZXNzKSlcbiAgICAgIG55XG4gICAgICAobWF0aCBjb3Mgc2xpY2UtYW5nbGUpXG4gICAgICB5XG4gICAgICAoKiBueSB0aGlja25lc3MpXVxuICAgICAocmVkdWNlXG4gICAgICAoZm5cbiAgICAgICBbbSByaW5nXVxuICAgICAgIChsZXRcbiAgICAgICAgW3VcbiAgICAgICAgICgvIHJpbmcgcmFkaWFsLXN1YmRpdmlzaW9ucylcbiAgICAgICAgIHJpbmctYW5nbGVcbiAgICAgICAgICgrIHN0YXJ0LWFuZ2xlICgqIHUgYW5nbGUtcmFuZ2UpKVxuICAgICAgICAgeC1zaW5cbiAgICAgICAgIChtYXRoIHNpbiByaW5nLWFuZ2xlKVxuICAgICAgICAgei1jb3NcbiAgICAgICAgIChtYXRoIGNvcyByaW5nLWFuZ2xlKVxuICAgICAgICAgeFxuICAgICAgICAgKCogeC1zaW4gcmluZy1yYWRpdXMpXG4gICAgICAgICB6XG4gICAgICAgICAoKiB6LWNvcyByaW5nLXJhZGl1cylcbiAgICAgICAgIG54XG4gICAgICAgICAoKiB4LXNpbiBzbGljZS1zaW4pXG4gICAgICAgICBuelxuICAgICAgICAgKCogei1jb3Mgc2xpY2Utc2luKV1cbiAgICAgICAgKC0+XG4gICAgICAgICBtXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOnBvc2l0aW9uc1xuICAgICAgICAgIChmblxuICAgICAgICAgICBbcG9zaXRpb25zXVxuICAgICAgICAgICAoLT4gcG9zaXRpb25zIChjb25qISB4KSAoY29uaiEgeSkgKGNvbmohIHopKSkpXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOm5vcm1hbHNcbiAgICAgICAgICAoZm4gW25vcm1hbHNdICgtPiBub3JtYWxzIChjb25qISBueCkgKGNvbmohIG55KSAoY29uaiEgbnopKSkpXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOnRleGNvb3Jkc1xuICAgICAgICAgIChmbiBbdGV4Y29vcmRzXSAoLT4gdGV4Y29vcmRzIChjb25qISB1KSAoY29uaiEgKC0gMSB2KSkpKSkpKSlcbiAgICAgIG1cbiAgICAgIChyYW5nZSByYWRpYWwtcGFydHMpKSkpXG4gICAocmVkdWNlXG4gICAgezpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pfVxuICAgIChyYW5nZSBib2R5LXBhcnRzKSlcbiAgIChhc3NvY1xuICAgIDppbmRpY2VzXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtpbmRpY2VzIHNsaWNlXVxuICAgICAgKHJlZHVjZVxuICAgICAgIChmblxuICAgICAgICBbaW5kaWNlcyByaW5nXVxuICAgICAgICAobGV0XG4gICAgICAgICBbbmV4dC1yaW5nLWluZGV4IChpbmMgcmluZykgbmV4dC1zbGljZS1pbmRleCAoaW5jIHNsaWNlKV1cbiAgICAgICAgICgtPlxuICAgICAgICAgIGluZGljZXNcbiAgICAgICAgICAoY29uaiEgKCsgKCogcmFkaWFsLXBhcnRzIHNsaWNlKSByaW5nKSlcbiAgICAgICAgICAoY29uaiEgKCsgKCogcmFkaWFsLXBhcnRzIG5leHQtc2xpY2UtaW5kZXgpIHJpbmcpKVxuICAgICAgICAgIChjb25qISAoKyAoKiByYWRpYWwtcGFydHMgc2xpY2UpIG5leHQtcmluZy1pbmRleCkpXG4gICAgICAgICAgKGNvbmohICgrICgqIHJhZGlhbC1wYXJ0cyBuZXh0LXNsaWNlLWluZGV4KSByaW5nKSlcbiAgICAgICAgICAoY29uaiEgKCsgKCogcmFkaWFsLXBhcnRzIG5leHQtc2xpY2UtaW5kZXgpIG5leHQtcmluZy1pbmRleCkpXG4gICAgICAgICAgKGNvbmohICgrICgqIHJhZGlhbC1wYXJ0cyBzbGljZSkgbmV4dC1yaW5nLWluZGV4KSkpKSlcbiAgICAgICBpbmRpY2VzXG4gICAgICAgKHJhbmdlIHJhZGlhbC1zdWJkaXZpc2lvbnMpKSlcbiAgICAgKHRyYW5zaWVudCBbXSlcbiAgICAgKHJhbmdlIGJvZHktc3ViZGl2aXNpb25zKSkpXG4gICAodXBkYXRlIDpwb3NpdGlvbnMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDpub3JtYWxzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6dGV4Y29vcmRzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6aW5kaWNlcyBwZXJzaXN0ZW50ISkpKSlcbiJ9IHs6c3ltIGRpc2MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtyYWRpdXMgZGl2aXNpb25zIHN0YWNrcyBpbm5lci1yYWRpdXMgc3RhY2stcG93ZXJdLCA6b3Ige3N0YWNrcyAxLCBpbm5lci1yYWRpdXMgMCwgc3RhY2stcG93ZXIgMX19XSl9LCA6c291cmNlICIoZGVmblxuIGRpc2NcbiBbezprZXlzIFtyYWRpdXMgZGl2aXNpb25zIHN0YWNrcyBpbm5lci1yYWRpdXMgc3RhY2stcG93ZXJdLFxuICAgOm9yIHtzdGFja3MgMSwgaW5uZXItcmFkaXVzIDAsIHN0YWNrLXBvd2VyIDF9fV1cbiAobGV0XG4gIFtudW0tdmVydGljZXNcbiAgICgqIChpbmMgZGl2aXNpb25zKSAoaW5jIHN0YWNrcykpXG4gICByYWRpdXMtc3BhblxuICAgKC0gcmFkaXVzIGlubmVyLXJhZGl1cylcbiAgIHBvaW50cy1wZXItc3RhY2tcbiAgIChpbmMgZGl2aXNpb25zKV1cbiAgKC0+XG4gICAoZm5cbiAgICBbbSBzdGFja11cbiAgICAobGV0XG4gICAgIFtzdGFjay1yYWRpdXNcbiAgICAgICgrXG4gICAgICAgaW5uZXItcmFkaXVzXG4gICAgICAgKCogcmFkaXVzLXNwYW4gKG1hdGggcG93ICgvIHN0YWNrIHN0YWNrcykgc3RhY2stcG93ZXIpKSldXG4gICAgICgtPlxuICAgICAgKGZuXG4gICAgICAgW20gaV1cbiAgICAgICAobGV0XG4gICAgICAgIFtmaXJzdC1pbmRleFxuICAgICAgICAgKDpmaXJzdC1pbmRleCBtKVxuICAgICAgICAgdGhldGFcbiAgICAgICAgICgtPiAyICgqIChtYXRoIFBJKSkgKCogaSkgKC8gZGl2aXNpb25zKSlcbiAgICAgICAgIHhcbiAgICAgICAgICgqIHN0YWNrLXJhZGl1cyAobWF0aCBjb3MgdGhldGEpKVxuICAgICAgICAgelxuICAgICAgICAgKCogc3RhY2stcmFkaXVzIChtYXRoIHNpbiB0aGV0YSkpXVxuICAgICAgICAoLT5cbiAgICAgICAgIG1cbiAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICA6cG9zaXRpb25zXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFtwb3NpdGlvbnNdXG4gICAgICAgICAgICgtPiBwb3NpdGlvbnMgKGNvbmohIHgpIChjb25qISAwKSAoY29uaiEgeikpKSlcbiAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICA6bm9ybWFsc1xuICAgICAgICAgIChmbiBbbm9ybWFsc10gKC0+IG5vcm1hbHMgKGNvbmohIDApIChjb25qISAxKSAoY29uaiEgMCkpKSlcbiAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICA6dGV4Y29vcmRzXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFt0ZXhjb29yZHNdXG4gICAgICAgICAgICgtPlxuICAgICAgICAgICAgdGV4Y29vcmRzXG4gICAgICAgICAgICAoY29uaiEgKC0gMSAoLyBpIGRpdmlzaW9ucykpKVxuICAgICAgICAgICAgKGNvbmohICgvIHN0YWNrIHN0YWNrcykpKSkpXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOmluZGljZXNcbiAgICAgICAgICAoZm5cbiAgICAgICAgICAgW2luZGljZXNdXG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgKGFuZCAocG9zPyBzdGFjaykgKG5vdD0gaSBkaXZpc2lvbnMpKVxuICAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgIFthXG4gICAgICAgICAgICAgICgrIGZpcnN0LWluZGV4IGkgMSlcbiAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICAoKyBmaXJzdC1pbmRleCBpKVxuICAgICAgICAgICAgICBjXG4gICAgICAgICAgICAgICgtPiBmaXJzdC1pbmRleCAoKyBpKSAoLSBwb2ludHMtcGVyLXN0YWNrKSlcbiAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAoLT4gZmlyc3QtaW5kZXggKCsgKGluYyBpKSkgKC0gcG9pbnRzLXBlci1zdGFjaykpXVxuICAgICAgICAgICAgICgtPlxuICAgICAgICAgICAgICBpbmRpY2VzXG4gICAgICAgICAgICAgIChjb25qISBhKVxuICAgICAgICAgICAgICAoY29uaiEgYilcbiAgICAgICAgICAgICAgKGNvbmohIGMpXG4gICAgICAgICAgICAgIChjb25qISBhKVxuICAgICAgICAgICAgICAoY29uaiEgYylcbiAgICAgICAgICAgICAgKGNvbmohIGQpKSlcbiAgICAgICAgICAgIGluZGljZXMpKSkpKSlcbiAgICAgIChyZWR1Y2UgbSAocmFuZ2UgKGluYyBkaXZpc2lvbnMpKSlcbiAgICAgICh1cGRhdGUgOmZpcnN0LWluZGV4ICsgKGluYyBkaXZpc2lvbnMpKSkpKVxuICAgKHJlZHVjZVxuICAgIHs6Zmlyc3QtaW5kZXggMCxcbiAgICAgOnBvc2l0aW9ucyAodHJhbnNpZW50IFtdKSxcbiAgICAgOm5vcm1hbHMgKHRyYW5zaWVudCBbXSksXG4gICAgIDp0ZXhjb29yZHMgKHRyYW5zaWVudCBbXSksXG4gICAgIDppbmRpY2VzICh0cmFuc2llbnQgW10pfVxuICAgIChyYW5nZSAoaW5jIHN0YWNrcykpKVxuICAgKGRpc3NvYyA6Zmlyc3QtaW5kZXgpXG4gICAodXBkYXRlIDpwb3NpdGlvbnMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDpub3JtYWxzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6dGV4Y29vcmRzIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6aW5kaWNlcyBwZXJzaXN0ZW50ISkpKSlcbiJ9KSwgZXhwb3VuZC5wcm9ibGVtcyAoezpzeW0gaGlnaGxpZ2h0LWxpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJlZml4IHJlcGxhY2VtZW50XSl9LCA6c291cmNlICIoZGVmblxuIGhpZ2hsaWdodC1saW5lXG4gW3ByZWZpeCByZXBsYWNlbWVudF1cbiAobGV0XG4gIFttYXgtd2lkdGhcbiAgIChhcHBseVxuICAgIG1heFxuICAgIChtYXBcbiAgICAgKGZuKiBbcDFfXzQ1MDEzI10gKGNvdW50IChzdHIgcDFfXzQ1MDEzIykpKVxuICAgICAoc3RyaW5nL3NwbGl0LWxpbmVzIHJlcGxhY2VtZW50KSkpXVxuICAocHJpbnRlci9pbmRlbnRcbiAgIChjb3VudCAoc3RyIHByZWZpeCkpXG4gICAoYXBwbHkgc3RyIChyZXBlYXQgbWF4LXdpZHRoIFwiXlwiKSkpKSlcbiJ9IHs6c3ltIHZhbHVlLWluLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2YWx1ZS1pbiBwYXRocy92YWx1ZS1pbilcbiJ9IHs6c3ltIGZpeC12aWEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBwcm9ibGVtXSl9LCA6c291cmNlICIoZGVmblxuIGZpeC12aWFcbiBbc3BlYyBwcm9ibGVtXVxuIChpZlxuICAoPSBzcGVjIChmaXJzdCAoOnZpYSBwcm9ibGVtKSkpXG4gIChhc3NvYyBwcm9ibGVtIDpleHBvdW5kL3ZpYSAoOnZpYSBwcm9ibGVtKSlcbiAgKGFzc29jIHByb2JsZW0gOmV4cG91bmQvdmlhIChpbnRvIFtzcGVjXSAoOnZpYSBwcm9ibGVtKSkpKSlcbiJ9IHs6c3ltIGFubm90YXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cGxhaW4tZGF0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbm5vdGF0ZVxuIFtleHBsYWluLWRhdGFdXG4gKGxldFxuICBbezpjbG9qdXJlLnNwZWMuYWxwaGEva2V5cyBbcHJvYmxlbXMgdmFsdWUgYXJncyByZXQgZm4gZmFpbHVyZSBzcGVjXX1cbiAgIGV4cGxhaW4tZGF0YVxuICAgY2FsbGVyXG4gICAob3JcbiAgICAoOmNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NhbGxlciBleHBsYWluLWRhdGEpXG4gICAgKDpvcmNoZXN0cmEuc3BlYy50ZXN0L2NhbGxlciBleHBsYWluLWRhdGEpKVxuICAgZm9ybVxuICAgKGlmXG4gICAgKG5vdD0gOmluc3RydW1lbnQgZmFpbHVyZSlcbiAgICB2YWx1ZVxuICAgIChjb25kXG4gICAgIChjb250YWlucz8gZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvcmV0KVxuICAgICByZXRcbiAgICAgKGNvbnRhaW5zPyBleHBsYWluLWRhdGEgOmNsb2p1cmUuc3BlYy5hbHBoYS9hcmdzKVxuICAgICBhcmdzXG4gICAgIChjb250YWlucz8gZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvZm4pXG4gICAgIGZuKSlcbiAgIHByb2JsZW1zJ1xuICAgKG1hcFxuICAgIChjb21wXG4gICAgIChwYXJ0aWFsIGFkanVzdC1pbiBmb3JtKVxuICAgICAocGFydGlhbCBhZGp1c3QtcGF0aCBmYWlsdXJlKVxuICAgICAocGFydGlhbCBhZGQtc3BlYyBzcGVjKVxuICAgICAocGFydGlhbCBmaXgtdmlhIHNwZWMpXG4gICAgIChmbiogW3AxX180NTAxNCNdIChhc3NvYyBwMV9fNDUwMTQjIDpleHBvdW5kL2Zvcm0gZm9ybSkpXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUwMTUjXVxuICAgICAgKGFzc29jXG4gICAgICAgcDFfXzQ1MDE1I1xuICAgICAgIDpleHBvdW5kLnNwZWMucHJvYmxlbS90eXBlXG4gICAgICAgKHB0eXBlIGZhaWx1cmUgcDFfXzQ1MDE1IykpKSlcbiAgICBwcm9ibGVtcyldXG4gICgtPlxuICAgZXhwbGFpbi1kYXRhXG4gICAoYXNzb2NcbiAgICA6ZXhwb3VuZC9mb3JtXG4gICAgZm9ybVxuICAgIDpleHBvdW5kL2NhbGxlclxuICAgIGNhbGxlclxuICAgIDpleHBvdW5kL3Byb2JsZW1zXG4gICAgcHJvYmxlbXMnKSkpKVxuIn0gezpzeW0gZXNjYXBlLXJlcGxhY2VtZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BhdHRlcm4gc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGUtcmVwbGFjZW1lbnRcbiBbcGF0dGVybiBzXVxuICM/KDpjbGogKGlmIChzdHJpbmc/IHBhdHRlcm4pIHMgKHN0cmluZy9yZS1xdW90ZS1yZXBsYWNlbWVudCBzKSkgOmNsanMgKHN0cmluZy9yZXBsYWNlIHMgI1wiXFwkXCIgXCIkJCQkXCIpKSlcbiJ9IHs6c3ltIGhpZ2hsaWdodGVkLXZhbHVlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBwcm9ibGVtLCByZXR1cm5zIGEgcHJldHR5IHByaW50ZWRcbiAgIHN0cmluZyB0aGF0IGhpZ2hsaWdodHMgdGhlIHByb2JsZW0gdmFsdWUiLCA6YXJnbGlzdHMgKFtvcHRzIHByb2JsZW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gaGlnaGxpZ2h0ZWQtdmFsdWVcbiBcIkdpdmVuIGEgcHJvYmxlbSwgcmV0dXJucyBhIHByZXR0eSBwcmludGVkXFxuICAgc3RyaW5nIHRoYXQgaGlnaGxpZ2h0cyB0aGUgcHJvYmxlbSB2YWx1ZVwiXG4gW29wdHMgcHJvYmxlbV1cbiAobGV0XG4gIFt7OmtleXMgWzpleHBvdW5kL2Zvcm0gOmV4cG91bmQvaW5dfVxuICAgcHJvYmxlbVxuICAgezprZXlzIFtzaG93LXZhbGlkLXZhbHVlcz9dLCA6b3Ige3Nob3ctdmFsaWQtdmFsdWVzPyBmYWxzZX19XG4gICBvcHRzXG4gICBwcmludGVkLXZhbFxuICAgKHByaW50ZXIvcHByaW50LXN0ciAocGF0aHMvdmFsdWUtaW4gZm9ybSBpbikpXG4gICByZWxldmFudFxuICAgKHN0clxuICAgIFwiKFwiXG4gICAgOmV4cG91bmQucHJvYmxlbXMvcmVsZXZhbnRcbiAgICBcInwoXCJcbiAgICA6ZXhwb3VuZC5wcm9ibGVtcy9rdi1yZWxldmFudFxuICAgIFwiXFxcXHMrXCJcbiAgICA6ZXhwb3VuZC5wcm9ibGVtcy9rdi1yZWxldmFudFxuICAgIFwiKSlcIilcbiAgIHJlZ2V4XG4gICAocmUtcGF0dGVybiAoc3RyIFwiKC4qKVwiIHJlbGV2YW50IFwiLipcIikpXG4gICBzXG4gICAoYmluZGluZ1xuICAgIFsqcHJpbnQtbmFtZXNwYWNlLW1hcHMqIGZhbHNlXVxuICAgIChwcmludGVyL3BwcmludC1zdHJcbiAgICAgKHdhbGsvcHJld2Fsay1yZXBsYWNlXG4gICAgICB7OmV4cG91bmQucHJvYmxlbXMvaXJyZWxldmFudCAnLi4ufVxuICAgICAgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gZm9ybSBpbikpKSlcbiAgIFtsaW5lIHByZWZpeCAmIF9tb3JlXVxuICAgKHJlLWZpbmQgcmVnZXggcylcbiAgIGhpZ2hsaWdodGVkLWxpbmVcbiAgICgtPlxuICAgIGxpbmVcbiAgICAoc3RyaW5nL3JlcGxhY2VcbiAgICAgKHJlLXBhdHRlcm4gcmVsZXZhbnQpXG4gICAgIChlc2NhcGUtcmVwbGFjZW1lbnRcbiAgICAgIChyZS1wYXR0ZXJuIHJlbGV2YW50KVxuICAgICAgKHByaW50ZXIvaW5kZW50XG4gICAgICAgMFxuICAgICAgIChjb3VudCBwcmVmaXgpXG4gICAgICAgKGFuc2kvY29sb3IgcHJpbnRlZC12YWwgOmJhZC12YWx1ZSkpKSlcbiAgICAoc3RyXG4gICAgIFwiXFxuXCJcbiAgICAgKGFuc2kvY29sb3IgKGhpZ2hsaWdodC1saW5lIHByZWZpeCBwcmludGVkLXZhbCkgOnBvaW50ZXIpKSldXG4gIChwcmludGVyL25vLXRyYWlsaW5nLXdoaXRlc3BhY2VcbiAgIChzdHJpbmcvcmVwbGFjZSBzIGxpbmUgKGVzY2FwZS1yZXBsYWNlbWVudCBsaW5lIGhpZ2hsaWdodGVkLWxpbmUpKSkpKVxuIn0gezpzeW0gdHlwZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdHlwZSBwdHlwZSlcbiJ9IHs6c3ltIHN1bW1hcnktZm9ybSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaG93LXZhbGlkLXZhbHVlcz8gZm9ybSBpbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdW1tYXJ5LWZvcm1cbiBbc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW5dXG4gKGxldFxuICBbW2sgJiByc3RdXG4gICBpblxuICAgcnN0XG4gICAob3IgcnN0IFtdKVxuICAgZGlzcGxheWVkLWZvcm1cbiAgIChpZiBzaG93LXZhbGlkLXZhbHVlcz8gZm9ybSAoYmxhbmstZm9ybSBmb3JtKSldXG4gIChjb25kXG4gICAoZW1wdHk/IGluKVxuICAgOmV4cG91bmQucHJvYmxlbXMvcmVsZXZhbnRcbiAgIChhbmQgKG1hcD8gZm9ybSkgKHBhdGhzL2twcz8gaykpXG4gICAoLT5cbiAgICBkaXNwbGF5ZWQtZm9ybVxuICAgIChkaXNzb2MgKDprZXkgaykpXG4gICAgKGFzc29jXG4gICAgIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/ICg6a2V5IGspIHJzdClcbiAgICAgOmV4cG91bmQucHJvYmxlbXMvaXJyZWxldmFudCkpXG4gICAoYW5kIChtYXA/IGZvcm0pIChwYXRocy9rdnBzPyBrKSlcbiAgIChyZWN1ciBzaG93LXZhbGlkLXZhbHVlcz8gKG50aCAoc2VxIGZvcm0pICg6aWR4IGspKSByc3QpXG4gICAoYXNzb2NpYXRpdmU/IGZvcm0pXG4gICAoYXNzb2NcbiAgICBkaXNwbGF5ZWQtZm9ybVxuICAgIGtcbiAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAoZ2V0IGZvcm0gaykgcnN0KSlcbiAgIChhbmQgKGludD8gaykgKHNlcT8gZm9ybSkpXG4gICAoYXBwbHlcbiAgICBsaXN0XG4gICAgKC0+XG4gICAgIGRpc3BsYXllZC1mb3JtXG4gICAgIHZlY1xuICAgICAoYXNzb2MgayAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAobnRoIGZvcm0gaykgcnN0KSkpKVxuICAgKGFuZCAoaW50PyBrKSAoc2V0PyBmb3JtKSlcbiAgIChpbnRvXG4gICAgI3t9XG4gICAgKC0+XG4gICAgIGRpc3BsYXllZC1mb3JtXG4gICAgIHZlY1xuICAgICAoYXNzb2NcbiAgICAgIGtcbiAgICAgIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/IChudGggKHNlcSBmb3JtKSBrKSByc3QpKSkpXG4gICAoYW5kIChpbnQ/IGspIChsaXN0PyBmb3JtKSlcbiAgIChpbnRvXG4gICAgJygpXG4gICAgKC0+XG4gICAgIGRpc3BsYXllZC1mb3JtXG4gICAgIHZlY1xuICAgICAoYXNzb2NcbiAgICAgIGtcbiAgICAgIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/IChudGggKHNlcSBmb3JtKSBrKSByc3QpKSkpXG4gICAoYW5kIChpbnQ/IGspIChzdHJpbmc/IGZvcm0pKVxuICAgKHN0cmluZy9qb2luIChhc3NvYyAodmVjIGZvcm0pIGsgOmV4cG91bmQucHJvYmxlbXMvcmVsZXZhbnQpKVxuICAgOmVsc2VcbiAgICh0aHJvd1xuICAgIChleC1pbmZvXG4gICAgIFwiQ2Fubm90IGZpbmQgcGF0aCBzZWdtZW50IGluIGZvcm0uIFRoaXMgY2FuIGJlIGNhdXNlZCBieSB1c2luZyBjb25mb3JtZXJzIHRvIHRyYW5zZm9ybSB2YWx1ZXMsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gRXhwb3VuZFwiXG4gICAgIHs6Zm9ybSBmb3JtLCA6aW4gaW59KSkpKSlcbiJ9IHs6c3ltIGJsYW5rLWZvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBibGFuay1mb3JtXG4gW2Zvcm1dXG4gKGNvbmRcbiAgKG1hcD8gZm9ybSlcbiAgKHppcG1hcCAoa2V5cyBmb3JtKSAocmVwZWF0IDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxuICAodmVjdG9yPyBmb3JtKVxuICAodmVjIChyZXBlYXQgKGNvdW50IGZvcm0pIDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxuICAoc2V0PyBmb3JtKVxuICBmb3JtXG4gIChvciAobGlzdD8gZm9ybSkgKHNlcT8gZm9ybSkpXG4gIChhcHBseSBsaXN0IChyZXBlYXQgKGNvdW50IGZvcm0pIDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxuICA6ZWxzZVxuICA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiJ9KSwgY2xqcy5zcGVjLmdlbi5hbHBoYSAoezpzeW0gcXVpY2stY2hlY2ssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmbiBxdWljay1jaGVjayBbJiBhcmdzXSAoYXBwbHkgQHF1aWNrLWNoZWNrLXJlZiBhcmdzKSlcbiJ9IHs6c3ltIGZvci1hbGwqLCA6bWV0YSB7OmRvYyAiRHluYW1pY2FsbHkgbG9hZGVkIGNsb2p1cmUudGVzdC5jaGVjay5wcm9wZXJ0aWVzL2Zvci1hbGwqLiIsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3ItYWxsKlxuIFwiRHluYW1pY2FsbHkgbG9hZGVkIGNsb2p1cmUudGVzdC5jaGVjay5wcm9wZXJ0aWVzL2Zvci1hbGwqLlwiXG4gWyYgYXJnc11cbiAoYXBwbHkgQGZvci1hbGwqLXJlZiBhcmdzKSlcbiJ9IHs6c3ltIGRlbGF5LWltcGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2ZuZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWxheS1pbXBsXG4gW2dmbmRdXG4gKGdlbmVyYXRvciAoZm4gW3JuZCBzaXplXSAoKDpnZW4gQGdmbmQpIHJuZCBzaXplKSkpKVxuIn0gezpzeW0gY2F0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGdlbmVyYXRvciBvZiBhIHNlcXVlbmNlIGNhdGVuYXRlZCBmcm9tIHJlc3VsdHMgb2ZcbmdlbnMsIGVhY2ggb2Ygd2hpY2ggc2hvdWxkIGdlbmVyYXRlIHNvbWV0aGluZyBzZXF1ZW50aWFsLiIsIDphcmdsaXN0cyAoWyYgZ2Vuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXRcbiBcIlJldHVybnMgYSBnZW5lcmF0b3Igb2YgYSBzZXF1ZW5jZSBjYXRlbmF0ZWQgZnJvbSByZXN1bHRzIG9mXFxuZ2VucywgZWFjaCBvZiB3aGljaCBzaG91bGQgZ2VuZXJhdGUgc29tZXRoaW5nIHNlcXVlbnRpYWwuXCJcbiBbJiBnZW5zXVxuIChmbWFwIChmbiogW3AxX180NTI5MiNdIChhcHBseSBjb25jYXQgcDFfXzQ1MjkyIykpIChhcHBseSB0dXBsZSBnZW5zKSkpXG4ifSB7OnN5bSBnZW4tZm9yLXByZWQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHByZWRpY2F0ZSwgcmV0dXJucyBhIGJ1aWx0LWluIGdlbmVyYXRvciBpZiBvbmUgZXhpc3RzLiIsIDphcmdsaXN0cyAoW3ByZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2VuLWZvci1wcmVkXG4gXCJHaXZlbiBhIHByZWRpY2F0ZSwgcmV0dXJucyBhIGJ1aWx0LWluIGdlbmVyYXRvciBpZiBvbmUgZXhpc3RzLlwiXG4gW3ByZWRdXG4gKGlmIChzZXQ/IHByZWQpIChlbGVtZW50cyBwcmVkKSAoZ2V0IEBnZW4tYnVpbHRpbnMgcHJlZCkpKVxuIn0pLCBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQgKHs6c3ltIHJhbmQtcmVjdHMtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lIGVudGl0eSBlbnRpdGllc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5kLXJlY3RzLWV4YW1wbGVcbiBbZ2FtZSBlbnRpdHkgZW50aXRpZXNdXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKC0+PlxuICBlbnRpdGllc1xuICAocmVkdWNlLWt2IGkvYXNzb2MgKGkvLT5pbnN0YW5jZWQtZW50aXR5IGVudGl0eSkpXG4gIChjL2NvbXBpbGUgZ2FtZSlcbiAgKGFzc29jIGdhbWUgOmVudGl0eSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChmb3IgW18gKHJhbmdlIDUwKV0gKC0+IGVudGl0eSAocGxheS1jbGpjLnRyYW5zZm9ybXMvY29sb3IgWyhyYW5kKSAocmFuZCkgKHJhbmQpIDFdKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIChyYW5kLWludCBnYW1lLXdpZHRoKSAocmFuZC1pbnQgZ2FtZS1oZWlnaHQpKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgKHJhbmQtaW50IDMwMCkgKHJhbmQtaW50IDMwMCkpKSl9LCA6Ym9keSAobGV0IFtnYW1lIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpIGVudGl0eSAoLT4gKHBsYXktY2xqYy5nbC5lbnRpdGllcy0yZC8tPmVudGl0eSBnYW1lIHBsYXktY2xqYy5wcmltaXRpdmVzLTJkL3JlY3QpIChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkpXSAoLT4+IGZvY3VzIHZlYyAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL3JhbmQtcmVjdHMtZXhhbXBsZSBnYW1lIGVudGl0eSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcmFuZC1yZWN0cy1yZW5kZXIgW3s6a2V5cyBbZW50aXR5XSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIHs6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfX0pIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSBlbnRpdHkpIGdhbWUpKSkpLCA6Ym9keS1zdHIgIihmb3JcbiBbXyAocmFuZ2UgNTApXVxuICgtPlxuICBlbnRpdHlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZVxuICAgKHJhbmQtaW50IGdhbWUtd2lkdGgpXG4gICAocmFuZC1pbnQgZ2FtZS1oZWlnaHQpKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgKHJhbmQtaW50IDMwMCkgKHJhbmQtaW50IDMwMCkpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL3JhbmQtcmVjdHMtZXhhbXBsZS8wIn1dfSB7OnN5bSBpbWFnZS1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWUgezprZXlzIFtkYXRhIHdpZHRoIGhlaWdodF0sIDphcyBpbWFnZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW1hZ2UtZXhhbXBsZVxuIFtnYW1lIHs6a2V5cyBbZGF0YSB3aWR0aCBoZWlnaHRdLCA6YXMgaW1hZ2V9XVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChhc3NvY1xuICBnYW1lXG4gIDplbnRpdHlcbiAgKC0+XG4gICAoYy9jb21waWxlIGdhbWUgKGUvLT5pbWFnZS1lbnRpdHkgZ2FtZSBkYXRhIHdpZHRoIGhlaWdodCkpXG4gICAoYXNzb2MgOmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX0pKVxuICA6aW1hZ2VcbiAgaW1hZ2UpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSBpbWctd2lkdGggaW1nLWhlaWdodCkpKX0sIDpib2R5IChsZXQgW2dhbWUgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1pbWFnZSAiYWludGdvdHRhZXhwbGFpbnNoaXQuanBnIiAoZm4gW2ltYWdlXSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvaW1hZ2UtZXhhbXBsZSBnYW1lIGltYWdlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBpbWFnZS1yZW5kZXIgW3s6a2V5cyBbZW50aXR5IGltYWdlXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpIHNjcmVlbi1yYXRpbyAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSBpbWFnZS1yYXRpbyAoLyAoOndpZHRoIGltYWdlKSAoOmhlaWdodCBpbWFnZSkpIFtpbWctd2lkdGggaW1nLWhlaWdodF0gKGlmICg+IHNjcmVlbi1yYXRpbyBpbWFnZS1yYXRpbykgWygqIGdhbWUtaGVpZ2h0ICgvICg6d2lkdGggaW1hZ2UpICg6aGVpZ2h0IGltYWdlKSkpIGdhbWUtaGVpZ2h0XSBbZ2FtZS13aWR0aCAoKiBnYW1lLXdpZHRoICgvICg6aGVpZ2h0IGltYWdlKSAoOndpZHRoIGltYWdlKSkpXSldIGZvY3VzKSBnYW1lKSkpKSkpLCA6Ym9keS1zdHIgIihwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiBnYW1lXG4gKC0+XG4gIGVudGl0eVxuICAoYXNzb2NcbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSBpbWctd2lkdGggaW1nLWhlaWdodCkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvaW1hZ2UtZXhhbXBsZS8wIn1dfSB7OnN5bSB0cmFuc2xhdGlvbi1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNsYXRpb24tZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKC0+XG4gICAgKGMvY29tcGlsZSBnYW1lIChlLy0+ZW50aXR5IGdhbWUgZGF0YS9mLTJkKSlcbiAgICAoYXNzb2MgOmNsZWFyIHs6Y29sb3IgWzAgMCAwIDBdLCA6ZGVwdGggMX0pKVxuICAgKnN0YXRlXG4gICAoYXRvbSB7OnggMCwgOnkgMH0pXVxuICAoZXUvbGlzdGVuLWZvci1tb3VzZSBnYW1lICpzdGF0ZSlcbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOipzdGF0ZSAqc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IChhc3NvYyBlbnRpdHkgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgeCB5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvY29sb3IgWzEgMCAwLjUgMV0pKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC90cmFuc2xhdGlvbi1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiB0cmFuc2xhdGlvbi1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW3s6a2V5cyBbeCB5XX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpXSAobGV0IFtnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSldIGZvY3VzKSkgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICAoYXNzb2NcbiAgIGVudGl0eVxuICAgOnZpZXdwb3J0XG4gICB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHggeSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC90cmFuc2xhdGlvbi1leGFtcGxlLzAifV19IHs6c3ltIHJvdGF0aW9uLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByb3RhdGlvbi1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoLT5cbiAgICAoYy9jb21waWxlIGdhbWUgKGUvLT5lbnRpdHkgZ2FtZSBkYXRhL2YtMmQpKVxuICAgIChhc3NvYyA6Y2xlYXIgezpjb2xvciBbMCAwIDAgMF0sIDpkZXB0aCAxfSkpXG4gICB0eFxuICAgMTAwXG4gICB0eVxuICAgMTAwXG4gICAqc3RhdGVcbiAgIChhdG9tIHs6dHggdHgsIDp0eSB0eSwgOnIgMH0pXVxuICAoZXUvbGlzdGVuLWZvci1tb3VzZSBnYW1lICpzdGF0ZSlcbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOipzdGF0ZSAqc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcikgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIC01MCAtNzUpKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC9yb3RhdGlvbi1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiByb3RhdGlvbi1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW3s6a2V5cyBbdHggdHkgcl19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKSBnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSldIGZvY3VzKSBnYW1lKSkpLCA6Ym9keS1zdHIgIihwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXJcbiBnYW1lXG4gKC0+XG4gIGVudGl0eVxuICAoYXNzb2NcbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB0eCB0eSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvY29sb3IgWzEgMCAwLjUgMV0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgLTUwIC03NSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvcm90YXRpb24tZXhhbXBsZS8wIn1dfSB7OnN5bSBzY2FsZS1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2NhbGUtZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKC0+XG4gICAgKGMvY29tcGlsZSBnYW1lIChlLy0+ZW50aXR5IGdhbWUgZGF0YS9mLTJkKSlcbiAgICAoYXNzb2MgOmNsZWFyIHs6Y29sb3IgWzAgMCAwIDBdLCA6ZGVwdGggMX0pKVxuICAgdHhcbiAgIDEwMFxuICAgdHlcbiAgIDEwMFxuICAgKnN0YXRlXG4gICAoYXRvbSB7OnR4IHR4LCA6dHkgdHksIDpyeCAxLCA6cnkgMX0pXVxuICAoZXUvbGlzdGVuLWZvci1tb3VzZSBnYW1lICpzdGF0ZSlcbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOipzdGF0ZSAqc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IChhc3NvYyBlbnRpdHkgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3NjYWxlIHJ4IHJ5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvY29sb3IgWzEgMCAwLjUgMV0pKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC9zY2FsZS1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBzY2FsZS1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW3s6a2V5cyBbdHggdHkgcnggcnldfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICAoYXNzb2NcbiAgIGVudGl0eVxuICAgOnZpZXdwb3J0XG4gICB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSByeCByeSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC9zY2FsZS1leGFtcGxlLzAifV19IHs6c3ltIHJvdGF0aW9uLW11bHRpLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByb3RhdGlvbi1tdWx0aS1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoYy9jb21waWxlIGdhbWUgKGUvLT5lbnRpdHkgZ2FtZSBkYXRhL2YtMmQpKVxuICAgdHhcbiAgIDEwMFxuICAgdHlcbiAgIDEwMFxuICAgKnN0YXRlXG4gICAoYXRvbSB7OnR4IHR4LCA6dHkgdHksIDpyIDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKGxvb3AgW2kgMCBlbnRpdHkgKC0+IGVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9jb2xvciBbMSAwIDAuNSAxXSkpXSAod2hlbiAoPCBpIDUpIChsZXQgW2VudGl0eSAoLT4gZW50aXR5IChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcikpXSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgZW50aXR5KSAocmVjdXIgKGluYyBpKSBlbnRpdHkpKSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvcm90YXRpb24tbXVsdGktZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcm90YXRpb24tbXVsdGktcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgezpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9fSkgKGxldCBbezprZXlzIFt0eCB0eSByXX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKV0gZm9jdXMpIGdhbWUpKSksIDpib2R5LXN0ciAiKGxvb3BcbiBbaVxuICAwXG4gIGVudGl0eVxuICAoLT5cbiAgIGVudGl0eVxuICAgKGFzc29jXG4gICAgOnZpZXdwb3J0XG4gICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpXG4gICAocGxheS1jbGpjLnRyYW5zZm9ybXMvY29sb3IgWzEgMCAwLjUgMV0pKV1cbiAod2hlblxuICAoPCBpIDUpXG4gIChsZXRcbiAgIFtlbnRpdHlcbiAgICAoLT5cbiAgICAgZW50aXR5XG4gICAgIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkpXG4gICAgIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcikpXVxuICAgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIGVudGl0eSlcbiAgIChyZWN1ciAoaW5jIGkpIGVudGl0eSkpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL3JvdGF0aW9uLW11bHRpLWV4YW1wbGUvMCJ9XX0pfSwgOmR5bmFkb2MuY29tbW9uL3Zhci1zeW0gZ2FtZS1sb29wfQ==