LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLXVzZS1hc2NpaVxuIgoiICAgICAgICAgIFVzZSAgQVNDSUkgIHRyYW5zZmVyICB3aGVuICBnZXR0aW5nIGFuIEZUUCBmaWxlIG9yIExEQVBcbiIKIiAgICAgICAgICBpbmZvLiBGb3IgRlRQLCB0aGlzIGNhbiBhbHNvIGJlIGVuZm9yY2VkICBieSAgdXNpbmcgIGFuXG4iCiIgICAgICAgICAgVVJMICB0aGF0ICBlbmRzIHdpdGggXCI7dHlwZT1BXCIuIFRoaXMgb3B0aW9uIGNhdXNlcyBkYXRhXG4iCiIgICAgICAgICAgc2VudCB0byBzdGRvdXQgdG8gYmUgaW4gdGV4dCBtb2RlIGZvciB3aW4zMiBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgIGEgICBwcmV2aW91cyAgIGZpbGUgICB0cmFuc2Zlci4gICBUaGlzXG4iCiIgICAgICAgICAgaW5zdHJ1Y3RzICBjdXJsICB0byBjb250aW51ZSBhcHBlbmRpbmcgZGF0YSBvbiB0aGUgZmlsZVxuIgoiICAgICAgICAgIHdoZXJlIGl0IHdhcyBwcmV2aW91c2x5IGxlZnQsICBwb3NzaWJseSAgYmVjYXVzZSAgb2YgIGFcbiIKIiAgICAgICAgICBicm9rZW4gIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlci4gVGhlcmUgbXVzdCBiZSBhIG5hbWVkXG4iCiIgICAgICAgICAgcGh5c2ljYWwgZmlsZSB0byBhcHBlbmQgdG8gZm9yICB0aGlzICB0byAgd29yay4gICBOb3RlOlxuIgoiICAgICAgICAgIFVwbG9hZCAgcmVzdW1lICBpcyBkZXBlbmluZyBvbiBhIGNvbW1hbmQgbmFtZWQgU0laRSBub3RcbiIKIiAgICAgICAgICBhbHdheXMgcHJlc2VudCBpbiBhbGwgZnRwIHNlcnZlcnMhIFVwbG9hZCByZXN1bWUgaXMgZm9yXG4iCiIgICAgICAgICAgRlRQICBvbmx5LiAgIEhUVFAgcmVzdW1lIGlzIG9ubHkgcG9zc2libGUgd2l0aCBIVFRQLzEuMVxuIgoiICAgICAgICAgIG9yIGxhdGVyIHNlcnZlcnMuXG4iCiJcbiIKIiAgICAgLUMvLS1jb250aW51ZS1hdCA8b2Zmc2V0PlxuIgoiICAgICAgICAgIENvbnRpbnVlL1Jlc3VtZSBhIHByZXZpb3VzIGZpbGUgdHJhbnNmZXIgYXQgIHRoZSAgZ2l2ZW5cbiIKIiAgICAgICAgICBvZmZzZXQuICBUaGUgIGdpdmVuIG9mZnNldCBpcyB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzXG4iCiIgICAgICAgICAgdGhhdCB3aWxsIGJlIHNraXBwZWQgY291bnRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgIHRoZVxuIgoiICAgICAgICAgIHNvdXJjZSBmaWxlIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcmVkIHRvIHRoZSBkZXN0aW5hdGlvbi5cbiIKIiAgICAgICAgICBJZiB1c2VkIHdpdGggdXBsb2FkcywgdGhlIGZ0cCBzZXJ2ZXIgY29tbWFuZCBTSVpFICB3aWxsXG4iCiIgICAgICAgICAgbm90ICBiZSAgdXNlZCAgYnkgIGN1cmwuIFVwbG9hZCByZXN1bWUgaXMgZm9yIEZUUCBvbmx5LlxuIgoiICAgICAgICAgIEhUVFAgcmVzdW1lIGlzIG9ubHkgcG9zc2libGUgIHdpdGggIEhUVFAvMS4xICBvciAgbGF0ZXJcbiIKIiAgICAgICAgICBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1kLy0tZGF0YSA8ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNlbmRzICB0aGUgIHNwZWNpZmllZCBkYXRhIGluIGEgUE9TVCByZXF1ZXN0IHRvXG4iCiIgICAgICAgICAgdGhlIEhUVFAgc2VydmVyLiBOb3RlIHRoYXQgdGhlIGRhdGEgaXMgc2VudCBleGFjdGx5ICBhc1xuIgoiICAgICAgICAgIHNwZWNpZmllZCAgd2l0aCAgbm8gIGV4dHJhICBwcm9jZXNzaW5nLiAgIFRoZSAgZGF0YSAgaXNcbiIKIiAgICAgICAgICBleHBlY3RlZCB0byBiZSBcInVybC1lbmNvZGVkXCIuIFRoaXMgd2lsbCBjYXVzZSAgY3VybCAgdG9cbiIKIiAgICAgICAgICBwYXNzICB0aGUgIGRhdGEgIHRvICB0aGUgIHNlcnZlciB1c2luZyB0aGUgY29udGVudC10eXBlXG4iCiIgICAgICAgICAgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkLiBDb21wYXJlIHRvIC1GLlxuIgoiXG4iCiIgICAgICAgICAgSWYgeW91IHN0YXJ0IHRoZSBkYXRhICB3aXRoICB0aGUgIGxldHRlciAgQCwgIHRoZSAgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCAgYmUgIGEgIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sIG9yIC0gaWZcbiIKIiAgICAgICAgICB5b3Ugd2FudCBjdXJsIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSAgc3RkaW4uICAgVGhlICBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLlxuIgoiXG4iCiIgICAgIC1ELy0tZHVtcC1oZWFkZXIgPGZpbGU+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSAgV3JpdGUgIHRoZSBIVFRQIGhlYWRlcnMgdG8gdGhpcyBmaWxlLiBXcml0ZVxuIgoiICAgICAgICAgIHRoZSBGVFAgZmlsZSBpbmZvIHRvIHRoaXMgZmlsZSBpZiAtSS8tLWhlYWQgaXMgdXNlZC5cbiIKIlxuIgoiICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGhhbmR5IHRvIHVzZSB3aGVuIHlvdSB3YW50IHRvIHN0b3JlICB0aGVcbiIKIiAgICAgICAgICBjb29raWVzICB0aGF0ICBhICBIVFRQICBzaXRlICBzZW5kcyB0byB5b3UuIFRoZSBjb29raWVzXG4iCiIgICAgICAgICAgY291bGQgdGhlbiBiZSByZWFkIGluIGEgc2Vjb25kIGN1cmwgaW52b2tlIGJ5IHVzaW5nIHRoZVxuIgoiICAgICAgICAgIC1iLy0tY29va2llIG9wdGlvbiFcbiIKIlxuIgoiICAgICAtZS8tLXJlZmVyZXIgPFVSTD5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIFwiUmVmZXJlciBQYWdlXCIgaW5mb3JtYXRpb24gdG8gdGhlIEhUVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIuIFRoaXMgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIC1ILy0taGVhZGVyICBmbGFnXG4iCiIgICAgICAgICAgb2YgY291cnNlLiAgV2hlbiB1c2VkIHdpdGggLUwvLS1sb2NhdGlvbiB5b3UgY2FuIGFwcGVuZFxuIgoiICAgICAgICAgIFwiO2F1dG9cIiB0byB0aGUgcmVmZXJlciBVUkwgdG8gbWFrZSAgY3VybCAgYXV0b21hdGljYWxseVxuIgoiICAgICAgICAgIHNldCAgdGhlICBwcmV2aW91cyAgVVJMICB3aGVuICBpdCAgZm9sbG93cyAgYSBMb2NhdGlvbjpcbiIKIiAgICAgICAgICBoZWFkZXIuIFRoZSBcIjthdXRvXCIgc3RyaW5nIGNhbiBiZSB1c2VkIGFsb25lLCAgZXZlbiAgaWZcbiIKIiAgICAgICAgICB5b3UgZG9uJ3Qgc2V0IGFuIGluaXRpYWwgcmVmZXJlci5cbiIKIlxuIgoiICAgICAtRS8tLWNlcnQgPGNlcnRpZmljYXRlWzpwYXNzd29yZF0+XG4iCiIgICAgICAgICAgKEhUVFBTKSAgVGVsbHMgIGN1cmwgIHRvICB1c2UgdGhlIHNwZWNpZmllZCBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIGZpbGUgd2hlbiBnZXR0aW5nIGEgZmlsZSB3aXRoICBIVFRQUy4gIFRoZSAgY2VydGlmaWNhdGVcbiIKIiAgICAgICAgICBtdXN0ICBiZSBpbiBQRU0gZm9ybWF0LiAgSWYgdGhlIG9wdGlvbmFsIHBhc3N3b3JkIGlzbid0XG4iCiIgICAgICAgICAgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHF1ZXJpZWQgZm9yIG9uIHRoZSB0ZXJtaW5hbC4gTm90ZVxuIgoiICAgICAgICAgIHRoYXQgIHRoaXMgIGNlcnRpZmljYXRlIGlzIHRoZSBwcml2YXRlIGtleSBhbmQgdGhlIHByaa1cbiIKIiAgICAgICAgICB2YXRlIGNlcnRpZmljYXRlIGNvbmNhdGVuYXRlZCFcbiIKIlxuIgoiICAgICAtZi8tLWZhaWxcbiIKIiAgICAgICAgICAoSFRUUCkgRmFpbCBzaWxlbnRseSAgKG5vICBvdXRwdXQgIGF0ICBhbGwpICBvbiAgc2VydmVyXG4iCiIgICAgICAgICAgZXJyb3JzLiAgVGhpcyBpcyBtb3N0bHkgZG9uZSBsaWtlIHRoaXMgdG8gYmV0dGVyIGVuYWJsZVxuIgoiICAgICAgICAgIHNjcmlwdHMgZXRjIHRvIGJldHRlciBkZWFsICB3aXRoICBmYWlsZWQgIGF0dGVtcHRzLiAgSW5cbiIKIiAgICAgICAgICBub3JtYWwgY2FzZXMgd2hlbiBhIEhUVFAgc2VydmVyIGZhaWxzIHRvIGRlbGl2ZXIgYSBkb2OtXG4iCiIgICAgICAgICAgdW1lbnQsIGl0IHJldHVybnMgYSBIVE1MICBkb2N1bWVudCAgc3RhdGluZyAgc28gICh3aGljaFxuIgoiICAgICAgICAgIG9mdGVuIGFsc28gZGVzY3JpYmVzIHdoeSBhbmQgbW9yZSkuIFRoaXMgZmxhZyB3aWxsIHByZa1cbiIKIiAgICAgICAgICB2ZW50ICBjdXJsICBmcm9tICBvdXRwdXR0aW5nICB0aGF0ICBhbmQgIGZhaWwgIHNpbGVudGx5XG4iCiIgICAgICAgICAgaW5zdGVhZC5cbiIKIlxuIgoiICAgICAtRi8tLWZvcm0gPG5hbWU9Y29udGVudD5cbiIKIiAgICAgICAgICAoSFRUUCkgVGhpcyBsZXRzIGN1cmwgZW11bGF0ZSBhIGZpbGxlZCBpbiBmb3JtIGluIHdoaWNoXG4iCiIgICAgICAgICAgYSB1c2VyIGhhcyBwcmVzc2VkIHRoZSBzdWJtaXQgYnV0dG9uLiBUaGlzIGNhdXNlcyAgY3VybFxuIgoiICAgICAgICAgIHRvIFBPU1QgZGF0YSB1c2luZyB0aGUgY29udGVudC10eXBlIG11bHRpcGFydC9mb3JtLWRhdGFcbiIKIiAgICAgICAgICBhY2NvcmRpbmcgdG8gUkZDMTg2Ny4gVGhpcyBlbmFibGVzIHVwbG9hZGluZyBvZiAgYmluYXJ5XG4iCiIgICAgICAgICAgZmlsZXMgZXRjLiBUbyBmb3JjZSB0aGUgJ2NvbnRlbnQnIHBhcnQgdG8gYmUgYmUgYSBmaWxlLFxuIgoiICAgICAgICAgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBUbyAganVzdCAgZ2V0ICB0aGVcbiIKIiAgICAgICAgICBjb250ZW50IHBhcnQgZnJvbSBhIGZpbGUsIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggdGhlXG4iCiIgICAgICAgICAgbGV0dGVyIDwuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQCBhbmQgPCBpcyB0aGVuIHRoYXQgQFxuIgoiICAgICAgICAgIG1ha2VzIGEgZmlsZSBnZXQgYXR0YWNoZWQgaW4gdGhlIHBvc3QgYXMgYSBmaWxlIHVwbG9hZCxcbiIKIiAgICAgICAgICB3aGlsZSB0aGUgPCBtYWtlcyBhIHRleHQgZmllbGQgYW5kIGp1c3QgIGdldCAgdGhlICBjb26tXG4iCiIgICAgICAgICAgdGVudHMgZm9yIHRoYXQgdGV4dCBmaWVsZCBmcm9tIGEgZmlsZS5cbiIKIlxuIgoiICAgICAgICAgIEV4YW1wbGUsICB0byAgc2VuZCAgeW91ciAgcGFzc3dvcmQgIGZpbGUgdG8gdGhlIHNlcnZlcixcbiIKIiAgICAgICAgICB3aGVyZSBpbnB1dDpcbiIKIlxuIgoiICAgICAgICAgIGN1cmwgLUYgcGFzc3dvcmQ9QC9ldGMvcGFzc3dkIHd3dy5teXBhc3N3b3Jkcy5jb21cbiIKIlxuIgoiICAgICAgICAgIFRvIHJlYWQgdGhlIGZpbGUncyBjb250ZW50IGZyb20gc3RkaW4gaW5zdGVkIG9mIGEgZmlsZSxcbiIKIiAgICAgICAgICB1c2UgLSB3aGVyZSB0aGUgZmlsZSBuYW1lIHNob3VsZCd2ZSBiZWVuLiBUaGlzIGdvZXMgZm9yXG4iCiIgICAgICAgICAgYm90aCBAIGFuZCA8IGNvbnN0cnVjdHMuXG4iCiJcbiIKIiAgICAgLWgvLS1oZWxwXG4iCiIgICAgICAgICAgVXNhZ2UgaGVscC5cbiIKIlxuIgoiICAgICAtSC8tLWhlYWRlciA8aGVhZGVyPlxuIgoiICAgICAgICAgIChIVFRQKSBFeHRyYSBoZWFkZXIgdG8gdXNlIHdoZW4gZ2V0dGluZyBhIHdlYiBwYWdlLiBZb3VcbiIKIiAgICAgICAgICBtYXkgIHNwZWNpZnkgIGFueSBudW1iZXIgb2YgZXh0cmEgaGVhZGVycy4gTm90ZSB0aGF0IGlmXG4iCiIgICAgICAgICAgeW91IHNob3VsZCBhZGQgYSBjdXN0b20gaGVhZGVyIHRoYXQgaGFzIHRoZSAgc2FtZSAgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mICB0aGUgIGludGVybmFsXG4iCiIgICAgICAgICAgb25lLiAgVGhpcyAgYWxsb3dzIHlvdSB0byBtYWtlIGV2ZW4gdHJpY2tpZXIgc3R1ZmYgdGhhblxuIgoiICAgICAgICAgIGN1cmwgd291bGQgbm9ybWFsbHkgZG8uIFlvdSBzaG91bGQgbm90ICByZXBsYWNlICBpbnRlcq1cbiIKIiAgICAgICAgICBuYWxseSAgc2V0ICBoZWFkZXJzIHdpdGhvdXQga25vd2luZyBwZXJmZWN0bHkgd2VsbCB3aGF0XG4iCiIgICAgICAgICAgeW91J3JlIGRvaW5nLiBSZXBsYWNpbmcgYW4gIGludGVybmFsICBoZWFkZXIgIHdpdGggIG9uZVxuIgoiICAgICAgICAgIHdpdGhvdXQgIGNvbnRlbnQgIG9uICB0aGUgIHJpZ2h0IHNpZGUgb2YgdGhlIGNvbG9uIHdpbGxcbiIKIiAgICAgICAgICBwcmV2ZW50IHRoYXQgaGVhZGVyIGZyb20gYXBwZWFyaW5nLlxuIgoiXG4iCiIgICAgIC1pLy0taW5jbHVkZVxuIgoiICAgICAgICAgIChIVFRQKSBJbmNsdWRlIHRoZSBIVFRQLWhlYWRlciBpbiB0aGUgb3V0cHV0LiBUaGUgSFRUUC1cbiIKIiAgICAgICAgICBoZWFkZXIgIGluY2x1ZGVzICB0aGluZ3MgIGxpa2Ugc2VydmVyLW5hbWUsIGRhdGUgb2YgdGhlXG4iCiIgICAgICAgICAgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLlxuIgoiXG4iCiIgICAgIC1JLy0taGVhZFxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgRmV0Y2ggIHRoZSAgSFRUUC1oZWFkZXIgIG9ubHkhICBIVFRQLXNlcnZlcnNcbiIKIiAgICAgICAgICBmZWF0dXJlIHRoZSBjb21tYW5kIEhFQUQgd2hpY2ggdGhpcyB1c2VzIHRvIGdldCBub3RoaW5nXG4iCiIgICAgICAgICAgYnV0IHRoZSBoZWFkZXIgb2YgYSBkb2N1bWVudC4gV2hlbiB1c2VkIG9uIGEgRlRQICBmaWxlLFxuIgoiICAgICAgICAgIGN1cmwgZGlzcGxheXMgdGhlIGZpbGUgc2l6ZSBvbmx5LlxuIgoiXG4iCiIgICAgIC1LLy0tY29uZmlnIDxjb25maWcgZmlsZT5cbiIKIiAgICAgICAgICBTcGVjaWZ5ICB3aGljaCBjb25maWcgZmlsZSB0byByZWFkIGN1cmwgYXJndW1lbnRzIGZyb20uXG4iCiIgICAgICAgICAgVGhlIGNvbmZpZyBmaWxlIGlzIGEgdGV4dCBmaWxlIGluICB3aGljaCAgY29tbWFuZCAgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyAgY2FuIGJlIHdyaXR0ZW4gd2hpY2ggdGhlbiB3aWxsIGJlIHVzZWQgYXMgaWZcbiIKIiAgICAgICAgICB0aGV5IHdlcmUgd3JpdHRlbiBvbiB0aGUgYWN0dWFsIGNvbW1hbmQgIGxpbmUuICBJZiAgdGhlXG4iCiIgICAgICAgICAgZmlyc3QgIGNvbHVtbiAgb2YgYSBjb25maWcgbGluZSBpcyBhICcjJyBjaGFyYWN0ZXIsIHRoZVxuIgoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgdGhlIGZpbGVuYW1lIGFzICctJyB0byBtYWtlIGN1cmwgcmVhZCB0aGUgIGZpbGVcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluLlxuIgoiICAgICAtbC8tLWxpc3Qtb25seVxuIgoiICAgICAgICAgIChGVFApIFdoZW4gbGlzdGluZyBhbiBGVFAgZGlyZWN0b3J5LCB0aGlzIHN3aXRjaCBmb3JjZXNcbiIKIiAgICAgICAgICBhIG5hbWUtb25seSB2aWV3LiAgRXNwZWNpYWxseSB1c2VmdWwgIGlmICB5b3UgIHdhbnQgIHRvXG4iCiIgICAgICAgICAgbWFjaGluZS1wYXJzZSAgdGhlICBjb250ZW50cyAgb2YgYW4gRlRQIGRpcmVjdG9yeSBzaW5jZVxuIgoiICAgICAgICAgIHRoZSBub3JtYWwgZGlyZWN0b3J5IHZpZXcgZG9lc24ndCB1c2UgYSAgc3RhbmRhcmQgIGxvb2tcbiIKIiAgICAgICAgICBvciBmb3JtYXQuXG4iCiJcbiIKIiAgICAgLUwvLS1sb2NhdGlvblxuIgoiICAgICAgICAgIChIVFRQL0hUVFBTKSAgSWYgIHRoZSBzZXJ2ZXIgcmVwb3J0cyB0aGF0IHRoZSByZXF1ZXN0ZWRcbiIKIiAgICAgICAgICBwYWdlIGhhcyAgYSAgZGlmZmVyZW50ICBsb2NhdGlvbiAgKGluZGljYXRlZCAgd2l0aCAgdGhlXG4iCiIgICAgICAgICAgaGVhZGVyICBsaW5lIExvY2F0aW9uOikgdGhpcyBmbGFnIHdpbGwgbGV0IGN1cmwgYXR0ZW1wdFxuIgopOwogcHV0cygKIiAgICAgICAgICB0byByZWF0dGVtcHQgdGhlIGdldCBvbiB0aGUgbmV3IHBsYWNlLiBJZiB1c2VkIHRvZ2V0aGVyXG4iCiIgICAgICAgICAgd2l0aCAtaSBvciAtSSwgaGVhZGVycyBmcm9tIGFsbCByZXF1ZXN0ZWQgcGFnZXMgd2lsbCBiZVxuIgoiICAgICAgICAgIHNob3duLiBJZiB0aGlzIGZsYWcgaXMgdXNlZCB3aGVuIG1ha2luZyAgYSAgSFRUUCAgUE9TVCxcbiIKIiAgICAgICAgICBjdXJsIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gR0VUIGFmdGVyIHRoZSBpbml0aWFsXG4iCiIgICAgICAgICAgUE9TVCBoYXMgYmVlbiBkb25lLlxuIgoiXG4iCiIgICAgIC1tLy0tbWF4LXRpbWUgPHNlY29uZHM+XG4iCiIgICAgICAgICAgTWF4aW11bSB0aW1lIGluIHNlY29uZHMgdGhhdCB5b3UgYWxsb3cgdGhlIHdob2xlIG9wZXJhrVxuIgoiICAgICAgICAgIHRpb24gdG8gdGFrZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBwcmV2ZW50aW5nIHlvdXIgYmF0Y2hcbiIKIiAgICAgICAgICBqb2JzIGZyb20gaGFuZ2luZyBmb3IgaG91cnMgZHVlICB0byAgc2xvdyAgbmV0d29ya3MgIG9yXG4iCiIgICAgICAgICAgbGlua3MgIGdvaW5nICBkb3duLiAgIFRoaXMgIGRvZXNuJ3Qgd29yayBmdWxseSBpbiB3aW4zMlxuIgoiICAgICAgICAgIHN5c3RlbXMuXG4iCiJcbiIKIiAgICAgLU0vLS1tYW51YWxcbiIKIiAgICAgICAgICBNYW51YWwuIERpc3BsYXkgdGhlIGh1Z2UgaGVscCB0ZXh0LlxuIgoiXG4iCiIgICAgIC1uLy0tbmV0cmNcbiIKIiAgICAgICAgICBNYWtlcyBjdXJsIHNjYW4gdGhlIC5uZXRyYyAgZmlsZSAgaW4gIHRoZSAgdXNlcidzICBob21lXG4iCiIgICAgICAgICAgZGlyZWN0b3J5ICBmb3IgIGxvZ2luICBuYW1lIGFuZCBwYXNzd29yZC4gVGhpcyBpcyB0eXBprVxuIgoiICAgICAgICAgIGNhbGx5IHVzZWQgZm9yIGZ0cCBvbiB1bml4LiBJZiAgdXNlZCAgd2l0aCAgaHR0cCwgIGN1cmxcbiIKIiAgICAgICAgICB3aWxsICBlbmFibGUgIHVzZXIgIGF1dGhlbnRpY2F0aW9uLiAgU2VlICBuZXRyYyg0KSAgZm9yXG4iCiIgICAgICAgICAgZGV0YWlscyBvbiB0aGUgZmlsZSBmb3JtYXQuIEN1cmwgd2lsbCBub3QgIGNvbXBsYWluICBpZlxuIgoiICAgICAgICAgIHRoYXQgIGZpbGUgIGhhc24ndCB0aGUgcmlnaHQgcGVybWlzc2lvbnMgKGl0IHNob3VsZCBub3RcbiIKIiAgICAgICAgICBiZSB3b3JsZCBub3IgZ3JvdXAgcmVhZGFibGUpLiBUaGUgZW52aXJvbm1lbnQgIHZhcmlhYmxlXG4iCiIgICAgICAgICAgXCJIT01FXCIgaXMgdXNlZCB0byBmaW5kIHRoZSBob21lIGRpcmVjdG9yeS5cbiIKIlxuIgoiICAgICAgICAgIEEgIHF1aWNrICBhbmQgIHZlcnkgIHNpbXBsZSAgZXhhbXBsZSAgb2YgaG93IHRvIHNldHVwIGFcbiIKIiAgICAgICAgICAubmV0cmMgIHRvICBhbGxvdyAgY3VybCAgIHRvICAgZnRwICAgdG8gICB0aGUgICBtYWNoaW5lXG4iCiIgICAgICAgICAgaG9zdC5kb21haW4uY29tIHdpdGggdXNlciBuYW1lXG4iCiJcbiIKIiAgICAgICAgICBtYWNoaW5lIGhvc3QuZG9tYWluLmNvbSBsb2dpbiBteXNlbGYgcGFzc3dvcmQgc2VjcmV0XG4iCiJcbiIKIiAgICAgLU4vLS1uby1idWZmZXJcbiIKIiAgICAgICAgICBEaXNhYmxlcyAgdGhlIGJ1ZmZlcmluZyBvZiB0aGUgb3V0cHV0IHN0cmVhbS4gSW4gbm9ybWFsXG4iCiIgICAgICAgICAgd29yayBzaXR1YXRpb25zLCBjdXJsIHdpbGwgdXNlIGEgc3RhbmRhcmQgYnVmZmVyZWQgb3V0rVxuIgoiICAgICAgICAgIHB1dCAgc3RyZWFtIHRoYXQgd2lsbCBoYXZlIHRoZSBlZmZlY3QgdGhhdCBpdCB3aWxsIG91dK1cbiIKIiAgICAgICAgICBwdXQgdGhlIGRhdGEgaW4gY2h1bmtzLCBub3QgIG5lY2Vzc2FyaWx5ICBleGFjdGx5ICB3aGVuXG4iCiIgICAgICAgICAgdGhlICBkYXRhIGFycml2ZXMuICBVc2luZyB0aGlzIG9wdGlvbiB3aWxsIGRpc2FibGUgdGhhdFxuIgoiICAgICAgICAgIGJ1ZmZlcmluZy5cbiIKIlxuIgoiICAgICAtby8tLW91dHB1dCA8ZmlsZT5cbiIKIiAgICAgICAgICBXcml0ZSBvdXRwdXQgdG8gPGZpbGU+IGluc3RlYWQgb2Ygc3Rkb3V0LiAgSWYgIHlvdSAgYXJlXG4iCiIgICAgICAgICAgdXNpbmcge30gb3IgW10gdG8gZmV0Y2ggbXVsdGlwbGUgZG9jdW1lbnRzLCB5b3UgY2FuIHVzZVxuIgoiICAgICAgICAgICcjJyBmb2xsb3dlZCBieSBhIG51bWJlciBpbiB0aGUgPGZpbGU+IHNwZWNpZmllci4gIFRoYXRcbiIKIiAgICAgICAgICB2YXJpYWJsZSAgd2lsbCAgYmUgcmVwbGFjZWQgd2l0aCB0aGUgY3VycmVudCBzdHJpbmcgZm9yXG4iCiIgICAgICAgICAgdGhlIFVSTCBiZWluZyBmZXRjaGVkLiBMaWtlIGluOlxuIgoiXG4iCiIgICAgICAgICAgICBjdXJsIGh0dHA6Ly97b25lLHR3b30uc2l0ZS5jb20gLW8gXCJmaWxlXyMxLnR4dFwiXG4iCiJcbiIKIiAgICAgICAgICBvciB1c2Ugc2V2ZXJhbCB2YXJpYWJsZXMgbGlrZTpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve3NpdGUsaG9zdH0uaG9zdFsxLTVdLmNvbSAtbyBcIiMxXyMyXCJcbiIKIlxuIgoiICAgICAtTy8tLXJlbW90ZS1uYW1lXG4iCiIgICAgICAgICAgV3JpdGUgb3V0cHV0IHRvIGEgbG9jYWwgZmlsZSBuYW1lZCBsaWtlIHRoZSByZW1vdGUgZmlsZVxuIgoiICAgICAgICAgIHdlIGdldC4gKE9ubHkgdGhlIGZpbGUgcGFydCBvZiB0aGUgcmVtb3RlIGZpbGUgaXMgdXNlZCxcbiIKIiAgICAgICAgICB0aGUgcGF0aCBpcyBjdXQgb2ZmLilcbiIKIlxuIgoiICAgICAtUC8tLWZ0cHBvcnQgPGFkZHJlc3M+XG4iCiIgICAgICAgICAgKEZUUCkgUmV2ZXJzZXMgdGhlIGluaXRpYXRvci9saXN0ZW5lciByb2xlcyAgd2hlbiAgY29urVxuIgoiICAgICAgICAgIG5lY3RpbmcgIHdpdGggIGZ0cC4gVGhpcyBzd2l0Y2ggbWFrZXMgQ3VybCB1c2UgdGhlIFBPUlRcbiIKIiAgICAgICAgICBjb21tYW5kIGluc3RlYWQgb2YgUEFTVi4gSW4gcHJhY3RpY2UsICBQT1JUICB0ZWxscyAgdGhlXG4iCiIgICAgICAgICAgc2VydmVyIHRvIGNvbm5lY3QgdG8gdGhlIGNsaWVudCdzIHNwZWNpZmllZCBhZGRyZXNzIGFuZFxuIgoiICAgICAgICAgIHBvcnQsIHdoaWxlIFBBU1YgYXNrcyB0aGUgc2VydmVyIGZvciBhbiBpcCBhZGRyZXNzICBhbmRcbiIKIiAgICAgICAgICBwb3J0IHRvIGNvbm5lY3QgdG8uIDxhZGRyZXNzPiBzaG91bGQgYmUgb25lIG9mOlxuIgoiXG4iCiIgICAgICAgICAgaW50ZXJmYWNlICAgaS5lICBcImV0aDBcIiB0byBzcGVjaWZ5IHdoaWNoIGludGVyZmFjZSdzIElQXG4iCiIgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyB5b3Ugd2FudCB0byB1c2UgIChVbml4IG9ubHkpXG4iCiJcbiIKIiAgICAgICAgICBJUCBhZGRyZXNzICBpLmUgXCIxOTIuMTY4LjEwLjFcIiB0byBzcGVjaWZ5IGV4YWN0IElQIG51ba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICBiZXJcbiIKIlxuIgoiICAgICAgICAgIGhvc3QgbmFtZSAgIGkuZSBcIm15Lmhvc3QuZG9tYWluXCIgdG8gc3BlY2lmeSBtYWNoaW5lXG4iCiJcbiIKIiAgICAgICAgICAtICAgICAgICAgICAoYW55ICBzaW5nbGUtbGV0dGVyIHN0cmluZykgdG8gbWFrZSBpdCBwaWNrXG4iCiIgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hY2hpbmUncyBkZWZhdWx0XG4iCiJcbiIKIiAgICAgLXEgICBJZiB1c2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlXG4iCiIgICAgICAgICAgJEhPTUUvLmN1cmxyYyAgZmlsZSB3aWxsIG5vdCBiZSByZWFkIGFuZCB1c2VkIGFzIGEgY29urVxuIgoiICAgICAgICAgIGZpZyBmaWxlLlxuIgoiXG4iCiIgICAgIC1RLy0tcXVvdGUgPGNvbWFuZD5cbiIKIiAgICAgICAgICAoRlRQKSBTZW5kIGFuICBhcmJpdHJhcnkgIGNvbW1hbmQgIHRvICB0aGUgIHJlbW90ZSAgRlRQXG4iCiIgICAgICAgICAgc2VydmVyLCAgYnkgIHVzaW5nIHRoZSBRVU9URSBjb21tYW5kIG9mIHRoZSBzZXJ2ZXIuIE5vdFxuIgoiICAgICAgICAgIGFsbCBzZXJ2ZXJzIHN1cHBvcnQgdGhpcyBjb21tYW5kLCBhbmQgdGhlIHNldCBvZiAgUVVPVEVcbiIKIiAgICAgICAgICBjb21tYW5kcyAgYXJlICBzZXJ2ZXIgc3BlY2lmaWMhIFF1b3RlIGNvbW1hbmRzIGFyZSBzZW50XG4iCiIgICAgICAgICAgQkVGT1JFIHRoZSB0cmFuc2ZlciBpcyB0YWtpbmcgcGxhY2UuIFRvICBtYWtlICBjb21tYW5kc1xuIgoiICAgICAgICAgIHRha2UgIHBsYWNlICBhZnRlciAgYSAgc3VjY2Vzc2Z1bCB0cmFuc2ZlciwgcHJlZml4IHRoZW1cbiIKIiAgICAgICAgICB3aXRoIGEgZGFzaCAnLScuIFlvdSBtYXkgc3BlY2lmeSBhbnkgYW1vdW50IG9mIGNvbW1hbmRzXG4iCiIgICAgICAgICAgdG8gIGJlIHJ1biBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0cmFuc2Zlci4gSWYgdGhlIHNlcnZlclxuIgoiICAgICAgICAgIHJldHVybnMgZmFpbHVyZSBmb3Igb25lIG9mICB0aGUgIGNvbW1hbmRzLCAgdGhlICBlbnRpcmVcbiIKIiAgICAgICAgICBvcGVyYXRpb24gd2lsbCBiZSBhYm9ydGVkLlxuIgoiICAgICAtci8tLXJhbmdlIDxyYW5nZT5cbiIKIiAgICAgICAgICAoSFRUUC9GVFApICBSZXRyaWV2ZSAgYSBieXRlIHJhbmdlIChpLmUgYSBwYXJ0aWFsIGRvY3WtXG4iCiIgICAgICAgICAgbWVudCkgZnJvbSBhIEhUVFAvMS4xIG9yICBGVFAgIHNlcnZlci4gIFJhbmdlcyAgY2FuICBiZVxuIgoiICAgICAgICAgIHNwZWNpZmllZCBpbiBhIG51bWJlciBvZiB3YXlzLlxuIgoiXG4iCiIgICAgICAgICAgMC00OTkgICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgNTAwIGJ5dGVzXG4iCiJcbiIKIiAgICAgICAgICA1MDAtOTk5ICAgc3BlY2lmaWVzIHRoZSBzZWNvbmQgNTAwIGJ5dGVzXG4iCiJcbiIKIiAgICAgICAgICAtNTAwICAgICAgc3BlY2lmaWVzIHRoZSBsYXN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgOTUwMCAgICAgIHNwZWNpZmllcyB0aGUgYnl0ZXMgZnJvbSBvZmZzZXQgOTUwMCBhbmQgZm9yrVxuIgoiICAgICAgICAgICAgICAgICAgICB3YXJkXG4iCiJcbiIKIiAgICAgICAgICAwLTAsLTEgICAgc3BlY2lmaWVzIHRoZSBmaXJzdCBhbmQgbGFzdCBieXRlIG9ubHkoKikoSClcbiIKIlxuIgoiICAgICAgICAgIDUwMC03MDAsNjAwLTc5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgMzAwIGJ5dGVzIGZyb20gb2Zmc2V0IDUwMChIKVxuIgoiXG4iCiIgICAgICAgICAgMTAwLTE5OSw1MDAtNTk5XG4iCiIgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0d28gc2VwYXJhdGUgMTAwIGJ5dGVzIHJhbmdlcygqKShIKVxuIgoiXG4iCiIgICAgICgqKSAgPSAgTk9URSB0aGF0IHRoaXMgd2lsbCBjYXVzZSB0aGUgc2VydmVyIHRvIHJlcGx5IHdpdGggYVxuIgoiICAgICBtdWx0aXBhcnQgcmVzcG9uc2UhXG4iCiJcbiIKIiAgICAgWW91IHNob3VsZCBhbHNvIGJlIGF3YXJlIHRoYXQgbWFueSBIVFRQLzEuMSBzZXJ2ZXJzICBkbyAgbm90XG4iCiIgICAgIGhhdmUgdGhpcyBmZWF0dXJlIGVuYWJsZWQsIHNvIHRoYXQgd2hlbiB5b3UgYXR0ZW1wdCB0byBnZXQgYVxuIgoiICAgICByYW5nZSwgeW91J2xsIGluc3RlYWQgZ2V0IHRoZSB3aG9sZSBkb2N1bWVudC5cbiIKIlxuIgoiICAgICBGVFAgcmFuZ2UgZG93bmxvYWRzIG9ubHkgc3VwcG9ydCB0aGUgc2ltcGxlICBzeW50YXggICdzdGFydC1cbiIKIiAgICAgc3RvcCcgIChvcHRpb25hbGx5ICB3aXRoICBvbmUgIG9mICB0aGUgIG51bWJlcnMgb21pdHRlZCkuIEl0XG4iCiIgICAgIGRlcGVuZHMgb24gdGhlIG5vbi1SRkMgY29tbWFuZCBTSVpFLlxuIgoiXG4iCiIgICAgIC1zLy0tc2lsZW50XG4iCiIgICAgICAgICAgU2lsZW50IG1vZGUuIERvbid0IHNob3cgcHJvZ3Jlc3MgbWV0ZXIgIG9yICBlcnJvciAgbWVzrVxuIgoiICAgICAgICAgIHNhZ2VzLiAgTWFrZXMgQ3VybCBtdXRlLlxuIgoiXG4iCiIgICAgIC1TLy0tc2hvdy1lcnJvclxuIgoiICAgICAgICAgIFdoZW4gIHVzZWQgIHdpdGggLXMgaXQgbWFrZXMgY3VybCBzaG93IGVycm9yIG1lc3NhZ2UgaWZcbiIKIiAgICAgICAgICBpdCBmYWlscy5cbiIKIlxuIgoiICAgICAtdC8tLXVwbG9hZFxuIgoiICAgICAgICAgIFRyYW5zZmVyIHRoZSBzdGRpbiBkYXRhIHRvICB0aGUgIHNwZWNpZmllZCAgZmlsZS4gIEN1cmxcbiIKIiAgICAgICAgICB3aWxsICByZWFkICBldmVyeXRoaW5nICBmcm9tICBzdGRpbiB1bnRpbCBFT0YgYW5kIHN0b3JlXG4iCiIgICAgICAgICAgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZS4gSWYgdGhpcyBpcyB1c2VkICBvbiAgYSAgaHR0cChzKVxuIgoiICAgICAgICAgIHNlcnZlciwgdGhlIFBVVCBjb21tYW5kIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtVC8tLXVwbG9hZC1maWxlIDxmaWxlPlxuIgoiICAgICAgICAgIExpa2UgIC10LCAgYnV0IHRoaXMgdHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgbG9jYWwgZmlsZS5cbiIKIiAgICAgICAgICBJZiB0aGVyZSBpcyBubyBmaWxlIHBhcnQgaW4gIHRoZSAgc3BlY2lmaWVkICBVUkwsICBDdXJsXG4iCiIgICAgICAgICAgd2lsbCBhcHBlbmQgdGhlIGxvY2FsIGZpbGUgbmFtZS4gTk9URSB0aGF0IHlvdSBtdXN0IHVzZVxuIgoiICAgICAgICAgIGEgdHJhaWxpbmcgLyBvbiB0aGUgbGFzdCBkaXJlY3RvcnkgdG8gcmVhbGx5ICBwcm92ZSAgdG9cbiIKIiAgICAgICAgICBDdXJsIHRoYXQgdGhlcmUgaXMgbm8gZmlsZSBuYW1lIG9yIGN1cmwgd2lsbCB0aGluayB0aGF0XG4iCiIgICAgICAgICAgeW91ciBsYXN0IGRpcmVjdG9yeSBuYW1lIGlzIHRoZSAgcmVtb3RlICBmaWxlICBuYW1lICB0b1xuIgoiICAgICAgICAgIHVzZS4gIFRoYXQgIHdpbGwgbW9zdCBsaWtlbHkgY2F1c2UgdGhlIHVwbG9hZCBvcGVyYXRpb25cbiIKIiAgICAgICAgICB0byBmYWlsLiBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgIHRoZSAgUFVUXG4iCiIgICAgICAgICAgY29tbWFuZCB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLXUvLS11c2VyIDx1c2VyOnBhc3N3b3JkPlxuIgoiICAgICAgICAgIFNwZWNpZnkgIHVzZXIgIGFuZCAgcGFzc3dvcmQgIHRvIHVzZSB3aGVuIGZldGNoaW5nLiBTZWVcbiIKIiAgICAgICAgICBSRUFETUUuY3VybCBmb3IgZGV0YWlsZWQgZXhhbXBsZXMgb2YgaG93IHRvICB1c2UgIHRoaXMuXG4iCiIgICAgICAgICAgSWYgIG5vICBwYXNzd29yZCAgaXMgIHNwZWNpZmllZCwgIGN1cmwgIHdpbGwgYXNrIGZvciBpdFxuIgoiICAgICAgICAgIGludGVyYWN0aXZlbHkuXG4iCiJcbiIKIiAgICAgLVUvLS1wcm94eS11c2VyIDx1c2VyOnBhc3N3b3JkPlxuIgoiICAgICAgICAgIFNwZWNpZnkgdXNlciBhbmQgcGFzc3dvcmQgdG8gdXNlIGZvciBQcm94eSAgYXV0aGVudGljYa1cbiIKIiAgICAgICAgICB0aW9uLiBJZiBubyBwYXNzd29yZCBpcyBzcGVjaWZpZWQsIGN1cmwgd2lsbCBhc2sgZm9yIGl0XG4iCiIgICAgICAgICAgaW50ZXJhY3RpdmVseS5cbiIKIlxuIgoiICAgICAtdi8tLXZlcmJvc2VcbiIKIiAgICAgICAgICBNYWtlcyAgdGhlICBmZXRjaGluZyAgbW9yZSAgdmVyYm9zZS90YWxrYXRpdmUuICAgTW9zdGx5XG4iCiIgICAgICAgICAgdXNhYmxlICBmb3IgIGRlYnVnZ2luZy4gIExpbmVzICBzdGFydGluZyB3aXRoICc+JyBtZWFuc1xuIgoiICAgICAgICAgIGRhdGEgc2VudCBieSBjdXJsLCAnPCcgbWVhbnMgZGF0YSByZWNlaXZlZCBieSBjdXJsIHRoYXRcbiIKIiAgICAgICAgICBpcyAgaGlkZGVuICBpbiBub3JtYWwgY2FzZXMgYW5kIGxpbmVzIHN0YXJ0aW5nIHdpdGggJyonXG4iCiIgICAgICAgICAgbWVhbnMgYWRkaXRpb25hbCBpbmZvIHByb3ZpZGVkIGJ5IGN1cmwuXG4iCiJcbiIKIiAgICAgLVYvLS12ZXJzaW9uXG4iCiIgICAgICAgICAgRGlzcGxheXMgdGhlIGZ1bGwgdmVyc2lvbiBvZiBjdXJsLCAgbGliY3VybCAgYW5kICBvdGhlclxuIgoiICAgICAgICAgIDNyZCBwYXJ0eSBsaWJyYXJpZXMgbGlua2VkIHdpdGggdGhlIGV4ZWN1dGFibGUuXG4iCiJcbiIKIiAgICAgLXcvLS13cml0ZS1vdXQgPGZvcm1hdD5cbiIKIiAgICAgICAgICBEZWZpbmVzICB3aGF0IHRvIGRpc3BsYXkgYWZ0ZXIgYSBjb21wbGV0ZWQgYW5kIHN1Y2Nlc3OtXG4iCiIgICAgICAgICAgZnVsIG9wZXJhdGlvbi4gVGhlIGZvcm1hdCBpcyBhIHN0cmluZyB0aGF0IG1heSAgY29udGFpblxuIgoiICAgICAgICAgIHBsYWluICB0ZXh0ICBtaXhlZCAgd2l0aCAgYW55ICBudW1iZXIgb2YgdmFyaWFibGVzLiBUaGVcbiIKIiAgICAgICAgICBzdHJpbmcgY2FuIGJlIHNwZWNpZmllZCBhcyBcInN0cmluZ1wiLCB0byBnZXQgcmVhZCBmcm9tIGFcbiIKIiAgICAgICAgICBwYXJ0aWN1bGFyICBmaWxlIHlvdSBzcGVjaWZ5IGl0IFwiQGZpbGVuYW1lXCIgYW5kIHRvIHRlbGxcbiIKIiAgICAgICAgICBjdXJsIHRvIHJlYWQgdGhlIGZvcm1hdCBmcm9tIHN0ZGluIHlvdSB3cml0ZSBcIkAtXCIuXG4iCiJcbiIKIiAgICAgICAgICBUaGUgdmFyaWFibGVzIHByZXNlbnQgaW4gdGhlIG91dHB1dCBmb3JtYXQgd2lsbCBiZSBzdWKtXG4iCiIgICAgICAgICAgc3RpdHV0ZWQgIGJ5IHRoZSB2YWx1ZSBvciB0ZXh0IHRoYXQgY3VybCB0aGlua3MgZml0LCBhc1xuIgoiICAgICAgICAgIGRlc2NyaWJlZCAgYmVsb3cuICBBbGwgIHZhcmlhYmxlcyAgYXJlICBzcGVjaWZpZWQgIGxpa2VcbiIKIiAgICAgICAgICAle3ZhcmlhYmxlX25hbWV9ICBhbmQgIHRvICBvdXRwdXQgIGEgIG5vcm1hbCAlIHlvdSBqdXN0XG4iCiIgICAgICAgICAgd3JpdGUgdGhlbSBsaWtlICUlLiBZb3UgY2FuIG91dHB1dCBhIG5ld2xpbmUgIGJ5ICB1c2luZ1xuIgoiICAgICAgICAgIFxcbiwgYSBjYXJyaWdlIHJldHVybiB3aXRoIFxcciBhbmQgYSB0YWIgc3BhY2Ugd2l0aCBcXHQuXG4iCiJcbiIKIiAgICAgICAgICBOT1RFOiAgIFRoZSAgICUtbGV0dGVyICBpcyAgYSAgc3BlY2lhbCAgbGV0dGVyICBpbiAgdGhlXG4iCiIgICAgICAgICAgd2luMzItZW52aXJvbm1lbnQsIHdoZXJlIGFsbCBvY2N1cnJlbmNlcyBvZiAlICBtdXN0ICBiZVxuIgoiICAgICAgICAgIGRvdWJsZWQgd2hlbiB1c2luZyB0aGlzIG9wdGlvbi5cbiIKIlxuIgoiICAgICAgICAgIEF2YWlsYWJsZSB2YXJpYWJsZXMgYXJlIGF0IHRoaXMgcG9pbnQ6XG4iCiJcbiIKIiAgICAgICAgICB1cmxfZWZmZWN0aXZlICBUaGUgIFVSTCAgdGhhdCB3YXMgZmV0Y2hlZCBsYXN0LiBUaGlzIGlzXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IG1lYW5pbmdmdWwgaWYgeW91J3ZlIHRvbGQgY3VybCB0b1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBsb2NhdGlvbjogaGVhZGVycy5cbiIKIiAgICAgICAgICBodHRwX2NvZGUgICAgICBUaGUgbnVtZXJpY2FsIGNvZGUgdGhhdCB3YXMgZm91bmQgaW4gdGhlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCByZXRyaWV2ZWQgSFRUUChTKSBwYWdlLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV90b3RhbCAgICAgVGhlIHRvdGFsIHRpbWUsICBpbiAgc2Vjb25kcywgIHRoYXQgIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgIG9wZXJhdGlvbiBsYXN0ZWQuIFRoZSB0aW1lIHdpbGwgYmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWQgd2l0aCBtaWxsaXNlY29uZCByZXNvbHV0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9uYW1lbG9va3VwXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgIGZyb20gIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICB1bnRpbCB0aGUgbmFtZSByZXNvbHZpbmcgd2FzIGNvba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBwbGV0ZWQuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX2Nvbm5lY3QgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayAgZnJvbSAgdGhlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgIHVudGlsICB0aGUgIGNvbm5lY3QgdG8gdGhlIHJlbW90ZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgKG9yIHByb3h5KSB3YXMgY29tcGxldGVkLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9wcmV0cmFuc2ZlclxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0aW1lLCBpbiBzZWNvbmRzLCBpdCB0b29rICBmcm9tICB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCAgdW50aWwgIHRoZSAgZmlsZSB0cmFuc2ZlciBpcyBqdXN0XG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgdG8gYmVnaW4uIFRoaXMgaW5jbHVkZXMgIGFsbCAgcHJlLVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyICBjb21tYW5kcyBhbmQgbmVnb3RpYXRpb25zIHRoYXRcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgc3BlY2lmaWMgdG8gIHRoZSAgcGFydGljdWxhciAgcHJvdG+tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgY29sKHMpIGludm9sdmVkLlxuIgoiXG4iCiIgICAgICAgICAgc2l6ZV9kb3dubG9hZCAgVGhlICB0b3RhbCAgYW1vdW50ICBvZiAgYnl0ZXMgIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX3VwbG9hZCAgICBUaGUgdG90YWwgIGFtb3VudCAgb2YgIGJ5dGVzICB0aGF0ICB3ZXJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzcGVlZF9kb3dubG9hZCBUaGUgIGF2ZXJhZ2UgIGRvd25sb2FkICBzcGVlZCAgdGhhdCBjdXJsXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX3VwbG9hZCAgIFRoZSBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwgIG1lYa1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIGRvd25sb2FkLlxuIgoiXG4iCiIgICAgIC14Ly0tcHJveHkgPHByb3h5aG9zdFs6cG9ydF0+XG4iCiIgICAgICAgICAgVXNlICBzcGVjaWZpZWQgIHByb3h5LiBJZiB0aGUgcG9ydCBudW1iZXIgaXMgbm90IHNwZWNprVxuIgoiICAgICAgICAgIGZpZWQsIGl0IGlzIGFzc3VtZWQgYXQgcG9ydCAxMDgwLlxuIgoiXG4iCiIgICAgIC1YLy0tcmVxdWVzdCA8Y29tbWFuZD5cbiIKIiAgICAgICAgICAoSFRUUCkgU3BlY2lmaWVzIGEgY3VzdG9tIHJlcXVlc3QgdG8gdXNlIHdoZW4gIGNvbW11bmmtXG4iCik7CiBwdXRzKAoiICAgICAgICAgIGNhdGluZyAgd2l0aCAgdGhlICBIVFRQICBzZXJ2ZXIuICBUaGUgc3BlY2lmaWVkIHJlcXVlc3RcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgR0VULiBSZWFkIHRoZSBIVFRQXG4iCiIgICAgICAgICAgMS4xIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgYW5kIGV4cGxhbmF0aW9ucy5cbiIKIlxuIgoiICAgICAgICAgIChGVFApICBTcGVjaWZpZXMgYSBjdXN0b20gRlRQIGNvbW1hbmQgdG8gdXNlIGluc3RlYWQgb2ZcbiIKIiAgICAgICAgICBMSVNUIHdoZW4gZG9pbmcgZmlsZSBsaXN0cyB3aXRoIGZ0cC5cbiIKIlxuIgoiICAgICAteS8tLXNwZWVkLXRpbWUgPHRpbWU+XG4iCiIgICAgICAgICAgSWYgYSBkb3dubG9hZCBpcyBzbG93ZXIgdGhhbiBzcGVlZC1saW1pdCBieXRlcyBwZXIgc2VjrVxuIgoiICAgICAgICAgIG9uZCAgZHVyaW5nICBhICBzcGVlZC10aW1lICBwZXJpb2QsICB0aGUgIGRvd25sb2FkIGdldHNcbiIKIiAgICAgICAgICBhYm9ydGVkLiBJZiBzcGVlZC10aW1lIGlzIHVzZWQsIHRoZSBkZWZhdWx0IHNwZWVkLWxpbWl0XG4iCiIgICAgICAgICAgd2lsbCBiZSAxIHVubGVzcyBzZXQgd2l0aCAteS5cbiIKIlxuIgoiICAgICAtWS8tLXNwZWVkLWxpbWl0IDxzcGVlZD5cbiIKIiAgICAgICAgICBJZiBhIGRvd25sb2FkIGlzIHNsb3dlciB0aGFuIHRoaXMgZ2l2ZW4gc3BlZWQsIGluIGJ5dGVzXG4iCiIgICAgICAgICAgcGVyIHNlY29uZCwgZm9yIHNwZWVkLXRpbWUgIHNlY29uZHMgIGl0ICBnZXRzICBhYm9ydGVkLlxuIgoiICAgICAgICAgIHNwZWVkLXRpbWUgaXMgc2V0IHdpdGggLVkgYW5kIGlzIDMwIGlmIG5vdCBzZXQuXG4iCiJcbiIKIiAgICAgLXovLS10aW1lLWNvbmQgPGRhdGUgZXhwcmVzc2lvbj5cbiIKIiAgICAgICAgICAoSFRUUCkgIFJlcXVlc3QgIHRvICBnZXQgIGEgZmlsZSB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkXG4iCiIgICAgICAgICAgbGF0ZXIgdGhhbiB0aGUgZ2l2ZW4gdGltZSBhbmQgZGF0ZSwgIG9yICBvbmUgIHRoYXQgIGhhc1xuIgoiICAgICAgICAgIGJlZW4gbW9kaWZpZWQgYmVmb3JlIHRoYXQgdGltZS4gVGhlIGRhdGUgZXhwcmVzc2lvbiBjYW5cbiIKIiAgICAgICAgICBiZSBhbGwgc29ydHMgb2YgZGF0ZSBzdHJpbmdzIG9yIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggYW55XG4iCiIgICAgICAgICAgaW50ZXJuYWwgIG9uZXMsICBpdCAgdHJpZXMgdG8gZ2V0IHRoZSB0aW1lIGZyb20gYSBnaXZlblxuIgoiICAgICAgICAgIGZpbGUgbmFtZSBpbnN0ZWFkISBTZWUgdGhlICBHTlUgIGRhdGUoMSkgIG9yICBjdXJsX2dldK1cbiIKIiAgICAgICAgICBkYXRlKDMpIG1hbiBwYWdlcyBmb3IgZGF0ZSBleHByZXNzaW9uIGRldGFpbHMuXG4iCiJcbiIKIiAgICAgICAgICBTdGFydCAgdGhlICBkYXRlICBleHByZXNzaW9uIHdpdGggYSBkYXNoICgtKSB0byBtYWtlIGl0XG4iCiIgICAgICAgICAgcmVxdWVzdCBmb3IgYSBkb2N1bWVudCB0aGF0IGlzICBvbGRlciAgdGhhbiAgdGhlICBnaXZlblxuIgoiICAgICAgICAgIGRhdGUvdGltZSwgZGVmYXVsdCBpcyBhIGRvY3VtZW50IHRoYXQgaXMgbmV3ZXIgdGhhbiB0aGVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgZGF0ZS90aW1lLlxuIgoiXG4iCiIgICAgIC0zLy0tc3NsdjNcbiIKIiAgICAgICAgICAoSFRUUFMpIEZvcmNlcyBjdXJsIHRvIHVzZSBTU0wgdmVyc2lvbiAzIHdoZW4gbmVnb3RpYXStXG4iCiIgICAgICAgICAgaW5nIHdpdGggYSByZW1vdGUgU1NMIHNlcnZlci5cbiIKIlxuIgoiICAgICAtMi8tLXNzbHYyXG4iCiIgICAgICAgICAgKEhUVFBTKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMiB3aGVuIG5lZ290aWF0rVxuIgoiICAgICAgICAgIGluZyB3aXRoIGEgcmVtb3RlIFNTTCBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgLSMvLS1wcm9ncmVzcy1iYXJcbiIKIiAgICAgICAgICBNYWtlIGN1cmwgZGlzcGxheSBwcm9ncmVzcyBpbmZvcm1hdGlvbiAgYXMgIGEgIHByb2dyZXNzXG4iCiIgICAgICAgICAgYmFyIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgc3RhdGlzdGljcy5cbiIKIlxuIgoiICAgICAtLWNybGZcbiIKIiAgICAgICAgICAoRlRQKSAgQ29udmVydCAgTEYgIHRvICBDUkxGICBpbiB1cGxvYWQuIFVzZWZ1bCBmb3IgTVZTXG4iCiIgICAgICAgICAgKE9TLzM5MCkuXG4iCiJcbiIKIiAgICAgLS1zdGRlcnIgPGZpbGU+XG4iCiIgICAgICAgICAgUmVkaXJlY3QgYWxsIHdyaXRlcyB0byBzdGRlcnIgIHRvICB0aGUgIHNwZWNpZmllZCAgZmlsZVxuIgoiICAgICAgICAgIGluc3RlYWQuIElmIHRoZSBmaWxlIG5hbWUgaXMgYSBwbGFpbiAnLScsIGl0IGlzIGluc3RlYWRcbiIKIiAgICAgICAgICB3cml0dGVuIHRvIHN0ZG91dC4gVGhpcyBvcHRpb24gaGFzIG5vIHBvaW50IHdoZW4geW91J3JlXG4iCiIgICAgICAgICAgdXNpbmcgYSBzaGVsbCB3aXRoIGRlY2VudCByZWRpcmVjdGluZyBjYXBhYmlsaXRpZXMuXG4iCiJcbiIKIkZJTEVTXG4iCiIgICAgIH4vLmN1cmxyY1xuIgoiICAgICAgICAgIERlZmF1bHQgY29uZmlnIGZpbGUuXG4iCiJcbiIKIkVOVklST05NRU5UXG4iCiIgICAgIEhUVFBfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEhUVFAuXG4iCiIgICAgIEhUVFBTX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQUy5cbiIKIlxuIgoiICAgICBGVFBfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEZUUC5cbiIKIlxuIgoiICAgICBHT1BIRVJfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEdPUEhFUi5cbiIKIlxuIgoiICAgICBBTExfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzICBwcm94eSBzZXJ2ZXIgdG8gdXNlIGlmIG5vIHByb3RvY29sLXNwZWNpZmljIHByb3h5XG4iCiIgICAgICAgICAgaXMgc2V0LlxuIgoiXG4iCiIgICAgIE5PX1BST1hZIDxjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cz5cbiIKIiAgICAgICAgICBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkuXG4iCiIgICAgICAgICAgSWYgc2V0IHRvIGEgYXN0ZXJpc2sgJyonIG9ubHksIGl0IG1hdGNoZXMgYWxsIGhvc3RzLlxuIgoiXG4iCiIgICAgIENPTFVNTlMgPGludGVnZXI+XG4iCiIgICAgICAgICAgVGhlICB3aWR0aCBvZiB0aGUgdGVybWluYWwuICBUaGlzIHZhcmlhYmxlIG9ubHkgYWZmZWN0c1xuIgoiICAgICAgICAgIGN1cmwgd2hlbiB0aGUgLS1wcm9ncmVzcy1iYXIgb3B0aW9uIGlzIHVzZWQuXG4iCiJcbiIKIkVYSVQgQ09ERVNcbiIKIiAgICAgVGhlcmUgZXhpc3RzIGEgYnVuY2ggb2YgZGlmZmVyZW50IGVycm9yIGNvZGVzIGFuZCB0aGVpciBjb3KtXG4iCiIgICAgIHJlc3BvbmRpbmcgIGVycm9yIG1lc3NhZ2VzIHRoYXQgbWF5IGFwcGVhciBkdXJpbmcgYmFkIGNvbmRprVxuIgoiICAgICB0aW9ucy4gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCB0aGUgZXhpdCBjb2RlcyBhcmU6XG4iCiJcbiIKIiAgICAgMSAgICBVbnN1cHBvcnRlZCBwcm90b2NvbC4gVGhpcyBidWlsZCBvZiBjdXJsIGhhcyBubyBzdXBwb3J0XG4iCiIgICAgICAgICAgZm9yIHRoaXMgcHJvdG9jb2wuXG4iCiJcbiIKIiAgICAgMiAgICBGYWlsZWQgdG8gaW5pdGlhbGl6ZS5cbiIKIlxuIgoiICAgICAzICAgIFVSTCBtYWxmb3JtYXQuIFRoZSBzeW50YXggd2FzIG5vdCBjb3JyZWN0LlxuIgoiXG4iCiIgICAgIDQgICAgVVJMICB1c2VyIG1hbGZvcm1hdHRlZC4gVGhlIHVzZXItcGFydCBvZiB0aGUgVVJMIHN5bnRheFxuIgoiICAgICAgICAgIHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA1ICAgIENvdWxkbid0IHJlc29sdmUgcHJveHkuIFRoZSBnaXZlbiBwcm94eSBob3N0IGNvdWxkICBub3RcbiIKIiAgICAgICAgICBiZSByZXNvbHZlZC5cbiIKIlxuIgoiICAgICA2ICAgIENvdWxkbid0ICByZXNvbHZlICBob3N0LiAgVGhlIGdpdmVuIHJlbW90ZSBob3N0IHdhcyBub3RcbiIKIiAgICAgICAgICByZXNvbHZlZC5cbiIKIlxuIgoiICAgICA3ICAgIEZhaWxlZCB0byBjb25uZWN0IHRvIGhvc3QuXG4iCiJcbiIKIiAgICAgOCAgICBGVFAgd2VpcmQgc2VydmVyICByZXBseS4gIFRoZSAgc2VydmVyICBzZW50ICBkYXRhICBjdXJsXG4iCiIgICAgICAgICAgY291bGRuJ3QgcGFyc2UuXG4iCiJcbiIKIiAgICAgOSAgICBGVFAgYWNjZXNzIGRlbmllZC4gVGhlIHNlcnZlciBkZW5pZWQgbG9naW4uXG4iCiJcbiIKIiAgICAgMTAgICBGVFAgIHVzZXIvcGFzc3dvcmQgIGluY29ycmVjdC4gIEVpdGhlciBvbmUgb3IgYm90aCB3ZXJlXG4iCiIgICAgICAgICAgbm90IGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIuXG4iCiIgICAgIDExICAgRlRQIHdlaXJkIFBBU1MgcmVwbHkuIEN1cmwgIGNvdWxkbid0ICBwYXJzZSAgdGhlICByZXBseVxuIgoiICAgICAgICAgIHNlbnQgdG8gdGhlIFBBU1MgcmVxdWVzdC5cbiIKIlxuIgoiICAgICAxMiAgIEZUUCAgd2VpcmQgIFVTRVIgIHJlcGx5LiAgQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBVU0VSIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTMgICBGVFAgd2VpcmQgUEFTViByZXBseSwgQ3VybCAgY291bGRuJ3QgIHBhcnNlICB0aGUgIHJlcGx5XG4iCiIgICAgICAgICAgc2VudCB0byB0aGUgUEFTViByZXF1ZXN0LlxuIgoiXG4iCiIgICAgIDE0ICAgRlRQICB3ZWlyZCAyMjcgZm9ybWF5LiBDdXJsIGNvdWxkbid0IHBhcnNlIHRoZSAyMjctbGluZVxuIgoiICAgICAgICAgIHRoZSBzZXJ2ZXIgc2VudC5cbiIKIlxuIgoiICAgICAxNSAgIEZUUCBjYW4ndCBnZXQgaG9zdC4gQ291bGRuJ3QgcmVzb2x2ZSB0aGUgaG9zdCBJUCB3ZSBnb3RcbiIKIiAgICAgICAgICBpbiB0aGUgMjI3LWxpbmUuXG4iCiJcbiIKIiAgICAgMTYgICBGVFAgIGNhbid0ICByZWNvbm5lY3QuICBDb3VsZG4ndCBjb25uZWN0IHRvIHRoZSBob3N0IHdlXG4iCiIgICAgICAgICAgZ290IGluIHRoZSAyMjctbGluZS5cbiIKIlxuIgoiICAgICAxNyAgIEZUUCAgY291bGRuJ3QgIHNldCAgYmluYXJ5LiAgQ291bGRuJ3QgIGNoYW5nZSAgdHJhbnNmZXJcbiIKIiAgICAgICAgICBtZXRob2QgdG8gYmluYXJ5LlxuIgoiXG4iCiIgICAgIDE4ICAgUGFydGlhbCBmaWxlLiBPbmx5IGEgcGFydCBvZiB0aGUgZmlsZSB3YXMgdHJhbnNmZXJlZC5cbiIKIlxuIgoiICAgICAxOSAgIEZUUCBjb3VsZG4ndCBSRVRSIGZpbGUuIFRoZSBSRVRSIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDIwICAgRlRQICB3cml0ZSAgZXJyb3IuIFRoZSB0cmFuc2ZlciB3YXMgcmVwb3J0ZWQgYmFkIGJ5IHRoZVxuIgoiICAgICAgICAgIHNlcnZlci5cbiIKIlxuIgoiICAgICAyMSAgIEZUUCBxdW90ZSBlcnJvci4gQSBxdW90ZSBjb21tYW5kICByZXR1cm5lZCAgZXJyb3IgIGZyb21cbiIKIiAgICAgICAgICB0aGUgc2VydmVyLlxuIgoiXG4iCiIgICAgIDIyICAgSFRUUCAgbm90IGZvdW5kLiBUaGUgcmVxdWVzdGVkIHBhZ2Ugd2FzIG5vdCBmb3VuZC4gVGhpc1xuIgoiICAgICAgICAgIHJldHVybiBjb2RlIG9ubHkgYXBwZWFycyBpZiAtLWZhaWwgaXMgdXNlZC5cbiIKIlxuIgoiICAgICAyMyAgIFdyaXRlIGVycm9yLiAgQ3VybCAgY291bGRuJ3QgIHdyaXRlICBkYXRhICB0byAgYSAgbG9jYWxcbiIKIiAgICAgICAgICBmaWxlc3lzdGVtIG9yIHNpbWlsYXIuXG4iCiJcbiIKIiAgICAgMjQgICBNYWxmb3JtYXQgdXNlci4gVXNlciBuYW1lIGJhZGx5IHNwZWNpZmllZC5cbiIKIlxuIgoiICAgICAyNSAgIEZUUCAgY291bGRuJ3QgIFNUT1IgIGZpbGUuICBUaGUgIHNlcnZlciBkZW5pZWQgdGhlIFNUT1JcbiIKIiAgICAgICAgICBvcGVyYXRpb24uXG4iCiJcbiIKIiAgICAgMjYgICBSZWFkIGVycm9yLiBWYXJpb3VzIHJlYWRpbmcgcHJvYmxlbXMuXG4iCiJcbiIKIiAgICAgMjcgICBPdXQgb2YgbWVtb3J5LiBBIG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3QgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDI4ICAgT3BlcmF0aW9uIHRpbWVvdXQuIFRoZSBzcGVjaWZpZWQgIHRpbWUtb3V0ICBwZXJpb2QgIHdhc1xuIgoiICAgICAgICAgIHJlYWNoZWQgYWNjb3JkaW5nIHRvIHRoZSBjb25kaXRpb25zLlxuIgoiXG4iCiIgICAgIDI5ICAgRlRQICBjb3VsZG4ndCBzZXQgQVNDSUkuIFRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gdW5rbm93blxuIgoiICAgICAgICAgIHJlcGx5LlxuIgoiICAgICAzMCAgIEZUUCBQT1JUIGZhaWxlZC4gVGhlIFBPUlQgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzEgICBGVFAgY291bGRuJ3QgdXNlIFJFU1QuIFRoZSBSRVNUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMyICAgRlRQIGNvdWxkbid0IHVzZSBTSVpFLiBUaGUgIFNJWkUgIGNvbW1hbmQgIGZhaWxlZC4gIFRoZVxuIgoiICAgICAgICAgIGNvbW1hbmQgIGlzICBhbiAgZXh0ZW5zaW9uIHRvIHRoZSBvcmlnaW5hbCBGVFAgc3BlYyBSRkNcbiIKIiAgICAgICAgICA5NTkuXG4iCiJcbiIKIiAgICAgMzMgICBIVFRQIHJhbmdlIGVycm9yLiBUaGUgcmFuZ2UgXCJjb21tYW5kXCIgZGlkbid0IHdvcmsuXG4iCiJcbiIKIiAgICAgMzQgICBIVFRQICBwb3N0ICBlcnJvci4gIEludGVybmFsICBwb3N0LXJlcXVlc3QgICBnZW5lcmF0aW9uXG4iCiIgICAgICAgICAgZXJyb3IuXG4iCiJcbiIKIiAgICAgMzUgICBTU0wgY29ubmVjdCBlcnJvci4gVGhlIFNTTCBoYW5kc2hha2luZyBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzYgICBGVFAgIGJhZCAgZG93bmxvYWQgcmVzdW1lLiBDb3VsZG4ndCBjb250aW51ZSBhbiBlYXJsaWVyXG4iCiIgICAgICAgICAgYWJvcnRlZCBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAzNyAgIEZJTEUgY291bGRuJ3QgcmVhZCBmaWxlLiBGYWlsZWQgdG8gb3BlbiB0aGUgZmlsZS4gIFBlcq1cbiIKIiAgICAgICAgICBtaXNzaW9ucz9cbiIKIlxuIgoiICAgICAzOCAgIExEQVAgY2Fubm90IGJpbmQuIExEQVAgYmluZCBvcGVyYXRpb24gZmFpbGVkLlxuIgoiXG4iCiIgICAgIDM5ICAgTERBUCBzZWFyY2ggZmFpbGVkLlxuIgoiXG4iCiIgICAgIDQwICAgTGlicmFyeSBub3QgZm91bmQuIFRoZSBMREFQIGxpYnJhcnkgd2FzIG5vdCBmb3VuZC5cbiIKIlxuIgoiICAgICA0MSAgIEZ1bmN0aW9uICBub3QgIGZvdW5kLiAgQSByZXF1aXJlZCBMREFQIGZ1bmN0aW9uIHdhcyBub3RcbiIKIiAgICAgICAgICBmb3VuZC5cbiIKIlxuIgoiICAgICBYWCAgIFRoZXJlIHdpbGwgYXBwZWFyICBtb3JlICBlcnJvciAgY29kZXMgIGhlcmUgIGluICBmdXR1cmVcbiIKIiAgICAgICAgICByZWxlYXNlcy4gIFRoZSBleGlzdGluZyBvbmVzIGFyZSBtZWFudCB0byBuZXZlciBjaGFuZ2UuXG4iCiJcbiIKIkJVR1NcbiIKIiAgICAgSWYgeW91IGRvIGZpbmQgYW55IChvciBoYXZlIG90aGVyIHN1Z2dlc3Rpb25zKSwgbWFpbCAgRGFuaWVsXG4iCiIgICAgIFN0ZW5iZXJnIDxEYW5pZWwuU3RlbmJlcmdAaGF4eC5zZT4uXG4iCiJcbiIKIkFVVEhPUlMgLyBDT05UUklCVVRPUlNcbiIKIiAgICAgIC0gRGFuaWVsIFN0ZW5iZXJnIDxEYW5pZWwuU3RlbmJlcmdAaGF4eC5zZT5cbiIKIiAgICAgIC0gUmFmYWVsIFNhZ3VsYSA8c2FndWxhQGluZi51ZnJncy5icj5cbiIKIiAgICAgIC0gU2FtcG8gS2VsbG9tYWtpIDxzYW1wb0Bpa2kuZmk+XG4iCiIgICAgICAtIExpbmFzIFZlcHN0YXMgPGxpbmFzQGxpbmFzLm9yZz5cbiIKIiAgICAgIC0gQmpvcm4gUmVlc2UgPGJyZWVzZUBtYWlsMS5zdG9mYW5ldC5kaz5cbiIKIiAgICAgIC0gSm9oYW4gQW5kZXJzb24gPGpvaGFuQGhvbWVtYWlsLmNvbT5cbiIKIiAgICAgIC0gS2plbGwgRXJpY3NvbiA8S2plbGwuRXJpY3NvbkBoYXh4LnNlPlxuIgoiICAgICAgLSBUcm95IEVuZ2VsIDx0ZW5nZWxAc29uaWMubmV0PlxuIgoiICAgICAgLSBSeWFuIE5lbHNvbiA8cnlhbkBpbmNoLmNvbT5cbiIKIiAgICAgIC0gQmr2cm4gU3RlbmJlcmcgPEJqb3JuLlN0ZW5iZXJnQGhheHguc2U+XG4iCiIgICAgICAtIEFuZ3VzIE1hY2theSA8YW1hY2theUBndXMubWwub3JnPlxuIgoiICAgICAgLSBFcmljIFlvdW5nIDxlYXlAY3J5cHRzb2Z0LmNvbT5cbiIKIiAgICAgIC0gU2ltb24gRGljayA8c2ltb25kQHRvdGFsbHkuaXJyZWxldmFudC5vcmc+XG4iCiIgICAgICAtIE9yZW4gVGlyb3NoIDxvcmVuQG1vbnR5Lmhpc2hvbWUubmV0PlxuIgoiICAgICAgLSBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+XG4iCiIgICAgICAtIEdpbGJlcnQgUmFtaXJleiBKci4gPGdyYW1AdmVyZGljdC51dGhzY3NhLmVkdT5cbiIKIiAgICAgIC0gQW5kculzIEdhcmPtYSA8b3JuYWx1eEByZWRlc3RiLmVzPlxuIgoiICAgICAgLSBEb3VnbGFzIEUuIFdlZ3NjaGVpZCA8d2Vnc2NkQHdoaXJscG9vbC5jb20+XG4iCiIgICAgICAtIE1hcmsgQnV0bGVyIDxidXRsZXJtQHhtaXNzaW9uLmNvbT5cbiIKIiAgICAgIC0gRXJpYyBUaGVsaW4gPGVyaWNAZ2VuZXJhdGlvbi1pLmNvbT5cbiIKIiAgICAgIC0gTWFyYyBCb3VjaGVyIDxtYXJjQG1ic2kuY2E+XG4iCiIgICAgICAtIEdyZWcgT251ZmVyIDxHcmVnLk9udWZlckBFbmcuU3VuLkNPTT5cbiIKIiAgICAgIC0gRG91ZyBLYXVmbWFuIDxka2F1Zm1hbkByYWh1bC5uZXQ+XG4iCiIgICAgICAtIERhdmlkIEVyaWtzc29uIDxkYXZpZEAyZ29vZC5jb20+XG4iCiIgICAgICAtIFJhbHBoIEJlY2ttYW5uIDxyYWJlQHVuaS1wYWRlcmJvcm4uZGU+XG4iCiIgICAgICAtIFQuIFlhbWFkYSA8dGFpQGltYXN5Lm9yLmpwPlxuIgoiICAgICAgLSBMYXJzIEouIEFhcyA8bGFyc2FAc2ltLm5vPlxuIgoiICAgICAgLSBK9nJuIEhhcnRyb3RoIDxKb2Vybi5IYXJ0cm90aEBjb21wdXRlci5vcmc+XG4iCiIgICAgICAtIE1hdHRoZXcgQ2xhcmtlIDxjbGFtYXRAdmFuLm1hdmVzLmNhPlxuIgoiICAgICAgLSBMaW51cyBOaWVsc2VuIDxMaW51cy5OaWVsc2VuQGhheHguc2U+XG4iCiIgICAgICAtIEZlbGl4IHZvbiBMZWl0bmVyIDxmZWxpeEBjb252ZXJnZW5jZS5kZT5cbiIKIiAgICAgIC0gRGFuIFppdHRlciA8ZHppdHRlckB6aXR0ZXIubmV0PlxuIgoiICAgICAgLSBKb25na2kgU3V3YW5kaSA8Sm9uZ2tpLlN1d2FuZGlAZW5nLnN1bi5jb20+XG4iCiIgICAgICAtIENocmlzIE1hbHRieSA8Y2hyaXNAYXVyZW1hLmNvbT5cbiIKIiAgICAgIC0gUm9uIFphcHAgPHJ6YXBwZXJAeWFob28uY29tPlxuIgoiICAgICAgLSBQYXVsIE1hcnF1aXMgPHBtYXJxdWlzQGluYW1lLmNvbT5cbiIKIiAgICAgIC0gRWxsaXMgUHJpdGNoYXJkIDxlbGxpc0BjaXRyaWEuY29tPlxuIgoiICAgICAgLSBEYW1pZW4gQWRhbnQgPGRhbXNAdXNhLm5ldD5cbiIKIiAgICAgIC0gQ2hyaXMgPGNiYXlsaXNzQGNzYy5jb21lPlxuIgoiICAgICAgLSBNYXJjbyBHLiBTYWx2YWdubyA8bWdzQHdoaXouY2piLm5ldD5cbiIKIiAgICAgIC0gUGF1bCBNYXJxdWlzIDxwbWFycXVpc0BpbmFtZS5jb20+XG4iCiIgICAgICAtIERhdmlkIExlQmxhbmMgPGRsZWJsYW5jQHFueC5jb20+XG4iCiIgICAgICAtIFJpY2ggR3JheSBhdCBQbHVzIFRlY2hub2xvZ2llc1xuIgoiICAgICAgLSBMdW9uZyBEaW5oIER1bmcgPHU4bHVvbmdAbGhzeXN0ZW1zLmh1PlxuIgoiICAgICAgLSBUb3JzdGVuIEZvZXJ0c2NoIDx0b3JzdGVuLmZvZXJ0c2NoQGdteC5uZXQ+XG4iCiIgICAgICAtIEtyaXN0aWFuIEv2aG50b3BwIDxrcmlzQGtvZWhudG9wcC5kZT5cbiIKIiAgICAgIC0gRnJlZCBOb3ogPEZOb3pAc2lhYy5jb20+XG4iCiIgICAgICAtIENhb2xhbiBNY05hbWFyYSA8Y2FvbGFuQGNzbi51bC5pZT5cbiIKIlxuIgoiV1dXXG4iCiIgICAgIGh0dHA6Ly9jdXJsLmhheHguc2VcbiIKIlxuIgoiRlRQXG4iCiIgICAgIGZ0cDovL2Z0cC5zdW5ldC5zZS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsL1xuIgoiXG4iCiJTRUUgQUxTT1xuIgoiICAgICBmdHAoMSksIHdnZXQoMSksIHNuYXJmKDEpXG4iCiJcbiIKIkxBVEVTVCBWRVJTSU9OXG4iCiJcbiIKIiAgWW91IGFsd2F5cyBmaW5kIG5ld3MgYWJvdXQgd2hhdCdzIGdvaW5nIG9uIGFzIHdlbGwgYXMgdGhlIGxhdGVzdCB2ZXJzaW9uc1xuIgoiICBmcm9tIHRoZSBjdXJsIHdlYiBwYWdlcywgbG9jYXRlZCBhdDpcbiIKIlxuIgoiICAgICAgICBodHRwOi8vY3VybC5oYXh4LnNlXG4iCiJcbiIKIlNJTVBMRSBVU0FHRVxuIgoiXG4iCiIgIEdldCB0aGUgbWFpbiBwYWdlIGZyb20gbmV0c2NhcGUncyB3ZWItc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IHRoZSByb290IFJFQURNRSBmaWxlIGZyb20gZnVuZXQncyBmdHAtc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vZnRwLmZ1bmV0LmZpL1JFQURNRVxuIgoiXG4iCiIgIEdldCBhIGdvcGhlciBkb2N1bWVudCBmcm9tIGZ1bmV0J3MgZ29waGVyIHNlcnZlcjpcbiIKIlxuIgoiICAgICAgICBjdXJsIGdvcGhlcjovL2dvcGhlci5mdW5ldC5maVxuIgoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGZyb20gYSBzZXJ2ZXIgdXNpbmcgcG9ydCA4MDAwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy53ZWlyZHNlcnZlci5jb206ODAwMC9cbiIKIlxuIgoiICBHZXQgYSBsaXN0IG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiBhbiBGVFAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL2Z0cC5mdHMuZnJvbnRlYy5zZS9cbiIKIlxuIgoiICBHZXQgdGhlIGRlZmluaXRpb24gb2YgY3VybCBmcm9tIGEgZGljdGlvbmFyeTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9tOmN1cmxcbiIKIlxuIgoiRE9XTkxPQUQgVE8gQSBGSUxFXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1vIHRoYXRwYWdlLmh0bWwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZSwgbWFrZSB0aGUgbG9jYWwgZmlsZSBnZXQgdGhlIG5hbWVcbiIKIiAgb2YgdGhlIHJlbW90ZSBkb2N1bWVudCAoaWYgbm8gZmlsZSBuYW1lIHBhcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwsIHRoaXNcbiIKIiAgd2lsbCBmYWlsKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1PIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL2luZGV4Lmh0bWxcbiIKIlxuIgoiVVNJTkcgUEFTU1dPUkRTXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICAgVG8gZnRwIGZpbGVzIHVzaW5nIG5hbWUrcGFzc3dkLCBpbmNsdWRlIHRoZW0gaW4gdGhlIFVSTCBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW46cG9ydC9mdWxsL3BhdGgvdG8vZmlsZVxuIgopOwogcHV0cygKIlxuIgoiICAgb3Igc3BlY2lmeSB0aGVtIHdpdGggdGhlIC11IGZsYWcgbGlrZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgbmFtZTpwYXNzd2QgZnRwOi8vbWFjaGluZS5kb21haW46cG9ydC9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgSFRUUFxuIgoiXG4iCiIgICBUaGUgSFRUUCBVUkwgZG9lc24ndCBzdXBwb3J0IHVzZXIgYW5kIHBhc3N3b3JkIGluIHRoZSBVUkwgc3RyaW5nLiBDdXJsXG4iCiIgICBkb2VzIHN1cHBvcnQgdGhhdCBhbnl3YXkgdG8gcHJvdmlkZSBhIGZ0cC1zdHlsZSBpbnRlcmZhY2UgYW5kIHRodXMgeW91IGNhblxuIgoiICAgcGljayBhIGZpbGUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHA6Ly9uYW1lOnBhc3N3ZEBtYWNoaW5lLmRvbWFpbi9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBvciBzcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHNlcGFyYXRlbHkgbGlrZSBpblxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgbmFtZTpwYXNzd2QgaHR0cDovL21hY2hpbmUuZG9tYWluL2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIE5PVEUhIFNpbmNlIEhUVFAgVVJMcyBkb24ndCBzdXBwb3J0IHVzZXIgYW5kIHBhc3N3b3JkLCB5b3UgY2FuJ3QgdXNlIHRoYXRcbiIKIiAgIHN0eWxlIHdoZW4gdXNpbmcgQ3VybCB2aWEgYSBwcm94eS4gWW91IF9tdXN0XyB1c2UgdGhlIC11IHN0eWxlIGZldGNoXG4iCiIgICBkdXJpbmcgc3VjaCBjaXJjdW1zdGFuY2VzLlxuIgoiXG4iCiIgSFRUUFNcbiIKIlxuIgoiICAgUHJvYmFibHkgbW9zdCBjb21tb25seSB1c2VkIHdpdGggcHJpdmF0ZSBjZXJ0aWZpY2F0ZXMsIGFzIGV4cGxhaW5lZCBiZWxvdy5cbiIKIlxuIgoiIEdPUEhFUlxuIgoiXG4iCiIgICBDdXJsIGZlYXR1cmVzIG5vIHBhc3N3b3JkIHN1cHBvcnQgZm9yIGdvcGhlci5cbiIKIlxuIgoiUFJPWFlcbiIKIlxuIgoiIEdldCBhbiBmdHAgZmlsZSB1c2luZyBhIHByb3h5IG5hbWVkIG15LXByb3h5IHRoYXQgdXNlcyBwb3J0IDg4ODpcbiIKIlxuIgoiICAgICAgICBjdXJsIC14IG15LXByb3h5Ojg4OCBmdHA6Ly9mdHAubGVhY2hzaXRlLmNvbS9SRUFETUVcbiIKIlxuIgoiIEdldCBhIGZpbGUgZnJvbSBhIEhUVFAgc2VydmVyIHRoYXQgcmVxdWlyZXMgdXNlciBhbmQgcGFzc3dvcmQsIHVzaW5nIHRoZVxuIgoiIHNhbWUgcHJveHkgYXMgYWJvdmU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSB1c2VyOnBhc3N3ZCAteCBteS1wcm94eTo4ODggaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiIFNvbWUgcHJveGllcyByZXF1aXJlIHNwZWNpYWwgYXV0aGVudGljYXRpb24uIFNwZWNpZnkgYnkgdXNpbmcgLVUgYXMgYWJvdmU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVSB1c2VyOnBhc3N3ZCAteCBteS1wcm94eTo4ODggaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiIFNlZSBhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ3VybCBzdXBwb3J0IHRoYXQgb2ZmZXIgZnVydGhlciBwcm94eVxuIgoiIGNvbnRyb2wuXG4iCiJcbiIKIlJBTkdFU1xuIgoiXG4iCiIgIFdpdGggSFRUUCAxLjEgYnl0ZS1yYW5nZXMgd2VyZSBpbnRyb2R1Y2VkLiBVc2luZyB0aGlzLCBhIGNsaWVudCBjYW4gcmVxdWVzdFxuIgoiICB0byBnZXQgb25seSBvbmUgb3IgbW9yZSBzdWJwYXJ0cyBvZiBhIHNwZWNpZmllZCBkb2N1bWVudC4gQ3VybCBzdXBwb3J0c1xuIgoiICB0aGlzIHdpdGggdGhlIC1yIGZsYWcuXG4iCiJcbiIKIiAgR2V0IHRoZSBmaXJzdCAxMDAgYnl0ZXMgb2YgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIDAtOTkgaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiICBHZXQgdGhlIGxhc3QgNTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAtNTAwIGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiAgQ3VybCBhbHNvIHN1cHBvcnRzIHNpbXBsZSByYW5nZXMgZm9yIEZUUCBmaWxlcyBhcyB3ZWxsLiBUaGVuIHlvdSBjYW4gb25seVxuIgoiICBzcGVjaWZ5IHN0YXJ0IGFuZCBzdG9wIHBvc2l0aW9uLlxuIgoiXG4iCiIgIEdldCB0aGUgZmlyc3QgMTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQgdXNpbmcgRlRQOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgMC05OSBmdHA6Ly93d3cuZ2V0LnRoaXMvUkVBRE1FICBcbiIKIlxuIgoiVVBMT0FESU5HXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgZnRwIHNpdGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBVcGxvYWQgZGF0YSBmcm9tIGEgc3BlY2lmaWVkIGZpbGUsIGxvZ2luIHdpdGggdXNlciBhbmQgcGFzc3dvcmQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgIFVwbG9hZCBhIGxvY2FsIGZpbGUgdG8gdGhlIHJlbW90ZSBzaXRlLCBhbmQgdXNlIHRoZSBsb2NhbCBmaWxlIG5hbWUgcmVtb3RlXG4iCiIgIHRvbzpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiIgIFVwbG9hZCBhIGxvY2FsIGZpbGUgdG8gZ2V0IGFwcGVuZGVkIHRvIHRoZSByZW1vdGUgZmlsZSB1c2luZyBmdHA6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVCBsb2NhbGZpbGUgLWEgZnRwOi8vZnRwLnVwbG9hZC5jb20vcmVtb3RlZmlsZVxuIgoiXG4iCiIgIE5PVEU6IEN1cmwgZG9lcyBub3Qgc3VwcG9ydCBmdHAgdXBsb2FkIHRocm91Z2ggYSBwcm94eSEgVGhlIHJlYXNvbiBmb3IgdGhpc1xuIgoiICBpcyBzaW1wbHkgdGhhdCBwcm94aWVzIGFyZSBzZWxkb21seSBjb25maWd1cmVkIHRvIGFsbG93IHRoaXMgYW5kIHRoYXQgbm9cbiIKIiAgYXV0aG9yIGhhcyBzdXBwbGllZCBjb2RlIHRoYXQgbWFrZXMgaXQgcG9zc2libGUhXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGh0dHAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC10IGh0dHA6Ly93d3cudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBOb3RlIHRoYXQgdGhlIGh0dHAgc2VydmVyIG11c3QndmUgYmVlbiBjb25maWd1cmVkIHRvIGFjY2VwdCBQVVQgYmVmb3JlIHRoaXNcbiIKIiAgY2FuIGJlIGRvbmUgc3VjY2Vzc2Z1bGx5LlxuIgoiXG4iCiIgIEZvciBvdGhlciB3YXlzIHRvIGRvIGh0dHAgZGF0YSB1cGxvYWQsIHNlZSB0aGUgUE9TVCBzZWN0aW9uIGJlbG93LlxuIgoiXG4iCiJWRVJCT1NFIC8gREVCVUdcbiIKIlxuIgoiICBJZiBjdXJsIGZhaWxzIHdoZXJlIGl0IGlzbid0IHN1cHBvc2VkIHRvLCBpZiB0aGUgc2VydmVycyBkb24ndCBsZXQgeW91XG4iCiIgIGluLCBpZiB5b3UgY2FuJ3QgdW5kZXJzdGFuZCB0aGUgcmVzcG9uc2VzOiB1c2UgdGhlIC12IGZsYWcgdG8gZ2V0IFZFUkJPU0VcbiIKIiAgZmV0Y2hpbmcuIEN1cmwgd2lsbCBvdXRwdXQgbG90cyBvZiBpbmZvIGFuZCBhbGwgZGF0YSBpdCBzZW5kcyBhbmRcbiIKIiAgcmVjZWl2ZXMgaW4gb3JkZXIgdG8gbGV0IHRoZSB1c2VyIHNlZSBhbGwgY2xpZW50LXNlcnZlciBpbnRlcmFjdGlvbi5cbiIKIlxuIgoiICAgICAgICBjdXJsIC12IGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiJERVRBSUxFRCBJTkZPUk1BVElPTlxuIgoiXG4iCiIgIERpZmZlcmVudCBwcm90b2NvbHMgcHJvdmlkZSBkaWZmZXJlbnQgd2F5cyBvZiBnZXR0aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uXG4iCiIgIGFib3V0IHNwZWNpZmljIGZpbGVzL2RvY3VtZW50cy4gVG8gZ2V0IGN1cmwgdG8gc2hvdyBkZXRhaWxlZCBpbmZvcm1hdGlvblxuIgoiICBhYm91dCBhIHNpbmdsZSBmaWxlLCB5b3Ugc2hvdWxkIHVzZSAtSS8tLWhlYWQgb3B0aW9uLiBJdCBkaXNwbGF5cyBhbGxcbiIKIiAgYXZhaWxhYmxlIGluZm8gb24gYSBzaW5nbGUgZmlsZSBmb3IgSFRUUCBhbmQgRlRQLiBUaGUgSFRUUCBpbmZvcm1hdGlvbiBpcyBhXG4iCiIgIGxvdCBtb3JlIGV4dGVuc2l2ZS5cbiIKIlxuIgoiICBGb3IgSFRUUCwgeW91IGNhbiBnZXQgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiAodGhlIHNhbWUgYXMgLUkgd291bGQgc2hvdylcbiIKIiAgc2hvd24gYmVmb3JlIHRoZSBkYXRhIGJ5IHVzaW5nIC1pLy0taW5jbHVkZS4gQ3VybCB1bmRlcnN0YW5kcyB0aGVcbiIKIiAgLUQvLS1kdW1wLWhlYWRlciBvcHRpb24gd2hlbiBnZXR0aW5nIGZpbGVzIGZyb20gYm90aCBGVFAgYW5kIEhUVFAsIGFuZCBpdFxuIgoiICB3aWxsIHRoZW4gc3RvcmUgdGhlIGhlYWRlcnMgaW4gdGhlIHNwZWNpZmllZCBmaWxlLlxuIgoiXG4iCiIgIFN0b3JlIHRoZSBIVFRQIGhlYWRlcnMgaW4gYSBzZXBhcmF0ZSBmaWxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1kdW1wLWhlYWRlciBoZWFkZXJzLnR4dCBjdXJsLmhheHguc2VcbiIKIlxuIgoiICBOb3RlIHRoYXQgaGVhZGVycyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBmaWxlIGNhbiBiZSB2ZXJ5IHVzZWZ1bCBhdCBhIGxhdGVyXG4iCiIgIHRpbWUgaWYgeW91IHdhbnQgY3VybCB0byB1c2UgY29va2llcyBzZW50IGJ5IHRoZSBzZXJ2ZXIuIE1vcmUgYWJvdXQgdGhhdCBpblxuIgoiICB0aGUgY29va2llcyBzZWN0aW9uLlxuIgoiXG4iCiJQT1NUIChIVFRQKVxuIgoiXG4iCiIgIEl0J3MgZWFzeSB0byBwb3N0IGRhdGEgdXNpbmcgY3VybC4gVGhpcyBpcyBkb25lIHVzaW5nIHRoZSAtZCA8ZGF0YT5cbiIKIiAgb3B0aW9uLiAgVGhlIHBvc3QgZGF0YSBtdXN0IGJlIHVybGVuY29kZWQuXG4iCiJcbiIKIiAgUG9zdCBhIHNpbXBsZSBcIm5hbWVcIiBhbmQgXCJwaG9uZVwiIGd1ZXN0Ym9vay5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1kIFwibmFtZT1SYWZhZWwlMjBTYWd1bGEmcGhvbmU9MzMyMDc4MFwiIFxcXG4iCiIgICAgICAgICAgICAgICAgaHR0cDovL3d3dy53aGVyZS5jb20vZ3Vlc3QuY2dpXG4iCiJcbiIKIiAgSG93IHRvIHBvc3QgYSBmb3JtIHdpdGggY3VybCwgbGVzc29uICMxOlxuIgoiXG4iCiIgIERpZyBvdXQgYWxsIHRoZSA8aW5wdXQ+IHRhZ3MgaW4gdGhlIGZvcm0gdGhhdCB5b3Ugd2FudCB0byBmaWxsIGluLiAoVGhlcmUnc1xuIgoiICBhIHBlcmwgcHJvZ3JhbSBjYWxsZWQgZm9ybWZpbmQucGwgb24gdGhlIGN1cmwgc2l0ZSB0aGF0IGhlbHBzIHdpdGggdGhpcykuXG4iCiJcbiIKIiAgSWYgdGhlcmUncyBhIFwibm9ybWFsXCIgcG9zdCwgeW91IHVzZSAtZCB0byBwb3N0LiAtZCB0YWtlcyBhIGZ1bGwgXCJwb3N0XG4iCiIgIHN0cmluZ1wiLCB3aGljaCBpcyBpbiB0aGUgZm9ybWF0XG4iCiJcbiIKIiAgICAgICAgPHZhcmlhYmxlMT49PGRhdGExPiY8dmFyaWFibGUyPj08ZGF0YTI+Ji4uLlxuIgoiXG4iCiIgIFRoZSAndmFyaWFibGUnIG5hbWVzIGFyZSB0aGUgbmFtZXMgc2V0IHdpdGggXCJuYW1lPVwiIGluIHRoZSA8aW5wdXQ+IHRhZ3MsIGFuZFxuIgoiICB0aGUgZGF0YSBpcyB0aGUgY29udGVudHMgeW91IHdhbnQgdG8gZmlsbCBpbiBmb3IgdGhlIGlucHV0cy4gVGhlIGRhdGEgKm11c3QqXG4iCiIgIGJlIHByb3Blcmx5IFVSTCBlbmNvZGVkLiBUaGF0IG1lYW5zIHlvdSByZXBsYWNlIHNwYWNlIHdpdGggKyBhbmQgdGhhdCB5b3VcbiIKIiAgd3JpdGUgd2VpcmQgbGV0dGVycyB3aXRoICVYWCB3aGVyZSBYWCBpcyB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2ZcbiIKIiAgdGhlIGxldHRlcidzIEFTQ0lJIGNvZGUuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAocGFnZSBsb2NhdGVkIGF0IGh0dHA6Ly93d3cuZm9ybXBvc3QuY29tL2dldHRoaXMvXG4iCiJcbiIKIiAgICAgICAgPGZvcm0gYWN0aW9uPVwicG9zdC5jZ2lcIiBtZXRob2Q9XCJwb3N0XCI+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPXVzZXIgc2l6ZT0xMD5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9cGFzcyB0eXBlPXBhc3N3b3JkIHNpemU9MTA+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPWlkIHR5cGU9aGlkZGVuIHZhbHVlPVwiYmxhYmxhYmxhXCI+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPWRpbmcgdmFsdWU9XCJzdWJtaXRcIj5cbiIKIiAgICAgICAgPC9mb3JtPlxuIgoiXG4iCiIgIFdlIHdhbnQgdG8gZW50ZXIgdXNlciAnZm9vYmFyJyB3aXRoIHBhc3N3b3JkICcxMjM0NScuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGlzLCB5b3UgZW50ZXIgYSBjdXJsIGNvbW1hbmQgbGluZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWQgXCJ1c2VyPWZvb2JhciZwYXNzPTEyMzQ1JmlkPWJsYWJsYWJsYSZkaWc9c3VibWl0XCIgIChjb250aW51ZXMpXG4iCiIgICAgICAgICAgaHR0cDovL3d3dy5mb3JtcG9zdC5jb20vZ2V0dGhpcy9wb3N0LmNnaVxuIgoiXG4iCiJcbiIKIiAgV2hpbGUgLWQgdXNlcyB0aGUgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIG1pbWUtdHlwZSwgZ2VuZXJhbGx5XG4iCiIgIHVuZGVyc3Rvb2QgYnkgQ0dJJ3MgYW5kIHNpbWlsYXIsIGN1cmwgYWxzbyBzdXBwb3J0cyB0aGUgbW9yZSBjYXBhYmxlXG4iCiIgIG11bHRpcGFydC9mb3JtLWRhdGEgdHlwZS4gVGhpcyBsYXR0ZXIgdHlwZSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBmaWxlIHVwbG9hZC5cbiIKIlxuIgoiICAtRiBhY2NlcHRzIHBhcmFtZXRlcnMgbGlrZSAtRiBcIm5hbWU9Y29udGVudHNcIi4gSWYgeW91IHdhbnQgdGhlIGNvbnRlbnRzIHRvXG4iCiIgIGJlIHJlYWQgZnJvbSBhIGZpbGUsIHVzZSA8QGZpbGVuYW1lPiBhcyBjb250ZW50cy4gV2hlbiBzcGVjaWZ5aW5nIGEgZmlsZSxcbiIKIiAgeW91IGNhbiBhbHNvIHNwZWNpZnkgd2hpY2ggY29udGVudCB0eXBlIHRoZSBmaWxlIGlzLCBieSBhcHBlbmRpbmdcbiIKIiAgJzt0eXBlPTxtaW1lIHR5cGU+JyB0byB0aGUgZmlsZSBuYW1lLiBZb3UgY2FuIGFsc28gcG9zdCBjb250ZW50cyBvZiBzZXZlcmFsXG4iCiIgIGZpbGVzIGluIG9uZSBmaWVsZC4gU28gdGhhdCB0aGUgZmllbGQgbmFtZSAnY29vbGZpbGVzJyBjYW4gYmUgc2VudCB0aHJlZVxuIgoiICBmaWxlcyB3aXRoIGRpZmZlcmVudCBjb250ZW50IHR5cGVzIGluIGEgbWFubmVyIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImNvb2xmaWxlcz1AZmlsMS5naWY7dHlwZT1pbWFnZS9naWYsZmlsMi50eHQsZmlsMy5odG1sXCIgXFxcbiIKIiAgICAgICAgaHR0cDovL3d3dy5wb3N0LmNvbS9wb3N0aXQuY2dpXG4iCiJcbiIKIiAgSWYgY29udGVudC10eXBlIGlzIG5vdCBzcGVjaWZpZWQsIGN1cmwgd2lsbCB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uXG4iCiIgIChpdCBvbmx5IGtub3dzIGEgZmV3KSwgb3IgdXNlIHRoZSBwcmV2aW91c2x5IHNwZWNpZmllZCB0eXBlIChmcm9tIGFuIGVhcmxpZXJcbiIKIiAgZmlsZSBpZiBzZXZlcmFsIGZpbGVzIGFyZSBzcGVjaWZpZWQgaW4gYSBsaXN0KSBvciBmaW5hbGx5IHVzaW5nIHRoZSBkZWZhdWx0XG4iCiIgIHR5cGUgJ3RleHQvcGxhaW4nLlxuIgoiXG4iCiIgIEVtdWxhdGUgYSBmaWxsLWluIGZvcm0gd2l0aCAtRi4gTGV0J3Mgc2F5IHlvdSBmaWxsIGluIHRocmVlIGZpZWxkcyBpbiBhXG4iCiIgIGZvcm0uIE9uZSBmaWVsZCBpcyBhIGZpbGUgbmFtZSB3aGljaCB0byBwb3N0LCBvbmUgZmllbGQgaXMgeW91ciBuYW1lIGFuZCBvbmVcbiIKIiAgZmllbGQgaXMgYSBmaWxlIGRlc2NyaXB0aW9uLiBXZSB3YW50IHRvIHBvc3QgdGhlIGZpbGUgd2UgaGF2ZSB3cml0dGVuIG5hbWVkXG4iCiIgIFwiY29vbHRleHQudHh0XCIuIFRvIGxldCBjdXJsIGRvIHRoZSBwb3N0aW5nIG9mIHRoaXMgZGF0YSBpbnN0ZWFkIG9mIHlvdXJcbiIKIiAgZmF2b3VyaXRlIGJyb3dzZXIsIHlvdSBoYXZlIHRvIGNoZWNrIG91dCB0aGUgSFRNTCBvZiB0aGUgZm9ybSBwYWdlIHRvIGdldCB0b1xuIgoiICBrbm93IHRoZSBuYW1lcyBvZiB0aGUgaW5wdXQgZmllbGRzLiBJbiBvdXIgZXhhbXBsZSwgdGhlIGlucHV0IGZpZWxkIG5hbWVzIGFyZVxuIgoiICAnZmlsZScsICd5b3VybmFtZScgYW5kICdmaWxlZGVzY3JpcHRpb24nLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJmaWxlPUBjb29sdGV4dC50eHRcIiAtRiBcInlvdXJuYW1lPURhbmllbFwiIFxcXG4iCiIgICAgICAgICAgICAgLUYgXCJmaWxlZGVzY3JpcHRpb249Q29vbCB0ZXh0IGZpbGUgd2l0aCBjb29sIHRleHQgaW5zaWRlXCIgXFxcbiIKIiAgICAgICAgICAgICBodHRwOi8vd3d3LnBvc3QuY29tL3Bvc3RpdC5jZ2lcbiIKIlxuIgoiICBTbywgdG8gc2VuZCB0d28gZmlsZXMgaW4gb25lIHBvc3QgeW91IGNhbiBkbyBpdCBpbiB0d28gd2F5czpcbiIKIlxuIgoiICAxLiBTZW5kIG11bHRpcGxlIGZpbGVzIGluIGEgc2luZ2xlIFwiZmllbGRcIiB3aXRoIGEgc2luZ2xlIGZpZWxkIG5hbWU6XG4iCiIgXG4iCiIgICAgICAgIGN1cmwgLUYgXCJwaWN0dXJlcz1AZG9nLmdpZixjYXQuZ2lmXCIgXG4iCiIgXG4iCiIgIDIuIFNlbmQgdHdvIGZpZWxkcyB3aXRoIHR3byBmaWVsZCBuYW1lczogXG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImRvY3BpY3R1cmU9QGRvZy5naWZcIiAtRiBcImNhdHBpY3R1cmU9QGNhdC5naWZcIiBcbiIKIlxuIgoiUkVGRVJFUlxuIgoiXG4iCiIgIEEgSFRUUCByZXF1ZXN0IGhhcyB0aGUgb3B0aW9uIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggYWRkcmVzc1xuIgoiICB0aGF0IHJlZmVycmVkIHRvIGFjdHVhbCBwYWdlLCBhbmQgY3VybCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGF0XG4iCiIgIHJlZmVycmVyIHRvIGdldCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gSXQgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG9cbiIKIiAgZm9vbCBvciB0cmljayBzdHVwaWQgc2VydmVycyBvciBDR0kgc2NyaXB0cyB0aGF0IHJlbHkgb24gdGhhdCBpbmZvcm1hdGlvblxuIgoiICBiZWluZyBhdmFpbGFibGUgb3IgY29udGFpbiBjZXJ0YWluIGRhdGEuXG4iCiJcbiIKIiAgICAgICAgY3VybCAtZSB3d3cuY29vbHNpdGUuY29tIGh0dHA6Ly93d3cuc2hvd21lLmNvbS9cbiIKIlxuIgoiVVNFUiBBR0VOVFxuIgoiXG4iCiIgIEEgSFRUUCByZXF1ZXN0IGhhcyB0aGUgb3B0aW9uIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJyb3dzZXJcbiIKIiAgdGhhdCBnZW5lcmF0ZWQgdGhlIHJlcXVlc3QuIEN1cmwgYWxsb3dzIGl0IHRvIGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZFxuIgoiICBsaW5lLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0byBmb29sIG9yIHRyaWNrIHN0dXBpZCBzZXJ2ZXJzIG9yIENHSVxuIgoiICBzY3JpcHRzIHRoYXQgb25seSBhY2NlcHQgY2VydGFpbiBicm93c2Vycy5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgIGN1cmwgLUEgJ01vemlsbGEvMy4wIChXaW45NTsgSSknIGh0dHA6Ly93d3cubmF0aW9uc2JhbmsuY29tL1xuIgoiXG4iCiIgIE90aGVyIGNvbW1vbiBzdHJpbmdzOlxuIgoiICAgICdNb3ppbGxhLzMuMCAoV2luOTU7IEkpJyAgICAgTmV0c2NhcGUgVmVyc2lvbiAzIGZvciBXaW5kb3dzIDk1XG4iCiIgICAgJ01vemlsbGEvMy4wNCAoV2luOTU7IFUpJyAgICBOZXRzY2FwZSBWZXJzaW9uIDMgZm9yIFdpbmRvd3MgOTVcbiIKIiAgICAnTW96aWxsYS8yLjAyIChPUy8yOyBVKScgICAgIE5ldHNjYXBlIFZlcnNpb24gMiBmb3IgT1MvMlxuIgoiICAgICdNb3ppbGxhLzQuMDQgW2VuXSAoWDExOyBVOyBBSVggNC4yOyBOYXYpJyAgICAgICAgICAgTlMgZm9yIEFJWFxuIgoiICAgICdNb3ppbGxhLzQuMDUgW2VuXSAoWDExOyBVOyBMaW51eCAyLjAuMzIgaTU4NiknICAgICAgTlMgZm9yIExpbnV4XG4iCiJcbiIKIiAgTm90ZSB0aGF0IEludGVybmV0IEV4cGxvcmVyIHRyaWVzIGhhcmQgdG8gYmUgY29tcGF0aWJsZSBpbiBldmVyeSB3YXk6XG4iCiIgICAgJ01vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDQuMDE7IFdpbmRvd3MgOTUpJyAgICBNU0lFIGZvciBXOTVcbiIKIlxuIgoiICBNb3ppbGxhIGlzIG5vdCB0aGUgb25seSBwb3NzaWJsZSBVc2VyLUFnZW50IG5hbWU6XG4iCiIgICAgJ0tvbnF1ZXJvci8xLjAnICAgICAgICAgICAgIEtERSBGaWxlIE1hbmFnZXIgZGVza3RvcCBjbGllbnRcbiIKIiAgICAnTHlueC8yLjcuMSBsaWJ3d3ctRk0vMi4xNCcgTHlueCBjb21tYW5kIGxpbmUgYnJvd3NlclxuIgoiXG4iCiJDT09LSUVTXG4iCiJcbiIKIiAgQ29va2llcyBhcmUgZ2VuZXJhbGx5IHVzZWQgYnkgd2ViIHNlcnZlcnMgdG8ga2VlcCBzdGF0ZSBpbmZvcm1hdGlvbiBhdCB0aGVcbiIKIiAgY2xpZW50J3Mgc2lkZS4gVGhlIHNlcnZlciBzZXRzIGNvb2tpZXMgYnkgc2VuZGluZyBhIHJlc3BvbnNlIGxpbmUgaW4gdGhlXG4iCiIgIGhlYWRlcnMgdGhhdCBsb29rcyBsaWtlICdTZXQtQ29va2llOiA8ZGF0YT4nIHdoZXJlIHRoZSBkYXRhIHBhcnQgdGhlblxuIgoiICB0eXBpY2FsbHkgY29udGFpbnMgYSBzZXQgb2YgTkFNRT1WQUxVRSBwYWlycyAoc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgJzsnXG4iCiIgIGxpa2UgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMjtcIikuIFRoZSBzZXJ2ZXIgY2FuIGFsc28gc3BlY2lmeSBmb3Igd2hhdFxuIgoiICBwYXRoIHRoZSBcImNvb2tpZVwiIHNob3VsZCBiZSB1c2VkIGZvciAoYnkgc3BlY2lmeWluZyBcInBhdGg9dmFsdWVcIiksIHdoZW4gdGhlXG4iCiIgIGNvb2tpZSBzaG91bGQgZXhwaXJlIChcImV4cGlyZT1EQVRFXCIpLCBmb3Igd2hhdCBkb21haW4gdG8gdXNlIGl0XG4iCiIgIChcImRvbWFpbj1OQU1FXCIpIGFuZCBpZiBpdCBzaG91bGQgYmUgdXNlZCBvbiBzZWN1cmUgY29ubmVjdGlvbnMgb25seVxuIgoiICAoXCJzZWN1cmVcIikuXG4iCiJcbiIKIiAgSWYgeW91J3ZlIHJlY2VpdmVkIGEgcGFnZSBmcm9tIGEgc2VydmVyIHRoYXQgY29udGFpbnMgYSBoZWFkZXIgbGlrZTpcbiIKIiAgICAgICAgU2V0LUNvb2tpZTogc2Vzc2lvbmlkPWJvbzEyMzsgcGF0aD1cIi9mb29cIjtcbiIKIlxuIgoiICBpdCBtZWFucyB0aGUgc2VydmVyIHdhbnRzIHRoYXQgZmlyc3QgcGFpciBwYXNzZWQgb24gd2hlbiB3ZSBnZXQgYW55dGhpbmcgaW5cbiIKIiAgYSBwYXRoIGJlZ2lubmluZyB3aXRoIFwiL2Zvb1wiLlxuIgoiXG4iCiIgIEV4YW1wbGUsIGdldCBhIHBhZ2UgdGhhdCB3YW50cyBteSBuYW1lIHBhc3NlZCBpbiBhIGNvb2tpZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIFwibmFtZT1EYW5pZWxcIiB3d3cuc2lsbHlwYWdlLmNvbVxuIgoiXG4iCiIgIEN1cmwgYWxzbyBoYXMgdGhlIGFiaWxpdHkgdG8gdXNlIHByZXZpb3VzbHkgcmVjZWl2ZWQgY29va2llcyBpbiBmb2xsb3dpbmdcbiIKIiAgc2Vzc2lvbnMuIElmIHlvdSBnZXQgY29va2llcyBmcm9tIGEgc2VydmVyIGFuZCBzdG9yZSB0aGVtIGluIGEgZmlsZSBpbiBhXG4iCiIgIG1hbm5lciBzaW1pbGFyIHRvOlxuIgopOwogcHV0cygKIlxuIgoiICAgICAgICBjdXJsIC0tZHVtcC1oZWFkZXIgaGVhZGVycyB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICAuLi4geW91IGNhbiB0aGVuIGluIGEgc2Vjb25kIGNvbm5lY3QgdG8gdGhhdCAob3IgYW5vdGhlcikgc2l0ZSwgdXNlIHRoZVxuIgoiICBjb29raWVzIGZyb20gdGhlICdoZWFkZXJzJyBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBieSBzcGVjaWZ5aW5nIC1iIHlvdSBlbmFibGUgdGhlIFwiY29va2llIGF3YXJlbmVzc1wiIGFuZCB3aXRoIC1MXG4iCiIgIHlvdSBjYW4gbWFrZSBjdXJsIGZvbGxvdyBhIGxvY2F0aW9uOiAod2hpY2ggb2Z0ZW4gaXMgdXNlZCBpbiBjb21iaW5hdGlvblxuIgoiICB3aXRoIGNvb2tpZXMpLiBTbyB0aGF0IGlmIGEgc2l0ZSBzZW5kcyBjb29raWVzIGFuZCBhIGxvY2F0aW9uLCB5b3UgY2FuXG4iCiIgIHVzZSBhIG5vbi1leGlzdGluZyBmaWxlIHRvIHRyaWcgdGhlIGNvb2tpZSBhd2FyZW5lc3MgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1MIC1iIGVtcHR5LWZpbGUgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgVGhlIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gbXVzdCBiZSBmb3JtYXR0ZWQgdXNpbmcgcGxhaW4gSFRUUCBoZWFkZXJzIE9SXG4iCiIgIGFzIG5ldHNjYXBlJ3MgY29va2llIGZpbGUuIEN1cmwgd2lsbCBkZXRlcm1pbmUgd2hhdCBraW5kIGl0IGlzIGJhc2VkIG9uIHRoZVxuIgoiICBmaWxlIGNvbnRlbnRzLlxuIgoiXG4iCiJQUk9HUkVTUyBNRVRFUlxuIgoiXG4iCiIgIFRoZSBwcm9ncmVzcyBtZXRlciBleGlzdHMgdG8gc2hvdyBhIHVzZXIgdGhhdCBzb21ldGhpbmcgYWN0dWFsbHkgaXNcbiIKIiAgaGFwcGVuaW5nLiBUaGUgZGlmZmVyZW50IGZpZWxkcyBpbiB0aGUgb3V0cHV0IGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOlxuIgoiXG4iCiIgICUgVG90YWwgICAgJSBSZWNlaXZlZCAlIFhmZXJkICBBdmVyYWdlIFNwZWVkICAgICAgICAgIFRpbWUgICAgICAgICAgICAgQ3Vyci5cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERsb2FkICBVcGxvYWQgVG90YWwgICAgQ3VycmVudCAgTGVmdCAgICBTcGVlZFxuIgoiICAwICAxNTFNICAgIDAgMzg2MDggICAgMCAgICAgMCAgIDk0MDYgICAgICAwICA0OjQxOjQzICAwOjAwOjA0ICA0OjQxOjM5ICA5Mjg3XG4iCiJcbiIKIiAgRnJvbSBsZWZ0LXRvLXJpZ2h0OlxuIgoiICAgJSAgICAgICAgICAgICAtIHBlcmNlbnRhZ2UgY29tcGxldGVkIG9mIHRoZSB3aG9sZSB0cmFuc2ZlclxuIgoiICAgVG90YWwgICAgICAgICAtIHRvdGFsIHNpemUgb2YgdGhlIHdob2xlIGV4cGVjdGVkIHRyYW5zZmVyXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIGRvd25sb2FkXG4iCiIgICBSZWNlaXZlZCAgICAgIC0gY3VycmVudGx5IGRvd25sb2FkZWQgYW1vdW50IG9mIGJ5dGVzXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHVwbG9hZFxuIgoiICAgWGZlcmQgICAgICAgICAtIGN1cnJlbnRseSB1cGxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIERsb2FkICAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIFVwbG9hZCAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBUaW1lIFRvdGFsICAgIC0gZXhwZWN0ZWQgdGltZSB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uXG4iCiIgICBUaW1lIEN1cnJlbnQgIC0gdGltZSBwYXNzZWQgc2luY2UgdGhlIGludm9rZVxuIgoiICAgVGltZSBMZWZ0ICAgICAtIGV4cGVjdGVkIHRpbWUgbGVmdCB0byBjb21wbGV0ZXRpb25cbiIKIiAgIEN1cnIuU3BlZWQgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCB0aGUgbGFzdCA1IHNlY29uZHMgKHRoZSBmaXJzdFxuIgoiICAgICAgICAgICAgICAgICAgIDUgc2Vjb25kcyBvZiBhIHRyYW5zZmVyIGlzIGJhc2VkIG9uIGxlc3MgdGltZSBvZiBjb3Vyc2UuKVxuIgoiXG4iCiIgIFRoZSAtIyBvcHRpb24gd2lsbCBkaXNwbGF5IGEgdG90YWxseSBkaWZmZXJlbnQgcHJvZ3Jlc3MgYmFyIHRoYXQgZG9lc24ndFxuIgoiICBuZWVkIG11Y2ggZXhwbGFuYXRpb24hXG4iCiJcbiIKIlNQRUVEIExJTUlUXG4iCiJcbiIKIiAgQ3VybCBvZmZlcnMgdGhlIHVzZXIgdG8gc2V0IGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRyYW5zZmVyIHNwZWVkIHRoYXQgbXVzdFxuIgoiICBiZSBtZXQgdG8gbGV0IHRoZSB0cmFuc2ZlciBrZWVwIGdvaW5nLiBCeSB1c2luZyB0aGUgc3dpdGNoIC15IGFuZCAtWSB5b3VcbiIKIiAgY2FuIG1ha2UgY3VybCBhYm9ydCB0cmFuc2ZlcnMgaWYgdGhlIHRyYW5zZmVyIHNwZWVkIGRvZXNuJ3QgZXhjZWVkIHlvdXJcbiIKIiAgZ2l2ZW4gbG93ZXN0IGxpbWl0IGZvciBhIHNwZWNpZmllZCB0aW1lLlxuIgoiXG4iCiIgIFRvIGxldCBjdXJsIGFiYW5kb24gZG93bmxvYWRpbmcgdGhpcyBwYWdlIGlmIGl0cyBzbG93ZXIgdGhhbiAzMDAwIGJ5dGVzIHBlclxuIgoiICBzZWNvbmQgZm9yIDEgbWludXRlLCBydW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIHZlcnkgd2VsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIG92ZXJhbGwgdGltZSBsaW1pdCwgc29cbiIKIiAgdGhhdCB0aGUgYWJvdmUgb3BlcmF0aW9pbiBtdXN0IGJlIGNvbXBsZXRlZCBpbiB3aG9sZSB3aXRoaW4gMzAgbWludXRlczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1tIDE4MDAgLXkgMzAwMCAtWSA2MCB3d3cuZmFyLWF3YXktc2l0ZS5jb21cbiIKIlxuIgoiQ09ORklHIEZJTEVcbiIKIlxuIgoiICBDdXJsIGF1dG9tYXRpY2FsbHkgdHJpZXMgdG8gcmVhZCB0aGUgLmN1cmxyYyBmaWxlIChvciBfY3VybHJjIGZpbGUgb24gd2luMzJcbiIKIiAgc3lzdGVtcykgZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyIG9uIHN0YXJ0dXAuIFRoZSBjb25maWcgZmlsZSBzaG91bGQgYmVcbiIKIiAgbWFkZSB1cCB3aXRoIG5vcm1hbCBjb21tYW5kIGxpbmUgc3dpdGNoZXMuIENvbW1lbnRzIGNhbiBiZSB1c2VkIHdpdGhpbiB0aGVcbiIKIiAgZmlsZS4gSWYgdGhlIGZpcnN0IGxldHRlciBvbiBhIGxpbmUgaXMgYSAnIyctbGV0dGVyIHRoZSByZXN0IG9mIHRoZSBsaW5lXG4iCiIgIGlzIHRyZWF0ZWQgYXMgYSBjb21tZW50LlxuIgoiXG4iCiIgIEV4YW1wbGUsIHNldCBkZWZhdWx0IHRpbWUgb3V0IGFuZCBwcm94eSBpbiBhIGNvbmZpZyBmaWxlOlxuIgoiXG4iCiIgICAgICAgICMgV2Ugd2FudCBhIDMwIG1pbnV0ZSB0aW1lb3V0OlxuIgoiICAgICAgICAtbSAxODAwXG4iCiIgICAgICAgICMgLi4uIGFuZCB3ZSB1c2UgYSBwcm94eSBmb3IgYWxsIGFjY2Vzc2VzOlxuIgoiICAgICAgICAteCBwcm94eS5vdXIuZG9tYWluLmNvbTo4MDgwXG4iCiJcbiIKIiAgV2hpdGUgc3BhY2VzIEFSRSBzaWduaWZpY2FudCBhdCB0aGUgZW5kIG9mIGxpbmVzLCBidXQgYWxsIHdoaXRlIHNwYWNlc1xuIgoiICBsZWFkaW5nIHVwIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIGVhY2ggbGluZSBhcmUgaWdub3JlZC5cbiIKIlxuIgoiICBQcmV2ZW50IGN1cmwgZnJvbSByZWFkaW5nIHRoZSBkZWZhdWx0IGZpbGUgYnkgdXNpbmcgLXEgYXMgdGhlIGZpcnN0IGNvbW1hbmRcbiIKIiAgbGluZSBwYXJhbWV0ZXIsIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtcSB3d3cudGhhdHNpdGUuY29tXG4iCiJcbiIKIiAgRm9yY2UgY3VybCB0byBnZXQgYW5kIGRpc3BsYXkgYSBsb2NhbCBoZWxwIHBhZ2UgaW4gY2FzZSBpdCBpcyBpbnZva2VkXG4iCiIgIHdpdGhvdXQgVVJMIGJ5IG1ha2luZyBhIGNvbmZpZyBmaWxlIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgIyBkZWZhdWx0IHVybCB0byBnZXRcbiIKIiAgICAgICAgaHR0cDovL2hlbHAud2l0aC5jdXJsLmNvbS9jdXJsaGVscC5odG1sXG4iCiJcbiIKIiAgWW91IGNhbiBzcGVjaWZ5IGFub3RoZXIgY29uZmlnIGZpbGUgdG8gYmUgcmVhZCBieSB1c2luZyB0aGUgLUsvLS1jb25maWdcbiIKIiAgZmxhZy4gSWYgeW91IHNldCBjb25maWcgZmlsZSBuYW1lIHRvIFwiLVwiIGl0J2xsIHJlYWQgdGhlIGNvbmZpZyBmcm9tIHN0ZGluLFxuIgoiICB3aGljaCBjYW4gYmUgaGFuZHkgaWYgeW91IHdhbnQgdG8gaGlkZSBvcHRpb25zIGZyb20gYmVpbmcgdmlzaWJsZSBpbiBwcm9jZXNzXG4iCiIgIHRhYmxlcyBldGM6XG4iCiJcbiIKIiAgICAgICAgZWNobyBcIi11IHVzZXI6cGFzc3dkXCIgfCBjdXJsIC1LIC0gaHR0cDovL3RoYXQuc2VjcmV0LnNpdGUuY29tXG4iCiJcbiIKIkVYVFJBIEhFQURFUlNcbiIKIlxuIgoiICBXaGVuIHVzaW5nIGN1cmwgaW4geW91ciBvd24gdmVyeSBzcGVjaWFsIHByb2dyYW1zLCB5b3UgbWF5IGVuZCB1cCBuZWVkaW5nXG4iCiIgIHRvIHBhc3Mgb24geW91ciBvd24gY3VzdG9tIGhlYWRlcnMgd2hlbiBnZXR0aW5nIGEgd2ViIHBhZ2UuIFlvdSBjYW4gZG9cbiIKIiAgdGhpcyBieSB1c2luZyB0aGUgLUggZmxhZy5cbiIKIlxuIgoiICBFeGFtcGxlLCBzZW5kIHRoZSBoZWFkZXIgXCJYLXlvdS1hbmQtbWU6IHllc1wiIHRvIHRoZSBzZXJ2ZXIgd2hlbiBnZXR0aW5nIGFcbiIKIiAgcGFnZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1IIFwiWC15b3UtYW5kLW1lOiB5ZXNcIiB3d3cubG92ZS5jb21cbiIKIlxuIgoiICBUaGlzIGNhbiBhbHNvIGJlIHVzZWZ1bCBpbiBjYXNlIHlvdSB3YW50IGN1cmwgdG8gc2VuZCBhIGRpZmZlcmVudCB0ZXh0IGluXG4iCiIgIGEgaGVhZGVyIHRoYW4gaXQgbm9ybWFsbHkgZG9lcy4gVGhlIC1IIGhlYWRlciB5b3Ugc3BlY2lmeSB0aGVuIHJlcGxhY2VzIHRoZVxuIgoiICBoZWFkZXIgY3VybCB3b3VsZCBub3JtYWxseSBzZW5kLlxuIgoiXG4iCiJGVFAgYW5kIFBBVEggTkFNRVNcbiIKIlxuIgoiICBEbyBub3RlIHRoYXQgd2hlbiBnZXR0aW5nIGZpbGVzIHdpdGggdGhlIGZ0cDovLyBVUkwsIHRoZSBnaXZlbiBwYXRoIGlzXG4iCiIgIHJlbGF0aXZlIHRoZSBkaXJlY3RvcnkgeW91IGVudGVyLiBUbyBnZXQgdGhlIGZpbGUgJ1JFQURNRScgZnJvbSB5b3VyIGhvbWVcbiIKIiAgZGlyZWN0b3J5IGF0IHlvdXIgZnRwIHNpdGUsIGRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vdXNlcjpwYXNzd2RAbXkuc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiAgQnV0IGlmIHlvdSB3YW50IHRoZSBSRUFETUUgZmlsZSBmcm9tIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGF0IHZlcnkgc2FtZVxuIgoiICBzaXRlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly91c2VyOnBhc3N3ZEBteS5zaXRlLmNvbS8vUkVBRE1FXG4iCiJcbiIKIiAgKEkuZSB3aXRoIGFuIGV4dHJhIHNsYXNoIGluIGZyb250IG9mIHRoZSBmaWxlIG5hbWUuKVxuIgoiXG4iCiJGVFAgYW5kIGZpcmV3YWxsc1xuIgoiXG4iCiIgIFRoZSBGVFAgcHJvdG9jb2wgcmVxdWlyZXMgb25lIG9mIHRoZSBpbnZvbHZlZCBwYXJ0aWVzIHRvIG9wZW4gYSBzZWNvbmRcbiIKIiAgY29ubmN0aW9uIGFzIHNvb24gYXMgZGF0YSBpcyBhYm91dCB0byBnZXQgdHJhbnNmZXJlZC4gVGhlcmUgYXJlIHR3byB3YXlzIHRvXG4iCiIgIGRvIHRoaXMuXG4iCiJcbiIKIiAgVGhlIGRlZmF1bHQgd2F5IGZvciBjdXJsIGlzIHRvIGlzc3VlIHRoZSBQQVNWIGNvbW1hbmQgd2hpY2ggY2F1c2VzIHRoZVxuIgoiICBzZXJ2ZXIgdG8gb3BlbiBhbm90aGVyIHBvcnQgYW5kIGF3YWl0IGFub3RoZXIgY29ubmVjdGlvbiBwZXJmb3JtZWQgYnkgdGhlXG4iCiIgIGNsaWVudC4gVGhpcyBpcyBnb29kIGlmIHRoZSBjbGllbnQgaXMgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBkb24ndCBhbGxvd1xuIgoiICBpbmNvbWluZyBjb25uZWN0aW9ucy5cbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBJZiB0aGUgc2VydmVyIGZvciBleGFtcGxlLCBpcyBiZWhpbmQgYSBmaXJld2FsbCB0aGF0IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iCiIgIG9uIG90aGVyIHBvcnRzIHRoYW4gMjEgKG9yIGlmIGl0IGp1c3QgZG9lc24ndCBzdXBwb3J0IHRoZSBQQVNWIGNvbW1hbmQpLCB0aGVcbiIKIiAgb3RoZXIgd2F5IHRvIGRvIGl0IGlzIHRvIHVzZSB0aGUgUE9SVCBjb21tYW5kIGFuZCBpbnN0cnVjdCB0aGUgc2VydmVyIHRvXG4iCiIgIGNvbm5lY3QgdG8gdGhlIGNsaWVudCBvbiB0aGUgZ2l2ZW4gKGFzIHBhcmFtZXRlcnMgdG8gdGhlIFBPUlQgY29tbWFuZCkgSVBcbiIKIiAgbnVtYmVyIGFuZCBwb3J0LlxuIgoiXG4iCiIgIFRoZSAtUCBmbGFnIHRvIGN1cmwgYWxsb3dzIGZvciBkaWZmZXJlbnQgb3B0aW9ucy4gWW91ciBtYWNoaW5lIG1heSBoYXZlXG4iCiIgIHNldmVyYWwgSVAtYWRkcmVzc2VzIGFuZC9vciBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGN1cmwgYWxsb3dzIHlvdSB0byBzZWxlY3RcbiIKIiAgd2hpY2ggb2YgdGhlbSB0byB1c2UuIERlZmF1bHQgYWRkcmVzcyBjYW4gYWxzbyBiZSB1c2VkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgLSBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgdGhlIElQIGFkZHJlc3Mgb2Ygb3VyICdsZTAnIGludGVyZmFjZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIGxlMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgMTkyLjE2OC4wLjEwIGFzIG91ciBJUCBhZGRyZXNzIHRvIHVzZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIDE5Mi4xNjguMC4xMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIkhUVFBTXG4iCiJcbiIKIiAgU2VjdXJlIEhUVFAgcmVxdWlyZXMgU1NMIGxpYnJhcmllcyB0byBiZSBpbnN0YWxsZWQgYW5kIHVzZWQgd2hlbiBjdXJsIGlzXG4iCiIgIGJ1aWx0LiBJZiB0aGF0IGlzIGRvbmUsIGN1cmwgaXMgY2FwYWJsZSBvZiByZXRyaWV2aW5nIGFuZCBwb3N0aW5nIGRvY3VtZW50c1xuIgoiICB1c2luZyB0aGUgSFRUUFMgcHJvY290b2wuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHBzOi8vd3d3LnNlY3VyZS1zaXRlLmNvbVxuIgoiXG4iCiIgIEN1cmwgaXMgYWxzbyBjYXBhYmxlIG9mIHVzaW5nIHlvdXIgcGVyc29uYWwgY2VydGlmaWNhdGVzIHRvIGdldC9wb3N0IGZpbGVzXG4iCiIgIGZyb20gc2l0ZXMgdGhhdCByZXF1aXJlIHZhbGlkIGNlcnRpZmljYXRlcy4gVGhlIG9ubHkgZHJhd2JhY2sgaXMgdGhhdCB0aGVcbiIKIiAgY2VydGlmaWNhdGUgbmVlZHMgdG8gYmUgaW4gUEVNLWZvcm1hdC4gUEVNIGlzIGEgc3RhbmRhcmQgYW5kIG9wZW4gZm9ybWF0IHRvXG4iCiIgIHN0b3JlIGNlcnRpZmljYXRlcyB3aXRoLCBidXQgaXQgaXMgbm90IHVzZWQgYnkgdGhlIG1vc3QgY29tbW9ubHkgdXNlZFxuIgoiICBicm93c2VycyAoTmV0c2NhcGUgYW5kIE1TRUkgYm90aCB1c2UgdGhlIHNvIGNhbGxlZCBQS0NTIzEyIGZvcm1hdCkuIElmIHlvdVxuIgoiICB3YW50IGN1cmwgdG8gdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgeW91IHVzZSB3aXRoIHlvdXIgKGZhdm91cml0ZSkgYnJvd3NlciwgeW91XG4iCiIgIG1heSBuZWVkIHRvIGRvd25sb2FkL2NvbXBpbGUgYSBjb252ZXJ0ZXIgdGhhdCBjYW4gY29udmVydCB5b3VyIGJyb3dzZXInc1xuIgoiICBmb3JtYXR0ZWQgY2VydGlmaWNhdGVzIHRvIFBFTSBmb3JtYXR0ZWQgb25lcy4gVGhpcyBraW5kIG9mIGNvbnZlcnRlciBpc1xuIgoiICBpbmNsdWRlZCBpbiByZWNlbnQgdmVyc2lvbnMgb2YgT3BlblNTTCwgYW5kIGZvciBvbGRlciB2ZXJzaW9ucyBEciBTdGVwaGVuXG4iCiIgIE4uIEhlbnNvbiBoYXMgd3JpdHRlbiBhIHBhdGNoIGZvciBTU0xlYXkgdGhhdCBhZGRzIHRoaXMgZnVuY3Rpb25hbGl0eS4gWW91XG4iCiIgIGNhbiBnZXQgaGlzIHBhdGNoICh0aGF0IHJlcXVpcmVzIGFuIFNTTGVheSBpbnN0YWxsYXRpb24pIGZyb20gaGlzIHNpdGUgYXQ6XG4iCiIgIGh0dHA6Ly93d3cuZHJoLWNvbnN1bHRhbmN5LmRlbW9uLmNvLnVrL1xuIgoiXG4iCiIgIEV4YW1wbGUgb24gaG93IHRvIGF1dG9tYXRpY2FsbHkgcmV0cmlldmUgYSBkb2N1bWVudCB1c2luZyBhIGNlcnRpZmljYXRlIHdpdGhcbiIKIiAgYSBwZXJzb25hbCBwYXNzd29yZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1FIC9wYXRoL3RvL2NlcnQucGVtOnBhc3N3b3JkIGh0dHBzOi8vc2VjdXJlLnNpdGUuY29tL1xuIgoiXG4iCiIgIElmIHlvdSBuZWdsZWN0IHRvIHNwZWNpZnkgdGhlIHBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUsIHlvdSB3aWxsIGJlXG4iCiIgIHByb21wdGVkIGZvciB0aGUgY29ycmVjdCBwYXNzd29yZCBiZWZvcmUgYW55IGRhdGEgY2FuIGJlIHJlY2VpdmVkLlxuIgoiXG4iCiIgIE1hbnkgb2xkZXIgU1NMLXNlcnZlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIFNTTHYzIG9yIFRMUywgdGhhdCBuZXdlciB2ZXJzaW9uc1xuIgoiICBvZiBPcGVuU1NMIGV0YyBpcyB1c2luZywgdGhlcmVmb3JlIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gc3BlY2lmeSB3aGF0XG4iCiIgIFNTTC12ZXJzaW9uIGN1cmwgc2hvdWxkIHVzZS4gVXNlIC0zIG9yIC0yIHRvIHNwZWNpZnkgdGhhdCBleGFjdCBTU0wgdmVyc2lvblxuIgoiICB0byB1c2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtMiBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBPdGhlcndpc2UsIGN1cmwgd2lsbCBmaXJzdCBhdHRlbXB0IHRvIHVzZSB2MyBhbmQgdGhlbiB2Mi5cbiIKIlxuIgoiICBUbyB1c2UgT3BlblNTTCB0byBjb252ZXJ0IHlvdXIgZmF2b3VyaXRlIGJyb3dzZXIncyBjZXJ0aWZpY2F0ZSBpbnRvIGEgUEVNXG4iCiIgIGZvcm1hdHRlZCBvbmUgdGhhdCBjdXJsIGNhbiB1c2UsIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMgKGFzc3VtaW5nIG5ldHNjYXBlLFxuIgoiICBidXQgSUUgaXMgbGlrZWx5IHRvIHdvcmsgc2ltaWxhcmx5KTpcbiIKIlxuIgoiICAgIFlvdSBzdGFydCB3aXRoIGhpdHRpbmcgdGhlICdzZWN1cml0eScgbWVudSBidXR0b24gaW4gbmV0c2NhcGUuIFxuIgoiXG4iCiIgICAgU2VsZWN0ICdjZXJ0aWZpY2F0ZXMtPnlvdXJzJyBhbmQgdGhlbiBwaWNrIGEgY2VydGlmaWNhdGUgaW4gdGhlIGxpc3QgXG4iCiJcbiIKIiAgICBQcmVzcyB0aGUgJ2V4cG9ydCcgYnV0dG9uIFxuIgoiXG4iCiIgICAgZW50ZXIgeW91ciBQSU4gY29kZSBmb3IgdGhlIGNlcnRzIFxuIgoiXG4iCiIgICAgc2VsZWN0IGEgcHJvcGVyIHBsYWNlIHRvIHNhdmUgaXQgXG4iCiJcbiIKIiAgICBSdW4gdGhlICdvcGVuc3NsJyBhcHBsaWNhdGlvbiB0byBjb252ZXJ0IHRoZSBjZXJ0aWZpY2F0ZS4gSWYgeW91IGNkIHRvIHRoZVxuIgoiICAgIG9wZW5zc2wgaW5zdGFsbGF0aW9uLCB5b3UgY2FuIGRvIGl0IGxpa2U6XG4iCiJcbiIKIiAgICAgIyAuL2FwcHMvb3BlbnNzbCBwa2NzMTIgLWNlcnRmaWxlIFtmaWxlIHlvdSBzYXZlZF0gLW91dCBbUEVNZmlsZV1cbiIKIlxuIgoiXG4iCiJSRVNVTUlORyBGSUxFIFRSQU5TRkVSU1xuIgoiXG4iCiIgVG8gY29udGludWUgYSBmaWxlIHRyYW5zZmVyIHdoZXJlIGl0IHdhcyBwcmV2aW91c2x5IGFib3J0ZWQsIGN1cmwgc3VwcG9ydHNcbiIKIiByZXN1bWUgb24gaHR0cChzKSBkb3dubG9hZHMgYXMgd2VsbCBhcyBmdHAgdXBsb2FkcyBhbmQgZG93bmxvYWRzLlxuIgoiXG4iCiIgQ29udGludWUgZG93bmxvYWRpbmcgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1jIC1vIGZpbGUgZnRwOi8vZnRwLnNlcnZlci5jb20vcGF0aC9maWxlXG4iCiJcbiIKIiBDb250aW51ZSB1cGxvYWRpbmcgYSBkb2N1bWVudCgqMSk6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtVCBmaWxlIGZ0cDovL2Z0cC5zZXJ2ZXIuY29tL3BhdGgvZmlsZVxuIgoiXG4iCiIgQ29udGludWUgZG93bmxvYWRpbmcgYSBkb2N1bWVudCBmcm9tIGEgd2ViIHNlcnZlcigqMik6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtbyBmaWxlIGh0dHA6Ly93d3cuc2VydmVyLmNvbS9cbiIKIlxuIgoiICgqMSkgPSBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGZ0cCBzZXJ2ZXIgc3VwcG9ydHMgdGhlIG5vbi1zdGFuZGFyZCBjb21tYW5kXG4iCiIgICAgICAgIFNJWkUuIElmIGl0IGRvZXNuJ3QsIGN1cmwgd2lsbCBzYXkgc28uXG4iCiJcbiIKIiAoKjIpID0gVGhpcyByZXF1aXJlcyB0aGF0IHRoZSB3YiBzZXJ2ZXIgc3VwcG9ydHMgYXQgbGVhc3QgSFRUUC8xLjEuIElmIGl0XG4iCiIgICAgICAgIGRvZXNuJ3QsIGN1cmwgd2lsbCBzYXkgc28uXG4iCiJcbiIKIlRJTUUgQ09ORElUSU9OU1xuIgoiXG4iCiIgSFRUUCBhbGxvd3MgYSBjbGllbnQgdG8gc3BlY2lmeSBhIHRpbWUgY29uZGl0aW9uIGZvciB0aGUgZG9jdW1lbnQgaXRcbiIKIiByZXF1ZXN0cy4gSXQgaXMgSWYtTW9kaWZpZWQtU2luY2Ugb3IgSWYtVW5tb2RpZmllZC1TaW5jZS4gQ3VybCBhbGxvdyB5b3UgdG9cbiIKIiBzcGVjaWZ5IHRoZW0gd2l0aCB0aGUgLXovLS10aW1lLWNvbmQgZmxhZy5cbiIKIlxuIgoiIEZvciBleGFtcGxlLCB5b3UgY2FuIGVhc2lseSBtYWtlIGEgZG93bmxvYWQgdGhhdCBvbmx5IGdldHMgcGVyZm9ybWVkIGlmIHRoZVxuIgoiIHJlbW90ZSBmaWxlIGlzIG5ld2VyIHRoYW4gYSBsb2NhbCBjb3B5LiBJdCB3b3VsZCBiZSBtYWRlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiBsb2NhbC5odG1sIGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgT3IgeW91IGNhbiBkb3dubG9hZCBhIGZpbGUgb25seSBpZiB0aGUgbG9jYWwgZmlsZSBpcyBuZXdlciB0aGFuIHRoZSByZW1vdGVcbiIKIiBvbmUuIERvIHRoaXMgYnkgcHJlcGVuZGluZyB0aGUgZGF0ZSBzdHJpbmcgd2l0aCBhICctJywgYXMgaW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiAtbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIFlvdSBjYW4gc3BlY2lmeSBhIFwiZnJlZSB0ZXh0XCIgZGF0ZSBhcyBjb25kaXRpb24uIFRlbGwgY3VybCB0byBvbmx5IGRvd25sb2FkXG4iCiIgdGhlIGZpbGUgaWYgaXQgd2FzIHVwZGF0ZWQgc2luY2UgeWVzdGVyZGF5OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogeWVzdGVyZGF5IGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgQ3VybCB3aWxsIHRoZW4gYWNjZXB0IGEgd2lkZSByYW5nZSBvZiBkYXRlIGZvcm1hdHMuIFlvdSBhbHdheXMgbWFrZSB0aGUgZGF0ZVxuIgopOwogcHV0cygKIiBjaGVjayB0aGUgb3RoZXIgd2F5IGFyb3VuZCBieSBwcmVwZW5kaW5nIGl0IHdpdGggYSBkYXNoICctJy5cbiIKIlxuIgoiRElDVFxuIgoiXG4iCiIgIEZvciBmdW4gdHJ5XG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvbTpjdXJsXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6aGVpc2VuYnVnOmphcmdvblxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9kOmRhbmllbDp3ZWIxOTEzXG4iCiJcbiIKIiAgQWxpYXNlcyBmb3IgJ20nIGFyZSAnbWF0Y2gnIGFuZCAnZmluZCcsIGFuZCBhbGlhc2VzIGZvciAnZCcgYXJlICdkZWZpbmUnXG4iCiIgIGFuZCAnbG9va3VwJy4gRm9yIGV4YW1wbGUsXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZmluZDpjdXJsXG4iCiJcbiIKIiAgQ29tbWFuZHMgdGhhdCBicmVhayB0aGUgVVJMIGRlc2NyaXB0aW9uIG9mIHRoZSBSRkMgKGJ1dCBub3QgdGhlIERJQ1RcbiIKIiAgcHJvdG9jb2wpIGFyZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL3Nob3c6ZGJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpzdHJhdFxuIgoiXG4iCiIgIEF1dGhlbnRpY2F0aW9uIGlzIHN0aWxsIG1pc3NpbmcgKGJ1dCB0aGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgUkZDKVxuIgoiXG4iCiJMREFQXG4iCiJcbiIKIiAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBPcGVuTERBUCBsaWJyYXJ5LCBjdXJsIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBpdFxuIgoiICBhbmQgb2ZmZXIgbGRhcDovLyBzdXBwb3J0LlxuIgoiXG4iCiIgIExEQVAgaXMgYSBjb21wbGV4IHRoaW5nIGFuZCB3cml0aW5nIGFuIExEQVAgcXVlcnkgaXMgbm90IGFuIGVhc3kgdGFzay4gSSBkb1xuIgoiICBhZHZpY2UgeW91IHRvIGRpZyB1cCB0aGUgc3ludGF4IGRlc2NyaXB0aW9uIGZvciB0aGF0IGVsc2V3aGVyZSwgUkZDIDE5NTkgaWZcbiIKIiAgbm8gb3RoZXIgcGxhY2UgaXMgYmV0dGVyLlxuIgoiXG4iCiIgIFRvIHNob3cgeW91IGFuIGV4YW1wbGUsIHRoaXMgaXMgbm93IEkgY2FuIGdldCBhbGwgcGVvcGxlIGZyb20gbXkgbG9jYWwgTERBUFxuIgoiICBzZXJ2ZXIgdGhhdCBoYXMgYSBjZXJ0YWluIHN1Yi1kb21haW4gaW4gdGhlaXIgZW1haWwgYWRkcmVzczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1CIFwibGRhcDovL2xkYXAuZnJvbnRlYy5zZS9vPWZyb250ZWM/P3N1Yj9tYWlsPSpzdGguZnJvbnRlYy5zZVwiXG4iCiJcbiIKIiAgSWYgSSB3YW50IHRoZSBzYW1lIGluZm8gaW4gSFRNTCBmb3JtYXQsIEkgY2FuIGdldCBpdCBieSBub3QgdXNpbmcgdGhlIC1CXG4iCiIgIChlbmZvcmNlIEFTQ0lJKSBmbGFnLlxuIgoiXG4iCiJFTlZJUk9OTUVOVCBWQVJJQUJMRVNcbiIKIlxuIgoiICBDdXJsIHJlYWRzIGFuZCB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczpcbiIKIlxuIgoiICAgICAgICBIVFRQX1BST1hZLCBIVFRQU19QUk9YWSwgRlRQX1BST1hZLCBHT1BIRVJfUFJPWFlcbiIKIlxuIgoiICBUaGV5IHNob3VsZCBiZSBzZXQgZm9yIHByb3RvY29sLXNwZWNpZmljIHByb3hpZXMuIEdlbmVyYWwgcHJveHkgc2hvdWxkIGJlXG4iCiIgIHNldCB3aXRoXG4iCiIgICAgICAgIFxuIgoiICAgICAgICBBTExfUFJPWFlcbiIKIlxuIgoiICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkgaXNcbiIKIiAgc2V0IGluIChvbmx5IGFuIGFzdGVyaXNrLCAnKicgbWF0Y2hlcyBhbGwgaG9zdHMpXG4iCiJcbiIKIiAgICAgICAgTk9fUFJPWFlcbiIKIlxuIgoiICBJZiBhIHRhaWwgc3Vic3RyaW5nIG9mIHRoZSBkb21haW4tcGF0aCBmb3IgYSBob3N0IG1hdGNoZXMgb25lIG9mIHRoZXNlXG4iCiIgIHN0cmluZ3MsIHRyYW5zYWN0aW9ucyB3aXRoIHRoYXQgbm9kZSB3aWxsIG5vdCBiZSBwcm94aWVkLlxuIgoiXG4iCiJcbiIKIiAgVGhlIHVzYWdlIG9mIHRoZSAteC8tLXByb3h5IGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4iCiJcbiIKIk5FVFJDXG4iCiJcbiIKIiAgVW5peCBpbnRyb2R1Y2VkIHRoZSAubmV0cmMgY29uY2VwdCBhIGxvbmcgdGltZSBhZ28uIEl0IGlzIGEgd2F5IGZvciBhIHVzZXJcbiIKIiAgdG8gc3BlY2lmeSBuYW1lIGFuZCBwYXNzd29yZCBmb3IgY29tbW9ubHkgdmlzaXRlZCBmdHAgc2l0ZXMgaW4gYSBmaWxlIHNvXG4iCiIgIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gdHlwZSB0aGVtIGluIGVhY2ggdGltZSB5b3UgdmlzaXQgdGhvc2Ugc2l0ZXMuIFlvdVxuIgoiICByZWFsaXplIHRoaXMgaXMgYSBiaWcgc2VjdXJpdHkgcmlzayBpZiBzb21lb25lIGVsc2UgZ2V0cyBob2xkIG9mIHlvdXJcbiIKIiAgcGFzc3dvcmRzLCBzbyB0aGVyZWZvciBtb3N0IHVuaXggcHJvZ3JhbXMgd29uJ3QgcmVhZCB0aGlzIGZpbGUgdW5sZXNzIGl0IGlzXG4iCiIgIG9ubHkgcmVhZGFibGUgYnkgeW91cnNlbGYgKGN1cmwgZG9lc24ndCBjYXJlIHRob3VnaCkuXG4iCiJcbiIKIiAgQ3VybCBzdXBwb3J0cyAubmV0cmMgZmlsZXMgaWYgdG9sZCBzbyAodXNpbmcgdGhlIC1uLy0tbmV0cmMgb3B0aW9uKS4gVGhpcyBpc1xuIgoiICBub3QgcmVzdHJpY3RlZCB0byBvbmx5IGZ0cCwgYnV0IGN1cmwgY2FuIHVzZSBpdCBmb3IgYWxsIHByb3RvY29scyB3aGVyZVxuIgoiICBhdXRoZW50aWNhdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiIgIEEgdmVyeSBzaW1wbGUgLm5ldHJjIGZpbGUgY291bGQgbG9vayBzb21ldGhpbmcgbGlrZTpcbiIKIlxuIgoiICAgICAgICBtYWNoaW5lIGN1cmwuaGF4eC5zZSBsb2dpbiBpYW1kYW5pZWwgcGFzc3dvcmQgbXlzZWNyZXRcbiIKIlxuIgoiQ1VTVE9NIE9VVFBVVFxuIgoiXG4iCiIgIFRvIGJldHRlciBhbGxvdyBzY3JpcHQgcHJvZ3JhbW1lcnMgdG8gZ2V0IHRvIGtub3cgYWJvdXQgdGhlIHByb2dyZXNzIG9mXG4iCiIgIGN1cmwsIHRoZSAtdy8tLXdyaXRlLW91dCBvcHRpb24gd2FzIGludHJvZHVjZWQuIFVzaW5nIHRoaXMsIHlvdSBjYW4gc3BlY2lmeVxuIgoiICB3aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIHByZXZpb3VzIHRyYW5zZmVyIHlvdSB3YW50IHRvIGV4dHJhY3QuXG4iCiJcbiIKIiAgVG8gZGlzcGxheSB0aGUgYW1vdW50IG9mIGJ5dGVzIGRvd25sb2FkZWQgdG9nZXRoZXIgd2l0aCBzb21lIHRleHQgYW5kIGFuXG4iCiIgIGVuZGluZyBuZXdsaW5lOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXcgJ1dlIGRvd25sb2FkZWQgJXtzaXplX2Rvd25sb2FkfSBieXRlc1xcbicgd3d3LmRvd25sb2FkLmNvbVxuIgoiXG4iCiJNQUlMSU5HIExJU1RcbiIKIlxuIgoiICBXZSBoYXZlIGFuIG9wZW4gbWFpbGluZyBsaXN0IHRvIGRpc2N1c3MgY3VybCwgaXRzIGRldmVsb3BtZW50IGFuZCB0aGluZ3NcbiIKIiAgcmVsZXZhbnQgdG8gdGhpcy5cbiIKIlxuIgoiICBUbyBzdWJzY3JpYmUsIG1haWwgY3VybC1yZXF1ZXN0QGNvbnRhY3Rvci5zZSB3aXRoIFwic3Vic2NyaWJlIDx5b3VyIGVtYWlsXG4iCiIgIGFkZHJlc3M+XCIgaW4gdGhlIGJvZHkuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGUgbGlzdCwgbWFpbCBjdXJsQGNvbnRhY3Rvci5zZS5cbiIKIlxuIgoiICBUbyB1bnN1YmNyaWJlLCBtYWlsIGN1cmwtcmVxdWVzdEBjb250YWN0b3Iuc2Ugd2l0aCBcInVuc3Vic2NyaWJlIDx5b3VyXG4iCiIgIHN1YnNjcmliZWQgZW1haWwgYWRkcmVzcz5cIiBpbiB0aGUgYm9keS5cbiIKIlxuIgogKSA7Cn0K