First Call for Papers: PACMPL issue ICFP 2019
"'Sam Tobin-Hochstadt' via MLton-user" <[email protected]> Thu, 08 Nov 2018 21:45:06 -0500
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <[email protected]> |
ICAgICAgICAgICAgICAgIFBBQ01QTCBWb2x1bWUgMywgSXNzdWUgSUNGUCAyMDE5CgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ2FsbCBmb3IgUGFwZXJzCgoKCiAgICAgICAgICAgIGFjY2Vw dGVkIHBhcGVycyB0byBiZSBpbnZpdGVkIGZvciBwcmVzZW50YXRpb24gYXQKCiBUaGUgMjR0aCBB Q00gU0lHUExBTiBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gRnVuY3Rpb25hbCBQcm9ncmFt bWluZwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXJsaW4sIEdlcm1hbnkKCiAgICAg ICAgICAgICAgICAgICAgICAgaHR0cDovL2ljZnAxOS5zaWdwbGFuLm9yZy8KCgoKIyMjIEltcG9y dGFudCBkYXRlcwoKCgpTdWJtaXNzaW9ucyBkdWU6ICAgIDEgTWFyY2ggMjAxOSAoRnJpZGF5KSBB bnl3aGVyZSBvbiBFYXJ0aAoKICAgICAgICAgICAgICAgICAgICBodHRwczovL2ljZnAxOS5ob3Rj cnAuY29tCgpBdXRob3IgcmVzcG9uc2U6ICAgIDE2IEFwcmlsIChUdWVzZGF5KSAtIDE4IEFwcmkg KEZyaWRheSkgMTQ6MDAgVVRDCgpOb3RpZmljYXRpb246ICAgICAgIDMgTWF5IChGcmlkYXkpCgpG aW5hbCBjb3B5IGR1ZTogICAgIDIyIEp1bmUgKFNhdHVyZGF5KQoKQ29uZmVyZW5jZTogICAgICAg ICAxOCBBdWd1c3QgKFN1bmRheSkgLSAyMyBBdWd1c3QgKEZyaWRheSkKCgoKIyMjIEFib3V0IFBB Q01QTAoKCgpQcm9jZWVkaW5ncyBvZiB0aGUgQUNNIG9uIFByb2dyYW1taW5nIExhbmd1YWdlcyAo UEFDTVBMIDxodHRwczovL3BhY21wbC5hY20ub3JnLz4pIGlzIGEgR29sZCBPcGVuIEFjY2VzcyBq b3VybmFsIHB1Ymxpc2hpbmcgcmVzZWFyY2ggb24gYWxsIGFzcGVjdHMgb2YgcHJvZ3JhbW1pbmcg bGFuZ3VhZ2VzLCBmcm9tIGRlc2lnbiB0byBpbXBsZW1lbnRhdGlvbiBhbmQgZnJvbSBtYXRoZW1h dGljYWwgZm9ybWFsaXNtcyB0byBlbXBpcmljYWwgc3R1ZGllcy4gRWFjaCBpc3N1ZSBvZiB0aGUg am91cm5hbCBpcyBkZXZvdGVkIHRvIGEgcGFydGljdWxhciBzdWJqZWN0IGFyZWEgd2l0aGluIHBy b2dyYW1taW5nIGxhbmd1YWdlcyBhbmQgd2lsbCBiZSBhbm5vdW5jZWQgdGhyb3VnaCBwdWJsaWNp emVkIENhbGxzIGZvciBQYXBlcnMsIGxpa2UgdGhpcyBvbmUuCgoKCiMjIyBTY29wZQoKCgpbUEFD TVBMXShodHRwczovL3BhY21wbC5hY20ub3JnLykgaXNzdWUgSUNGUCAyMDE5IHNlZWtzIG9yaWdp bmFsIHBhcGVycyBvbiB0aGUgYXJ0IGFuZCBzY2llbmNlIG9mIGZ1bmN0aW9uYWwgcHJvZ3JhbW1p bmcuIFN1Ym1pc3Npb25zIGFyZSBpbnZpdGVkIG9uIGFsbCB0b3BpY3MgZnJvbSBwcmluY2lwbGVz IHRvIHByYWN0aWNlLCBmcm9tIGZvdW5kYXRpb25zIHRvIGZlYXR1cmVzLCBhbmQgZnJvbSBhYnN0 cmFjdGlvbiB0byBhcHBsaWNhdGlvbi4gVGhlIHNjb3BlIGluY2x1ZGVzIGFsbCBsYW5ndWFnZXMg dGhhdCBlbmNvdXJhZ2UgZnVuY3Rpb25hbCBwcm9ncmFtbWluZywgaW5jbHVkaW5nIGJvdGggcHVy ZWx5IGFwcGxpY2F0aXZlIGFuZCBpbXBlcmF0aXZlIGxhbmd1YWdlcywgYXMgd2VsbCBhcyBsYW5n dWFnZXMgd2l0aCBvYmplY3RzLCBjb25jdXJyZW5jeSwgb3IgcGFyYWxsZWxpc20uIFRvcGljcyBv ZiBpbnRlcmVzdCBpbmNsdWRlIChidXQgYXJlIG5vdCBsaW1pdGVkIHRvKToKCgoKICAqICpMYW5n dWFnZSBEZXNpZ24qOiBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20sIGFuZCBkaXN0cmlidXRpb247 IG1vZHVsZXM7IGNvbXBvbmVudHMgYW5kIGNvbXBvc2l0aW9uOyBtZXRhcHJvZ3JhbW1pbmc7IHR5 cGUgc3lzdGVtczsgaW50ZXJvcGVyYWJpbGl0eTsgZG9tYWluLXNwZWNpZmljIGxhbmd1YWdlczsg YW5kIHJlbGF0aW9ucyB0byBpbXBlcmF0aXZlLCBvYmplY3Qtb3JpZW50ZWQsIG9yIGxvZ2ljIHBy b2dyYW1taW5nLgoKCgogICogKkltcGxlbWVudGF0aW9uKjogYWJzdHJhY3QgbWFjaGluZXM7IHZp cnR1YWwgbWFjaGluZXM7IGludGVycHJldGF0aW9uOyBjb21waWxhdGlvbjsgY29tcGlsZS10aW1l IGFuZCBydW4tdGltZSBvcHRpbWl6YXRpb247IGdhcmJhZ2UgY29sbGVjdGlvbiBhbmQgbWVtb3J5 IG1hbmFnZW1lbnQ7IG11bHRpLXRocmVhZGluZzsgZXhwbG9pdGluZyBwYXJhbGxlbCBoYXJkd2Fy ZTsgaW50ZXJmYWNlcyB0byBmb3JlaWduIGZ1bmN0aW9ucywgc2VydmljZXMsIGNvbXBvbmVudHMs IG9yIGxvdy1sZXZlbCBtYWNoaW5lIHJlc291cmNlcy4KCgoKICAqICpTb2Z0d2FyZS1EZXZlbG9w bWVudCBUZWNobmlxdWVzKjogYWxnb3JpdGhtcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzOyBkZXNpZ24g cGF0dGVybnM7IHNwZWNpZmljYXRpb247IHZlcmlmaWNhdGlvbjsgdmFsaWRhdGlvbjsgcHJvb2Yg YXNzaXN0YW50czsgZGVidWdnaW5nOyB0ZXN0aW5nOyB0cmFjaW5nOyBwcm9maWxpbmcuCgoKCiAg KiAqRm91bmRhdGlvbnMqOiBmb3JtYWwgc2VtYW50aWNzOyBsYW1iZGEgY2FsY3VsdXM7IHJld3Jp dGluZzsgdHlwZSB0aGVvcnk7IG1vbmFkczsgY29udGludWF0aW9uczsgY29udHJvbDsgc3RhdGU7 IGVmZmVjdHM7IHByb2dyYW0gdmVyaWZpY2F0aW9uOyBkZXBlbmRlbnQgdHlwZXMuCgoKCiAgKiAq QW5hbHlzaXMgYW5kIFRyYW5zZm9ybWF0aW9uKjogY29udHJvbC1mbG93OyBkYXRhLWZsb3c7IGFi c3RyYWN0IGludGVycHJldGF0aW9uOyBwYXJ0aWFsIGV2YWx1YXRpb247IHByb2dyYW0gY2FsY3Vs YXRpb24uCgoKCiAgKiAqQXBwbGljYXRpb25zKjogc3ltYm9saWMgY29tcHV0aW5nOyBmb3JtYWwt bWV0aG9kcyB0b29sczsgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IHN5c3RlbXMgcHJvZ3JhbW1p bmc7IGRpc3RyaWJ1dGVkLXN5c3RlbXMgYW5kIHdlYiBwcm9ncmFtbWluZzsgaGFyZHdhcmUgZGVz aWduOyBkYXRhYmFzZXM7IFhNTCBwcm9jZXNzaW5nOyBzY2llbnRpZmljIGFuZCBudW1lcmljYWwg Y29tcHV0aW5nOyBncmFwaGljYWwgdXNlciBpbnRlcmZhY2VzOyBtdWx0aW1lZGlhIGFuZCAzRCBn cmFwaGljcyBwcm9ncmFtbWluZzsgc2NyaXB0aW5nOyBzeXN0ZW0gYWRtaW5pc3RyYXRpb247IHNl Y3VyaXR5LgoKCgogICogKkVkdWNhdGlvbio6IHRlYWNoaW5nIGludHJvZHVjdG9yeSBwcm9ncmFt bWluZzsgcGFyYWxsZWwgcHJvZ3JhbW1pbmc7IG1hdGhlbWF0aWNhbCBwcm9vZjsgYWxnZWJyYS4K CgoKU3VibWlzc2lvbnMgd2lsbCBiZSBldmFsdWF0ZWQgYWNjb3JkaW5nIHRvIHRoZWlyIHJlbGV2 YW5jZSwgY29ycmVjdG5lc3MsIHNpZ25pZmljYW5jZSwgb3JpZ2luYWxpdHksIGFuZCBjbGFyaXR5 LiBFYWNoIHN1Ym1pc3Npb24gc2hvdWxkIGV4cGxhaW4gaXRzIGNvbnRyaWJ1dGlvbnMgaW4gYm90 aCBnZW5lcmFsIGFuZCB0ZWNobmljYWwgdGVybXMsIGNsZWFybHkgaWRlbnRpZnlpbmcgd2hhdCBo YXMgYmVlbiBhY2NvbXBsaXNoZWQsIGV4cGxhaW5pbmcgd2h5IGl0IGlzIHNpZ25pZmljYW50LCBh bmQgY29tcGFyaW5nIGl0IHdpdGggcHJldmlvdXMgd29yay4gVGhlIHRlY2huaWNhbCBjb250ZW50 IHNob3VsZCBiZSBhY2Nlc3NpYmxlIHRvIGEgYnJvYWQgYXVkaWVuY2UuCgoKClBBQ01QTCBpc3N1 ZSBJQ0ZQIDIwMTkgYWxzbyB3ZWxjb21lcyBzdWJtaXNzaW9ucyBpbiB0d28gc2VwYXJhdGUgY2F0 ZWdvcmllcyAmbWRhc2g7IEZ1bmN0aW9uYWwgUGVhcmxzIGFuZCBFeHBlcmllbmNlIFJlcG9ydHMg Jm1kYXNoOyB0aGF0IG11c3QgYmUgbWFya2VkIGFzIHN1Y2ggYXQgdGhlIHRpbWUgb2Ygc3VibWlz c2lvbiBhbmQgdGhhdCBuZWVkIG5vdCByZXBvcnQgb3JpZ2luYWwgcmVzZWFyY2ggcmVzdWx0cy4g IERldGFpbGVkIGd1aWRlbGluZXMgb24gYm90aCBjYXRlZ29yaWVzIGFyZSBnaXZlbiBhdCB0aGUg ZW5kIG9mIHRoaXMgY2FsbC4KCgoKUGxlYXNlIGNvbnRhY3QgdGhlIHByaW5jaXBhbCBlZGl0b3Ig aWYgeW91IGhhdmUgcXVlc3Rpb25zIG9yIGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIGFwcHJvcHJp YXRlbmVzcyBvZiBhIHRvcGljLgoKCgojIyMgUHJlcGFyYXRpb24gb2Ygc3VibWlzc2lvbnMKCgoK KipEZWFkbGluZSoqOiBUaGUgZGVhZGxpbmUgZm9yIHN1Ym1pc3Npb25zIGlzICoqRnJpZGF5LCBN YXJjaCAxLCAyMDE5KiosIEFueXdoZXJlIG9uIEVhcnRoICg8aHR0cHM6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvQW55d2hlcmVfb25fRWFydGg+KS4gIFRoaXMgZGVhZGxpbmUgd2lsbCBiZSBzdHJp Y3RseSBlbmZvcmNlZC4KCgoKKipGb3JtYXR0aW5nKio6IFN1Ym1pc3Npb25zIG11c3QgYmUgaW4g UERGIGZvcm1hdCwgcHJpbnRhYmxlIGluIGJsYWNrIGFuZCB3aGl0ZSBvbiBVUyBMZXR0ZXIgc2l6 ZWQgcGFwZXIsIGFuZCBpbnRlcnByZXRhYmxlIGJ5IGNvbW1vbiBQREYgdG9vbHMuIEFsbCBzdWJt aXNzaW9ucyBtdXN0IGFkaGVyZSB0byB0aGUgIkFDTSBTbWFsbCIgdGVtcGxhdGUgdGhhdCBpcyBh dmFpbGFibGUgKGluIGJvdGggTGFUZVggYW5kIFdvcmQgZm9ybWF0cykgZnJvbSA8aHR0cHM6Ly93 d3cuYWNtLm9yZy9wdWJsaWNhdGlvbnMvYXV0aG9ycy9zdWJtaXNzaW9ucz4uICBGb3IgYXV0aG9y cyB1c2luZyBMYVRlWCwgYSBsaWdodGVyLXdlaWdodCBwYWNrYWdlLCBpbmNsdWRpbmcgb25seSB0 aGUgZXNzZW50aWFsIGZpbGVzLCBpcyBhdmFpbGFibGUgZnJvbSA8aHR0cDovL3NpZ3BsYW4ub3Jn L1Jlc291cmNlcy9BdXRob3IvI2FjbWFydC1mb3JtYXQ+LgoKCgpUaGVyZSBpcyBhIGxpbWl0IG9m ICoqMjUgcGFnZXMgZm9yIGEgZnVsbCBwYXBlciBvciBGdW5jdGlvbmFsIFBlYXJsKiogYW5kICoq MTIgcGFnZXMgZm9yIGFuIEV4cGVyaWVuY2UgUmVwb3J0Kio7IGluIGVpdGhlciBjYXNlLCB0aGUg YmlibGlvZ3JhcGh5IHdpbGwgbm90IGJlIGNvdW50ZWQgYWdhaW5zdCB0aGVzZSBsaW1pdHMuIFN1 Ym1pc3Npb25zIHRoYXQgZXhjZWVkIHRoZSBwYWdlIGxpbWl0cyBvciwgZm9yIG90aGVyIHJlYXNv bnMsIGRvIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMgZm9yIGZvcm1hdHRpbmcsIHdpbGwgYmUg c3VtbWFyaWx5IHJlamVjdGVkLiBTdXBwbGVtZW50YXJ5IG1hdGVyaWFsIGNhbiBhbmQgc2hvdWxk IGJlICoqc2VwYXJhdGVseSoqIHN1Ym1pdHRlZCAoc2VlIGJlbG93KS4KCgoKU2VlIGFsc28gUEFD TVBMJ3MgSW5mb3JtYXRpb24gYW5kIEd1aWRlbGluZXMgZm9yIEF1dGhvcnMgYXQgPGh0dHBzOi8v cGFjbXBsLmFjbS5vcmcvYXV0aG9ycy5jZm0+LgoKCgoqKlN1Ym1pc3Npb24qKjogU3VibWlzc2lv bnMgd2lsbCBiZSBhY2NlcHRlZCBhdCA8aHR0cHM6Ly9pY2ZwMTkuaG90Y3JwLmNvbS8+CgoKCklt cHJvdmVkIHZlcnNpb25zIG9mIGEgcGFwZXIgbWF5IGJlIHN1Ym1pdHRlZCBhdCBhbnkgcG9pbnQg YmVmb3JlIHRoZSBzdWJtaXNzaW9uIGRlYWRsaW5lIHVzaW5nIHRoZSBzYW1lIHdlYiBpbnRlcmZh Y2UuCgoKCioqQXV0aG9yIFJlc3BvbnNlIFBlcmlvZCoqOiBBdXRob3JzIHdpbGwgaGF2ZSBhIDcy LWhvdXIgcGVyaW9kLCBzdGFydGluZyBhdCAxNDowMCBVVEMgb24gKipUdWVzZGF5LCBBcHJpbCAx NiwgMjAxOSoqLCB0byByZWFkIHJldmlld3MgYW5kIHJlc3BvbmQgdG8gdGhlbS4KCgoKKipTdXBw bGVtZW50YXJ5IE1hdGVyaWFsKio6IEF1dGhvcnMgaGF2ZSB0aGUgb3B0aW9uIHRvIGF0dGFjaCBz dXBwbGVtZW50YXJ5CgptYXRlcmlhbCB0byBhIHN1Ym1pc3Npb24sIG9uIHRoZSB1bmRlcnN0YW5k aW5nIHRoYXQgcmV2aWV3ZXJzIG1heSBjaG9vc2Ugbm90Cgp0byBsb29rIGF0IGl0LiBUaGlzIHN1 cHBsZW1lbnRhcnkgbWF0ZXJpYWwgc2hvdWxkICoqbm90KiogYmUgc3VibWl0dGVkIGFzIHBhcnQK Cm9mIHRoZSBtYWluIGRvY3VtZW50OyBpbnN0ZWFkLCBpdCBzaG91bGQgYmUgdXBsb2FkZWQgYXMg YSAqKnNlcGFyYXRlKiogUERGCgpkb2N1bWVudCBvciB0YXJiYWxsLgoKCgpTdXBwbGVtZW50YXJ5 IG1hdGVyaWFsIHNob3VsZCBiZSB1cGxvYWRlZCAqKmF0IHN1Ym1pc3Npb24gdGltZSoqLCBub3Qg YnkKCnByb3ZpZGluZyBhIFVSTCBpbiB0aGUgcGFwZXIgdGhhdCBwb2ludHMgdG8gYW4gZXh0ZXJu YWwgcmVwb3NpdG9yeS4KCgoKQXV0aG9ycyBhcmUgZnJlZSB0byB1cGxvYWQgYm90aCBhbm9ueW1p emVkIGFuZCBub24tYW5vbnltaXplZCBzdXBwbGVtZW50YXJ5CgptYXRlcmlhbC4gQW5vbnltaXpl ZCBzdXBwbGVtZW50YXJ5IG1hdGVyaWFsIHdpbGwgYmUgdmlzaWJsZSB0byByZXZpZXdlcnMKCmlt bWVkaWF0ZWx5OyBub24tYW5vbnltaXplZCBzdXBwbGVtZW50YXJ5IG1hdGVyaWFsIHdpbGwgYmUg cmV2ZWFsZWQgdG8KCnJldmlld2VycyBvbmx5IGFmdGVyIHRoZXkgaGF2ZSBzdWJtaXR0ZWQgdGhl aXIgcmV2aWV3IG9mIHRoZSBwYXBlciBhbmQgbGVhcm5lZAoKdGhlIGlkZW50aXR5IG9mIHRoZSBh dXRob3IocykuCgoKCioqQXV0aG9yc2hpcCBQb2xpY2llcyoqOiBBbGwgc3VibWlzc2lvbnMgYXJl IGV4cGVjdGVkIHRvIGNvbXBseSB3aXRoIHRoZSBBQ00gUG9saWNpZXMgZm9yIEF1dGhvcnNoaXAg dGhhdCBhcmUgZGV0YWlsZWQgYXQgPGh0dHBzOi8vd3d3LmFjbS5vcmcvcHVibGljYXRpb25zL2F1 dGhvcnMvaW5mb3JtYXRpb24tZm9yLWF1dGhvcnM+LgoKCgoqKlJlcHVibGljYXRpb24gUG9saWNp ZXMqKjogRWFjaCBzdWJtaXNzaW9uIG11c3QgYWRoZXJlIHRvIFNJR1BMQU4ncyByZXB1YmxpY2F0 aW9uIHBvbGljeSwgYXMgZXhwbGFpbmVkIG9uIHRoZSB3ZWIgYXQgPGh0dHA6Ly93d3cuc2lncGxh bi5vcmcvUmVzb3VyY2VzL1BvbGljaWVzL1JlcHVibGljYXRpb24+LgoKCgoqKlJlc3VibWl0dGVk IFBhcGVycyoqOiBBdXRob3JzIHdobyBzdWJtaXQgYSByZXZpc2VkIHZlcnNpb24gb2YgYSBwYXBl ciB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gcmVqZWN0ZWQgYnkgYW5vdGhlciBjb25mZXJlbmNl IGhhdmUgdGhlIG9wdGlvbiB0byBhdHRhY2ggYW4gYW5ub3RhdGVkIGNvcHkgb2YgdGhlIHJldmll d3Mgb2YgdGhlaXIgcHJldmlvdXMgc3VibWlzc2lvbihzKSwgZXhwbGFpbmluZyBob3cgdGhleSBo YXZlIGFkZHJlc3NlZCB0aGVzZSBwcmV2aW91cyByZXZpZXdzIGluIHRoZSBwcmVzZW50IHN1Ym1p c3Npb24uIElmIGEgcmV2aWV3ZXIgaWRlbnRpZmllcyBoaW0vaGVyc2VsZiBhcyBhIHJldmlld2Vy IG9mIHRoaXMgcHJldmlvdXMgc3VibWlzc2lvbiBhbmQgd2lzaGVzIHRvIHNlZSBob3cgaGlzL2hl ciBjb21tZW50cyBoYXZlIGJlZW4gYWRkcmVzc2VkLCB0aGUgcHJpbmNpcGFsIGVkaXRvciB3aWxs IGNvbW11bmljYXRlIHRvIHRoaXMgcmV2aWV3ZXIgdGhlIGFubm90YXRlZCBjb3B5IG9mIGhpcy9o ZXIgcHJldmlvdXMgcmV2aWV3LiBPdGhlcndpc2UsIG5vIHJldmlld2VyIHdpbGwgcmVhZCB0aGUg YW5ub3RhdGVkIGNvcGllcyBvZiB0aGUgcHJldmlvdXMgcmV2aWV3cy4KCgoKIyMjIFJldmlldyBQ cm9jZXNzCgoKClRoaXMgc2VjdGlvbiBvdXRsaW5lcyB0aGUgdHdvLXN0YWdlIHByb2Nlc3Mgd2l0 aCBsaWdodHdlaWdodCBkb3VibGUtYmxpbmQgcmV2aWV3aW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRv IHNlbGVjdCBwYXBlcnMgZm9yIFBBQ01QTCBpc3N1ZSBJQ0ZQIDIwMTkuICBXZSBhbnRpY2lwYXRl IHRoYXQgdGhlcmUgd2lsbCBiZSBhIG5lZWQgdG8gY2xhcmlmeSBhbmQgZXhwYW5kIG9uIHRoaXMg cHJvY2VzcywgYW5kIHdlIHdpbGwgbWFpbnRhaW4gYSBsaXN0IG9mIGZyZXF1ZW50bHkgYXNrZWQg cXVlc3Rpb25zIGFuZCBhbnN3ZXJzIG9uIHRoZSBjb25mZXJlbmNlIHdlYnNpdGUgdG8gYWRkcmVz cyBjb21tb24gY29uY2VybnMuCgoKCioqUEFDTVBMIGlzc3VlIElDRlAgMjAxOSB3aWxsIGVtcGxv eSBhIHR3by1zdGFnZSByZXZpZXcgcHJvY2Vzcy4qKiAgVGhlIGZpcnN0IHN0YWdlIGluIHRoZSBy ZXZpZXcgcHJvY2VzcyB3aWxsIGFzc2VzcyBzdWJtaXR0ZWQgcGFwZXJzIHVzaW5nIHRoZSBjcml0 ZXJpYSBzdGF0ZWQgYWJvdmUgYW5kIHdpbGwgYWxsb3cgZm9yIGZlZWRiYWNrIGFuZCBpbnB1dCBv biBpbml0aWFsIHJldmlld3MgdGhyb3VnaCB0aGUgYXV0aG9yIHJlc3BvbnNlIHBlcmlvZCBtZW50 aW9uZWQgcHJldmlvdXNseS4gQXQgdGhlIHJldmlldyBtZWV0aW5nLCBhIHNldCBvZiBwYXBlcnMg d2lsbCBiZSBjb25kaXRpb25hbGx5IGFjY2VwdGVkIGFuZCBhbGwgb3RoZXIgcGFwZXJzIHdpbGwg YmUgcmVqZWN0ZWQuICBBdXRob3JzIHdpbGwgYmUgbm90aWZpZWQgb2YgdGhlc2UgZGVjaXNpb25z IG9uICoqTWF5IDMsIDIwMTkqKi4KCgoKQXV0aG9ycyBvZiBjb25kaXRpb25hbGx5IGFjY2VwdGVk IHBhcGVycyB3aWxsIGJlIHByb3ZpZGVkIHdpdGggY29tbWl0dGVlIHJldmlld3MgKGp1c3QgYXMg aW4gcHJldmlvdXMgY29uZmVyZW5jZXMpIGFsb25nIHdpdGggYSBzZXQgb2YgbWFuZGF0b3J5IHJl dmlzaW9ucy4gQWZ0ZXIgZm91ciB3ZWVrcyAoTWF5IDMxLCAyMDE5KSwgdGhlIGF1dGhvcnMgd2ls bCBwcm92aWRlIGEgc2Vjb25kIHN1Ym1pc3Npb24uIFRoZSBzZWNvbmQgYW5kIGZpbmFsIHJldmll d2luZyBwaGFzZSBhc3Nlc3NlcyB3aGV0aGVyIHRoZSBtYW5kYXRvcnkgcmV2aXNpb25zIGhhdmUg YmVlbiBhZGVxdWF0ZWx5IGFkZHJlc3NlZCBieSB0aGUgYXV0aG9ycyBhbmQgdGhlcmVieSBkZXRl cm1pbmVzIHRoZSBmaW5hbCBhY2NlcHQvcmVqZWN0IHN0YXR1cyBvZiB0aGUgcGFwZXIuIFRoZSBp bnRlbnQgYW5kIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhlIG1hbmRhdG9yeSByZXZpc2lvbnMgY2Fu IGJlIGFkZHJlc3NlZCB3aXRoaW4gZm91ciB3ZWVrcyBhbmQgaGVuY2UgdGhhdCBjb25kaXRpb25h bGx5IGFjY2VwdGVkIHBhcGVycyB3aWxsIGluIGdlbmVyYWwgYmUgYWNjZXB0ZWQgaW4gdGhlIHNl Y29uZCBwaGFzZS4KCgoKVGhlIHNlY29uZCBzdWJtaXNzaW9uIHNob3VsZCBjbGVhcmx5IGlkZW50 aWZ5IGhvdyB0aGUgbWFuZGF0b3J5IHJldmlzaW9ucyB3ZXJlIGFkZHJlc3NlZC4gVG8gdGhhdCBl bmQsIHRoZSBzZWNvbmQgc3VibWlzc2lvbiBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgY292ZXIg bGV0dGVyIG1hcHBpbmcgZWFjaCBtYW5kYXRvcnkgcmV2aXNpb24gcmVxdWVzdCB0byBzcGVjaWZp YyBwYXJ0cyBvZiB0aGUgcGFwZXIuIFRoZSBjb3ZlciBsZXR0ZXIgd2lsbCBmYWNpbGl0YXRlIGEg cXVpY2sgc2Vjb25kIHJldmlldywgYWxsb3dpbmcgZm9yIGNvbmZpcm1hdGlvbiBvZiBmaW5hbCBh Y2NlcHRhbmNlIHdpdGhpbiB0d28gd2Vla3MuIENvbnZlcnNlbHksIHRoZSBhYnNlbmNlIG9mIGEg Y292ZXIgbGV0dGVyIHdpbGwgYmUgZ3JvdW5kcyBmb3IgdGhlIHBhcGVy4oCZcyByZWplY3Rpb24u CgoKCioqUEFDTVBMIGlzc3VlIElDRlAgMjAxOSB3aWxsIGVtcGxveSBhIGxpZ2h0d2VpZ2h0IGRv dWJsZS1ibGluZCByZXZpZXdpbmcgcHJvY2Vzcy4qKiBUbyBmYWNpbGl0YXRlIHRoaXMsIHN1Ym1p dHRlZCBwYXBlcnMgbXVzdCBhZGhlcmUgdG8gdHdvIHJ1bGVzOgoKCgogIDEuICoqYXV0aG9yIG5h bWVzIGFuZCBpbnN0aXR1dGlvbnMgbXVzdCBiZSBvbWl0dGVkKiosIGFuZAoKICAyLiAqKnJlZmVy ZW5jZXMgdG8gYXV0aG9ycycgb3duIHJlbGF0ZWQgd29yayBzaG91bGQgYmUgaW4gdGhlIHRoaXJk IHBlcnNvbioqIChlLmcuLCBub3QgIldlIGJ1aWxkIG9uIG91ciBwcmV2aW91cyB3b3JrIC4uLiIg YnV0IHJhdGhlciAiV2UgYnVpbGQgb24gdGhlIHdvcmsgb2YgLi4uIikuCgoKClRoZSBwdXJwb3Nl IG9mIHRoaXMgcHJvY2VzcyBpcyB0byBoZWxwIHRoZSByZXZpZXdlcnMgY29tZSB0byBhbiBpbml0 aWFsIGp1ZGdlbWVudCBhYm91dCB0aGUgcGFwZXIgd2l0aG91dCBiaWFzLCBub3QgdG8gbWFrZSBp dCBpbXBvc3NpYmxlIGZvciB0aGVtIHRvIGRpc2NvdmVyIHRoZSBhdXRob3JzIGlmIHRoZXkgd2Vy ZSB0byB0cnkuIE5vdGhpbmcgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIG5hbWUgb2YgYW5vbnltaXR5 IHRoYXQgd2Vha2VucyB0aGUgc3VibWlzc2lvbiBvciBtYWtlcyB0aGUgam9iIG9mIHJldmlld2lu ZyB0aGUgcGFwZXIgbW9yZSBkaWZmaWN1bHQgKGUuZy4sIGltcG9ydGFudCBiYWNrZ3JvdW5kIHJl ZmVyZW5jZXMgc2hvdWxkIG5vdCBiZSBvbWl0dGVkIG9yIGFub255bWl6ZWQpLiBJbiBhZGRpdGlv biwgYXV0aG9ycyBzaG91bGQgZmVlbCBmcmVlIHRvIGRpc3NlbWluYXRlIHRoZWlyIGlkZWFzIG9y IGRyYWZ0IHZlcnNpb25zIG9mIHRoZWlyIHBhcGVyIGFzIHRoZXkgbm9ybWFsbHkgd291bGQuIEZv ciBpbnN0YW5jZSwgYXV0aG9ycyBtYXkgcG9zdCBkcmFmdHMgb2YgdGhlaXIgcGFwZXJzIG9uIHRo ZSB3ZWIgb3IgZ2l2ZSB0YWxrcyBvbiB0aGVpciByZXNlYXJjaCBpZGVhcy4KCgoKIyMjIEluZm9y bWF0aW9uIGZvciBBdXRob3JzIG9mIEFjY2VwdGVkIFBhcGVycwoKCgoqIEFzIGEgY29uZGl0aW9u IG9mIGFjY2VwdGFuY2UsIGZpbmFsIHZlcnNpb25zIG9mIGFsbCBwYXBlcnMgbXVzdCBhZGhlcmUg dG8gdGhlIG5ldyBBQ00gU21hbGwgZm9ybWF0LiBUaGUgcGFnZSBsaW1pdCBmb3IgdGhlIGZpbmFs IHZlcnNpb25zIG9mIHBhcGVycyB3aWxsIGJlIGluY3JlYXNlZCBieSB0d28gcGFnZXMgdG8gaGVs cCBhdXRob3JzIHJlc3BvbmQgdG8gcmV2aWV3ZXIgY29tbWVudHMgYW5kIG1hbmRhdG9yeSByZXZp c2lvbnM6ICoqMjcgcGFnZXMgcGx1cyBiaWJsaW9ncmFwaHkgZm9yIGEgcmVndWxhciBwYXBlciBv ciBGdW5jdGlvbmFsIFBlYXJsLCAxNCBwYWdlcyBwbHVzIGJpYmxpb2dyYXBoeSBmb3IgYW4gRXhw ZXJpZW5jZSBSZXBvcnQqKi4KCgoKKiBBdXRob3JzIG9mIGFjY2VwdGVkIHN1Ym1pc3Npb25zIHdp bGwgYmUgcmVxdWlyZWQgdG8gYWdyZWUgdG8gb25lIG9mIHRoZSB0aHJlZSBBQ00gbGljZW5zaW5n IG9wdGlvbnM6IG9wZW4gYWNjZXNzIG9uIHBheW1lbnQgb2YgYSBmZWUgKCoqcmVjb21tZW5kZWQq KiwgYW5kIFNJR1BMQU4gY2FuIGNvdmVyIHRoZSBjb3N0IGFzIGRlc2NyaWJlZCBuZXh0KTsgY29w eXJpZ2h0IHRyYW5zZmVyIHRvIEFDTTsgb3IgcmV0YWluaW5nIGNvcHlyaWdodCBidXQgZ3JhbnRp bmcgQUNNIGV4Y2x1c2l2ZSBwdWJsaWNhdGlvbiByaWdodHMuICBGdXJ0aGVyIGluZm9ybWF0aW9u IGFib3V0IEFDTSBhdXRob3IgcmlnaHRzIGlzIGF2YWlsYWJsZSBmcm9tIDxodHRwOi8vYXV0aG9y cy5hY20ub3JnPi4KCgoKKiBQQUNNUEwgaXMgYSBHb2xkIE9wZW4gQWNjZXNzIGpvdXJuYWwuIEl0 IHdpbGwgYmUgYXJjaGl2ZWQgaW4gQUNN4oCZcyBEaWdpdGFsIExpYnJhcnksIGJ1dCBubyBtZW1i ZXJzaGlwIG9yIGZlZSBpcyByZXF1aXJlZCBmb3IgYWNjZXNzLiBHb2xkIE9wZW4gQWNjZXNzIGhh cyBiZWVuIG1hZGUgcG9zc2libGUgYnkgZ2VuZXJvdXMgZnVuZGluZyB0aHJvdWdoIEFDTSBTSUdQ TEFOLCB3aGljaCB3aWxsIGNvdmVyIGFsbCBvcGVuIGFjY2VzcyBjb3N0cyBpbiB0aGUgZXZlbnQg YXV0aG9ycyBjYW5ub3QuIEF1dGhvcnMgd2hvIGNhbiBjb3ZlciB0aGUgY29zdHMgbWF5IGRvIHNv IGJ5IHBheWluZyBhbiBBcnRpY2xlIFByb2Nlc3NpbmcgQ2hhcmdlIChBUEMpLiBQQUNNUEwsIFNJ R1BMQU4sIGFuZCBBQ00gSGVhZHF1YXJ0ZXJzIGFyZSBjb21taXR0ZWQgdG8gZXhwbG9yaW5nIHJv dXRlcyB0byBtYWtpbmcgR29sZCBPcGVuIEFjY2VzcyBwdWJsaWNhdGlvbiBib3RoIGFmZm9yZGFi bGUgYW5kIHN1c3RhaW5hYmxlLgoKCgoqIEFDTSBvZmZlcnMgYXV0aG9ycyBhIHJhbmdlIG9mIGNv cHlyaWdodCBvcHRpb25zLCBvbmUgb2Ygd2hpY2ggaXMgQ3JlYXRpdmUgQ29tbW9ucyBDQy1CWSBw dWJsaWNhdGlvbjsgdGhpcyBpcyB0aGUgb3B0aW9uIHJlY29tbWVuZGVkIGJ5IHRoZSBQQUNNUEwg ZWRpdG9yaWFsIGJvYXJkLiBBIHJlYXNvbmVkIGFyZ3VtZW50IGluIGZhdm91ciBvZiB0aGlzIG9w dGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIGFydGljbGUgW1doeSBDQy1CWT9dKGh0dHBzOi8vb2Fz cGEub3JnL3doeS1jYy1ieS8pIHB1Ymxpc2hlZCBieSBPQVNQQSwgdGhlIE9wZW4gQWNjZXNzIFNj aG9sYXJseSBQdWJsaXNoZXJzIEFzc29jaWF0aW9uLgoKCgoqIFdlIGludGVuZCB0aGF0IHRoZSBw YXBlcnMgd2lsbCBiZSBmcmVlbHkgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBmcm9tIHRoZSBBQ00g RGlnaXRhbCBMaWJyYXJ5IGluIHBlcnBldHVpdHkgdmlhIHRoZSBPcGVuVE9DIG1lY2hhbmlzbS4K CgoKKiBBQ00gQXV0aG9yLUl6ZXIgaXMgYSB1bmlxdWUgc2VydmljZSB0aGF0IGVuYWJsZXMgQUNN IGF1dGhvcnMgdG8gZ2VuZXJhdGUgYW5kIHBvc3QgbGlua3Mgb24gZWl0aGVyIHRoZWlyIGhvbWUg cGFnZSBvciBpbnN0aXR1dGlvbmFsIHJlcG9zaXRvcnkgZm9yIHZpc2l0b3JzIHRvIGRvd25sb2Fk IHRoZSBkZWZpbml0aXZlIHZlcnNpb24gb2YgdGhlaXIgYXJ0aWNsZXMgZnJvbSB0aGUgQUNNIERp Z2l0YWwgTGlicmFyeSBhdCBubyBjaGFyZ2UuIERvd25sb2FkcyB0aHJvdWdoIEF1dGhvci1JemVy IGxpbmtzIGFyZSBjYXB0dXJlZCBpbiBvZmZpY2lhbCBBQ00gc3RhdGlzdGljcywgaW1wcm92aW5n IHRoZSBhY2N1cmFjeSBvZiB1c2FnZSBhbmQgaW1wYWN0IG1lYXN1cmVtZW50cy4gQ29uc2lzdGVu dGx5IGxpbmtpbmcgdG8gdGhlIGRlZmluaXRpdmUgdmVyc2lvbiBvZiBhbiBBQ00gYXJ0aWNsZSBz aG91bGQgcmVkdWNlIHVzZXIgY29uZnVzaW9uIG92ZXIgYXJ0aWNsZSB2ZXJzaW9uaW5nLiBBZnRl ciBhbiBhcnRpY2xlIGhhcyBiZWVuIHB1Ymxpc2hlZCBhbmQgYXNzaWduZWQgdG8gdGhlIGFwcHJv cHJpYXRlIEFDTSBBdXRob3IgUHJvZmlsZSBwYWdlcywgYXV0aG9ycyBzaG91bGQgdmlzaXQgPGh0 dHA6Ly93d3cuYWNtLm9yZy9wdWJsaWNhdGlvbnMvYWNtLWF1dGhvci1pemVyLXNlcnZpY2U+IHRv IGxlYXJuIGhvdyB0byBjcmVhdGUgbGlua3MgZm9yIGZyZWUgZG93bmxvYWRzIGZyb20gdGhlIEFD TSBETC4KCgoKKiBBdCBsZWFzdCBvbmUgYXV0aG9yIG9mIGVhY2ggYWNjZXB0ZWQgc3VibWlzc2lv bnMgd2lsbCBiZSBleHBlY3RlZCB0byBhdHRlbmQgYW5kIHByZXNlbnQgdGhlaXIgcGFwZXIgYXQg dGhlIGNvbmZlcmVuY2UuICBUaGUgc2NoZWR1bGUgZm9yIHByZXNlbnRhdGlvbnMgd2lsbCBiZSBk ZXRlcm1pbmVkIGFuZCBzaGFyZWQgd2l0aCBhdXRob3JzIGFmdGVyIHRoZSBmdWxsIHByb2dyYW0g aGFzIGJlZW4gc2VsZWN0ZWQuICBQcmVzZW50YXRpb25zIHdpbGwgYmUgdmlkZW90YXBlZCBhbmQg cmVsZWFzZWQgb25saW5lIGlmIHRoZSBwcmVzZW50ZXIgY29uc2VudHMuCgoKCiogVGhlIG9mZmlj aWFsIHB1YmxpY2F0aW9uIGRhdGUgaXMgdGhlIGRhdGUgdGhlIHBhcGVycyBhcmUgbWFkZSBhdmFp bGFibGUgaW4gdGhlIEFDTSBEaWdpdGFsIExpYnJhcnkuIFRoaXMgZGF0ZSBtYXkgYmUgdXAgdG8g KnR3byB3ZWVrcyBwcmlvciogdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY29uZmVyZW5jZS4gVGhl IG9mZmljaWFsIHB1YmxpY2F0aW9uIGRhdGUgYWZmZWN0cyB0aGUgZGVhZGxpbmUgZm9yIGFueSBw YXRlbnQgZmlsaW5ncyByZWxhdGVkIHRvIHB1Ymxpc2hlZCB3b3JrLgoKCgojIyMgQXJ0aWZhY3Qg RXZhbHVhdGlvbgoKCgpBdXRob3JzIG9mIHBhcGVycyB0aGF0IGFyZSBjb25kaXRpb25hbGx5IGFj Y2VwdGVkIGluIHRoZSBmaXJzdCBwaGFzZSBvZiB0aGUgcmV2aWV3IHByb2Nlc3Mgd2lsbCBiZSBl bmNvdXJhZ2VkIChidXQgbm90IHJlcXVpcmVkKSB0byBzdWJtaXQgc3VwcG9ydGluZyBtYXRlcmlh bHMgZm9yIEFydGlmYWN0IEV2YWx1YXRpb24uIFRoZXNlIGl0ZW1zIHdpbGwgdGhlbiBiZSByZXZp ZXdlZCBieSBhbiBBcnRpZmFjdCBFdmFsdWF0aW9uIENvbW1pdHRlZSwgc2VwYXJhdGUgZnJvbSB0 aGUgcGFwZXIgUmV2aWV3IENvbW1pdHRlZSwgd2hvc2UgdGFzayBpcyB0byBhc3Nlc3MgaG93IHRo ZSBhcnRpZmFjdHMgc3VwcG9ydCB0aGUgd29yayBkZXNjcmliZWQgaW4gdGhlIGFzc29jaWF0ZWQg cGFwZXIuIFBhcGVycyB0aGF0IGdvIHRocm91Z2ggdGhlIEFydGlmYWN0IEV2YWx1YXRpb24gcHJv Y2VzcyBzdWNjZXNzZnVsbHkgd2lsbCByZWNlaXZlIGEgc2VhbCBvZiBhcHByb3ZhbCBwcmludGVk IG9uIHRoZSBwYXBlcnMgdGhlbXNlbHZlcy4gQXV0aG9ycyBvZiBhY2NlcHRlZCBwYXBlcnMgd2ls bCBiZSBlbmNvdXJhZ2VkIHRvIG1ha2UgdGhlIHN1cHBvcnRpbmcgbWF0ZXJpYWxzIHB1YmxpY2x5 IGF2YWlsYWJsZSB1cG9uIHB1YmxpY2F0aW9uIG9mIHRoZSBwYXBlcnMsIGZvciBleGFtcGxlLCBi eSBpbmNsdWRpbmcgdGhlbSBhcyAic291cmNlIG1hdGVyaWFscyIgaW4gdGhlIEFDTSBEaWdpdGFs IExpYnJhcnkuICBBbiBhZGRpdGlvbmFsIHNlYWwgd2lsbCBtYXJrIHBhcGVycyB3aG9zZSBhcnRp ZmFjdHMgYXJlIG1hZGUgYXZhaWxhYmxlLCBhcyBvdXRsaW5lZCBpbiB0aGUgQUNNIGd1aWRlbGlu ZXMgZm9yIGFydGlmYWN0IGJhZGdpbmcuCgoKClBhcnRpY2lwYXRpb24gaW4gQXJ0aWZhY3QgRXZh bHVhdGlvbiBpcyB2b2x1bnRhcnkgYW5kIHdpbGwgbm90IGluZmx1ZW5jZSB0aGUgZmluYWwgZGVj aXNpb24gcmVnYXJkaW5nIHBhcGVyIGFjY2VwdGFuY2UuCgoKCiMjIyBTcGVjaWFsIGNhdGVnb3Jp ZXMgb2YgcGFwZXJzCgoKCkluIGFkZGl0aW9uIHRvIHJlc2VhcmNoIHBhcGVycywgUEFDTVBMIGlz c3VlIElDRlAgc29saWNpdHMgdHdvIGtpbmRzIG9mIHBhcGVycyB0aGF0IGRvIG5vdCByZXF1aXJl IG9yaWdpbmFsIHJlc2VhcmNoIGNvbnRyaWJ1dGlvbnM6IEZ1bmN0aW9uYWwgUGVhcmxzLCB3aGlj aCBhcmUgZnVsbCBwYXBlcnMsIGFuZCBFeHBlcmllbmNlIFJlcG9ydHMsIHdoaWNoIGFyZSBsaW1p dGVkIHRvIGhhbGYgdGhlIGxlbmd0aCBvZiBhIGZ1bGwgcGFwZXIuIEF1dGhvcnMgc3VibWl0dGlu ZyBzdWNoIHBhcGVycyBzaG91bGQgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBndWlkZWxpbmVzLgoK CgojIyMjIEZ1bmN0aW9uYWwgUGVhcmxzCgoKCkEgRnVuY3Rpb25hbCBQZWFybCBpcyBhbiBlbGVn YW50IGVzc2F5IGFib3V0IHNvbWV0aGluZyByZWxhdGVkIHRvIGZ1bmN0aW9uYWwgcHJvZ3JhbW1p bmcuIEV4YW1wbGVzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG86CgoKCiAgKiBhIG5l dyBhbmQgdGhvdWdodC1wcm92b2tpbmcgd2F5IG9mIGxvb2tpbmcgYXQgYW4gb2xkIGlkZWEKCgoK ICAqIGFuIGluc3RydWN0aXZlIGV4YW1wbGUgb2YgcHJvZ3JhbSBjYWxjdWxhdGlvbiBvciBwcm9v ZgoKCgogICogYSBuaWZ0eSBwcmVzZW50YXRpb24gb2YgYW4gb2xkIG9yIG5ldyBkYXRhIHN0cnVj dHVyZQoKCgogICogYW4gaW50ZXJlc3RpbmcgYXBwbGljYXRpb24gb2YgZnVuY3Rpb25hbCBwcm9n cmFtbWluZyB0ZWNobmlxdWVzCgoKCiAgKiBhIG5vdmVsIHVzZSBvciBleHBvc2l0aW9uIG9mIGZ1 bmN0aW9uYWwgcHJvZ3JhbW1pbmcgaW4gdGhlIGNsYXNzcm9vbQoKCgpXaGlsZSBwZWFybHMgb2Z0 ZW4gZGVtb25zdHJhdGUgYW4gaWRlYSB0aHJvdWdoIHRoZSBkZXZlbG9wbWVudCBvZiBhIHNob3J0 IHByb2dyYW0sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IG9yIGV4cGVjdGF0aW9uIHRoYXQgdGhl eSBkbyBzby4gVGh1cywgdGhleSBlbmNvbXBhc3MgdGhlIG5vdGlvbnMgb2YgdGhlb3JldGljYWwg YW5kIGVkdWNhdGlvbmFsIHBlYXJscy4KCgoKRnVuY3Rpb25hbCBQZWFybHMgYXJlIHZhbHVlZCBh cyBoaWdobHkgYW5kIGp1ZGdlZCBhcyByaWdvcm91c2x5IGFzIG9yZGluYXJ5IHBhcGVycywgYnV0 IHVzaW5nIHNvbWV3aGF0IGRpZmZlcmVudCBjcml0ZXJpYS4gSW4gcGFydGljdWxhciwgYSBwZWFy bCBpcyBub3QgcmVxdWlyZWQgdG8gcmVwb3J0IG9yaWdpbmFsIHJlc2VhcmNoLCBidXQsIGl0IHNo b3VsZCBiZSBjb25jaXNlLCBpbnN0cnVjdGl2ZSwgYW5kIGVudGVydGFpbmluZy4gQSBwZWFybCBp cyBsaWtlbHkgdG8gYmUgcmVqZWN0ZWQgaWYgaXRzIHJlYWRlcnMgZ2V0IGJvcmVkLCBpZiB0aGUg bWF0ZXJpYWwgZ2V0cyB0b28gY29tcGxpY2F0ZWQsIGlmIHRvbyBtdWNoIHNwZWNpYWxpemVkIGtu b3dsZWRnZSBpcyBuZWVkZWQsIG9yIGlmIHRoZSB3cml0aW5nIGlzIGluZWxlZ2FudC4gVGhlIGtl eSB0byB3cml0aW5nIGEgZ29vZCBwZWFybCBpcyBwb2xpc2hpbmcuCgoKCkEgc3VibWlzc2lvbiB0 aGF0IGlzIGludGVuZGVkIHRvIGJlIHRyZWF0ZWQgYXMgYSBwZWFybCBtdXN0IGJlIG1hcmtlZCBh cyBzdWNoIG9uIHRoZSBzdWJtaXNzaW9uIHdlYiBwYWdlLCBhbmQgc2hvdWxkIGNvbnRhaW4gdGhl IHdvcmRzICJGdW5jdGlvbmFsIFBlYXJsIiBzb21ld2hlcmUgaW4gaXRzIHRpdGxlIG9yIHN1YnRp dGxlLiBUaGVzZSBzdGVwcyB3aWxsIGFsZXJ0IHJldmlld2VycyB0byB1c2UgdGhlIGFwcHJvcHJp YXRlIGV2YWx1YXRpb24gY3JpdGVyaWEuIFBlYXJscyB3aWxsIGJlIGNvbWJpbmVkIHdpdGggb3Jk aW5hcnkgcGFwZXJzLCBob3dldmVyLCBmb3IgdGhlIHB1cnBvc2Ugb2YgY29tcHV0aW5nIHRoZSBj b25mZXJlbmNlJ3MgYWNjZXB0YW5jZSByYXRlLgoKCgo8YSBuYW1lPSJleHBlcmllbmNlLXJlcG9y dHMiPjwvYT4KCiMjIyMgRXhwZXJpZW5jZSBSZXBvcnRzCgoKClRoZSBwdXJwb3NlIG9mIGFuIEV4 cGVyaWVuY2UgUmVwb3J0IGlzIHRvIGhlbHAgY3JlYXRlIGEgYm9keSBvZiBwdWJsaXNoZWQsIHJl ZmVyZWVkLCBjaXRhYmxlIGV2aWRlbmNlIHRoYXQgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyByZWFs bHkgd29ya3MgJm1kYXNoOyBvciB0byBkZXNjcmliZSB3aGF0IG9ic3RhY2xlcyBwcmV2ZW50IGl0 IGZyb20gd29ya2luZy4KCgoKUG9zc2libGUgdG9waWNzIGZvciBhbiBFeHBlcmllbmNlIFJlcG9y dCBpbmNsdWRlLCBidXQgYXJlIG5vdCBsaW1pdGVkIHRvOgoKCgogICogaW5zaWdodHMgZ2FpbmVk IGZyb20gcmVhbC13b3JsZCBwcm9qZWN0cyB1c2luZyBmdW5jdGlvbmFsIHByb2dyYW1taW5nCgoK CiAgKiBjb21wYXJpc29uIG9mIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgd2l0aCBjb252ZW50aW9u YWwgcHJvZ3JhbW1pbmcgaW4gdGhlIGNvbnRleHQgb2YgYW4gaW5kdXN0cmlhbCBwcm9qZWN0IG9y IGEgdW5pdmVyc2l0eSBjdXJyaWN1bHVtCgoKCiAgKiBwcm9qZWN0LW1hbmFnZW1lbnQsIGJ1c2lu ZXNzLCBvciBsZWdhbCBpc3N1ZXMgZW5jb3VudGVyZWQgd2hlbiB1c2luZyBmdW5jdGlvbmFsIHBy b2dyYW1taW5nIGluIGEgcmVhbC13b3JsZCBwcm9qZWN0CgoKCiAgKiBjdXJyaWN1bGFyIGlzc3Vl cyBlbmNvdW50ZXJlZCB3aGVuIHVzaW5nIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgaW4gZWR1Y2F0 aW9uCgoKCiAgKiByZWFsLXdvcmxkIGNvbnN0cmFpbnRzIHRoYXQgY3JlYXRlZCBzcGVjaWFsIGNo YWxsZW5nZXMgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgZnVuY3Rpb25hbCBsYW5ndWFnZSBv ciBmb3IgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyBpbiBnZW5lcmFsCgoKCkFuIEV4cGVyaWVuY2Ug UmVwb3J0IGlzIGRpc3Rpbmd1aXNoZWQgZnJvbSBhIG5vcm1hbCBQQUNNUEwgaXNzdWUgSUNGUCBw YXBlciBieSBpdHMgdGl0bGUsIGJ5IGl0cyBsZW5ndGgsIGFuZCBieSB0aGUgY3JpdGVyaWEgdXNl ZCB0byBldmFsdWF0ZSBpdC4KCgoKICAqIEJvdGggaW4gdGhlIHBhcGVycyBhbmQgaW4gYW55IGNp dGF0aW9ucywgdGhlIHRpdGxlIG9mIGVhY2ggYWNjZXB0ZWQgRXhwZXJpZW5jZSBSZXBvcnQgbXVz dCBlbmQgd2l0aCB0aGUgd29yZHMgIihFeHBlcmllbmNlIFJlcG9ydCkiIGluIHBhcmVudGhlc2Vz LiBUaGUgYWNjZXB0YW5jZSByYXRlIGZvciBFeHBlcmllbmNlIFJlcG9ydHMgd2lsbCBiZSBjb21w dXRlZCBhbmQgcmVwb3J0ZWQgc2VwYXJhdGVseSBmcm9tIHRoZSByYXRlIGZvciBvcmRpbmFyeSBw YXBlcnMuCgoKCiAgKiBFeHBlcmllbmNlIFJlcG9ydCBzdWJtaXNzaW9ucyBjYW4gYmUgYXQgbW9z dCAxMiBwYWdlcyBsb25nLCBleGNsdWRpbmcgYmlibGlvZ3JhcGh5LgoKCgogICogRWFjaCBhY2Nl cHRlZCBFeHBlcmllbmNlIFJlcG9ydCB3aWxsIGJlIHByZXNlbnRlZCBhdCB0aGUgY29uZmVyZW5j ZSwgYnV0IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIEV4cGVyaWVuY2UgUmVwb3J0cyBhbmQg cmVndWxhciBwYXBlcnMgYWNjZXB0ZWQsIGF1dGhvcnMgb2YgRXhwZXJpZW5jZSByZXBvcnRzIG1h eSBiZSBhc2tlZCB0byBnaXZlIHNob3J0ZXIgdGFsa3MuCgoKCiAgKiBCZWNhdXNlIHRoZSBwdXJw b3NlIG9mIEV4cGVyaWVuY2UgUmVwb3J0cyBpcyB0byBlbmFibGUgb3VyIGNvbW11bml0eSB0byBh Y2N1bXVsYXRlIGEgYm9keSBvZiBldmlkZW5jZSBhYm91dCB0aGUgZWZmaWNhY3kgb2YgZnVuY3Rp b25hbCBwcm9ncmFtbWluZywgYW4gYWNjZXB0YWJsZSBFeHBlcmllbmNlIFJlcG9ydCBuZWVkIG5v dCBhZGQgdG8gdGhlIGJvZHkgb2Yga25vd2xlZGdlIG9mIHRoZSBmdW5jdGlvbmFsLXByb2dyYW1t aW5nIGNvbW11bml0eSBieSBwcmVzZW50aW5nIG5vdmVsIHJlc3VsdHMgb3IgY29uY2x1c2lvbnMu IEl0IGlzIHN1ZmZpY2llbnQgaWYgdGhlIFJlcG9ydCBzdGF0ZXMgYSBjbGVhciB0aGVzaXMgYW5k IHByb3ZpZGVzIHN1cHBvcnRpbmcgZXZpZGVuY2UuIFRoZSB0aGVzaXMgbXVzdCBiZSByZWxldmFu dCB0byBJQ0ZQLCBidXQgaXQgbmVlZCBub3QgYmUgbm92ZWwuCgoKClRoZSByZXZpZXcgY29tbWl0 dGVlIHdpbGwgYWNjZXB0IG9yIHJlamVjdCBFeHBlcmllbmNlIFJlcG9ydHMgYmFzZWQgb24gd2hl dGhlciB0aGV5IGp1ZGdlIHRoZSBldmlkZW5jZSB0byBiZSBjb252aW5jaW5nLiBBbmVjZG90YWwg ZXZpZGVuY2Ugd2lsbCBiZSBhY2NlcHRhYmxlIHByb3ZpZGVkIGl0IGlzIHdlbGwgYXJndWVkIGFu ZCB0aGUgYXV0aG9yIGV4cGxhaW5zIHdoYXQgZWZmb3J0cyB3ZXJlIG1hZGUgdG8gZ2F0aGVyIGFz IG11Y2ggZXZpZGVuY2UgYXMgcG9zc2libGUuIFR5cGljYWxseSwgbW9yZSBjb252aW5jaW5nIGV2 aWRlbmNlIGlzIG9idGFpbmVkIGZyb20gcGFwZXJzIHdoaWNoIHNob3cgaG93IGZ1bmN0aW9uYWwg cHJvZ3JhbW1pbmcgd2FzIHVzZWQgdGhhbiBmcm9tIHBhcGVycyB3aGljaCBvbmx5IHNheSB0aGF0 IGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgd2FzIHVzZWQuIFRoZSBtb3N0IGNvbnZpbmNpbmcgZXZp ZGVuY2Ugb2Z0ZW4gaW5jbHVkZXMgY29tcGFyaXNvbnMgb2Ygc2l0dWF0aW9ucyBiZWZvcmUgYW5k IGFmdGVyIHRoZSBpbnRyb2R1Y3Rpb24gb3IgZGlzY29udGludWF0aW9uIG9mIGZ1bmN0aW9uYWwg cHJvZ3JhbW1pbmcuIEV2aWRlbmNlIGRyYXduIGZyb20gYSBzaW5nbGUgcGVyc29uJ3MgZXhwZXJp ZW5jZSBtYXkgYmUgc3VmZmljaWVudCwgYnV0IG1vcmUgd2VpZ2h0IHdpbGwgYmUgZ2l2ZW4gdG8g ZXZpZGVuY2UgZHJhd24gZnJvbSB0aGUgZXhwZXJpZW5jZSBvZiBncm91cHMgb2YgcGVvcGxlLgoK CgpBbiBFeHBlcmllbmNlIFJlcG9ydCBzaG91bGQgYmUgc2hvcnQgYW5kIHRvIHRoZSBwb2ludDog aXQgc2hvdWxkIG1ha2UgYSBjbGFpbSBhYm91dCBob3cgd2VsbCBmdW5jdGlvbmFsIHByb2dyYW1t aW5nIHdvcmtlZCBvbiBhIHBhcnRpY3VsYXIgcHJvamVjdCBhbmQgd2h5LCBhbmQgcHJvZHVjZSBl dmlkZW5jZSB0byBzdWJzdGFudGlhdGUgdGhpcyBjbGFpbS4gSWYgZnVuY3Rpb25hbCBwcm9ncmFt bWluZyB3b3JrZWQgaW4gdGhpcyBjYXNlIGluIHRoZSBzYW1lIHdheXMgaXQgaGFzIHdvcmtlZCBm b3Igb3RoZXJzLCB0aGUgcGFwZXIgbmVlZCBvbmx5IHN1bW1hcml6ZSB0aGUgcmVzdWx0cyAmbWRh c2g7IHRoZSBtYWluIHBhcnQgb2YgdGhlIHBhcGVyIHNob3VsZCBkaXNjdXNzIGhvdyB3ZWxsIGl0 IHdvcmtlZCBhbmQgaW4gd2hhdCBjb250ZXh0LiBNb3N0IHJlYWRlcnMgd2lsbCBub3Qgd2FudCB0 byBrbm93IGFsbCB0aGUgZGV0YWlscyBvZiB0aGUgcHJvamVjdCBhbmQgaXRzIGltcGxlbWVudGF0 aW9uLCBidXQgdGhlIHBhcGVyIHNob3VsZCBjaGFyYWN0ZXJpemUgdGhlIHByb2plY3QgYW5kIGl0 cyBjb250ZXh0IHdlbGwgZW5vdWdoIHNvIHRoYXQgcmVhZGVycyBjYW4ganVkZ2UgdG8gd2hhdCBk ZWdyZWUgdGhpcyBleHBlcmllbmNlIGlzIHJlbGV2YW50IHRvIHRoZWlyIG93biBwcm9qZWN0cy4g VGhlIHBhcGVyIHNob3VsZCB0YWtlIGNhcmUgdG8gaGlnaGxpZ2h0IGFueSB1bnVzdWFsIGFzcGVj dHMgb2YgdGhlIHByb2plY3QuIFNwZWNpZmljcyBhYm91dCB0aGUgcHJvamVjdCBhcmUgbW9yZSB2 YWx1YWJsZSB0aGFuIGdlbmVyYWxpdGllcyBhYm91dCBmdW5jdGlvbmFsIHByb2dyYW1taW5nOyBm b3IgZXhhbXBsZSwgaXQgaXMgbW9yZSB2YWx1YWJsZSB0byBzYXkgdGhhdCB0aGUgdGVhbSBkZWxp dmVyZWQgaXRzIHNvZnR3YXJlIGEgbW9udGggYWhlYWQgb2Ygc2NoZWR1bGUgdGhhbiBpdCBpcyB0 byBzYXkgdGhhdCBmdW5jdGlvbmFsIHByb2dyYW1taW5nIG1hZGUgdGhlIHRlYW0gbW9yZSBwcm9k dWN0aXZlLgoKCgpJZiB0aGUgcGFwZXIgbm90IG9ubHkgZGVzY3JpYmVzIGV4cGVyaWVuY2UgYnV0 IGFsc28gcHJlc2VudHMgbmV3IHRlY2huaWNhbCByZXN1bHRzLCBvciBpZiB0aGUgZXhwZXJpZW5j ZSByZWZ1dGVzIGNoZXJpc2hlZCBiZWxpZWZzIG9mIHRoZSBmdW5jdGlvbmFsLXByb2dyYW1taW5n IGNvbW11bml0eSwgaXQgbWF5IGJlIGJldHRlciB0byBzdWJtaXQgaXQgYXMgYSBmdWxsIHBhcGVy LCB3aGljaCB3aWxsIGJlIGp1ZGdlZCBieSB0aGUgdXN1YWwgY3JpdGVyaWEgb2Ygbm92ZWx0eSwg b3JpZ2luYWxpdHksIGFuZCByZWxldmFuY2UuIFRoZSBwcmluY2lwYWwgZWRpdG9yIHdpbGwgYmUg aGFwcHkgdG8gYWR2aXNlIG9uIGFueSBjb25jZXJucyBhYm91dCB3aGljaCBjYXRlZ29yeSB0byBz dWJtaXQgdG8uCgoKCgoKCgojIyMgSUNGUCBPcmdhbml6ZXJzCgoKCkdlbmVyYWwgQ2hhaXI6IERl cmVrIERyZXllciAoTVBJLVNXUywgR2VybWFueSkKCgoKQXJ0aWZhY3QgRXZhbHVhdGlvbiBDby1D aGFpcnM6IFNpbW9uIE1hcmxvdyAoRmFjZWJvb2ssIFVLKQoKSW5kdXN0cmlhbCBSZWxhdGlvbnMg Q2hhaXI6IEFsYW4gSmVmZnJleSAoTW96aWxsYSBSZXNlYXJjaCwgVVNBKQoKUHJvZ3JhbW1pbmcg Q29udGVzdCBPcmdhbmlzZXI6IElseWEgU2VyZ2V5IChZYWxlLU5VUyBDb2xsZWdlLCBTaW5nYXBv cmUpCgpQdWJsaWNpdHkgYW5kIFdlYiBDaGFpcjogU2FtIFRvYmluLUhvY2hzdGFkdCAoSW5kaWFu YSBVbml2ZXJzaXR5LCBVU0EpCgpTdHVkZW50IFJlc2VhcmNoIENvbXBldGl0aW9uIENoYWlyOiBX aWxsaWFtIEouIEJvd21hbiAoVW5pdmVyc2l0eSBvZiBCcml0aXNoIENvbHVtYmlhLCBDYW5hZGEp CgpXb3Jrc2hvcHMgQ28tQ2hhaXI6IENocmlzdG9waGUgU2Nob2xsaWVycyAoVW5pdmVyc2l0ZWl0 IEdlbnQsIEJlbGdpdW0pCgogICAgICAgICAgICAgICAgICAgIEplbm5pZmVyIEhhY2tldHQgKFVu aXZlcnNpdHkgb2YgTm90dGluZ2hhbSwgVUspCgpDb25mZXJlbmNlIE1hbmFnZXI6IEFubmFiZWwg U2F0aW4gKFAuQy5LLikgICAgICAgICAgICAgICAgICAgIAoKCgoKCiMjIyBQQUNNUEwgVm9sdW1l IDMsIElzc3VlIElDRlAgMjAxOQoKCgpQcmluY2lwYWwgRWRpdG9yOiBGcmFuw6dvaXMgUG90dGll ciAoSW5yaWEsIEZyYW5jZSkKCgoKUmV2aWV3IENvbW1pdHRlZToKCgoKTGVubmFydCBCZXJpbmdl ciAoUHJpbmNldG9uIFVuaXZlcnNpdHksIFVuaXRlZCBTdGF0ZXMpCgpKb2FjaGltIEJyZWl0bmVy IChERklOSVRZIEZvdW5kYXRpb24sIEdlcm1hbnkpCgpMYXVyYSBNLiBDYXN0cm8gKFVuaXZlcnNp dHkgb2YgQSBDb3J1w7FhLCBTcGFpbikKCkV6Z2kgw4dpw6dlayAoRmFjZWJvb2sgTG9uZG9uLCBV bml0ZWQgS2luZ2RvbSkKClBpZXJyZS1FdmFyaXN0ZSBEYWdhbmQgKExJUDYvQ05SUywgRnJhbmNl KQoKQ2hyaXN0b3MgRGltb3VsYXMgKE5vcnRod2VzdGVybiBVbml2ZXJzaXR5LCBVbml0ZWQgU3Rh dGVzKQoKSmFjcXVlcy1IZW5yaSBKb3VyZGFuIChDTlJTLCBMUkksIFVuaXZlcnNpdMOpIFBhcmlz LVN1ZCwgRnJhbmNlKQoKQW5kcmV3IEtlbm5lZHkgKEZhY2Vib29rIExvbmRvbiwgVW5pdGVkIEtp bmdkb20pCgpEYWFuIExlaWplbiAoTWljcm9zb2Z0IFJlc2VhcmNoLCBVbml0ZWQgU3RhdGVzKQoK S2F6dXRha2EgTWF0c3VkYSAoVG9ob2t1IFVuaXZlcnNpdHksIEphcGFuKQoKQnJ1bm8gQy4gZC4g Uy4gT2xpdmVpcmEgKFVuaXZlcnNpdHkgb2YgSG9uZyBLb25nLCBDaGluYSkKCktsYXVzIE9zdGVy bWFubiAoVW5pdmVyc2l0eSBvZiBUw7xiaW5nZW4sIEdlcm1hbnkpCgpKZW5uaWZlciBQYXlraW4g KEdhbG9pcywgVW5pdGVkIFN0YXRlcykKCkZyYW5rIFBmZW5uaW5nIChDYXJuZWdpZSBNZWxsb24g VW5pdmVyc2l0eSwgVVNBKQoKTWlrZSBSYWluZXkgKEluZGlhbmEgVW5pdmVyc2l0eSwgVVNBKQoK Q2h1bmctY2hpZWggU2hhbiAoSW5kaWFuYSBVbml2ZXJzaXR5LCBVU0EpCgpTYW0gU3RhdG9uIChV bml2ZXJzaXR5IG9mIE94Zm9yZCwgVUspCgpQaWVycmUtWXZlcyBTdHJ1YiAoRWNvbGUgUG9seXRl Y2huaXF1ZSwgRnJhbmNlKQoKR2VybWFuIFZpZGFsIChVbml2ZXJzaXRhdCBQb2xpdGVjbmljYSBk ZSBWYWxlbmNpYSwgU3BhaW4pCgoKCkV4dGVybmFsIFJldmlldyBDb21taXR0ZWU6CgoKCk1pY2hh ZWwgRC4gQWRhbXMgIChVbml2ZXJzaXR5IG9mIFV0YWgsIFVTQSkKClJvYmVydCBBdGtleSAgKFVu aXZlcnNpdHkgb2YgU3RyYXRoY2x5ZGUsIElLKQoKU2hlbmcgQ2hlbiAgKFVuaXZlcnNpdHkgb2Yg TG91aXNpYW5hIGF0IExhZmF5ZXR0ZSwgVVNBKQoKSmFtZXMgQ2hlbmV5ICAoVW5pdmVyc2l0eSBv ZiBFZGluYnVyZ2gsIFVLKQoKQWRhbSBDaGxpcGFsYSAgKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRl IG9mIFRlY2hub2xvZ3ksIFVTQSkKCkV2ZWx5bmUgQ29udGVqZWFuIChMUkksIFVuaXZlcnNpdMOp IFBhcmlzLVN1ZCwgRnJhbmNlKSAKCkdlcm3DoW4gQW5kcsOpcyBEZWxiaWFuY28gIChJUklGLCBV bml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90LCBGcmFuY2UpCgpEb21pbmlxdWUgRGV2cmllc2UgIChW cmlqZSBVbml2ZXJzaXRlaXQgQnJ1c3NlbCwgQmVsZ2l1bSkKClJpY2hhcmQgQS4gRWlzZW5iZXJn ICAoQnJ5biBNYXdyIENvbGxlZ2UsIFVTQSkKCkNvbmFsIEVsbGlvdHQgIChUYXJnZXQsIFVTQSkK ClNlYmFzdGlhbiBFcmR3ZWcgIChEZWxmdCBVbml2ZXJzaXR5IG9mIFRlY2hub2xvZ3ksIE5ldGhl cmxhbmRzKQoKTWljaGFlbCBHcmVlbmJlcmcgIChQb21vbmEgQ29sbGVnZSwgVVNBKQoKQWRyaWVu IEd1YXR0byAgKElSSUYsIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3QsIEZyYW5jZSkKCkplbm5p ZmVyIEhhY2tldHQgIChVbml2ZXJzaXR5IG9mIE5vdHRpbmdoYW0sIFVLKQoKVHJvZWxzIEhlbnJp a3NlbiAgKFVuaXZlcnNpdHkgb2YgQ29wZW5oYWdlbiwgRGVubWFyaykKCkNodW5nLUtpbCBIdXIg IChTZW91bCBOYXRpb25hbCBVbml2ZXJzaXR5LCBSZXB1YmxpYyBvZiBLb3JlYSkKClJvYmVydG8g SWVydXNhbGltc2NoeSAgKFBVQy1SaW8sIEJyYXppbCkKClJhbmppdCBKaGFsYSAgKFVuaXZlcnNp dHkgb2YgQ2FsaWZvcm5pYSwgU2FuIERpZWdvLCBVU0EpCgpSYWxmIEp1bmcgIChNUEktU1dTLCBH ZXJtYW55KQoKT2hhZCBLYW1tYXIgIChVbml2ZXJzaXR5IG9mIE94Zm9yZCwgVUspCgpPbGVnIEtp c2VseW92IChUb2hva3UgVW5pdmVyc2l0eSwgSmFwYW4pCgpIc2lhbmctU2hhbmcg4oCYSm9zaOKA mSBLbyAgKE5hdGlvbmFsIEluc3RpdHV0ZSBvZiBJbmZvcm1hdGljcywgSmFwYW4pCgpPbmTFmWVq IExob3TDoWsgIChVbml2ZXJzaXR5IG9mIFdhdGVybG9vLCBDYW5hZGEpCgpEYW4gTGljYXRhICAo V2VzbGV5YW4gVW5pdmVyc2l0eSwgVVNBKQoKR2VvZmZyZXkgTWFpbmxhbmQgIChEcmV4ZWwgVW5p dmVyc2l0eSwgVVNBKQoKU2ltb24gTWFybG93ICAoRmFjZWJvb2ssIFVLKQoKQWtpbWFzYSBNb3Jp aGF0YSAgKFVuaXZlcnNpdHkgb2YgVG9reW8sIEphcGFuKQoKU2hpbi1DaGVuZyBNdSAgKEFjYWRl bWlhIFNpbmljYSwgVGFpd2FuKQoKR3VpbGxhdW1lIE11bmNoLU1hY2NhZ25vbmkgIChJbnJpYSwg RnJhbmNlKQoKS2ltIE5ndXnhu4VuICAoVW5pdmVyc2l0eSBvZiBQYXJpcy1TdWQsIEZyYW5jZSkK ClVsZiBOb3JlbGwgIChHb3RoZW5idXJnIFVuaXZlcnNpdHksIFN3ZWRlbikKCkF0c3VzaGkgT2hv cmkgIChUb2hva3UgVW5pdmVyc2l0eSwgSmFwYW4pCgpSZXggUGFnZSAgKFVuaXZlcnNpdHkgb2Yg T2tsYWhvbWEsIFVTQSkKClpvZSBQYXJhc2tldm9wb3Vsb3UgIChQcmluY2V0b24gVW5pdmVyc2l0 eSwgVVNBKQoKTmFkaWEgUG9saWthcnBvdmEgIChVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIFNh biBEaWVnbywgVVNBKQoKSm9uYXRoYW4gUHJvdHplbmtvICAoTWljcm9zb2Z0IFJlc2VhcmNoLCBV U0EpCgpUaWFyayBSb21wZiAgKFB1cmR1ZSBVbml2ZXJzaXR5LCBVU0EpCgpBbmRyZWFzIFJvc3Ni ZXJnICAoRGZpbml0eSwgR2VybWFueSkKCktDIFNpdmFyYW1ha3Jpc2huYW4gIChVbml2ZXJzaXR5 IG9mIENhbWJyaWRnZSwgVUkpCgpOaWNob2xhcyBTbWFsbGJvbmUgIChDaGFsbWVycyBVbml2ZXJz aXR5IG9mIFRlY2hub2xvZ3ksIFN3ZWRlbikKCk1hdHRoaWV1IFNvemVhdSAgKElucmlhLCBGcmFu Y2UpCgpTYW5kcm8gU3R1Y2tpICAoQ2hhbG1lcnMgfCBVbml2ZXJzaXR5IG9mIEdvdGhlbmJ1cmcs IFN3ZWRlbikKCkRvbiBTeW1lICAoTWljcm9zb2Z0LCBVSykKClphY2hhcnkgVGF0bG9jayAgKFVu aXZlcnNpdHkgb2YgV2FzaGluZ3RvbiwgVVNBKQoKU2FtIFRvYmluLUhvY2hzdGFkdCAgKEluZGlh bmEgVW5pdmVyc2l0eSwgVVNBKQoKVGFrZXNoaSBUc3VrYWRhICAoVW5pdmVyc2l0eSBvZiBUb2t5 bywgSmFwYW4pCgpUYXJtbyBVdXN0YWx1ICAoUmV5a2phdmlrIFVuaXZlcnNpdHksIEljZWxhbmQp CgpCZW5vaXQgVmFsaXJvbiAgKExSSSwgQ2VudHJhbGVTdXBlbGVjLCBVbml2LiBQYXJpcyBTYWNs YXksIEZyYW5jZSkKCkRhbmllbCBXaW5vZ3JhZC1Db3J0ICAoVW5pdmVyc2l0eSBvZiBQZW5uc3ls dmFuaWEsIFVTQSkKCk5pY29sYXMgV3UgIChVbml2ZXJzaXR5IG9mIEJyaXN0b2wsIFVLKQoKLS0g CllvdSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgYmVjYXVzZSB5b3UgYXJlIHN1YnNjcmliZWQgdG8g dGhlIEdvb2dsZSBHcm91cHMgIk1MdG9uLXVzZXIiIGdyb3VwLgpUbyB1bnN1YnNjcmliZSBmcm9t IHRoaXMgZ3JvdXAgYW5kIHN0b3AgcmVjZWl2aW5nIGVtYWlscyBmcm9tIGl0LCBzZW5kIGFuIGVt YWlsIHRvIG1sdG9uLXVzZXIrdW5zdWJzY3JpYmVAbWx0b24ub3JnLgoKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNTHRvbi11c2VyIG1haWxpbmcgbGlz dApNTHRvbi11c2VyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldDsgbWx0b24tdXNlckBtbHRvbi5vcmcK aHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbWx0b24tdXNlcgo=