LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLXVzZS1hc2NpaVxuIgoiICAgICAgICAgIFVzZSAgQVNDSUkgIHRyYW5zZmVyICB3aGVuICBnZXR0aW5nIGFuIEZUUCBmaWxlIG9yIExEQVBcbiIKIiAgICAgICAgICBpbmZvLiBGb3IgRlRQLCB0aGlzIGNhbiBhbHNvIGJlIGVuZm9yY2VkICBieSAgdXNpbmcgIGFuXG4iCiIgICAgICAgICAgVVJMICB0aGF0ICBlbmRzIHdpdGggXCI7dHlwZT1BXCIuIFRoaXMgb3B0aW9uIGNhdXNlcyBkYXRhXG4iCiIgICAgICAgICAgc2VudCB0byBzdGRvdXQgdG8gYmUgaW4gdGV4dCBtb2RlIGZvciB3aW4zMiBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBEZXByZWNhdGVkLiBVc2UgJy1DIC0nIGluc3RlYWQuICBDb250aW51ZS9SZXN1bWUgYSBwcmWtXG4iCiIgICAgICAgICAgdmlvdXMgIGZpbGUgIHRyYW5zZmVyLiAgVGhpcyBpbnN0cnVjdHMgY3VybCB0byBjb250aW51ZVxuIgoiICAgICAgICAgIGFwcGVuZGluZyBkYXRhIG9uIHRoZSAgZmlsZSAgd2hlcmUgIGl0ICB3YXMgIHByZXZpb3VzbHlcbiIKIiAgICAgICAgICBsZWZ0LCAgcG9zc2libHkgIGJlY2F1c2UgIG9mIGEgYnJva2VuIGNvbm5lY3Rpb24gdG8gdGhlXG4iCiIgICAgICAgICAgc2VydmVyLiBUaGVyZSBtdXN0IGJlIGEgbmFtZWQgcGh5c2ljYWwgZmlsZSAgdG8gIGFwcGVuZFxuIgoiICAgICAgICAgIHRvICBmb3IgIHRoaXMgdG8gd29yay4gIE5vdGU6IFVwbG9hZCByZXN1bWUgaXMgZGVwZW5pbmdcbiIKIiAgICAgICAgICBvbiBhIGNvbW1hbmQgbmFtZWQgU0laRSBub3QgYWx3YXlzIHByZXNlbnQgaW4gIGFsbCAgZnRwXG4iCiIgICAgICAgICAgc2VydmVycyEgVXBsb2FkIHJlc3VtZSBpcyBmb3IgRlRQIG9ubHkuICBIVFRQIHJlc3VtZSBpc1xuIgoiICAgICAgICAgIG9ubHkgcG9zc2libGUgd2l0aCBIVFRQLzEuMSBvciBsYXRlciBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1DLy0tY29udGludWUtYXQgPG9mZnNldD5cbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgYSBwcmV2aW91cyBmaWxlIHRyYW5zZmVyIGF0ICB0aGUgIGdpdmVuXG4iCiIgICAgICAgICAgb2Zmc2V0LiAgVGhlICBnaXZlbiBvZmZzZXQgaXMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlc1xuIgoiICAgICAgICAgIHRoYXQgd2lsbCBiZSBza2lwcGVkIGNvdW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mICB0aGVcbiIKIiAgICAgICAgICBzb3VyY2UgZmlsZSBiZWZvcmUgaXQgaXMgdHJhbnNmZXJlZCB0byB0aGUgZGVzdGluYXRpb24uXG4iCiIgICAgICAgICAgSWYgdXNlZCB3aXRoIHVwbG9hZHMsIHRoZSBmdHAgc2VydmVyIGNvbW1hbmQgU0laRSAgd2lsbFxuIgoiICAgICAgICAgIG5vdCAgYmUgIHVzZWQgIGJ5ICBjdXJsLiBVcGxvYWQgcmVzdW1lIGlzIGZvciBGVFAgb25seS5cbiIKIiAgICAgICAgICBIVFRQIHJlc3VtZSBpcyBvbmx5IHBvc3NpYmxlICB3aXRoICBIVFRQLzEuMSAgb3IgIGxhdGVyXG4iCiIgICAgICAgICAgc2VydmVycy5cbiIKIlxuIgoiICAgICAtZC8tLWRhdGEgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApICBTZW5kcyAgdGhlICBzcGVjaWZpZWQgZGF0YSBpbiBhIFBPU1QgcmVxdWVzdCB0b1xuIgoiICAgICAgICAgIHRoZSBIVFRQIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBkYXRhIGlzIHNlbnQgZXhhY3RseSAgYXNcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgIHdpdGggIG5vIGV4dHJhIHByb2Nlc3NpbmcgKHdpdGggYWxsIG5ld2xpbmVzXG4iCiIgICAgICAgICAgY3V0IG9mZikuICBUaGUgZGF0YSBpcyBleHBlY3RlZCAgdG8gIGJlICBcInVybC1lbmNvZGVkXCIuXG4iCiIgICAgICAgICAgVGhpcyAgd2lsbCAgY2F1c2UgIGN1cmwgIHRvIHBhc3MgdGhlIGRhdGEgdG8gdGhlIHNlcnZlclxuIgoiICAgICAgICAgIHVzaW5nICB0aGUgIGNvbnRlbnQtdHlwZSAgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbq1cbiIKIiAgICAgICAgICBjb2RlZC4gQ29tcGFyZSB0byAtRi4gSWYgbW9yZSB0aGFuIG9uZSAtZC8tLWRhdGEgb3B0aW9uXG4iCiIgICAgICAgICAgaXMgdXNlZCBvbiB0aGUgc2FtZSBjb21tYW5kIGxpbmUsIHRoZSBkYXRhIHBpZWNlcyBzcGVjrVxuIgoiICAgICAgICAgIGlmaWVkICB3aWxsIGJlIG1lcmdlZCB0b2dldGhlciB3aXRoIGEgc2VwYXJhdGluZyAmLWxldK1cbiIKIiAgICAgICAgICB0ZXIuIFRodXMsIHVzaW5nICctZCBuYW1lPWRhbmllbCAtZCBza2lsbD1sb3VzeScgIHdvdWxkXG4iCiIgICAgICAgICAgZ2VuZXJhdGUgYSBwb3N0IGNodW5rIHRoYXQgbG9va3MgbGlrZVxuIgoiXG4iCiIgICAgICAgICAgSWYgeW91IHN0YXJ0IHRoZSBkYXRhIHdpdGggdGhlIGxldHRlciBALCB0aGUgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCBiZSBhIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sIG9yIC0gaWZcbiIKIiAgICAgICAgICB5b3Ugd2FudCBjdXJsIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSBzdGRpbi4gIFRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLiBNdWx0aXBsZVxuIgoiICAgICAgICAgIGZpbGVzIGNhbiBhbHNvIGJlIHNwZWNpZmllZC5cbiIKIlxuIgoiICAgICAgICAgIFRvIHBvc3QgZGF0YSBwdXJlbHkgYmluYXJ5LCB5b3Ugc2hvdWxkIGluc3RlYWQgdXNlIHRoZVxuIgoiICAgICAgICAgIC0tZGF0YS1iaW5hcnkgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgLWQvLS1kYXRhIGlzIHRoZSBzYW1lIGFzIC0tZGF0YS1hc2NpaS5cbiIKIlxuIgoiICAgICAtLWRhdGEtYXNjaWkgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSAtZC8tLWRhdGEgb3B0aW9uLlxuIgoiXG4iCiIgICAgIC0tZGF0YS1iaW5hcnkgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApIFRoaXMgcG9zdHMgZGF0YSBpbiBhIHNpbWlsYXIgbWFubmVyIGFzIC0tZGF0YS1cbiIKIiAgICAgICAgICBhc2NpaSBkb2VzLCBhbHRob3VnaCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uIHRoZSBlbnRpcmVcbiIKIiAgICAgICAgICBjb250ZXh0IG9mIHRoZSBwb3N0ZWQgZGF0YSBpcyBrZXB0IGFzLWlzLiBJZiB5b3Ugd2FudFxuIgoiICAgICAgICAgIHRvIHBvc3QgYSBiaW5hcnkgZmlsZSB3aXRob3V0IHRoZSBzdHJpcC1uZXdsaW5lcyBmZWGtXG4iCiIgICAgICAgICAgdHVyZSBvZiB0aGUgLS1kYXRhLWFzY2lpIG9wdGlvbiwgdGhpcyBpcyBmb3IgeW91LlxuIgoiXG4iCiIgICAgIC1ELy0tZHVtcC1oZWFkZXIgPGZpbGU+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBXcml0ZSB0aGUgSFRUUCBoZWFkZXJzIHRvIHRoaXMgZmlsZS4gV3JpdGVcbiIKIiAgICAgICAgICB0aGUgRlRQIGZpbGUgaW5mbyB0byB0aGlzIGZpbGUgaWYgLUkvLS1oZWFkIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBoYW5keSB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBzdG9yZSB0aGVcbiIKIiAgICAgICAgICBjb29raWVzIHRoYXQgYSBIVFRQIHNpdGUgc2VuZHMgdG8geW91LiBUaGUgY29va2llc1xuIgoiICAgICAgICAgIGNvdWxkIHRoZW4gYmUgcmVhZCBpbiBhIHNlY29uZCBjdXJsIGludm9rZSBieSB1c2luZyB0aGVcbiIKIiAgICAgICAgICAtYi8tLWNvb2tpZSBvcHRpb24hXG4iCiJcbiIKIiAgICAgLWUvLS1yZWZlcmVyIDxVUkw+XG4iCiIgICAgICAgICAgKEhUVFApIFNlbmRzIHRoZSBcIlJlZmVyZXIgUGFnZVwiIGluZm9ybWF0aW9uIHRvIHRoZSBIVFRQXG4iCiIgICAgICAgICAgc2VydmVyLiBUaGlzIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnXG4iCiIgICAgICAgICAgb2YgY291cnNlLiAgV2hlbiB1c2VkIHdpdGggLUwvLS1sb2NhdGlvbiB5b3UgY2FuIGFwcGVuZFxuIgoiICAgICAgICAgIFwiO2F1dG9cIiB0byB0aGUgcmVmZXJlciBVUkwgdG8gbWFrZSBjdXJsIGF1dG9tYXRpY2FsbHlcbiIKIiAgICAgICAgICBzZXQgdGhlIHByZXZpb3VzIFVSTCB3aGVuIGl0IGZvbGxvd3MgYSBMb2NhdGlvbjpcbiIKIiAgICAgICAgICBoZWFkZXIuIFRoZSBcIjthdXRvXCIgc3RyaW5nIGNhbiBiZSB1c2VkIGFsb25lLCBldmVuIGlmXG4iCiIgICAgICAgICAgeW91IGRvbid0IHNldCBhbiBpbml0aWFsIHJlZmVyZXIuXG4iCiJcbiIKIiAgICAgLUUvLS1jZXJ0IDxjZXJ0aWZpY2F0ZVs6cGFzc3dvcmRdPlxuIgoiICAgICAgICAgIChIVFRQUykgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIGZpbGUgd2hlbiBnZXR0aW5nIGEgZmlsZSB3aXRoIEhUVFBTLiBUaGUgY2VydGlmaWNhdGVcbiIKIiAgICAgICAgICBtdXN0IGJlIGluIFBFTSBmb3JtYXQuICBJZiB0aGUgb3B0aW9uYWwgcGFzc3dvcmQgaXNuJ3RcbiIKIiAgICAgICAgICBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZCBmb3Igb24gdGhlIHRlcm1pbmFsLiBOb3RlXG4iCiIgICAgICAgICAgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHRoZSBwcml2YXRlIGtleSBhbmQgdGhlIHByaa1cbiIKIiAgICAgICAgICB2YXRlIGNlcnRpZmljYXRlIGNvbmNhdGVuYXRlZCFcbiIKIlxuIgoiICAgICAtLWNhY2VydCA8Q0EgY2VydGlmaWNhdGU+XG4iCiIgICAgICAgICAgKEhUVFBTKSBUZWxscyBjdXJsIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgZmlsZSB0byB2ZXJpZnkgdGhlIHBlZXIuIFRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGJlIGluIFBFTVxuIgoiICAgICAgICAgIGZvcm1hdC5cbiIKIlxuIgoiICAgICAtZi8tLWZhaWxcbiIKIiAgICAgICAgICAoSFRUUCkgRmFpbCBzaWxlbnRseSAobm8gb3V0cHV0IGF0IGFsbCkgb24gc2VydmVyXG4iCiIgICAgICAgICAgZXJyb3JzLiBUaGlzIGlzIG1vc3RseSBkb25lIGxpa2UgdGhpcyB0byBiZXR0ZXIgZW5hYmxlXG4iCiIgICAgICAgICAgc2NyaXB0cyBldGMgdG8gYmV0dGVyIGRlYWwgd2l0aCBmYWlsZWQgYXR0ZW1wdHMuIEluXG4iCiIgICAgICAgICAgbm9ybWFsIGNhc2VzIHdoZW4gYSBIVFRQIHNlcnZlciBmYWlscyB0byBkZWxpdmVyIGEgZG9jrVxuIgoiICAgICAgICAgIHVtZW50LCBpdCByZXR1cm5zIGEgSFRNTCBkb2N1bWVudCBzdGF0aW5nIHNvICh3aGljaFxuIgoiICAgICAgICAgIG9mdGVuIGFsc28gZGVzY3JpYmVzIHdoeSBhbmQgbW9yZSkuIFRoaXMgZmxhZyB3aWxsIHByZa1cbiIKIiAgICAgICAgICB2ZW50IGN1cmwgZnJvbSBvdXRwdXR0aW5nIHRoYXQgYW5kIGZhaWwgc2lsZW50bHlcbiIKIiAgICAgICAgICBpbnN0ZWFkLlxuIgoiXG4iCiIgICAgIC1GLy0tZm9ybSA8bmFtZT1jb250ZW50PlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGxldHMgY3VybCBlbXVsYXRlIGEgZmlsbGVkIGluIGZvcm0gaW4gd2hpY2hcbiIKIiAgICAgICAgICBhIHVzZXIgaGFzIHByZXNzZWQgdGhlIHN1Ym1pdCBidXR0b24uIFRoaXMgY2F1c2VzIGN1cmxcbiIKIiAgICAgICAgICB0byBQT1NUIGRhdGEgdXNpbmcgdGhlIGNvbnRlbnQtdHlwZSBtdWx0aXBhcnQvZm9ybS1kYXRhXG4iCiIgICAgICAgICAgYWNjb3JkaW5nIHRvIFJGQzE4NjcuIFRoaXMgZW5hYmxlcyB1cGxvYWRpbmcgb2YgYmluYXJ5XG4iCiIgICAgICAgICAgZmlsZXMgZXRjLiBUbyBmb3JjZSB0aGUgJ2NvbnRlbnQnIHBhcnQgdG8gYmUgYmUgYSBmaWxlLFxuIgoiICAgICAgICAgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBUbyBqdXN0IGdldCB0aGVcbiIKIiAgICAgICAgICBjb250ZW50IHBhcnQgZnJvbSBhIGZpbGUsIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggdGhlXG4iCiIgICAgICAgICAgbGV0dGVyIDwuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQCBhbmQgPCBpcyB0aGVuIHRoYXQgQFxuIgoiICAgICAgICAgIG1ha2VzIGEgZmlsZSBnZXQgYXR0YWNoZWQgaW4gdGhlIHBvc3QgYXMgYSBmaWxlIHVwbG9hZCxcbiIKIiAgICAgICAgICB3aGlsZSB0aGUgPCBtYWtlcyBhIHRleHQgZmllbGQgYW5kIGp1c3QgZ2V0IHRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgZm9yIHRoYXQgdGV4dCBmaWVsZCBmcm9tIGEgZmlsZS5cbiIKIlxuIgoiICAgICAgICAgIEV4YW1wbGUsIHRvIHNlbmQgeW91ciBwYXNzd29yZCBmaWxlIHRvIHRoZSBzZXJ2ZXIsXG4iCiIgICAgICAgICAgd2hlcmUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiJcbiIKIiAgICAgICAgICBUbyByZWFkIHRoZSBmaWxlJ3MgY29udGVudCBmcm9tIHN0ZGluIGluc3RlZCBvZiBhIGZpbGUsXG4iCiIgICAgICAgICAgdXNlIC0gd2hlcmUgdGhlIGZpbGUgbmFtZSBzaG91bGQndmUgYmVlbi4gVGhpcyBnb2VzIGZvclxuIgoiICAgICAgICAgIGJvdGggQCBhbmQgPCBjb25zdHJ1Y3RzLlxuIgoiXG4iCiIgICAgIC1oLy0taGVscFxuIgoiICAgICAgICAgIFVzYWdlIGhlbHAuXG4iCiJcbiIKIiAgICAgLUgvLS1oZWFkZXIgPGhlYWRlcj5cbiIKIiAgICAgICAgICAoSFRUUCkgRXh0cmEgaGVhZGVyIHRvIHVzZSB3aGVuIGdldHRpbmcgYSB3ZWIgcGFnZS4gWW91XG4iCiIgICAgICAgICAgbWF5IHNwZWNpZnkgYW55IG51bWJlciBvZiBleHRyYSBoZWFkZXJzLiBOb3RlIHRoYXQgaWZcbiIKIiAgICAgICAgICB5b3Ugc2hvdWxkIGFkZCBhIGN1c3RvbSBoZWFkZXIgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBpbnRlcm5hbFxuIgoiICAgICAgICAgIG9uZS4gVGhpcyBhbGxvd3MgeW91IHRvIG1ha2UgZXZlbiB0cmlja2llciBzdHVmZiB0aGFuXG4iCiIgICAgICAgICAgY3VybCB3b3VsZCBub3JtYWxseSBkby4gWW91IHNob3VsZCBub3QgcmVwbGFjZVxuIgoiICAgICAgICAgIGludGVybmFsbHkgc2V0IGhlYWRlcnMgd2l0aG91dCBrbm93aW5nIHBlcmZlY3RseSB3ZWxsXG4iCiIgICAgICAgICAgd2hhdCB5b3UncmUgZG9pbmcuIFJlcGxhY2luZyBhbiBpbnRlcm5hbCBoZWFkZXIgd2l0aFxuIgoiICAgICAgICAgIG9uZSB3aXRob3V0IGNvbnRlbnQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNvbG9uIHdpbGxcbiIKIiAgICAgICAgICBwcmV2ZW50IHRoYXQgaGVhZGVyIGZyb20gYXBwZWFyaW5nLlxuIgoiXG4iCiIgICAgIC1pLy0taW5jbHVkZVxuIgoiICAgICAgICAgIChIVFRQKSBJbmNsdWRlIHRoZSBIVFRQLWhlYWRlciBpbiB0aGUgb3V0cHV0LiBUaGUgSFRUUC1cbiIKIiAgICAgICAgICBoZWFkZXIgaW5jbHVkZXMgdGhpbmdzIGxpa2Ugc2VydmVyLW5hbWUsIGRhdGUgb2YgdGhlXG4iCiIgICAgICAgICAgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLlxuIgoiXG4iCiIgICAgIC0taW50ZXJmYWNlIDxuYW1lPlxuIgoiICAgICAgICAgIFBlcmZvcm0gYW4gb3BlcmF0aW9uIHVzaW5nIGEgc3BlY2lmaWVkIGludGVyZmFjZS4gWW91XG4iCiIgICAgICAgICAgY2FuIGVudGVyIGludGVyZmFjZSBuYW1lLCBJUCBhZGRyZXNzIG9yIGhvc3QgbmFtZS4gQW5cbiIKIiAgICAgICAgICBleGFtcGxlIGNvdWxkIGxvb2sgbGlrZTpcbiIKIlxuIgoiICAgICAgICAgIGN1cmwgLS1pbnRlcmZhY2UgZXRoMDoxIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgopOwogcHV0cygKIlxuIgoiICAgICAtSS8tLWhlYWRcbiIKIiAgICAgICAgICAoSFRUUC9GVFApIEZldGNoIHRoZSBIVFRQLWhlYWRlciBvbmx5ISBIVFRQLXNlcnZlcnNcbiIKIiAgICAgICAgICBmZWF0dXJlIHRoZSBjb21tYW5kIEhFQUQgd2hpY2ggdGhpcyB1c2VzIHRvIGdldCBub3RoaW5nXG4iCiIgICAgICAgICAgYnV0IHRoZSBoZWFkZXIgb2YgYSBkb2N1bWVudC4gV2hlbiB1c2VkIG9uIGEgRlRQIGZpbGUsXG4iCiIgICAgICAgICAgY3VybCBkaXNwbGF5cyB0aGUgZmlsZSBzaXplIG9ubHkuXG4iCiJcbiIKIiAgICAgLS1rcmI0IDxsZXZlbD5cbiIKIiAgICAgICAgICAoRlRQKSBFbmFibGUga2VyYmVyb3M0IGF1dGhlbnRpY2F0aW9uIGFuZCB1c2UuIFRoZVxuIgoiICAgICAgICAgIGxldmVsIG11c3QgYmUgZW50ZXJlZCBhbmQgc2hvdWxkIGJlIG9uZSBvZiAnY2xlYXInLFxuIgoiICAgICAgICAgICdzYWZlJywgJ2NvbmZpZGVudGlhbCcgb3IgJ3ByaXZhdGUnLiBTaG91bGQgeW91IHVzZSBhXG4iCiIgICAgICAgICAgbGV2ZWwgdGhhdCBpcyBub3Qgb25lIG9mIHRoZXNlLCAncHJpdmF0ZScgd2lsbCBpbnN0ZWFkXG4iCiIgICAgICAgICAgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtSy8tLWNvbmZpZyA8Y29uZmlnIGZpbGU+XG4iCiIgICAgICAgICAgU3BlY2lmeSB3aGljaCBjb25maWcgZmlsZSB0byByZWFkIGN1cmwgYXJndW1lbnRzIGZyb20uXG4iCiIgICAgICAgICAgVGhlIGNvbmZpZyBmaWxlIGlzIGEgdGV4dCBmaWxlIGluIHdoaWNoIGNvbW1hbmQgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyBpZlxuIgoiICAgICAgICAgIHRoZXkgd2VyZSB3cml0dGVuIG9uIHRoZSBhY3R1YWwgY29tbWFuZCBsaW5lLiBJZiB0aGVcbiIKIiAgICAgICAgICBmaXJzdCBjb2x1bW4gb2YgYSBjb25maWcgbGluZSBpcyBhICcjJyBjaGFyYWN0ZXIsIHRoZVxuIgoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgdGhlIGZpbGVuYW1lIGFzICctJyB0byBtYWtlIGN1cmwgcmVhZCB0aGUgZmlsZVxuIgoiICAgICAgICAgIGZyb20gc3RkaW4uXG4iCiJcbiIKIiAgICAgLWwvLS1saXN0LW9ubHlcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIGxpc3RpbmcgYW4gRlRQIGRpcmVjdG9yeSwgdGhpcyBzd2l0Y2ggZm9yY2VzXG4iCiIgICAgICAgICAgYSBuYW1lLW9ubHkgdmlldy4gIEVzcGVjaWFsbHkgdXNlZnVsIGlmIHlvdSB3YW50IHRvXG4iCiIgICAgICAgICAgbWFjaGluZS1wYXJzZSB0aGUgY29udGVudHMgb2YgYW4gRlRQIGRpcmVjdG9yeSBzaW5jZVxuIgoiICAgICAgICAgIHRoZSBub3JtYWwgZGlyZWN0b3J5IHZpZXcgZG9lc24ndCB1c2UgYSBzdGFuZGFyZCBsb29rXG4iCiIgICAgICAgICAgb3IgZm9ybWF0LlxuIgoiXG4iCiIgICAgIC1MLy0tbG9jYXRpb25cbiIKIiAgICAgICAgICAoSFRUUC9IVFRQUykgSWYgdGhlIHNlcnZlciByZXBvcnRzIHRoYXQgdGhlIHJlcXVlc3RlZFxuIgoiICAgICAgICAgIHBhZ2UgaGFzIGEgZGlmZmVyZW50IGxvY2F0aW9uIChpbmRpY2F0ZWQgd2l0aCB0aGVcbiIKIiAgICAgICAgICBoZWFkZXIgbGluZSBMb2NhdGlvbjopIHRoaXMgZmxhZyB3aWxsIGxldCBjdXJsIGF0dGVtcHRcbiIKIiAgICAgICAgICB0byByZWF0dGVtcHQgdGhlIGdldCBvbiB0aGUgbmV3IHBsYWNlLiBJZiB1c2VkIHRvZ2V0aGVyXG4iCiIgICAgICAgICAgd2l0aCAtaSBvciAtSSwgaGVhZGVycyBmcm9tIGFsbCByZXF1ZXN0ZWQgcGFnZXMgd2lsbCBiZVxuIgoiICAgICAgICAgIHNob3duLiBJZiB0aGlzIGZsYWcgaXMgdXNlZCB3aGVuIG1ha2luZyBhIEhUVFAgUE9TVCxcbiIKIiAgICAgICAgICBjdXJsIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gR0VUIGFmdGVyIHRoZSBpbml0aWFsXG4iCiIgICAgICAgICAgUE9TVCBoYXMgYmVlbiBkb25lLlxuIgoiXG4iCiIgICAgIC1tLy0tbWF4LXRpbWUgPHNlY29uZHM+XG4iCiIgICAgICAgICAgTWF4aW11bSB0aW1lIGluIHNlY29uZHMgdGhhdCB5b3UgYWxsb3cgdGhlIHdob2xlIG9wZXJhrVxuIgoiICAgICAgICAgIHRpb24gdG8gdGFrZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBwcmV2ZW50aW5nIHlvdXIgYmF0Y2hcbiIKIiAgICAgICAgICBqb2JzIGZyb20gaGFuZ2luZyBmb3IgaG91cnMgZHVlIHRvIHNsb3cgbmV0d29ya3Mgb3JcbiIKIiAgICAgICAgICBsaW5rcyBnb2luZyBkb3duLiAgVGhpcyBkb2Vzbid0IHdvcmsgZnVsbHkgaW4gd2luMzJcbiIKIiAgICAgICAgICBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1NLy0tbWFudWFsXG4iCiIgICAgICAgICAgTWFudWFsLiBEaXNwbGF5IHRoZSBodWdlIGhlbHAgdGV4dC5cbiIKIlxuIgoiICAgICAtbi8tLW5ldHJjXG4iCiIgICAgICAgICAgTWFrZXMgY3VybCBzY2FuIHRoZSAubmV0cmMgZmlsZSBpbiB0aGUgdXNlcidzIGhvbWVcbiIKIiAgICAgICAgICBkaXJlY3RvcnkgZm9yIGxvZ2luIG5hbWUgYW5kIHBhc3N3b3JkLiBUaGlzIGlzIHR5cGmtXG4iCiIgICAgICAgICAgY2FsbHkgdXNlZCBmb3IgZnRwIG9uIHVuaXguIElmIHVzZWQgd2l0aCBodHRwLCBjdXJsXG4iCiIgICAgICAgICAgd2lsbCBlbmFibGUgdXNlciBhdXRoZW50aWNhdGlvbi4gU2VlIG5ldHJjKDQpIGZvclxuIgoiICAgICAgICAgIGRldGFpbHMgb24gdGhlIGZpbGUgZm9ybWF0LiBDdXJsIHdpbGwgbm90IGNvbXBsYWluIGlmXG4iCiIgICAgICAgICAgdGhhdCBmaWxlIGhhc24ndCB0aGUgcmlnaHQgcGVybWlzc2lvbnMgKGl0IHNob3VsZCBub3RcbiIKIiAgICAgICAgICBiZSB3b3JsZCBub3IgZ3JvdXAgcmVhZGFibGUpLiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiIKIiAgICAgICAgICBcIkhPTUVcIiBpcyB1c2VkIHRvIGZpbmQgdGhlIGhvbWUgZGlyZWN0b3J5LlxuIgoiXG4iCiIgICAgICAgICAgQSBxdWljayBhbmQgdmVyeSBzaW1wbGUgZXhhbXBsZSBvZiBob3cgdG8gc2V0dXAgYVxuIgoiICAgICAgICAgIC5uZXRyYyB0byBhbGxvdyBjdXJsIHRvIGZ0cCB0byB0aGUgbWFjaGluZVxuIgoiICAgICAgICAgIGhvc3QuZG9tYWluLmNvbSB3aXRoIHVzZXIgbmFtZVxuIgoiXG4iCiIgICAgICAgICAgbWFjaGluZSBob3N0LmRvbWFpbi5jb20gbG9naW4gbXlzZWxmIHBhc3N3b3JkIHNlY3JldFxuIgoiXG4iCiIgICAgIC1OLy0tbm8tYnVmZmVyXG4iCiIgICAgICAgICAgRGlzYWJsZXMgdGhlIGJ1ZmZlcmluZyBvZiB0aGUgb3V0cHV0IHN0cmVhbS4gSW4gbm9ybWFsXG4iCiIgICAgICAgICAgd29yayBzaXR1YXRpb25zLCBjdXJsIHdpbGwgdXNlIGEgc3RhbmRhcmQgYnVmZmVyZWQgb3V0rVxuIgoiICAgICAgICAgIHB1dCBzdHJlYW0gdGhhdCB3aWxsIGhhdmUgdGhlIGVmZmVjdCB0aGF0IGl0IHdpbGwgb3V0rVxuIgoiICAgICAgICAgIHB1dCB0aGUgZGF0YSBpbiBjaHVua3MsIG5vdCBuZWNlc3NhcmlseSBleGFjdGx5IHdoZW5cbiIKIiAgICAgICAgICB0aGUgZGF0YSBhcnJpdmVzLiAgVXNpbmcgdGhpcyBvcHRpb24gd2lsbCBkaXNhYmxlIHRoYXRcbiIKIiAgICAgICAgICBidWZmZXJpbmcuXG4iCiJcbiIKIiAgICAgLW8vLS1vdXRwdXQgPGZpbGU+XG4iCiIgICAgICAgICAgV3JpdGUgb3V0cHV0IHRvIDxmaWxlPiBpbnN0ZWFkIG9mIHN0ZG91dC4gSWYgeW91IGFyZVxuIgoiICAgICAgICAgIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoIG11bHRpcGxlIGRvY3VtZW50cywgeW91IGNhbiB1c2VcbiIKIiAgICAgICAgICAnIycgZm9sbG93ZWQgYnkgYSBudW1iZXIgaW4gdGhlIDxmaWxlPiBzcGVjaWZpZXIuIFRoYXRcbiIKIiAgICAgICAgICB2YXJpYWJsZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgc3RyaW5nIGZvclxuIgoiICAgICAgICAgIHRoZSBVUkwgYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve29uZSx0d299LnNpdGUuY29tIC1vIFwiZmlsZV8jMS50eHRcIlxuIgoiXG4iCiIgICAgICAgICAgb3IgdXNlIHNldmVyYWwgdmFyaWFibGVzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tzaXRlLGhvc3R9Lmhvc3RbMS01XS5jb20gLW8gXCIjMV8jMlwiXG4iCiIgICAgIC1PLy0tcmVtb3RlLW5hbWVcbiIKIiAgICAgICAgICBXcml0ZSBvdXRwdXQgdG8gYSBsb2NhbCBmaWxlIG5hbWVkIGxpa2UgdGhlIHJlbW90ZSBmaWxlXG4iCiIgICAgICAgICAgd2UgZ2V0LiAoT25seSB0aGUgZmlsZSBwYXJ0IG9mIHRoZSByZW1vdGUgZmlsZSBpcyB1c2VkLFxuIgoiICAgICAgICAgIHRoZSBwYXRoIGlzIGN1dCBvZmYuKVxuIgoiXG4iCiIgICAgIC1wLy0tcHJveHl0dW5uZWxcbiIKIiAgICAgICAgICBXaGVuIGFuIEhUVFAgcHJveHkgaXMgdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBjYXVzZSBub24tXG4iCiIgICAgICAgICAgSFRUUCBwcm90b2NvbHMgdG8gYXR0ZW1wdCB0byB0dW5uZWwgdGhyb3VnaCB0aGUgcHJveHlcbiIKIiAgICAgICAgICBpbnN0ZWFkIG9mIG1lcmVseSB1c2luZyBpdCB0byBkbyBIVFRQLWxpa2Ugb3BlcmF0aW9ucy5cbiIKIiAgICAgICAgICBUaGUgdHVubmVsIGFwcHJvYWNoIGlzIG1hZGUgd2l0aCB0aGUgSFRUUCBwcm94eSBDT05ORUNUXG4iCiIgICAgICAgICAgcmVxdWVzdCBhbmQgcmVxdWlyZXMgdGhhdCB0aGUgcHJveHkgYWxsb3dzIGRpcmVjdCBjb26tXG4iCiIgICAgICAgICAgbmVjdCB0byB0aGUgcmVtb3RlIHBvcnQgbnVtYmVyIGN1cmwgd2FudHMgdG8gdHVubmVsXG4iCiIgICAgICAgICAgdGhyb3VnaCB0by5cbiIKIlxuIgoiICAgICAtUC8tLWZ0cHBvcnQgPGFkZHJlc3M+XG4iCiIgICAgICAgICAgKEZUUCkgUmV2ZXJzZXMgdGhlIGluaXRpYXRvci9saXN0ZW5lciByb2xlcyB3aGVuIGNvbq1cbiIKIiAgICAgICAgICBuZWN0aW5nIHdpdGggZnRwLiBUaGlzIHN3aXRjaCBtYWtlcyBDdXJsIHVzZSB0aGUgUE9SVFxuIgoiICAgICAgICAgIGNvbW1hbmQgaW5zdGVhZCBvZiBQQVNWLiBJbiBwcmFjdGljZSwgUE9SVCB0ZWxscyB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIgdG8gY29ubmVjdCB0byB0aGUgY2xpZW50J3Mgc3BlY2lmaWVkIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCwgd2hpbGUgUEFTViBhc2tzIHRoZSBzZXJ2ZXIgZm9yIGFuIGlwIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCB0byBjb25uZWN0IHRvLiA8YWRkcmVzcz4gc2hvdWxkIGJlIG9uZSBvZjpcbiIKIlxuIgoiICAgICAgICAgIGludGVyZmFjZSAgIGkuZSBcImV0aDBcIiB0byBzcGVjaWZ5IHdoaWNoIGludGVyZmFjZSdzIElQXG4iCiIgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyB5b3Ugd2FudCB0byB1c2UgIChVbml4IG9ubHkpXG4iCiJcbiIKIiAgICAgICAgICBJUCBhZGRyZXNzICBpLmUgXCIxOTIuMTY4LjEwLjFcIiB0byBzcGVjaWZ5IGV4YWN0IElQIG51ba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICBiZXJcbiIKIlxuIgoiICAgICAgICAgIGhvc3QgbmFtZSAgIGkuZSBcIm15Lmhvc3QuZG9tYWluXCIgdG8gc3BlY2lmeSBtYWNoaW5lXG4iCiJcbiIKIiAgICAgICAgICAtICAgICAgICAgICAoYW55IHNpbmdsZS1sZXR0ZXIgc3RyaW5nKSB0byBtYWtlIGl0IHBpY2tcbiIKIiAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSdzIGRlZmF1bHRcbiIKIlxuIgoiICAgICAtcSAgIElmIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGVcbiIKIiAgICAgICAgICAkSE9NRS8uY3VybHJjIGZpbGUgd2lsbCBub3QgYmUgcmVhZCBhbmQgdXNlZCBhcyBhIGNvbq1cbiIKIiAgICAgICAgICBmaWcgZmlsZS5cbiIKIlxuIgoiICAgICAtUS8tLXF1b3RlIDxjb21hbmQ+XG4iCiIgICAgICAgICAgKEZUUCkgU2VuZCBhbiBhcmJpdHJhcnkgY29tbWFuZCB0byB0aGUgcmVtb3RlIEZUUFxuIgoiICAgICAgICAgIHNlcnZlciwgYnkgdXNpbmcgdGhlIFFVT1RFIGNvbW1hbmQgb2YgdGhlIHNlcnZlci4gTm90XG4iCiIgICAgICAgICAgYWxsIHNlcnZlcnMgc3VwcG9ydCB0aGlzIGNvbW1hbmQsIGFuZCB0aGUgc2V0IG9mIFFVT1RFXG4iCiIgICAgICAgICAgY29tbWFuZHMgYXJlIHNlcnZlciBzcGVjaWZpYyEgUXVvdGUgY29tbWFuZHMgYXJlIHNlbnRcbiIKIiAgICAgICAgICBCRUZPUkUgdGhlIHRyYW5zZmVyIGlzIHRha2luZyBwbGFjZS4gVG8gbWFrZSBjb21tYW5kc1xuIgoiICAgICAgICAgIHRha2UgcGxhY2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIHRyYW5zZmVyLCBwcmVmaXggdGhlbVxuIgoiICAgICAgICAgIHdpdGggYSBkYXNoICctJy4gWW91IG1heSBzcGVjaWZ5IGFueSBhbW91bnQgb2YgY29tbWFuZHNcbiIKIiAgICAgICAgICB0byBiZSBydW4gYmVmb3JlIGFuZCBhZnRlciB0aGUgdHJhbnNmZXIuIElmIHRoZSBzZXJ2ZXJcbiIKIiAgICAgICAgICByZXR1cm5zIGZhaWx1cmUgZm9yIG9uZSBvZiB0aGUgY29tbWFuZHMsIHRoZSBlbnRpcmVcbiIKIiAgICAgICAgICBvcGVyYXRpb24gd2lsbCBiZSBhYm9ydGVkLlxuIgoiXG4iCiIgICAgIC1yLy0tcmFuZ2UgPHJhbmdlPlxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgUmV0cmlldmUgYSBieXRlIHJhbmdlIChpLmUgYSBwYXJ0aWFsIGRvY3WtXG4iCiIgICAgICAgICAgbWVudCkgZnJvbSBhIEhUVFAvMS4xIG9yIEZUUCBzZXJ2ZXIuIFJhbmdlcyBjYW4gYmVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBudW1iZXIgb2Ygd2F5cy5cbiIKIlxuIgoiICAgICAgICAgIDAtNDk5ICAgICBzcGVjaWZpZXMgdGhlIGZpcnN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgNTAwLTk5OSAgIHNwZWNpZmllcyB0aGUgc2Vjb25kIDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgLTUwMCAgICAgIHNwZWNpZmllcyB0aGUgbGFzdCA1MDAgYnl0ZXNcbiIKIlxuIgoiICAgICAgICAgIDk1MDAgICAgICBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcq1cbiIKIiAgICAgICAgICAgICAgICAgICAgd2FyZFxuIgoiXG4iCiIgICAgICAgICAgMC0wLC0xICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgYW5kIGxhc3QgYnl0ZSBvbmx5KCopKEgpXG4iCiJcbiIKIiAgICAgICAgICA1MDAtNzAwLDYwMC03OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIDMwMCBieXRlcyBmcm9tIG9mZnNldCA1MDAoSClcbiIKIlxuIgoiICAgICAgICAgIDEwMC0xOTksNTAwLTU5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMCBieXRlcyByYW5nZXMoKikoSClcbiIKIlxuIgoiICAgICAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgd2l0aCBhXG4iCiIgICAgIG11bHRpcGFydCByZXNwb25zZSFcbiIKIlxuIgoiICAgICBZb3Ugc2hvdWxkIGFsc28gYmUgYXdhcmUgdGhhdCBtYW55IEhUVFAvMS4xIHNlcnZlcnMgZG8gbm90XG4iCiIgICAgIGhhdmUgdGhpcyBmZWF0dXJlIGVuYWJsZWQsIHNvIHRoYXQgd2hlbiB5b3UgYXR0ZW1wdCB0byBnZXQgYVxuIgoiICAgICByYW5nZSwgeW91J2xsIGluc3RlYWQgZ2V0IHRoZSB3aG9sZSBkb2N1bWVudC5cbiIKIlxuIgoiICAgICBGVFAgcmFuZ2UgZG93bmxvYWRzIG9ubHkgc3VwcG9ydCB0aGUgc2ltcGxlIHN5bnRheCAnc3RhcnQtXG4iCiIgICAgIHN0b3AnIChvcHRpb25hbGx5IHdpdGggb25lIG9mIHRoZSBudW1iZXJzIG9taXR0ZWQpLiBJdFxuIgoiICAgICBkZXBlbmRzIG9uIHRoZSBub24tUkZDIGNvbW1hbmQgU0laRS5cbiIKIlxuIgoiICAgICAtcy8tLXNpbGVudFxuIgoiICAgICAgICAgIFNpbGVudCBtb2RlLiBEb24ndCBzaG93IHByb2dyZXNzIG1ldGVyIG9yIGVycm9yIG1lc61cbiIKIiAgICAgICAgICBzYWdlcy4gIE1ha2VzIEN1cmwgbXV0ZS5cbiIKIlxuIgoiICAgICAtUy8tLXNob3ctZXJyb3JcbiIKIiAgICAgICAgICBXaGVuIHVzZWQgd2l0aCAtcyBpdCBtYWtlcyBjdXJsIHNob3cgZXJyb3IgbWVzc2FnZSBpZlxuIgoiICAgICAgICAgIGl0IGZhaWxzLlxuIgoiXG4iCiIgICAgIC10Ly0tdXBsb2FkXG4iCiIgICAgICAgICAgRGVwcmVjYXRlZC4gVXNlICctVCAtJyBpbnN0ZWFkLiAgVHJhbnNmZXIgdGhlIHN0ZGluXG4iCiIgICAgICAgICAgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGZpbGUuIEN1cmwgd2lsbCByZWFkIGV2ZXJ5dGhpbmdcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluIHVudGlsIEVPRiBhbmQgc3RvcmUgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZS5cbiIKIiAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVCBjb21tYW5kXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1ULy0tdXBsb2FkLWZpbGUgPGZpbGU+XG4iCiIgICAgICAgICAgTGlrZSAtdCwgYnV0IHRoaXMgdHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgbG9jYWwgZmlsZS5cbiIKIiAgICAgICAgICBJZiB0aGVyZSBpcyBubyBmaWxlIHBhcnQgaW4gdGhlIHNwZWNpZmllZCBVUkwsIEN1cmxcbiIKIiAgICAgICAgICB3aWxsIGFwcGVuZCB0aGUgbG9jYWwgZmlsZSBuYW1lLiBOT1RFIHRoYXQgeW91IG11c3QgdXNlXG4iCiIgICAgICAgICAgYSB0cmFpbGluZyAvIG9uIHRoZSBsYXN0IGRpcmVjdG9yeSB0byByZWFsbHkgcHJvdmUgdG9cbiIKIiAgICAgICAgICBDdXJsIHRoYXQgdGhlcmUgaXMgbm8gZmlsZSBuYW1lIG9yIGN1cmwgd2lsbCB0aGluayB0aGF0XG4iCiIgICAgICAgICAgeW91ciBsYXN0IGRpcmVjdG9yeSBuYW1lIGlzIHRoZSByZW1vdGUgZmlsZSBuYW1lIHRvXG4iCiIgICAgICAgICAgdXNlLiBUaGF0IHdpbGwgbW9zdCBsaWtlbHkgY2F1c2UgdGhlIHVwbG9hZCBvcGVyYXRpb25cbiIKIiAgICAgICAgICB0byBmYWlsLiBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVFxuIgoiICAgICAgICAgIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC11Ly0tdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvIHVzZSB3aGVuIGZldGNoaW5nLiBTZWVcbiIKIiAgICAgICAgICBSRUFETUUuY3VybCBmb3IgZGV0YWlsZWQgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLlxuIgoiICAgICAgICAgIElmIG5vIHBhc3N3b3JkIGlzIHNwZWNpZmllZCwgY3VybCB3aWxsIGFzayBmb3IgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiXG4iCiIgICAgIC1VLy0tcHJveHktdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvIHVzZSBmb3IgUHJveHkgYXV0aGVudGljYa1cbiIKIiAgICAgICAgICB0aW9uLiBJZiBubyBwYXNzd29yZCBpcyBzcGVjaWZpZWQsIGN1cmwgd2lsbCBhc2sgZm9yIGl0XG4iCiIgICAgICAgICAgaW50ZXJhY3RpdmVseS5cbiIKIlxuIgoiICAgICAtLXVybCA8VVJMPlxuIgoiICAgICAgICAgIFNldCB0aGUgVVJMIHRvIGZldGNoLiBUaGlzIG9wdGlvbiBpcyBtb3N0bHkgaGFuZHkgd2hlblxuIgoiICAgICAgICAgIHlvdSB3YW5uYSBzcGVjaWZ5IFVSTCBpbiBhIGNvbmZpZyBmaWxlLlxuIgoiXG4iCiIgICAgIC12Ly0tdmVyYm9zZVxuIgoiICAgICAgICAgIE1ha2VzIHRoZSBmZXRjaGluZyBtb3JlIHZlcmJvc2UvdGFsa2F0aXZlLiBNb3N0bHlcbiIKIiAgICAgICAgICB1c2FibGUgZm9yIGRlYnVnZ2luZy4gTGluZXMgc3RhcnRpbmcgd2l0aCAnPicgbWVhbnNcbiIKIiAgICAgICAgICBkYXRhIHNlbnQgYnkgY3VybCwgJzwnIG1lYW5zIGRhdGEgcmVjZWl2ZWQgYnkgY3VybCB0aGF0XG4iCiIgICAgICAgICAgaXMgaGlkZGVuIGluIG5vcm1hbCBjYXNlcyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAnKidcbiIKIiAgICAgICAgICBtZWFucyBhZGRpdGlvbmFsIGluZm8gcHJvdmlkZWQgYnkgY3VybC5cbiIKIlxuIgoiICAgICAtVi8tLXZlcnNpb25cbiIKIiAgICAgICAgICBEaXNwbGF5cyB0aGUgZnVsbCB2ZXJzaW9uIG9mIGN1cmwsIGxpYmN1cmwgYW5kIG90aGVyXG4iCiIgICAgICAgICAgM3JkIHBhcnR5IGxpYnJhcmllcyBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS5cbiIKIlxuIgoiICAgICAtdy8tLXdyaXRlLW91dCA8Zm9ybWF0PlxuIgoiICAgICAgICAgIERlZmluZXMgd2hhdCB0byBkaXNwbGF5IGFmdGVyIGEgY29tcGxldGVkIGFuZCBzdWNjZXNzrVxuIgoiICAgICAgICAgIGZ1bCBvcGVyYXRpb24uIFRoZSBmb3JtYXQgaXMgYSBzdHJpbmcgdGhhdCBtYXkgY29udGFpblxuIgoiICAgICAgICAgIHBsYWluIHRleHQgbWl4ZWQgd2l0aCBhbnkgbnVtYmVyIG9mIHZhcmlhYmxlcy4gVGhlXG4iCiIgICAgICAgICAgc3RyaW5nIGNhbiBiZSBzcGVjaWZpZWQgYXMgXCJzdHJpbmdcIiwgdG8gZ2V0IHJlYWQgZnJvbSBhXG4iCiIgICAgICAgICAgcGFydGljdWxhciBmaWxlIHlvdSBzcGVjaWZ5IGl0IFwiQGZpbGVuYW1lXCIgYW5kIHRvIHRlbGxcbiIKIiAgICAgICAgICBjdXJsIHRvIHJlYWQgdGhlIGZvcm1hdCBmcm9tIHN0ZGluIHlvdSB3cml0ZSBcIkAtXCIuXG4iCiJcbiIKIiAgICAgICAgICBUaGUgdmFyaWFibGVzIHByZXNlbnQgaW4gdGhlIG91dHB1dCBmb3JtYXQgd2lsbCBiZSBzdWKtXG4iCiIgICAgICAgICAgc3RpdHV0ZWQgYnkgdGhlIHZhbHVlIG9yIHRleHQgdGhhdCBjdXJsIHRoaW5rcyBmaXQsIGFzXG4iCiIgICAgICAgICAgZGVzY3JpYmVkIGJlbG93LiBBbGwgdmFyaWFibGVzIGFyZSBzcGVjaWZpZWQgbGlrZVxuIgoiICAgICAgICAgICV7dmFyaWFibGVfbmFtZX0gYW5kIHRvIG91dHB1dCBhIG5vcm1hbCAlIHlvdSBqdXN0XG4iCiIgICAgICAgICAgd3JpdGUgdGhlbSBsaWtlICUlLiBZb3UgY2FuIG91dHB1dCBhIG5ld2xpbmUgYnkgdXNpbmdcbiIKIiAgICAgICAgICBcXG4sIGEgY2FycmlnZSByZXR1cm4gd2l0aCBcXHIgYW5kIGEgdGFiIHNwYWNlIHdpdGggXFx0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URTogVGhlICUtbGV0dGVyIGlzIGEgc3BlY2lhbCBsZXR0ZXIgaW4gdGhlXG4iCiIgICAgICAgICAgd2luMzItZW52aXJvbm1lbnQsIHdoZXJlIGFsbCBvY2N1cnJlbmNlcyBvZiAlIG11c3QgYmVcbiIKIiAgICAgICAgICBkb3VibGVkIHdoZW4gdXNpbmcgdGhpcyBvcHRpb24uXG4iCiJcbiIKIiAgICAgICAgICBBdmFpbGFibGUgdmFyaWFibGVzIGFyZSBhdCB0aGlzIHBvaW50OlxuIgopOwogcHV0cygKIlxuIgoiICAgICAgICAgIHVybF9lZmZlY3RpdmUgIFRoZSBVUkwgdGhhdCB3YXMgZmV0Y2hlZCBsYXN0LiBUaGlzIGlzXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IG1lYW5pbmdmdWwgaWYgeW91J3ZlIHRvbGQgY3VybCB0b1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBsb2NhdGlvbjogaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIGh0dHBfY29kZSAgICAgIFRoZSBudW1lcmljYWwgY29kZSB0aGF0IHdhcyBmb3VuZCBpbiB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHJldHJpZXZlZCBIVFRQKFMpIHBhZ2UuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX3RvdGFsICAgICBUaGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgdGhhdCB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIG9wZXJhdGlvbiBsYXN0ZWQuIFRoZSB0aW1lIHdpbGwgYmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWQgd2l0aCBtaWxsaXNlY29uZCByZXNvbHV0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9uYW1lbG9va3VwXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgbmFtZSByZXNvbHZpbmcgd2FzIGNvba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBwbGV0ZWQuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX2Nvbm5lY3QgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBjb25uZWN0IHRvIHRoZSByZW1vdGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfcHJldHJhbnNmZXJcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBmaWxlIHRyYW5zZmVyIGlzIGp1c3RcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCB0byBiZWdpbi4gVGhpcyBpbmNsdWRlcyBhbGwgcHJlLVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzcGVjaWZpYyB0byB0aGUgcGFydGljdWxhciBwcm90b61cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBjb2wocykgaW52b2x2ZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX2Rvd25sb2FkICBUaGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX3VwbG9hZCAgICBUaGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkLlxuIgoiXG4iCiIgICAgICAgICAgc2l6ZV9oZWFkZXIgICAgVGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyBvZiB0aGUgZG93bq1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIHNpemVfcmVxdWVzdCAgIFRoZSB0b3RhbCBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3ZXJlIHNlbnRcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgSFRUUCByZXF1ZXN0LlxuIgoiXG4iCiIgICAgICAgICAgc3BlZWRfZG93bmxvYWQgVGhlIGF2ZXJhZ2UgZG93bmxvYWQgc3BlZWQgdGhhdCBjdXJsXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX3VwbG9hZCAgIFRoZSBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwgbWVhrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmVkIGZvciB0aGUgY29tcGxldGUgdXBsb2FkLlxuIgoiXG4iCiIgICAgIC14Ly0tcHJveHkgPHByb3h5aG9zdFs6cG9ydF0+XG4iCiIgICAgICAgICAgVXNlIHNwZWNpZmllZCBwcm94eS4gSWYgdGhlIHBvcnQgbnVtYmVyIGlzIG5vdCBzcGVjaa1cbiIKIiAgICAgICAgICBmaWVkLCBpdCBpcyBhc3N1bWVkIGF0IHBvcnQgMTA4MC5cbiIKIlxuIgoiICAgICAtWC8tLXJlcXVlc3QgPGNvbW1hbmQ+XG4iCiIgICAgICAgICAgKEhUVFApIFNwZWNpZmllcyBhIGN1c3RvbSByZXF1ZXN0IHRvIHVzZSB3aGVuIGNvbW11bmmtXG4iCiIgICAgICAgICAgY2F0aW5nIHdpdGggdGhlIEhUVFAgc2VydmVyLiAgVGhlIHNwZWNpZmllZCByZXF1ZXN0XG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIEdFVC4gUmVhZCB0aGUgSFRUUFxuIgoiICAgICAgICAgIDEuMSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIGFuZCBleHBsYW5hdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgICAoRlRQKSBTcGVjaWZpZXMgYSBjdXN0b20gRlRQIGNvbW1hbmQgdG8gdXNlIGluc3RlYWQgb2ZcbiIKIiAgICAgICAgICBMSVNUIHdoZW4gZG9pbmcgZmlsZSBsaXN0cyB3aXRoIGZ0cC5cbiIKIlxuIgoiICAgICAteS8tLXNwZWVkLXRpbWUgPHRpbWU+XG4iCiIgICAgICAgICAgSWYgYSBkb3dubG9hZCBpcyBzbG93ZXIgdGhhbiBzcGVlZC1saW1pdCBieXRlcyBwZXIgc2VjrVxuIgoiICAgICAgICAgIG9uZCBkdXJpbmcgYSBzcGVlZC10aW1lIHBlcmlvZCwgdGhlIGRvd25sb2FkIGdldHNcbiIKIiAgICAgICAgICBhYm9ydGVkLiBJZiBzcGVlZC10aW1lIGlzIHVzZWQsIHRoZSBkZWZhdWx0IHNwZWVkLWxpbWl0XG4iCiIgICAgICAgICAgd2lsbCBiZSAxIHVubGVzcyBzZXQgd2l0aCAteS5cbiIKIlxuIgoiICAgICAtWS8tLXNwZWVkLWxpbWl0IDxzcGVlZD5cbiIKIiAgICAgICAgICBJZiBhIGRvd25sb2FkIGlzIHNsb3dlciB0aGFuIHRoaXMgZ2l2ZW4gc3BlZWQsIGluIGJ5dGVzXG4iCiIgICAgICAgICAgcGVyIHNlY29uZCwgZm9yIHNwZWVkLXRpbWUgc2Vjb25kcyBpdCBnZXRzIGFib3J0ZWQuXG4iCiIgICAgICAgICAgc3BlZWQtdGltZSBpcyBzZXQgd2l0aCAtWSBhbmQgaXMgMzAgaWYgbm90IHNldC5cbiIKIlxuIgoiICAgICAtei8tLXRpbWUtY29uZCA8ZGF0ZSBleHByZXNzaW9uPlxuIgoiICAgICAgICAgIChIVFRQKSBSZXF1ZXN0IHRvIGdldCBhIGZpbGUgdGhhdCBoYXMgYmVlbiBtb2RpZmllZFxuIgoiICAgICAgICAgIGxhdGVyIHRoYW4gdGhlIGdpdmVuIHRpbWUgYW5kIGRhdGUsIG9yIG9uZSB0aGF0IGhhc1xuIgoiICAgICAgICAgIGJlZW4gbW9kaWZpZWQgYmVmb3JlIHRoYXQgdGltZS4gVGhlIGRhdGUgZXhwcmVzc2lvbiBjYW5cbiIKIiAgICAgICAgICBiZSBhbGwgc29ydHMgb2YgZGF0ZSBzdHJpbmdzIG9yIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggYW55XG4iCiIgICAgICAgICAgaW50ZXJuYWwgb25lcywgaXQgdHJpZXMgdG8gZ2V0IHRoZSB0aW1lIGZyb20gYSBnaXZlblxuIgoiICAgICAgICAgIGZpbGUgbmFtZSBpbnN0ZWFkISBTZWUgdGhlIEdOVSBkYXRlKDEpIG9yIGN1cmxfZ2V0rVxuIgoiICAgICAgICAgIGRhdGUoMykgbWFuIHBhZ2VzIGZvciBkYXRlIGV4cHJlc3Npb24gZGV0YWlscy5cbiIKIlxuIgoiICAgICAgICAgIFN0YXJ0IHRoZSBkYXRlIGV4cHJlc3Npb24gd2l0aCBhIGRhc2ggKC0pIHRvIG1ha2UgaXRcbiIKIiAgICAgICAgICByZXF1ZXN0IGZvciBhIGRvY3VtZW50IHRoYXQgaXMgb2xkZXIgdGhhbiB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBkYXRlL3RpbWUsIGRlZmF1bHQgaXMgYSBkb2N1bWVudCB0aGF0IGlzIG5ld2VyIHRoYW4gdGhlXG4iCiIgICAgICAgICAgc3BlY2lmaWVkIGRhdGUvdGltZS5cbiIKIlxuIgoiICAgICAtMy8tLXNzbHYzXG4iCiIgICAgICAgICAgKEhUVFBTKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0rVxuIgoiICAgICAgICAgIGluZyB3aXRoIGEgcmVtb3RlIFNTTCBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgLTIvLS1zc2x2MlxuIgoiICAgICAgICAgIChIVFRQUykgRm9yY2VzIGN1cmwgdG8gdXNlIFNTTCB2ZXJzaW9uIDIgd2hlbiBuZWdvdGlhdK1cbiIKIiAgICAgICAgICBpbmcgd2l0aCBhIHJlbW90ZSBTU0wgc2VydmVyLlxuIgoiXG4iCiIgICAgIC0jLy0tcHJvZ3Jlc3MtYmFyXG4iCiIgICAgICAgICAgTWFrZSBjdXJsIGRpc3BsYXkgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYXMgYSBwcm9ncmVzc1xuIgoiICAgICAgICAgIGJhciBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHN0YXRpc3RpY3MuXG4iCiJcbiIKIiAgICAgLS1jcmxmXG4iCiIgICAgICAgICAgKEZUUCkgQ29udmVydCBMRiB0byBDUkxGIGluIHVwbG9hZC4gVXNlZnVsIGZvciBNVlNcbiIKIiAgICAgICAgICAoT1MvMzkwKS5cbiIKIlxuIgoiICAgICAtLXN0ZGVyciA8ZmlsZT5cbiIKIiAgICAgICAgICBSZWRpcmVjdCBhbGwgd3JpdGVzIHRvIHN0ZGVyciB0byB0aGUgc3BlY2lmaWVkIGZpbGVcbiIKIiAgICAgICAgICBpbnN0ZWFkLiBJZiB0aGUgZmlsZSBuYW1lIGlzIGEgcGxhaW4gJy0nLCBpdCBpcyBpbnN0ZWFkXG4iCiIgICAgICAgICAgd3JpdHRlbiB0byBzdGRvdXQuIFRoaXMgb3B0aW9uIGhhcyBubyBwb2ludCB3aGVuIHlvdSdyZVxuIgoiICAgICAgICAgIHVzaW5nIGEgc2hlbGwgd2l0aCBkZWNlbnQgcmVkaXJlY3RpbmcgY2FwYWJpbGl0aWVzLlxuIgoiRklMRVNcbiIKIiAgICAgfi8uY3VybHJjXG4iCiIgICAgICAgICAgRGVmYXVsdCBjb25maWcgZmlsZS5cbiIKIlxuIgoiRU5WSVJPTk1FTlRcbiIKIiAgICAgSFRUUF9QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgSFRUUC5cbiIKIlxuIgoiICAgICBIVFRQU19QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgSFRUUFMuXG4iCiJcbiIKIiAgICAgRlRQX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBGVFAuXG4iCiJcbiIKIiAgICAgR09QSEVSX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBHT1BIRVIuXG4iCiJcbiIKIiAgICAgQUxMX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGlmIG5vIHByb3RvY29sLXNwZWNpZmljIHByb3h5XG4iCiIgICAgICAgICAgaXMgc2V0LlxuIgoiXG4iCiIgICAgIE5PX1BST1hZIDxjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cz5cbiIKIiAgICAgICAgICBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkuXG4iCiIgICAgICAgICAgSWYgc2V0IHRvIGEgYXN0ZXJpc2sgJyonIG9ubHksIGl0IG1hdGNoZXMgYWxsIGhvc3RzLlxuIgoiXG4iCiIgICAgIENPTFVNTlMgPGludGVnZXI+XG4iCiIgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbC4gIFRoaXMgdmFyaWFibGUgb25seSBhZmZlY3RzXG4iCiIgICAgICAgICAgY3VybCB3aGVuIHRoZSAtLXByb2dyZXNzLWJhciBvcHRpb24gaXMgdXNlZC5cbiIKIlxuIgoiRVhJVCBDT0RFU1xuIgoiICAgICBUaGVyZSBleGlzdHMgYSBidW5jaCBvZiBkaWZmZXJlbnQgZXJyb3IgY29kZXMgYW5kIHRoZWlyIGNvcq1cbiIKIiAgICAgcmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcyB0aGF0IG1heSBhcHBlYXIgZHVyaW5nIGJhZCBjb25kaa1cbiIKIiAgICAgdGlvbnMuIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4aXQgY29kZXMgYXJlOlxuIgoiXG4iCiIgICAgIDEgICAgVW5zdXBwb3J0ZWQgcHJvdG9jb2wuIFRoaXMgYnVpbGQgb2YgY3VybCBoYXMgbm8gc3VwcG9ydFxuIgoiICAgICAgICAgIGZvciB0aGlzIHByb3RvY29sLlxuIgoiXG4iCiIgICAgIDIgICAgRmFpbGVkIHRvIGluaXRpYWxpemUuXG4iCiJcbiIKIiAgICAgMyAgICBVUkwgbWFsZm9ybWF0LiBUaGUgc3ludGF4IHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA0ICAgIFVSTCB1c2VyIG1hbGZvcm1hdHRlZC4gVGhlIHVzZXItcGFydCBvZiB0aGUgVVJMIHN5bnRheFxuIgoiICAgICAgICAgIHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA1ICAgIENvdWxkbid0IHJlc29sdmUgcHJveHkuIFRoZSBnaXZlbiBwcm94eSBob3N0IGNvdWxkIG5vdFxuIgoiICAgICAgICAgIGJlIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDYgICAgQ291bGRuJ3QgcmVzb2x2ZSBob3N0LiBUaGUgZ2l2ZW4gcmVtb3RlIGhvc3Qgd2FzIG5vdFxuIgoiICAgICAgICAgIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDcgICAgRmFpbGVkIHRvIGNvbm5lY3QgdG8gaG9zdC5cbiIKIiAgICAgOCAgICBGVFAgd2VpcmQgc2VydmVyIHJlcGx5LiBUaGUgc2VydmVyIHNlbnQgZGF0YSBjdXJsXG4iCiIgICAgICAgICAgY291bGRuJ3QgcGFyc2UuXG4iCiJcbiIKIiAgICAgOSAgICBGVFAgYWNjZXNzIGRlbmllZC4gVGhlIHNlcnZlciBkZW5pZWQgbG9naW4uXG4iCiJcbiIKIiAgICAgMTAgICBGVFAgdXNlci9wYXNzd29yZCBpbmNvcnJlY3QuIEVpdGhlciBvbmUgb3IgYm90aCB3ZXJlXG4iCiIgICAgICAgICAgbm90IGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMTEgICBGVFAgd2VpcmQgUEFTUyByZXBseS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNTIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTIgICBGVFAgd2VpcmQgVVNFUiByZXBseS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBVU0VSIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTMgICBGVFAgd2VpcmQgUEFTViByZXBseSwgQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNWIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTQgICBGVFAgd2VpcmQgMjI3IGZvcm1hdC4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgMjI3LWxpbmVcbiIKIiAgICAgICAgICB0aGUgc2VydmVyIHNlbnQuXG4iCiJcbiIKIiAgICAgMTUgICBGVFAgY2FuJ3QgZ2V0IGhvc3QuIENvdWxkbid0IHJlc29sdmUgdGhlIGhvc3QgSVAgd2UgZ290XG4iCiIgICAgICAgICAgaW4gdGhlIDIyNy1saW5lLlxuIgoiXG4iCiIgICAgIDE2ICAgRlRQIGNhbid0IHJlY29ubmVjdC4gQ291bGRuJ3QgY29ubmVjdCB0byB0aGUgaG9zdCB3ZVxuIgoiICAgICAgICAgIGdvdCBpbiB0aGUgMjI3LWxpbmUuXG4iCiJcbiIKIiAgICAgMTcgICBGVFAgY291bGRuJ3Qgc2V0IGJpbmFyeS4gQ291bGRuJ3QgY2hhbmdlIHRyYW5zZmVyXG4iCiIgICAgICAgICAgbWV0aG9kIHRvIGJpbmFyeS5cbiIKIlxuIgoiICAgICAxOCAgIFBhcnRpYWwgZmlsZS4gT25seSBhIHBhcnQgb2YgdGhlIGZpbGUgd2FzIHRyYW5zZmVyZWQuXG4iCiJcbiIKIiAgICAgMTkgICBGVFAgY291bGRuJ3QgUkVUUiBmaWxlLiBUaGUgUkVUUiBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAyMCAgIEZUUCB3cml0ZSBlcnJvci4gVGhlIHRyYW5zZmVyIHdhcyByZXBvcnRlZCBiYWQgYnkgdGhlXG4iCiIgICAgICAgICAgc2VydmVyLlxuIgoiXG4iCiIgICAgIDIxICAgRlRQIHF1b3RlIGVycm9yLiBBIHF1b3RlIGNvbW1hbmQgcmV0dXJuZWQgZXJyb3IgZnJvbVxuIgoiICAgICAgICAgIHRoZSBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMjIgICBIVFRQIG5vdCBmb3VuZC4gVGhlIHJlcXVlc3RlZCBwYWdlIHdhcyBub3QgZm91bmQuIFRoaXNcbiIKIiAgICAgICAgICByZXR1cm4gY29kZSBvbmx5IGFwcGVhcnMgaWYgLS1mYWlsIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgMjMgICBXcml0ZSBlcnJvci4gQ3VybCBjb3VsZG4ndCB3cml0ZSBkYXRhIHRvIGEgbG9jYWxcbiIKIiAgICAgICAgICBmaWxlc3lzdGVtIG9yIHNpbWlsYXIuXG4iCiJcbiIKIiAgICAgMjQgICBNYWxmb3JtYXQgdXNlci4gVXNlciBuYW1lIGJhZGx5IHNwZWNpZmllZC5cbiIKIlxuIgoiICAgICAyNSAgIEZUUCBjb3VsZG4ndCBTVE9SIGZpbGUuIFRoZSBzZXJ2ZXIgZGVuaWVkIHRoZSBTVE9SXG4iCiIgICAgICAgICAgb3BlcmF0aW9uLlxuIgoiXG4iCiIgICAgIDI2ICAgUmVhZCBlcnJvci4gVmFyaW91cyByZWFkaW5nIHByb2JsZW1zLlxuIgoiICAgICAyNyAgIE91dCBvZiBtZW1vcnkuIEEgbWVtb3J5IGFsbG9jYXRpb24gcmVxdWVzdCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMjggICBPcGVyYXRpb24gdGltZW91dC4gVGhlIHNwZWNpZmllZCB0aW1lLW91dCBwZXJpb2Qgd2FzXG4iCiIgICAgICAgICAgcmVhY2hlZCBhY2NvcmRpbmcgdG8gdGhlIGNvbmRpdGlvbnMuXG4iCiJcbiIKIiAgICAgMjkgICBGVFAgY291bGRuJ3Qgc2V0IEFTQ0lJLiBUaGUgc2VydmVyIHJldHVybmVkIGFuIHVua25vd25cbiIKIiAgICAgICAgICByZXBseS5cbiIKIlxuIgoiICAgICAzMCAgIEZUUCBQT1JUIGZhaWxlZC4gVGhlIFBPUlQgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzEgICBGVFAgY291bGRuJ3QgdXNlIFJFU1QuIFRoZSBSRVNUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMyICAgRlRQIGNvdWxkbid0IHVzZSBTSVpFLiBUaGUgU0laRSBjb21tYW5kIGZhaWxlZC4gVGhlXG4iCiIgICAgICAgICAgY29tbWFuZCBpcyBhbiBleHRlbnNpb24gdG8gdGhlIG9yaWdpbmFsIEZUUCBzcGVjIFJGQ1xuIgoiICAgICAgICAgIDk1OS5cbiIKIlxuIgoiICAgICAzMyAgIEhUVFAgcmFuZ2UgZXJyb3IuIFRoZSByYW5nZSBcImNvbW1hbmRcIiBkaWRuJ3Qgd29yay5cbiIKIlxuIgoiICAgICAzNCAgIEhUVFAgcG9zdCBlcnJvci4gSW50ZXJuYWwgcG9zdC1yZXF1ZXN0IGdlbmVyYXRpb25cbiIKIiAgICAgICAgICBlcnJvci5cbiIKIlxuIgoiICAgICAzNSAgIFNTTCBjb25uZWN0IGVycm9yLiBUaGUgU1NMIGhhbmRzaGFraW5nIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzNiAgIEZUUCBiYWQgZG93bmxvYWQgcmVzdW1lLiBDb3VsZG4ndCBjb250aW51ZSBhbiBlYXJsaWVyXG4iCiIgICAgICAgICAgYWJvcnRlZCBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAzNyAgIEZJTEUgY291bGRuJ3QgcmVhZCBmaWxlLiBGYWlsZWQgdG8gb3BlbiB0aGUgZmlsZS4gUGVyrVxuIgoiICAgICAgICAgIG1pc3Npb25zP1xuIgoiXG4iCiIgICAgIDM4ICAgTERBUCBjYW5ub3QgYmluZC4gTERBUCBiaW5kIG9wZXJhdGlvbiBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzkgICBMREFQIHNlYXJjaCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgNDAgICBMaWJyYXJ5IG5vdCBmb3VuZC4gVGhlIExEQVAgbGlicmFyeSB3YXMgbm90IGZvdW5kLlxuIgoiXG4iCiIgICAgIDQxICAgRnVuY3Rpb24gbm90IGZvdW5kLiBBIHJlcXVpcmVkIExEQVAgZnVuY3Rpb24gd2FzIG5vdFxuIgoiICAgICAgICAgIGZvdW5kLlxuIgoiXG4iCiIgICAgIDQyICAgQWJvcnRlZCBieSBjYWxsYmFjay4gQW4gYXBwbGljYXRpb24gdG9sZCBjdXJsIHRvIGFib3J0XG4iCiIgICAgICAgICAgdGhlIG9wZXJhdGlvbi5cbiIKIlxuIgoiICAgICA0MyAgIEludGVybmFsIGVycm9yLiBBIGZ1bmN0aW9uIHdhcyBjYWxsZWQgd2l0aCBhIGJhZCBwYXJhba1cbiIKIiAgICAgICAgICBldGVyLlxuIgoiXG4iCiIgICAgIDQ0ICAgSW50ZXJuYWwgZXJyb3IuIEEgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBhIGJhZCBvcmRlci5cbiIKIlxuIgoiICAgICA0NSAgIEludGVyZmFjZSBlcnJvci4gQSBzcGVjaWZpZWQgb3V0Z29pbmcgaW50ZXJmYWNlIGNvdWxkXG4iCiIgICAgICAgICAgbm90IGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgNDYgICBCYWQgcGFzc3dvcmQgZW50ZXJlZC4gQW4gZXJyb3Igd2FzIHNpZ25hbGxlZCB3aGVuIHRoZVxuIgoiICAgICAgICAgIHBhc3N3b3JkIHdhcyBlbnRlcmVkLlxuIgoiICAgICA0NyAgIFRvbyBtYW55IHJlZGlyZWN0cy4gV2hlbiBmb2xsb3dpbmcgcmVkaXJlY3RzLCBjdXJsIGhpdFxuIgoiICAgICAgICAgIHRoZSBtYXhpbXVtIGFtb3VudC5cbiIKIlxuIgoiICAgICBYWCAgIFRoZXJlIHdpbGwgYXBwZWFyIG1vcmUgZXJyb3IgY29kZXMgaGVyZSBpbiBmdXR1cmVcbiIKIiAgICAgICAgICByZWxlYXNlcy4gVGhlIGV4aXN0aW5nIG9uZXMgYXJlIG1lYW50IHRvIG5ldmVyIGNoYW5nZS5cbiIKIlxuIgoiQlVHU1xuIgoiICAgICBJZiB5b3UgZG8gZmluZCBidWdzLCBtYWlsIHRoZW0gdG8gY3VybC1idWdAaGF4eC5zZS5cbiIKIlxuIgoiQVVUSE9SUyAvIENPTlRSSUJVVE9SU1xuIgoiICAgICAgLSBEYW5pZWwgU3RlbmJlcmcgPERhbmllbC5TdGVuYmVyZ0BoYXh4LnNlPlxuIgoiICAgICAgLSBSYWZhZWwgU2FndWxhIDxzYWd1bGFAaW5mLnVmcmdzLmJyPlxuIgoiICAgICAgLSBTYW1wbyBLZWxsb21ha2kgPHNhbXBvQGlraS5maT5cbiIKIiAgICAgIC0gTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPlxuIgoiICAgICAgLSBCam9ybiBSZWVzZSA8YnJlZXNlQG1haWwxLnN0b2ZhbmV0LmRrPlxuIgoiICAgICAgLSBKb2hhbiBBbmRlcnNvbiA8am9oYW5AaG9tZW1haWwuY29tPlxuIgoiICAgICAgLSBLamVsbCBFcmljc29uIDxLamVsbC5Fcmljc29uQGhheHguc2U+XG4iCiIgICAgICAtIFRyb3kgRW5nZWwgPHRlbmdlbEBzb25pYy5uZXQ+XG4iCiIgICAgICAtIFJ5YW4gTmVsc29uIDxyeWFuQGluY2guY29tPlxuIgoiICAgICAgLSBCavZybiBTdGVuYmVyZyA8Qmpvcm4uU3RlbmJlcmdAaGF4eC5zZT5cbiIKIiAgICAgIC0gQW5ndXMgTWFja2F5IDxhbWFja2F5QGd1cy5tbC5vcmc+XG4iCiIgICAgICAtIEVyaWMgWW91bmcgPGVheUBjcnlwdHNvZnQuY29tPlxuIgoiICAgICAgLSBTaW1vbiBEaWNrIDxzaW1vbmRAdG90YWxseS5pcnJlbGV2YW50Lm9yZz5cbiIKIiAgICAgIC0gT3JlbiBUaXJvc2ggPG9yZW5AbW9udHkuaGlzaG9tZS5uZXQ+XG4iCiIgICAgICAtIFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT5cbiIKIiAgICAgIC0gR2lsYmVydCBSYW1pcmV6IEpyLiA8Z3JhbUB2ZXJkaWN0LnV0aHNjc2EuZWR1PlxuIgoiICAgICAgLSBBbmRy6XMgR2FyY+1hIDxvcm5hbHV4QHJlZGVzdGIuZXM+XG4iCiIgICAgICAtIERvdWdsYXMgRS4gV2Vnc2NoZWlkIDx3ZWdzY2RAd2hpcmxwb29sLmNvbT5cbiIKIiAgICAgIC0gTWFyayBCdXRsZXIgPGJ1dGxlcm1AeG1pc3Npb24uY29tPlxuIgoiICAgICAgLSBFcmljIFRoZWxpbiA8ZXJpY0BnZW5lcmF0aW9uLWkuY29tPlxuIgopOwogcHV0cygKIiAgICAgIC0gTWFyYyBCb3VjaGVyIDxtYXJjQG1ic2kuY2E+XG4iCiIgICAgICAtIEdyZWcgT251ZmVyIDxHcmVnLk9udWZlckBFbmcuU3VuLkNPTT5cbiIKIiAgICAgIC0gRG91ZyBLYXVmbWFuIDxka2F1Zm1hbkByYWh1bC5uZXQ+XG4iCiIgICAgICAtIERhdmlkIEVyaWtzc29uIDxkYXZpZEAyZ29vZC5jb20+XG4iCiIgICAgICAtIFJhbHBoIEJlY2ttYW5uIDxyYWJlQHVuaS1wYWRlcmJvcm4uZGU+XG4iCiIgICAgICAtIFQuIFlhbWFkYSA8dGFpQGltYXN5Lm9yLmpwPlxuIgoiICAgICAgLSBMYXJzIEouIEFhcyA8bGFyc2FAc2ltLm5vPlxuIgoiICAgICAgLSBK9nJuIEhhcnRyb3RoIDxKb2Vybi5IYXJ0cm90aEBjb21wdXRlci5vcmc+XG4iCiIgICAgICAtIE1hdHRoZXcgQ2xhcmtlIDxjbGFtYXRAdmFuLm1hdmVzLmNhPlxuIgoiICAgICAgLSBMaW51cyBOaWVsc2VuIDxMaW51cy5OaWVsc2VuQGhheHguc2U+XG4iCiIgICAgICAtIEZlbGl4IHZvbiBMZWl0bmVyIDxmZWxpeEBjb252ZXJnZW5jZS5kZT5cbiIKIiAgICAgIC0gRGFuIFppdHRlciA8ZHppdHRlckB6aXR0ZXIubmV0PlxuIgoiICAgICAgLSBKb25na2kgU3V3YW5kaSA8Sm9uZ2tpLlN1d2FuZGlAZW5nLnN1bi5jb20+XG4iCiIgICAgICAtIENocmlzIE1hbHRieSA8Y2hyaXNAYXVyZW1hLmNvbT5cbiIKIiAgICAgIC0gUm9uIFphcHAgPHJ6YXBwZXJAeWFob28uY29tPlxuIgoiICAgICAgLSBQYXVsIE1hcnF1aXMgPHBtYXJxdWlzQGluYW1lLmNvbT5cbiIKIiAgICAgIC0gRWxsaXMgUHJpdGNoYXJkIDxlbGxpc0BjaXRyaWEuY29tPlxuIgoiICAgICAgLSBEYW1pZW4gQWRhbnQgPGRhbXNAdXNhLm5ldD5cbiIKIiAgICAgIC0gQ2hyaXMgPGNiYXlsaXNzQGNzYy5jb21lPlxuIgoiICAgICAgLSBNYXJjbyBHLiBTYWx2YWdubyA8bWdzQHdoaXouY2piLm5ldD5cbiIKIiAgICAgIC0gUGF1bCBNYXJxdWlzIDxwbWFycXVpc0BpbmFtZS5jb20+XG4iCiIgICAgICAtIERhdmlkIExlQmxhbmMgPGRsZWJsYW5jQHFueC5jb20+XG4iCiIgICAgICAtIFJpY2ggR3JheSBhdCBQbHVzIFRlY2hub2xvZ2llc1xuIgoiICAgICAgLSBMdW9uZyBEaW5oIER1bmcgPHU4bHVvbmdAbGhzeXN0ZW1zLmh1PlxuIgoiICAgICAgLSBUb3JzdGVuIEZvZXJ0c2NoIDx0b3JzdGVuLmZvZXJ0c2NoQGdteC5uZXQ+XG4iCiIgICAgICAtIEtyaXN0aWFuIEv2aG50b3BwIDxrcmlzQGtvZWhudG9wcC5kZT5cbiIKIiAgICAgIC0gRnJlZCBOb3ogPEZOb3pAc2lhYy5jb20+XG4iCiIgICAgICAtIENhb2xhbiBNY05hbWFyYSA8Y2FvbGFuQGNzbi51bC5pZT5cbiIKIiAgICAgIC0gQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPlxuIgoiICAgICAgLSBTdGVwaGVuIEtpY2sgPHNraWNrQGVwaWNyZWFsbS5jb20+XG4iCiIgICAgICAtIE1hcnRpbiBIZWRlbmZhbGsgPG1oZUBzdGFja2VuLmt0aC5zZT5cbiIKIiAgICAgIC0gUmljaGFyZCBQcmVzY290dFxuIgoiICAgICAgLSBKYXNvbiBTLiBQcmllYmUgPHByaWViZUB3cmFsLXR2LmNvbT5cbiIKIiAgICAgIC0gVC4gQmhhcmF0aCA8VEJoYXJhdGhAcmVzcG9uc2VuZXR3b3Jrcy5jb20+XG4iCiIgICAgICAtIEFsZXhhbmRlciBLb3VyYWtvcyA8YXdrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD5cbiIKIiAgICAgIC0gSmFtZXMgR3JpZmZpdGhzIDxncmlmZml0aHNfamFtZXNAeWFob28uY29tPlxuIgoiXG4iCiJXV1dcbiIKIiAgICAgaHR0cDovL2N1cmwuaGF4eC5zZVxuIgoiXG4iCiJGVFBcbiIKIiAgICAgZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvXG4iCiJcbiIKIlNFRSBBTFNPXG4iCiIgICAgIGZ0cCgxKSwgd2dldCgxKSwgc25hcmYoMSlcbiIKIlxuIgoiTEFURVNUIFZFUlNJT05cbiIKIlxuIgoiICBZb3UgYWx3YXlzIGZpbmQgbmV3cyBhYm91dCB3aGF0J3MgZ29pbmcgb24gYXMgd2VsbCBhcyB0aGUgbGF0ZXN0IHZlcnNpb25zXG4iCiIgIGZyb20gdGhlIGN1cmwgd2ViIHBhZ2VzLCBsb2NhdGVkIGF0OlxuIgoiXG4iCiIgICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2VcbiIKIlxuIgoiU0lNUExFIFVTQUdFXG4iCiJcbiIKIiAgR2V0IHRoZSBtYWluIHBhZ2UgZnJvbSBuZXRzY2FwZSdzIHdlYi1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgdGhlIHJvb3QgUkVBRE1FIGZpbGUgZnJvbSBmdW5ldCdzIGZ0cC1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9mdHAuZnVuZXQuZmkvUkVBRE1FXG4iCiJcbiIKIiAgR2V0IGEgZ29waGVyIGRvY3VtZW50IGZyb20gZnVuZXQncyBnb3BoZXIgc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZ29waGVyOi8vZ29waGVyLmZ1bmV0LmZpXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgZnJvbSBhIHNlcnZlciB1c2luZyBwb3J0IDgwMDA6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3LndlaXJkc2VydmVyLmNvbTo4MDAwL1xuIgoiXG4iCiIgIEdldCBhIGxpc3Qgb2YgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGFuIEZUUCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vZnRwLmZ0cy5mcm9udGVjLnNlL1xuIgoiXG4iCiIgIEdldCB0aGUgZGVmaW5pdGlvbiBvZiBjdXJsIGZyb20gYSBkaWN0aW9uYXJ5OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL206Y3VybFxuIgoiXG4iCiJET1dOTE9BRCBUTyBBIEZJTEVcbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBhbmQgc3RvcmUgaW4gYSBsb2NhbCBmaWxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLW8gdGhhdHBhZ2UuaHRtbCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBhbmQgc3RvcmUgaW4gYSBsb2NhbCBmaWxlLCBtYWtlIHRoZSBsb2NhbCBmaWxlIGdldCB0aGUgbmFtZVxuIgoiICBvZiB0aGUgcmVtb3RlIGRvY3VtZW50IChpZiBubyBmaWxlIG5hbWUgcGFydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTCwgdGhpc1xuIgoiICB3aWxsIGZhaWwpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLU8gaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vaW5kZXguaHRtbFxuIgoiXG4iCiJVU0lORyBQQVNTV09SRFNcbiIKIlxuIgoiIEZUUFxuIgoiXG4iCiIgICBUbyBmdHAgZmlsZXMgdXNpbmcgbmFtZStwYXNzd2QsIGluY2x1ZGUgdGhlbSBpbiB0aGUgVVJMIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9uYW1lOnBhc3N3ZEBtYWNoaW5lLmRvbWFpbjpwb3J0L2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIG9yIHNwZWNpZnkgdGhlbSB3aXRoIHRoZSAtdSBmbGFnIGxpa2VcbiIKIlxuIgoiICAgICAgICBjdXJsIC11IG5hbWU6cGFzc3dkIGZ0cDovL21hY2hpbmUuZG9tYWluOnBvcnQvZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiIEhUVFBcbiIKIlxuIgoiICAgVGhlIEhUVFAgVVJMIGRvZXNuJ3Qgc3VwcG9ydCB1c2VyIGFuZCBwYXNzd29yZCBpbiB0aGUgVVJMIHN0cmluZy4gQ3VybFxuIgoiICAgZG9lcyBzdXBwb3J0IHRoYXQgYW55d2F5IHRvIHByb3ZpZGUgYSBmdHAtc3R5bGUgaW50ZXJmYWNlIGFuZCB0aHVzIHlvdSBjYW5cbiIKIiAgIHBpY2sgYSBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW4vZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgb3Igc3BlY2lmeSB1c2VyIGFuZCBwYXNzd29yZCBzZXBhcmF0ZWx5IGxpa2UgaW5cbiIKIlxuIgoiICAgICAgICBjdXJsIC11IG5hbWU6cGFzc3dkIGh0dHA6Ly9tYWNoaW5lLmRvbWFpbi9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBOT1RFISBTaW5jZSBIVFRQIFVSTHMgZG9uJ3Qgc3VwcG9ydCB1c2VyIGFuZCBwYXNzd29yZCwgeW91IGNhbid0IHVzZSB0aGF0XG4iCiIgICBzdHlsZSB3aGVuIHVzaW5nIEN1cmwgdmlhIGEgcHJveHkuIFlvdSBfbXVzdF8gdXNlIHRoZSAtdSBzdHlsZSBmZXRjaFxuIgoiICAgZHVyaW5nIHN1Y2ggY2lyY3Vtc3RhbmNlcy5cbiIKIlxuIgoiIEhUVFBTXG4iCiJcbiIKIiAgIFByb2JhYmx5IG1vc3QgY29tbW9ubHkgdXNlZCB3aXRoIHByaXZhdGUgY2VydGlmaWNhdGVzLCBhcyBleHBsYWluZWQgYmVsb3cuXG4iCiJcbiIKIiBHT1BIRVJcbiIKIlxuIgoiICAgQ3VybCBmZWF0dXJlcyBubyBwYXNzd29yZCBzdXBwb3J0IGZvciBnb3BoZXIuXG4iCiJcbiIKIlBST1hZXG4iCiJcbiIKIiBHZXQgYW4gZnRwIGZpbGUgdXNpbmcgYSBwcm94eSBuYW1lZCBteS1wcm94eSB0aGF0IHVzZXMgcG9ydCA4ODg6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteCBteS1wcm94eTo4ODggZnRwOi8vZnRwLmxlYWNoc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiBHZXQgYSBmaWxlIGZyb20gYSBIVFRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIHVzZXIgYW5kIHBhc3N3b3JkLCB1c2luZyB0aGVcbiIKIiBzYW1lIHByb3h5IGFzIGFib3ZlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgdXNlcjpwYXNzd2QgLXggbXktcHJveHk6ODg4IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiBTb21lIHByb3hpZXMgcmVxdWlyZSBzcGVjaWFsIGF1dGhlbnRpY2F0aW9uLiBTcGVjaWZ5IGJ5IHVzaW5nIC1VIGFzIGFib3ZlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVUgdXNlcjpwYXNzd2QgLXggbXktcHJveHk6ODg4IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiBTZWUgYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIEN1cmwgc3VwcG9ydCB0aGF0IG9mZmVyIGZ1cnRoZXIgcHJveHlcbiIKIiBjb250cm9sLlxuIgoiXG4iCiJSQU5HRVNcbiIKIlxuIgoiICBXaXRoIEhUVFAgMS4xIGJ5dGUtcmFuZ2VzIHdlcmUgaW50cm9kdWNlZC4gVXNpbmcgdGhpcywgYSBjbGllbnQgY2FuIHJlcXVlc3RcbiIKIiAgdG8gZ2V0IG9ubHkgb25lIG9yIG1vcmUgc3VicGFydHMgb2YgYSBzcGVjaWZpZWQgZG9jdW1lbnQuIEN1cmwgc3VwcG9ydHNcbiIKIiAgdGhpcyB3aXRoIHRoZSAtciBmbGFnLlxuIgoiXG4iCiIgIEdldCB0aGUgZmlyc3QgMTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAwLTk5IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiAgR2V0IHRoZSBsYXN0IDUwMCBieXRlcyBvZiBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgLTUwMCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgIEN1cmwgYWxzbyBzdXBwb3J0cyBzaW1wbGUgcmFuZ2VzIGZvciBGVFAgZmlsZXMgYXMgd2VsbC4gVGhlbiB5b3UgY2FuIG9ubHlcbiIKIiAgc3BlY2lmeSBzdGFydCBhbmQgc3RvcCBwb3NpdGlvbi5cbiIKIlxuIgoiICBHZXQgdGhlIGZpcnN0IDEwMCBieXRlcyBvZiBhIGRvY3VtZW50IHVzaW5nIEZUUDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIDAtOTkgZnRwOi8vd3d3LmdldC50aGlzL1JFQURNRSAgXG4iCiJcbiIKIlVQTE9BRElOR1xuIgoiXG4iCiIgRlRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGZ0cCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXQgZnRwOi8vZnRwLnVwbG9hZC5jb20vbXlmaWxlXG4iCiJcbiIKIiAgVXBsb2FkIGRhdGEgZnJvbSBhIHNwZWNpZmllZCBmaWxlLCBsb2dpbiB3aXRoIHVzZXIgYW5kIHBhc3N3b3JkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBVcGxvYWQgYSBsb2NhbCBmaWxlIHRvIHRoZSByZW1vdGUgc2l0ZSwgYW5kIHVzZSB0aGUgbG9jYWwgZmlsZSBuYW1lIHJlbW90ZVxuIgoiICB0b286XG4iCiIgXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9cbiIKIlxuIgoiICBVcGxvYWQgYSBsb2NhbCBmaWxlIHRvIGdldCBhcHBlbmRlZCB0byB0aGUgcmVtb3RlIGZpbGUgdXNpbmcgZnRwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgbG9jYWxmaWxlIC1hIGZ0cDovL2Z0cC51cGxvYWQuY29tL3JlbW90ZWZpbGVcbiIKIlxuIgoiICBDdXJsIGFsc28gc3VwcG9ydHMgZnRwIHVwbG9hZCB0aHJvdWdoIGEgcHJveHksIGJ1dCBvbmx5IGlmIHRoZSBwcm94eSBpc1xuIgoiICBjb25maWd1cmVkIHRvIGFsbG93IHRoYXQga2luZCBvZiB0dW5uZWxpbmcuIElmIGl0IGRvZXMsIHlvdSBjYW4gcnVuIGN1cmwgaW5cbiIKIiAgYSBmYXNoaW9uIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLXByb3h5dHVubmVsIC14IHByb3h5OnBvcnQgLVQgbG9jYWxmaWxlIGZ0cC51cGxvYWQuY29tXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGh0dHAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC10IGh0dHA6Ly93d3cudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBOb3RlIHRoYXQgdGhlIGh0dHAgc2VydmVyIG11c3QndmUgYmVlbiBjb25maWd1cmVkIHRvIGFjY2VwdCBQVVQgYmVmb3JlIHRoaXNcbiIKIiAgY2FuIGJlIGRvbmUgc3VjY2Vzc2Z1bGx5LlxuIgoiXG4iCiIgIEZvciBvdGhlciB3YXlzIHRvIGRvIGh0dHAgZGF0YSB1cGxvYWQsIHNlZSB0aGUgUE9TVCBzZWN0aW9uIGJlbG93LlxuIgoiXG4iCiJWRVJCT1NFIC8gREVCVUdcbiIKIlxuIgoiICBJZiBjdXJsIGZhaWxzIHdoZXJlIGl0IGlzbid0IHN1cHBvc2VkIHRvLCBpZiB0aGUgc2VydmVycyBkb24ndCBsZXQgeW91XG4iCiIgIGluLCBpZiB5b3UgY2FuJ3QgdW5kZXJzdGFuZCB0aGUgcmVzcG9uc2VzOiB1c2UgdGhlIC12IGZsYWcgdG8gZ2V0IFZFUkJPU0VcbiIKIiAgZmV0Y2hpbmcuIEN1cmwgd2lsbCBvdXRwdXQgbG90cyBvZiBpbmZvIGFuZCBhbGwgZGF0YSBpdCBzZW5kcyBhbmRcbiIKIiAgcmVjZWl2ZXMgaW4gb3JkZXIgdG8gbGV0IHRoZSB1c2VyIHNlZSBhbGwgY2xpZW50LXNlcnZlciBpbnRlcmFjdGlvbi5cbiIKIlxuIgoiICAgICAgICBjdXJsIC12IGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiJERVRBSUxFRCBJTkZPUk1BVElPTlxuIgoiXG4iCiIgIERpZmZlcmVudCBwcm90b2NvbHMgcHJvdmlkZSBkaWZmZXJlbnQgd2F5cyBvZiBnZXR0aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uXG4iCiIgIGFib3V0IHNwZWNpZmljIGZpbGVzL2RvY3VtZW50cy4gVG8gZ2V0IGN1cmwgdG8gc2hvdyBkZXRhaWxlZCBpbmZvcm1hdGlvblxuIgoiICBhYm91dCBhIHNpbmdsZSBmaWxlLCB5b3Ugc2hvdWxkIHVzZSAtSS8tLWhlYWQgb3B0aW9uLiBJdCBkaXNwbGF5cyBhbGxcbiIKIiAgYXZhaWxhYmxlIGluZm8gb24gYSBzaW5nbGUgZmlsZSBmb3IgSFRUUCBhbmQgRlRQLiBUaGUgSFRUUCBpbmZvcm1hdGlvbiBpcyBhXG4iCiIgIGxvdCBtb3JlIGV4dGVuc2l2ZS5cbiIKIlxuIgoiICBGb3IgSFRUUCwgeW91IGNhbiBnZXQgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiAodGhlIHNhbWUgYXMgLUkgd291bGQgc2hvdylcbiIKIiAgc2hvd24gYmVmb3JlIHRoZSBkYXRhIGJ5IHVzaW5nIC1pLy0taW5jbHVkZS4gQ3VybCB1bmRlcnN0YW5kcyB0aGVcbiIKIiAgLUQvLS1kdW1wLWhlYWRlciBvcHRpb24gd2hlbiBnZXR0aW5nIGZpbGVzIGZyb20gYm90aCBGVFAgYW5kIEhUVFAsIGFuZCBpdFxuIgoiICB3aWxsIHRoZW4gc3RvcmUgdGhlIGhlYWRlcnMgaW4gdGhlIHNwZWNpZmllZCBmaWxlLlxuIgoiXG4iCiIgIFN0b3JlIHRoZSBIVFRQIGhlYWRlcnMgaW4gYSBzZXBhcmF0ZSBmaWxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1kdW1wLWhlYWRlciBoZWFkZXJzLnR4dCBjdXJsLmhheHguc2VcbiIKIlxuIgoiICBOb3RlIHRoYXQgaGVhZGVycyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBmaWxlIGNhbiBiZSB2ZXJ5IHVzZWZ1bCBhdCBhIGxhdGVyXG4iCiIgIHRpbWUgaWYgeW91IHdhbnQgY3VybCB0byB1c2UgY29va2llcyBzZW50IGJ5IHRoZSBzZXJ2ZXIuIE1vcmUgYWJvdXQgdGhhdCBpblxuIgoiICB0aGUgY29va2llcyBzZWN0aW9uLlxuIgoiXG4iCiJQT1NUIChIVFRQKVxuIgoiXG4iCiIgIEl0J3MgZWFzeSB0byBwb3N0IGRhdGEgdXNpbmcgY3VybC4gVGhpcyBpcyBkb25lIHVzaW5nIHRoZSAtZCA8ZGF0YT5cbiIKIiAgb3B0aW9uLiAgVGhlIHBvc3QgZGF0YSBtdXN0IGJlIHVybGVuY29kZWQuXG4iCiJcbiIKIiAgUG9zdCBhIHNpbXBsZSBcIm5hbWVcIiBhbmQgXCJwaG9uZVwiIGd1ZXN0Ym9vay5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1kIFwibmFtZT1SYWZhZWwlMjBTYWd1bGEmcGhvbmU9MzMyMDc4MFwiIFxcXG4iCiIgICAgICAgICAgICAgICAgaHR0cDovL3d3dy53aGVyZS5jb20vZ3Vlc3QuY2dpXG4iCiJcbiIKIiAgSG93IHRvIHBvc3QgYSBmb3JtIHdpdGggY3VybCwgbGVzc29uICMxOlxuIgoiXG4iCiIgIERpZyBvdXQgYWxsIHRoZSA8aW5wdXQ+IHRhZ3MgaW4gdGhlIGZvcm0gdGhhdCB5b3Ugd2FudCB0byBmaWxsIGluLiAoVGhlcmUnc1xuIgoiICBhIHBlcmwgcHJvZ3JhbSBjYWxsZWQgZm9ybWZpbmQucGwgb24gdGhlIGN1cmwgc2l0ZSB0aGF0IGhlbHBzIHdpdGggdGhpcykuXG4iCiJcbiIKIiAgSWYgdGhlcmUncyBhIFwibm9ybWFsXCIgcG9zdCwgeW91IHVzZSAtZCB0byBwb3N0LiAtZCB0YWtlcyBhIGZ1bGwgXCJwb3N0XG4iCiIgIHN0cmluZ1wiLCB3aGljaCBpcyBpbiB0aGUgZm9ybWF0XG4iCiJcbiIKIiAgICAgICAgPHZhcmlhYmxlMT49PGRhdGExPiY8dmFyaWFibGUyPj08ZGF0YTI+Ji4uLlxuIgoiXG4iCiIgIFRoZSAndmFyaWFibGUnIG5hbWVzIGFyZSB0aGUgbmFtZXMgc2V0IHdpdGggXCJuYW1lPVwiIGluIHRoZSA8aW5wdXQ+IHRhZ3MsIGFuZFxuIgoiICB0aGUgZGF0YSBpcyB0aGUgY29udGVudHMgeW91IHdhbnQgdG8gZmlsbCBpbiBmb3IgdGhlIGlucHV0cy4gVGhlIGRhdGEgKm11c3QqXG4iCiIgIGJlIHByb3Blcmx5IFVSTCBlbmNvZGVkLiBUaGF0IG1lYW5zIHlvdSByZXBsYWNlIHNwYWNlIHdpdGggKyBhbmQgdGhhdCB5b3VcbiIKIiAgd3JpdGUgd2VpcmQgbGV0dGVycyB3aXRoICVYWCB3aGVyZSBYWCBpcyB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2ZcbiIKIiAgdGhlIGxldHRlcidzIEFTQ0lJIGNvZGUuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAocGFnZSBsb2NhdGVkIGF0IGh0dHA6Ly93d3cuZm9ybXBvc3QuY29tL2dldHRoaXMvXG4iCiJcbiIKIiAgICAgICAgPGZvcm0gYWN0aW9uPVwicG9zdC5jZ2lcIiBtZXRob2Q9XCJwb3N0XCI+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPXVzZXIgc2l6ZT0xMD5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9cGFzcyB0eXBlPXBhc3N3b3JkIHNpemU9MTA+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPWlkIHR5cGU9aGlkZGVuIHZhbHVlPVwiYmxhYmxhYmxhXCI+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPWRpbmcgdmFsdWU9XCJzdWJtaXRcIj5cbiIKIiAgICAgICAgPC9mb3JtPlxuIgoiXG4iCiIgIFdlIHdhbnQgdG8gZW50ZXIgdXNlciAnZm9vYmFyJyB3aXRoIHBhc3N3b3JkICcxMjM0NScuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGlzLCB5b3UgZW50ZXIgYSBjdXJsIGNvbW1hbmQgbGluZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWQgXCJ1c2VyPWZvb2JhciZwYXNzPTEyMzQ1JmlkPWJsYWJsYWJsYSZkaWc9c3VibWl0XCIgIChjb250aW51ZXMpXG4iCiIgICAgICAgICAgaHR0cDovL3d3dy5mb3JtcG9zdC5jb20vZ2V0dGhpcy9wb3N0LmNnaVxuIgoiXG4iCiJcbiIKIiAgV2hpbGUgLWQgdXNlcyB0aGUgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIG1pbWUtdHlwZSwgZ2VuZXJhbGx5XG4iCiIgIHVuZGVyc3Rvb2QgYnkgQ0dJJ3MgYW5kIHNpbWlsYXIsIGN1cmwgYWxzbyBzdXBwb3J0cyB0aGUgbW9yZSBjYXBhYmxlXG4iCiIgIG11bHRpcGFydC9mb3JtLWRhdGEgdHlwZS4gVGhpcyBsYXR0ZXIgdHlwZSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBmaWxlIHVwbG9hZC5cbiIKIlxuIgoiICAtRiBhY2NlcHRzIHBhcmFtZXRlcnMgbGlrZSAtRiBcIm5hbWU9Y29udGVudHNcIi4gSWYgeW91IHdhbnQgdGhlIGNvbnRlbnRzIHRvXG4iCiIgIGJlIHJlYWQgZnJvbSBhIGZpbGUsIHVzZSA8QGZpbGVuYW1lPiBhcyBjb250ZW50cy4gV2hlbiBzcGVjaWZ5aW5nIGEgZmlsZSxcbiIKIiAgeW91IGNhbiBhbHNvIHNwZWNpZnkgd2hpY2ggY29udGVudCB0eXBlIHRoZSBmaWxlIGlzLCBieSBhcHBlbmRpbmdcbiIKIiAgJzt0eXBlPTxtaW1lIHR5cGU+JyB0byB0aGUgZmlsZSBuYW1lLiBZb3UgY2FuIGFsc28gcG9zdCBjb250ZW50cyBvZiBzZXZlcmFsXG4iCiIgIGZpbGVzIGluIG9uZSBmaWVsZC4gU28gdGhhdCB0aGUgZmllbGQgbmFtZSAnY29vbGZpbGVzJyBjYW4gYmUgc2VudCB0aHJlZVxuIgoiICBmaWxlcyB3aXRoIGRpZmZlcmVudCBjb250ZW50IHR5cGVzIGluIGEgbWFubmVyIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImNvb2xmaWxlcz1AZmlsMS5naWY7dHlwZT1pbWFnZS9naWYsZmlsMi50eHQsZmlsMy5odG1sXCIgXFxcbiIKIiAgICAgICAgaHR0cDovL3d3dy5wb3N0LmNvbS9wb3N0aXQuY2dpXG4iCiJcbiIKIiAgSWYgY29udGVudC10eXBlIGlzIG5vdCBzcGVjaWZpZWQsIGN1cmwgd2lsbCB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uXG4iCiIgIChpdCBvbmx5IGtub3dzIGEgZmV3KSwgb3IgdXNlIHRoZSBwcmV2aW91c2x5IHNwZWNpZmllZCB0eXBlIChmcm9tIGFuIGVhcmxpZXJcbiIKIiAgZmlsZSBpZiBzZXZlcmFsIGZpbGVzIGFyZSBzcGVjaWZpZWQgaW4gYSBsaXN0KSBvciBmaW5hbGx5IHVzaW5nIHRoZSBkZWZhdWx0XG4iCiIgIHR5cGUgJ3RleHQvcGxhaW4nLlxuIgoiXG4iCiIgIEVtdWxhdGUgYSBmaWxsLWluIGZvcm0gd2l0aCAtRi4gTGV0J3Mgc2F5IHlvdSBmaWxsIGluIHRocmVlIGZpZWxkcyBpbiBhXG4iCiIgIGZvcm0uIE9uZSBmaWVsZCBpcyBhIGZpbGUgbmFtZSB3aGljaCB0byBwb3N0LCBvbmUgZmllbGQgaXMgeW91ciBuYW1lIGFuZCBvbmVcbiIKIiAgZmllbGQgaXMgYSBmaWxlIGRlc2NyaXB0aW9uLiBXZSB3YW50IHRvIHBvc3QgdGhlIGZpbGUgd2UgaGF2ZSB3cml0dGVuIG5hbWVkXG4iCiIgIFwiY29vbHRleHQudHh0XCIuIFRvIGxldCBjdXJsIGRvIHRoZSBwb3N0aW5nIG9mIHRoaXMgZGF0YSBpbnN0ZWFkIG9mIHlvdXJcbiIKIiAgZmF2b3VyaXRlIGJyb3dzZXIsIHlvdSBoYXZlIHRvIGNoZWNrIG91dCB0aGUgSFRNTCBvZiB0aGUgZm9ybSBwYWdlIHRvIGdldCB0b1xuIgoiICBrbm93IHRoZSBuYW1lcyBvZiB0aGUgaW5wdXQgZmllbGRzLiBJbiBvdXIgZXhhbXBsZSwgdGhlIGlucHV0IGZpZWxkIG5hbWVzIGFyZVxuIgoiICAnZmlsZScsICd5b3VybmFtZScgYW5kICdmaWxlZGVzY3JpcHRpb24nLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJmaWxlPUBjb29sdGV4dC50eHRcIiAtRiBcInlvdXJuYW1lPURhbmllbFwiIFxcXG4iCiIgICAgICAgICAgICAgLUYgXCJmaWxlZGVzY3JpcHRpb249Q29vbCB0ZXh0IGZpbGUgd2l0aCBjb29sIHRleHQgaW5zaWRlXCIgXFxcbiIKKTsKIHB1dHMoCiIgICAgICAgICAgICAgaHR0cDovL3d3dy5wb3N0LmNvbS9wb3N0aXQuY2dpXG4iCiJcbiIKIiAgU28sIHRvIHNlbmQgdHdvIGZpbGVzIGluIG9uZSBwb3N0IHlvdSBjYW4gZG8gaXQgaW4gdHdvIHdheXM6XG4iCiJcbiIKIiAgMS4gU2VuZCBtdWx0aXBsZSBmaWxlcyBpbiBhIHNpbmdsZSBcImZpZWxkXCIgd2l0aCBhIHNpbmdsZSBmaWVsZCBuYW1lOlxuIgoiIFxuIgoiICAgICAgICBjdXJsIC1GIFwicGljdHVyZXM9QGRvZy5naWYsY2F0LmdpZlwiIFxuIgoiIFxuIgoiICAyLiBTZW5kIHR3byBmaWVsZHMgd2l0aCB0d28gZmllbGQgbmFtZXM6IFxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJkb2NwaWN0dXJlPUBkb2cuZ2lmXCIgLUYgXCJjYXRwaWN0dXJlPUBjYXQuZ2lmXCIgXG4iCiJcbiIKIlJFRkVSRVJcbiIKIlxuIgoiICBBIEhUVFAgcmVxdWVzdCBoYXMgdGhlIG9wdGlvbiB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIGFkZHJlc3NcbiIKIiAgdGhhdCByZWZlcnJlZCB0byBhY3R1YWwgcGFnZSwgYW5kIGN1cmwgYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhhdFxuIgoiICByZWZlcnJlciB0byBnZXQgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvXG4iCiIgIGZvb2wgb3IgdHJpY2sgc3R1cGlkIHNlcnZlcnMgb3IgQ0dJIHNjcmlwdHMgdGhhdCByZWx5IG9uIHRoYXQgaW5mb3JtYXRpb25cbiIKIiAgYmVpbmcgYXZhaWxhYmxlIG9yIGNvbnRhaW4gY2VydGFpbiBkYXRhLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWUgd3d3LmNvb2xzaXRlLmNvbSBodHRwOi8vd3d3LnNob3dtZS5jb20vXG4iCiJcbiIKIiAgTk9URTogVGhlIHJlZmVyZXIgZmllbGQgaXMgZGVmaW5lZCBpbiB0aGUgSFRUUCBzcGVjIHRvIGJlIGEgZnVsbCBVUkwuXG4iCiJcbiIKIlVTRVIgQUdFTlRcbiIKIlxuIgoiICBBIEhUVFAgcmVxdWVzdCBoYXMgdGhlIG9wdGlvbiB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicm93c2VyXG4iCiIgIHRoYXQgZ2VuZXJhdGVkIHRoZSByZXF1ZXN0LiBDdXJsIGFsbG93cyBpdCB0byBiZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRcbiIKIiAgbGluZS4gSXQgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gZm9vbCBvciB0cmljayBzdHVwaWQgc2VydmVycyBvciBDR0lcbiIKIiAgc2NyaXB0cyB0aGF0IG9ubHkgYWNjZXB0IGNlcnRhaW4gYnJvd3NlcnMuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICBjdXJsIC1BICdNb3ppbGxhLzMuMCAoV2luOTU7IEkpJyBodHRwOi8vd3d3Lm5hdGlvbnNiYW5rLmNvbS9cbiIKIlxuIgoiICBPdGhlciBjb21tb24gc3RyaW5nczpcbiIKIiAgICAnTW96aWxsYS8zLjAgKFdpbjk1OyBJKScgICAgIE5ldHNjYXBlIFZlcnNpb24gMyBmb3IgV2luZG93cyA5NVxuIgoiICAgICdNb3ppbGxhLzMuMDQgKFdpbjk1OyBVKScgICAgTmV0c2NhcGUgVmVyc2lvbiAzIGZvciBXaW5kb3dzIDk1XG4iCiIgICAgJ01vemlsbGEvMi4wMiAoT1MvMjsgVSknICAgICBOZXRzY2FwZSBWZXJzaW9uIDIgZm9yIE9TLzJcbiIKIiAgICAnTW96aWxsYS80LjA0IFtlbl0gKFgxMTsgVTsgQUlYIDQuMjsgTmF2KScgICAgICAgICAgIE5TIGZvciBBSVhcbiIKIiAgICAnTW96aWxsYS80LjA1IFtlbl0gKFgxMTsgVTsgTGludXggMi4wLjMyIGk1ODYpJyAgICAgIE5TIGZvciBMaW51eFxuIgoiXG4iCiIgIE5vdGUgdGhhdCBJbnRlcm5ldCBFeHBsb3JlciB0cmllcyBoYXJkIHRvIGJlIGNvbXBhdGlibGUgaW4gZXZlcnkgd2F5OlxuIgoiICAgICdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBXaW5kb3dzIDk1KScgICAgTVNJRSBmb3IgVzk1XG4iCiJcbiIKIiAgTW96aWxsYSBpcyBub3QgdGhlIG9ubHkgcG9zc2libGUgVXNlci1BZ2VudCBuYW1lOlxuIgoiICAgICdLb25xdWVyb3IvMS4wJyAgICAgICAgICAgICBLREUgRmlsZSBNYW5hZ2VyIGRlc2t0b3AgY2xpZW50XG4iCiIgICAgJ0x5bngvMi43LjEgbGlid3d3LUZNLzIuMTQnIEx5bnggY29tbWFuZCBsaW5lIGJyb3dzZXJcbiIKIlxuIgoiQ09PS0lFU1xuIgoiXG4iCiIgIENvb2tpZXMgYXJlIGdlbmVyYWxseSB1c2VkIGJ5IHdlYiBzZXJ2ZXJzIHRvIGtlZXAgc3RhdGUgaW5mb3JtYXRpb24gYXQgdGhlXG4iCiIgIGNsaWVudCdzIHNpZGUuIFRoZSBzZXJ2ZXIgc2V0cyBjb29raWVzIGJ5IHNlbmRpbmcgYSByZXNwb25zZSBsaW5lIGluIHRoZVxuIgoiICBoZWFkZXJzIHRoYXQgbG9va3MgbGlrZSAnU2V0LUNvb2tpZTogPGRhdGE+JyB3aGVyZSB0aGUgZGF0YSBwYXJ0IHRoZW5cbiIKIiAgdHlwaWNhbGx5IGNvbnRhaW5zIGEgc2V0IG9mIE5BTUU9VkFMVUUgcGFpcnMgKHNlcGFyYXRlZCBieSBzZW1pY29sb25zICc7J1xuIgoiICBsaWtlIFwiTkFNRTE9VkFMVUUxOyBOQU1FMj1WQUxVRTI7XCIpLiBUaGUgc2VydmVyIGNhbiBhbHNvIHNwZWNpZnkgZm9yIHdoYXRcbiIKIiAgcGF0aCB0aGUgXCJjb29raWVcIiBzaG91bGQgYmUgdXNlZCBmb3IgKGJ5IHNwZWNpZnlpbmcgXCJwYXRoPXZhbHVlXCIpLCB3aGVuIHRoZVxuIgoiICBjb29raWUgc2hvdWxkIGV4cGlyZSAoXCJleHBpcmU9REFURVwiKSwgZm9yIHdoYXQgZG9tYWluIHRvIHVzZSBpdFxuIgoiICAoXCJkb21haW49TkFNRVwiKSBhbmQgaWYgaXQgc2hvdWxkIGJlIHVzZWQgb24gc2VjdXJlIGNvbm5lY3Rpb25zIG9ubHlcbiIKIiAgKFwic2VjdXJlXCIpLlxuIgoiXG4iCiIgIElmIHlvdSd2ZSByZWNlaXZlZCBhIHBhZ2UgZnJvbSBhIHNlcnZlciB0aGF0IGNvbnRhaW5zIGEgaGVhZGVyIGxpa2U6XG4iCiIgICAgICAgIFNldC1Db29raWU6IHNlc3Npb25pZD1ib28xMjM7IHBhdGg9XCIvZm9vXCI7XG4iCiJcbiIKIiAgaXQgbWVhbnMgdGhlIHNlcnZlciB3YW50cyB0aGF0IGZpcnN0IHBhaXIgcGFzc2VkIG9uIHdoZW4gd2UgZ2V0IGFueXRoaW5nIGluXG4iCiIgIGEgcGF0aCBiZWdpbm5pbmcgd2l0aCBcIi9mb29cIi5cbiIKIlxuIgoiICBFeGFtcGxlLCBnZXQgYSBwYWdlIHRoYXQgd2FudHMgbXkgbmFtZSBwYXNzZWQgaW4gYSBjb29raWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBcIm5hbWU9RGFuaWVsXCIgd3d3LnNpbGx5cGFnZS5jb21cbiIKIlxuIgoiICBDdXJsIGFsc28gaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSBwcmV2aW91c2x5IHJlY2VpdmVkIGNvb2tpZXMgaW4gZm9sbG93aW5nXG4iCiIgIHNlc3Npb25zLiBJZiB5b3UgZ2V0IGNvb2tpZXMgZnJvbSBhIHNlcnZlciBhbmQgc3RvcmUgdGhlbSBpbiBhIGZpbGUgaW4gYVxuIgoiICBtYW5uZXIgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0tZHVtcC1oZWFkZXIgaGVhZGVycyB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICAuLi4geW91IGNhbiB0aGVuIGluIGEgc2Vjb25kIGNvbm5lY3QgdG8gdGhhdCAob3IgYW5vdGhlcikgc2l0ZSwgdXNlIHRoZVxuIgoiICBjb29raWVzIGZyb20gdGhlICdoZWFkZXJzJyBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBieSBzcGVjaWZ5aW5nIC1iIHlvdSBlbmFibGUgdGhlIFwiY29va2llIGF3YXJlbmVzc1wiIGFuZCB3aXRoIC1MXG4iCiIgIHlvdSBjYW4gbWFrZSBjdXJsIGZvbGxvdyBhIGxvY2F0aW9uOiAod2hpY2ggb2Z0ZW4gaXMgdXNlZCBpbiBjb21iaW5hdGlvblxuIgoiICB3aXRoIGNvb2tpZXMpLiBTbyB0aGF0IGlmIGEgc2l0ZSBzZW5kcyBjb29raWVzIGFuZCBhIGxvY2F0aW9uLCB5b3UgY2FuXG4iCiIgIHVzZSBhIG5vbi1leGlzdGluZyBmaWxlIHRvIHRyaWcgdGhlIGNvb2tpZSBhd2FyZW5lc3MgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1MIC1iIGVtcHR5LWZpbGUgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgVGhlIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gbXVzdCBiZSBmb3JtYXR0ZWQgdXNpbmcgcGxhaW4gSFRUUCBoZWFkZXJzIE9SXG4iCiIgIGFzIG5ldHNjYXBlJ3MgY29va2llIGZpbGUuIEN1cmwgd2lsbCBkZXRlcm1pbmUgd2hhdCBraW5kIGl0IGlzIGJhc2VkIG9uIHRoZVxuIgoiICBmaWxlIGNvbnRlbnRzLlxuIgoiXG4iCiJQUk9HUkVTUyBNRVRFUlxuIgoiXG4iCiIgIFRoZSBwcm9ncmVzcyBtZXRlciBleGlzdHMgdG8gc2hvdyBhIHVzZXIgdGhhdCBzb21ldGhpbmcgYWN0dWFsbHkgaXNcbiIKIiAgaGFwcGVuaW5nLiBUaGUgZGlmZmVyZW50IGZpZWxkcyBpbiB0aGUgb3V0cHV0IGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOlxuIgoiXG4iCiIgICUgVG90YWwgICAgJSBSZWNlaXZlZCAlIFhmZXJkICBBdmVyYWdlIFNwZWVkICAgICAgICAgIFRpbWUgICAgICAgICAgICAgQ3Vyci5cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERsb2FkICBVcGxvYWQgVG90YWwgICAgQ3VycmVudCAgTGVmdCAgICBTcGVlZFxuIgoiICAwICAxNTFNICAgIDAgMzg2MDggICAgMCAgICAgMCAgIDk0MDYgICAgICAwICA0OjQxOjQzICAwOjAwOjA0ICA0OjQxOjM5ICA5Mjg3XG4iCiJcbiIKIiAgRnJvbSBsZWZ0LXRvLXJpZ2h0OlxuIgoiICAgJSAgICAgICAgICAgICAtIHBlcmNlbnRhZ2UgY29tcGxldGVkIG9mIHRoZSB3aG9sZSB0cmFuc2ZlclxuIgoiICAgVG90YWwgICAgICAgICAtIHRvdGFsIHNpemUgb2YgdGhlIHdob2xlIGV4cGVjdGVkIHRyYW5zZmVyXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIGRvd25sb2FkXG4iCiIgICBSZWNlaXZlZCAgICAgIC0gY3VycmVudGx5IGRvd25sb2FkZWQgYW1vdW50IG9mIGJ5dGVzXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHVwbG9hZFxuIgoiICAgWGZlcmQgICAgICAgICAtIGN1cnJlbnRseSB1cGxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIERsb2FkICAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIFVwbG9hZCAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBUaW1lIFRvdGFsICAgIC0gZXhwZWN0ZWQgdGltZSB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uXG4iCiIgICBUaW1lIEN1cnJlbnQgIC0gdGltZSBwYXNzZWQgc2luY2UgdGhlIGludm9rZVxuIgoiICAgVGltZSBMZWZ0ICAgICAtIGV4cGVjdGVkIHRpbWUgbGVmdCB0byBjb21wbGV0ZXRpb25cbiIKIiAgIEN1cnIuU3BlZWQgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCB0aGUgbGFzdCA1IHNlY29uZHMgKHRoZSBmaXJzdFxuIgoiICAgICAgICAgICAgICAgICAgIDUgc2Vjb25kcyBvZiBhIHRyYW5zZmVyIGlzIGJhc2VkIG9uIGxlc3MgdGltZSBvZiBjb3Vyc2UuKVxuIgoiXG4iCiIgIFRoZSAtIyBvcHRpb24gd2lsbCBkaXNwbGF5IGEgdG90YWxseSBkaWZmZXJlbnQgcHJvZ3Jlc3MgYmFyIHRoYXQgZG9lc24ndFxuIgoiICBuZWVkIG11Y2ggZXhwbGFuYXRpb24hXG4iCiJcbiIKIlNQRUVEIExJTUlUXG4iCiJcbiIKIiAgQ3VybCBvZmZlcnMgdGhlIHVzZXIgdG8gc2V0IGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRyYW5zZmVyIHNwZWVkIHRoYXQgbXVzdFxuIgoiICBiZSBtZXQgdG8gbGV0IHRoZSB0cmFuc2ZlciBrZWVwIGdvaW5nLiBCeSB1c2luZyB0aGUgc3dpdGNoIC15IGFuZCAtWSB5b3VcbiIKIiAgY2FuIG1ha2UgY3VybCBhYm9ydCB0cmFuc2ZlcnMgaWYgdGhlIHRyYW5zZmVyIHNwZWVkIGRvZXNuJ3QgZXhjZWVkIHlvdXJcbiIKIiAgZ2l2ZW4gbG93ZXN0IGxpbWl0IGZvciBhIHNwZWNpZmllZCB0aW1lLlxuIgoiXG4iCiIgIFRvIGxldCBjdXJsIGFiYW5kb24gZG93bmxvYWRpbmcgdGhpcyBwYWdlIGlmIGl0cyBzbG93ZXIgdGhhbiAzMDAwIGJ5dGVzIHBlclxuIgoiICBzZWNvbmQgZm9yIDEgbWludXRlLCBydW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIHZlcnkgd2VsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIG92ZXJhbGwgdGltZSBsaW1pdCwgc29cbiIKIiAgdGhhdCB0aGUgYWJvdmUgb3BlcmF0aW9pbiBtdXN0IGJlIGNvbXBsZXRlZCBpbiB3aG9sZSB3aXRoaW4gMzAgbWludXRlczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1tIDE4MDAgLXkgMzAwMCAtWSA2MCB3d3cuZmFyLWF3YXktc2l0ZS5jb21cbiIKIlxuIgoiQ09ORklHIEZJTEVcbiIKIlxuIgoiICBDdXJsIGF1dG9tYXRpY2FsbHkgdHJpZXMgdG8gcmVhZCB0aGUgLmN1cmxyYyBmaWxlIChvciBfY3VybHJjIGZpbGUgb24gd2luMzJcbiIKIiAgc3lzdGVtcykgZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyIG9uIHN0YXJ0dXAuXG4iCiJcbiIKIiAgVGhlIGNvbmZpZyBmaWxlIGNvdWxkIGJlIG1hZGUgdXAgd2l0aCBub3JtYWwgY29tbWFuZCBsaW5lIHN3aXRjaGVzLCBidXQgeW91XG4iCiIgIGNhbiBhbHNvIHNwZWNpZnkgdGhlIGxvbmcgb3B0aW9ucyB3aXRob3V0IHRoZSBkYXNoZXMgdG8gbWFrZSBpdCBtb3JlXG4iCiIgIHJlYWRhYmxlLiBZb3UgY2FuIHNlcGFyYXRlIHRoZSBvcHRpb25zIGFuZCB0aGUgcGFyYW1ldGVyIHdpdGggc3BhY2VzLCBvclxuIgoiICB3aXRoID0gb3IgOi4gQ29tbWVudHMgY2FuIGJlIHVzZWQgd2l0aGluIHRoZSBmaWxlLiBJZiB0aGUgZmlyc3QgbGV0dGVyIG9uIGFcbiIKIiAgbGluZSBpcyBhICcjJy1sZXR0ZXIgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgaXMgdHJlYXRlZCBhcyBhIGNvbW1lbnQuXG4iCiJcbiIKIiAgSWYgeW91IHdhbnQgdGhlIHBhcmFtZXRlciB0byBjb250YWluIHNwYWNlcywgeW91IG11c3QgaW5jbG9zZSB0aGUgZW50aXJlXG4iCiIgIHBhcmFtZXRlciB3aXRoaW4gZG91YmxlIHF1b3RlcyAoXCIpLiBXaXRoaW4gdGhvc2UgcXVvdGVzLCB5b3Ugc3BlY2lmeSBhXG4iCiIgIHF1b3RlIGFzIFxcXCIuXG4iCiJcbiIKIiAgTk9URTogWW91IG11c3Qgc3BlY2lmeSBvcHRpb25zIGFuZCB0aGVpciBhcmd1bWVudHMgb24gdGhlIHNhbWUgbGluZS5cbiIKIlxuIgoiICBFeGFtcGxlLCBzZXQgZGVmYXVsdCB0aW1lIG91dCBhbmQgcHJveHkgaW4gYSBjb25maWcgZmlsZTpcbiIKIlxuIgoiICAgICAgICAjIFdlIHdhbnQgYSAzMCBtaW51dGUgdGltZW91dDpcbiIKIiAgICAgICAgLW0gMTgwMFxuIgoiICAgICAgICAjIC4uLiBhbmQgd2UgdXNlIGEgcHJveHkgZm9yIGFsbCBhY2Nlc3NlczpcbiIKIiAgICAgICAgcHJveHkgPSBwcm94eS5vdXIuZG9tYWluLmNvbTo4MDgwXG4iCiJcbiIKIiAgV2hpdGUgc3BhY2VzIEFSRSBzaWduaWZpY2FudCBhdCB0aGUgZW5kIG9mIGxpbmVzLCBidXQgYWxsIHdoaXRlIHNwYWNlc1xuIgoiICBsZWFkaW5nIHVwIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIGVhY2ggbGluZSBhcmUgaWdub3JlZC5cbiIKIlxuIgoiICBQcmV2ZW50IGN1cmwgZnJvbSByZWFkaW5nIHRoZSBkZWZhdWx0IGZpbGUgYnkgdXNpbmcgLXEgYXMgdGhlIGZpcnN0IGNvbW1hbmRcbiIKIiAgbGluZSBwYXJhbWV0ZXIsIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtcSB3d3cudGhhdHNpdGUuY29tXG4iCiJcbiIKIiAgRm9yY2UgY3VybCB0byBnZXQgYW5kIGRpc3BsYXkgYSBsb2NhbCBoZWxwIHBhZ2UgaW4gY2FzZSBpdCBpcyBpbnZva2VkXG4iCiIgIHdpdGhvdXQgVVJMIGJ5IG1ha2luZyBhIGNvbmZpZyBmaWxlIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgIyBkZWZhdWx0IHVybCB0byBnZXRcbiIKIiAgICAgICAgdXJsID0gXCJodHRwOi8vaGVscC53aXRoLmN1cmwuY29tL2N1cmxoZWxwLmh0bWxcIlxuIgoiXG4iCiIgIFlvdSBjYW4gc3BlY2lmeSBhbm90aGVyIGNvbmZpZyBmaWxlIHRvIGJlIHJlYWQgYnkgdXNpbmcgdGhlIC1LLy0tY29uZmlnXG4iCiIgIGZsYWcuIElmIHlvdSBzZXQgY29uZmlnIGZpbGUgbmFtZSB0byBcIi1cIiBpdCdsbCByZWFkIHRoZSBjb25maWcgZnJvbSBzdGRpbixcbiIKIiAgd2hpY2ggY2FuIGJlIGhhbmR5IGlmIHlvdSB3YW50IHRvIGhpZGUgb3B0aW9ucyBmcm9tIGJlaW5nIHZpc2libGUgaW4gcHJvY2Vzc1xuIgoiICB0YWJsZXMgZXRjOlxuIgoiXG4iCiIgICAgICAgIGVjaG8gXCJ1c2VyID0gdXNlcjpwYXNzd2RcIiB8IGN1cmwgLUsgLSBodHRwOi8vdGhhdC5zZWNyZXQuc2l0ZS5jb21cbiIKIlxuIgoiRVhUUkEgSEVBREVSU1xuIgoiXG4iCiIgIFdoZW4gdXNpbmcgY3VybCBpbiB5b3VyIG93biB2ZXJ5IHNwZWNpYWwgcHJvZ3JhbXMsIHlvdSBtYXkgZW5kIHVwIG5lZWRpbmdcbiIKIiAgdG8gcGFzcyBvbiB5b3VyIG93biBjdXN0b20gaGVhZGVycyB3aGVuIGdldHRpbmcgYSB3ZWIgcGFnZS4gWW91IGNhbiBkb1xuIgoiICB0aGlzIGJ5IHVzaW5nIHRoZSAtSCBmbGFnLlxuIgoiXG4iCiIgIEV4YW1wbGUsIHNlbmQgdGhlIGhlYWRlciBcIlgteW91LWFuZC1tZTogeWVzXCIgdG8gdGhlIHNlcnZlciB3aGVuIGdldHRpbmcgYVxuIgoiICBwYWdlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUggXCJYLXlvdS1hbmQtbWU6IHllc1wiIHd3dy5sb3ZlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIGFsc28gYmUgdXNlZnVsIGluIGNhc2UgeW91IHdhbnQgY3VybCB0byBzZW5kIGEgZGlmZmVyZW50IHRleHQgaW5cbiIKIiAgYSBoZWFkZXIgdGhhbiBpdCBub3JtYWxseSBkb2VzLiBUaGUgLUggaGVhZGVyIHlvdSBzcGVjaWZ5IHRoZW4gcmVwbGFjZXMgdGhlXG4iCiIgIGhlYWRlciBjdXJsIHdvdWxkIG5vcm1hbGx5IHNlbmQuXG4iCiJcbiIKIkZUUCBhbmQgUEFUSCBOQU1FU1xuIgoiXG4iCiIgIERvIG5vdGUgdGhhdCB3aGVuIGdldHRpbmcgZmlsZXMgd2l0aCB0aGUgZnRwOi8vIFVSTCwgdGhlIGdpdmVuIHBhdGggaXNcbiIKIiAgcmVsYXRpdmUgdGhlIGRpcmVjdG9yeSB5b3UgZW50ZXIuIFRvIGdldCB0aGUgZmlsZSAnUkVBRE1FJyBmcm9tIHlvdXIgaG9tZVxuIgoiICBkaXJlY3RvcnkgYXQgeW91ciBmdHAgc2l0ZSwgZG86XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly91c2VyOnBhc3N3ZEBteS5zaXRlLmNvbS9SRUFETUVcbiIKIlxuIgoiICBCdXQgaWYgeW91IHdhbnQgdGhlIFJFQURNRSBmaWxlIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoYXQgdmVyeSBzYW1lXG4iCiIgIHNpdGUsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGFic29sdXRlIGZpbGUgbmFtZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL3VzZXI6cGFzc3dkQG15LnNpdGUuY29tLy9SRUFETUVcbiIKIlxuIgoiICAoSS5lIHdpdGggYW4gZXh0cmEgc2xhc2ggaW4gZnJvbnQgb2YgdGhlIGZpbGUgbmFtZS4pXG4iCiJcbiIKIkZUUCBhbmQgZmlyZXdhbGxzXG4iCiJcbiIKIiAgVGhlIEZUUCBwcm90b2NvbCByZXF1aXJlcyBvbmUgb2YgdGhlIGludm9sdmVkIHBhcnRpZXMgdG8gb3BlbiBhIHNlY29uZFxuIgoiICBjb25uY3Rpb24gYXMgc29vbiBhcyBkYXRhIGlzIGFib3V0IHRvIGdldCB0cmFuc2ZlcmVkLiBUaGVyZSBhcmUgdHdvIHdheXMgdG9cbiIKIiAgZG8gdGhpcy5cbiIKIlxuIgoiICBUaGUgZGVmYXVsdCB3YXkgZm9yIGN1cmwgaXMgdG8gaXNzdWUgdGhlIFBBU1YgY29tbWFuZCB3aGljaCBjYXVzZXMgdGhlXG4iCiIgIHNlcnZlciB0byBvcGVuIGFub3RoZXIgcG9ydCBhbmQgYXdhaXQgYW5vdGhlciBjb25uZWN0aW9uIHBlcmZvcm1lZCBieSB0aGVcbiIKIiAgY2xpZW50LiBUaGlzIGlzIGdvb2QgaWYgdGhlIGNsaWVudCBpcyBiZWhpbmQgYSBmaXJld2FsbCB0aGF0IGRvbid0IGFsbG93XG4iCiIgIGluY29taW5nIGNvbm5lY3Rpb25zLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiIgIElmIHRoZSBzZXJ2ZXIgZm9yIGV4YW1wbGUsIGlzIGJlaGluZCBhIGZpcmV3YWxsIHRoYXQgZG9uJ3QgYWxsb3cgY29ubmVjdGlvbnNcbiIKIiAgb24gb3RoZXIgcG9ydHMgdGhhbiAyMSAob3IgaWYgaXQganVzdCBkb2Vzbid0IHN1cHBvcnQgdGhlIFBBU1YgY29tbWFuZCksIHRoZVxuIgoiICBvdGhlciB3YXkgdG8gZG8gaXQgaXMgdG8gdXNlIHRoZSBQT1JUIGNvbW1hbmQgYW5kIGluc3RydWN0IHRoZSBzZXJ2ZXIgdG9cbiIKIiAgY29ubmVjdCB0byB0aGUgY2xpZW50IG9uIHRoZSBnaXZlbiAoYXMgcGFyYW1ldGVycyB0byB0aGUgUE9SVCBjb21tYW5kKSBJUFxuIgoiICBudW1iZXIgYW5kIHBvcnQuXG4iCiJcbiIKIiAgVGhlIC1QIGZsYWcgdG8gY3VybCBzdXBwb3J0cyBhIGZldyBkaWZmZXJlbnQgb3B0aW9ucy4gWW91ciBtYWNoaW5lIG1heSBoYXZlXG4iCiIgIHNldmVyYWwgSVAtYWRkcmVzc2VzIGFuZC9vciBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGN1cmwgYWxsb3dzIHlvdSB0byBzZWxlY3RcbiIKIiAgd2hpY2ggb2YgdGhlbSB0byB1c2UuIERlZmF1bHQgYWRkcmVzcyBjYW4gYWxzbyBiZSB1c2VkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgLSBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgdGhlIElQIGFkZHJlc3Mgb2Ygb3VyICdsZTAnIGludGVyZmFjZSAodGhpcyBkb2VzXG4iCiIgIG5vdCB3b3JrIG9uIHdpbmRvd3MpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgbGUwIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBEb3dubG9hZCB3aXRoIFBPUlQgYnV0IHVzZSAxOTIuMTY4LjAuMTAgYXMgb3VyIElQIGFkZHJlc3MgdG8gdXNlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgMTkyLjE2OC4wLjEwIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiTkVUV09SSyBJTlRFUkZBQ0VcbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBmcm9tIGEgc2VydmVyIHVzaW5nIGEgc3BlY2lmaWVkIHBvcnQgZm9yIHRoZSBpbnRlcmZhY2U6XG4iCiJcbiIKIgljdXJsIC0taW50ZXJmYWNlIGV0aDA6MSBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBvclxuIgoiXG4iCiIJY3VybCAtLWludGVyZmFjZSAxOTIuMTY4LjEuMTAgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIkhUVFBTXG4iCiJcbiIKIiAgU2VjdXJlIEhUVFAgcmVxdWlyZXMgU1NMIGxpYnJhcmllcyB0byBiZSBpbnN0YWxsZWQgYW5kIHVzZWQgd2hlbiBjdXJsIGlzXG4iCiIgIGJ1aWx0LiBJZiB0aGF0IGlzIGRvbmUsIGN1cmwgaXMgY2FwYWJsZSBvZiByZXRyaWV2aW5nIGFuZCBwb3N0aW5nIGRvY3VtZW50c1xuIgoiICB1c2luZyB0aGUgSFRUUFMgcHJvY290b2wuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHBzOi8vd3d3LnNlY3VyZS1zaXRlLmNvbVxuIgoiXG4iCiIgIEN1cmwgaXMgYWxzbyBjYXBhYmxlIG9mIHVzaW5nIHlvdXIgcGVyc29uYWwgY2VydGlmaWNhdGVzIHRvIGdldC9wb3N0IGZpbGVzXG4iCik7CiBwdXRzKAoiICBmcm9tIHNpdGVzIHRoYXQgcmVxdWlyZSB2YWxpZCBjZXJ0aWZpY2F0ZXMuIFRoZSBvbmx5IGRyYXdiYWNrIGlzIHRoYXQgdGhlXG4iCiIgIGNlcnRpZmljYXRlIG5lZWRzIHRvIGJlIGluIFBFTS1mb3JtYXQuIFBFTSBpcyBhIHN0YW5kYXJkIGFuZCBvcGVuIGZvcm1hdCB0b1xuIgoiICBzdG9yZSBjZXJ0aWZpY2F0ZXMgd2l0aCwgYnV0IGl0IGlzIG5vdCB1c2VkIGJ5IHRoZSBtb3N0IGNvbW1vbmx5IHVzZWRcbiIKIiAgYnJvd3NlcnMgKE5ldHNjYXBlIGFuZCBNU0VJIGJvdGggdXNlIHRoZSBzbyBjYWxsZWQgUEtDUyMxMiBmb3JtYXQpLiBJZiB5b3VcbiIKIiAgd2FudCBjdXJsIHRvIHVzZSB0aGUgY2VydGlmaWNhdGVzIHlvdSB1c2Ugd2l0aCB5b3VyIChmYXZvdXJpdGUpIGJyb3dzZXIsIHlvdVxuIgoiICBtYXkgbmVlZCB0byBkb3dubG9hZC9jb21waWxlIGEgY29udmVydGVyIHRoYXQgY2FuIGNvbnZlcnQgeW91ciBicm93c2VyJ3NcbiIKIiAgZm9ybWF0dGVkIGNlcnRpZmljYXRlcyB0byBQRU0gZm9ybWF0dGVkIG9uZXMuIFRoaXMga2luZCBvZiBjb252ZXJ0ZXIgaXNcbiIKIiAgaW5jbHVkZWQgaW4gcmVjZW50IHZlcnNpb25zIG9mIE9wZW5TU0wsIGFuZCBmb3Igb2xkZXIgdmVyc2lvbnMgRHIgU3RlcGhlblxuIgoiICBOLiBIZW5zb24gaGFzIHdyaXR0ZW4gYSBwYXRjaCBmb3IgU1NMZWF5IHRoYXQgYWRkcyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFlvdVxuIgoiICBjYW4gZ2V0IGhpcyBwYXRjaCAodGhhdCByZXF1aXJlcyBhbiBTU0xlYXkgaW5zdGFsbGF0aW9uKSBmcm9tIGhpcyBzaXRlIGF0OlxuIgoiICBodHRwOi8vd3d3LmRyaC1jb25zdWx0YW5jeS5kZW1vbi5jby51ay9cbiIKIlxuIgoiICBFeGFtcGxlIG9uIGhvdyB0byBhdXRvbWF0aWNhbGx5IHJldHJpZXZlIGEgZG9jdW1lbnQgdXNpbmcgYSBjZXJ0aWZpY2F0ZSB3aXRoXG4iCiIgIGEgcGVyc29uYWwgcGFzc3dvcmQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtRSAvcGF0aC90by9jZXJ0LnBlbTpwYXNzd29yZCBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBJZiB5b3UgbmVnbGVjdCB0byBzcGVjaWZ5IHRoZSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB5b3Ugd2lsbCBiZVxuIgoiICBwcm9tcHRlZCBmb3IgdGhlIGNvcnJlY3QgcGFzc3dvcmQgYmVmb3JlIGFueSBkYXRhIGNhbiBiZSByZWNlaXZlZC5cbiIKIlxuIgoiICBNYW55IG9sZGVyIFNTTC1zZXJ2ZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBTU0x2MyBvciBUTFMsIHRoYXQgbmV3ZXIgdmVyc2lvbnNcbiIKIiAgb2YgT3BlblNTTCBldGMgaXMgdXNpbmcsIHRoZXJlZm9yZSBpdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIHNwZWNpZnkgd2hhdFxuIgoiICBTU0wtdmVyc2lvbiBjdXJsIHNob3VsZCB1c2UuIFVzZSAtMyBvciAtMiB0byBzcGVjaWZ5IHRoYXQgZXhhY3QgU1NMIHZlcnNpb25cbiIKIiAgdG8gdXNlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLTIgaHR0cHM6Ly9zZWN1cmUuc2l0ZS5jb20vXG4iCiJcbiIKIiAgT3RoZXJ3aXNlLCBjdXJsIHdpbGwgZmlyc3QgYXR0ZW1wdCB0byB1c2UgdjMgYW5kIHRoZW4gdjIuXG4iCiJcbiIKIiAgVG8gdXNlIE9wZW5TU0wgdG8gY29udmVydCB5b3VyIGZhdm91cml0ZSBicm93c2VyJ3MgY2VydGlmaWNhdGUgaW50byBhIFBFTVxuIgoiICBmb3JtYXR0ZWQgb25lIHRoYXQgY3VybCBjYW4gdXNlLCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzIChhc3N1bWluZyBuZXRzY2FwZSxcbiIKIiAgYnV0IElFIGlzIGxpa2VseSB0byB3b3JrIHNpbWlsYXJseSk6XG4iCiJcbiIKIiAgICBZb3Ugc3RhcnQgd2l0aCBoaXR0aW5nIHRoZSAnc2VjdXJpdHknIG1lbnUgYnV0dG9uIGluIG5ldHNjYXBlLiBcbiIKIlxuIgoiICAgIFNlbGVjdCAnY2VydGlmaWNhdGVzLT55b3VycycgYW5kIHRoZW4gcGljayBhIGNlcnRpZmljYXRlIGluIHRoZSBsaXN0IFxuIgoiXG4iCiIgICAgUHJlc3MgdGhlICdleHBvcnQnIGJ1dHRvbiBcbiIKIlxuIgoiICAgIGVudGVyIHlvdXIgUElOIGNvZGUgZm9yIHRoZSBjZXJ0cyBcbiIKIlxuIgoiICAgIHNlbGVjdCBhIHByb3BlciBwbGFjZSB0byBzYXZlIGl0IFxuIgoiXG4iCiIgICAgUnVuIHRoZSAnb3BlbnNzbCcgYXBwbGljYXRpb24gdG8gY29udmVydCB0aGUgY2VydGlmaWNhdGUuIElmIHlvdSBjZCB0byB0aGVcbiIKIiAgICBvcGVuc3NsIGluc3RhbGxhdGlvbiwgeW91IGNhbiBkbyBpdCBsaWtlOlxuIgoiXG4iCiIgICAgICMgLi9hcHBzL29wZW5zc2wgcGtjczEyIC1jZXJ0ZmlsZSBbZmlsZSB5b3Ugc2F2ZWRdIC1vdXQgW1BFTWZpbGVdXG4iCiJcbiIKIlxuIgoiUkVTVU1JTkcgRklMRSBUUkFOU0ZFUlNcbiIKIlxuIgoiIFRvIGNvbnRpbnVlIGEgZmlsZSB0cmFuc2ZlciB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBhYm9ydGVkLCBjdXJsIHN1cHBvcnRzXG4iCiIgcmVzdW1lIG9uIGh0dHAocykgZG93bmxvYWRzIGFzIHdlbGwgYXMgZnRwIHVwbG9hZHMgYW5kIGRvd25sb2Fkcy5cbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtbyBmaWxlIGZ0cDovL2Z0cC5zZXJ2ZXIuY29tL3BhdGgvZmlsZVxuIgoiXG4iCiIgQ29udGludWUgdXBsb2FkaW5nIGEgZG9jdW1lbnQoKjEpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLVQgZmlsZSBmdHA6Ly9mdHAuc2VydmVyLmNvbS9wYXRoL2ZpbGVcbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQgZnJvbSBhIHdlYiBzZXJ2ZXIoKjIpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLW8gZmlsZSBodHRwOi8vd3d3LnNlcnZlci5jb20vXG4iCiJcbiIKIiAoKjEpID0gVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBmdHAgc2VydmVyIHN1cHBvcnRzIHRoZSBub24tc3RhbmRhcmQgY29tbWFuZFxuIgoiICAgICAgICBTSVpFLiBJZiBpdCBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiIgKCoyKSA9IFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgd2Igc2VydmVyIHN1cHBvcnRzIGF0IGxlYXN0IEhUVFAvMS4xLiBJZiBpdFxuIgoiICAgICAgICBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiJUSU1FIENPTkRJVElPTlNcbiIKIlxuIgoiIEhUVFAgYWxsb3dzIGEgY2xpZW50IHRvIHNwZWNpZnkgYSB0aW1lIGNvbmRpdGlvbiBmb3IgdGhlIGRvY3VtZW50IGl0XG4iCiIgcmVxdWVzdHMuIEl0IGlzIElmLU1vZGlmaWVkLVNpbmNlIG9yIElmLVVubW9kaWZpZWQtU2luY2UuIEN1cmwgYWxsb3cgeW91IHRvXG4iCiIgc3BlY2lmeSB0aGVtIHdpdGggdGhlIC16Ly0tdGltZS1jb25kIGZsYWcuXG4iCiJcbiIKIiBGb3IgZXhhbXBsZSwgeW91IGNhbiBlYXNpbHkgbWFrZSBhIGRvd25sb2FkIHRoYXQgb25seSBnZXRzIHBlcmZvcm1lZCBpZiB0aGVcbiIKIiByZW1vdGUgZmlsZSBpcyBuZXdlciB0aGFuIGEgbG9jYWwgY29weS4gSXQgd291bGQgYmUgbWFkZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIE9yIHlvdSBjYW4gZG93bmxvYWQgYSBmaWxlIG9ubHkgaWYgdGhlIGxvY2FsIGZpbGUgaXMgbmV3ZXIgdGhhbiB0aGUgcmVtb3RlXG4iCiIgb25lLiBEbyB0aGlzIGJ5IHByZXBlbmRpbmcgdGhlIGRhdGUgc3RyaW5nIHdpdGggYSAnLScsIGFzIGluOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogLWxvY2FsLmh0bWwgaHR0cDovL3JlbW90ZS5zZXJ2ZXIuY29tL3JlbW90ZS5odG1sXG4iCiJcbiIKIiBZb3UgY2FuIHNwZWNpZnkgYSBcImZyZWUgdGV4dFwiIGRhdGUgYXMgY29uZGl0aW9uLiBUZWxsIGN1cmwgdG8gb25seSBkb3dubG9hZFxuIgoiIHRoZSBmaWxlIGlmIGl0IHdhcyB1cGRhdGVkIHNpbmNlIHllc3RlcmRheTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC16IHllc3RlcmRheSBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIEN1cmwgd2lsbCB0aGVuIGFjY2VwdCBhIHdpZGUgcmFuZ2Ugb2YgZGF0ZSBmb3JtYXRzLiBZb3UgYWx3YXlzIG1ha2UgdGhlIGRhdGVcbiIKIiBjaGVjayB0aGUgb3RoZXIgd2F5IGFyb3VuZCBieSBwcmVwZW5kaW5nIGl0IHdpdGggYSBkYXNoICctJy5cbiIKIlxuIgoiRElDVFxuIgoiXG4iCiIgIEZvciBmdW4gdHJ5XG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvbTpjdXJsXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6aGVpc2VuYnVnOmphcmdvblxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9kOmRhbmllbDp3ZWIxOTEzXG4iCiJcbiIKIiAgQWxpYXNlcyBmb3IgJ20nIGFyZSAnbWF0Y2gnIGFuZCAnZmluZCcsIGFuZCBhbGlhc2VzIGZvciAnZCcgYXJlICdkZWZpbmUnXG4iCiIgIGFuZCAnbG9va3VwJy4gRm9yIGV4YW1wbGUsXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZmluZDpjdXJsXG4iCiJcbiIKIiAgQ29tbWFuZHMgdGhhdCBicmVhayB0aGUgVVJMIGRlc2NyaXB0aW9uIG9mIHRoZSBSRkMgKGJ1dCBub3QgdGhlIERJQ1RcbiIKIiAgcHJvdG9jb2wpIGFyZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL3Nob3c6ZGJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpzdHJhdFxuIgoiXG4iCiIgIEF1dGhlbnRpY2F0aW9uIGlzIHN0aWxsIG1pc3NpbmcgKGJ1dCB0aGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgUkZDKVxuIgoiXG4iCiJMREFQXG4iCiJcbiIKIiAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBPcGVuTERBUCBsaWJyYXJ5LCBjdXJsIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBpdFxuIgoiICBhbmQgb2ZmZXIgbGRhcDovLyBzdXBwb3J0LlxuIgoiXG4iCiIgIExEQVAgaXMgYSBjb21wbGV4IHRoaW5nIGFuZCB3cml0aW5nIGFuIExEQVAgcXVlcnkgaXMgbm90IGFuIGVhc3kgdGFzay4gSSBkb1xuIgoiICBhZHZpY2UgeW91IHRvIGRpZyB1cCB0aGUgc3ludGF4IGRlc2NyaXB0aW9uIGZvciB0aGF0IGVsc2V3aGVyZSwgUkZDIDE5NTkgaWZcbiIKIiAgbm8gb3RoZXIgcGxhY2UgaXMgYmV0dGVyLlxuIgoiXG4iCiIgIFRvIHNob3cgeW91IGFuIGV4YW1wbGUsIHRoaXMgaXMgbm93IEkgY2FuIGdldCBhbGwgcGVvcGxlIGZyb20gbXkgbG9jYWwgTERBUFxuIgoiICBzZXJ2ZXIgdGhhdCBoYXMgYSBjZXJ0YWluIHN1Yi1kb21haW4gaW4gdGhlaXIgZW1haWwgYWRkcmVzczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1CIFwibGRhcDovL2xkYXAuZnJvbnRlYy5zZS9vPWZyb250ZWM/P3N1Yj9tYWlsPSpzdGguZnJvbnRlYy5zZVwiXG4iCiJcbiIKIiAgSWYgSSB3YW50IHRoZSBzYW1lIGluZm8gaW4gSFRNTCBmb3JtYXQsIEkgY2FuIGdldCBpdCBieSBub3QgdXNpbmcgdGhlIC1CXG4iCiIgIChlbmZvcmNlIEFTQ0lJKSBmbGFnLlxuIgoiXG4iCiJFTlZJUk9OTUVOVCBWQVJJQUJMRVNcbiIKIlxuIgoiICBDdXJsIHJlYWRzIGFuZCB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczpcbiIKIlxuIgoiICAgICAgICBIVFRQX1BST1hZLCBIVFRQU19QUk9YWSwgRlRQX1BST1hZLCBHT1BIRVJfUFJPWFlcbiIKIlxuIgoiICBUaGV5IHNob3VsZCBiZSBzZXQgZm9yIHByb3RvY29sLXNwZWNpZmljIHByb3hpZXMuIEdlbmVyYWwgcHJveHkgc2hvdWxkIGJlXG4iCiIgIHNldCB3aXRoXG4iCiIgICAgICAgIFxuIgoiICAgICAgICBBTExfUFJPWFlcbiIKIlxuIgoiICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkgaXNcbiIKIiAgc2V0IGluIChvbmx5IGFuIGFzdGVyaXNrLCAnKicgbWF0Y2hlcyBhbGwgaG9zdHMpXG4iCiJcbiIKIiAgICAgICAgTk9fUFJPWFlcbiIKIlxuIgoiICBJZiBhIHRhaWwgc3Vic3RyaW5nIG9mIHRoZSBkb21haW4tcGF0aCBmb3IgYSBob3N0IG1hdGNoZXMgb25lIG9mIHRoZXNlXG4iCiIgIHN0cmluZ3MsIHRyYW5zYWN0aW9ucyB3aXRoIHRoYXQgbm9kZSB3aWxsIG5vdCBiZSBwcm94aWVkLlxuIgoiXG4iCiJcbiIKIiAgVGhlIHVzYWdlIG9mIHRoZSAteC8tLXByb3h5IGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4iCiJcbiIKIk5FVFJDXG4iCiJcbiIKIiAgVW5peCBpbnRyb2R1Y2VkIHRoZSAubmV0cmMgY29uY2VwdCBhIGxvbmcgdGltZSBhZ28uIEl0IGlzIGEgd2F5IGZvciBhIHVzZXJcbiIKIiAgdG8gc3BlY2lmeSBuYW1lIGFuZCBwYXNzd29yZCBmb3IgY29tbW9ubHkgdmlzaXRlZCBmdHAgc2l0ZXMgaW4gYSBmaWxlIHNvXG4iCiIgIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gdHlwZSB0aGVtIGluIGVhY2ggdGltZSB5b3UgdmlzaXQgdGhvc2Ugc2l0ZXMuIFlvdVxuIgoiICByZWFsaXplIHRoaXMgaXMgYSBiaWcgc2VjdXJpdHkgcmlzayBpZiBzb21lb25lIGVsc2UgZ2V0cyBob2xkIG9mIHlvdXJcbiIKIiAgcGFzc3dvcmRzLCBzbyB0aGVyZWZvciBtb3N0IHVuaXggcHJvZ3JhbXMgd29uJ3QgcmVhZCB0aGlzIGZpbGUgdW5sZXNzIGl0IGlzXG4iCiIgIG9ubHkgcmVhZGFibGUgYnkgeW91cnNlbGYgKGN1cmwgZG9lc24ndCBjYXJlIHRob3VnaCkuXG4iCiJcbiIKIiAgQ3VybCBzdXBwb3J0cyAubmV0cmMgZmlsZXMgaWYgdG9sZCBzbyAodXNpbmcgdGhlIC1uLy0tbmV0cmMgb3B0aW9uKS4gVGhpcyBpc1xuIgoiICBub3QgcmVzdHJpY3RlZCB0byBvbmx5IGZ0cCwgYnV0IGN1cmwgY2FuIHVzZSBpdCBmb3IgYWxsIHByb3RvY29scyB3aGVyZVxuIgoiICBhdXRoZW50aWNhdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiIgIEEgdmVyeSBzaW1wbGUgLm5ldHJjIGZpbGUgY291bGQgbG9vayBzb21ldGhpbmcgbGlrZTpcbiIKIlxuIgoiICAgICAgICBtYWNoaW5lIGN1cmwuaGF4eC5zZSBsb2dpbiBpYW1kYW5pZWwgcGFzc3dvcmQgbXlzZWNyZXRcbiIKIlxuIgoiQ1VTVE9NIE9VVFBVVFxuIgoiXG4iCiIgIFRvIGJldHRlciBhbGxvdyBzY3JpcHQgcHJvZ3JhbW1lcnMgdG8gZ2V0IHRvIGtub3cgYWJvdXQgdGhlIHByb2dyZXNzIG9mXG4iCiIgIGN1cmwsIHRoZSAtdy8tLXdyaXRlLW91dCBvcHRpb24gd2FzIGludHJvZHVjZWQuIFVzaW5nIHRoaXMsIHlvdSBjYW4gc3BlY2lmeVxuIgoiICB3aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIHByZXZpb3VzIHRyYW5zZmVyIHlvdSB3YW50IHRvIGV4dHJhY3QuXG4iCiJcbiIKIiAgVG8gZGlzcGxheSB0aGUgYW1vdW50IG9mIGJ5dGVzIGRvd25sb2FkZWQgdG9nZXRoZXIgd2l0aCBzb21lIHRleHQgYW5kIGFuXG4iCiIgIGVuZGluZyBuZXdsaW5lOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXcgJ1dlIGRvd25sb2FkZWQgJXtzaXplX2Rvd25sb2FkfSBieXRlc1xcbicgd3d3LmRvd25sb2FkLmNvbVxuIgoiXG4iCiJLRVJCRVJPUzQgRlRQIFRSQU5TRkVSXG4iCiJcbiIKIiAgQ3VybCBzdXBwb3J0cyBrZXJiZXJvczQgZm9yIEZUUCB0cmFuc2ZlcnMuIFlvdSBuZWVkIHRoZSBrZXJiZXJvcyBwYWNrYWdlXG4iCiIgIGluc3RhbGxlZCBhbmQgdXNlZCBhdCBjdXJsIGJ1aWxkIHRpbWUgZm9yIGl0IHRvIGJlIHVzZWQuXG4iCiJcbiIKIiAgRmlyc3QsIGdldCB0aGUga3JiLXRpY2tldCB0aGUgbm9ybWFsIHdheSwgbGlrZSB3aXRoIHRoZSBrYXV0aCB0b29sLiBUaGVuIHVzZVxuIgoiICBjdXJsIGluIHdheSBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1rcmI0IHByaXZhdGUgZnRwOi8va3JiNHNpdGUuY29tIC11IHVzZXJuYW1lOmZha2Vwd2RcbiIKIlxuIgoiICBUaGVyZSdzIG5vIHVzZSBmb3IgYSBwYXNzd29yZCBvbiB0aGUgLXUgc3dpdGNoLCBidXQgYSBibGFuayBvbmUgd2lsbCBtYWtlXG4iCiIgIGN1cmwgYXNrIGZvciBvbmUgYW5kIHlvdSBhbHJlYWR5IGVudGVyZWQgdGhlIHJlYWwgcGFzc3dvcmQgdG8ga2F1dGguXG4iCiJcbiIKIk1BSUxJTkcgTElTVFxuIgoiXG4iCiIgIFdlIGhhdmUgYW4gb3BlbiBtYWlsaW5nIGxpc3QgdG8gZGlzY3VzcyBjdXJsLCBpdHMgZGV2ZWxvcG1lbnQgYW5kIHRoaW5nc1xuIgoiICByZWxldmFudCB0byB0aGlzLlxuIgoiXG4iCiIgIFRvIHN1YnNjcmliZSwgbWFpbCBjdXJsLXJlcXVlc3RAY29udGFjdG9yLnNlIHdpdGggXCJzdWJzY3JpYmUgPGZpbGwgaW4geW91clxuIgoiICBlbWFpbCBhZGRyZXNzPlwiIGluIHRoZSBib2R5LlxuIgoiXG4iCiIgIFRvIHBvc3QgdG8gdGhlIGxpc3QsIG1haWwgY3VybEBjb250YWN0b3Iuc2UuXG4iCiJcbiIKIiAgVG8gdW5zdWJjcmliZSwgbWFpbCBjdXJsLXJlcXVlc3RAY29udGFjdG9yLnNlIHdpdGggXCJ1bnN1YnNjcmliZSA8eW91clxuIgoiICBzdWJzY3JpYmVkIGVtYWlsIGFkZHJlc3M+XCIgaW4gdGhlIGJvZHkuXG4iCiJcbiIKICkgOwp9Cg==