From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Imran M Yousuf" Subject: [RFC] Initializing and updating submodules during clone and recursion over submodules Date: Mon, 7 Jan 2008 08:27:25 +0600 Message-ID: <7bfdc29a0801061827k7bb18017k17f0e1ae5fff0873@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_26615_22457832.1199672845360" To: git@vger.kernel.org X-From: git-owner@vger.kernel.org Mon Jan 07 03:28:02 2008 Return-path: Envelope-to: gcvg-git-2@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1JBhiX-0002ua-EV for gcvg-git-2@gmane.org; Mon, 07 Jan 2008 03:27:58 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752275AbYAGC13 (ORCPT ); Sun, 6 Jan 2008 21:27:29 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752165AbYAGC13 (ORCPT ); Sun, 6 Jan 2008 21:27:29 -0500 Received: from fk-out-0910.google.com ([209.85.128.188]:21741 "EHLO fk-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751844AbYAGC12 (ORCPT ); Sun, 6 Jan 2008 21:27:28 -0500 Received: by fk-out-0910.google.com with SMTP id z23so8288680fkz.5 for ; Sun, 06 Jan 2008 18:27:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; bh=OPCQynVTRD+hB3jUvrAGqqCTBZPPzBR8LZNY54+fDU4=; b=bNLWSiErqKiZ8Ujy0SWLS9QD/LgKRq+eu2nF4VXtFsa43ghO9abhDs/pFdHN3Oo9wvWy3ClyHryGihAOi9SsHnt1tKnK31d2CbPXTKPqM2Rz/Xv2jBMiFuCAxjusGNi3xxmAk40Ny3QBlA00X6TtWUiUhoay04Iqwv7IAS+S01w= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=SNqLly7VDBoCRyPadLCqrr2szpJIpXpjZsoZ1g/Npc8+FILRLdD2L89xbhq67Z4ZNSfhLX4DgUHyUe47m7svz/fp1o8hp6X/6iiQ8gunDBedSDalorleeEFeKJtWH1QIKt4NcuxgKpdXdlZ8JQEOiPZK3ilXDRqJ6WYVm5GKywY= Received: by 10.78.179.12 with SMTP id b12mr22523404huf.34.1199672845369; Sun, 06 Jan 2008 18:27:25 -0800 (PST) Received: by 10.78.50.5 with HTTP; Sun, 6 Jan 2008 18:27:25 -0800 (PST) Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: ------=_Part_26615_22457832.1199672845360 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi All, I have added "recurse" command to the git-submodule to recurse any git command and also added fetching of submodules during cloning. Please have a look at the changes and let me know your comments on them. Thank you and best regards, -- Imran M Yousuf ------=_Part_26615_22457832.1199672845360 Content-Type: application/octet-stream; name=git-submodule Content-Transfer-Encoding: base64 X-Attachment-Id: f_fb4dym1p1 Content-Disposition: attachment; filename=git-submodule IyEvYmluL3NoCiMKIyBnaXQtc3VibW9kdWxlcy5zaDogYWRkLCBpbml0LCB1cGRhdGUgb3IgbGlz dCBnaXQgc3VibW9kdWxlcwojIG9yIHJlY3Vyc2UgYW55IGdpdCBjb21tYW5kIG92ZXIgdGhlIHN1 Ym1vZHVsZXMgcmVjdXJzaXZlbHkuCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDcgTGFycyBIamVtbGkK ClVTQUdFPSdbWy0tcXVpZXRdIFstLWNhY2hlZF0gW2FkZCA8cmVwbz4gWy1iIGJyYW5jaF18c3Rh dHVzfGluaXR8dXBkYXRlXSBbLS1dIFs8cGF0aD4uLi5dfFtyZWN1cnNlIFstdl0gY29tbWFuZCBh cmd1bWVudHMgLi4uXV0nCi4gZ2l0LXNoLXNldHVwCnJlcXVpcmVfd29ya190cmVlCgphZGQ9CmJy YW5jaD0KaW5pdD0KdXBkYXRlPQpzdGF0dXM9CnF1aWV0PQpjYWNoZWQ9CgojCiMgcHJpbnQgc3R1 ZmYgb24gc3Rkb3V0IHVubGVzcyAtcSB3YXMgc3BlY2lmaWVkCiMKc2F5KCkKewoJaWYgdGVzdCAt eiAiJHF1aWV0IgoJdGhlbgoJCWVjaG8gIiRAIgoJZmkKfQoKIyBORUVEU1dPUks6IGlkZW50aWNh bCBmdW5jdGlvbiBleGlzdHMgaW4gZ2V0X3JlcG9fYmFzZSBpbiBjbG9uZS5zaApnZXRfcmVwb19i YXNlKCkgewoJKAoJCWNkICJgL2Jpbi9wd2RgIiAmJgoJCWNkICIkMSIgfHwgY2QgIiQxLmdpdCIg JiYKCQl7CgkJCWNkIC5naXQKCQkJcHdkCgkJfQoJKSAyPi9kZXYvbnVsbAp9CgojCiMgTWFwIHN1 Ym1vZHVsZSBwYXRoIHRvIHN1Ym1vZHVsZSBuYW1lCiMKIyAkMSA9IHBhdGgKIwptb2R1bGVfbmFt ZSgpCnsKCSMgRG8gd2UgaGF2ZSAic3VibW9kdWxlLjxzb21ldGhpbmc+LnBhdGggPSAkMSIgZGVm aW5lZCBpbiAuZ2l0bW9kdWxlcyBmaWxlPwoJcmU9JChwcmludGYgJyVzJyAiJDEiIHwgc2VkIC1l ICdzL1tdLlteJFxcKl0vXFwmL2cnKQoJbmFtZT0kKCBHSVRfQ09ORklHPS5naXRtb2R1bGVzIFwK CQlnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAnXnN1Ym1vZHVsZVwuLipcLnBhdGgkJyB8CgkJc2Vk IC1uIC1lICdzfF5zdWJtb2R1bGVcLlwoLipcKVwucGF0aCAnIiRyZSInJHxcMXxwJyApCiAgICAg ICB0ZXN0IC16ICIkbmFtZSIgJiYKICAgICAgIGRpZSAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91 bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRwYXRoJyIKICAgICAgIGVjaG8gIiRuYW1lIgp9 CgojCiMgQ2xvbmUgYSBzdWJtb2R1bGUKIwojIFByaW9yIHRvIGNhbGxpbmcsIG1vZHVsZXNfdXBk YXRlIGNoZWNrcyB0aGF0IGEgcG9zc2libHkgZXhpc3RpbmcKIyBwYXRoIGlzIG5vdCBhIGdpdCBy ZXBvc2l0b3J5LgojIExpa2V3aXNlLCBtb2R1bGVfYWRkIGNoZWNrcyB0aGF0IHBhdGggZG9lcyBu b3QgZXhpc3QgYXQgYWxsLAojIHNpbmNlIGl0IGlzIHRoZSBsb2NhdGlvbiBvZiBhIG5ldyBzdWJt b2R1bGUuCiMKbW9kdWxlX2Nsb25lKCkKewoJcGF0aD0kMQoJdXJsPSQyCgoJIyBJZiB0aGVyZSBh bHJlYWR5IGlzIGEgZGlyZWN0b3J5IGF0IHRoZSBzdWJtb2R1bGUgcGF0aCwKCSMgZXhwZWN0IGl0 IHRvIGJlIGVtcHR5IChzaW5jZSB0aGF0IGlzIHRoZSBkZWZhdWx0IGNoZWNrb3V0CgkjIGFjdGlv bikgYW5kIHRyeSB0byByZW1vdmUgaXQuCgkjIE5vdGU6IGlmICRwYXRoIGlzIGEgc3ltbGluayB0 byBhIGRpcmVjdG9yeSB0aGUgdGVzdCB3aWxsCgkjIHN1Y2NlZWQgYnV0IHRoZSBybWRpciB3aWxs IGZhaWwuIFdlIG1pZ2h0IHdhbnQgdG8gZml4IHRoaXMuCglpZiB0ZXN0IC1kICIkcGF0aCIKCXRo ZW4KCQlybWRpciAiJHBhdGgiIDI+L2Rldi9udWxsIHx8CgkJZGllICJEaXJlY3RvcnkgJyRwYXRo JyBleGlzdCwgYnV0IGlzIG5laXRoZXIgZW1wdHkgbm9yIGEgZ2l0IHJlcG9zaXRvcnkiCglmaQoK CXRlc3QgLWUgIiRwYXRoIiAmJgoJZGllICJBIGZpbGUgYWxyZWFkeSBleGlzdCBhdCBwYXRoICck cGF0aCciCgoJZ2l0LWNsb25lIC1uICIkdXJsIiAiJHBhdGgiIHx8CglkaWUgIkNsb25lIG9mICck dXJsJyBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcGF0aCcgZmFpbGVkIgp9CgojCiMgQWRkIGEgbmV3 IHN1Ym1vZHVsZSB0byB0aGUgd29ya2luZyB0cmVlLCAuZ2l0bW9kdWxlcyBhbmQgdGhlIGluZGV4 CiMKIyAkQCA9IHJlcG8gW3BhdGhdCiMKIyBvcHRpb25hbCBicmFuY2ggaXMgc3RvcmVkIGluIGds b2JhbCBicmFuY2ggdmFyaWFibGUKIwptb2R1bGVfYWRkKCkKewoJcmVwbz0kMQoJcGF0aD0kMgoK CWlmIHRlc3QgLXogIiRyZXBvIjsgdGhlbgoJCXVzYWdlCglmaQoKCSMgVHVybiB0aGUgc291cmNl IGludG8gYW4gYWJzb2x1dGUgcGF0aCBpZgoJIyBpdCBpcyBsb2NhbAoJaWYgYmFzZT0kKGdldF9y ZXBvX2Jhc2UgIiRyZXBvIik7IHRoZW4KCQlyZXBvPSIkYmFzZSIKCWZpCgoJIyBHdWVzcyBwYXRo IGZyb20gcmVwbyBpZiBub3Qgc3BlY2lmaWVkIG9yIHN0cmlwIHRyYWlsaW5nIHNsYXNoZXMKCWlm IHRlc3QgLXogIiRwYXRoIjsgdGhlbgoJCXBhdGg9JChlY2hvICIkcmVwbyIgfCBzZWQgLWUgJ3N8 LyokfHwnIC1lICdzfDoqLypcLmdpdCR8fCcgLWUgJ3N8LipbLzpdfHxnJykKCWVsc2UKCQlwYXRo PSQoZWNobyAiJHBhdGgiIHwgc2VkIC1lICdzfC8qJHx8JykKCWZpCgoJdGVzdCAtZSAiJHBhdGgi ICYmCglkaWUgIickcGF0aCcgYWxyZWFkeSBleGlzdHMiCgoJZ2l0IGxzLWZpbGVzIC0tZXJyb3It dW5tYXRjaCAiJHBhdGgiID4gL2Rldi9udWxsIDI+JjEgJiYKCWRpZSAiJyRwYXRoJyBhbHJlYWR5 IGV4aXN0cyBpbiB0aGUgaW5kZXgiCgoJbW9kdWxlX2Nsb25lICIkcGF0aCIgIiRyZXBvIiB8fCBl eGl0CgkodW5zZXQgR0lUX0RJUiAmJiBjZCAiJHBhdGgiICYmIGdpdCBjaGVja291dCAtcSAke2Jy YW5jaDorLWIgIiRicmFuY2giICJvcmlnaW4vJGJyYW5jaCJ9KSB8fAoJZGllICJVbmFibGUgdG8g Y2hlY2tvdXQgc3VibW9kdWxlICckcGF0aCciCglnaXQgYWRkICIkcGF0aCIgfHwKCWRpZSAiRmFp bGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRwYXRoJyIKCglHSVRfQ09ORklHPS5naXRtb2R1bGVzIGdp dCBjb25maWcgc3VibW9kdWxlLiIkcGF0aCIucGF0aCAiJHBhdGgiICYmCglHSVRfQ09ORklHPS5n aXRtb2R1bGVzIGdpdCBjb25maWcgc3VibW9kdWxlLiIkcGF0aCIudXJsICIkcmVwbyIgJiYKCWdp dCBhZGQgLmdpdG1vZHVsZXMgfHwKCWRpZSAiRmFpbGVkIHRvIHJlZ2lzdGVyIHN1Ym1vZHVsZSAn JHBhdGgnIgp9CgojCiMgUmVnaXN0ZXIgc3VibW9kdWxlcyBpbiAuZ2l0L2NvbmZpZwojCiMgJEAg PSByZXF1ZXN0ZWQgcGF0aHMgKGRlZmF1bHQgdG8gYWxsKQojCm1vZHVsZXNfaW5pdCgpCnsKCWdp dCBscy1maWxlcyAtLXN0YWdlIC0tICIkQCIgfCBncmVwIC1lICdeMTYwMDAwICcgfAoJd2hpbGUg cmVhZCBtb2RlIHNoYTEgc3RhZ2UgcGF0aAoJZG8KCQkjIFNraXAgYWxyZWFkeSByZWdpc3RlcmVk IHBhdGhzCgkJbmFtZT0kKG1vZHVsZV9uYW1lICIkcGF0aCIpIHx8IGV4aXQKCQl1cmw9JChnaXQg Y29uZmlnIHN1Ym1vZHVsZS4iJG5hbWUiLnVybCkKCQl0ZXN0IC16ICIkdXJsIiB8fCBjb250aW51 ZQoKCQl1cmw9JChHSVRfQ09ORklHPS5naXRtb2R1bGVzIGdpdCBjb25maWcgc3VibW9kdWxlLiIk bmFtZSIudXJsKQoJCXRlc3QgLXogIiR1cmwiICYmCgkJZGllICJObyB1cmwgZm91bmQgZm9yIHN1 Ym1vZHVsZSBwYXRoICckcGF0aCcgaW4gLmdpdG1vZHVsZXMiCgoJCWdpdCBjb25maWcgc3VibW9k dWxlLiIkbmFtZSIudXJsICIkdXJsIiB8fAoJCWRpZSAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVybCBm b3Igc3VibW9kdWxlIHBhdGggJyRwYXRoJyIKCgkJc2F5ICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVy bCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHBhdGgnIgoJZG9uZQp9CgojCiMgVXBkYXRlIGVhY2gg c3VibW9kdWxlIHBhdGggdG8gY29ycmVjdCByZXZpc2lvbiwgdXNpbmcgY2xvbmUgYW5kIGNoZWNr b3V0IGFzIG5lZWRlZAojCiMgJEAgPSByZXF1ZXN0ZWQgcGF0aHMgKGRlZmF1bHQgdG8gYWxsKQoj Cm1vZHVsZXNfdXBkYXRlKCkKewoJZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgLS0gIiRAIiB8IGdyZXAg LWUgJ14xNjAwMDAgJyB8Cgl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBwYXRoCglkbwoJCW5h bWU9JChtb2R1bGVfbmFtZSAiJHBhdGgiKSB8fCBleGl0CgkJdXJsPSQoZ2l0IGNvbmZpZyBzdWJt b2R1bGUuIiRuYW1lIi51cmwpCgkJaWYgdGVzdCAteiAiJHVybCIKCQl0aGVuCgkJCSMgT25seSBt ZW50aW9uIHVuaW5pdGlhbGl6ZWQgc3VibW9kdWxlcyB3aGVuIGl0cwoJCQkjIHBhdGggaGF2ZSBi ZWVuIHNwZWNpZmllZAoJCQl0ZXN0ICIkIyIgIT0gIjAiICYmCgkJCXNheSAiU3VibW9kdWxlIHBh dGggJyRwYXRoJyBub3QgaW5pdGlhbGl6ZWQiCgkJCWNvbnRpbnVlCgkJZmkKCgkJaWYgISB0ZXN0 IC1kICIkcGF0aCIvLmdpdAoJCXRoZW4KCQkJbW9kdWxlX2Nsb25lICIkcGF0aCIgIiR1cmwiIHx8 IGV4aXQKCQkJc3Vic2hhMT0KCQllbHNlCgkJCXN1YnNoYTE9JCh1bnNldCBHSVRfRElSICYmIGNk ICIkcGF0aCIgJiYKCQkJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwKCQkJZGllICJV bmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckcGF0aCci CgkJZmkKCgkJaWYgdGVzdCAiJHN1YnNoYTEiICE9ICIkc2hhMSIKCQl0aGVuCgkJCSh1bnNldCBH SVRfRElSICYmIGNkICIkcGF0aCIgJiYgZ2l0LWZldGNoICYmCgkJCQlnaXQtY2hlY2tvdXQgLXEg IiRzaGExIikgfHwKCQkJZGllICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1 bGUgcGF0aCAnJHBhdGgnIgoKCQkJc2F5ICJTdWJtb2R1bGUgcGF0aCAnJHBhdGgnOiBjaGVja2Vk IG91dCAnJHNoYTEnIgoJCWZpCglkb25lCn0KCnNldF9uYW1lX3JldiAoKSB7CglyZXZuYW1lPSQo ICgKCQl1bnNldCBHSVRfRElSICYmCgkJY2QgIiQxIiAmJiB7CgkJCWdpdCBkZXNjcmliZSAiJDIi IDI+L2Rldi9udWxsIHx8CgkJCWdpdCBkZXNjcmliZSAtLXRhZ3MgIiQyIiAyPi9kZXYvbnVsbCB8 fAoJCQlnaXQgZGVzY3JpYmUgLS1jb250YWlucyAtLXRhZ3MgIiQyIgoJCX0KCSkgKQoJdGVzdCAt eiAiJHJldm5hbWUiIHx8IHJldm5hbWU9IiAoJHJldm5hbWUpIgp9CgojCiMgTGlzdCBhbGwgc3Vi bW9kdWxlcywgcHJlZml4ZWQgd2l0aDoKIyAgLSBzdWJtb2R1bGUgbm90IGluaXRpYWxpemVkCiMg ICsgZGlmZmVyZW50IHJldmlzaW9uIGNoZWNrZWQgb3V0CiMKIyBJZiAtLWNhY2hlZCB3YXMgc3Bl Y2lmaWVkIHRoZSByZXZpc2lvbiBpbiB0aGUgaW5kZXggd2lsbCBiZSBwcmludGVkCiMgaW5zdGVh ZCBvZiB0aGUgY3VycmVudGx5IGNoZWNrZWQgb3V0IHJldmlzaW9uLgojCiMgJEAgPSByZXF1ZXN0 ZWQgcGF0aHMgKGRlZmF1bHQgdG8gYWxsKQojCm1vZHVsZXNfbGlzdCgpCnsKCWdpdCBscy1maWxl cyAtLXN0YWdlIC0tICIkQCIgfCBncmVwIC1lICdeMTYwMDAwICcgfAoJd2hpbGUgcmVhZCBtb2Rl IHNoYTEgc3RhZ2UgcGF0aAoJZG8KCQluYW1lPSQobW9kdWxlX25hbWUgIiRwYXRoIikgfHwgZXhp dAoJCXVybD0kKGdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsKQoJCWlmIHRlc3QgLXog InVybCIgfHwgISB0ZXN0IC1kICIkcGF0aCIvLmdpdAoJCXRoZW4KCQkJc2F5ICItJHNoYTEgJHBh dGgiCgkJCWNvbnRpbnVlOwoJCWZpCgkJc2V0X25hbWVfcmV2ICIkcGF0aCIgIiRzaGExIgoJCWlm IGdpdCBkaWZmLWZpbGVzIC0tcXVpZXQgLS0gIiRwYXRoIgoJCXRoZW4KCQkJc2F5ICIgJHNoYTEg JHBhdGgkcmV2bmFtZSIKCQllbHNlCgkJCWlmIHRlc3QgLXogIiRjYWNoZWQiCgkJCXRoZW4KCQkJ CXNoYTE9JCh1bnNldCBHSVRfRElSICYmIGNkICIkcGF0aCIgJiYgZ2l0IHJldi1wYXJzZSAtLXZl cmlmeSBIRUFEKQoJCQkJc2V0X25hbWVfcmV2ICIkcGF0aCIgIiRzaGExIgoJCQlmaQoJCQlzYXkg Iiskc2hhMSAkcGF0aCRyZXZuYW1lIgoJCWZpCglkb25lCn0KCiMgU2ltcGx5IGNoZWNrcyB3aGV0 aGVyIHRoZSBzdWJtb2R1bGUgaXMgaW5pdGlhbGl6ZWQKIyBvciBub3QuIElmIG5vdCBpbml0aWFs aXplZCBpdCBkb2VzIHNvLgppbml0aWFsaXplU3ViTW9kdWxlKCkgewoJaWYgWyAhIC1kICIkMSIv LmdpdCBdOyB0aGVuCgkJaWYgWyAkcmVjdXJzZV92ZXJib3NlIC1lcSAxIF07IHRoZW4KCQkJZWNo byBJbml0aWFsaXppbmcgYW5kIHVwZGF0aW5nICIkMSIKCQlmaQoJCWdpdC1zdWJtb2R1bGUgaW5p dCAiJDEiOyBnaXQtc3VibW9kdWxlIHVwZGF0ZSAiJDEiCglmaQp9CgojIFRoaXMgYWN0dWFsbHkg dHJhdmVyc2VzIHRoZSBtb2R1bGU7IGNoZWNrcwojIHdoZXRoZXIgdGhlIG1vZHVsZSBpcyBpbml0 aWFsaXplZCBvciBub3QuCiMgaWYgbm90IGluaXRpYWxpemVkLCB0aGVuIGRvbmUgc28gYW5kIHRo ZW4gdGhlCiMgaW50ZW5kZWQgY29tbWFuZCBpcyBldmFsdWF0ZWQuIFRoZW4gaXQKIyByZWN1cnNp dmVseSBnb2VzIGludG8gaXQgbW9kdWxlcy4KdHJhdmVyc2VNb2R1bGUoKSB7CgljdXJyZW50X2Rp cj1gcHdkYAoJZGlyX3BhdGg9IiRjdXJyZW50X2RpcjokZGlyX3BhdGgiCglpbml0aWFsaXplU3Vi TW9kdWxlICIkMSIKICAgICAgICBjZCAiJDEiCglpZiBbICRyZWN1cnNlX3ZlcmJvc2UgLWVxIDEg XTsgdGhlbgoJCWVjaG8gV29ya2luZyBpbiBtb2QgJDEgQCBgcHdkYCB3aXRoICQyCglmaQogICAg ICAgIGV2YWwgIiQyIgoJaWYgWyAtZiAuZ2l0bW9kdWxlcyBdOyB0aGVuCiAgICAgICAgICAgICAg ICBmb3IgbW9kX3BhdGggaW4gYGdyZXAgInBhdGggPSIgLmdpdG1vZHVsZXMgfCBhd2sgJ3twcmlu dCAkM30nYDsgZG8KICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VNb2R1bGUgIiRtb2Rf cGF0aCIgIiQyIgogICAgICAgICAgICAgICAgZG9uZQogICAgICAgIGZpCglvbGRfZGlyPSQoZWNo byAkZGlyX3BhdGggfCBjdXQgLWQnOicgLWYxLTEpCglsZW5ndGhfb2xkX2Rpcj1gZXhwciAiJG9s ZF9kaXIiIDogJy4qJ2AKCWNkICRvbGRfZGlyCglpbmRleD0kKGVjaG8gIiRsZW5ndGhfb2xkX2Rp cisyIiB8IGJjKQoJZGlyX3BhdGg9YGVjaG8gJGRpcl9wYXRoICRpbmRleCB8IGF3ayAne3ByaW50 IHN1YnN0cigkMSwgJDIpfSdgCn0KCiMgUHJvcGFnYXRlcyBvciByZWN1cnNlcyBvdmVyIGFsbCB0 aGUgc3VibW9kdWxlcyBhdCBhbnkgCiMgZGVwdGggd2l0aCBhbnkgZ2l0IGNvbW1hbmQsIGUuZy4g Z2l0LWNsb25lLCBnaXQtc3RhdHVzLAojIGdpdC1jb21taXQgZXRjLiwgd2l0aCB0aGUgYXJndW1l bnRzIHN1cHBsaWVkIGV4YWN0bHkgYXMKIyBpdCB3b3VsZCBoYXZlIGJlZW4gc3VwcGxpZWQgdG8g dGhlIGNvbW1hbmQgb3RoZXJ3aXNlLgojIFRoaXMgYWN0dWFsbHkgc3RhcnRzIHRoZSByZWN1cnNp dmUgcHJvcGFnYXRpb24KcHJvcGFnYXRlKCkgewoJcHJvamVjdF9ob21lPWBwd2RgCgllY2hvIFBy b2plY3QgSG9tZTogJHByb2plY3RfaG9tZQoJaWYgWyAtZCAkcHJvamVjdF9ob21lLy5naXQvIF07 IHRoZW4KCQlnaXRfY29tbWFuZD0kMQoJCXNoaWZ0CgkJY29tbWFuZF9hcmd1bWVudHM9IiIKCQlm b3IgYXJnIGluICIkQCI7IGRvCgkJCWlmIFsgYGV4cHIgaW5kZXggIiRhcmciICcgJ2AgLWd0IDAg XTsgdGhlbgoJCQkJYXJnPSJcIiRhcmdcIiIKCQkJZmkgCgkJCWNvbW1hbmRfYXJndW1lbnRzPSIk Y29tbWFuZF9hcmd1bWVudHMgJGFyZyIKCQlkb25lCgkJaWYgWyAkcmVjdXJzZV92ZXJib3NlIC1l cSAxIF07IHRoZW4KCQkJZWNobyBHSVQgQ29tbWFuZCBnaXQtJGdpdF9jb21tYW5kIHdpdGggYXJn dW1lbnRzXCgkI1wpICIkY29tbWFuZF9hcmd1bWVudHMiCgkJZmkKCQltYWluX2NvbW1hbmQ9Imdp dC0kZ2l0X2NvbW1hbmQgJGNvbW1hbmRfYXJndW1lbnRzIgoJCWV2YWwgJG1haW5fY29tbWFuZAoJ CWlmIFsgLWYgLmdpdG1vZHVsZXMgXTsgdGhlbgoJCQlmb3IgbW9kX3BhdGggaW4gYGdyZXAgInBh dGggPSIgLmdpdG1vZHVsZXMgfCBhd2sgJ3twcmludCAkM30nYDsgZG8KCQkJCXRyYXZlcnNlTW9k dWxlICRtb2RfcGF0aCAiJG1haW5fY29tbWFuZCIKCQkJZG9uZQoJCWZpCgllbHNlCgkJZWNobyAk cHJvamVjdF9ob21lIG5vdCBhIGdpdCByZXBvIHRodXMgZXhpdGluZwoJCWV4aXQKCWZpCn0KCnJl Y3Vyc2VfdmVyYm9zZT0wCndoaWxlIHRlc3QgJCMgIT0gMApkbwoJY2FzZSAiJDEiIGluCglhZGQp CgkJYWRkPTEKCQk7OwoJaW5pdCkKCQlpbml0PTEKCQk7OwoJdXBkYXRlKQoJCXVwZGF0ZT0xCgkJ OzsKCXN0YXR1cykKCQlzdGF0dXM9MQoJCTs7CgktcXwtLXF1aWV0KQoJCXF1aWV0PTEKCQk7OwoJ LWJ8LS1icmFuY2gpCgkJY2FzZSAiJDIiIGluCgkJJycpCgkJCXVzYWdlCgkJCTs7CgkJZXNhYwoJ CWJyYW5jaD0iJDIiOyBzaGlmdAoJCTs7CgktLWNhY2hlZCkKCQljYWNoZWQ9MQoJCTs7CgktLSkK CQlicmVhawoJCTs7CgktKikKCQl1c2FnZQoJCTs7CglyZWN1cnNlKQoJCXJlY3Vyc2U9MQoJCWNh c2UgIiQyIiBpbgoJCQktdikKCQkJCXJlY3Vyc2VfdmVyYm9zZT0xCgkJCQlzaGlmdAoJCQkJOzsK CQllc2FjCgkJc2hpZnQKCQlicmVhawoJCTs7CgkqKQoJCWJyZWFrCgkJOzsKCWVzYWMKCXNoaWZ0 CmRvbmUKCmNhc2UgIiRhZGQsJGJyYW5jaCIgaW4KMSwqKQoJOzsKLCkKCTs7CiwqKQoJdXNhZ2UK CTs7CmVzYWMKCmNhc2UgIiRhZGQsJGluaXQsJHVwZGF0ZSwkcmVjdXJzZSwkc3RhdHVzLCRjYWNo ZWQiIGluCjEsLCwsLCkKCW1vZHVsZV9hZGQgIiRAIgoJOzsKLDEsLCwsKQoJbW9kdWxlc19pbml0 ICIkQCIKCTs7CiwsMSwsLCkKCW1vZHVsZXNfdXBkYXRlICIkQCIKCTs7CiwsLDEsLCkKCXByb3Bh Z2F0ZSAiJEAiCgk7OwosLCwsKiwqKQoJbW9kdWxlc19saXN0ICIkQCIKCTs7CiopCgl1c2FnZQoJ OzsKZXNhYwo= ------=_Part_26615_22457832.1199672845360 Content-Type: application/octet-stream; name=git-clone Content-Transfer-Encoding: base64 X-Attachment-Id: f_fb4e1oyd1 Content-Disposition: attachment; filename=git-clone IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDUsIExpbnVzIFRvcnZhbGRzCiMgQ29weXJp Z2h0IChjKSAyMDA1LCBKdW5pbyBDIEhhbWFubwojCiMgQ2xvbmUgYSByZXBvc2l0b3J5IGludG8g YSBkaWZmZXJlbnQgZGlyZWN0b3J5IHRoYXQgZG9lcyBub3QgeWV0IGV4aXN0LgoKIyBTZWUgZ2l0 LXNoLXNldHVwIHdoeS4KdW5zZXQgQ0RQQVRICgpkaWUoKSB7CgllY2hvID4mMiAiJEAiCglleGl0 IDEKfQoKdXNhZ2UoKSB7CglkaWUgIlVzYWdlOiAkMCBbLS10ZW1wbGF0ZT08dGVtcGxhdGVfZGly ZWN0b3J5Pl0gWy0tcmVmZXJlbmNlIDxyZWZlcmVuY2UtcmVwbz5dIFstLWJhcmVdIFstbCBbLXNd XSBbLXFdIFstd3wtLXdpdGgtc3VibW9kdWxlXSBbLXUgPHVwbG9hZC1wYWNrPl0gWy0tb3JpZ2lu IDxuYW1lPl0gWy0tZGVwdGggPG4+XSBbLW5dIDxyZXBvPiBbPGRpcj5dIgp9CgpnZXRfcmVwb19i YXNlKCkgewoJKAoJCWNkICJgL2Jpbi9wd2RgIiAmJgoJCWNkICIkMSIgfHwgY2QgIiQxLmdpdCIg JiYKCQl7CgkJCWNkIC5naXQKCQkJcHdkCgkJfQoJKSAyPi9kZXYvbnVsbAp9CgppZiBbIC1uICIk R0lUX1NTTF9OT19WRVJJRlkiIC1vIFwKCSJgZ2l0IGNvbmZpZyAtLWJvb2wgaHR0cC5zc2xWZXJp ZnlgIiA9IGZhbHNlIF07IHRoZW4KICAgIGN1cmxfZXh0cmFfYXJncz0iLWsiCmZpCgpodHRwX2Zl dGNoICgpIHsKCSMgJDEgPSBSZW1vdGUsICQyID0gTG9jYWwKCWN1cmwgLW5zZkwgJGN1cmxfZXh0 cmFfYXJncyAiJDEiID4iJDIiIHx8CgkJY2FzZSAkPyBpbgoJCTEyNnwxMjcpIGV4aXQgOzsKCQkq KQkgcmV0dXJuICQ/IDs7CgkJZXNhYwp9CgpjbG9uZV9kdW1iX2h0dHAgKCkgewoJIyAkMSAtIHJl bW90ZSwgJDIgLSBsb2NhbAoJY2QgIiQyIiAmJgoJY2xvbmVfdG1wPSIkR0lUX0RJUi9jbG9uZS10 bXAiICYmCglta2RpciAtcCAiJGNsb25lX3RtcCIgfHwgZXhpdCAxCglpZiBbIC1uICIkR0lUX0NV UkxfRlRQX05PX0VQU1YiIC1vIFwKCQkiYGdpdCBjb25maWcgLS1ib29sIGh0dHAubm9FUFNWYCIg PSB0cnVlIF07IHRoZW4KCQljdXJsX2V4dHJhX2FyZ3M9IiR7Y3VybF9leHRyYV9hcmdzfSAtLWRp c2FibGUtZXBzdiIKCWZpCglodHRwX2ZldGNoICIkMS9pbmZvL3JlZnMiICIkY2xvbmVfdG1wL3Jl ZnMiIHx8CgkJZGllICJDYW5ub3QgZ2V0IHJlbW90ZSByZXBvc2l0b3J5IGluZm9ybWF0aW9uLgpQ ZXJoYXBzIGdpdC11cGRhdGUtc2VydmVyLWluZm8gbmVlZHMgdG8gYmUgcnVuIHRoZXJlPyIKCXRl c3QgInokcXVpZXQiID0geiAmJiB2PS12IHx8IHY9Cgl3aGlsZSByZWFkIHNoYTEgcmVmbmFtZQoJ ZG8KCQluYW1lPWBleHByICJ6JHJlZm5hbWUiIDogJ3pyZWZzL1woLipcKSdgICYmCgkJY2FzZSAi JG5hbWUiIGluCgkJKl4qKQljb250aW51ZTs7CgkJZXNhYwoJCWNhc2UgIiRiYXJlLCRuYW1lIiBp bgoJCXllcywqIHwgLGhlYWRzLyogfCAsdGFncy8qKSA7OwoJCSopCWNvbnRpbnVlIDs7CgkJZXNh YwoJCWlmIHRlc3QgLW4gIiR1c2Vfc2VwYXJhdGVfcmVtb3RlIiAmJgoJCSAgIGJyYW5jaF9uYW1l PWBleHByICJ6JG5hbWUiIDogJ3poZWFkcy9cKC4qXCknYAoJCXRoZW4KCQkJdG5hbWU9InJlbW90 ZXMvJG9yaWdpbi8kYnJhbmNoX25hbWUiCgkJZWxzZQoJCQl0bmFtZT0kbmFtZQoJCWZpCgkJZ2l0 LWh0dHAtZmV0Y2ggJHYgLWEgLXcgIiR0bmFtZSIgIiRzaGExIiAiJDEiIHx8IGV4aXQgMQoJZG9u ZSA8IiRjbG9uZV90bXAvcmVmcyIKCXJtIC1mciAiJGNsb25lX3RtcCIKCWh0dHBfZmV0Y2ggIiQx L0hFQUQiICIkR0lUX0RJUi9SRU1PVEVfSEVBRCIgfHwKCXJtIC1mICIkR0lUX0RJUi9SRU1PVEVf SEVBRCIKCWlmIHRlc3QgLWYgIiRHSVRfRElSL1JFTU9URV9IRUFEIjsgdGhlbgoJCWhlYWRfc2hh MT1gY2F0ICIkR0lUX0RJUi9SRU1PVEVfSEVBRCJgCgkJY2FzZSAiJGhlYWRfc2hhMSIgaW4KCQkn cmVmOiByZWZzLycqKQoJCQk7OwoJCSopCgkJCWdpdC1odHRwLWZldGNoICR2IC1hICIkaGVhZF9z aGExIiAiJDEiIHx8CgkJCXJtIC1mICIkR0lUX0RJUi9SRU1PVEVfSEVBRCIKCQkJOzsKCQllc2Fj CglmaQp9Cgppbml0aWFsaXplU3ViTW9kdWxlKCkgewoJaWYgWyAhIC1kICIkMSIvLmdpdCBdOyB0 aGVuCgkJZ2l0LXN1Ym1vZHVsZSBpbml0ICIkMSI7IGdpdC1zdWJtb2R1bGUgdXBkYXRlICIkMSIK CWZpCn0KCmluaXRTdWJNb2R1bGVzKCkgewoJY3VycmVudF9kaXI9YHB3ZGAKCWRpcl9wYXRoPSIk Y3VycmVudF9kaXI6JGRpcl9wYXRoIgoJaW5pdGlhbGl6ZVN1Yk1vZHVsZSAiJDEiCiAgICAgICAg Y2QgIiQxIgoJaWYgWyAtZiAuZ2l0bW9kdWxlcyBdOyB0aGVuCiAgICAgICAgICAgICAgICBmb3Ig bW9kX3BhdGggaW4gYGdyZXAgInBhdGggPSIgLmdpdG1vZHVsZXMgfCBhd2sgJ3twcmludCAkM30n YDsgZG8KICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFN1Yk1vZHVsZXMgIiRtb2RfcGF0aCIK ICAgICAgICAgICAgICAgIGRvbmUKICAgICAgICBmaQoJb2xkX2Rpcj0kKGVjaG8gJGRpcl9wYXRo IHwgY3V0IC1kJzonIC1mMS0xKQoJbGVuZ3RoX29sZF9kaXI9YGV4cHIgIiRvbGRfZGlyIiA6ICcu KidgCgljZCAkb2xkX2RpcgoJaW5kZXg9JChlY2hvICIkbGVuZ3RoX29sZF9kaXIrMiIgfCBiYykK CWRpcl9wYXRoPWBlY2hvICRkaXJfcGF0aCAkaW5kZXggfCBhd2sgJ3twcmludCBzdWJzdHIoJDEs ICQyKX0nYAp9CgpxdWlldD0KbG9jYWw9bm8KdXNlX2xvY2FsX2hhcmRsaW5rPXllcwpsb2NhbF9z aGFyZWQ9bm8KdW5zZXQgdGVtcGxhdGUKbm9fY2hlY2tvdXQ9CnVwbG9hZF9wYWNrPQpiYXJlPQpy ZWZlcmVuY2U9Cm9yaWdpbj0Kb3JpZ2luX292ZXJyaWRlPQp1c2Vfc2VwYXJhdGVfcmVtb3RlPXQK ZGVwdGg9Cm5vX3Byb2dyZXNzPQpsb2NhbF9leHBsaWNpdGx5X2Fza2VkX2Zvcj0KdGVzdCAtdCAx IHx8IG5vX3Byb2dyZXNzPS0tbm8tcHJvZ3Jlc3MKd2l0aF9zdWJtb2R1bGU9MAp3aGlsZQoJY2Fz ZSAiJCMsJDEiIGluCgkwLCopIGJyZWFrIDs7CgkqLC1ufCosLS1ub3wqLC0tbm8tfCosLS1uby1j fCosLS1uby1jaHwqLC0tbm8tY2hlfCosLS1uby1jaGVjfFwKCSosLS1uby1jaGVja3wqLC0tbm8t Y2hlY2tvfCosLS1uby1jaGVja291fCosLS1uby1jaGVja291dCkKCSAgbm9fY2hlY2tvdXQ9eWVz IDs7CgkqLC0tbmF8KiwtLW5ha3wqLC0tbmFrZXwqLC0tbmFrZWR8XAoJKiwtYnwqLC0tYnwqLC0t YmF8KiwtLWJhcnwqLC0tYmFyZSkgYmFyZT15ZXMgOzsKCSosLWx8KiwtLWx8KiwtLWxvfCosLS1s b2N8KiwtLWxvY2F8KiwtLWxvY2FsKQoJICBsb2NhbF9leHBsaWNpdGx5X2Fza2VkX2Zvcj15ZXMK CSAgdXNlX2xvY2FsX2hhcmRsaW5rPXllcyA7OwoJKiwtLW5vLWh8KiwtLW5vLWhhfCosLS1uby1o YXJ8KiwtLW5vLWhhcmR8KiwtLW5vLWhhcmRsfFwKCSosLS1uby1oYXJkbGl8KiwtLW5vLWhhcmRs aW58KiwtLW5vLWhhcmRsaW5rfCosLS1uby1oYXJkbGlua3MpCgkgIHVzZV9sb2NhbF9oYXJkbGlu az1ubyA7OwogICAgICAgICosLXN8KiwtLXN8KiwtLXNofCosLS1zaGF8KiwtLXNoYXJ8KiwtLXNo YXJlfCosLS1zaGFyZWQpCiAgICAgICAgICBsb2NhbF9zaGFyZWQ9eWVzOyA7OwoJMSwtLXRlbXBs YXRlKSB1c2FnZSA7OwoJKiwtLXRlbXBsYXRlKQoJCXNoaWZ0OyB0ZW1wbGF0ZT0iLS10ZW1wbGF0 ZT0kMSIgOzsKCSosLS10ZW1wbGF0ZT0qKQoJICB0ZW1wbGF0ZT0iJDEiIDs7CgkqLC1xfCosLS1x dWlldCkgcXVpZXQ9LXEgOzsKCSosLS11c2Utc2VwYXJhdGUtcmVtb3RlKSA7OwoJKiwtLW5vLXNl cGFyYXRlLXJlbW90ZSkKCQlkaWUgImNsb25lcyBhcmUgYWx3YXlzIG1hZGUgd2l0aCBzZXBhcmF0 ZS1yZW1vdGUgbGF5b3V0IiA7OwoJMSwtLXJlZmVyZW5jZSkgdXNhZ2UgOzsKCSosLS1yZWZlcmVu Y2UpCgkJc2hpZnQ7IHJlZmVyZW5jZT0iJDEiIDs7CgkqLC0tcmVmZXJlbmNlPSopCgkJcmVmZXJl bmNlPWBleHByICJ6JDEiIDogJ3otLXJlZmVyZW5jZT1cKC4qXCknYCA7OwoJKiwtb3wqLC0tb3J8 KiwtLW9yaXwqLC0tb3JpZ3wqLC0tb3JpZ2l8KiwtLW9yaWdpbikKCQljYXNlICIkMiIgaW4KCQkn JykKCQkgICAgdXNhZ2UgOzsKCQkqLyopCgkJICAgIGRpZSAiJyQyJyBpcyBub3Qgc3VpdGFibGUg Zm9yIGFuIG9yaWdpbiBuYW1lIgoJCWVzYWMKCQlnaXQgY2hlY2stcmVmLWZvcm1hdCAiaGVhZHMv JDIiIHx8CgkJICAgIGRpZSAiJyQyJyBpcyBub3Qgc3VpdGFibGUgZm9yIGEgYnJhbmNoIG5hbWUi CgkJdGVzdCAteiAiJG9yaWdpbl9vdmVycmlkZSIgfHwKCQkgICAgZGllICJEbyBub3QgZ2l2ZSBt b3JlIHRoYW4gb25lIC0tb3JpZ2luIG9wdGlvbnMuIgoJCW9yaWdpbl9vdmVycmlkZT15ZXMKCQlv cmlnaW49IiQyIjsgc2hpZnQKCQk7OwoJMSwtdXwxLC0tdXBsb2FkLXBhY2spIHVzYWdlIDs7Cgkq LC11fCosLS11cGxvYWQtcGFjaykKCQlzaGlmdAoJCXVwbG9hZF9wYWNrPSItLXVwbG9hZC1wYWNr PSQxIiA7OwoJKiwtLXVwbG9hZC1wYWNrPSopCgkJdXBsb2FkX3BhY2s9LS11cGxvYWQtcGFjaz0k KGV4cHIgInokMSIgOiAnei1bXj1dKj1cKC4qXCknKSA7OwoJKiwtd3wqLC0td3wqLC0td2l8Kiwt LXdpdHwqLC0td2l0aHwqLC0td2l0aC1zfCosLS13aXRoLXN1fCosLS13aXRoLXN1YnwqLC0td2l0 aC1zdWJtfCosLS13aXRoLXN1Ym1vfCosLS13aXRoLXN1Ym1vZHwqLC0td2l0aC1zdWJtb2R1fCos LS13aXRoLXN1Ym1vZHVsfCosLS13aXRoLXN1Ym1vZHVsZSkgd2l0aF9zdWJtb2R1bGU9MSA7OwoJ MSwtLWRlcHRoKSB1c2FnZTs7CgkqLC0tZGVwdGgpCgkJc2hpZnQKCQlkZXB0aD0iLS1kZXB0aD0k MSI7OwoJKiwtKikgdXNhZ2UgOzsKCSopIGJyZWFrIDs7Cgllc2FjCmRvCglzaGlmdApkb25lCgpy ZXBvPSIkMSIKdGVzdCAtbiAiJHJlcG8iIHx8CiAgICBkaWUgJ3lvdSBtdXN0IHNwZWNpZnkgYSBy ZXBvc2l0b3J5IHRvIGNsb25lLicKCiMgLS1iYXJlIGltcGxpZXMgLS1uby1jaGVja291dCBhbmQg LS1uby1zZXBhcmF0ZS1yZW1vdGUKaWYgdGVzdCB5ZXMgPSAiJGJhcmUiCnRoZW4KCWlmIHRlc3Qg eWVzID0gIiRvcmlnaW5fb3ZlcnJpZGUiCgl0aGVuCgkJZGllICctLWJhcmUgYW5kIC0tb3JpZ2lu ICRvcmlnaW4gb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLicKCWZpCglub19jaGVja291dD15ZXMK CXVzZV9zZXBhcmF0ZV9yZW1vdGU9CmZpCgppZiB0ZXN0IC16ICIkb3JpZ2luIgp0aGVuCglvcmln aW49b3JpZ2luCmZpCgojIFR1cm4gdGhlIHNvdXJjZSBpbnRvIGFuIGFic29sdXRlIHBhdGggaWYK IyBpdCBpcyBsb2NhbAppZiBiYXNlPSQoZ2V0X3JlcG9fYmFzZSAiJHJlcG8iKTsgdGhlbgoJcmVw bz0iJGJhc2UiCglsb2NhbD15ZXMKZmkKCmRpcj0iJDIiCiMgVHJ5IHVzaW5nICJodW1hbmlzaCIg cGFydCBvZiBzb3VyY2UgcmVwbyBpZiB1c2VyIGRpZG4ndCBzcGVjaWZ5IG9uZQpbIC16ICIkZGly IiBdICYmIGRpcj0kKGVjaG8gIiRyZXBvIiB8IHNlZCAtZSAnc3wvJHx8JyAtZSAnc3w6Ki8qXC5n aXQkfHwnIC1lICdzfC4qWy86XXx8ZycpClsgLWUgIiRkaXIiIF0gJiYgZGllICJkZXN0aW5hdGlv biBkaXJlY3RvcnkgJyRkaXInIGFscmVhZHkgZXhpc3RzLiIKWyB5ZXMgPSAiJGJhcmUiIF0gJiYg dW5zZXQgR0lUX1dPUktfVFJFRQpbIC1uICIkR0lUX1dPUktfVFJFRSIgXSAmJiBbIC1lICIkR0lU X1dPUktfVFJFRSIgXSAmJgpkaWUgIndvcmtpbmcgdHJlZSAnJEdJVF9XT1JLX1RSRUUnIGFscmVh ZHkgZXhpc3RzLiIKRD0KVz0KY2xlYW51cCgpIHsKCWVycj0kPwoJdGVzdCAteiAiJEQiICYmIHJt IC1yZiAiJGRpciIKCXRlc3QgLXogIiRXIiAmJiB0ZXN0IC1uICIkR0lUX1dPUktfVFJFRSIgJiYg cm0gLXJmICIkR0lUX1dPUktfVFJFRSIKCWNkIC4uCgl0ZXN0IC1uICIkRCIgJiYgcm0gLXJmICIk RCIKCXRlc3QgLW4gIiRXIiAmJiBybSAtcmYgIiRXIgoJZXhpdCAkZXJyCn0KdHJhcCBjbGVhbnVw IDAKbWtkaXIgLXAgIiRkaXIiICYmIEQ9JChjZCAiJGRpciIgJiYgcHdkKSB8fCB1c2FnZQp0ZXN0 IC1uICIkR0lUX1dPUktfVFJFRSIgJiYgbWtkaXIgLXAgIiRHSVRfV09SS19UUkVFIiAmJgpXPSQo Y2QgIiRHSVRfV09SS19UUkVFIiAmJiBwd2QpICYmIGV4cG9ydCBHSVRfV09SS19UUkVFPSIkVyIK aWYgdGVzdCB5ZXMgPSAiJGJhcmUiIHx8IHRlc3QgLW4gIiRHSVRfV09SS19UUkVFIjsgdGhlbgoJ R0lUX0RJUj0iJEQiCmVsc2UKCUdJVF9ESVI9IiRELy5naXQiCmZpICYmCmV4cG9ydCBHSVRfRElS ICYmCkdJVF9DT05GSUc9IiRHSVRfRElSL2NvbmZpZyIgZ2l0LWluaXQgJHF1aWV0ICR7dGVtcGxh dGUrIiR0ZW1wbGF0ZSJ9IHx8IHVzYWdlCgppZiB0ZXN0IC1uICIkYmFyZSIKdGhlbgoJR0lUX0NP TkZJRz0iJEdJVF9ESVIvY29uZmlnIiBnaXQgY29uZmlnIGNvcmUuYmFyZSB0cnVlCmZpCgppZiB0 ZXN0IC1uICIkcmVmZXJlbmNlIgp0aGVuCglyZWZfZ2l0PQoJaWYgdGVzdCAtZCAiJHJlZmVyZW5j ZSIKCXRoZW4KCQlpZiB0ZXN0IC1kICIkcmVmZXJlbmNlLy5naXQvb2JqZWN0cyIKCQl0aGVuCgkJ CXJlZl9naXQ9IiRyZWZlcmVuY2UvLmdpdCIKCQllbGlmIHRlc3QgLWQgIiRyZWZlcmVuY2Uvb2Jq ZWN0cyIKCQl0aGVuCgkJCXJlZl9naXQ9IiRyZWZlcmVuY2UiCgkJZmkKCWZpCglpZiB0ZXN0IC1u ICIkcmVmX2dpdCIKCXRoZW4KCQlyZWZfZ2l0PSQoY2QgIiRyZWZfZ2l0IiAmJiBwd2QpCgkJZWNo byAiJHJlZl9naXQvb2JqZWN0cyIgPiIkR0lUX0RJUi9vYmplY3RzL2luZm8vYWx0ZXJuYXRlcyIK CQkoCgkJCUdJVF9ESVI9IiRyZWZfZ2l0IiBnaXQgZm9yLWVhY2gtcmVmIFwKCQkJCS0tZm9ybWF0 PSclKG9iamVjdG5hbWUpICUoKm9iamVjdG5hbWUpJwoJCSkgfAoJCXdoaWxlIHJlYWQgYSBiCgkJ ZG8KCQkJdGVzdCAteiAiJGEiIHx8CgkJCWdpdCB1cGRhdGUtcmVmICJyZWZzL3JlZmVyZW5jZS10 bXAvJGEiICIkYSIKCQkJdGVzdCAteiAiJGIiIHx8CgkJCWdpdCB1cGRhdGUtcmVmICJyZWZzL3Jl ZmVyZW5jZS10bXAvJGIiICIkYiIKCQlkb25lCgllbHNlCgkJZGllICJyZWZlcmVuY2UgcmVwb3Np dG9yeSAnJHJlZmVyZW5jZScgaXMgbm90IGEgbG9jYWwgZGlyZWN0b3J5LiIKCWZpCmZpCgpybSAt ZiAiJEdJVF9ESVIvQ0xPTkVfSEVBRCIKCiMgV2UgZG8gbG9jYWwgbWFnaWMgb25seSB3aGVuIHRo ZSB1c2VyIHRlbGxzIHVzIHRvLgpjYXNlICIkbG9jYWwiIGluCnllcykKCSggY2QgIiRyZXBvL29i amVjdHMiICkgfHwKCQlkaWUgImNhbm5vdCBjaGRpciB0byBsb2NhbCAnJHJlcG8vb2JqZWN0cycu IgoKCWlmIHRlc3QgIiRsb2NhbF9zaGFyZWQiID0geWVzCgl0aGVuCgkJbWtkaXIgLXAgIiRHSVRf RElSL29iamVjdHMvaW5mbyIKCQllY2hvICIkcmVwby9vYmplY3RzIiA+PiIkR0lUX0RJUi9vYmpl Y3RzL2luZm8vYWx0ZXJuYXRlcyIKCWVsc2UKCQlsPSAmJgoJCWlmIHRlc3QgIiR1c2VfbG9jYWxf aGFyZGxpbmsiID0geWVzCgkJdGhlbgoJCQkjIFNlZSBpZiB3ZSBjYW4gaGFyZGxpbmsgYW5kIGRy b3AgImwiIGlmIG5vdC4KCQkJc2FtcGxlX2ZpbGU9JChjZCAiJHJlcG8iICYmIFwKCQkJCSAgICAg IGZpbmQgb2JqZWN0cyAtdHlwZSBmIC1wcmludCB8IHNlZCAtZSAxcSkKCQkJIyBvYmplY3RzIGRp cmVjdG9yeSBzaG91bGQgbm90IGJlIGVtcHR5IGJlY2F1c2UKCQkJIyB3ZSBhcmUgY2xvbmluZyEK CQkJdGVzdCAtZiAiJHJlcG8vJHNhbXBsZV9maWxlIiB8fCBleGl0CgkJCWlmIGxuICIkcmVwby8k c2FtcGxlX2ZpbGUiICIkR0lUX0RJUi9vYmplY3RzL3NhbXBsZSIgMj4vZGV2L251bGwKCQkJdGhl bgoJCQkJcm0gLWYgIiRHSVRfRElSL29iamVjdHMvc2FtcGxlIgoJCQkJbD1sCgkJCWVsaWYgdGVz dCAtbiAiJGxvY2FsX2V4cGxpY2l0bHlfYXNrZWRfZm9yIgoJCQl0aGVuCgkJCQllY2hvID4mMiAi V2FybmluZzogLWwgYXNrZWQgYnV0IGNhbm5vdCBoYXJkbGluayB0byAkcmVwbyIKCQkJZmkKCQlm aSAmJgoJCWNkICIkcmVwbyIgJiYKCQlmaW5kIG9iamVjdHMgLWRlcHRoIC1wcmludCB8IGNwaW8g LXB1bWQkbCAiJEdJVF9ESVIvIiB8fCBleGl0IDEKCWZpCglnaXQtbHMtcmVtb3RlICIkcmVwbyIg PiIkR0lUX0RJUi9DTE9ORV9IRUFEIiB8fCBleGl0IDEKCTs7CiopCgljYXNlICIkcmVwbyIgaW4K CXJzeW5jOi8vKikKCQljYXNlICIkZGVwdGgiIGluCgkJIiIpIDs7CgkJKikgZGllICJzaGFsbG93 IG92ZXIgcnN5bmMgbm90IHN1cHBvcnRlZCIgOzsKCQllc2FjCgkJcnN5bmMgJHF1aWV0IC1hdiAt LWlnbm9yZS1leGlzdGluZyAgXAoJCQktLWV4Y2x1ZGUgaW5mbyAiJHJlcG8vb2JqZWN0cy8iICIk R0lUX0RJUi9vYmplY3RzLyIgfHwKCQlleGl0CgkJIyBMb29rIGF0IG9iamVjdHMvaW5mby9hbHRl cm5hdGVzIGZvciByc3luYyAtLSBodHRwIHdpbGwKCQkjIHN1cHBvcnQgaXQgbmF0aXZlbHkgYW5k IGdpdCBuYXRpdmUgb25lcyB3aWxsIGRvIGl0IG9uIHRoZQoJCSMgcmVtb3RlIGVuZC4gIE5vdCBo YXZpbmcgdGhhdCBmaWxlIGlzIG5vdCBhIGNyaW1lLgoJCXJzeW5jIC1xICIkcmVwby9vYmplY3Rz L2luZm8vYWx0ZXJuYXRlcyIgXAoJCQkiJEdJVF9ESVIvVE1QX0FMVCIgMj4vZGV2L251bGwgfHwK CQkJcm0gLWYgIiRHSVRfRElSL1RNUF9BTFQiCgkJaWYgdGVzdCAtZiAiJEdJVF9ESVIvVE1QX0FM VCIKCQl0aGVuCgkJICAgICggY2QgIiREIiAmJgoJCSAgICAgIC4gZ2l0LXBhcnNlLXJlbW90ZSAm JgoJCSAgICAgIHJlc29sdmVfYWx0ZXJuYXRlcyAiJHJlcG8iIDwiJEdJVF9ESVIvVE1QX0FMVCIg KSB8CgkJICAgIHdoaWxlIHJlYWQgYWx0CgkJICAgIGRvCgkJCWNhc2UgIiRhbHQiIGluICdiYWQg YWx0ZXJuYXRlOiAnKikgZGllICIkYWx0Ijs7IGVzYWMKCQkJY2FzZSAiJHF1aWV0IiBpbgoJCQkn JykJZWNobyA+JjIgIkdldHRpbmcgYWx0ZXJuYXRlOiAkYWx0IiA7OwoJCQllc2FjCgkJCXJzeW5j ICRxdWlldCAtYXYgLS1pZ25vcmUtZXhpc3RpbmcgIFwKCQkJICAgIC0tZXhjbHVkZSBpbmZvICIk YWx0IiAiJEdJVF9ESVIvb2JqZWN0cyIgfHwgZXhpdAoJCSAgICBkb25lCgkJICAgIHJtIC1mICIk R0lUX0RJUi9UTVBfQUxUIgoJCWZpCgkJZ2l0LWxzLXJlbW90ZSAiJHJlcG8iID4iJEdJVF9ESVIv Q0xPTkVfSEVBRCIgfHwgZXhpdCAxCgkJOzsKCWh0dHBzOi8vKnxodHRwOi8vKnxmdHA6Ly8qKQoJ CWNhc2UgIiRkZXB0aCIgaW4KCQkiIikgOzsKCQkqKSBkaWUgInNoYWxsb3cgb3ZlciBodHRwIG9y IGZ0cCBub3Qgc3VwcG9ydGVkIiA7OwoJCWVzYWMKCQlpZiB0ZXN0IC16ICIiCgkJdGhlbgoJCQlj bG9uZV9kdW1iX2h0dHAgIiRyZXBvIiAiJEQiCgkJZWxzZQoJCQlkaWUgImh0dHAgdHJhbnNwb3J0 IG5vdCBzdXBwb3J0ZWQsIHJlYnVpbGQgR2l0IHdpdGggY3VybCBzdXBwb3J0IgoJCWZpCgkJOzsK CSopCgkJY2FzZSAiJHVwbG9hZF9wYWNrIiBpbgoJCScnKSBnaXQtZmV0Y2gtcGFjayAtLWFsbCAt ayAkcXVpZXQgJGRlcHRoICRub19wcm9ncmVzcyAiJHJlcG8iOzsKCQkqKSBnaXQtZmV0Y2gtcGFj ayAtLWFsbCAtayAkcXVpZXQgIiR1cGxvYWRfcGFjayIgJGRlcHRoICRub19wcm9ncmVzcyAiJHJl cG8iIDs7CgkJZXNhYyA+IiRHSVRfRElSL0NMT05FX0hFQUQiIHx8CgkJCWRpZSAiZmV0Y2gtcGFj ayBmcm9tICckcmVwbycgZmFpbGVkLiIKCQk7OwoJZXNhYwoJOzsKZXNhYwp0ZXN0IC1kICIkR0lU X0RJUi9yZWZzL3JlZmVyZW5jZS10bXAiICYmIHJtIC1mciAiJEdJVF9ESVIvcmVmcy9yZWZlcmVu Y2UtdG1wIgoKaWYgdGVzdCAtZiAiJEdJVF9ESVIvQ0xPTkVfSEVBRCIKdGhlbgoJIyBSZWFkIGdp dC1mZXRjaC1wYWNrIC1rIG91dHB1dCBhbmQgc3RvcmUgdGhlIHJlbW90ZSBicmFuY2hlcy4KCWlm IFsgLW4gIiR1c2Vfc2VwYXJhdGVfcmVtb3RlIiBdCgl0aGVuCgkJYnJhbmNoX3RvcD0icmVtb3Rl cy8kb3JpZ2luIgoJZWxzZQoJCWJyYW5jaF90b3A9ImhlYWRzIgoJZmkKCXRhZ190b3A9InRhZ3Mi Cgl3aGlsZSByZWFkIHNoYTEgbmFtZQoJZG8KCQljYXNlICIkbmFtZSIgaW4KCQkqJ157fScpCgkJ CWNvbnRpbnVlIDs7CgkJSEVBRCkKCQkJZGVzdG5hbWU9IlJFTU9URV9IRUFEIiA7OwoJCXJlZnMv aGVhZHMvKikKCQkJZGVzdG5hbWU9InJlZnMvJGJyYW5jaF90b3AvJHtuYW1lI3JlZnMvaGVhZHMv fSIgOzsKCQlyZWZzL3RhZ3MvKikKCQkJZGVzdG5hbWU9InJlZnMvJHRhZ190b3AvJHtuYW1lI3Jl ZnMvdGFncy99IiA7OwoJCSopCgkJCWNvbnRpbnVlIDs7CgkJZXNhYwoJCWdpdCB1cGRhdGUtcmVm IC1tICJjbG9uZTogZnJvbSAkcmVwbyIgIiRkZXN0bmFtZSIgIiRzaGExIiAiIgoJZG9uZSA8ICIk R0lUX0RJUi9DTE9ORV9IRUFEIgpmaQoKaWYgdGVzdCAtbiAiJFciOyB0aGVuCgljZCAiJFciIHx8 IGV4aXQKZWxzZQoJY2QgIiREIiB8fCBleGl0CmZpCgppZiB0ZXN0IC16ICIkYmFyZSIgJiYgdGVz dCAtZiAiJEdJVF9ESVIvUkVNT1RFX0hFQUQiCnRoZW4KCSMgYSBub24tYmFyZSByZXBvc2l0b3J5 IGlzIGFsd2F5cyBpbiBzZXBhcmF0ZS1yZW1vdGUgbGF5b3V0CglyZW1vdGVfdG9wPSJyZWZzL3Jl bW90ZXMvJG9yaWdpbiIKCWhlYWRfc2hhMT1gY2F0ICIkR0lUX0RJUi9SRU1PVEVfSEVBRCJgCglj YXNlICIkaGVhZF9zaGExIiBpbgoJJ3JlZjogcmVmcy8nKikKCQkjIFVoLW9oLCB0aGUgcmVtb3Rl IHRvbGQgdXMgKGh0dHAgdHJhbnNwb3J0IGRvbmUgYWdhaW5zdAoJCSMgbmV3IHN0eWxlIHJlcG9z aXRvcnkgd2l0aCBhIHN5bXJlZiBIRUFEKS4KCQkjIElkZWFsbHkgd2Ugc2hvdWxkIHNraXAgdGhl IGd1ZXNzd29yayBidXQgZm9yIG5vdwoJCSMgb3B0IGZvciBtaW5pbXVtIGNoYW5nZS4KCQloZWFk X3NoYTE9YGV4cHIgInokaGVhZF9zaGExIiA6ICd6cmVmOiByZWZzL2hlYWRzL1woLipcKSdgCgkJ aGVhZF9zaGExPWBjYXQgIiRHSVRfRElSLyRyZW1vdGVfdG9wLyRoZWFkX3NoYTEiYAoJCTs7Cgll c2FjCgoJIyBUaGUgbmFtZSB1bmRlciAkcmVtb3RlX3RvcCB0aGUgcmVtb3RlIEhFQUQgc2VlbXMg dG8gcG9pbnQgYXQuCgloZWFkX3BvaW50c19hdD0kKAoJCSgKCQkJdGVzdCAtZiAiJEdJVF9ESVIv JHJlbW90ZV90b3AvbWFzdGVyIiAmJiBlY2hvICJtYXN0ZXIiCgkJCWNkICIkR0lUX0RJUi8kcmVt b3RlX3RvcCIgJiYKCQkJZmluZCAuIC10eXBlIGYgLXByaW50IHwgc2VkIC1lICdzL15cLlwvLy8n CgkJKSB8ICgKCQlkb25lPWYKCQl3aGlsZSByZWFkIG5hbWUKCQlkbwoJCQl0ZXN0IHQgPSAkZG9u ZSAmJiBjb250aW51ZQoJCQlicmFuY2hfdGlwPWBjYXQgIiRHSVRfRElSLyRyZW1vdGVfdG9wLyRu YW1lImAKCQkJaWYgdGVzdCAiJGhlYWRfc2hhMSIgPSAiJGJyYW5jaF90aXAiCgkJCXRoZW4KCQkJ CWVjaG8gIiRuYW1lIgoJCQkJZG9uZT10CgkJCWZpCgkJZG9uZQoJCSkKCSkKCgkjIFVwc3RyZWFt IFVSTAoJZ2l0IGNvbmZpZyByZW1vdGUuIiRvcmlnaW4iLnVybCAiJHJlcG8iICYmCgoJIyBTZXQg dXAgdGhlIG1hcHBpbmdzIHRvIHRyYWNrIHRoZSByZW1vdGUgYnJhbmNoZXMuCglnaXQgY29uZmln IHJlbW90ZS4iJG9yaWdpbiIuZmV0Y2ggXAoJCSIrcmVmcy9oZWFkcy8qOiRyZW1vdGVfdG9wLyoi ICdeJCcgJiYKCgkjIFdyaXRlIG91dCByZW1vdGUuJG9yaWdpbiBjb25maWcsIGFuZCB1cGRhdGUg b3VyICIkaGVhZF9wb2ludHNfYXQiLgoJY2FzZSAiJGhlYWRfcG9pbnRzX2F0IiBpbgoJPyopCgkJ IyBMb2NhbCBkZWZhdWx0IGJyYW5jaAoJCWdpdCBzeW1ib2xpYy1yZWYgSEVBRCAicmVmcy9oZWFk cy8kaGVhZF9wb2ludHNfYXQiICYmCgoJCSMgVHJhY2tpbmcgYnJhbmNoIGZvciB0aGUgcHJpbWFy eSBicmFuY2ggYXQgdGhlIHJlbW90ZS4KCQlnaXQgdXBkYXRlLXJlZiBIRUFEICIkaGVhZF9zaGEx IiAmJgoKCQlybSAtZiAicmVmcy9yZW1vdGVzLyRvcmlnaW4vSEVBRCIKCQlnaXQgc3ltYm9saWMt cmVmICJyZWZzL3JlbW90ZXMvJG9yaWdpbi9IRUFEIiBcCgkJCSJyZWZzL3JlbW90ZXMvJG9yaWdp bi8kaGVhZF9wb2ludHNfYXQiICYmCgoJCWdpdCBjb25maWcgYnJhbmNoLiIkaGVhZF9wb2ludHNf YXQiLnJlbW90ZSAiJG9yaWdpbiIgJiYKCQlnaXQgY29uZmlnIGJyYW5jaC4iJGhlYWRfcG9pbnRz X2F0Ii5tZXJnZSAicmVmcy9oZWFkcy8kaGVhZF9wb2ludHNfYXQiCgkJOzsKCScnKQoJCSMgU291 cmNlIGhhZCBkZXRhY2hlZCBIRUFEIHBvaW50aW5nIG5vd2hlcmUKCQlnaXQgdXBkYXRlLXJlZiAt LW5vLWRlcmVmIEhFQUQgIiRoZWFkX3NoYTEiICYmCgkJcm0gLWYgInJlZnMvcmVtb3Rlcy8kb3Jp Z2luL0hFQUQiCgkJOzsKCWVzYWMKCgljYXNlICIkbm9fY2hlY2tvdXQiIGluCgknJykKCQl0ZXN0 ICJ6JHF1aWV0IiA9IHogLWEgInokbm9fcHJvZ3Jlc3MiID0geiAmJiB2PS12IHx8IHY9CgkJZ2l0 IHJlYWQtdHJlZSAtbSAtdSAkdiBIRUFEIEhFQUQKCWVzYWMKZmkKcm0gLWYgIiRHSVRfRElSL0NM T05FX0hFQUQiICIkR0lUX0RJUi9SRU1PVEVfSEVBRCIKCmlmIFsgJHdpdGhfc3VibW9kdWxlIC1l cSAxICBdOyB0aGVuCglpZiBbIC1mIC5naXRtb2R1bGVzIF07IHRoZW4KCSAgICAgICAgZm9yIG1v ZF9wYXRoIGluIGBncmVwICJwYXRoID0iIC5naXRtb2R1bGVzIHwgYXdrICd7cHJpbnQgJDN9J2A7 IGRvCiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRTdWJNb2R1bGVzICIkbW9kX3BhdGgiCiAg ICAgICAgICAgICAgICBkb25lCglmaQpmaQoKdHJhcCAtIDAK ------=_Part_26615_22457832.1199672845360--