From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 0/2] ocaml: Start on fixing brokenness when no ocamlopt Date: Fri, 20 Jan 2017 15:46:40 +0000 Message-ID: <1484927202-28014-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xensource.com Cc: Julien Grall , Stefano Stabellini , David Scott List-Id: xen-devel@lists.xenproject.org RGViaWFuIGplc3NpZSBhcm02NCBoYXMgT2NhbWwgKGluIHRoZSBwYWNrYWdlIGBvY2FtbC1ub3gn KSBidXQgdGhlCnBhY2thZ2UgbGFja3Mgb2NhbWxvcHQuCgpUaGlzIGNhdXNlcyB4ZW4uZ2l0IGJ1 aWxkcyB0byBmYWlsLiAgT3VyIGNvbmZpZ3VyZSBzY3JpcHQgZGV0ZWN0cyB0aGF0Cm9jYW1sIGlz IGF2YWlsYWJsZS4gIE91ciB2ZXJzaW9uIG9mIG00L29jYW1sLm00IHNvcnQgb2YgdHJpZXMgdG8K ZmlndXJlIG91dCB3aGF0IHRoZSBiZXN0IGNvbXBpbGVyIGlzIGJ1dCBvbmx5IGRvZXMgaGF2ZSB0 aGUgam9iLiAgQW5kCnRoZW4gb3VyIHRvb2xzL29jYW1sL2NvbW1vbi5tYWtlIHVuY29uZGl0aW9u YWxseSB1c2VzIG9jYW1sb3B0LgoKSSBhbSBub3Qgc3VyZSBleGFjdGx5IGhvdyB0byBmaXggdGhp cyAoc2VlIGJlbG93KSBidXQgSSB0aGluayB0aGVzZQp0d28gcGF0Y2hlcyBhcmUgYW4gZXNzZW50 aWFsIHN0YXJ0OgoKIDEvMiAgb2NhbWw6IENvcHkgdXAtdG8tZGF0ZSBtNC9vY2FtbC5tNCBmcm9t IGZvcmdlLm9jYW1sY29yZQogMi8yICBvY2FtbDogU3Vic3RpdHV0ZSB0b29scy9vY2FtbC9jb21t b24ubWFrZSB3aXRoIGNvbmZpZ3VyZQoKKEFuIGFsdGVybmF0aXZlIGZvciAxLzIgd291bGQgYmUg YSBnaXQgbWVyZ2UsIHdoaWNoIHdvdWxkIHByb3ZpZGUgdGhlCmRvY3MgYW5kIGdpdCBoaXN0b3J5 IGFuZCBzbyBvbiAtIGJ1dCB0aGUgb2NhbWwtYXV0b2NvbmYgUkVBRE1FIHNlZW1zCnRvIGV4cGV0 dXMgdG8gY29weSB0aGUgbTQgaW50byBvdXIgb3duIHByb2plY3QuKQoKVGhpcyBkb2VzIG5vdCBh Y3R1YWxseSBmaXggdGhlIHJlYWwgcHJvYmxlbS4gIEknbSB1bnN1cmUgaG93IHRvIGZpeCBpdApw cm9wZXJseSwgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uczoKCm9jYW1sLm00IGV4cGVjdHMgdG8g c2V0IE9DQU1MQyB0byBlaXRoZXIgYG9jYW1sb3B0JyBvciBmYWlsaW5nIHRoYXQKYG9jYW1sYycu ICBIb3dldmVyIG91ciBvY2FtbCBNYWtlZmlsZXMgc2VlbSB0byBleHBsaWNpdGx5IGNhbGwKJChP Q0FNTE9QVCkgaW4gc29tZSBwbGFjZXMgYW5kIGFuZCAkKE9DQU1MQykgaW4gb3RoZXJzLgoKU2lt cGx5IGNoYW5naW5nIHRvb2xzL29jYW1sL2NvbW1vbi5tYWtlIHRvIHN1YnN0aXR1dGUgdGhlIHZh cmlhYmxlcwpmcm9tIHRoZWlyIGNvcnJlc3BvbmRpbmcgYXV0b2NvbmYgbmFtZXMgc2VlbXMgbGlr ZSBpdCBpc24ndCByaWdodC4KCk91ciBNYWtlZmlsZXMgZXhwbGljaXRseSBjYWxsIG9jYW1sYyB2 aWEgT0NBTUxDIHJpZ2h0IG5vdyBldmVuIHdoZW4Kb2NhbWxvcHQgaXMgYXZhaWxhYmxlLCBhbmQg c3Vic3RpdHV0aW5nIE9DQU1MIHdvdWxkIGNoYW5nZSB0aG9zZSBjYWxscwp0byBPQ0FNTE9QVC4g IEFuZCBpdCB3b3VsZG4ndCBoZWxwIGZpeCB0aGUgYWN0dWFsIGJ1aWxkIGZhaWx1cmUsCmVpdGhl ciwgYmVjYXVzZSBpZiB0aGVyZSBpcyBubyBvY2FtbG9wdCwgdGhlIG00IGRvZXNuJ3QgcHJvdmlk ZSBhCnVzZWZ1bCBPQ0FNTE9QVC4KCkZZSSB0aGUgb2NhbWxmb3JnZSBtNCBjb21lcyB3aXRoIGEg cG9kLiAgWW91IGNhbiBnZXQgaXQgZnJvbQogIGh0dHBzOi8vZm9yZ2Uub2NhbWxjb3JlLm9yZy9h bm9uc2NtL2dpdC9vY2FtbC1hdXRvY29uZi9vY2FtbC1hdXRvY29uZi5naXQKCkkgaGF2ZW4ndCBj b3BpZWQgdGhhdCBpbnRvIHhlbi5naXQgaW4gcGF0Y2ggMS8yLiAgU2hvdWxkIEkgPwpJbiB0aGUg bWVhbnRpbWUsIGEgZm9ybWF0dGVkIGNvcHkgaXMgYmVsb3cuCgpJYW4uCgoKCgpJTzo6RklMRT1J TygwWDgzNEM0NTApVXNlciBDb250cmlidXRlZCBQZXJsIERvY3VtZW50YUlPOjpGSUxFPUlPKDBY ODM0QzQ1MCkoMSkKCgoKTkFNRQogICAgICAgb2NhbWwubTQgLSBBdXRvY29uZiBtYWNyb3MgZm9y IE9DYW1sCgpTVU1NQVJZCiAgICAgICAgQUNfUFJPR19PQ0FNTAogICAgICAgIEFDX1BST0dfRklO RExJQgogICAgICAgIEFDX1BST0dfT0NBTUxMRVgKICAgICAgICBBQ19QUk9HX09DQU1MWUFDQwog ICAgICAgIEFDX1BST0dfQ0FNTFA0CiAgICAgICAgQUNfQ0hFQ0tfT0NBTUxfUEtHKFtuYW1lXSkK ICAgICAgICBBQ19DSEVDS19PQ0FNTF9NT0RVTEUoVkFSSUFCTEUsTkFNRSxNT0RVTEUsSU5DTFVE RS1QQVRIUykKICAgICAgICBBQ19DSEVDS19PQ0FNTF9XT1JEX1NJWkUKCkRFU0NSSVBUSU9OCiAg ICAgICBvY2FtbC5tNCBpcyBhIGZpbGUgY29udGFpbmluZyBzdGFuZGFyZCwgdXNlZnVsIGF1dG9j b25mIG1hY3JvcyBmb3IKICAgICAgIGRldGVjdGluZyB0aGUgT0NhbWwsIGZpbmRsaWIsIE9DYW1s IHBhY2thZ2VzLCBhbmQgc28gb24gaW4geW91cgogICAgICAgYXV0b2NvbmYtZ2VuZXJhdGVkIC4v Y29uZmlndXJlIHNjcmlwdHMuCgogICAgICAgVG8gYmVnaW4gdXNpbmcgdGhlc2UgbWFjcm9zLCB5 b3Ugd2lsbCBuZWVkIHRvIGNvcHkgdGhlICJvY2FtbC5tNCIgZmlsZQogICAgICAgKHVzdWFsbHkg bG9jYXRlZCBhdCAiL3Vzci9zaGFyZS9hY2xvY2FsL29jYW1sLm00IikgdG8gdGhlIGF1dG9jb25m CiAgICAgICBtYWNyb3MgZGlyZWN0b3J5IGluIHlvdXIgcHJvamVjdC4gIE5vcm1hbGx5IHRoaXMg aXMgdGhlICJtNC8iIGRpcmVjdG9yeQogICAgICAgaW4geW91ciBwcm9qZWN0LCBidXQgdGhlIGRp cmVjdG9yeSBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUKICAgICAgICJBQ19DT05GSUdfTUFDUk9f RElSKERJUikiIGRpcmVjdGl2ZS4gIElmIHlvdSBoYXZlIGp1c3QgY3JlYXRlZCB0aGUKICAgICAg ICJtNC8iIGRpcmVjdG9yeSwgdGhlbiB5b3UgbWF5IGFsc28gbmVlZCB0byBkbzoKCiAgICAgICAg YWNsb2NhbCAtSSBtNAoKICAgICAgIFlvdSBjYW4gdGhlbiBhZGQgYW55IG9mIHRoZSBtYWNyb3Mg ZGVzY3JpYmVkIGJlbG93IHRvIHlvdXIKICAgICAgICJjb25maWd1cmUuYWMiIChvciAiY29uZmln dXJlLmluIikuIEFsbW9zdCBldmVyeSBPQ2FtbCBwcm9qZWN0IHNob3VsZAogICAgICAgdXNlICJB Q19QUk9HX09DQU1MIiBmaXJzdCBhbmQgcHJvYmFibHkgIkFDX1BST0dfRklORExJQiIgcmlnaHQg YWZ0ZXIKICAgICAgIGl0LgoKICAgICAgIFRoaXMgbWFudWFsIHBhZ2UgZG9lcyBub3QgZGVzY3Jp YmUgaG93IHRvIHVzZSBhdXRvY29uZi4gIEZvciB0aGF0IHlvdQogICAgICAgc2hvdWxkIHJlYWQg dGhlIGRldGFpbGVkIGF1dG9jb25mIGluZm8gZmlsZSAoImluZm8gYXV0b2NvbmYiKS4KCkFDX1BS T0dfT0NBTUwKICAgICAgIFRoaXMgbWFjcm8gZGV0ZWN0cyB3aGljaCB0b29scyBvZiB0aGUgdXN1 YWwgT0NhbWwgdG9vbGNoYWluIGFyZQogICAgICAgYXZhaWxhYmxlLiBJdCBkZWZpbmVzIGFuZCBz dWJzdGl0dXRlcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKCiAgICAgICAgT0NBTUxDICAgICAg ICAgIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgYnl0ZWNvZGUgY29tcGlsZXIKICAgICAgICAgICAg ICAgICAgICAgICAgICAoZWcuICJvY2FtbGMiIG9yICJvY2FtbGMub3B0IiksIG9yICJubyIgaWYK ICAgICAgICAgICAgICAgICAgICAgICAgICBubyBPQ2FtbCBpbnN0YWxsYXRpb24gd2FzIGZvdW5k CiAgICAgICAgT0NBTUxPUFQgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBuYXRpdmUtY29kZSBjb21w aWxlciwgZWcuICJvY2FtbG9wdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9jYW1sb3B0 Lm9wdCIgb3IgIm5vIgogICAgICAgIE9DQU1MQkVTVCAgICAgICAiYnl0ZSIgKGlmIG9ubHkgdGhl IGJ5dGVjb2RlIGNvbXBpbGVyIGlzIGF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICBvciAib3B0IiAoaWYgYm90aCBieXRlY29kZSBhbmQgbmF0aXZlIGNvZGUgY29tcGlsZXJzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGF2YWlsYWJsZSkKICAgICAgICBPQ0FNTE5BVERZ TkxJTksgInllcyIgKGlmIG5hdGl2ZSBkeW5saW5rIGlzIGF2YWlsYWJsZSkgb3IgIm5vIgogICAg ICAgIE9DQU1MREVQICAgICAgICB0aGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeSByZXNvbHZlciwg ZWcuICJvY2FtbGRlcCIKICAgICAgICBPQ0FNTE1LVE9QICAgICAgdGhlIG5hbWUgb2Ygb2NhbWxt a3RvcAogICAgICAgIE9DQU1MTUtMSUIgICAgICB0aGUgbmFtZSBvZiBvY2FtbG1rbGliCiAgICAg ICAgT0NBTUxET0MgICAgICAgIHRoZSBuYW1lIG9mIG9jYW1sZG9jCiAgICAgICAgT0NBTUxCVUlM RCAgICAgIHRoZSBuYW1lIG9mIG9jYW1sYnVpbGQKICAgICAgICBPQ0FNTExJQiAgICAgICAgdGhl IE9DYW1sIGxpYnJhcnkgcGF0aCAoZWcuIEM8L3Vzci9saWIvb2NhbWwvPikKICAgICAgICBPQ0FN TFZFUlNJT04gICAgdGhlIGNvbXBpbGVyIHZlcnNpb24gKGVnLiBDPDMuMTEuMD4pCgogICBEZXRl Y3RpbmcgaWYgT0NhbWwgaXMgaW5zdGFsbGVkCiAgICAgICBVbmxpa2Ugb2xkIHZlcnNpb25zIG9m IHRoZXNlIG1hY3JvcywgIkFDX1BST0dfT0NBTUwiIGRvZXMgbm90IGV4aXQgaWYKICAgICAgIG5v IE9DYW1sIGluc3RhbGxhdGlvbiBpcyBkZXRlY3RlZC4gIFRoZXJlZm9yZSBpZiB5b3Ugd2FudCB0 byBkZXRlY3QgaWYKICAgICAgIE9DYW1sIGlzIGluc3RhbGxlZCB5b3UgaGF2ZSB0byBkbyBzb21l dGhpbmcgbGlrZSB0aGlzOgoKICAgICAgICBBQ19QUk9HX09DQU1MCiAgICAgICAgaWYgdGVzdCAi JE9DQU1MQyIgPSAibm8iOyB0aGVuCiAgICAgICAgICBBQ19NU0dfRVJST1IoW1lvdSBtdXN0IGlu c3RhbGwgdGhlIE9DYW1sIGNvbXBpbGVyXSkKICAgICAgICBmaQoKICAgICAgIFRoaXMgYmVoYXZp b3VyIGFuZCB1c2FnZSBwYXR0ZXJuIGFyZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgbWFjcm9zIG9m CiAgICAgICB0aGUgIkFDX1BST0dfKiIpIGZhbWlseS4KCiAgIENyb3NzLWNvbXBpbGluZwogICAg ICAgSWYgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgaW52b2tlZCBmb3IgY3Jvc3MtY29tcGlsaW5n IHRoZW4KICAgICAgICJBQ19QUk9HX09DQU1MIiB3aWxsIGRldGVjdCB0aGUgY3Jvc3MtY29tcGls ZXIgdmVyc2lvbnMgb2YgdGhlIE9DYW1sCiAgICAgICBjb21waWxlciwgZWcuICJPQ0FNTEM9aTY4 Ni1wYy1taW5ndzMyLW9jYW1sYyIgZXRjLiAgVGhpcyBoYXBwZW5zCiAgICAgICBhdXRvbWF0aWNh bGx5LCBhbmQgZm9yIG1vc3QgcHVycG9zZXMgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQg aXQuCgpBQ19QUk9HX0ZJTkRMSUIKICAgICAgIFRoaXMgbWFjcm8gY2hlY2tzIGZvciB0aGUgcHJl c2VuY2Ugb2YgdGhlIG9jYW1sZmluZCBwcm9ncmFtIChwYXJ0IG9mCiAgICAgICBmaW5kbGliKS4g IEl0IGRlZmluZXMgYW5kIHN1YnN0aXR1dGVzICJPQ0FNTEZJTkQiIHRvIHRoZSBuYW1lIG9mIHRo ZQogICAgICAgb2NhbWxmaW5kIHByb2dyYW0sIG9yICJubyIgaWYgbm90IGZvdW5kLgoKICAgICAg IE5vdGUgdGhhdCB0aGlzIG1hY3JvIGRvZXMgbm90IGZhaWwgaWYgb2NhbWxmaW5kIGlzIG5vdCBm b3VuZC4gIElmIHlvdQogICAgICAgd2FudCB0byBmb3JjZSB0aGUgdXNlciB0byBpbnN0YWxsIGZp bmRsaWIsIHlvdSBzaG91bGQgZG86CgogICAgICAgIEFDX1BST0dfRklORExJQgogICAgICAgIGlm IHRlc3QgIiRPQ0FNTEZJTkQiID0gIm5vIjsgdGhlbgogICAgICAgICAgQUNfTVNHX0VSUk9SKFtZ b3UgbXVzdCBpbnN0YWxsIE9DYW1sIGZpbmRsaWIgKHRoZSBvY2FtbGZpbmQgY29tbWFuZCldKQog ICAgICAgIGZpCgogICAgICAgU2VlIGFsc28gIkFDX0NIRUNLX09DQU1MX1BLRyIuCgpBQ19QUk9H X09DQU1MTEVYCiAgICAgICBUaGlzIGNoZWNrcyBmb3IgdGhlIG9jYW1sbGV4IHByb2dyYW0gYW5k IHNldHMgIk9DQU1MTEVYIiB0byB0aGUgbmFtZSBvZgogICAgICAgdGhlIHByb2dyYW0gKGVnLiAi b2NhbWxsZXgiIG9yICJvY2FtbGxleC5vcHQiKSwgb3IgIm5vIiBpZiBub3QgZm91bmQuCgpBQ19Q Uk9HX09DQU1MWUFDQwogICAgICAgVGhpcyBjaGVja3MgZm9yIHRoZSBvY2FtbHlhY2MgcHJvZ3Jh bSBhbmQgc2V0cyAiT0NBTUxZQUNDIiB0byB0aGUgbmFtZQogICAgICAgb2YgdGhlIHByb2dyYW0s IG9yICJubyIgaWYgbm90IGZvdW5kLgoKQUNfUFJPR19DQU1MUDQKICAgICAgIFRoaXMgY2hlY2tz IGZvciBjYW1scDQsIGFuZCBjaGVja3MgdGhhdCB0aGUgdmVyc2lvbiBtYXRjaGVzIHRoZQogICAg ICAgY29tcGlsZXIgdmVyc2lvbiBmb3VuZCBwcmV2aW91c2x5LiAgSXQgc2V0cyAiQ0FNTFA0IiB0 byB0aGUgbmFtZSBvZiB0aGUKICAgICAgIGJhc2ljIGNhbWxwNCBwcm9ncmFtLCBvciAibm8iIGlm IG5vdCBmb3VuZC4KCiAgICAgICBUaGUgbWFjcm8gYWxzbyBjaGVja3MgZm9yIG90aGVyIHRvb2xz IG9mIHRoZSBjYW1scDQgc3VpdGUgbGlrZSBjYW1scDRvLAogICAgICAgY2FtbHA0b3JmLCBldGMu IEZvciBlYWNoIG9mIHRoZW0sIGEgZnVsbHkgY2FwaXRhbGl6ZWQgdmFyaWFibGUgaXMgc2V0CiAg ICAgICB0byB0aGUgdG9vbCBuYW1lIChvciAibm8iIGlmIG5vdCBmb3VuZCk7IGFsbCB2YXJpYWJs ZSBhcmUgc3Vic3RpdHV0ZWQKICAgICAgIGZvciB3aGVuIGZpbGxpbmcgLmluIGZpbGVzLiBUaGUg ZnVsbCBsaXN0IG9mIHRvb2xzIGFuZCByZXNwZWN0aXZlCiAgICAgICB2YXJpYWJsZSBuYW1lcyBp cyBhcyBmb2xsb3dzOgoKICAgICAgICBjYW1scDQgICAgICAgIENBTUxQNAogICAgICAgIGNhbWxw NGJvb3QgICAgQ0FNTFA0Qk9PVAogICAgICAgIGNhbWxwNG8gICAgICAgQ0FNTFA0TwogICAgICAg IGNhbWxwNG9mICAgICAgQ0FNTFA0T0YKICAgICAgICBjYW1scDRvb2YgICAgIENBTUxQNE9PRgog ICAgICAgIGNhbWxwNG9yZiAgICAgQ0FNTFA0T1JGCiAgICAgICAgY2FtbHA0cHJvZiAgICBDQU1M UDRQUk9GCiAgICAgICAgY2FtbHA0ciAgICAgICBDQU1MUDRSCiAgICAgICAgY2FtbHA0cmYgICAg ICBDQU1MUDRSRgoKQUNfQ0hFQ0tfT0NBTUxfUEtHCiAgICAgICBUaGlzIGlzIHRoZSBtYWluIG1h Y3JvIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBPQ2FtbAogICAg ICAgZmluZGxpYiBwYWNrYWdlcy4gIFRoaXMgbWFjcm8gdXNlcyBvY2FtbGZpbmQgdG8gbG9vayB1 cCBmaW5kbGliCiAgICAgICBwYWNrYWdlcyAoYW5kIHRodXMgcmVxdWlyZXMgdGhhdCBmaW5kbGli IGl0c2VsZiBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZAogICAgICAgdGhhdCB0aGUgcGFja2FnZSBo YXMgYmVlbiBwcm9wZXJseSBwYWNrYWdlZCB3aXRoIGEgTUVUQSBmaWxlIGV0Yy4pICBJZgogICAg ICAgeW91IHdhbnQgdG8gZmluZCBhbiBPQ2FtbCBmaW5kbGliIHBhY2thZ2Ugd2hpY2ggaGFzbid0 IGJlZW4gaW5zdGFsbGVkCiAgICAgICB3aXRoIGZpbmRsaWIgdGhlbiB5b3Ugc2hvdWxkIHRyeSB1 c2luZyAiQUNfQ0hFQ0tfT0NBTUxfTU9EVUxFIiBpbnN0ZWFkLgoKICAgICAgICBBQ19DSEVDS19P Q0FNTF9QS0coW25hbWVdKQoKICAgICAgIGNoZWNrcyBmb3IgYW4gT0NhbWwgZmluZGxpYiBwYWNr YWdlIHdpdGggdGhlIGdpdmVuIG5hbWUuIElmIGZvdW5kLCBpdAogICAgICAgZGVmaW5lcyBhbmQg c3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxlICJPQ0FNTF9QS0dfbmFtZSIgd2hlcmUgdGhlICJuYW1l IgogICAgICAgcGFydCBpcyBzdWJzdGl0dXRlZCBmb3IgdGhlIHBhY2thZ2UgbmFtZSBieSByZXBs YWNpbmcgYWxsIGRhc2hlcyB3aXRoCiAgICAgICB1bmRlcnNjb3Jlcy4KCiAgICAgICBGb3IgZXhh bXBsZSwKCiAgICAgICAgQUNfQ0hFQ0tfT0NBTUxfUEtHKFt4bWwtbGlnaHRdKQoKICAgICAgIHdp bGwgc2V0ICJPQ0FNTF9QS0dfeG1sX2xpZ2h0IiB0byBlaXRoZXIgInhtbC1saWdodCIgb3IgIm5v Ii4KCiAgICAgICBUbyBoYXZlIHRoZSBjb25maWd1cmUgc2NyaXB0IGZhaWwgaWYgYSBwYWNrYWdl IGlzIG5vdCBpbnN0YWxsZWQsIGRvOgoKICAgICAgICBBQ19DSEVDS19PQ0FNTF9QS0coW2Zvb10p CiAgICAgICAgaWYgdGVzdCAiJE9DQU1MX1BLR19mb28iID0gIm5vIjsgdGhlbgogICAgICAgICAg QUNfTVNHX0VSUk9SKFtQbGVhc2UgaW5zdGFsbCBPQ2FtbCBmaW5kbGliIG1vZHVsZSAnZm9vJy5d KQogICAgICAgIGZpCgogICAgICAgSW4geW91ciBNYWtlZmlsZS5pbiwgdXNlIHRoZSBzdWJzdGl0 dXRpb24gdmFyaWFibGUgaW4gY29uanVuY3Rpb24gd2l0aAogICAgICAgb2NhbWxmaW5kLCBlZzoK CiAgICAgICAgLm1sLmNtbzoKICAgICAgICAgICQoT0NBTUxGSU5EKSBvY2FtbGMgLXBhY2thZ2Ug QE9DQU1MX1BLR19mb29AIC1jICQ8IC1vICRACgogICAgICAgTm90ZSB0aGF0IGFsc28gaW4gdGhl IHN1YnN0aXR1dGlvbiB2YXJpYWJsZSBkYXNoZXMgYXJlIHJlcGxhY2VkIHdpdGgKICAgICAgIHVu ZGVyc2NvcmVzLgoKICAgQ2hlY2tpbmcgZm9yIGFsdGVybmF0aXZlIGZpbmRsaWIgcGFja2FnZSBu YW1lcwogICAgICAgSW4gdGhlICh1bmxpa2VseSkgY2FzZSB3aGVyZSB0aGUgc2FtZSBsaWJyYXJ5 IGNvcnJlc3BvbmRzIHRvIGRpZmZlcmVudAogICAgICAgZmluZGxpYiBwYWNrYWdlIG5hbWVzIG9u IGRpZmZlcmVudCBzeXN0ZW1zLCB5b3UgY2FuIGltcHJvdmUgcG9ydGFiaWxpdHkKICAgICAgIGJ5 IGNoZWNraW5nIGZvciB0aGUgYWx0ZXJuYXRpdmUgbmFtZXMgcGFzc2luZyBhIHNlY29uZCBhcmd1 bWVudCB0bwogICAgICAgIkFDX0NIRUNLX09DQU1MX1BLRyI6CgogICAgICAgIEFDX0NIRUNLX09D QU1MX1BLRyhQS0dOQU1FLEFMVEVSTkFUSVZFLU5BTUVTKQoKICAgICAgIFRoZSBiZWhhdmlvdXIg aXMgdGhlIHNhbWUgYXMgYmVmb3JlIGlmICJQS0dOQU1FIiBpcyBmb3VuZC4gT3RoZXJ3aXNlCiAg ICAgICBhbGwgbmFtZXMgaW4gIkFMVEVSTkFUSVZFLU5BTUVTIiBhcmUgdGVzdGVkIGluIHR1cm4g YXMgZmluZGxpYiBwYWNrYWdlCiAgICAgICBuYW1lcy4gSWYgb25lIGlzIGZvdW5kLCBpdCBpcyBz ZXQgYXMgdGhlIHZhbHVlIHNldCBieSB0aGUgbWFjcm8gYW5kCiAgICAgICBzdWJzdGl0dXRlZCBp biAuaW4gZmlsZXM7IG90aGVyd2lzZSAibm8iIGlzIHNldC4KCiAgICAgICBOb3RlIHRoYXQgdGhl IHZhcmlhYmxlIG5hbWUgaXMgZGV0ZXJtaW5lZCBieSAiUEtHTkFNRSIsIHdoaWxlIHRoZSB2YWx1 ZQogICAgICAgZGVwZW5kcyBvbiB0aGUgYWN0dWFsIGFsdGVybmF0aXZlIG5hbWUgZm91bmQuCgog ICAgICAgRm9yIGV4YW1wbGUsIHRvIGRldGVjdCB0aGUgY2FtbHppcCBmaW5kbGliIHBhY2thZ2Us IGVpdGhlciBjYWxsZWQgInppcCIKICAgICAgIG9yICJjYW1semlwIiwgYW5kIHRvIHN0b3JlIHRo ZSBmb3VuZCB2YWx1ZSBpbiB0aGUgIk9DQU1MX1BLR196aXAiCiAgICAgICB2YXJpYWJsZSB5b3Ug Y2FuIGRvIGluIHlvdXIgY29uZmlndXJlLmFjOgoKICAgICAgICBBQ19DSEVDS19PQ0FNTF9QS0co emlwLGNhbWx6aXApCgogICAgICAgYW5kIGhhdmUgYSBwb3J0YWJsZSBNYWtlZmlsZS5pbiBidWls ZCBsaW5lIHN1Y2ggYXM6CgogICAgICAgIC5tbC5jbW86CiAgICAgICAgICAkKE9DQU1MRklORCkg b2NhbWxjIC1wYWNrYWdlIEBPQ0FNTF9QS0dfemlwQCAtYyAkPCAtbyAkQAoKQUNfQ0hFQ0tfT0NB TUxfTU9EVUxFKFZBUklBQkxFLE5BTUUsTU9EVUxFLElOQ0xVREUtUEFUSFMpCiAgICAgICAiQUNf Q0hFQ0tfT0NBTUxfTU9EVUxFIiBpcyB0aGUgaGFpcmllciBhbHRlcm5hdGl2ZSB0bwogICAgICAg IkFDX0NIRUNLX09DQU1MX1BLRyIuICBZb3Ugc2hvdWxkIGFsd2F5cyB1c2UgIkFDX0NIRUNLX09D QU1MX1BLRyIgYW5kCiAgICAgICBvY2FtbGZpbmQvZmluZGxpYiBpZiBwb3NzaWJsZS4KCiAgICAg ICBUaGUgcGFyYW1ldGVycyBhcmU6CgogICAgICAgVkFSSUFCTEUKICAgICAgICAgICBUaGlzIGlz IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGlzIHNldC4gIEl0IHdpbGwgZWl0aGVyIGJl CiAgICAgICAgICAgc2V0IHRvIHRoZSBpbmNsdWRlIHBhdGgsIG9yIHRvICJubyIgaWYgdGhlIG1v ZHVsZSB3YXMgbm90IGZvdW5kLgoKICAgICAgIE5BTUUKICAgICAgICAgICBUaGlzIGlzIHRoZSBu YW1lIG9mIHRoZSBtb2R1bGUgd2UgYXJlIGxvb2tpbmcgZm9yLiAgVGhpcyBwYXJhbWV0ZXIKICAg ICAgICAgICBpcyBqdXN0IHVzZWQgZm9yIHByaW50aW5nIG1lc3NhZ2VzLCBhbmQgZG9lcyBub3Qg YWZmZWN0IGhvdyB0aGUKICAgICAgICAgICBtb2R1bGUgaXMgZm91bmQuCgogICAgICAgTU9EVUxF CiAgICAgICAgICAgVGhpcyBzaG91bGQgYmUgYW4gT0NhbWwgbW9kdWxlIG5hbWUsIHJlcHJlc2Vu dGluZyB0aGUgbW9kdWxlIG5hbWUKICAgICAgICAgICBiZWluZyBsb29rZWQgdXAuICBZb3UgY2Fu IHB1dCBzdWItbW9kdWxlcyBoZXJlLCBlZy4KICAgICAgICAgICAiQ2FsZW5kYXJMaWIuRGF0ZSIK CiAgICAgICBJTkNMVURFLVBBVEhTCiAgICAgICAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBsaXN0 IG9mIGluY2x1ZGUgZGlyZWN0b3JpZXMgdG8gc2VhcmNoLCBlZy4KICAgICAgICAgICAiK2NhbGVu ZGFyIgoKICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBjaGVjayBm b3IgdGhlIE9DYW1sIENhbGVuZGFyCiAgICAgICBtb2R1bGUsIGFuZCB3aWxsIGRpc3Rpbmd1aXNo IGJldHdlZW4gdmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgb2YgdGhpcwogICAgICAgbW9kdWxlICh3 aGljaCBoYXZlIGluY29tcGF0aWJsZSBBUElzKS4KCiAgICAgICAgQUNfQ0hFQ0tfT0NBTUxfUEtH KGNhbGVuZGFyKQogICAgICAgIEFDX0NIRUNLX09DQU1MX01PRFVMRShpc19jYWxlbmRhcjIsY2Fs ZW5kYXIsW0NhbGVuZGFyTGliLkRhdGVdLFsrY2FsZW5kYXJdKQoKICAgICAgIEFmdGVyIHRoZSBh Ym92ZSBjb2RlIGhhcyBydW4sIHZhcmlhYmxlcyAiT0NBTUxfUEtHX2NhbGVuZGFyIiBhbmQKICAg ICAgICJpc19jYWxlbmRhcjIiIHdpbGwgYmUgc2V0IGFzIGZvbGxvd3M6CgogICAgICAgIE9DQU1M X1BLR19jYWxlbmRhciAgaXNfY2FsZW5kYXIyICBSZXN1bHQKCiAgICAgICAgeWVzICAgICAgICAg ICAgICAgICArY2FsZW5kYXIgICAgIENhbGVuZGFyIHYyIGlzIGluc3RhbGxlZAogICAgICAgIHll cyAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBDYWxlbmRhciB2MSBpcyBpbnN0YWxsZWQK ICAgICAgICBubyAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgTm8gQ2FsZW5kYXIgbW9k dWxlIGluc3RhbGxlZAoKQUNfQ0hFQ0tfT0NBTUxfV09SRF9TSVpFCiAgICAgICBUaGlzIGNoZWNr cyB0aGUgd29yZCBzaXplIG9mIHRoZSBPQ2FtbCBjb21waWxlciwgYW5kIHNldHMKICAgICAgICJP Q0FNTF9XT1JEX1NJWkUiIHRvIGVpdGhlciAzMiBvciA2NC4KClNFRSBBTFNPCiAgICAgICBhdXRv Y29uZigxKSwgPGh0dHA6Ly9vY2FtbC1hdXRvY29uZi5mb3JnZS5vY2FtbGNvcmUub3JnPiwKICAg ICAgIDxodHRwOi8vY2FtbC5pbnJpYS5mci8+CgpGSUxFUwogICAgICAgwrcgICAvdXNyL3NoYXJl L2FjbG9jYWwvb2NhbWwubTQKCkFVVEhPUlMKICAgICAgIFZhcmlvdXMgcGVvcGxlIGhhdmUgY29u dHJpYnV0ZWQgdG8gdGhlc2UgbWFjcm9zIG92ZXIgbWFueSB5ZWFyczoKCiAgICAgICDCtyAgIE9s aXZpZXIgQW5kcmlldQoKICAgICAgIMK3ICAgSmVhbi1DaHJpc3RvcGhlIEZpbGxpYXRyZQoKICAg ICAgIMK3ICAgUmljaGFyZCBXLk0uIEpvbmVzCgogICAgICAgwrcgICBHZW9yZ2VzIE1hcmlhbm8K CiAgICAgICDCtyAgIEppbSBNZXllcmluZwoKICAgICAgIMK3ICAgU3RlZmFubyBaYWNjaGlyb2xp CgpMSUNFTlNFCiAgICAgICAgQ29weXJpZ2h0IFggMjAwOSAgICAgIFJpY2hhcmQgVy5NLiBKb25l cwogICAgICAgIENvcHlyaWdodCBYIDIwMDkgICAgICBTdGVmYW5vIFphY2NoaXJvbGkKICAgICAg ICBDb3B5cmlnaHQgWCAyMDAwLTIwMDUgT2xpdmllciBBbmRyaWV1CiAgICAgICAgQ29weXJpZ2h0 IFggMjAwMC0yMDA1IEplYW4tQ2hyaXN0b3BoZSBGaWxsaWF0cmUKICAgICAgICBDb3B5cmlnaHQg WCAyMDAwLTIwMDUgR2VvcmdlcyBNYXJpYW5vCgogICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu CgogICAgICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgICAgICAgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoKICAgICAgICAq IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSwgdGhpcwogICAgICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLgogICAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICAgICAgIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl IGRvY3VtZW50YXRpb24KICAgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgICAgICAqIFRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0 b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKICAgICAgICBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0 ZW4KICAgICAgICBwZXJtaXNzaW9uLgoKICAgICAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgJydBUyBJUycnIEFORCBBTlkKICAgICAg ICBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFRIRSBJTVBMSUVECiAgICAgICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQogICAgICAgIERJU0NMQUlN RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUgRk9SIEFOWQogICAgICAgIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCiAgICAgICAgKElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOwogICAgICAgIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgogICAgICAgIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUCiAgICAgICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKICAgICAgICBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KClJFUE9SVElORyBC VUdTCiAgICAgICBQbGVhc2UgcmVwb3J0IGJ1Z3MgdG8gdGhlIGF1dGhvcnMgYXQgdGhlIHByb2pl Y3QgcGFnZToKICAgICAgIDxodHRwOi8vZm9yZ2Uub2NhbWxjb3JlLm9yZy9wcm9qZWN0cy9vY2Ft bC1hdXRvY29uZi8+LCB1c2luZyB0aGUgZm9yZ2UKICAgICAgIGJ1ZyB0cmFja2VyIDxodHRwOi8v Zm9yZ2Uub2NhbWxjb3JlLm9yZy90cmFja2VyLz9ncm91cF9pZD02OT4uCgoKCnBlcmwgdjUuMjAu MiAgICAgICAgICAgICAgICAgICAgICAyMDE3LTAxLTIwICAgICAgICAgSU86OkZJTEU9SU8oMFg4 MzRDNDUwKSgxKQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==