Shigio Yamaguchi wrote: >>Have found some more issues with htags and PHP: > Can I get the original file? > Thank you.
of course... Patrick -- Engineers motto: cheap, good, fast - choose any two Patrick Strasser <patrick dot strasser at tugraz dot at> Student of Telematik, Techn. University Graz, Austria
begin-base64 644 - PD8NCg0KDQokbWF4RGlzcGxheU51bWJlciA9IDUwOw0KDQovLyBm/HIgVW1s YXV0ZQ0KcmVxdWlyZV9vbmNlICgidXRpbHMucGhwIik7DQpyZXF1aXJlX29u Y2UgKCJwcmljZS5waHAiKTsNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmNsYXNzIGFy dGljbGUgew0KDQogICAgdmFyICRBcnRpa2VsX05yOw0KICAgIHZhciAkQmV6 ZWljaG51bmc7DQogICAgdmFyICRTdWNoYmV6ZWljaG51bmc7DQogICAgdmFy ICROZXR0b2dld2ljaHQ7DQogICAgdmFyICRIYW5kZWxfUHJlaXM7DQogICAg dmFyICRIYW5kZWxfUHJlaXNfUmFiYXR0Ow0KICAgIHZhciAkSGFuZGVsX1By ZWlzX3ZpZXc7DQogICAgdmFyICRaZWlsZW5yYWJhdHQ7DQogICAgdmFyICRW S19QcmVpczsNCiAgICB2YXIgJHNwZXppYWw9ZmFsc2U7DQogICAgdmFyICRT cGV6aWFsX1ByZWlzOw0KICAgIHZhciAkTmV0dG9wcmVpczsNCiAgICB2YXIg JGFrdGlvbj1mYWxzZTsNCiAgICB2YXIgJEFrdGlvbl9QcmVpczsNCiAgICB2 YXIgJEFrdGlvbl9NaW5kZXN0X0FuemFobDsNCiAgICB2YXIgJFNlbGVjdGVk X1ByZWlzOw0KICAgIHZhciAkUmVjaG51bmdzcmFiYXR0PWFycmF5KCk7DQog ICAgdmFyICRBbnphaGxfcHJvX1Bha2V0Ow0KICAgIHZhciAkRGViX0FydGlr ZWxyYWJhdHRncjsNCiAgICB2YXIgJExpZWZlcmFudGVuX0NvZGU7DQogICAg dmFyICRMaWVmZXJhbnRlbl9OYW1lOw0KICAgIHZhciAkQXVzbGF1ZjsNCiAg ICB2YXIgJEdlc3BlcnJ0Ow0KICAgIHZhciAkQjJCOw0KICAgIHZhciAkQjJD Ow0KICAgIHZhciAkTGllZmVyYmFyX2FiOw0KICAgIHZhciAkR1BQR19Db2Rl Ow0KICAgIHZhciAkUHJvZHVrdGJ1Y2h1bmdzZ3J1cHBlOw0KICAgIHZhciAk SVBHX0NvZGU7DQogICAgdmFyICRMYWdlcmJ1Y2h1bmdzZ3J1cHBlOw0KICAg IHZhciAkREVCQVJUX0NvZGU7DQogICAgdmFyICRQcm9kdWt0Z3J1cHBlOw0K ICAgIHZhciAkQmFzZV9Vbml0X29mX01lYXN1cmU7DQogICAgdmFyICRVbml0 X0Nvc3Q7DQogICAgdmFyICRQcm9maXQ7DQogICAgdmFyICRMYWdlcmJlc3Rh bmQ9MDsNCiAgICB2YXIgJExhZ2VyYmVzdGFuZF9GRz0wOw0KCXZhciAkU2hp cG1lbnRfRGF0ZTsNCiAgICANCgkJdmFyICRQcmVpczsNCgkJDQogICAgdmFy ICRoYXZlX0ZHPWZhbHNlOw0KICAgIA0KICAgIHZhciAkcHJpbnRfbnVtYmVy PXRydWU7DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KICBmdW5jdGlvbiBhcnRp Y2xlKCRhcnRpY2xlX25yPSJub25lIiwgJGt1bmRlbl9ucj0wKSB7DQoJCWlm ICgkYXJ0aWNsZV9uciE9Im5vbmUiKSB7DQogICAgICAkdGhpcy0+U2hpcG1l bnRfRGF0ZT1ta3RpbWUoKTsNCgkJCWlmIChmYWxzZSA9PT0gJHRoaXMtPmZy b21fZGIoJGFydGljbGVfbnIpKSB7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJ fQ0KCQkJJHRoaXMtPlByZWlzID0gbmV3IFByaWNlKCRhcnRpY2xlX25yLCAk a3VuZGVuX25yKTsNCgkJfQ0KICB9DQoNCiAgLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioNCiAgKiBzZXQgU2hpcG1lbnRfRGF0ZSBhcyB0aW1lc3RhbXAg DQogICogIA0KICAqIA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAN CiAgZnVuY3Rpb24gc2V0X1NoaXBtZW50X0RhdGUoJHRpbWVzdGFtcCkgew0K ICAgICR0aGlzLT5TaGlwbWVudF9EYXRlPSR0aW1lc3RhbXA7DQogICAgLy9l Y2hvICJTaGlwbWVudCBkYXRlIHNldDogIi4gJHRoaXMtPlNoaXBtZW50X0Rh dGUgLiIgdm9uICIuICR0aW1lc3RhbXA7DQogIH0NCg0KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQogKiBSZWFkIGEgYXJ0aWNsZSBpZGVudGlmaWVk IGJ5IGFydF9udW1iZXIgZnJvbSBEYXRhYmFzZSANCiAqIA0KICogDQogKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8gDQoJZnVuY3Rpb24gZnJvbV9kYigk YXJ0X251bWJlcikgew0KCQlnbG9iYWwgJERFQlVHOw0KCQlkZWJ1ZygiYXJ0 aWNsZTogJGFydF9udW1iZXI8YnI+XG4iKTsNCgkJZ2xvYmFsICRjb25uZWN0 aW9uOw0KCQlpbmNsdWRlX29uY2UgKCJjb25uZWN0LnBocCIpOw0KCQkvL2lu Y2x1ZGVfb25jZSAoImVycm9yLnBocCIpOw0KICAgICAgICANCiAgICAgICAg Ly8kbXNzcWw9bXNzcWxfY29ubmVjdCgibWdhMDEubWdhLmNvLmF0IiwiU0hP UCIsICJzaG9wMTUxNSIpOw0KDQogICAgICAgIC8vZWNobyAiU1FMVkFSQ0hB UjogJFNRTFZBUkNIQVI8YnI+XG4iOw0KCQkvLyBBcnRpa2VsIGF1c3fkaGxl bg0KCQkkc3FsX3N0cmluZz0iIFNFTEVDVCAqIEZST00gIEFydGlrZWxzdGFt bQ0KCQkJV0hFUkUgQXJ0aWtlbF9Ocj0nJGFydF9udW1iZXInIjsNCgkJLy9w cmludHIoIiBBcnRpa2Vsc3RyaW5nOiAkc3FsX3N0cmluZyIpOw0KCQkkcmVz dWx0PW15c3FsX3F1ZXJ5KCRzcWxfc3RyaW5nKTsNCgkJaWYgKCEkcmVzdWx0 KSB7DQoJCQlteXNxbGVycm9yKCJiZWkgZGVyIEFydGlrZWxhdXN3YWhsOiAi KTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkvLyBhcnRpa2VsIGJla29t bWVuPw0KCQlpZiAoMT5teXNxbF9udW1fcm93cygkcmVzdWx0KSkgew0KCQkJ ZWNobyAoIjxicj5mb3VuZCBubyBhcnRpY2xlczxicj4iKTsNCgkJCXJldHVy biBmYWxzZTsNCgkJfQ0KCQkvLyBlcnN0ZW4gQXJ0aWtlbCB2ZXJ3ZW5kZW4N CgkJJGFydGljbGU9c3RyX2NvcnIobXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3Vs dCkpOw0KCQkvL2VjaG8gImZpZWxkczogIjsNCgkJLy9wcmludHIgKCRhcnRp Y2xlKTsgICAgDQogICAgZm9yZWFjaCAoJGFydGljbGUgYXMgJGtleT0+JHZh bHVlKSB7DQoJCQkkdGhpcy0+JGtleT0kdmFsdWU7DQoJCX0NCiAgICAvL2Vj aG8gIkt1bmRlbmJlc3RlbGx1bmcgZXJsYXVidDogIi4gKCR0aGlzLT5jdXN0 b21lck9yZGVyQWxsb3dlZCgpPyJqYSI6Im5laW4iKS4gIjxicj5cbiI7DQog ICAgLy9lY2hvICJI5G5kbGVyYmVzdGVsbHVuZyBlcmxhdWJ0OiAiLiAoJHRo aXMtPmJ1c2luZXNzT3JkZXJBbGxvd2VkKCk/ImphIjoibmVpbiIpLiAiPGJy PlxuIjsNCiAgICAvL2VjaG8gIkJlc3RlbGx1bmcgZXJsYXVidDogIi4gKCR0 aGlzLT5vcmRlckFsbG93ZWQoKT8iamEiOiJuZWluIikuICI8YnI+XG4iOw0K ICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KCQkNCg0KICAgIC8v ZWNobyAiTGFnZXJiZXN0YW5kOiAkdGhpcy0+TGFnZXJiZXN0YW5kPGJyPlxu IjsNCgkJJHRoaXMtPmZyb21fZGJfY29ycmVjdF92YWx1ZXMoKTsJCQ0KCQkk dGhpcy0+ZnJvbV9kYl9nZXRfdGV4dCgkYXJ0X251bWJlcik7DQoJCWlmICgh JHRoaXMtPmZyb21fZGJfZ2V0X0xhZ2VyYmVzdGFuZCgkYXJ0X251bWJlcikp IHsNCgkJCWlmICghJHRoaXMtPmZyb21fZGJfZ2V0X0ZHKCRhcnRfbnVtYmVy KSkgew0KCQkJIGVjaG8gIktlaW4gTGFnZXJiZXN0YW5kIHVuZCBrZWluZSBG YXJiL0dy9t9lbiE8YnI+IjsNCgkJCX0NCgkJfQ0KCQkkdGhpcy0+ZnJvbV9k Yl9nZXRfZGlzY291bnQoKTsNCgkJJHRoaXMtPmZyb21fZGJfZ2V0X3ByaWNl KCk7DQoJfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogcmVm b3JtYXQgYW5kIHRyYW5zZm9ybW0gc29tZSBkYXRhIGZyb20gRGF0YWJhc2Ug DQogKiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyANCglm dW5jdGlvbiBmcm9tX2RiX2NvcnJlY3RfdmFsdWVzKCkgew0KCS8vICoqKioq KioqKioqIENvcnJlY3QgdmFsdWVzLi4uDQoJCS8vQmFzZV9Vbml0X29mX01l YXN1cmUNCgkJJHRoaXMtPkJhc2VfVW5pdF9vZl9NZWFzdXJlPXVjZmlyc3Qo c3RydG9sb3dlcigkdGhpcy0+QmFzZV9Vbml0X29mX01lYXN1cmUpKTsNCgkJ Ly8gTGllZmVyYmFyX2FiDQoJCSRsZGI9YXJyYXlfcmV2ZXJzZShwcmVnX3Nw bGl0KCIvIHwtfDovIiwkdGhpcy0+TGllZmVyYmFyX2FiKSk7DQoJCSRsZGJb NV09JGxkYls1XTwxOTk5PzE5OTk6JGxkYls1XTsNCgkJJExpZWZlcmJhcl90 aW1lPW1rdGltZSgwLDAsMCwkbGRiWzRdLCRsZGJbM10sJGxkYls1XSk7DQoJ CSRub3c9dGltZSgpOw0KCQkkdGhpcy0+TGllZmVyYmFyX2FiPSgkTGllZmVy YmFyX3RpbWU8JG5vdz8ic29mb3J0IjpzdHJmdGltZSgiJWQuICViLiAlWSIs JExpZWZlcmJhcl90aW1lKSk7DQoJfQ0KCQkNCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKg0KICogZXh0cmFjdCBhcnRpY2xldGV4dCBmcm9tIGRhdGFi YXNlIA0KICogIA0KICogDQogKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8g DQoJZnVuY3Rpb24gZnJvbV9kYl9nZXRfdGV4dCgkYXJ0X251bWJlcikgew0K CS8vIFRleHR6ZWlsZW4gYXVzd+RobGVuDQoJCSR0ZXh0X3NxbF9zdHJpbmc9 IiBTRUxFQ1QgWmVpbGVubnIsIFRleHQNCgkJCUZST00gIFRleHRiYXVzdGVp bnplaWxlDQoJCQlXSEVSRSBBcnRpa2VsX05yPSckYXJ0X251bWJlcicNCgkJ CU9SREVSIGJ5IFplaWxlbm5yIjsNCgkJZGVidWcoIiBUZXh0c3RyaW5nOiAk dGV4dF9zcWxfc3RyaW5nIik7DQoJCSR0ZXh0X3Jlc3VsdD1teXNxbF9xdWVy eSgkdGV4dF9zcWxfc3RyaW5nKTsNCgkJZWNobyBteXNxbF9lcnJvcigpOw0K CQkvLyBaZWlsZW4gYmVrb21tZW4/DQoJCWlmICgxPm15c3FsX251bV9yb3dz KCR0ZXh0X3Jlc3VsdCkpIHsNCgkJCWRlYnVnICgiPGJyPmZvdW5kIG5vIHRl eHQgbGluZXM8YnI+Iik7DQoJCX0NCgkJLy8gWmVpbGVuIGF1c2xlc2VuDQoJ CWVsc2UgeyANCgkJCXdoaWxlICgkWmVpbGU9c3RyX2NvcnIobXlzcWxfZmV0 Y2hfYXNzb2MoJHRleHRfcmVzdWx0KSkpew0KCQkJCWV4dHJhY3QoJFplaWxl KTsNCgkJCQkkdGhpcy0+VGV4dHplaWxlWyRaZWlsZW5ucl09JFRleHQ7Ly90 cmltKCRUZXh0LCIgIikgOw0KCQkJfQ0KCQl9DQoJCW15c3FsX2ZyZWVfcmVz dWx0KCR0ZXh0X3Jlc3VsdCk7DQoJfQ0KDQogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioNCiAqIGV4dHJhY3QgZmFyYmdyIGZyb20gZGF0YWJhc2UgDQog KiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyANCglmdW5j dGlvbiBmcm9tX2RiX2dldF9MYWdlcmJlc3RhbmQoJGFydF9udW1iZXIpIHsN CgkvKioqKioqKioqKioNCgkqIEZhcmJHcm9lc3NlbiBhdXN35GhsZW4NCgkq KioqKioqKioqKiovDQogICAgICAgICRMYWdlcmJlc3RhbmRfc3FsX3N0cmlu Zz0iIFNFTEVDVCBBcnRpa2VsX05yLCBMYWdlcmJlc3RhbmQgXG4iICANCiAg ICAgICAgICAgIC4iRlJPTSBBcnRpa2VsbWVuZ2VuIFxuIg0KICAgICAgICAg ICAgLiJXSEVSRSBBcnRpa2VsX05yPSckYXJ0X251bWJlcicgXG4iDQogICAg ICAgICAgICA7DQoJCS8vZWNobyAoIiBMYWdlcmJlc3RhbmRfc3FsX3N0cmlu ZzogPHByZT4kTGFnZXJiZXN0YW5kX3NxbF9zdHJpbmc8L3ByZT48YnI+Iik7 DQoJCSRMYWdlcmJlc3RhbmRfcmVzdWx0PW15c3FsX3F1ZXJ5KCRMYWdlcmJl c3RhbmRfc3FsX3N0cmluZyk7DQoJCWVjaG8gbXlzcWxfZXJyb3IoKTsNCgkJ Ly8gWmVpbGVuIGJla29tbWVuPw0KCQlpZiAoMD09PW15c3FsX251bV9yb3dz KCRMYWdlcmJlc3RhbmRfcmVzdWx0KSkgew0KCQkJLy9lY2hvICgiPGJyPm11 c3QgYmUgRmFyYmVuIG9yIEdyb2Vzc2VuPGJyPiIpOw0KCQkJbXlzcWxfZnJl ZV9yZXN1bHQoJExhZ2VyYmVzdGFuZF9yZXN1bHQpOw0KCQkJcmV0dXJuIGZh bHNlOw0KCQl9DQoJCWVsc2Ugew0KCQkvLyBaZWlsZW4gYXVzbGVzZW4NCgkJ CSRaZWlsZT1zdHJfY29ycihteXNxbF9mZXRjaF9hc3NvYygkTGFnZXJiZXN0 YW5kX3Jlc3VsdCkpOw0KCQkJZXh0cmFjdCgkWmVpbGUpOw0KCQkJcmVxdWly ZV9vbmNlKCd1dGlscy5waHAnKTsNCgkJCS8vcHJpbnRyKCRaZWlsZSk7DQoJ CQkkdGhpcy0+TGFnZXJiZXN0YW5kKz0kTGFnZXJiZXN0YW5kOw0KCQkJbXlz cWxfZnJlZV9yZXN1bHQoJExhZ2VyYmVzdGFuZF9yZXN1bHQpOw0KCQkJcmV0 dXJuIHRydWU7DQoJCX0NCgl9DQoNCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KICogZXh0cmFjdCBmYXJiZ3IgZnJvbSBkYXRhYmFzZSANCiAqICAN CiAqIA0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIA0KCWZ1bmN0aW9u IGZyb21fZGJfZ2V0X0ZHKCRhcnRfbnVtYmVyKSB7DQoJLyoqKioqKioqKioq DQoJKiBGYXJiR3JvZXNzZW4gYXVzd+RobGVuDQoJKioqKioqKioqKioqLw0K CWdsb2JhbCAkbWF4RGlzcGxheU51bWJlcjsNCgkNCiAgICAgICAgJGZhcmJH cl9zcWxfc3RyaW5nPSIgU0VMRUNUIEFydGlrZWxfTnIsIEZhcmJlLCBHcm9l c3NlLCBcbiINCiAgICAgICAgICAgIC4iZ3JlYXRlc3QoTGFnZXJiZXN0YW5k LCAwKSBhcyBMYWdlcmJlc3RhbmQsIFdlYnNob3AgXG4iICANCiAgICAgICAg ICAgIC4iRlJPTSBBcnRpa2VsbWVuZ2VuX0ZHIFxuIg0KICAgICAgICAgICAg LiJXSEVSRSBBcnRpa2VsX05yPSckYXJ0X251bWJlcicgXG4iDQogICAgICAg ICAgICAvLy4iQU5EIFdlYnNob3A9JzEnIFxuIg0KICAgICAgICAgICAgLy8u IkFORCBMYWdlcmJlc3RhbmQ+MCAiDQogICAgICAgICAgICAuIk9SREVSIEJZ IEZhcmJlLCBHcm9lc3NlIFxuIg0KICAgICAgICAgICAgOw0KCQkvL2VjaG8g KCIgRmFyYkdyX3NxbF9zdHJpbmc6IDxwcmU+JGZhcmJHcl9zcWxfc3RyaW5n PC9wcmU+PGJyPiIpOw0KCQkkZmFyYkdyX3Jlc3VsdD1teXNxbF9xdWVyeSgk ZmFyYkdyX3NxbF9zdHJpbmcpOw0KCQllY2hvIG15c3FsX2Vycm9yKCk7DQoJ CS8vIFplaWxlbiBiZWtvbW1lbj8NCgkJaWYgKDA9PT1teXNxbF9udW1fcm93 cygkZmFyYkdyX3Jlc3VsdCkpIHsNCgkJCS8vZWNobyAoIjxicj5mb3VuZCBu byBGYXJiZW4gb3IgR3JvZXNzZW48YnI+Iik7DQoJCQkvL3JldHVybiBmYWxz ZTsNCgkJCSR0aGlzLT5oYXZlX0ZHPWZhbHNlOw0KCQl9DQoJCWVsc2Ugew0K CQkvLyBaZWlsZW4gYXVzbGVzZW4NCgkJCXdoaWxlICgkWmVpbGU9c3RyX2Nv cnIobXlzcWxfZmV0Y2hfYXNzb2MoJGZhcmJHcl9yZXN1bHQpKSl7DQoJCQkJ ZXh0cmFjdCgkWmVpbGUpOw0KCQkJCXJlcXVpcmVfb25jZSgndXRpbHMucGhw Jyk7DQoJCQkJLy9wcmludHIoJFplaWxlKTsNCgkJCQkkRmFyYmU9ZXNjYXBl X2NvbG9yKCRGYXJiZSk7IA0KCQkJCWlmICh0cmltKCRGYXJiZSk9PSIiICYm IHRyaW0oJEdyb2Vzc2UpPT0iIikgew0KCQkJCQllY2hvICJ1bmtyaXRpc2No ZXIgRmVobGVyOiBrZWluZSBGYXJiZW4gb2RlciBHcvbfZW48YnI+biI7DQog ICAgICAgICAgLy8kdGhpcy0+TGFnZXJiZXN0YW5kKz0kTGFnZXJiZXN0YW5k Ow0KCQkJCX0NCgkJCQllbHNlaWYgKCRXZWJzaG9wPT0iMSIpIHsNCgkJCQkJ Ly9lY2hvICJHcvbfZTogJEdyb2Vzc2U8YnI+XG4iOw0KCQkJCQkkRmFyYmVf Y2FwPXVjZmlyc3Qoc3RydG9sb3dlcigkRmFyYmUpKTsNCgkJCQkJJGtleT0k RmFyYmUuIjsiLiRHcm9lc3NlOw0KICAgICAgICAgICAgICAgICAgICAkdGhp cy0+TGFnZXJiZXN0YW5kICs9ICRMYWdlcmJlc3RhbmQ7DQoJCQkJCWlmICgh JHRoaXMtPkZhcmJHclska2V5XVsiZW5hYmxlZCJdPT09dHJ1ZSkgeyANCgkJ CQkJCSRudW1iZXI9KCRMYWdlcmJlc3RhbmQ+JG1heERpc3BsYXlOdW1iZXI/ IiRtYXhEaXNwbGF5TnVtYmVyKyI6KGludCkkTGFnZXJiZXN0YW5kKTsNCiAg ICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5GYXJiR3JbJGtleV09YXJy YXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAic3RyaW5nIj0+aHRtbHNwZWNpYWxjaGFycyAoDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW1wbG9kZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIsICIsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZW1vdmVfZW1wdHkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5 KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGYXJiZV9jYXAs DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdyb2Vzc2UNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICksDQoJCQkJCQkiaW1hZ2UiPT4kdGhpcy0+QXJ0aWtlbF9O ci4iXyIuc3RydG91cHBlcigkRmFyYmUpLiIuanBnIiwNCgkJCQkJCSJjb2xv ciI9PiRGYXJiZV9jYXAsDQoJCQkJCQkiZW5hYmxlZCI9PiRlbmFibGVkLA0K CQkJCQkJIm51bWJlciI9PiRudW1iZXIsDQoJCQkJCQkpOw0KCQkJCQl9DQog ICAgICAgICAgJHRoaXMtPmhhdmVfRkc9dHJ1ZTsNCgkJCQl9DQoJCQl9IC8v ZW5kIHdoaWxlDQogICAgICANCiAgICAgIC8vcHJpbnRyKCR0aGlzLT5zZWxl Y3RlZF9GYXJiR3IpOw0KICAgICAgaWYgKCR0aGlzLT5zZWxlY3RlZF9GYXJi R3I9PSIiICYmICR0aGlzLT5oYXZlX0ZHKSB7DQogICAgICAgICRrZXlzPWFy cmF5X2tleXMoJHRoaXMtPkZhcmJHcik7DQogICAgICAgICR0aGlzLT5zZWxl Y3RlZF9GYXJiR3I9JGtleXNbMF07DQogICAgICB9DQogICAgfSAvLyBlbmQg ZWxzZQ0KCQlteXNxbF9mcmVlX3Jlc3VsdCgkZmFyYkdyX3Jlc3VsdCk7DQoJ CXJldHVybiAkdGhpcy0+aGF2ZV9GRzsNCgl9DQoNCiAgIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQogICAqIFJldHJpdmUgdGhlIHBhcmNlcyBmb3Ig dGhlIGFydGl0aWNsZSANCiAgICogIA0KICAgKiANCiAgICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovIA0KICBmdW5jdGlvbiBmcm9tX2RiX2dldF9kaXNj b3VudCgpIHsNCiAgICByZXF1aXJlX29uY2UoImNvbm5lY3QucGhwIik7DQog ICAgcmVxdWlyZV9vbmNlKCJ1dGlscy5waHAiKTsNCiAgICANCglzZXRsb2Nh bGUoTENfQUxMLCAiQyIpOw0KDQoJLy9lY2hvICI8Yj5mcm9tX2RiX2dldF9k aXNjb3VudDwvYj48YnI+XG4iOw0KICAgICRkaXNjb3VudF9zcWw9IlNFTEVD VCAqIGZyb20gYEt1bmRlbnN0YW1tLUFydGlrZWxyYWJhdHR6dW9yZG51bmdg IGFzIFJ6IFxuIg0KICAgICAgIC4gIiBXSEVSRSBcbiINCiAgICAgICAuICIg SURHX0NvZGU9JyR0aGlzLT5EZWJfQXJ0aWtlbHJhYmF0dGdyJyBcbiINCgkg ICAuICIgQU5EIEt1bmRlbl9Ocj0nJF9TRVNTSU9OW3VzZXJfaWRdJyBcbiIN CgkgICAuICIgQU5EIFxuIg0KICAgICAgIC4gIiBTdGFydGluZ19EYXRlIDwg bm93KCkgXG4iDQogICAgICAgLiAiIGFuZCBcbiINCiAgICAgICAuICIgRW5k aW5nX0RhdGUgPiBub3coKSBcbiINCiAgICAgICAuICIgbGltaXQgMSBcbiIN CgkgICA7DQogICAgLy9wcmludHIoJGRpc2NvdW50X3NxbCk7DQogICAgJGRp c2NvdW50X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCRkaXNjb3VudF9zcWwpOw0K ICAgIGVjaG8gbXlzcWxfZXJyb3IoKTsNCiAgICBpZiAoJHJvdyA9IG15c3Fs X2ZldGNoX2Fzc29jKCRkaXNjb3VudF9yZXN1bHQpKSB7DQogICAgICBleHRy YWN0ICgkcm93KTsgDQogICAgICAvKg0KICAgICAgZWNobyAiPHByZT4iOw0K ICAgICAgdmFyX2R1bXAoJHJvdyk7DQogICAgICBlY2hvICI8L3ByZT4iOw0K ICAgICAgKi8NCgkgICR0aGlzLT5aZWlsZW5yYWJhdHQ9JExpbmVfRGlzY291 bnQ7DQoJICAvL2VjaG8gIlplaWxlbnJhYmF0dDogJHRoaXMtPlplaWxlbnJh YmF0dDxicj5cbiI7DQoJfQ0KICB9DQoNCiAgIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KICAgKiBSZXRyaXZlIHRoZSBwYXJj ZXMgZm9yIHRoZSBhcnRpdGljbGUgDQogICAqICANCiAgICogDQogICAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLyANCiAgZnVuY3Rpb24gZnJvbV9kYl9n ZXRfcHJpY2UoKSB7DQogICAgcmVxdWlyZV9vbmNlKCJjb25uZWN0LnBocCIp Ow0KICAgIHJlcXVpcmVfb25jZSgidXRpbHMucGhwIik7DQogICAgDQoJc2V0 bG9jYWxlKExDX0FMTCwgIkMiKTsNCg0KCS8vZWNobyAiPGI+ZnJvbV9kYl9n ZXRfcHJpY2U8L2I+PGJyPlxuIjsNCiAgICAkcHJpY2Vfc3FsPSJTRUxFQ1Qg KiBGUk9NIEFydGlrZWxzdGFtbV9QcmVpc2UgV0hFUkUgXG4iDQogICAgICAu ICIgKCBcbiAiDQogICAgICAuICIgUHJlaXNncnVwcGU9J1ZLJyBcbiINCiAg ICAgIC4gIiBPUiBQcmVpc2dydXBwZT0nSEFOREVMJyBcbiINCiAgICAgIC4g IiBPUiBQcmVpc2dydXBwZT0nQUtUSU9OJyBcbiINCiAgICAgIC4gKGxvZ2dl ZF9pbigpPw0KICAgICAgICAiIE9SIFByZWlzZ3J1cHBlPSckX1NFU1NJT05b cHJpY2VfZ3JvdXBdJyBcbiINCiAgICAgICAgOiIiKQ0KICAgICAgLiAiICkg XG4iDQogICAgICAuICIgQU5EIEFydGlrZWxfTnI9JyR0aGlzLT5BcnRpa2Vs X05yJyBcbiINCiAgICAgIC4gIiBBTkQgU3RhcnRkYXR1bSA8IG5vdygpIFxu Ig0KICAgICAgLiAiIEFuZCBFbmRkYXR1bSA+IG5vdygpIFxuIg0KICAgICAg Ow0KICAgIC8vcHJpbnRyKCRwcmljZV9zcWwpOw0KICAgICRwcmljZV9yZXN1 bHQgPSBteXNxbF9xdWVyeSgkcHJpY2Vfc3FsKTsNCiAgICBlY2hvIG15c3Fs X2Vycm9yKCk7DQogICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hc3Nv YygkcHJpY2VfcmVzdWx0KSkgew0KICAgICAgZXh0cmFjdCAoJHJvdyk7IA0K ICAgICAgLyoNCiAgICAgIGVjaG8gIjxwcmU+IjsNCiAgICAgIHZhcl9kdW1w KCRyb3cpOw0KICAgICAgZWNobyAiPC9wcmU+IjsNCiAgICAgICovDQogICAg ICAvLyR0aGlzLT5SZWNobnVuZ3NyYWJhdHRbJFByZWlzZ3J1cHBlXT0kUmVj aG51bmdzcmFiYXR0Ow0KICAgICAgaWYgKCRQcmVpc2dydXBwZT09IlZLIikg ew0KICAgICAgICAvL2VjaG8gIlZLOiAkUHJlaXMsIF8gIi5mbG9hdHZhbCgk UHJlaXMpIC4iPGJyPiI7DQogICAgICAgICR0aGlzLT5WS19QcmVpcz0kUHJl aXM7DQogICAgICAgIC8vZWNobyAiIGRhbm46ICR0aGlzLT5WS19QcmVpcyAo dHlwOiAiLiBnZXR0eXBlKCR0aGlzLT5WS19QcmVpcykgLiAiPGJyPlxuIjsN CiAgICAgICAgY29udGludWU7DQogICAgICB9DQogICAgICBpZiAoJHRoaXMt PmJ1c2luZXNzT3JkZXJBbGxvd2VkKCkpIHsNCiAgICAgICAgc3dpdGNoICgk UHJlaXNncnVwcGUpIHsNCiAgICAgICAgICBjYXNlICJIQU5ERUwiOiANCiAg ICAgICAgICAgIC8vZWNobyAiSGFuZGVsOiAkUHJlaXM8YnI+IjsNCgkJCQkJ CSR0aGlzLT5IYW5kZWxfUHJlaXM9KHN0cmluZykkUHJlaXM7DQoJCQkJCQkk dGhpcy0+SGFuZGVsX1ByZWlzX1JhYmF0dD0kWmVpbGVucmFiYXR0Ow0KCQkJ CQkJJHRoaXMtPkhhbmRlbF9QcmVpc192aWV3PSgNCgkJCQkJCQkJCSRQcmVp cyANCgkJCQkJCQkJCSogJFplaWxlbnJhYmF0dA0KCQkJCQkJCQkJKiAoMSAt ICgkdGhpcy0+WmVpbGVucmFiYXR0LzEwMCkpDQoJCQkJCQkJCSkNCgkJCQkJ CQk7DQoJCQkJCQkvKg0KCQkJCQkJCWVjaG8gIlByZWlzX3ZpZXc9ICIuICRQ cmVpcyANCgkJCQkJCSogJFplaWxlbnJhYmF0dCANCgkJCQkJCSogKDEgLSAo JHRoaXMtPlplaWxlbnJhYmF0dC8xMDApKS4iPGJyPlxuIjsNCgkJCQkJKi8N CgkJCWJyZWFrOw0KICAgICAgICAgIGNhc2UgIkFLVElPTiI6DQogICAgICAg ICAgICAgLy9lY2hvICJBa3Rpb246ICRQcmVpczxicj4iOw0KICAgICAgICAg ICAgJHRoaXMtPkFrdGlvbl9QcmVpcz0kUHJlaXM7DQogICAgICAgICAgICAk dGhpcy0+QWt0aW9uX01pbmRlc3RfQW56YWhsPSRNaW5pbWFsZV9BbnphaGw7 DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBjYXNlICRfU0VTU0lP TlsicHJpY2VfZ3JvdXAiXToNCiAgICAgICAgICAgIC8vZWNobyAiU3Blemlh bDogJFByZWlzPGJyPiI7DQogICAgICAgICAgICAkdGhpcy0+U3BlemlhbF9Q cmVpcz0kUHJlaXM7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBk ZWZhdWx0Og0KICAgICAgICAgICAgZWNobyAiUHJlaXNncnVwcGUgJFByZWlz Z3J1cHBlIG5pY2h0IHZlcndlbmRiYXIhIjsNCiAgICAgICAgICAgIGJyZWFr Ow0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8vcHJp bnRyKCR0aGlzLT5SZWNobnVuZ3NyYWJhdHQpOw0KICAgIA0KICAgICR0aGlz LT5zcGV6aWFsPSgoJHRoaXMtPlNwZXppYWxfUHJlaXMgPiAwKSAmJiAoJHRo aXMtPlNwZXppYWxfUHJlaXMgPCAkdGhpcy0+VktfUHJlaXMpKTsNCiAgICAv Kg0KICAgIGVjaG8gDQogICAgInNwZXppYWwxOiAiLigkdGhpcy0+U3Blemlh bF9QcmVpcyA8ICR0aGlzLT5WS19QcmVpcz8iamEiOiJuZWluIikuDQogICAg IihTcGV6aWFsOiAiLihmbG9hdCkkdGhpcy0+U3BlemlhbF9QcmVpcy4iICIu IGdldHR5cGUoJHRoaXMtPlNwZXppYWxfUHJlaXMpIC4gIiwgPGJyLz4iDQog ICAgLiJWSzoiLihmbG9hdCkkdGhpcy0+VktfUHJlaXMuIiAiLiBnZXR0eXBl KCR0aGlzLT5WS19QcmVpcykuICIsIDxici8+Ig0KICAgIC4iSGFuZGVsOiIu KGZsb2F0KSR0aGlzLT5IYW5kZWxfUHJlaXMuIiAiLiBnZXR0eXBlKCR0aGlz LT5IYW5kZWxfUHJlaXMpLiAiLCA8YnIvPiINCg0KCQk7DQoJCS8vKi8NCiAg ICAkdGhpcy0+YWt0aW9uPSggDQogICAgICAgICAgKCR0aGlzLT5Ba3Rpb25f UHJlaXM+MCkgDQogICAgICAgICYmDQogICAgICAgICAgKA0KICAgICAgICAg ICAgICAhKA0KICAgICAgICAgICAgICAgICAgJHRoaXMtPlNwZXppYWw+MCAN CiAgICAgICAgICAgICAgICAmJiANCiAgICAgICAgICAgICAgICAgICgkdGhp cy0+QWt0aW9uX1ByZWlzID4gJHRoaXMtPlNwZXppYWxfUHJlaXMpDQogICAg ICAgICAgICAgICkgLy8gbmljaHQgKFNwZXppYWwgIGf8bnN0aWdlciBhbHMg QWt0aW9uKQ0KICAgICAgICAgICAmJiANCiAgICAgICAgICAgICgkdGhpcy0+ QWt0aW9uX1ByZWlzIDwgJHRoaXMtPlZLX1ByZWlzKSAgLy8gQWt0aW9uIGf8 bnN0aWdlciBhbHMgVksNCiAgICAgICAgICApDQogICAgICApDQogICAgOw0K ICAgIC8qDQogICAgZWNobyAic3RhdGU6JF9TRVNTSU9OW2xvZ2luX3N0YXRl XTxicj4NCiAgICBzcGV6aWFsOiIuKCR0aGlzLT5zcGV6aWFsPyJqYSI6Im5l aW4iKS4iPGJyPg0KICAgIFNwZXppYWxfUHJlaXM6JHRoaXMtPlNwZXppYWxf UHJlaXM8YnI+DQogICAgVks6JHRoaXMtPlZLX1ByZWlzPGJyPg0KICAgIEhh bmRlbDokdGhpcy0+SGFuZGVsX1ByZWlzPGJyPiI7DQogICAgKi8NCgkkdGhp cy0+TmV0dG9wcmVpcz0oICR0aGlzLT5zcGV6aWFsICYmICgkdGhpcy0+U3Bl emlhbF9QcmVpcz4wICkgKQ0KCQk/JHRoaXMtPlNwZXppYWxfUHJlaXMNCgkJ OigoJHRoaXMtPkhhbmRlbF9QcmVpc192aWV3ID4wKQ0KCQkJPyR0aGlzLT5I YW5kZWxfUHJlaXNfdmlldw0KCQkJOiR0aGlzLT5IYW5kZWxfUHJlaXMNCgkJ CSkNCgkJOw0KDQogICAgJHRoaXMtPlNlbGVjdGVkX1ByZWlzPQ0KICAgICAg KA0KICAgICAgICAobG9nZ2VkX2luKCkpID8NCiAgICAgICAgKA0KICAgICAg ICAgICR0aGlzLT5zcGV6aWFsPw0KICAgICAgICAgICAgIlNwZXppYWxfUHJl aXMiOg0KICAgICAgICAgICAgIkhhbmRlbF9QcmVpcyINCiAgICAgICAgKQ0K ICAgICAgICA6IlZLX1ByZWlzIg0KICAgICAgKTsNCiAgICAvKmVjaG8gImFy dGljbGU6c2VsZWN0ZWQgUHJlaXM9JHRoaXMtPlNlbGVjdGVkX1ByZWlzPGJy PlxuIjsgDQogICAgDQogICAgZWNobyAic2VsZWN0ZWQ6ICR0aGlzLT5TZWxl Y3RlZF9QcmVpczxicj4iOw0KICAgIGVjaG8gImFrdGlvbjoiLiAoJHRoaXMt PmFrdGlvbj8iamEiOiJuZWluIikgLiAiPGJyPiI7ICANCiAgICBlY2hvICJz cGV6aWFsOiIuICgkdGhpcy0+c3BlemlhbD8iamEiOiJuZWluIikgLiAiPGJy PiI7ICANCiAgICANCiAgICBlY2hvICJBa3Rpb246ICR0aGlzLT5Ba3Rpb25f UHJlaXM8YnI+U3BlemlhbDogJHRoaXMtPlNwZXppYWxfUHJlaXM8YnI+Vks6 ICAkdGhpcy0+VktfUHJlaXM8YnI+LCBIYW5kZWw6ICR0aGlzLT5IYW5kZWxf UHJlaXM8YnI+IjsNCiAgICBlY2hvICJOZXR0b3ByZWlzOiAkdGhpcy0+TmV0 dG9wcmVpczxicj4iOw0KICAgICovDQogIH0NCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKg0KICogb3V0cHV0IEhUTUwgcmVwcmVzZW50YXRpb24gb2Yg YXJ0aWNsZSANCiAqICANCiAqIA0KICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovIA0KICAgIGZ1bmN0aW9uIHRvX0hUTUwoKSB7DQovLyAgICAgICAgcmVx dWlyZV9vbmNlKCdjb2xvci5waHAnKTsNCiAgICAgICAgcmVxdWlyZV9vbmNl KCd1dGlscy5waHAnKTsNCgkJCQlyZXF1aXJlX29uY2UgKCJsb2dpbi5waHAi KTsNCiAgICAgICAgcmVxdWlyZV9vbmNlICgicHJpY2UucGhwIik7DQogICAg ICAgIA0KICAgICAgIC8vcHJpbnRyKCR0aGlzKSA7DQogICAgICAgIA0KICAg ICAgICBnbG9iYWwgJGNvbnZlcnNpb247Ly8kdGhpcy0+cHJpbnRfbnVtYmVy Ow0KCQkJCWdsb2JhbCAkbWF4RGlzcGxheU51bWJlcjsNCiAgICAgICAgDQog ICAgICAgIC8vc2V0bG9jYWxlKExDX0FMTCwgImRlX0FUIik7DQoJCQkJDQog ICAgICAgICRjb2xvcj0ibm9uZSI7DQogICAgICAgICRib3JkZXI9Im5vbmUi Ow0KICAgICAgICANCiAgICAgICAgJEIyQj1mYWxzZTsNCiAgICAgICAgJEIy Qz1mYWxzZTsNCiAgICAgICAgJEF1c2xhdWY9ZmFsc2U7DQogICAgICAgIC8v JGxvZ2dlZF9pbj1sb2dnZWRfaW4oKTsNCiAgICAgICAgIC8qZm9yZWFjaCAo YXJyYXkoIlZLX1ByZWlzIiwgIkhhbmRlbHNfUHJlaXMiKSBhcyAkdmFyaWFi bGUpIHsNCgkJCQkJCWVjaG8gInZvcmhlcjogJHZhcmlhYmxlOiAiLiR0aGlz LT4kdmFyaWFibGUuIjxicj5cbiI7DQogICAgICAgICAgICAkdmFyPWRpc3Bs YXlfbnVtYmVyKCR0aGlzLT4kdmFyaWFibGUsMik7DQoJCQkJCQllY2hvIGdl dHR5cGUoJHZhcik7DQoJCQkJCQkkdGhpcy0+JHZhcmlhYmxlPWRpc3BsYXlf bnVtYmVyKCR0aGlzLT4kdmFyaWFibGUsMik7DQoJCQkJCQllY2hvICJ2b3Jo ZXI6ICR2YXJpYWJsZTogIi4kdGhpcy0+JHZhcmlhYmxlLiI8YnI+XG4iOw0K ICAgICAgICB9Ki8NCiAgICAgICAgJE5ldHRvZ2V3aWNodD1jb252ZXJ0X3Np emUoJHRoaXMtPk5ldHRvZ2V3aWNodCwgMTAwMCk7DQogICAgICAgICRkaWdp dHM9KCRjb252ZXJzaW9uPzM6MCk7DQogICAgICAgICROZXR0b2dld2ljaHQ9 ZGlzcGxheV9udW1iZXIoJE5ldHRvZ2V3aWNodCwgJGRpZ2l0cyk7DQogICAg ICAgICR3ZWlnaHRfbWVhc3N1cmU9ICgkY29udmVyc2lvbj8ia2ciOiJnIik7 DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqDQoqIEF1c2dhYmUNCioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLw0KICAgIC8qIEJlbvZ0aWd0ZSBGZWxk ZXI6IEFydGlrZWxOciwgQXJ0aWtlbCBCZXplaWNobnVuZywgTmV0dG9nZXdp Y2h0LCBSaWNodHByZWlzICBWSyBQcmVpcywgDQogICAgIEhhbmRlbHNfUHJl aXMgaXN0IEVLLVByZWlzLCBBbnphaGwgcHJvIFBha2V0ID0gVlBFLCANCiAg ICAgTGllZmVyYmFyIGFiIHdlbm4ga2VpbmUgRGF0ZW4gZGFubiBwcm9tcHQg c29uc3QgRGF0dW0NCiAgICAgKi8gICAgIA0KDQogICAgICAgICRzdHlsZT0i IHN0eWxlPVwiYm9yZGVyOiB0aGluIHNvbGlkIGJsYWNrOyB3aWR0aDogMTAw JTtcIiAiOw0KICAgICAgICANCiAgICAgICAgJG1vZGUgPSBnZXRSZXF1ZXN0 QXJndW1lbnQoIm1vZGUiKTsNCiAgICAgICAgaWYgKCRtb2RlPT0iYmFza2V0 Iil7DQogICAgICAgICAgICA/PiANCiAgICAgICAgICAgIFp1cvxjayB6dW0g PGEgaHJlZj0iPD89JF9TRVJWRVJbIlBIUF9TRUxGIl0/Pj9hY3Rpb249YmFz a2V0Ij5XYXJlbmtvcmI8L2E+PGJyPg0KICAgICAgICAgICAgICA8Pw0KICAg ICAgICB9DQogICAgICAgIA0KICAgICAgICAkSVBHX2NvZGVfZW5jb2RlZD11 cmxlbmNvZGUoJHRoaXMtPklQR19Db2RlKTsNCiAgICAgICAgLy9wcmludHIo JHRoaXMtPlByZWlzKTsNCiAgICAkSGFuZGVsc3ByZWlzID0gJHRoaXMtPlBy ZWlzLT5nZXRIYW5kZWxzcHJlaXMoKTsNCgk/PjwhLS0gPiAKCQkkX1ByZWlz ID0gPD89ICRfUHJlaXMgPz4KCQkkdGhpcy0+UHJlaXMtPmdldFNwZXppYWxw cmVpcygpID0gPD89ICR0aGlzLT5QcmVpcy0+Z2V0U3BlemlhbHByZWlzKCkg Pz4KCSAgICAgICAgJEhhbmRlbHNwcmVpc1siSGFuZGVsc3ByZWlzX3JlZHV6 aWVydCJdID0gPD89ICRIYW5kZWxzcHJlaXNbIkhhbmRlbHNwcmVpc19yZWR1 emllcnQiXSA/PgoJICAgPC8gLS0+PD8KCQkgIAoJCQokQWt0dWVsbGVyX1By ZWlzPSggZmFsc2UgIT09ICggJF9QcmVpcyA9ICR0aGlzLT5QcmVpcy0+Z2V0 U3BlemlhbHByZWlzKCkgKSA/ICRfUHJlaXMgOiAkSGFuZGVsc3ByZWlzWyJI YW5kZWxzcHJlaXNfcmVkdXppZXJ0Il0gKTsNCgkJDQogICAgJFByZWlzID0g JHRoaXMtPlByZWlzLT5nZXRQcmljZU92ZXJ2aWV3KCk7CgkJCQlpbmNsdWRl ICgiYXJ0aWNsZS5pbmMiKTsNCiAgICAgICAgDQogICAgfQ0KDQogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCiAqIGdlbmVyYXRlIHByb3BlciBmb3Jt YXRlZCBhcnRpY2xlIHRleHQgDQogKiAgDQogKiANCiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLyANCglmdW5jdGlvbiB0b19IVE1MX2dldF9hcnRpY2xl X3RleHQoKSB7DQoJCQ0KCQkkYXJ0aWNsZV90ZXh0PSI8dGQ+PCEtLSBubyB0 ZXh0IC0tPjwvdGQ+XG4iOw0KCQlpZiAoY291bnQoJHRoaXMtPlRleHR6ZWls ZSkpIHsNCgkJCQkkYXJ0aWNsZV90ZXh0PSANCgkJCQkJICI8dWwgc3R5bGU9 XCJsaXN0LXN0eWxlOiBub25lOyBwYWRkaW5nOiAwcHg7IG1hcmdpbjogMCUg NSU7XCI+XG4iOw0KCQkJCQkJZm9yZWFjaCAoJHRoaXMtPlRleHR6ZWlsZSBh cyAkTnI9PiRaZWlsZSkgew0KCQkJCQkJCQkkYXJ0aWNsZV90ZXh0Lj0gIjxs aT4iLnByZWdfcmVwbGFjZSgiL15ccysvIiwiJm5ic3A7Jm5ic3A7IixodG1s c3BlY2lhbGNoYXJzKCRaZWlsZSkpLiI8L2xpPlxuIjsNCgkJCQkJCX0NCgkJ CQkkYXJ0aWNsZV90ZXh0Lj0iPC91bD5cbiI7DQoJCX0NCgkJcmV0dXJuICRh cnRpY2xlX3RleHQ7DQoJfQ0KDQogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioNCiAqIGdlbmVyYXRlIGEgcHJvcGVybHkgZm9ybWF0ZWQgaW1hZ2UgDQog KiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyANCiAgZnVu Y3Rpb24gdG9fSFRNTF9nZXRfaW1hZ2UoKSB7DQogICAgJGltZ19GYXJiR3I9 IiI7DQogICAgJGNvdW50X0ZhcmJHciA9IChpc3NldCgkdGhpcy0+RmFyYkdy KSA/IGNvdW50KCR0aGlzLT5GYXJiR3IpIDogMCk7DQogICAgaWYgKCRjb3Vu dF9GYXJiR3IhPTApIHsNCiAgICAgICAgJGtleXM9YXJyYXlfa2V5cygkdGhp cy0+RmFyYkdyKTsNCiAgICAgICAgZm9yICgkaT0wOyAkaTwkY291bnRfRmFy YkdyLTE7ICRpKyspIHsNCiAgICAgICAgICAgICRjdXJyZW50PSRrZXlzWyRp XTsNCiAgICAgICAgICAgICRpbWdfRmFyYkdyPSIuLi9pbWFnZXMvYXJ0aWNs ZXMvIi4kdGhpcy0+RmFyYkdyWyRjdXJyZW50XVsiaW1hZ2UiXTsNCiAgICAg ICAgICAgIC8vcHJpbnRyKCRpbWdfRmFyYkdyKTsNCiAgICAgICAgICAgIGlm ICghZmlsZV9leGlzdHMoJGltZ19GYXJiR3IpKSB7DQogICAgICAgICAgICAg ICAgJGltZ19GYXJiR3I9IiI7DQogICAgICAgICAgICB9DQogICAgICAgICAg ICBlbHNlIHsgDQogICAgICAgICAgICAvLyovDQogICAgICAgICAgICAgICAg YnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAg aWYgKCRpbWdfRmFyYkdyPT09IiIpIHsNCiAgICAgIC8vZWNobyAiZmFpbG92 ZXI6IDxicj5cbiI7IA0KICAgICAgICAkaW1nX0ZhcmJHcj0iLi4vaW1hZ2Vz L2FydGljbGVzLyIuJHRoaXMtPkFydGlrZWxfTnIuIi5qcGciOw0KICAgIH0N CiAgICAvL2VjaG8gImltZz0kaW1nPGJyPlxuIjsNCiAgICAvL2VjaG8gInNl YXJjaGluZzogWyRpbWdfRmFyYkdyXTxicj5cbiI7DQogICAgDQogICAgJGlt Zz0iPHRkPjwhLS0gbm8gaW1nIC0tPjwvdGQ+XG4iOw0KICAgIGlmICgkaW1n X0ZhcmJHciANCiAgICAgICAgJiYgKGZpbGVfZXhpc3RzKCRpbWdfRmFyYkdy KSkNCiAgICAgICAgKSB7DQogICAgICAgIC8vZWNobyAiIGZvdW5kIDxicj5c biI7DQogICAgICAgICRzaXplPWNhbGN1bGF0ZVZpZXdEaW1lbnNpb25zKCRp bWdfRmFyYkdyKTsNCiAgICAgICAgLy9wcmludHIgKCRzaXplKTsNCiAgICAg ICAgJHdpZHRoPSRzaXplWyJ3aWR0aCJdOw0KICAgICAgICAkaGVpZ2h0PSRz aXplWyJoZWlnaHQiXTsNCiAgICAgICAgLy9wcmludHIoJGhlaWdodCk7DQog ICAgICAgIC8vcHJpbnRyKCR3aWR0aCk7DQogICAgICAgICRhbHQ9IiR0aGlz LT5CZXplaWNobnVuZyI7Ly8gIi4kdGhpcy0+RmFyYkdyWyRmaXJzdF1bImNv bG9yIl07DQogICAgICAgICRpbWc9PDw8SU1HDQogICAgICAgICAgICAgIDx0 ZCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxMDAlIj4NCiAgICAgICAgICAgICAg ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICAgICAg ICAgICAgIDwhLS0NCiAgICAgICAgICAgICAgICAgIHZhciBpbWdfbmFtZT0n JHRoaXMtPkJlemVpY2hudW5nJzsNCiAgICAgICAgICAgICAgICAgIC8vdmFy IGltZ193aWR0aD0kd2lkdGg7DQogICAgICAgICAgICAgICAgICAvL3ZhciBp bWdfaGVpZ2h0PSRoZWlnaHQ7DQogICAgICAgICAgICAgICAgICB2YXIgaW1h Z2VMb2FkZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgIA0KICAgICAg ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICBmdW5jdGlvbiB6b29t X2FydGljbGUoKSB7DQogICAgICAgICAgICAgICAgICAgIGltYWdlPW5ldyBJ bWFnZTsNCiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjPWRvY3VtZW50 LmdldEVsZW1lbnRzQnlOYW1lKCdhcnRpY2xlX2ltYWdlJylbMF0uc3JjOw0K ICAgICAgICAgICAgICAgICAgICBpbWFnZV93aW5kb3c9d2luZG93Lm9wZW4o DQogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50 c0J5TmFtZSgnYXJ0aWNsZV9pbWFnZScpWzBdLnNyYywNCiAgICAgICAgICAg ICAgICAgICAgICAgICdpbWdfbmFtZScsDQogICAgICAgICAgICAgICAgICAg ICAgICAgICdsb2NhdGlvbj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT1ubyxt ZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sdG9vbGJhcj1ubyx3aWR0aD0nK2lt YWdlLndpZHRoKycsaGVpZ2h0PScraW1hZ2UuaGVpZ2h0KTsNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgLS0+DQogICAgICAgICAgICAg ICAgPC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgPGEgbmFtZT0iYXJ0aWNs ZV96b29tX2luIiBocmVmPSJqYXZhc2NyaXB0Onpvb21fYXJ0aWNsZSgpOyIN CiAgICAgICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICA8aW1nIGFs dD0iem9vbSIgc3JjPSIuLi9pbWFnZXMvb3RoZXIvTHVwZS0yMC5naWYiIHN0 eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiOy8+PC9hPg0KICAgICAg ICAgICAgICAgIDxpbWcgbmFtZT0iYXJ0aWNsZV9pbWFnZSIgaWQ9ImFydGlj bGVfaW1hZ2UiIHNyYz0iJGltZ19GYXJiR3IiIA0KICAgICAgICAgICAgICAg ICAgICBhbHQ9IiRhbHQiIHdpZHRoPSIkd2lkdGgiIGhlaWdodD0iJGhlaWdo dCINCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImJvcmRlcjogdGhpbiBz b2xpZCBibGFjazsiIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg ICAgICAgICAgICAgPjwhLS0gb25Mb2FkPSJpbWFnZUxvYWRlZCgpIiAtLT4N CiAgICAgICAgICAgICAgICA8L2ltZz4NCiAgICAgICAgICAgICAgICANCiAg ICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg c3JjPSJqcy9pbWFnZTIuanMiIGxhbmd1YWdlPSJKYXZhc2NyaXB0Ij4NCgkJ CQkJCQkJCS8qDQogICAgICAgICAgICAgICAgICB2YXIgdGltZXJDb3VudGVy ID0wOw0KICAgICAgICAgICAgICAgICAgDQoJCQkJCQkJCWZ1bmN0aW9uIGlt YWdlTG9hZGVkKCkgew0KCQkJCQkJCQkJc2V0VGltZW91dCAoImNoZWNrX2lt YWdlX3NpemUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGljbGVfaW1h Z2UnKSwxNTAsIDIwMCkiLCAyMDApOw0KCQkJCQkJCQl9DQoJCQkJCQkJCQ0K ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrX2ltYWdlX3NpemUoaW1h Z2UsIG1heF93aWR0aCwgbWF4X2hlaWdodCkgew0KICAgICAgICAgICAgICAg ICAgICAvL2lmIChpbWFnZSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAg ICAgICAgd2lkdGhfZmFjdG9yPW1heF93aWR0aC9pbWFnZS53aWR0aDsNCiAg ICAgICAgICAgICAgICAgICAgICBoZWlnaHRfZmFjdG9yPW1heF9oZWlnaHQv aW1hZ2UuaGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgIGZhY3RvciA9 IE1hdGgubWluKHdpZHRoX2ZhY3RvcixoZWlnaHRfZmFjdG9yKTsNCiAgICAg ICAgICAgICAgICAgICAgICAvL3dpbmRvdy5zdGF0dXM9ICJ3OiIgKyBpbWFn ZS53aWR0aCArICIgaDoiICsgaW1hZ2UuaGVpZ2h0ICsgIiB3ZjogIiArIHdp ZHRoX2ZhY3RvcisiLCBoZjogIitoZWlnaHRfZmFjdG9yKyIsIG1pbjogIitm YWN0b3I7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY3RvciA8IDEp IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLndpZHRoICo9IGZh Y3RvcjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLmhlaWdodCAq PSBmYWN0b3I7DQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICAvL30NCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu c3RhdHVzPSJyZXNpemVkIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgDQogICAgICAgICAgICAgICAgZnVuY3Rpb24gbG9hZF9pbWFn ZSh1cmwsIG5ld1dpZHRoLCBuZXdIZWlnaHQpIHsNCiAgICAgICAgICAgICAg ICAgICAgcG9zID0gaW5kZXhPZiAoImFydGljbGVfaW1hZ2UiKTsNCiAgICAg ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGlj bGVfaW1hZ2UnKS5zcmMgPSB1cmw7DQogICAgICAgICAgICAgICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcnRpY2xlX2ltYWdlJykud2lkdGgg PSBuZXdXaWR0aDsNCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2FydGljbGVfaW1hZ2UnKS5oZWlnaHQgPSBuZXdIZWln aHQ7DQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQgKCJjaGVja19p bWFnZV9zaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcnRpY2xlX2lt YWdlJyksMTUwLCAyMDApIiwgMjAwKTsNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5k ZXhPZiAoaWQpIHsNCiAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGRv Y3VtZW50LmltYWdlcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAg ICAgICBpZiAoZG9jdW1lbnQuaW1hZ2VzW2ldLmlkID09IGlkKSB7DQogICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7DQogICAgICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgDQogICAgICAgICAgICAgICAgLy8gaGFjayBmb3IgaW1hZ2Uud2lk dGggYW5kIGltYWdlLmhlaWdodDogDQogICAgICAgICAgICAgICAgLy8gV2l0 aG91dCB0aW1lb3V0LCBpbWVkZWF0bHkgYWZ0ZXIgbG9kYWdpbiBkaW1lbnNp b25zIGFyZSAwLg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg IC8vbG9hZF9pbWFnZSgiJGltZ19GYXJiR3IiLCAkd2lkdGgsICRoZWlnaHQp Ow0KICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoImNoZWNrX2ltYWdlX3Np emUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGljbGVfaW1hZ2UnKSwg MTUwLCAyMDApIiwgMjAwKTsNCiAgICAgICAgICAgICAgICAqLw0KICAgICAg ICAgICAgICAgIDwvc2NyaXB0PiANCiAgICAgICAgICAgICAgICANCiAgICAg ICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFu Z3VhZ2U9IkphdmFzY3JpcHQiPg0KCQkJCQkJCQkNCiAgICAgICAgICAgICAg ICBkb2N1bWVudC5ib2R5Lm9ubG9hZD0iaW1hZ2VMb2FkZWQiOw0KICAgICAg ICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc2NyaXB0PiANCiAgICAg ICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg PC90ZD4NCklNRzsNCiAgICB9DQogIHJldHVybiAkaW1nOw0KICB9DQogIA0K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiBnZW5lcmF0ZSBwcm9w ZXIgZm9ybWF0ZWQgZmFyYmdyIGRhdGEgDQogKiAgDQogKiANCiAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLyANCmZ1bmN0aW9uIHRvX0hUTUxfRkdfc3Ry aW5nKCkgew0KDQoJCQkJZ2xvYmFsICRtYXhEaXNwbGF5TnVtYmVyOw0KCQkJ CS8vZWNobyAiRkcgYXVzZ2FiZSA8YnI+IjsNCiAgICAgICAgLy8gRmFyYi1H cm9lc3NzZW4NCiAgICAgICAgaWYgKCR0aGlzLT5vcmRlckFsbG93ZWROb3co KSkgew0KICAgICAgICAgICAgJEZhcmJHcl9zdHJpbmc9IiI7DQogICAgICAg ICAgICBpZiAoaXNzZXQoJHRoaXMtPkZhcmJHcikpIHsNCiAgICAgICAgICAg ICAgLy9lY2hvIF9fRlVOQ1RJT05fXyAuIigpOiIgLiBfX0xJTkVfXyAuICI6 IGNvdW50KFwkdGhpcy0+RmFyYkdyKTo8YnI+XG4iOw0KICAgICAgICAgICAg ICAvL3ByaW50cihjb3VudCgkdGhpcy0+RmFyYkdyKSk7DQogICAgICAgICAg ICAgIA0KICAgICAgICAgICAgICBpZiAoY291bnQoJHRoaXMtPkZhcmJHcikh PT0wKSB7DQogICAgICAgICAgICAgICAgICAvL2VjaG8gIioxKiAiOw0KICAg ICAgICAgICAgICAgICAgJEZhcmJHcl9zdHJpbmcuPSc8dGQgdmFsaWduPSJ0 b3AiIGlkPSJpZDEiPjxiPkZhcmJlbi9HciZvdW1sOyZzemxpZztlbjo8L2I+ PC90ZD48dGQ+PGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Jw0KICAgICAg ICAgICAgICAgICAgICAgIC4kdGhpcy0+Z2V0X2ZhcmJncl9saXN0KA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAiZmFyYmdyIiwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgInJhZGlvIiwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi c3dpdGNoIj0+dHJ1ZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAic2VsZWN0ZWQiPT4kdGhpcy0+c2VsZWN0ZWRfRmFyYkdyLCANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJwcmludF9udW1iZXIiPT4kdGhp cy0+cHJpbnRfbnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIndpdGhvdXRfdW5hdmFpbGFibGUiPT50cnVlLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImNoZWNrX2lkIj0+Im51bWJlciIsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJ0aWNsZV9uYW1lIj0+JHRo aXMtPkJlemVpY2hudW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAp DQogICAgICAgICAgICAgICAgICAgICAgKQ0KCQkJCQkJCQkJCQkuICJcbjwv ZGl2PjwvdGQ+XG4iOw0KICAgICAgICAgICAgICAgICAgOw0KICAgICAgICAg ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkbnVtYmVyPSgw PGlzc2V0KCR0aGlzLT5udW1iZXIpPyR0aGlzLT5udW1iZXI6MCk7DQogICAg ICAgICAgICAkbWF4X3ZhbHVlPSgkdGhpcy0+TGFnZXJiZXN0YW5kPiRtYXhE aXNwbGF5TnVtYmVyPyIkbWF4RGlzcGxheU51bWJlciI6JHRoaXMtPkxhZ2Vy YmVzdGFuZCk7DQogICAgICAgICAgICAkU2hpcG1lbnRfRGF0ZT1kYXRlKCJk Lm0ueSIsICR0aGlzLT5TaGlwbWVudF9EYXRlKTsNCiAgICAgICAgICAgIC8v cHJpbnRfRmFyYkdyKCRGYXJiR3Jfc3RyaW5nKQ0KICAgICAgICAgICAgLy8k RmFyYkdyID0gPDw8RkFSQl9HUg0KICAgICAgICAgICAgPz4NCiAgICAgICAg ICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYXJ0aWNs ZV92YWx1ZSI+IA0KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4 dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQoJCQkJCQkJ CTwhLS0NCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQl2YXIgbWF4X3Zh bHVlPTw/PSRtYXhfdmFsdWU/PjsNCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJ CQkJCQlmdW5jdGlvbiBzZXRtYXgobnVtYmVyLGlkKSB7DQoJCQkJCQkJCQlt YXhfdmFsdWUgPSBudW1iZXI7DQoJCQkJCQkJCQl2YXIgZWxlbWVudCA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCgkJCQkJCQkJCS8vYWxlcnQg KGlkICsgIiBpc3QgIiArIGVsZW1lbnQpOw0KCQkJCQkJCQkJaWYgKChlbGVt ZW50ICE9IG51bGwpIC8vIElFIHJldHVybnMgbnVsbCBvbiBsb2FkLi4uDQoJ CQkJCQkJCQkJJiYgKGVsZW1lbnQudmFsdWUgPiBtYXhfdmFsdWUpKSB7IA0K CQkJCQkJCQkJCQllbGVtZW50LnZhbHVlID0gbWF4X3ZhbHVlOw0KCQkJCQkJ CQkJfQ0KCQkJCQkJCQkJLyp2YXIgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxl bWVudHNCeU5hbWUoIm9yZGVyX2Zvcm0iKVswXS5lbGVtZW50czsNCgkJCQkJ CQkJCXZhciBpPTA7DQoJCQkJCQkJCQlmb3IgKGk9MDsgaTxlbGVtZW50cy5s ZW5ndGg7IGkrKykgew0KCQkJCQkJCQkJCQlpZiAoZWxlbWVudHNbaV0uY2hl Y2tlZCkgew0KCQkJCQkJCQkJCQkJCS8vYWxlcnQgKGVsZW1lbnRzW2ldLm5h bWUrJyAsIG5yLjogJytpKTsNCgkJCQkJCQkJCQkJCQllbGVtZW50c1tpXS5z ZWxlY3QoKTsNCgkJCQkJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJCQkJfQ0K CQkJCQkJCQkJCQkvL2FsZXJ0KGVsZW1lbnRzW2ldLm5hbWUrJywgJytlbGVt ZW50c1tpXS50eXBlKycsIGNoZWNrZWQ6ICcrZWxlbWVudHNbaV0uY2hlY2tl ZCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCQkqLw0KCQkJCQkJCQkJLy9h bGVydCAoZWxlbWVudF9uYW1lcyk7DQoJCQkJCQkJCQkvL2FsZXJ0KGNoZWNr ZWQpOw0KCQkJCQkJCQl9DQoJCQkJCQkJDQogICAgICAgICAgICAgICAgZnVu Y3Rpb24gY2hlY2tudW1iZXIoaWQpIHsNCgkJCQkJCQkJCS8vYWxlcnQgKCdm aWVsZCcpOw0KLy8JCQkJCQkJCQlhbGVydCAoJ2NoZWNrbnVtYmVyOiAnICsg aWQpOw0KCQkJCQkJCQkJdmFyIGVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoaWQpOw0KICAgICAgICAgICAgICAgICAgdmFyIHJldHZhbD10cnVl Ow0KCQkJCQkJCQkJaWYgIChlbGVtZW50LnZhbHVlPm1heF92YWx1ZSkgew0K CQkJCQkJCQkJCQlpZiAgKGNvbmZpcm0gKCdEZXJ6ZWl0IHNpbmQgbnVyICcg KyBtYXhfdmFsdWUgKyAnIFN0/GNrICcNCgkJCQkJCQkJCQkJCQkrICd2ZXJm /Gdhci4gV29sbGVuIHNpZSB0cm90emRlbSAnICsgZWxlbWVudC52YWx1ZSAN CgkJCQkJCQkJCQkJCQkrICcgU3T8Y2sgYmVzdGVsbGVuIHVuZCAnIA0KCQkJ CQkJCQkJCQkJCSsgKGVsZW1lbnQudmFsdWUtbWF4X3ZhbHVlKSArICcgc3Dk dGVyIGdlbGllZmVydCBiZWtvbW1lbj8nKQ0KCQkJCQkJCQkJCQkJCSkgew0K CQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQkJCQkJ ZWxlbWVudC52YWx1ZT1tYXhfdmFsdWU7DQoJCQkJCQkJCQkJCQlyZXR2YWwg PSBmYWxzZTsNCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQkvL2FsZXJ0KCdT aWUga/ZubmVuIG51ciAnK21heF92YWx1ZSsnIFN0/GNrIGJlc3RlbGxlbiEn KTsNCgkJCQkJCQkJCQkJLy9lbGVtZW50LnZhbHVlPW1heF92YWx1ZTsNCgkJ CQkJCQkJCX0NCgkJCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQkJCS8vYWxlcnQg KCdBbGxlcyBPSycpOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJLy9hbGVydChy ZXR2YWwpOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsNCgkJ CQkJCQl9DQogICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBmdW5jdGlv biBjaGVja2RhdGVfZmllbGQoaWQpIHsNCiAgICAgICAgICAgICAgICAvL2Fs ZXJ0KCdjaGVja2RhdGVfZmllbGQnKTsNCiAgICAgICAgICAgICAgICB2YXIg ZWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7DQogICAgICAg ICAgICAgICAgdmFyIGRhdGVfcGF0dGVybiA9IC9eWzAxMjNdWzAtOV1cLlsw MV1bMC05XVwuWzAxXVswLTldJC87DQogICAgICAgICAgICAgICAgdmFyIGRh dGVfb2sgPSAoZWxlbWVudC52YWx1ZSA9PSBlbGVtZW50LnZhbHVlLm1hdGNo KGRhdGVfcGF0dGVybikpOw0KICAgICAgICAgICAgICAgIC8vYWxlcnQgKCJw YXR0ZXJuIFsiICsgZGF0ZV9wYXR0ZXJuICsgIl0gbWF0Y2hlZCB2YWx1ZSBb IiArIGVsZW1lbnQudmFsdWUgKyAiXTogIiArIGRhdGVfb2spOw0KICAgICAg ICAgICAgICAgIGlmICghZGF0ZV9vaykgew0KICAgICAgICAgICAgICAgICAg YWxlcnQgKCJEYXMgTGllZmVyZGF0dW0gd3VyZCBuaWNodCBhbHMgcmljaHRp Z2VzIERhdHVtIGVya2FubnQuIFxuQml0dGUgZ2ViZW4gc2llIGRhcyBEYXR1 bSBpbiBkZXIgRm9ybSBkZC5tbS5qaiBlaW4sIHouQi4gMTUuMDYuMDQuIik7 DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBk YXRlX29rOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIA0KCQkJ CQkJCWZ1bmN0aW9uIG9yZGVyKCkgew0KICAgICAgICAgICAgICAgIHZhciBy ZXR2YWwgPSBjaGVja251bWJlcignbnVtYmVyJyk7DQogICAgICAgICAgICAg ICAgYWxlcnQgKCdnb3QgcmVzdWx0OiAnICsgcmV0dmFsKTsNCiAgICAgICAg ICAgICAgICBpZiAocmV0dmFsID09IHRydWUpIHsNCiAgICAgICAgICAgICAg ICAgIGFsZXJ0ICgnYmluIGluIFNjaGxlaWZlIScpOw0KICAgICAgICAgICAg ICAgICAgc3VibWl0KCk7DQoJCQkJCQkJCX0JDQoJCQkJCQkJfQ0KICAgICAg ICAgICAgICANCiAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrX3N1Ym1pdCgp IHsNCi8vICAgICAgICAgICAgICAgIGFsZXJ0KCJjaGVja19zdWJtaXQiKTsN CiAgICAgICAgICAgICAgICB2YXIgbnVtYmVyX29rID0gY2hlY2tudW1iZXIo J251bWJlcicpOw0KICAgICAgICAgICAgICAgIHZhciBkYXRlX29rID0gY2hl Y2tkYXRlX2ZpZWxkKCdTaGlwbWVudF9EYXRlJyk7DQogICAgICAgICAgICAg ICAgLy9hbGVydCAoIm51bWJlcjoiICsgbnVtYmVyX29rICsgIiwgZGF0ZToi ICtkYXRlX29rKTsNCiAgICAgICAgICAgICAgICByZXR1cm4oIG51bWJlcl9v aw0KICAgICAgICAgICAgICAgICAgJiYgZGF0ZV9vaw0KICAgICAgICAgICAg ICAgICAgKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAvL2Fs ZXJ0KCdqcyBlbmQnKTsNCiAgICAgICAgICAgICAgDQogICAgDQoNCg0KICAg ICAgICAgICAgLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KICAg ICAgICAgICAgDQogICAgICAgICAgICANCgkJCQkJCQk8PyBpZiAoJHRoaXMt PnNlbGVjdGVkX0ZhcmJHciAhPSAiIikgeyA/Pg0KCQkJCQkJCQ0KCQkJCQkJ CWZ1bmN0aW9uIG9uRm9ybUxvYWQoKSB7DQoJCQkJCQkJCWVsZW1lbnRUb1Nl bGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnPD89JHRoaXMtPnNlbGVj dGVkX0ZhcmJHcj8+Jyk7DQoJCQkJCQkJCWFsZXJ0ICgnc2VsZWN0aW5nIDw/ PSR0aGlzLT5zZWxlY3RlZF9GYXJiR3I/PicgKyBlbGVtZW50VG9TZWxlY3Qp Ow0KCQkJCQkJCQllbGVtZW50VG9TZWxlY3Quc3lsZT0idGhpbiBzb2xpZCBy ZWQiOw0KCQkJCQkJCQllbGVtZW50VG9TZWxlY3QuY2xpY2soKTsNCgkJCQkJ CQkJLy9lbGVtZW50VG9TZWxlY3QuZm9jdXMoKTsNCgkJCQkJCQkJcmV0dXJu IHRydWU7DQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJCWRvY3VtZW50LmJv ZHkub25Mb2FkPSJvbkZvcm1Mb2FkIjsNCgkJCQkJCQk8PyB9ID8+DQoJCQkJ CQkJCQ0KCQkJCQkJCQktLT4NCgkJCQkJCQkJPC9zY3JpcHQ+DQogICAgICAg ICAgICAgICAgICAgIDxmb3JtIG5hbWU9Im9yZGVyX2Zvcm0iIGFjdGlvbj0i PD89JF9TRVJWRVJbIlBIUF9TRUxGIl0/PiIgbWV0aG9kPSJnZXQiDQogICAg ICAgICAgICAgICAgICAgIG9uU3VibWl0PSJyZXR1cm4oY2hlY2tfc3VibWl0 KCkpOyI+IDwhLS0gIC0tPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1 dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9Im9yZGVyIj4N CiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBu YW1lPSJhcnRpY2xlIiB2YWx1ZT0iPD89JHRoaXMtPkFydGlrZWxfTnI/PiI+ DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgIDwvdGQ+ DQogICAgICAgICAgICA8L3RyPg0KCQkJCQkJPD89JEZhcmJHcl9zdHJpbmc/ Pg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICA8dGQ+DQogICAg ICAgICAgICAgICAgPGI+QW56YWhsOjxiPg0KICAgICAgICAgICAgICA8L3Rk Pg0KICAgICAgICAgICAgICA8dGQgY2xhc3M9ImFydGljbGVfdmFsdWUiPg0K CQkJCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bWJlciIgbmFtZT0i bnVtYmVyIiBzaXplPSIyIiB2YWx1ZT0iPD89JG51bWJlcj8+IiBhdXRvY29t cGxldGU9Im9mZiI+DQoJCQkJCQkJPC90ZD4NCiAgICAgICAgICAgIDwvdHI+ DQogICAgICAgICAgICA8dHI+DQoJCQkJCQkJPHRkPg0KCQkJCQkJCQk8Yj5M aWVmZXJkYXR1bTo8L2I+DQoJCQkJCQkJPC90ZD4NCgkJCQkJCQk8dGQgY2xh c3M9ImFydGljbGVfdmFsdWUiPiAgIA0KCQkJCQkJCQk8aW5wdXQgdHlwZT0i dGV4dCIgaWQ9IlNoaXBtZW50X0RhdGUiIG5hbWU9IlNoaXBtZW50X0RhdGUi IHZhbHVlPSI8Pz0kU2hpcG1lbnRfRGF0ZT8+IiBzaXplPSI4IiBtYXhfd2lk dGg9IjgiIGF1dG9jb21wbGV0ZT0ib2ZmIj4NCgkJCQkJCQk8L3RkPg0KICAg ICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCgkJCQkJCQk8dGQ+ DQoJCQkJCQkJPC90ZD4NCgkJCQkJCQk8dGQgY2xhc3M9ImFydGljbGVfdmFs dWUiPg0KCQkJCQkJCTw/IC8qDQo8IS0tICAgICAgICAgICAgICAgICAgICAg ICAgPGlucHV0IHR5cGU9ImltYWdlIiBuYW1lPSJzdWJtaXRfYXJ0aWNsZSIg dmFsdWU9ImJlc3RlbGxlbiIgc3JjPSIuLi9pbWFnZXMvc2hvcC93YXJlbmtv cmJQaWMuZ2lmIiBvbmNsaWNrPSJhbGVydCAoJ3N1Ym1pdCcpOyByZXR1cm4g ZmFsc2U7Ij4tLT4gKi8gPz4NCgkJCQkJCQkJCQkJPGlucHV0IHR5cGU9InN1 Ym1pdCIgbmFtZT0ic3VibWl0X2FydGljbGUiIHZhbHVlPSJiZXN0ZWxsZW4i IHNyYz0iLi4vaW1hZ2VzL3Nob3Avd2FyZW5rb3JiUGljLmdpZiI+Lg0KCQkJ CQkJCQkJPC9mb3JtPg0KCQkJCQkJCTwvdGQ+DQogICAgICAgICAgICA8L3Ry Pg0KPD8NCiAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAk RmFyYkdyX3N0cmluZz0iIjsNCiAgICAgICAgICAgIGlmIChjb3VudCgkdGhp cy0+RmFyYkdyKSE9PTApIHsNCiAgICAgICAgICAgICAgICAkRmFyYkdyX3N0 cmluZy49Jzx0cj48dGQgdmFsaWduPSJ0b3AiIGlkPSJpZDEiPjxiPkZhcmJl bi9HciZvdW1sOyZzemxpZztlbjo8L2I+PC90ZD48dGQ+PGRpdiBzdHlsZT0i ZmxvYXQ6IHJpZ2h0OyI+Jw0KICAgICAgICAgICAgICAgIC4kdGhpcy0+Z2V0 X2ZhcmJncl9saXN0KA0KICAgICAgICAgICAgICAgICAgICAiZmFyYmdyIiwN CiAgICAgICAgICAgICAgICAgICAgInJhZGlvIiwNCiAgICAgICAgICAgICAg ICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAic3dpdGNo Ij0+dHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzZWxlY3RlZCI9 PiR0aGlzLT5zZWxlY3RlZF9GYXJiR3IsDQogICAgICAgICAgICAgICAgICAg ICAgICAicHJpbnRfbnVtYmVyIj0+ZmFsc2UsDQogICAgICAgICAgICAgICAg ICAgICAgICAiYXJ0aWNsZV9uYW1lIj0+JHRoaXMtPkJlemVpY2hudW5nLA0K DQogICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICApDQog ICAgICAgICAgICAgICAgLiI8L2Rpdj48L3RkPjwvdHI+IjsNCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgIGVjaG8gJEZhcmJHcl9zdHJpbmc7DQogICAg ICAgIH0NCgkJLy9yZXR1cm4gJEZhcmJHcjsNCgkJfQ0KDQovKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKg0KICogIHNldCB0aGUgZmFyYmdyIHByb3BlcnR5 IG9mIGFuIGFydGljbGUNCiAqICANCiAqIA0KICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovIA0KICAgIGZ1bmN0aW9uIHNldF9mYXJiZ3IoJGZhcmJncikg ew0KCQkkdGhpcy0+c2VsZWN0ZWRfRmFyYkdyPXVybGRlY29kZSgkZmFyYmdy KTsNCiAgICAkdGhpcy0+aWQ9JHRoaXMtPmdlbmVyYXRlX2lkKCk7DQoJfQ0K DQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogcmV0cmlldmUgZmFy YmdyIGZvcm1hdGVkIGFzIGxpc3QsIHNlbGVjdGJveCBvciByYWRpb2J1dHRv bnMNCiAqICANCiAqIA0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIA0K ICAgIGZ1bmN0aW9uIGdldF9mYXJiZ3JfbGlzdCgkbmFtZSwgJHR5cGU9InNl bGVjdCIsICRvcHRpb25zPWFycmF5KCkpIHsNCiAgICAgICAgLy9pZiAoJG9w dGlvbnMpICRvcHRpb25zPWFycmF5KCk7DQogICAgICAgIC8vcHJpbnRyKCRv cHRpb25zKTsNCiAgICAgICAgLyoNCiAgICAgICAgT3B0aW9uczogDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgInN3aXRjaCI9PmJvb2xlYW46IFN3 aXRjaCBpbWFnZXMgb24gQ0xpY2s/DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgInNlbGVjdGVkIj0+c3RyaW5nOiBOYW1lIG9mIHRoZSBzZWxlY3Rl ZCBmaWVsZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaW50 X251bWJlciI9PmJvb2xlYW46IHByaW50IHRoZSBzdG9jayBjb3VudD8sDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXRfdW5hdmFpbGFi bGUiPT5ib29sZWFuOiBSZW1vdmUgZWxlbWVudHMgd2l0aCBzdG9jayBjb3Vu dCAwPywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tfaWQi PT4gaWQgb2YgZm9ybSBmaWVsZCB0byBjaGVjayBmb3Igc3RvY2sgZXhjZWVk bWVudA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnRpY2xlX25h bWUiPT4gbmFtZSBvZiB0aGUgYXJ0aWNsZSAuLi4NCiANCiAgICAgICAgKi8N CiAgICAgICAgZ2xvYmFsICRhcnRpY2xlX25yOw0KICAgICAgICAkc2VsZWN0 ZWQ9Im5vbmUiOw0KICAgICAgICBleHRyYWN0ICgkb3B0aW9ucyk7DQogICAg ICAgIHN3aXRjaCAoJHR5cGUpIHsNCiAgICAgICAgICAgIGNhc2UgImxpc3Qi Og0KICAgICAgICAgICAgICAgICRzdGFydD0iPHVsPlxuIjsNCiAgICAgICAg ICAgICAgICAkb3BlbmVyX3N0YXJ0PSI8bGkiOw0KICAgICAgICAgICAgICAg ICRvcGVuZXJfZW5kPSI+IjsNCiAgICAgICAgICAgICAgICAkdXNlX3ZhbHVl PWZhbHNlOw0KICAgICAgICAgICAgICAgICRzZWxlY3Q9IiI7DQogICAgICAg ICAgICAgICAgJGxpbmVfZW5kPSI8L2xpPlxuIjsNCiAgICAgICAgICAgICAg ICAkZW5kPSI8L3VsPlxuIjsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAg ICAgICAgICAgIGNhc2UgInJhZGlvIjoNCiAgICAgICAgICAgICAgICAkc3Rh cnQ9IiI7DQogICAgICAgICAgICAgICAgJG9wZW5lcl9zdGFydD0iPGlucHV0 IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCIkbmFtZVwiICI7DQogICAgICAgICAg ICAgICAgJG9wZW5lcl9lbmQ9Ij4iOw0KICAgICAgICAgICAgICAgICR1c2Vf dmFsdWU9dHJ1ZTsNCiAgICAgICAgICAgICAgICAkc2VsZWN0PSIgc2VsZWN0 ZWQgIjsNCiAgICAgICAgICAgICAgICAkbGluZV9lbmQ9Ijxicj48L2lucHV0 PlxuIjsNCiAgICAgICAgICAgICAgICAkZW5kPSIiOw0KICAgICAgICAgICAg ICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAic2VsZWN0IjogDQogICAg ICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICRzdGFydD0iPHNl bGVjdCBuYW1lPVwiJG5hbWVcIiBzdHlsZT1cIndpZHRoOiAxNGV4O1wiPlxu IjsNCiAgICAgICAgICAgICAgICAkbGluZV9zdGFydD0iPG9wdGlvbiBuYW1l PVwiZGVhZGJlZWZcIiAiOw0KICAgICAgICAgICAgICAgICRvcGVuZXJfZW5k PSI+IjsNCiAgICAgICAgICAgICAgICAkdXNlX3ZhbHVlPXRydWU7DQogICAg ICAgICAgICAgICAgJHNlbGVjdD0iIHNlbGVjdGVkICI7DQogICAgICAgICAg ICAgICAgJGxpbmVfZW5kPSI8L29wdGlvbj5cbiI7DQogICAgICAgICAgICAg ICAgJGVuZD0iPC9zZWxlY3Q+XG4iOw0KICAgICAgICAgICAgICAgIGJyZWFr Ow0KICAgICAgICB9DQogICAgICAgICRmYXJiZ3I9JHN0YXJ0Ow0KICAgICAg ICBmb3JlYWNoICgkdGhpcy0+RmFyYkdyIGFzICR2YWx1ZT0+JGRldGFpbHMp IHsNCiAgICAgICAgICAgIC8vcHJpbnRyKCRkZXRhaWxzKTsNCiAgICAgICAg ICAgIGV4dHJhY3QoJGRldGFpbHMpOyANCiAgICAgICAgICAgICRmaWxlbmFt ZT0iLi4vaW1hZ2VzL2FydGljbGVzLyRpbWFnZSI7DQogICAgICAgICAgICAv L2VjaG8gImZpbGVuYW1lOiAkZmlsZW5hbWUsIGltYWdlOiAkaW1hZ2U8YnI+ XG4iOw0KICAgICAgICAgICAgJGltZ19hdmFpbGFibGU9ZmlsZV9leGlzdHMo JGZpbGVuYW1lKTsNCiAgICAgICAgICAgIGlmIChpbWdfYXZhaWxhYmxlKSB7 DQogICAgICAgICAgICAgICRzaXplPWNhbGN1bGF0ZVZpZXdEaW1lbnNpb25z KCRmaWxlbmFtZSk7DQogICAgICAgICAgICAgICR3aWR0aD0kc2l6ZVsid2lk dGgiXTsNCiAgICAgICAgICAgICAgJGhlaWdodD0kc2l6ZVsiaGVpZ2h0Il07 DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHdpdGhvdXRfdW5h dmFpbGFibGUgJiYgJG51bWJlcj09MCkgew0KICAgICAgICAgICAgICAgIHN3 aXRjaCAoJHR5cGUpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGlz dCI6DQogICAgICAgICAgICAgICAgICAgIGNhc2UgInJhZGlvIjoNCiAgICAg ICAgICAgICAgICAgICAgICAgICRzdHJpbmc9IjxzcGFuIHN0eWxlPVwiY29s b3I6Z3JheTtcIj4kc3RyaW5nPC9zcGFuPiI7DQogICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAic2Vs ZWN0IjoNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDM7DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg fQ0KICAgICAgICAgICAgJG9uQ2xpY2s9IiI7DQogICAgICAgICAgICBpZiAo JHN3aXRjaCAmJiAoJHR5cGUhPSJsaXN0IikgJiYgKCRpbWdfYXZhaWxhYmxl KSkgew0KICAgICAgICAgICAgICAgICRvbkNsaWNrLj0ibG9hZF9pbWFnZSgn Li4vaW1hZ2VzL2FydGljbGVzLyRpbWFnZScsICR3aWR0aCwgJGhlaWdodCk7 IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRudW1iZXJfc3RyPSIi Ow0KICAgICAgICAgICAgaWYgKCRwcmludF9udW1iZXIpIHsNCiAgICAgICAg ICAgICAgICAkbnVtYmVyX3N0cj0iICgkbnVtYmVyICR0aGlzLT5CYXNlX1Vu aXRfb2ZfTWVhc3VyZSkgIjsNCiAgICAgICAgICAgICAgICBpZiAoJHN3aXRj aCAmJiAoJHRweWUhPSJsaXN0IikpIHsNCiAgICAgICAgICAgICAgICAgICAg JG9uQ2xpY2suPSIgO3NldG1heCgiIC4gKGludCkkbnVtYmVyIC4gIiwgJyRj aGVja19pZCcpOyAiOyANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICB9DQogICAgICAgICAgICAvLyRkaXNhYmxlZD0oJG51bWJlcj09MD8iIGRp c2FibGVkICI6IiIpOw0KICAgICAgICAgICAgJHNlbD0oJHZhbHVlPT0kc2Vs ZWN0ZWQ/JHNlbGVjdDoiIik7DQogICAgICAgICAgICAkaWQ9IiBpZD1cIiR2 YWx1ZVwiICI7DQogICAgICAgICAgICAvL2VjaG8gImlkOiBbJGlkXTxicj5c biI7DQogICAgICAgICAgICAkdmFsdWU9KCR1c2VfdmFsdWU/IiB2YWx1ZT1c IiIudXJsZW5jb2RlKCR2YWx1ZSkuIlwiIjoiIik7DQogICAgICAgICAgICAk b25DbGlja19zdHI9KCRvbkNsaWNrIT09IiI/IiBvbkNsaWNrPVwiJG9uQ2xp Y2tcIiI6IiIpOw0KICAgICAgICAgICAgLy9lY2hvICJvbkNsaWNrOiAkb25D bGlja19zdHI8YnI+XG4iOw0KICAgICAgICAgICAgJGZhcmJnci49JG9wZW5l cl9zdGFydA0KICAgICAgICAgICAgICAgIC4kaWQNCiAgICAgICAgICAgICAg ICAuJHNlbA0KICAgICAgICAgICAgICAgIC4kZGlzYWJsZWQNCiAgICAgICAg ICAgICAgICAuJG9uQ2xpY2tfc3RyDQogICAgICAgICAgICAgICAgLiR2YWx1 ZQ0KICAgICAgICAgICAgICAgIC4kb3BlbmVyX2VuZA0KICAgICAgICAgICAg ICAgIC4kc3RyaW5nDQogICAgICAgICAgICAgICAgLiRudW1iZXJfc3RyDQog ICAgICAgICAgICAgICAgLiRsaW5lX2VuZA0KICAgICAgICAgICAgICAgIDsg ICAgICAgIA0KICAgICAgICB9DQogICAgICAgICRmYXJiZ3IuPSRlbmQNCiAg ICAgICAgLiRtYXhfbnVtYmVyX2xpbmU7DQogICAgcmV0dXJuICRmYXJiZ3I7 DQogIH0NCg0KICBmdW5jdGlvbiBjdXN0b21lck9yZGVyQWxsb3dlZCgpIHsN CiAgICByZXF1aXJlX29uY2UoImxvZ2luLnBocCIpOw0KICAgIHJldHVybiAo aXNfY3VzdG9tZXIoKSAmJiAkdGhpcy0+QjJDPT0iMSIpOw0KICB9DQoNCiAg ZnVuY3Rpb24gYnVzaW5lc3NPcmRlckFsbG93ZWQoKSB7DQogICAgcmVxdWly ZV9vbmNlKCJsb2dpbi5waHAiKTsNCiAgICByZXR1cm4gKGxvZ2dlZF9pbigp ICYmICR0aGlzLT5CMkI9PSIxIik7DQogIH0NCg0KICBmdW5jdGlvbiBvcmRl ckFsbG93ZWQgKCkgew0KICAgIHJldHVybiAoJHRoaXMtPmN1c3RvbWVyT3Jk ZXJBbGxvd2VkKCkgfHwgJHRoaXMtPmJ1c2luZXNzT3JkZXJBbGxvd2VkKCkp Ow0KICB9DQogIA0KICBmdW5jdGlvbiBvcmRlckFsbG93ZWROb3coKSB7DQog ICAgcmV0dXJuICgkdGhpcy0+Y3VzdG9tZXJPcmRlckFsbG93ZWQoKSB8fCAo JHRoaXMtPmJ1c2luZXNzT3JkZXJBbGxvd2VkKCkgJiYgbG9nZ2VkX2luKCkp KTsNCiAgfQ0KDQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQog KiByZXRyaWV2ZSBmYXJiZ3IgYXMgc3RyaW5nDQogKiAgDQogKiANCiAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLyANCiAgZnVuY3Rpb24gZ2V0X2ZhcmJn cigpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RlZF9GYXJiR3I7 DQogIH0NCiAgDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIGNv bnZlcnQgZmFyYmdyLVN0cmluZyBpbiBhIHByb3BsZXJseSBmb3JtYXRlZCBz dHJpbmcgDQogKiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LyANCiAgZnVuY3Rpb24gZm9ybWF0X2ZhcmJncigkZmFyYmdyKSB7DQogICAg JGZhcmJncl9hcnJheT1zcGxpdCgiOyIsJGZhcmJncik7DQogICAgJGZhcmJl PSRmYXJiZ3JfYXJyYXlbMF07DQogICAgJGdyb2Vzc2U9JGZhcmJncl9hcnJh eVsxXTsNCiAgICAkZm9ybWF0ZWRfZmFyYmdyPWh0bWxzcGVjaWFsY2hhcnMg KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW1wbG9kZSgNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbW92ZV9lbXB0eSgNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJy YXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2ZpcnN0KHN0cnRvbG93ZXIo JGZhcmJlKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2ZpcnN0KHN0cnRv bG93ZXIoJGdyb2Vzc2UpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICByZXR1cm4gJGZv cm1hdGVkX2ZhcmJncjsNCiAgfQ0KDQogIGZ1bmN0aW9uIGNhbGN1bGF0ZVZp ZXdEaW1lbnNpb25zKCRpbWFnZSkgew0KICAgICAgICBzZXRsb2NhbGUoTENf QUxMLCAiQyIpOw0KICAgICAgICAkbWF4X3dpZHRoID0gMTUwOw0KICAgICAg ICAkbWF4X2hlaWdodCA9IDIwMDsNCiAgICAgICAgDQogICAgICAgICRzaXpl PWdldGltYWdlc2l6ZSgkaW1hZ2UpOw0KICAgICAgICAkd2lkdGg9JHNpemVb MF07DQogICAgICAgICRoZWlnaHQ9JHNpemVbMV07DQogICAgICAgIA0KICAg ICAgICAkZmFjdG9yID0gbWluKCRtYXhfd2lkdGgvJHdpZHRoLCAkbWF4X2hl aWdodC8kaGVpZ2h0KTsNCiAgICAgICAgaWYgKCRmYWN0b3IgPCAxKSB7DQog ICAgICAgICAgJHdpZHRoICo9ICRmYWN0b3I7DQogICAgICAgICAgJGhlaWdo dCAqPSAkZmFjdG9yOw0KICAgICAgICB9DQogICAgICAgICRyZXQgPSBhcnJh eSgid2lkdGgiPT4oc3RyaW5nKSR3aWR0aCwgImhlaWdodCI9PihpbnQpJGhl aWdodCk7DQogICAgICAgIC8vcHJpbnRyKCRyZXQpOw0KICAgICAgICByZXR1 cm4gKCRyZXQpOw0KICB9DQoNCg0KDQo/Pg0K ====
_______________________________________________ Bug-global mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-global
