From kde-i18n-doc Mon Nov 04 04:35:23 2013 From: "T.C. Hollingsworth" Date: Mon, 04 Nov 2013 04:35:23 +0000 To: kde-i18n-doc Subject: Re: GNOME appdata files translation Message-Id: X-MARC-Message: https://marc.info/?l=kde-i18n-doc&m=138353976230003 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--f46d04428230f09b1a04ea5272b1" --f46d04428230f09b1a04ea5272b1 Content-Type: text/plain; charset=UTF-8 Hi Yuri, Albert, other translators! On Sat, Nov 2, 2013 at 1:55 AM, Yuri Chornoivan wrote: > Hi, > > GNOME developers proclaim their goal to add appdata files [1] to every > package and to hide for GNOME users every package without such files in 1 > year (GNOME 3.14). > > So far, even Fedora/KDE package manager (Apper) cannot show appdata by > default (should be recompiled with a specific option). So there is no KDE > distribution that can show appdata. Our very awesome Rex Dieter is already working on getting that going. I, for one, can't wait to have screenshots and other juicy goodness in my apper. :-) > Form the technical PoV, is it possible for scripty to extract messages from > such files (should they be added to the repos) and merge them back? Attached is a rough patch against l10n-kde4/scripts to implement this. A fair bit of it is copy/pasted/otherwise heavily inspired from the .desktop file stuff, since it's sort of doing the same thing. It might make sense to combine a couple of the scripts and just add args to do different stuff depending on whether it's appdata or .desktop, but I wanted to keep it simple for now. Things I've tested: - createappdatacontext.py spits out acceptable looking POTs when fed reasonable contrived arguments (example at [1]) - merge_appdata_files.sh runs applyappdatacontext.py successfully when fed reasonable contrived arguments and spits out a valid combined XML file Things I've not tested: - findappdatafiles, though how bad can you screw up changing arguments to find? - update_translations, because oh my god I already need a drink ;-) Also, the indentation on translated entries looks nothing like the originals, despite a chunk of awkward code that tries to remedy that. Not sure whether it's possible to fix that, or if we need some sort of project-wide policy on indentation to match what the script will do, or if nobody cares. I wouldn't be the least bit surprised if I missed something, especially in update_translations, so please do have a look and let me know how badly I would have broken scripty. ;-) -T.C. [1] https://gist.github.com/tchollingsworth/2e708dd8925c9ff2d939 --f46d04428230f09b1a04ea5272b1 Content-Type: text/x-patch; charset=US-ASCII; name="appdata-l10n.patch" Content-Disposition: attachment; filename="appdata-l10n.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hnl7r9nw0 SW5kZXg6IGFwcGx5YXBwZGF0YWNvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXBwbHlhcHBkYXRh Y29udGV4dC5weQkocmV2aXNpb24gMCkKKysrIGFwcGx5YXBwZGF0YWNvbnRleHQucHkJKHdvcmtp bmcgY29weSkKQEAgLTAsMCArMSw4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2Zyb20g X19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworaW1wb3J0IGdldHRleHQKK2ltcG9y dCBvcworaW1wb3J0IHN5cworaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAorCitp bmZpbGUgPSBzeXMuYXJndlsxXQorb3V0ZmlsZSA9IGluZmlsZSArICcubmV3JworbGFuZ3MgPSBz eXMuYXJndlsyOl0KKworbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ0tERURJ UiddLCAnc2hhcmUnLCAnbG9jYWxlJykKKworIyBnZW5lcmF0ZSBQeXRob24gdHJhbnNsYXRpb24g b2JqZWN0cyBvbiB0aGUgZmx5IHRoYXQgYXJlIGhvb2tlZCB1cCB0byBvdXIKKyMgdGVtcG9yYXJ5 IGNhdGFsb2dzCitjbGFzcyBHVChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAg ICAgICAgc2VsZi5fb2JqcyA9IHt9CisgICAgCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5h bWUpOgorICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9vYmpzOgorICAgICAgICAgICAgZG9t YWluID0gJ2FwcGx5X3swfScuZm9ybWF0KGxhbmcpCisgICAgICAgICAgICBzZWxmLl9vYmpzW25h bWVdID0gZ2V0dGV4dC50cmFuc2xhdGlvbihkb21haW4sIGxvY2FsZWRpciwgbGFuZ3VhZ2VzPVsn YWJjJ10pCisgICAgICAgIAorICAgICAgICByZXR1cm4gc2VsZi5fb2Jqc1tuYW1lXQorZ3QgPSBH VCgpCisKK3RyeToKKyAgICBpbmZoID0gb3BlbihpbmZpbGUpCitleGNlcHQgSU9FcnJvcjoKKyAg ICBzeXMuc3RkZXJyLndyaXRlKCdDYW5ub3Qgb3BlbiBmaWxlIHswfScuZm9ybWF0KGYpKQorICAg IHN5cy5leGl0KDEpCisKK3AgPSBFVC5wYXJzZShpbmZoKQorcm9vdCA9IHAuZ2V0cm9vdCgpCisK K2ZvciBjb250ZXh0IGluICgnbmFtZScsICdzdW1tYXJ5JywgJ2Rlc2NyaXB0aW9uJyk6CisgICAg bXNnaWQgPSBOb25lCisgICAgCisgICAgZm9yIGVsZW0gaW4gcm9vdC5maW5kYWxsKGNvbnRleHQp OgorICAgICAgICAjZmluZCB0aGUgbXNnaWQgYW5kIGluZGVudGlvbiB3ZSBzdHJpcHBlZCBwcmV2 aW91c2x5CisgICAgICAgIGlmIG5vdCAnbGFuZycgaW4gZWxlbS5hdHRyaWI6CisgICAgICAgICAg ICBpZiBjb250ZXh0ICE9ICdkZXNjcmlwdGlvbic6CisgICAgICAgICAgICAgICAgbXNnaWQgPSBl bGVtLnRleHQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyByZXZlcnNlIHRo ZSBzdHJpcHBpbmcgb2YgaW5kZW50YXRpb24KKyAgICAgICAgICAgICAgICBzdGFydCA9ICdcbicg aWYgZWxlbS50ZXh0LnN0YXJ0c3dpdGgoJ1xuJykgZWxzZSAnJworICAgICAgICAgICAgICAgIGlu ZGVudCA9IGVsZW0udGV4dC5sc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICBvbXNnID0gJycu am9pbihFVC50b3N0cmluZyhlKSBmb3IgZSBpbiBlbGVtKS5zcGxpdCgnXG4nKQorICAgICAgICAg ICAgICAgIG1zZ2lkID0gJ1xuJy5qb2luKFsgbGluZVtsZW4oaW5kZW50KTpdIGlmIGxpbmUuc3Rh cnRzd2l0aChpbmRlbnQpIGVsc2UgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv ciBsaW5lIGluIG9tc2cgXSkKKyAgICAgICAgICAgICAgICByZWluZGVudCA9IFsgbGluZS5zdGFy dHN3aXRoKGluZGVudCkgZm9yIGxpbmUgaW4gb21zZyBdCisgICAgICAgICAgICAgICAgcHJpbnQg ZWxlbS50ZXh0CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrCisgICAgCisgICAgI3Ro aXMgZmllbGQgZG9lc24ndCBleGlzdAorICAgIGlmIG1zZ2lkIGlzIE5vbmU6CisgICAgICAgIGNv bnRpbnVlCisgICAgCisgICAgZm9yIGxhbmcgaW4gbGFuZ3M6CisgICAgICAgIGRvbWFpbiA9ICdh cHBseV97MH0nLmZvcm1hdChsYW5nKQorICAgICAgICBvbXNnc3RyID0gZ3RbZG9tYWluXS5nZXR0 ZXh0KG1zZ2lkKS5zcGxpdCgnXG4nKQorICAgICAgICBtc2dzdHIgPSBzdGFydCArICdcbicuam9p bihbIGluZGVudCArIGxpbmUgaWYgcmVpbmRlbnRbaV0gZWxzZSBsaW5lIGZvciBpLCBsaW5lIGlu IGVudW1lcmF0ZShvbXNnKSBdKQorICAgICAgICBtc2dlbGVtID0gRVQuZnJvbXN0cmluZygnPHsw fSBsYW5nPSJ7MX0iPnsyfTwvezB9PlxuJy5mb3JtYXQoY29udGV4dCwgbGFuZywgbXNnc3RyKSkK KyAgICAgICAgCisgICAgICAgICN0cnkgdG8gZmluZCBhbiBleGlzdGluZyB0cmFuc2xhdGlvbiBp biB0aGUgWE1MCisgICAgICAgIGVsZW0gPSByb290LmZpbmQoJy4vL3swfVtAbGFuZz0iezF9Il0n LmZvcm1hdChjb250ZXh0LCBsYW5nKSkKKyAgICAgICAgCisgICAgICAgICNjcmVhdGUgYSBuZXcg bm9kZSBpZiB3ZSBkaWRuJ3QgZmluZCBhbiBleGlzdGluZyBvbmUgdG8gdXNlCisgICAgICAgIGlm IGVsZW0gaXMgTm9uZToKKyAgICAgICAgICAgIHJvb3QuYXBwZW5kKG1zZ2VsZW0pCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICBmb3IgY2hpbGQgaW4gZWxlbToKKyAgICAgICAgICAgICAgICBk ZWwgY2hpbGQKKyAgICAgICAgICAgIGZvciBjaGlsZCBpbiBtc2dlbGVtOgorICAgICAgICAgICAg ICAgIGVsZW0uYXBwZW5kKGNoaWxkKQorICAgICAgICAgICAgZWxlbS50ZXh0ID0gbXNnZWxlbS50 ZXh0CisKK3ggPSBwLndyaXRlKG91dGZpbGUsIGVuY29kaW5nPSd1dGYtOCcsIHhtbF9kZWNsYXJh dGlvbj1UcnVlKQorCitpbmZoLmNsb3NlKCkKSW5kZXg6IGNyZWF0ZWFwcGRhdGFjb250ZXh0LnB5 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGNyZWF0ZWFwcGRhdGFjb250ZXh0LnB5CShyZXZpc2lvbiAwKQorKysg Y3JlYXRlYXBwZGF0YWNvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAor IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9s aXRlcmFscworaW1wb3J0IGNvZGVjcworaW1wb3J0IGRhdGV0aW1lCitmcm9tIG9wdHBhcnNlIGlt cG9ydCBPcHRpb25QYXJzZXIKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2lt cG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKKworZGVmIHBvdGRhdGUoKToKKyAgICBy ZXR1cm4gdGltZS5zdHJmdGltZSgnJVktJWQtJW0gJUg6JU0rMDAwMCcsIHRpbWUuZ210aW1lKCkp CisKK2RlZiBwcmVwYXJlKCk6CisgICAgc3lzLnN0ZG91dCA9IGNvZGVjcy5nZXR3cml0ZXIoJ3V0 Zi04Jykoc3lzLnN0ZG91dCkKKyAgICBzeXMuc3RkZXJyID0gY29kZWNzLmdldHdyaXRlcigndXRm LTgnKShzeXMuc3RkZXJyKQorICAgIAorICAgIHByaW50ICIjLCBmdXp6eSIKKyAgICBwcmludCAi bXNnaWQgXCJcIiIKKyAgICBwcmludCAibXNnc3RyIFwiXCIiCisgICAgcHJpbnQgIlwiUHJvamVj dC1JZC1WZXJzaW9uOiBhcHBkYXRhIGZpbGVzXFxuXCIiCisgICAgcHJpbnQgIlwiUmVwb3J0LU1z Z2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWdzLmtkZS5vcmdcXG5cIiIKKyAgICBwcmludCAiXCJQT1Qt Q3JlYXRpb24tRGF0ZTogIiArIHBvdGRhdGUoKSArICJcXG5cIiIKKyAgICBwcmludCAiXCJQTy1S ZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcXG5cIiIKKyAgICBwcmludCAiXCJM YXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxcQEFERFJFU1M+XFxuXCIiCisgICAgcHJp bnQgIlwiTGFuZ3VhZ2UtVGVhbTogTEFOR1VBR0UgPGtkZS1pMThuLWRvY1xAa2RlLm9yZz5cXG5c IiIKKyAgICBwcmludCAiXCJNSU1FLVZlcnNpb246IDEuMFxcblwiIgorICAgIHByaW50ICJcIkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbiBjaGFyc2V0PVVURi04XFxuXCIiCisgICAgcHJpbnQgIlwi Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxcblwiIgorICAgIHByaW50CisgICAgcHJp bnQKKyAgICAKK2RlZiBwcm9jZXNzZmlsZXMoYmFzZWRpciwgZmlsZXMpOgorICAgIGZvciBmaWxl bmFtZSBpbiBmaWxlczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5maCA9IG9wZW4ob3Mu cGF0aC5qb2luKGJhc2VkaXIsIGZpbGVuYW1lKSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3I6Cisg ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdDYW5ub3Qgb3BlbiBmaWxlIHswfScuZm9ybWF0 KGYpKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgCisgICAgICAgIHJvb3QgPSBFVC5w YXJzZShpbmZoKQorICAgICAgICAKKyAgICAgICAgZm9yIGNvbnRleHQgaW4gKCduYW1lJywgJ3N1 bW1hcnknLCAnZGVzY3JpcHRpb24nKToKKyAgICAgICAgICAgIGZvciBlbGVtIGluIHJvb3QuZmlu ZGFsbChjb250ZXh0KToKKyAgICAgICAgICAgICAgICBpZiBub3QgJ2xhbmcnIGluIGVsZW0uYXR0 cmliOgorICAgICAgICAgICAgICAgICAgICBwcmludCAiIzogezB9Ii5mb3JtYXQoZmlsZW5hbWUp CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJtc2djdHh0IFwiezB9XCIiLmZvcm1hdChjb250 ZXh0KQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgY29udGV4 dCAhPSAnZGVzY3JpcHRpb24nOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIm1zZ2lk IFwiezB9XCIiLmZvcm1hdChlbGVtLnRleHQpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB0aGUgaW5kZW50YXRpb24gdG8gbWFrZSBh IG5pY2UgbWVzc2FnZSBmb3IgdHJhbnNsYXRvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu ZGVudCA9IGVsZW0udGV4dC5sc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1z Z2lkID0gJycuam9pbihFVC50b3N0cmluZyhlKSBmb3IgZSBpbiBlbGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgbGluZXMgPSBbIGxpbmVbbGVuKGluZGVudCk6XSBpZiBsaW5lLnN0YXJ0c3dp dGgoaW5kZW50KSBlbHNlIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv ciBsaW5lIGluIG1zZ2lkLnNwbGl0KCdcbicpIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBy aW50ICJtc2dpZCBcIlwiIi5mb3JtYXQobXNnaWQpCisgICAgICAgICAgICAgICAgICAgICAgICBm b3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnInsw fSInLmZvcm1hdChsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgIHByaW50ICJtc2dzdHIgXCJcIiIKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQKKyAg ICAgICAgCisgICAgICAgIGluZmguY2xvc2UoKQorICAgICAgICAKK2RlZiBtYWluKCk6CisgICAg cCA9IE9wdGlvblBhcnNlcigpCisgICAgcC5hZGRfb3B0aW9uKCctLWZpbGUtbGlzdCcpCisgICAg cC5hZGRfb3B0aW9uKCctLWJhc2UtZGlyJykKKyAgICBvcHRpb25zLCBhcmdzID0gcC5wYXJzZV9h cmdzKCkKKyAgICAKKyAgICBmaWxlbGlzdCA9IG9wZW4ob3B0aW9ucy5maWxlX2xpc3QpLnJlYWQo KS5zcGxpdCgnXG4nKQorICAgIAorICAgIHByZXBhcmUoKQorICAgIHByb2Nlc3NmaWxlcyhvcHRp b25zLmJhc2VfZGlyLCBmaWxlbGlzdCkKKyAgICAKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6 CisgICAgbWFpbigpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBjcmVhdGVhcHBkYXRhY29udGV4dC5w eQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IGZpbmRhcHBkYXRhZmlsZXMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZmluZGFwcGRhdGFmaWxlcwkocmV2aXNpb24gMCkKKysrIGZpbmRhcHBkYXRhZmls ZXMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorIyEgL3Vzci9iaW4vZW52IGJhc2gK KyMgVGhpcyBmaWxlIGV4dHJhY3RzIGFwcGRhdGEgZmlsZXMgZm9yIHRyYW5zbGF0aW9uCisKK2lm IHRlc3QgLXogIiQxIjsgdGhlbgorICBlY2hvICJjYWxsOiAkMCA8ZmlsZW5hbWU+IgorICBleGl0 CitmaQorCitmaWxlbGlzdD0kMQorZGlyPWBkaXJuYW1lICQwYAorLiAkZGlyL2dldF9wYXRocwor CittbD0iYGxpc3RfbW9kdWxlcyAkZGlyYCBsMTBuIgorCitybSAtZiAiJGZpbGVsaXN0Il8qICRm aWxlbGlzdAorCis6ID4gJGZpbGVsaXN0CisKK2ZvciBtb2QgaW4gJG1sOyBkbworICBkaXI9JEJB U0VESVIvYGdldF9wYXRoICRtb2RgCisgIGlmIHRlc3QgISAtZCAkZGlyOyB0aGVuCisgICAgZWNo byAiRVJST1I6IG1vZHVsZSAkbW9kIGNhbm5vdCBiZSBmb3VuZCBpbiBkaXJlY3RvcnkgJGRpciIK KyAgICBjb250aW51ZQorICBmaQorICBlY2hvICIkZGlyIgorICBmaW5kICRkaXIgLW5hbWUgXCou YXBwZGF0YS54bWwgIC1hIFwoIC10eXBlIGYgLW8gLXR5cGUgbCBcKSA+PiAkZmlsZWxpc3QKKyAg aW5pdGlhbGRpcj1gcHdkYAorICBjZCAkaW5pdGlhbGRpcgorZG9uZQorCitzb3J0IC1vICRmaWxl bGlzdCAtdSAkZmlsZWxpc3QKKworZm9yIG1vZCBpbiAkbWw7IGRvIAorICAgIHN1YmZpbGU9IiRm aWxlbGlzdCJfJG1vZAorICAgIGZncmVwICRCQVNFRElSL2BnZXRfcGF0aCAkbW9kYC8gJGZpbGVs aXN0ID4gJHN1YmZpbGUKK2RvbmUKKwpJbmRleDogbWVyZ2VfYXBwZGF0YV9maWxlcy5zaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBtZXJnZV9hcHBkYXRhX2ZpbGVzLnNoCShyZXZpc2lvbiAwKQorKysgbWVyZ2Vf YXBwZGF0YV9maWxlcy5zaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisjISAvYmlu L2Jhc2gKKyMga2F0ZTogc3BhY2UtaW5kZW50IG9uOyBpbmRlbnQtd2lkdGggMjsgcmVwbGFjZS10 YWJzIG9uOworbGFuZ2ZpbGU9YHRlbXBmaWxlYAorS0RFRElSPWB0ZW1wZmlsZWAKK2xvZ2ZpbGU9 YHRlbXBmaWxlYAoraWYgdGVzdCAtZiAkS0RFRElSOyB0aGVuIHJtIC1mICRLREVESVI7IG1rZGly ICRLREVESVI7IGZpCitleHBvcnQgS0RFRElSOworbGlzdHM9YGxzIC0xIGFwcGRhdGFfZmlsZXNf KmAKKzogPiAkbG9nZmlsZSA7CitsYW5ndWFnZXM9YGNhdCBzdWJkaXJzYDsgCitmb3IgbGlzdGZp bGUgaW4gJGxpc3RzOyBkbyAKKyAgbW9kPWBlY2hvICRsaXN0ZmlsZSB8IHNlZCAtZSAicyxhcHBk YXRhX2ZpbGVzXywsImAKKyAgOiA+ICRsYW5nZmlsZSA7CisgIGZvciBsYW5nIGluICRsYW5ndWFn ZXM7IGRvIAorICAgIGZpbGU9YGZpbmQgJGxhbmcvbWVzc2FnZXMgLW5hbWUgImFwcGRhdGFfJG1v ZC5wbyJgCisgICAgaWYgdGVzdCAteiAiJGZpbGUiOyB0aGVuIAorICAgICAgY29udGludWUKKyAg ICBmaQorICAgIGNoYXJzZXRsaW5lPWBlZ3JlcCAiXlwiQ29udGVudC1UeXBlOiAuKi8uKjs/IGNo YXJzZXQ9LipcblwiIiAkZmlsZWAKKyAgICBpZiB0ZXN0IC16ICIkY2hhcnNldGxpbmUiOyB0aGVu IAorICAgICAgZWNobyAiRVJST1I6IGZpbGUgJGZpbGUgY29udGFpbnMgbm8gY29ycmVjdCBjaGFy c2V0IGRlY2xhcmF0aW9uISIKKyAgICAgIGZncmVwIC1pICJDb250ZW50LVR5cGUiICRmaWxlCisg ICAgICBlY2hvICItLSIKKyAgICAgIGNvbnRpbnVlCisgICAgZWxzZQorICAgICAgY2hhcnNldD1g ZWNobyAkY2hhcnNldGxpbmUgfCBzZWQgLWUgInMjXi4qY2hhcnNldD1cKC4qXCkuLlwiI1wxIyJg CisgICAgICAjIFRoZSBHZXR0ZXh0IHRvb2xzIGFyZSBzdHJpY3QgYWJvdXQgdGhlIHNwZWxsaW5n IG9mIFVURi04CisgICAgICBpZiB0ZXN0ICIkY2hhcnNldCIgIT0gInV0Zi04IiAtYSAiJGNoYXJz ZXQiICE9ICJVVEYtOCI7IHRoZW4KKyAgICAgICAgZWNobyAiRVJST1I6IGZpbGUgJGZpbGUgaGFz IG5vbi1VVEYtOCBjaGFyc2V0OiAkY2hhcnNldCIKKyAgICAgICAgY29udGludWUKKyAgICAgIGZp CisgICAgZmkKKyAgICBta2RpciAtcCAkS0RFRElSL3NoYXJlL2xvY2FsZS9hYmMvTENfTUVTU0FH RVMKKyAgICBpZiAhIG1zZ2ZtdCAkZmlsZSAtbyAkS0RFRElSL3NoYXJlL2xvY2FsZS9hYmMvTENf TUVTU0FHRVMvYXBwbHlfJGxhbmcubW87IHRoZW4gCisgICAgICAgICAgICBlY2hvICJFUlJPUjog ZmlsZSAkZmlsZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIGJ5IG1zZ2ZtdCEiCisgICAgICAgICAg ICBjb250aW51ZQorICAgIGZpCisgICAgZWNobyAkbGFuZyA+PiAkbGFuZ2ZpbGUKKyAgZG9uZQor ICBmaWxlbGFuZ3VhZ2VzPWBzb3J0IC11ICRsYW5nZmlsZWAKKyAgbGlzdD1gY2F0ICRsaXN0Zmls ZWAgCisgIGZvciBpIGluICRsaXN0OyBkbyAKKyAgICBpZiBweXRob24gLi9zY3JpcHRzL2FwcGx5 YXBwZGF0YWNvbnRleHQucHkgJGkgJGZpbGVsYW5ndWFnZXMgPj4gJGxvZ2ZpbGUgMj4mMTsgdGhl bgorICAgICAgaWYgY21wIC1zICRpICRpLm5ldzsgdGhlbgorICAgICAgICBybSAkaS5uZXcKKyAg ICAgIGVsc2UKKyAgICAgICAgY2htb2QgLS1yZWZlcmVuY2U9JGkgJGkubmV3CisgICAgICAgIG12 IC1mICRpLm5ldyAkaQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBlY2hvICJFUlJPUjogYXBw bHlhcHBkYXRhY29udGV4dC5weSBmYWlsZWQgZm9yIGZpbGUgJGkiCisgICAgZmkKKyAgZG9uZQor ZG9uZQorc29ydCAkbG9nZmlsZQorcm0gLWYgJGxvZ2ZpbGUgJGxhbmdmaWxlCitybSAtcmYgJEtE RURJUgpJbmRleDogdXBkYXRlX3RyYW5zbGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1cGRhdGVfdHJh bnNsYXRpb25zCShyZXZpc2lvbiAxMzY4NDg3KQorKysgdXBkYXRlX3RyYW5zbGF0aW9ucwkod29y a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsMjQgQEAKICAgcm0gLWYgZGVza3RvcC4kJCBkZXNrdG9w LiQkLnRtcAogfQogCitleHRyYWN0X2FwcGRhdGEoKSB7CisgIHB5dGhvbiAuL3NjcmlwdHMvY3Jl YXRlYXBwZGF0YWNvbnRleHQucHkgLS1maWxlLWxpc3Q9Li8kMSAtLWJhc2UtZGlyPSQyID4gYXBw ZGF0YS4kJC50bXAKKyAgZGVzdD0kMworICBtc2d1bmlxIC0tdG8tY29kZT1VVEYtOCAtbyBhcHBk YXRhLiQkIGFwcGRhdGEuJCQudG1wIDI+L2Rldi9udWxsCisgIGlmIHRlc3QgLWYgYXBwZGF0YS4k JDsgdGhlbgorICAgIGlmIHRlc3QgISAtZiAgJGRlc3Q7IHRoZW4gCisgICAgICBlY2hvICJGaWxl ICRkZXN0IGlzIG1pc3NpbmchIiAKKyAgICAgIG12IGFwcGRhdGEuJCQgJGRlc3QKKyAgICBlbGlm IGRpZmYgLXEgLUleXCJQT1QtQ3JlYXRpb24tRGF0ZTogYXBwZGF0YS4kJCAkZGVzdCA+IC9kZXYv bnVsbDsgdGhlbgorICAgICAgcm0gLWYgYXBwZGF0YS4kJAorICAgICAgdG91Y2ggJGRlc3QKKyAg ICBlbHNlCisgICAgICBtdiBhcHBkYXRhLiQkICRkZXN0CisgICAgZmkKKyAgZmkKKyAgcm0gLWYg YXBwZGF0YS4kJCBhcHBkYXRhLiQkLnRtcAorfQorCiBwb3N0cHJvY2Vzc19wb3RfZmlsZSgpCiB7 CiAjICQxOiBuYW1lIG9mIHRoZSBmaWxlIHRvIHByb2Nlc3MKQEAgLTMzMCwxNCArMzQ4LDE2IEBA CiAgICAgZmkKICAgICBybSAtZiB0ZW1wbGF0ZW5hbWVzLnRtcAogICAgIAotICAgIHRlc3QgLXog IiRWRVJCT1NFMSIgfHwgZWNobyAiY3JlYXRpbmcgZGVza3RvcCoucG90IGZpbGVzIgorICAgIHRl c3QgLXogIiRWRVJCT1NFMSIgfHwgZWNobyAiY3JlYXRpbmcgKGRlc2t0b3B8YXBwZGF0YSkqLnBv dCBmaWxlcyIKICAgICB0ZXN0IC16ICIkVElNSU5HMSIgfHwgZGF0ZQogICAgIGJhc2ggc2NyaXB0 cy9maW5kZmlsZXMgYHB3ZGAvYWxsX2ZpbGVzIAorICAgIGJhc2ggc2NyaXB0cy9maW5kYXBwZGF0 YWZpbGVzIGBwd2RgL2FwcGRhdGFfZmlsZXMKIAogICAgIGZvciBtb2QgaW4gJHJlbGVhc2VzIGwx MG47IGRvCiAgICAgICBjYXNlICIkbW9kIiBpbgogICAgICAgICBleHRyYWdlYXItKl8qKQotICAg ICAgICAgIGV4dHJhY3RfZGVza3RvcCBhbGxfZmlsZXNfJG1vZCAkQkFTRURJUi9gZ2V0X3BhdGgg JG1vZGAgdGVtcGxhdGVzL21lc3NhZ2VzL2BnZXRfcG9fcGF0aCAkbW9kYC9kZXNrdG9wXyRtb2Qu cG90CisgICAgICAgICAgZXh0cmFjdF9kZXNrdG9wIGFsbF9maWxlc18kbW9kICRCQVNFRElSL2Bn ZXRfcGF0aCAkbW9kYCB0ZW1wbGF0ZXMvbWVzc2FnZXMvYGdldF9wb19wYXRoICRtb2RgL2FwcGRh dGFfJG1vZC5wb3QKKyAgICAgICAgICBleHRyYWN0X2FwcGRhdGEgYXBwZGF0YV9maWxlc18kbW9k ICRCQVNFRElSL2BnZXRfcGF0aCAkbW9kYCB0ZW1wbGF0ZXMvbWVzc2FnZXMvYGdldF9wb19wYXRo ICRtb2RgL2FwcGRhdGFfJG1vZC5wb3QKICAgICAgICAgICA7OwogICAgICAgICBleHRyYWdlYXIt KikKICAgICAgICAgICBiYXNlZGlyPSRCQVNFRElSL2BnZXRfcGF0aCAkbW9kYApAQCAtMzQ1LDE1 ICszNjUsMjAgQEAKICAgICAgICAgICBmb3Igc3ViZGlyIGluICRzdWJkaXJzOyBkbwogICAgICAg ICAgICAgbW9kcz0iJG1vZCIiXyRzdWJkaXIiCiAgICAgICAgICAgICBmZ3JlcCAkYmFzZWRpci8k c3ViZGlyIGFsbF9maWxlc18kbW9kID4gYWxsX2ZpbGVzXyRtb2RzCisgICAgICAgICAgICBmZ3Jl cCAkYmFzZWRpci8kc3ViZGlyIGFwcGRhdGFfZmlsZXNfJG1vZCA+IGFwcGRhdGFfZmlsZXNfJG1v ZHMKICAgICAgICAgICAgIGV4dHJhY3RfZGVza3RvcCBhbGxfZmlsZXNfJG1vZHMgJGJhc2VkaXIv JHN1YmRpciB0ZW1wbGF0ZXMvbWVzc2FnZXMvJG1vZC9kZXNrdG9wXyRtb2RzLnBvdAorICAgICAg ICAgICAgZXh0cmFjdF9hcHBkYXRhIGFsbF9maWxlc18kbW9kcyAkYmFzZWRpci8kc3ViZGlyIHRl bXBsYXRlcy9tZXNzYWdlcy8kbW9kL2FwcGRhdGFfJG1vZHMucG90CiAgICAgICAgICAgZG9uZQog ICAgICAgICAgIHJtIC1mIGFsbF9maWxlc18kbW9kCisgICAgICAgICAgcm0gLWYgYXBwZGF0YV9m aWxlc18kbW9kCiAgICAgICAgICAgOzsKICAgICAgICAgbDEwbikKICAgICAgICAgICBleHRyYWN0 X2Rlc2t0b3AgYWxsX2ZpbGVzXyRtb2QgJEJBU0VESVIvYGdldF9wYXRoICRtb2RgIHRlbXBsYXRl cy9tZXNzYWdlcy9rZGVsaWJzL2Rlc2t0b3BfbDEwbi5wb3QKKyAgICAgICAgICBleHRyYWN0X2Fw cGRhdGEgYXBwZGF0YV9maWxlc18kbW9kICRCQVNFRElSL2BnZXRfcGF0aCAkbW9kYCB0ZW1wbGF0 ZXMvbWVzc2FnZXMva2RlbGlicy9hcHBkYXRhX2wxMG4ucG90CiAgICAgICAgICAgOzsKICAgICAg ICAgKikKICAgICAgICAgICBleHRyYWN0X2Rlc2t0b3AgYWxsX2ZpbGVzXyRtb2QgJEJBU0VESVIv YGdldF9wYXRoICRtb2RgIHRlbXBsYXRlcy9tZXNzYWdlcy9gZ2V0X3BvX3BhdGggJG1vZGAvZGVz a3RvcF8kbW9kLnBvdAorICAgICAgICAgIGV4dHJhY3RfYXBwZGF0YSBhcHBkYXRhX2ZpbGVzXyRt b2QgJEJBU0VESVIvYGdldF9wYXRoICRtb2RgIHRlbXBsYXRlcy9tZXNzYWdlcy9gZ2V0X3BvX3Bh dGggJG1vZGAvYXBwZGF0YV8kbW9kLnBvdAogICAgICAgICAgIDs7CiAgICAgICBlc2FjCiAgICAg ZG9uZQpAQCAtMzYyLDcgKzM4Nyw3IEBACiAgICAgdGVzdCAteiAiJFRJTUlORzEiIHx8IGRhdGUK ICAgICBpZiBjZCB0ZW1wbGF0ZXMvbWVzc2FnZXM7IHRoZW4KICAgICAgIGxpc3Q9YGZpbmQgLiAt bmFtZSBkZXNrdG9wXCoucG90YAotICAgICAgIyBkZXNrdG9wKi5wb3QgZmlsZXMgaGF2ZSBhbHJl YWR5IGEgY29ycmVjdCBDb250ZW50LVR5cGUsIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGl0 IG9yIGV2ZW4gdG8gbW9kaWZ5IGl0CisgICAgICAjIChkZXNrdG9wfGFwcGRhdGEpKi5wb3QgZmls ZXMgaGF2ZSBhbHJlYWR5IGEgY29ycmVjdCBDb250ZW50LVR5cGUsIHNvIHdlIGRvIG5vdCBuZWVk IHRvIGNoZWNrIGl0IG9yIGV2ZW4gdG8gbW9kaWZ5IGl0CiAgICAgICBmb3IgaSBpbiAkbGlzdDsg ZG8KICAgICAgICAgaWYgdGVzdCAhIC1mICRCQVNFRElSL2JhY2t1cC90ZW1wbGF0ZXMvbWVzc2Fn ZXMvJGk7IHRoZW4KICAgICAgICAgICBlY2hvICJBZGRpbmcgZGVza3RvcCoucG90IGZpbGU6ICRp IgpAQCAtMzczLDcgKzM5OCw3IEBACiAgICAgICAgICAgY3AgLWYgJEJBU0VESVIvYmFja3VwL3Rl bXBsYXRlcy9tZXNzYWdlcy8kaSAkaQogICAgICAgICBmaQogICAgICAgZG9uZQotICAgICAgc3Zu IGNvbW1pdCAkU1ZOUVVJRVRGTEFHIC1tICJTVk5fU0lMRU5UIG1hZGUgbWVzc2FnZXMgKGRlc2t0 b3AqLnBvdCBmaWxlIGNvbW1pdHRlZCkiID4gL2Rldi9udWxsCisgICAgICBzdm4gY29tbWl0ICRT Vk5RVUlFVEZMQUcgLW0gIlNWTl9TSUxFTlQgbWFkZSBtZXNzYWdlcyAoZGVza3RvcC9hcHBkYXRh Ki5wb3QgZmlsZSBjb21taXR0ZWQpIiA+IC9kZXYvbnVsbAogICAgICAgY2QgLi4vLi4KICAgICBm aQogICAgIApAQCAtNDc0LDE0ICs0OTksMTUgQEAKIAogICBpZiB0cnVlOyB0aGVuCiAgICAgaWYg Y2QgJHRyYW5zbW9kOyB0aGVuCi0gICAgICB0ZXN0IC16ICIkVkVSQk9TRTEiIHx8IGVjaG8gImFw cGx5aW5nIGRlc2t0b3AgZmlsZSB0cmFuc2xhdGlvbnMiCisgICAgICB0ZXN0IC16ICIkVkVSQk9T RTEiIHx8IGVjaG8gImFwcGx5aW5nIGRlc2t0b3AvYXBwZGF0YSBmaWxlIHRyYW5zbGF0aW9ucyIK ICAgICAgIHRlc3QgLXogIiRUSU1JTkcxIiB8fCBkYXRlCiAgICAgICAjIE5vdGU6IHRoZSBleGVj dXRhYmxlIHNob3VsZCBub3QgYmUgcmVuYW1lZCB0byBhcHBseWNvbnRleHQgdG8gYXZvaWQgdG8g aGF2ZSB0byBjaGFuZ2UgdGhlIHNjcmlwdCBtZXJnZV9kZXNrdG9wX2ZpbGVzLnNoCiAgICAgICBn KysgLU8yIC1tYXJjaD1ub2NvbmEgLW8gYXBwbHkgc2NyaXB0cy9hcHBseWNvbnRleHQuY3BwCiAg ICAgICBiYXNoIHNjcmlwdHMvbWVyZ2VfZGVza3RvcF9maWxlcy5zaCAKKyAgICAgIGJhc2ggc2Ny aXB0cy9tZXJnZV9hcHBkYXRhX2ZpbGVzLnNoCiAgICAgICBjZCAkQkFTRURJUgogICAgIGZpCi0g ICAgdGVzdCAteiAiJFZFUkJPU0UxIiB8fCBlY2hvICJjb21taXRpbmcgZGVza3RvcCBmaWxlcyIK KyAgICB0ZXN0IC16ICIkVkVSQk9TRTEiIHx8IGVjaG8gImNvbW1pdGluZyBkZXNrdG9wL2FwcGRh dGEgZmlsZXMiCiAgICAgdGVzdCAteiAiJFRJTUlORzEiIHx8IGRhdGUKICAgICBmb3IgaSBpbiAk cmVsZWFzZXMgbDEwbjsgZG8KICAgICAgIGlmIGNkICRCQVNFRElSL2BnZXRfcGF0aCAkaWA7IHRo ZW4KQEAgLTQ4OSwxMiArNTE1LDEyIEBACiAgICAgICAgIGJyYW5jaD1gZ2V0X2JyYW5jaCAkaWAK ICAgICAgICAgY2FzZSAiJHZjcyIgaW4KICAgICAgICAgICBzdm4pCi0gICAgICAgICAgICBpZiAh IHN2biBjb21taXQgJFNWTlFVSUVURkxBRyAtbSAiU1ZOX1NJTEVOVCBtYWRlIG1lc3NhZ2VzICgu ZGVza3RvcCBmaWxlKSIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgIGlmICEgc3ZuIGNv bW1pdCAkU1ZOUVVJRVRGTEFHIC1tICJTVk5fU0lMRU5UIG1hZGUgbWVzc2FnZXMgKC5kZXNrdG9w IGFuZCBhcHBkYXRhIGZpbGVzKSIgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgIyBJ ZiB0aGUgY29tbWl0IGZhaWxzLCB0aGVuIGl0IG1lYW5zIHRoYXQgYSBmaWxlIHdhcyBtb2RpZmll ZC4gTm9ybWFsbHkgaXQgd2lsbCBub3QgYmUgYSAuZGVza3RvcCBmaWxlCiAgICAgICAgICAgICAg IGVjaG8gIk5lZWQgdG8gdXBkYXRlICRpIgogICAgICAgICAgICAgICBzdm4gdXBkYXRlICRTVk5R VUlFVEZMQUcKLSAgICAgICAgICAgICAgaWYgISBzdm4gY29tbWl0ICRTVk5RVUlFVEZMQUcgLW0g IlNWTl9TSUxFTlQgbWFkZSBtZXNzYWdlcyAoLmRlc2t0b3AgZmlsZSwgc2Vjb25kIHRyeSkiOyB0 aGVuCi0gICAgICAgICAgICAgICAgZWNobyAiRVJST1I6IGNvbW1pdGluZyAuZGVza3RvcCBmaWxl cyBmYWlsZWQgZm9yIG1vZHVsZSAkaSEiCisgICAgICAgICAgICAgIGlmICEgc3ZuIGNvbW1pdCAk U1ZOUVVJRVRGTEFHIC1tICJTVk5fU0lMRU5UIG1hZGUgbWVzc2FnZXMgKC5kZXNrdG9wIGFuZCBh cHBkYXRhIGZpbGVzLCBzZWNvbmQgdHJ5KSI7IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICJF UlJPUjogY29tbWl0aW5nIC5kZXNrdG9wL2FwcGRhdGEgZmlsZXMgZmFpbGVkIGZvciBtb2R1bGUg JGkhIgogICAgICAgICAgICAgICAgIHN2biByZXZlcnQgLVIgLgogICAgICAgICAgICAgICBmaQog ICAgICAgICAgICAgZmkKQEAgLTUwMyw5ICs1MjksOSBAQAogICAgICAgICAgICAgaWYgZ2l0IHB1 bGwgJFNWTlFVSUVURkxBRyBvcmlnaW4gJGJyYW5jaDsgdGhlbgogICAgICAgICAgICAgICBzdGF0 dXM9YGdpdCBzdGF0dXMgLXNgCiAgICAgICAgICAgICAgIGlmIFsgIngkc3RhdHVzIiAhPSAieCIg XTsgdGhlbgotICAgICAgICAgICAgICAgIGlmIGdpdCBjb21taXQgLWEgJFNWTlFVSUVURkxBRyAt bSAiU1ZOX1NJTEVOVCBtYWRlIG1lc3NhZ2VzICguZGVza3RvcCBmaWxlKSI7IHRoZW4KKyAgICAg ICAgICAgICAgICBpZiBnaXQgY29tbWl0IC1hICRTVk5RVUlFVEZMQUcgLW0gIlNWTl9TSUxFTlQg bWFkZSBtZXNzYWdlcyAoLmRlc2t0b3AgYW5kIGFwcGRhdGEgZmlsZXMpIjsgdGhlbgogICAgICAg ICAgICAgICAgICAgaWYgISBnaXQgcHVzaCAkU1ZOUVVJRVRGTEFHIG9yaWdpbiBIRUFEOiRicmFu Y2g7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgZWNobyAiRVJST1I6IGNvbW1pdGluZyAuZGVz a3RvcCBmaWxlcyBmYWlsZWQgZm9yIG1vZHVsZSAkaSEiCisgICAgICAgICAgICAgICAgICAgIGVj aG8gIkVSUk9SOiBjb21taXRpbmcgLmRlc2t0b3AvYXBwZGF0YSBmaWxlcyBmYWlsZWQgZm9yIG1v ZHVsZSAkaSEiCiAgICAgICAgICAgICAgICAgICAgIGdpdCByZXNldCAtLWhhcmQgJFNWTlFVSUVU RkxBRyBvcmlnaW4vJGJyYW5jaAogICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAg ICBlbHNlCkBAIC01MTMsNyArNTM5LDcgQEAKICAgICAgICAgICAgICAgICBmaQogICAgICAgICAg ICAgICBmaQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBlY2hvICJFUlJPUjogY29t bWl0aW5nIC5kZXNrdG9wIGZpbGVzIGZhaWxlZCBmb3IgbW9kdWxlICRpIChwb3NzaWJsZSBjb25m bGljdCkiCisgICAgICAgICAgICAgIGVjaG8gIkVSUk9SOiBjb21taXRpbmcgLmRlc2t0b3AvYXBw ZGF0YSBmaWxlcyBmYWlsZWQgZm9yIG1vZHVsZSAkaSAocG9zc2libGUgY29uZmxpY3QpIgogICAg ICAgICAgICAgICBnaXQgcmVzZXQgLS1oYXJkICRTVk5RVUlFVEZMQUcgb3JpZ2luLyRicmFuY2gK ICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICA7OwpAQCAtNTI1LDcgKzU1MSw3IEBACiAgICAg ICBmaQogICAgIGRvbmUKICAgZWxzZQotICAgIGVjaG8gIlNraXBwaW5nIHByb2Nlc3Npbmcgb2Yg LmRlc2t0b3AgZmlsZXMiCisgICAgZWNobyAiU2tpcHBpbmcgcHJvY2Vzc2luZyBvZiAuZGVza3Rv cC9hcHBkYXRhIGZpbGVzIgogICBmaQogCiAgIHJtIC1yZiBhcHBseSBhbGxfZmlsZXMqIG1lc3Nh Z2VzCg== --f46d04428230f09b1a04ea5272b1--