ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggQSAtIFAgciBvIHggeQogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51ZWwgZGUgculm6XJlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAxLjIuMTIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbHkgdGFycmVhdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDYvMDQvMTUKCj09PT09PT09PT09PT09PT0KfCBJbnRyb2R1Y3Rpb24gfAo9PT09PT09PT09PT09PT09CgpIQS1Qcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgoKSWwgcmVxdWllcnQgcGV1IGRlIHJlc3NvdXJjZXMsIGV0IHNvbiBhcmNoaXRlY3R1cmUg6XbpbmVtZW50aWVsbGUgbW9uby0KcHJvY2Vzc3VzIGx1aSBwZXJtZXQgZmFjaWxlbWVudCBkZSBn6XJlciBwbHVzaWV1cnMgbWlsbGllcnMgZGUgY29ubmV4aW9ucwpzaW11bHRhbullcyBzdXIgcGx1c2lldXJzIHJlbGFpcyBzYW5zIGVmZm9uZHJlciBsZSBzeXN06G1lLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6HRyZXMgZGUgbGFuY2VtZW50IHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgb3B0aW9ucyBkZSBsYW5jZW1lbnQgc29udCBwZXUgbm9tYnJldXNlcyA6CgogICAgLWYgPGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbj4KICAgIC1uIDxub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzPgogICAgLU4gPG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5PgogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXNmIHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIEZJTklTSAogICAgLXN0IHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIFRFUk1JTkFURQogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGUgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgZXBvbGwoKQogICAgLWRwIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIHBvbGwoKQogICAgLWRiIGTpc2FjdGl2ZSBsYSBtaXNlIGVuIGFycmnocmUtcGxhbiAodXRpbGUgcG91ciBk6WJ1Z2dlcikKICAgIC1tIDxtZWdzPiBhcHBsaXF1ZSB1bmUgbGltaXRhdGlvbiBkZSA8bWVncz4gTW8gZCd1dGlsaXNhdGlvbiBt6W1vaXJlCgpMZSBub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb24gc2ltdWx0YW7pZXMgcGFyIHByb3h5IGVzdCBsZSBwYXJhbeh0cmUgcGFyCmTpZmF1dCBwb3VyIGxlcyBwcm94aWVzIHBvdXIgbGVzcXVlbHMgY2UgcGFyYW3odHJlIG4nZXN0IHBhcyBwculjaXPpIGRhbnMgbGUKZmljaGllciBkZSBjb25maWd1cmF0aW9uLiBJbCBzJ2FnaXQgZHUgcGFyYW3odHJlICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucwonbGlzdGVuJy4KCkxlIG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbGltaXRlIGxlIG5vbWJyZSBkZQpjb25uZXhpb25zIFRDUCB1dGlsaXNhYmxlcyDgIHVuIGluc3RhbnQgZG9ubukgcGFyIGxlIHByb2Nlc3N1cywgdG91cyBwcm94aWVzCmNvbmZvbmR1cy4gQ2UgcGFyYW3odHJlIHJlbXBsYWNlIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkxlIG1vZGUgZGVidWcgY29ycmVzcG9uZCDgIGwnb3B0aW9uICdkZWJ1ZycgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gRGFucyBjZQptb2RlLCB0b3V0ZXMgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucywgZXQgdG91cyBsZXMg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCnNvbnQgYWZmaWNo6XMuCgpQb3VyIGRlYnVnZ2VyLCBsJ29wdGlvbiAnLWRiJyBlc3QgdHLocyBwcmF0aXF1ZSBjYXIgZWxsZSBk6XNhY3RpdmUKdGVtcG9yYWlyZW1lbnQgbGUgbW9kZSBkYWVtb24gZXQgbGUgbW9kZSBtdWx0aS1wcm9jZXNzdXMuIExlIHNlcnZpY2UgcGV1dCBhbG9ycwrqdHJlIGFycup06SBwYXIgdW4gc2ltcGxlIGFwcHVpIHN1ciBDdHJsLUMsIHNhbnMgYXZvaXIg4CBtb2RpZmllciBsYQpjb25maWd1cmF0aW9uIG5pIOAgYWN0aXZlciBsZSBtb2RlIGRlYnVnIGNvbXBsZXQuCgpMZXMgc3RhdGlzdGlxdWVzIG5lIHNvbnQgZGlzcG9uaWJsZXMgcXVlIHNpIGxlIHByb2dyYW1tZSBhIOl06SBjb21waWzpIGF2ZWMKbCdvcHRpb24gIlNUQVRUSU1FIi4gSWwgcydhZ2l0IHByaW5jaXBhbGVtZW50IGRlIGRvbm7pZXMgYnJ1dGVzIG4nYXlhbnQKZCd1dGlsaXTpIHF1ZSBsb3JzIGRlIGJlbmNobWFya3MgcGFyIGV4ZW1wbGUuCgpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgaW5mb3JtZXIgZGVzIHByb2Nlc3N1cwpleGlzdGFudHMgcXVlIGxhIGNvbmZpZ3VyYXRpb24gdmEg6nRyZSByZWNoYXJn6WUuIElscyByZWNldnJvbnQgbGUgc2lnbmFsClNJR1RUT1UsIGxldXIgZGVtYW5kYW50IGRlIGxpYulyZXIgbGVzIHBvcnRzIGVuIOljb3V0ZSBhZmluIHF1ZSBsZSBub3V2ZWF1CnByb2Nlc3N1cyBwdWlzc2UgbGVzIHByZW5kcmUuIFNpIHF1b2kgcXVlIGNlIHNvaXQgc2UgcGFzc2UgbWFsLCBsZSBub3V2ZWF1CnByb2Nlc3N1cyBsZXVyIGVudmVycmEgdW4gc2lnbmFsIFNJR1RUSU4gcG91ciBsZXVyIGluZGlxdWVyIHF1J2lscyBwZXV2ZW50CnNlIHJlbWV0dHJlIGVuIOljb3V0ZSBldCBjb250aW51ZXIgbGV1ciB0cmF2YWlsLiBFbiByZXZhbmNoZSwgc2kgbGEKY29uZmlndXJhdGlvbiBzZSBjaGFyZ2UgY29ycmVjdGVtZW50LCBhbG9ycyBpbHMgcmVjZXZyb250IHVuIHNpZ25hbCBkZSBkZW1hbmRlCmRlIGZpbiBkZSB0cmF2YWlsIGVuIGRvdWNldXIgKC1zZiksIG91IGRlIHRlcm1pbmFpc29uIGltbelkaWF0ZSAoLXN0KSBxdWkKY291cGVyYSBsZXMgc2Vzc2lvbnMgZW4gY291cnMuIFVuIHVzYWdlIHR5cGlxdWUgdGVsIHF1ZSBjZWx1aS1jaSBwZXJtZXQgZGUKcmVjaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIHNhbnMgaW50ZXJydXB0aW9uIGRlIHNlcnZpY2UgOgoKICMgaGFwcm94eSAtcCAvdmFyL3J1bi9oYXByb3h5LnBpZCAtc2YgJChjYXQgL3Zhci9ydW4vaGFwcm94eS5waWQpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgRmljaGllciBkZSBjb25maWd1cmF0aW9uIHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU3RydWN0dXJlCj09PT09PT09PQoKTCdhbmFseXNldXIgZHUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGlnbm9yZSBkZXMgbGlnbmVzIHZpZGVzLCBsZXMgZXNwYWNlcywKbGVzIHRhYnVsYXRpb25zLCBldCB0b3V0IGNlIHF1aSBlc3QgY29tcHJpcyBlbnRyZSBsZSBzeW1ib2xlICcjJyAocydpbCBuJ2VzdApwYXMgcHLpY+lk6SBkJ3VuICdcJyksIGV0IGxhIGZpbiBkZSBsYSBsaWduZSwgY2UgcXVpIGNvbnN0aXR1ZSB1biBjb21tZW50YWlyZS4KCkxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBlc3QgZOljb3Vw6SBlbiBzZWN0aW9ucyBy6XDpcullcyBwYXIgZGVzIG1vdHMgY2zpcwp0ZWxzIHF1ZSA6CgogIC0gJ2dsb2JhbCcKICAtICdsaXN0ZW4nCiAgLSAnZGVmYXVsdHMnCgpUb3VzIGxlcyBwYXJhbeh0cmVzIGZvbnQgculm6XJlbmNlIOAgbGEgc2VjdGlvbiBk6WZpbmllIHBhciBsZSBkZXJuaWVyIG1vdCBjbOkKcmVjb25udS4KCgoxKSBQYXJhbeh0cmVzIGdsb2JhdXgKPT09PT09PT09PT09PT09PT09PT09CgpJbCBzJ2FnaXQgZGVzIHBhcmFt6HRyZXMgYWdpc3NhbnQgc3VyIGxlIHByb2Nlc3N1cywgb3UgYmllbiBzdXIgbCdlbnNlbWJsZSBkZXMKcHJveGllcy4gSWxzIHNvbnQgdG91cyBzcOljaWZp6XMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLiBMZXMgcGFyYW3odHJlcwpzdXBwb3J06XMgc29udCA6CgogIC0gbG9nIDxhZHJlc3NlPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KICAtIG1heGNvbm4gPG5vbWJyZT4KICAtIHVpZCA8aWRlbnRpZmlhbnQ+CiAgLSBnaWQgPGlkZW50aWZpYW50PgogIC0gY2hyb290IDxy6XBlcnRvaXJlPgogIC0gbmJwcm9jIDxub21icmU+CiAgLSBkYWVtb24KICAtIGRlYnVnCiAgLSBub2Vwb2xsCiAgLSBub3BvbGwKICAtIHF1aWV0CiAgLSBwaWRmaWxlIDxmaWNoaWVyPgogIC0gdWxpbWl0LW4gPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMKdGVscyBxdWUgJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMKcHJvY2Vzc3VzIHV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIHVpZCAgICAgICAgMzAwMDAKICAgICAgICBnaWQgICAgICAgIDMwMDAwCiAgICAgICAgY2hyb290ICAvdmFyL2Nocm9vdC9oYXByb3h5CgoxLjQpIE1vZGVzIGRlIGZvbmN0aW9ubmVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmljZSBwZXV0IGZvbmN0aW9ubmVyIGRhbnMgcGx1c2lldXJzIG1vZGVzIDoKICAtIGF2YW50LSAvIGFycmnocmUtcGxhbgogIC0gc2lsZW5jaWV1eCAvIG5vcm1hbCAvIGRlYnVnCgpMZSBtb2RlIHBhciBk6WZhdXQgZXN0IG5vcm1hbCwgYXZhbnQtcGxhbiwgYydlc3Qg4CBkaXJlIHF1ZSBsZSBwcm9ncmFtbWUgbmUKcmVuZCBwYXMgbGEgbWFpbiB1bmUgZm9pcyBsYW5j6S4gSWwgbmUgZmF1dCBzdXJ0b3V0IHBhcyBsZSBsYW5jZXIgY29tbWUgY2VjaQpkYW5zIHVuIHNjcmlwdCBkZSBk6W1hcnJhZ2UgZHUgc3lzdOhtZSwgc2lub24gbGUgc3lzdOhtZSBuZSBmaW5pcmFpdCBwYXMgc29uCmluaXRpYWxpc2F0aW9uLiBJbCBmYXV0IGxlIG1ldHRyZSBlbiBhcnJp6HJlLXBsYW4sIGRlIHNvcnRlIHF1J2lsIHJlbmRlIGxhIG1haW4KYXUgcHJvY2Vzc3VzIGFwcGVsYW50LiBDJ2VzdCBjZSBxdWUgZmFpdCBsJ29wdGlvbiAnZGFlbW9uJyBkZSBsYSBzZWN0aW9uCidnbG9iYWwnLCBldCBxdWkgZXN0IGwn6XF1aXZhbGVudCBkdSBwYXJhbeh0cmUgJy1EJyBkZSBsYSBsaWduZSBkZSBjb21tYW5kZS4KCkxlIHBhcmFt6HRyZSBkZSBsaWduZSBkZSBjb21tYW5kZSAnLWRiJyBpbmhpYmUgbGVzIG9wdGlvbnMgZ2xvYmFsZXMgJ2RhZW1vbicKZXQgJ25icHJvYycgcG91ciBmYWlyZSBmb25jdGlvbm5lciBsZSBwcm9jZXNzdXMgZW4gbW9kZSBub3JtYWwsIGF2YW50LXBsYW4uCgpQYXIgYWlsbGV1cnMsIGNlcnRhaW5zIG1lc3NhZ2VzIGQnYWxlcnRlIHNvbnQgdG91am91cnMgZW52b3npcyBzdXIgbGEgc29ydGllCnN0YW5kYXJkLCBt6m1lIGVuIG1vZGUgJ2RhZW1vbicuIFBvdXIgbmUgcGx1cyBsZXMgdm9pciBhaWxsZXVycyBxdWUgZGFucyBsZXMKbG9ncywgaWwgc3VmZml0IGRlIHBhc3NlciBlbiBtb2RlIHNpbGVuY2lldXggcGFyIGwnYWpvdXQgZGUgbCdvcHRpb24gJ3F1aWV0Jy4KQ2V0dGUgb3B0aW9uIG4nYSBwYXMgZCfpcXVpdmFsZW50IGVuIGxpZ25lIGRlIGNvbW1hbmRlLgoKRW5maW4sIGxlIG1vZGUgJ2RlYnVnJyBwZXJtZXQgZGUgZGlhZ25vc3RpcXVlciBsZXMgb3JpZ2luZXMgZGUgY2VydGFpbnMKcHJvYmzobWVzIGVuIGFmZmljaGFudCBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zIGV0IOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUAplbnRyZSBsZXMgY2xpZW50cyBldCBsZXMgc2VydmV1cnMuIENlIG1vZGUgZXN0IGluY29tcGF0aWJsZSBhdmVjIGxlcyBvcHRpb25zCidkYWVtb24nIGV0ICdxdWlldCcgcG91ciBkZXMgcmFpc29ucyBkZSBib24gc2Vucy4KCjEuNSkgQWNjcm9pc3NlbWVudCBkZSBsYSBjYXBhY2l06SBkZSB0cmFpdGVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1ciBkZXMgbWFjaGluZXMgbXVsdGktcHJvY2Vzc2V1cnMsIGlsIHBldXQgc2VtYmxlciBn4mNo6SBkZSBuJ3V0aWxpc2VyIHF1J3VuCnByb2Nlc3NldXIgcG91ciBlZmZlY3R1ZXIgbGVzIHTiY2hlcyBkZSByZWxheWFnZSwgbeptZSBzaSBsZXMgY2hhcmdlcwpu6WNlc3NhaXJlcyDgIHNhdHVyZXIgdW4gcHJvY2Vzc2V1ciBhY3R1ZWwgc29udCBiaWVuIGF1LWRlbOAgZGVzIG9yZHJlcyBkZQpncmFuZGV1ciBjb3VyYW1tZW50IHJlbmNvbnRy6XMuIENlcGVuZGFudCwgcG91ciBkZXMgYmVzb2lucyBwYXJ0aWN1bGllcnMsIGxlCnByb2dyYW1tZSBzYWl0IGTpbWFycmVyIHBsdXNpZXVycyBwcm9jZXNzdXMgc2UgculwYXJ0aXNzYW50IGxhIGNoYXJnZSBkZQp0cmF2YWlsLiBDZSBub21icmUgZGUgcHJvY2Vzc3VzIGVzdCBzcOljaWZp6SBwYXIgbGUgcGFyYW3odHJlICduYnByb2MnIGRlIGxhCnNlY3Rpb24gJ2dsb2JhbCcuIFNhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCBuYXR1cmVsbGVtZW50IDEuIENlY2kgbmUgZm9uY3Rpb25uZQpxdSdlbiBtb2RlICdkYWVtb24nLiBVbiB1c2FnZSBk6WrgIHJlbmNvbnRy6SBwb3VyIGNlIHBhcmFt6HRyZSBmdXQgZGUgZOlwYXNzZXIKbGEgbGltaXRlIGRlIG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgYWxsb3XpZSBwYXIgcHJvY2Vzc3VzIHNvdXMKU29sYXJpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAgICAgICAgMgoKMS42KSBTaW1wbGlmaWNhdGlvbiBkZSBsYSBnZXN0aW9uIGRlcyBwcm9jZXNzdXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSGFwcm94eSBzdXBwb3J0ZSBkb3LpbmF2YW50IGxhIG5vdGlvbiBkZSBmaWNoaWVycyBkZSBwaWQgKC0+IHBpZGZpbGVzKS4gU2kgbGUKcGFyYW3odHJlICctcCcgZGUgbGlnbmUgZGUgY29tbWFuZGUsIG91IGwnb3B0aW9uIGdsb2JhbGUgJ3BpZGZpbGUnIHNvbnQgc3VpdmlzCmQndW4gbm9tIGRlIGZpY2hpZXIsIGFsb3JzIGNlIGZpY2hpZXIgc2VyYSBzdXBwcmlt6SBwdWlzIHJlY3Lp6SBldCBjb250aWVuZHJhCmxlIG51belybyBkZSBQSUQgZGVzIHByb2Nlc3N1cyBmaWxzLCDgIHJhaXNvbiBkJ3VuIHBhciBsaWduZSAodmFsYWJsZQp1bmlxdWVtZW50IGVuIG1vZGUgZOltb24pLiBDZSBmaWNoaWVyIG4nZXN0IFBBUyByZWxhdGlmIGF1IGNsb2lzb25uZW1lbnQgY2hyb290CmFmaW4gZGUgcmVzdGVyIGNvbXBhdGlibGUgYXZlYyB1biBy6XBlcnRvaXJlIHByb3TpZ+kgZW4gbGVjdHVyZSBzZXVsZS4gSWwKYXBwYXJ0aWVuZHJhIOAgbCd1dGlsaXNhdGV1ciBheWFudCBsYW5j6SBsZSBwcm9jZXNzdXMsIGV0IGRpc3Bvc2VyYSBkZXMgZHJvaXRzCjA2NDQuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgZGFlbW9uCiAgICAgICAgcXVpZXQKICAgICAgICBuYnByb2MgMgogICAgICAgIHBpZGZpbGUgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZAoKICAgICMgcG91ciBzdG9wcGVyIHNldWxlbWVudCBjZXMgcHJvY2Vzc3VzIHBhcm1pIGQnYXV0cmVzIDoKICAgICMga2lsbCAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKICAgICMgcG91ciByZWNoYXJnZXIgdW5lIGNvbmZpZ3VyYXRpb24gYXZlYyB1biBpbXBhY3QgbWluaW1hbCBzdXIgbGUgc2VydmljZSwKICAgICMgZXQgc2FucyBjYXNzZXIgbGVzIHNlc3Npb25zIGV4aXN0YW50ZXMgOgogICAgIyBoYXByb3h5IC1mIGhhcHJveHkuY2ZnIC1wICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpIC1zdCAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKMS43KSBN6WNhbmlzbWVzIGRlIHRyYWl0ZW1lbnRzIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi41LCBoYXByb3h5IHN1cHBvcnRlIGxlcyBt6WNhbmlzbWVzIHBvbGwoKSBldAplcG9sbCgpLiBTdXIgbGVzIHN5c3RlbXMgb/kgc2VsZWN0KCkgZXN0IGxpbWl06SBwYXIgRkRfU0VUU0laRSAoY29tbWUgU29sYXJpcyksCnBvbGwoKSBwZXV0IOp0cmUgdW5lIGFsdGVybmF0aXZlIGludOlyZXNzYW50ZS4gRGVzIHRlc3RzIGRlIHBlcmZvcm1hbmNlCm1vbnRyZW50IHF1ZSBsZXMgcGVyZm9ybWFuY2VzIGRlIHBvbGwoKSBuZSBk6WNyb2lzc2VudCBwYXMgYXVzc2kgdml0ZSBxdWUgbGUKbm9tYnJlIGRlIHNvY2tldHMgYXVnbWVudGUsIGNlIHF1aSBlbiBmYWl0IHVuZSBzb2x1dGlvbiBz+3JlIHBvdXIgbGVzIGZvcnRlcwpjaGFyZ2VzLiBDZWxhIGRpdCwgU29hbHJpcyB1dGlsaXNlIGTpauAgcG9sbCgpIHBvdXIg6W11bGVyIHNlbGVjdCgpLCBkb25jIHRhbnQKcXVlIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG5lIGTpcGFzc2UgcGFzIEZEX1NFVFNJWkUsIHBvbGwoKSBuZSBkZXZyYWl0IHBhcwphcHBvcnRlciBkZSBwZXJmb3JtYW5jZXMgc3VwcGzpbWVudGFpcmVzLiBTdXIgbGVzIHN5c3TobWVzIOAgYmFzZSBMaW51eAppbmNsdWFudCBsZSBwYXRjaCBlcG9sbCgpIChvdSB0b3VzIGxlcyBMaW51eCAyLjYpLCBoYXByb3h5IHV0aWxpc2VyYSBlcG9sbCgpCnF1aSBlc3QgZXh0cuhtZW1lbnQgcmFwaWRlIGluZOlwZW5kYW1tZW50IGR1IG5vbWJyZSBkZSBzb2NrZXRzLiBMZXMgdGVzdHMgc3VyCmhhcHJveHkgb250IG1vbnRy6SB1bmUgcGVyZm9ybWFuY2UgY29uc3RhbnRlIGRlIDEg4CA0MDAwMCBzZXNzaW9ucyBzaW11bHRhbullcy4KCkhhcHJveHkgdXRpbGlzZXJhIGVwb2xsKCkgbG9yc3F1J2lsIGVzdCBkaXNwb25pYmxlLCBldCBzZSByZXBsaWVyYSBzdXIgcG9sbCgpLApwdWlzIGVuIGRlcm5pZXIgbGlldSBzdXIgc2VsZWN0KCkuIENlcGVuZGFudCwgc2kgcG91ciB1bmUgcmFpc29uIHF1ZWxjb25xdWUgaWwKcydhdulyYWl0IG7pY2Vzc2FpcmUgZGUgZOlzYWN0aXZlciBlcG9sbCgpIG91IHBvbGwoKSAocC5leDog4CBjYXVzZSBkJ3VuIGJ1ZyBvdQpqdXN0ZSBwb3VyIGNvbXBhcmVyIGxlcyBwZXJmb3JtYW5jZXMpLCBkZXV4IG5vdXZlbGxlcyBvcHRpb25zIGdsb2JhbGVzIG9udCDpdOkKYWpvdXTpZXMgZGFucyBjZSBidXQgOiAnbm9lcG9sbCcgZXQgJ25vcG9sbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICAjIHV0aWxpc2VyIHNldWxlbWVudCBzZWxlY3QoKQogICAgICAgIG5vZXBvbGwKICAgICAgICBub3BvbGwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpEYW5zIGxlIGJ1dCBkJ2Fzc3VyZXIgdW5lIHBvcnRhYmlsaXTpIG1heGltYWxlIGRlcyBjb25maWd1cmF0aW9ucywgY2VzIG9wdGlvbnMKc29udCBhY2NlcHTpZXMgZXQgaWdub3LpZXMgc2kgbGVzIG3pY2FuaXNtZXMgcG9sbCgpIG91IGVwb2xsKCkgbidvbnQgcGFzIOl06QphY3RpdulzIGxvcnMgZGUgbGEgY29tcGlsYXRpb24uCgpBZmluIGRlIHNpbXBsaWZpZXIgbGEgculzb2x1dGlvbiBkZSBwcm9ibOhtZXMsIGxlIHBhcmFt6HRyZSAnLWRlJyBlbiBsaWduZSBkZQpjb21tYW5kZSBk6XNhY3RpdmUgZXBvbGwoKSBldCBsZSBwYXJhbeh0cmUgJy1kcCcgZOlzYWN0aXZlIHBvbGwoKS4gSWxzIHNvbnQKcmVzcGVjdGl2ZW1lbnQg6XF1aXZhbGVudHMg4CAnbm9lcG9sbCcgZXQgJ25vcG9sbCcuCgoKMikgROlmaW5pdGlvbiBkJ3VuIHNlcnZpY2UgZW4g6WNvdXRlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGVzIHNlY3Rpb25zIGRlIHNlcnZpY2UgZOlidXRlbnQgcGFyIGxlIG1vdCBjbOkgImxpc3RlbiIgOgoKICAgIGxpc3RlbiA8bm9tX2luc3RhbmNlPiBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCi0gPG5vbV9pbnN0YW5jZT4gZXN0IGxlIG5vbSBkZSBsJ2luc3RhbmNlIGTpY3JpdGUuIENlIG5vbSBzZXJhIGVudm956SBkYW5zIGxlcwogIGxvZ3MsIGRvbmMgaWwgZXN0IHNvdWhhaXRhYmxlIGQndXRpbGlzZXIgdW4gbm9tIHJlbGF0aWYgYXUgc2VydmljZSByZWxheekuCiAgQXVjdW4gdGVzdCBuJ2VzdCBlZmZlY3R16SBjb25jZXJuYW50IGwndW5pY2l06SBkZSBjZSBub20sIHF1aSBuJ2VzdCBwYXMKICBvYmxpZ2F0b2lyZSwgbWFpcyBmb3J0ZW1lbnQgcmVjb21tYW5k6WUuCgotIDxhZHJlc3NlX0lQPiBlc3QgbCdhZHJlc3NlIElQIHN1ciBsYXF1ZWxsZSBsZSByZWxhaXMgYXR0ZW5kIHNlcyBjb25uZXhpb25zLgogIEwnYWJzZW5jZSBkJ2FkcmVzc2UgYWluc2kgcXVlIGwnYWRyZXNzZSAwLjAuMC4wIHNpZ25pZmllbnQgcXVlIGxlcyBjb25uZXhpb25zCiAgcG91cnJvbnQgcydlZmZlY3R1ZXIgc3VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgZGUgbGEgbWFjaGluZS4KCi0gPHBsYWdlX3BvcnRzPiBjb3JyZXNwb25kIHNvaXQg4CB1biBwb3J0LCBzb2l0IOAgdW5lIHBsYWdlIGRlIHBvcnRzIHN1cgogIGxlc3F1ZWxzIGxlIHJlbGFpcyBhY2NlcHRlcmEgZGVzIGNvbm5leGlvbnMgcG91ciBsJ2FkcmVzc2UgSVAgc3DpY2lmaellLgogIENldHRlIHBsYWdlIHBldXQg6nRyZSA6CiAgICAtIHNvaXQgdW4gcG9ydCBudW3pcmlxdWUgKGV4OiAnODAnKQogICAgLSBzb2l0IHVuZSBwbGFnZSBjb25zdGl0dellIGRlIGRldXggdmFsZXVycyBz6XBhcullcyBwYXIgdW4gdGlyZXQKICAgICAgKGV4OiAnMjAwMC0yMTAwJykgcmVwculzZW50YW50IGxlcyBleHRy6W1pdOlzIGluY2x1c2VzIGRhbnMgbGEKICAgICAgcGxhZ2UuCiAgSWwgZmF1dCBmYWlyZSBhdHRlbnRpb24g4CBsJ3VzYWdlIGRlcyBwbGFnZXMsIGNhciBjaGFxdWUgY29tYmluYWlzb24KICA8YWRyZXNzZV9JUD46PHBvcnQ+IGNvbnNvbW1lIHVuZSBzb2NrZXQsIGRvbmMgdW4gZGVzY3JpcHRldXIgZGUgZmljaGllci4KICBMZSBjb3VwbGUgPGFkcmVzc2VfSVA+Ojxwb3J0PiBkb2l0IOp0cmUgdW5pcXVlIHBvdXIgdG91dGVzIGxlcyAgaW5zdGFuY2VzCiAgZCd1bmUgbeptZSBtYWNoaW5lLiBMJ2F0dGFjaGVtZW50IOAgdW4gcG9ydCBpbmbpcmlldXIg4CAxMDI0IG7pY2Vzc2l0ZSB1bgogIG5pdmVhdSBkZSBwcml2aWzoZ2UgcGFydGljdWxpZXIgbG9ycyBkdSBsYW5jZW1lbnQgZHUgcHJvZ3JhbW1lCiAgKGluZOlwZW5kYW1tZW50IGR1IHBhcmFt6HRyZSAndWlkJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnKS4KCi0gbGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+IHBldXQg6nRyZSBy6XDpdOkgaW5k6WZpbmltZW50IHBvdXIKICBkZW1hbmRlciBhdSByZWxhaXMgZCfpY291dGVyIOlnYWxlbWVudCBzdXIgZCdhdXRyZXMgYWRyZXNzZXMgZXQvb3UgZCdhdXRyZXMKICBwbGFnZXMgZGUgcG9ydHMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGRlIHPpcGFyZXIgbGVzIGNvdXBsZXMgcGFyIHVuZSB2aXJndWxlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgbGlzdGVuIHgxMV9wcm94eSAxMjcuMC4wLjE6NjAwMC02MDA5CiAgICBsaXN0ZW4gc210cF9wcm94eSAxMjcuMC4wLjE6MjUsMTI3LjAuMC4xOjU4NwogICAgbGlzdGVuIGxkYXBfcHJveHkgOjM4OSw6NjYzCgpTaSB0b3V0ZXMgbGVzIGFkcmVzc2VzIG5lIHRpZW5uZW50IHBhcyBzdXIgdW5lIGxpZ25lLCBpbCBlc3QgcG9zc2libGUgZCdlbgpyYWpvdXRlciDgIGwnYWlkZSBkdSBtb3QgY2zpICdiaW5kJy4gRGFucyBjZSBjYXMsIGlsIG4nZXN0IG3qbWUgcGFzIG7pY2Vzc2FpcmUKZGUgc3DpY2lmaWVyIGxhIHByZW1p6HJlIGFkcmVzc2Ugc3VyIGxhIGxpZ25lIGxpc3RlbiwgY2UgcXVpIGZhY2lsaXRlIHBhcmZvaXMKbCfpY3JpdHVyZSBkZSBjb25maWd1cmF0aW9ucyA6CgogICAgYmluZCBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDo4MCw6NDQzCiAgICAgICAgYmluZCAxMC4wLjAuMToxMDA4MCwxMC4wLjAuMToxMDQ0MwoKMi4xKSBJbmhpYml0aW9uIGQndW4gc2VydmljZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCDqdHJlIGTpc2FjdGl26SBwb3VyIGRlcyBiZXNvaW5zIGRlIG1haW50ZW5hbmNlLCBzYW5zIGF2b2lyIOAKY29tbWVudGVyIHRvdXRlIHVuZSBwYXJ0aWUgZHUgZmljaGllci4gSWwgc3VmZml0IGRlIHBvc2l0aW9ubmVyIGxlIG1vdCBjbOkKImRpc2FibGVkIiBkYW5zIHNhIHNlY3Rpb24gOgoKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBkaXNhYmxlZAoKUmVtYXJxdWU6IGxlIG1vdCBjbOkgJ2VuYWJsZWQnIHBlcm1ldCBkZSBy6WFjdGl2ZXIgdW4gc2VydmljZSBwculhbGFibGVtZW50CiAgICAgICAgICBk6XNhY3RpdukgcGFyIGxlIG1vdCBjbOkgJ2Rpc2FibGVkJywgcGFyIGV4ZW1wbGUg4CBjYXVzZSBkJ3VuZQogICAgICAgICAgY29uZmlndXJhdGlvbiBwYXIgZOlmYXV0LgoKMi4yKSBNb2RlIGRlIGZvbmN0aW9ubmVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyB0cm9pcyBtb2RlcyBkaWZm6XJlbnRzIDoKICAtIFRDUAogIC0gSFRUUAogIC0gc3VwZXJ2aXNpb24KCk1vZGUgVENQCi0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUsIGTocyBsZXVyIOl0YWJsaXNzZW1lbnQsIGxlcyBjb25uZXhpb25zIFRDUAp2ZXJzIHVuIG91IHBsdXNpZXVycyBzZXJ2ZXVycy4gQXVjdW4gdHJhaXRlbWVudCBuJ2VzdCBlZmZlY3R16SBzdXIgbGUgZmx1eC4gSWwKcydhZ2l0IHNpbXBsZW1lbnQgZCd1bmUgYXNzb2NpYXRpb24KICAgICBzb3VyY2U8YWRyZXNzZTpwb3J0PiAtPiBkZXN0aW5hdGlvbjxhZHJlc3NlOnBvcnQ+LgpQb3VyIGwndXRpbGlzZXIsIHBy6WNpc2VyIGxlIG1vZGUgVENQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIG1vZGUgdGNwCgpNb2RlIEhUVFAKLS0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUgbGVzIGNvbm5leGlvbnMgVENQIHZlcnMgdW4gb3UgcGx1c2lldXJzCnNlcnZldXJzLCB1bmUgZm9pcyBxdSdpbCBkaXNwb3NlIGQnYXNzZXogZCdpbmZvcm1hdGlvbnMgcG91ciBlbiBwcmVuZHJlIGxhCmTpY2lzaW9uLiBMZXMgZW4tdOp0ZXMgSFRUUCBzb250IGFuYWx5c+lzIHBvdXIgeSB0cm91dmVyIHVuIOl2ZW50dWVsIGNvb2tpZSwgZXQKY2VydGFpbnMgZCdlbnRyZS1ldXggcGV1dmVudCDqdHJlIG1vZGlmaelzIHBhciBsZSBiaWFpcyBkJ2V4cHJlc3Npb25zCnLpZ3VsaehyZXMuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlciBsZSBtb2RlIEhUVFAgc291cyBsYSBk6WNsYXJhdGlvbiBkdQpyZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCgpNb2RlIHN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0KSWwgcydhZ2l0IGQndW4gbW9kZSBvZmZyYW50IOAgdW4gY29tcG9zYW50IGV4dGVybmUgdW5lIHZpc2liaWxpdOkgZGUgbCfpdGF0IGRlCnNhbnTpIGR1IHNlcnZpY2UuIElsIHNlIGNvbnRlbnRlIGRlIHJldG91cm5lciAiT0siIOAgdG91dCBjbGllbnQgc2UgY29ubmVjdGFudApzdXIgc29uIHBvcnQuIElsIHBldXQg6nRyZSB1dGlsaXPpIGF2ZWMgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2Ug6XZvbHXpcyBwb3VyCmTpdGVybWluZXIgcXVlbHMgc29udCBsZXMgc2VydmljZXMgdXRpbGlzYWJsZXMuIFNpIGwnb3B0aW9uICdodHRwY2hrJyBlc3QKYWN0aXbpZSwgYWxvcnMgbGEgculwb25zZSBjaGFuZ2VyYSBlbiAnSFRUUC8xLjAgMjAwIE9LJyBwb3VyIHNhdGlzZmFpcmUgbGVzCmF0dGVudGVzIGRlIGNvbXBvc2FudHMgc2FjaGFudCB0ZXN0ZXIgZW4gSFRUUC4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyCmxlIG1vZGUgSEVBTFRIIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBy6XBvbnNlIHNpbXBsZSA6ICdPSycKICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCgogICAgIyBy6XBvbnNlIEhUVFAgOiAnSFRUUC8xLjAgMjAwIE9LJwogICAgbGlzdGVuIGh0dHBfaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDEKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIG9wdGlvbiBodHRwY2hrCgoKTGVzIHZlcnNpb25zIDEuMS4zMiBldCAxLjIuNiBhcHBvcnRlbnQgdW5lIG5vdXZlbGxlIHNvbHV0aW9uIHBvdXIgdmFsaWRlciBsZQpib24gZm9uY3Rpb25uZW1lbnQgZHUgcHJveHkgc2FucyBwZXJ0dXJiZXIgbGUgc2VydmljZS4gTGUgbW90LWNs6SAnbW9uaXRvci1uZXQnCmEg6XTpIGNy6ekgZGFucyBsZSBidXRkIGRlIHNw6WNpZmllciB1biBy6XNlYXUgZCfpcXVpcGVtZW50cyBxdWkgbmUgUEVVVkVOVCBQQVMKdXRpbGlzZXIgbGUgc2VydmljZSBwb3VyIGF1dHJlIGNob3NlIHF1ZSBkZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQuIEMnZXN0CnBhcnRpY3VsaehyZW1lbnQgYWRhcHTpIGF1eCBwcm94aWVzIFRDUCwgY2FyIGNlbGEgZW1w6mNoZSBsZSBwcm94eSBkZSByZWxheWVyCmRlcyDpdGFibGlzc2VtZW50cyBkZSBjb25uZXhpb24g6W1pcyBwYXIgdW4gb3V0aWwgZGUgc3VydmVpbGxhbmNlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBUQ1AsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUgcHVpcyByZWZlcm3pZQpldCByaWVuIG4nZXN0IGxvZ3XpLiBDJ2VzdCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgZW4gYW1vbnQKZOl0ZWN0ZSBxdWUgbGUgc2VydmljZSBlc3QgZGlzcG9uaWJsZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgSFRUUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSwgcmllbiBuJ2VzdApsb2d16SwgcHVpcyBsYSBy6XBvbnNlIHN1aXZhbnRlIGVzdCBlbnZveellIGV0IGxhIHNlc3Npb24gcmVmZXJt6WUgOgoiSFRUUC8xLjAgMjAwIE9LIi4gQydlc3Qgbm9ybWFsZW1lbnQgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlCkhUVFAgZW4gYW1vbnQgZOl0ZWN0ZSBsZSBzZXJ2aWNlIGNvbW1lIG9w6XJhdGlvbm5lbCwgYXVzc2kgYmllbiDgIHRyYXZlcnMgZGVzCnRlc3RzIFRDUCBxdWUgSFRUUC4KCkxlcyBwcm94aWVzIHV0aWxpc2FudCBsZSBtb3QtY2zpICdtb25pdG9yLW5ldCcgcGV1dmVudCBhY2Nlc3NvaXJlbWVudCBzZSBwYXNzZXIKZGUgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgY2UgcXVpIHBlcm1ldHRyYSBkZSBsb2d1ZXIgbGVzIGNvbm5leGlvbnMgdmlkZXMK6W1pc2VzIGRlcHVpcyBkJ2F1dHJlcyBhZHJlc3NlcyBxdWUgY2VsbGVzIGR1IHLpc2VhdSBkZSB0ZXN0cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gdHNlLXByb3h5CiAgICAgICBiaW5kIDozMzg5LDoxNDk0LDo1OTAwICAjIFRTRSwgSUNBIGFuZCBWTkMgYXQgb25jZS4KICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB0c2UtZmFybSAxOTIuMTY4LjEuMTAKICAgICAgIG1vbml0b3ItbmV0IDE5Mi4xNjguMS4yNTIvMzEgICAjIEw0IGxvYWQtYmFsYW5jZXJzIG9uIC4yNTIgYW5kIC4yNTMKCgoyLjMpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHBhcmFt6HRyZSAibWF4Y29ubiIgcGVybWV0IGRlIGZpeGVyIGxhIGxpbWl0ZSBhY2NlcHRhYmxlIGVuIG5vbWJyZSBkZQpjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBwcm94eS4gQ2hhcXVlIHByb3h5IHF1aSBhdHRlaW50IGNldHRlIHZhbGV1ciBjZXNzZQpkJ+ljb3V0ZXIganVzcXUn4CBsaWLpcmF0aW9uIGQndW5lIGNvbm5leGlvbi4gVm9pciBwbHVzIGxvaW4gY29uY2VybmFudCBsZXMKbGltaXRhdGlvbnMgbGnpZXMgYXUgc3lzdOhtZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB0aW55X3NlcnZlciAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMAoKCjIuNCkgQXJy6nQgZW4gZG91Y2V1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGQnYXJy6nRlciBsZXMgc2VydmljZXMgZW4gZG91Y2V1ciBlbiBlbnZveWFudCB1biBzaWduYWwKU0lHVVNSMSBhdSBwcm9jZXNzdXMgcmVsYWlzLiBUb3VzIGxlcyBzZXJ2aWNlcyBzZXJvbnQgYWxvcnMgbWlzIGVuIHBoYXNlCmQnYXJy6nQsIG1haXMgcG91cnJvbnQgY29udGludWVyIGQnYWNjZXB0ZXIgZGVzIGNvbm5leGlvbnMgcGVuZGFudCB1biB0ZW1wcwpk6WZpbmkgcGFyIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIChlbiBtaWxsaXNlY29uZGVzKS4gQ2VsYSBwZXJtZXQgcGFyIGV4ZW1wbGUsCmRlIGZhaXJlIHNhdm9pciByYXBpZGVtZW50IOAgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIHF1J2lsIG5lIGRvaXQgcGx1cwp1dGlsaXNlciB1biByZWxhaXMsIHRvdXQgZW4gY29udGludWFudCBkJ2Fzc3VyZXIgbGUgc2VydmljZSBsZSB0ZW1wcyBxdSdpbApzJ2VuIHJlbmRlIGNvbXB0ZS4KClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBhY3RpdmVzIG5lIHNvbnQgamFtYWlzIGNhc3PpZXMuIERhbnMgbGUgcGlyZSBkZXMgY2FzLCBpbCBmYXVkcmEKYXR0ZW5kcmUgZW4gcGx1cyBsZXVyIGV4cGlyYXRpb24gYXZhbnQgbCdhcnLqdCB0b3RhbCBkdSBwcm9jZXNzdXMsIG91IGJpZW4gdHVlcgptYW51ZWxsZW1lbnQgbGUgcHJvY2Vzc3VzIHBhciBsJ2Vudm9pIGQndW4gc2lnbmFsIFNJR1RFUk0uIExhIHZhbGV1ciBwYXIgZOlmYXV0CmR1IHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCAwIChwYXMgZGUgZ3LiY2UsIGFycup0IGltbelkaWF0IGRlIGwn6WNvdXRlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgYXJy6nRlciBlbiBkb3VjZXVyIHBhciAna2lsbGFsbCAtVVNSMSBoYXByb3h5JwogICAgIyBsZSBzZXJ2aWNlIHRvdXJuZXJhIGVuY29yZSAxMCBzZWNvbmRlcyBhcHLocyBsYSBkZW1hbmRlIGQnYXJy6nQKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBncmFjZSAxMDAwMAoKICAgICMgY2UgcG9ydCBuJ2VzdCB0ZXN06SBxdWUgcGFyIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZS4KICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgZ3JhY2UgMAoKQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuOCwgdW4gbm91dmVhdSBt6WNhbmlzbWUgZGUgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQKYSDpdOkgaW50cm9kdWl0LiBJbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIG1ldHRyZSBsZXMgcHJveGllcyBlbiAicGF1c2UiIGVuCmVudm95YW50IHVuIHNpZ25hbCBTSUdUVE9VIGF1eCBwcm9jZXNzdXMuIENlbGEgZOlzYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUKc2FucyBjYXNzZXIgbGVzIHNlc3Npb25zIGV4aXN0YW50ZXMuIFN1aXRlIOAgY2VsYSwgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdUVElOCnLpYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUuIENlY2kgZXN0IHRy6HMgcHJhdGlxdWUgcG91ciB0ZW50ZXIgZGUgY2hhcmdlcgp1bmUgbm91dmVsbGUgY29uZmlndXJhdGlvbiBvdSBt6m1lIHVuZSBub3V2ZWxsZSB2ZXJzaW9uIGRlIGhhcHJveHkgc2FucyBjYXNzZXIKbGVzIGNvbm5leGlvbnMgZXhpc3RhbnRlcy4gU2kgbGUgcmVjaGFyZ2VtZW50IHMnZWZmZWN0dWUgY29ycmVjdGVtZW50LCBpbCBuZQpyZXN0ZSBwbHVzIHF1J+AgZW52b3llciB1biBzaWduYWwgU0lHVVNSMSBhdXggYW5jaWVucyBwcm9jZXNzdXMsIGNlIHF1aQpwcm92b3F1ZXJhIGxldXIgYXJy6nQgaW1t6WRpYXQgZOhzIHF1ZSBsZXVycyBjb25uZXhpb25zIHNlcm9udCB0ZXJtaW7pZXMgOyBlbgpyZXZhbmNoZSwgc2kgbGUgcmVjaGFyZ2VtZW50IOljaG91ZSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwgU0lHVFRJTiBwb3VyCnJlbWV0dHJlIGxlcyBwb3J0cyBlbiDpY291dGUgZXQgcul0YWJsaXIgbGUgc2VydmljZSBpbW3pZGlhdGVtZW50LiBWZXVpbGxlegpub3RlciBxdWUgbGUgcGFyYW3odHJlICdncmFjZScgZXN0IGlnbm9y6SBwb3VyIGxlIHNpZ25hbCBTSUdUVE9VIGFpbnNpIHF1ZSBsZQpzaWduYWwgU0lHVVNSMSB1bmUgZm9pcyBsZSBwcm9jZXNzdXMgZW4gcGF1c2UuIEF1c3NpLCBpbCBwZXV0IHMnYXbpcmVyIHRy6HMKdXRpbGUgZGUgc2F1dmVyIGxlIGZpY2hpZXIgZGUgcGlkIGF2YW50IGRlIGTpbWFycmVyIHVuZSBub3V2ZWxsZSBpbnN0YW5jZS4KCkNlIG3pY2FuaXNtZSBlc3QgcGxlaW5lbWVudCBleHBsb2l06SDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi4xMSBhdmVjIGxlcwpvcHRpb25zICctc3QnIGV0ICctc2YnICh2b2lyIHBsdXMgaGF1dCkuCgoyLjUpIFRlbXBzIGQnZXhwaXJhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgcGFyYW3pdHJlciBjZXJ0YWluZXMgZHVy6WVzIGQnZXhwaXJhdGlvbiBhdSBuaXZlYXUgZGVzCmNvbm5leGlvbnMgVENQLiBUcm9pcyB0ZW1wcyBpbmTpcGVuZGFudHMgc29udCBjb25maWd1cmFibGVzIGV0IGFjY2VwdGVudCBkZXMKdmFsZXVycyBlbiBtaWxsaXNlY29uZGVzLiBTaSBsJ3VuZSBkZSBjZXMgdHJvaXMgdGVtcG9yaXNhdGlvbnMgZXN0IGTpcGFzc+llLCBsYQpzZXNzaW9uIGVzdCB0ZXJtaW7pZSDgIGNoYXF1ZSBleHRy6W1pdOkuCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IGNsaWVudCwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogImNsaXRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBjbGllbnQg4CAybW4zMC4KICAgICAgICBjbGl0aW1lb3V0ICAgICAgICAxNTAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogInNydnRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBzZXJ2ZXVyIOAgMzBzLgogICAgICAgIHNydnRpbWVvdXQgICAgICAgIDMwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyCiAgICAiY29udGltZW91dCIgOgoKICAgICAgICAjIG9uIGFiYW5kb25uZSBzaSBsYSBjb25uZXhpb24gbidlc3QgcGFzIOl0YWJsaWUgYXBy6HMgNCBzZWNvbmRlcwogICAgICAgIGNvbnRpbWVvdXQgICAgICAgIDQwMDAKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSAiY29udGltZW91dCIgZXQgInNydnRpbWVvdXQiIG4nb250IHBhcyBkJ3V0aWxpdOkgZGFucyBsZSBjYXMgZHUgc2VydmV1ciBkZQogICAgdHlwZSAiaGVhbHRoIi4KICAtIHNvdXMgZGUgZm9ydGVzIGNoYXJnZXMsIG91IHN1ciB1biBy6XNlYXUgc2F0dXLpIG91IGTpZmVjdHVldXgsIGlsIGVzdAogICAgcG9zc2libGUgZGUgcGVyZHJlIGRlcyBwYXF1ZXRzLiBEdSBmYWl0IHF1ZSBsYSBwcmVtaehyZSByZXRyYW5zbWlzc2lvbgogICAgVENQIG4nYWl0IGxpZXUgcXUnYXUgYm91dCBkZSAzIHNlY291ZGVzLCBmaXhlciB1biB0aW1lb3V0IGRlIGNvbm5leGlvbgogICAgaW5m6XJpZXVyIOAgMyBzZWNvbmRlcyBuZSBwZXJtZXQgcGFzIGRlIHNlIHJhdHRyYXBlciBzdXIgbGEgcGVydGUKICAgIGRlIHBhcXVldHMgY2FyIGxhIHNlc3Npb24gYXVyYSDpdOkgYWJhbmRvbm7pZSBhdmFudCBsYSBwcmVtaehyZQogICAgcmV0cmFuc21pc3Npb24uIFVuZSB2YWxldXIgZGUgNCBzZWNvbmRlcyBy6WR1aXJhIGNvbnNpZOlyYWJsZW1lbnQKICAgIGxlIG5vbWJyZSBkJ+ljaGVjcyBkZSBjb25uZXhpb24uCgoyLjYpIFRlbnRhdGl2ZXMgZGUgcmVjb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxvcnMgZCd1biDpY2hlYyBkZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLCBpbCBlc3QgcG9zc2libGUgZGUKcmV0ZW50ZXIgKHBvdGVudGllbGxlbWVudCB2ZXJzIHVuIGF1dHJlIHNlcnZldXIsIGVuIGNhcyBkZSBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UpLiBMZSBub21icmUgZGUgbm91dmVsbGVzIHRlbnRhdGl2ZXMgaW5mcnVjdHVldXNlcyBhdmFudAphYmFuZG9uIGVzdCBmb3VybmkgcGFyIGxlIHBhcmFt6HRyZSAicmV0cmllcyIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgIyBvbiBlc3NhaWUgZW5jb3JlIHRyb2lzIGZvaXMgbWF4aQogICAgICAgIHJldHJpZXMgMwoKSWwgZXN0IOAgbm90ZXIgcXVlIGxhIHRlbnRhdGl2ZSBkZSByZWNvbm5leGlvbiBwZXV0IGFtZW5lciDgIHV0aWxpc2VyIHVuIGF1dHJlCnNlcnZldXIgc2kgbGUgcHJlbWllciBhIGRpc3BhcnUgZW50cmUgZGV1eCB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbi4KCgoyLjcpIEFkcmVzc2UgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNvbnQgcmVkaXJpZ+llcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgZXN0IGTpZmluaSBwYXIKbGUgcGFyYW3odHJlICJkaXNwYXRjaCIgc291cyBsYSBmb3JtZSA8YWRyZXNzZV9pcD46PHBvcnQ+LiBJbCBjb3JyZXNwb25kIOAgdW4Kc2VydmV1ciBkJ2Fzc2lnbmF0aW9uIGRlIGNvb2tpZSBkYW5zIGxlIGNhcyBv+SBsZSBzZXJ2aWNlIGNvbnNpc3RlIOAgYXNzdXJlcgp1bmlxdWVtZW50IHVuZSBwZXJzaXN0ZW5jZSBIVFRQLCBvdSBiaWVuIHNpbXBsZW1lbnQgYXUgc2VydmV1ciBkZXN0aW5hdGlvbiBkYW5zCmxlIGNhcyBkZSByZWxheWFnZSBUQ1Agc2ltcGxlLiBDZXQgYW5jaWVuIG1vZGUgbmUgcGVybWV0IHBhcyBkZSB0ZXN0ZXIgbCfpdGF0CmR1IHNlcnZldXIgZGlzdGFudCwgZXQgaWwgZXN0IG1haW50ZW5hbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGRlIHBy6WbpcmVuY2UKbGUgbW9kZSAnYmFsYW5jZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgICAgIyBvbiBlbnZvaWUgdG91dGVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBpY2kKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMjo4MAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkNlIHBhcmFt6HRyZSBuJ2EgcGFzIGQndXRpbGl06SBwb3VyIHVuIHNlcnZldXIgZW4gbW9kZSAnaGVhbHRoJywgbmkgZW4gbW9kZQonYmFsYW5jZScuCgoKMi44KSBBZHJlc3NlIGRlIHNvcnRpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBmb3JjZXIgbCdhZHJlc3NlIHV0aWxpc+llIHBvdXIg6XRhYmxpciBsZXMgY29ubmV4aW9ucyB2ZXJzCmxlcyBzZXJ2ZXVycyDgIGwnYWlkZSBkdSBwYXJhbeh0cmUgInNvdXJjZSIuIElsIGVzdCBt6m1lIHBvc3NpYmxlIGRlIGZvcmNlciBsZQpwb3J0LCBiaWVuIHF1ZSBjZXR0ZSBmb25jdGlvbm5hbGl06SBzZSBsaW1pdGUg4CBkZXMgdXNhZ2VzIHRy6HMgc3DpY2lmaXF1ZXMuCkMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gY2FzIGQnYWRyZXNzYWdlIG11bHRpcGxlLCBldCBwbHVzIGfpbulyYWxlbWVudApwb3VyIHBlcm1ldHRyZSBhdXggc2VydmV1cnMgZGUgdHJvdXZlciBsZSBjaGVtaW4gZGUgcmV0b3VyIGRhbnMgZGVzIGNvbnRleHRlcwpkZSByb3V0YWdlIGRpZmZpY2lsZXMuIFNpIGwnYWRyZXNzZSBlc3QgJzAuMC4wLjAnIG91ICcqJyBvdSB2aWRlLCBlbGxlIHNlcmEKY2hvaXNpZSBsaWJyZW1lbnQgcGFyIGxlIHN5c3RlbWUuIFNpIGxlIHBvcnQgZXN0ICcwJyBvdSB2aWRlLCBpbCBzZXJhIGNob2lzaQpsaWJyZW1lbnQgcGFyIGxlIHN5c3TobWUuIElsIGVzdCDgIG5vdGVyIHF1ZSBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTgsIGxlcwp0ZXN0cyBkZSBib24gZm9uY3Rpb25uZW1lbnQgZGVzIHNlcnZldXJzIHNlcm9udCBhdXNzaSBlZmZlY3R16XMg4CBwYXJ0aXIgZGUgbGEKc291cmNlIHNw6WNpZmnpZSBwYXIgY2UgcGFyYW3odHJlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAqOjgwCiAgICAgICAgICAgIyB0b3V0ZXMgbGVzIGNvbm5leGlvbnMgcHJlbm5lbnQgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDowCgogICAgbGlzdGVuIHJsb2dpbl9wcm94eSAqOjUxMwogICAgICAgICAgICMgdXRpbGlzZXIgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAgZXQgbGUgcG9ydCBy6XNlcnbpIDkwMAogICAgICAgIHNvdXJjZSAxOTIuMTY4LjEuMjAwOjkwMAoKCjIuOSkgROlmaW5pdGlvbiBkdSBub20gZHUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlY2hlcmNoZXIgbGEgdmFsZXVyIGQndW4gY29va2llIHBvdXIgc2F2b2lyCnZlcnMgcXVlbCBzZXJ2ZXVyIGFpZ3VpbGxlciBsYSByZXF16nRlIHV0aWxpc2F0ZXVyLiBMZSBub20gZHUgY29va2llIGVzdCBkb25u6QpwYXIgbGUgcGFyYW3odHJlICJjb29raWUiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECgpPbiBwZXV0IG1vZGlmaWVyIGwndXRpbGlzYXRpb24gZHUgY29va2llIHBvdXIgbGEgcmVuZHJlIHBsdXMgaW50ZWxsaWdlbnRlCnZpcy3gLXZpcyBkZXMgYXBwbGljYXRpb25zIHJlbGF56WVzLiBJbCBlc3QgcG9zc2libGUsIG5vdGFtbWVudCBkZSBzdXBwcmltZXIgb3UKcunpY3JpcmUgdW4gY29va2llIHJldG91cm7pIHBhciB1biBzZXJ2ZXVyIGFjY+lk6SBlbiBkaXJlY3QsIGV0IGQnaW5z6XJlciB1bgpjb29raWUgZGFucyB1bmUgculwb25zZSBIVFRQIGFkcmVzc+llIOAgdW4gc2VydmV1ciBz6WxlY3Rpb25u6SBlbiBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UsIGV0IG3qbWUgZGUgc2lnbmFsZXIgYXV4IHByb3hpZXMgYW1vbnQgZGUgbmUgcGFzIGNhY2hlciBsZSBjb29raWUKaW5z6XLpLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgpQb3VyIG5lIGNvbnNlcnZlciBsZSBjb29raWUgcXUnZW4gYWNj6HMgaW5kaXJlY3QsIGRvbmMg4CB0cmF2ZXJzIGxlCmRpc3BhdGNoZXVyLCBldCBzdXBwcmltZXIgdG91dGVzIHNlcyDpdmVudHVlbGxlcyBvY2N1cmVuY2VzIGxvcnMgZGVzIGFjY+hzCmRpcmVjdHMgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5kaXJlY3QKClBvdXIgcmVtcGxhY2VyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBleGlzdGFudCBwYXIgY2VsbGUgYXR0cmlidellIOAgdW4gc2VydmV1ciwKbG9ycyBkJ3VuIGFjY+hzIGRpcmVjdCA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCByZXdyaXRlCgpQb3VyIGNy6WVyIHVuIGNvb2tpZSBjb21wb3J0YW50IGxhIHZhbGV1ciBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyIGxvcnMgZCd1bgphY2PocyBlbiBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBzb3VoYWl0YWJsZSBxdWUKdG91cyBsZXMgc2VydmV1cnMgYWllbnQgdW4gY29va2llIHJlbnNlaWdu6S4gVW4gc2VydmV1ciBub24gYXNzaWdu6SBkJ3VuIGNvb2tpZQpyZXRvdXJuZXJhIHVuIGNvb2tpZSB2aWRlIChjb29raWUgZGUgc3VwcHJlc3Npb24pIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydAoKUG91ciBy6XV0aWxpc2VyIHVuIGNvb2tpZSBhcHBsaWNhdGlmIGV0IGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIsCnB1aXMgbGUgc3VwcHJpbWVyIGRhbnMgbGVzIHJlcXXqdGVzIHN1aXZhbnRlcywgdXRpbGlzZXIgbCdvcHRpb24gJ3ByZWZpeCcuIEVsbGUKcGVybWV0IGQnaW5z6XJlciB1bmUgaW5zdGFuY2UgZGUgaGFwcm94eSBkZXZhbnQgdW5lIGFwcGxpY2F0aW9uIHNhbnMgcmlzcXVlcgpkJ2luY29tcGF0aWJpbGl06XMgZPtlcyDgIGRlcyBjbGllbnRzIHF1aSBuZSBzdXBwb3J0ZXJhaWVudCBwYXMgZCdhcHByZW5kcmUKcGx1cyBkJ3VuIGNvb2tpZSA6CgogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CgpQb3VyIGluc+lyZXIgdW4gY29va2llLCBlbiBzJ2Fzc3VyYW50IHF1J3VuIGNhY2hlIGVuIGFtb250IG5lIGxlIHN0b2NrZXJhIHBhcywKYWpvdXRlciBsZSBtb3QgY2zpICdub2NhY2hlJyBhcHLocyAnaW5zZXJ0JyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZQoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSBzZXVsZW1lbnQgc3VpdGUgYXV4IHJlcXXqdGVzIGRlIHR5cGUgUE9TVCwgYWpvdXRlciBsZQptb3QgY2zpICdwb3N0b25seScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IHBvc3Rvbmx5CgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KLSBJbCBlc3QgcG9zc2libGUgZGUgY29tYmluZXIgJ2luc2VydCcgYXZlYyAnaW5kaXJlY3QnIG91ICdyZXdyaXRlJyBwb3VyCiAgcydhZGFwdGVyIOAgZGVzIGFwcGxpY2F0aW9ucyBn6W7pcmFudCBk6WrgIGxlIGNvb2tpZSwgYXZlYyB1biBjb250ZW51CiAgaW52YWxpZGUuIElsIHN1ZmZpdCBwb3VyIGNlbGEgZGUgbGVzIHNw6WNpZmllciBzdXIgbGEgbeptZSBsaWduZS4KCi0gZGFucyBsZSBjYXMgb/kgJ2luc2VydCcgZXQgJ2luZGlyZWN0JyBzb250IHNw6WNpZmnpcywgbGUgY29va2llIG4nZXN0IGphbWFpcwogIHRyYW5zbWlzIGF1IHNlcnZldXIgdnUgcXUnaWwgbidlbiBhIHBhcyBjb25uYWlzc2FuY2UgZXQgbmUgcG91cnJhaXQgcGFzIGxlCiAgY29tcHJlbmRyZS4KCi0gaWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyICdub2NhY2hlJyBlbiBtb2RlIGluc2VydGlvbiBzaQogIGRlcyBjYWNoZXMgcGV1dmVudCBzZSB0cm91dmVyIGVudHJlIGxlcyBjbGllbnRzIGV0IGwnaW5zdGFuY2UgZHUgcHJveHkuIERhbnMKICBsZSBjYXMgY29udHJhaXJlLCB1biBjYWNoZSBIVFRQIDEuMCBwb3VycmFpdCBjYWNoZXIgbGEgculwb25zZSwgaW5jbHVhbnQgbGUKICBjb29raWUgZGUgcGVyc2lzdGVuY2UgaW5z6XLpLCBkb25jIHByb3ZvcXVlciBkZXMgY2hhbmdlbWVudHMgZGUgc2VydmV1cnMgcG91cgogIGRlcyBjbGllbnRzIHBhcnRhZ2VhbnQgbGUgbeptZSBjYWNoZS4KCi0gbGUgbW9kZSAncHJlZml4JyBuZSBu6WNlc3NpdGUgcGFzIGQndXRpbGlzZXIgJ2luZGlyZWN0JywgJ25vY2FjaGUnLCBuaQogICdwb3N0b25seScsIGNhciB0b3V0IGNvbW1lIGxlIG1vZGUgJ3Jld3JpdGUnLCBpbCBzJ2FwcHVpZSBzdXIgdW4gY29va2llCiAgcHLpc2VudOkgcGFyIGwnYXBwbGljYXRpb24gcXVpIGVzdCBjZW5z6WUgc2F2b2lyIOAgcXVlbCBtb21lbnQgaWwgcGV1dAogIOp0cmUg6W1pcyBzYW5zIHJpc3F1ZS4gVG91dGVmb2lzLCBjb21tZSBpbCBu6WNlc3NpdGUgZGUgcmVjdGlmaWVyIGxlIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsZSBjbGllbnQgZGFucyBjaGFxdWUgcmVxdep0ZSB1bHTpcmlldXJlLCBpbCBlc3QgaW5kaXNwZW5zYWJsZQogIGRlIHMnYXNzdXJlciBxdWUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIgY29tbXVuaXF1ZXJvbnQgc2FucyAia2VlcC1hbGl2ZQogIEhUVFAiLiBEYW5zIGxlIGRvdXRlLCBpbCBlc3QgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLgoKLSBsb3JzcXVlIGwnYXBwbGljYXRpb24gZXN0IGJpZW4gY29ubnVlLCBldCBxdWUgbGVzIHBhcnRpZXMgbuljZXNzaXRhbnQgZGUgbGEKICBwZXJzaXN0ZW5jZSBzb250IHN5c3TpbWF0aXF1ZW1lbnQgYWNj6WTpZXMgcGFyIHVuIGZvcm11bGFpcmUgZW4gbW9kZSBQT1NULAogIGlsIGVzdCBwbHVzIGVmZmljYWNlIGVuY29yZSBkZSBjb21iaW5lciBsZSBtb3QgY2zpICJwb3N0b25seSIgYXZlYyAiaW5zZXJ0IgogIGV0ICJpbmRpcmVjdCIsIGNhciBsYSBwYWdlIGQnYWNjdWVpbCByZXN0ZSBjYWNoYWJsZSwgZXQgYydlc3QgbCdhcHBsaWNhdGlvbgogIHF1aSBn6HJlIGxlICdjYWNoZS1jb250cm9sJy4KCjIuMTApIEFzc2lnbmF0aW9uIGQndW4gc2VydmV1ciDgIHVuZSB2YWxldXIgZGUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBpbCBlc3QgcG9zc2libGUgZCdhc3NvY2llciBkZXMgdmFsZXVycyBkZSBjb29raWUg4CBkZXMgc2VydmV1cnMKcGFyIGxlIHBhcmFt6HRyZSAnc2VydmVyJy4gTGEgc3ludGF4ZSBlc3QgOgoKICAgIHNlcnZlciA8aWRlbnRpZmlhbnQ+IDxhZHJlc3NlX2lwPjo8cG9ydD4gY29va2llIDx2YWxldXI+CgotIDxpZGVudGlmaWFudD4gZXN0IHVuIG5vbSBxdWVsY29ucXVlIGRlIHNlcnZldXIgdXRpbGlz6SBwb3VyIGwnaWRlbnRpZmllciBkYW5zIGxhCiAgY29uZmlndXJhdGlvbiBldCBsZXMgbG9ncy4KLSA8YWRyZXNzZV9pcD46PHBvcnQ+IGVzdCBsZSBjb3VwbGUgYWRyZXNzZS1wb3J0IHN1ciBsZXF1ZWwgbGUgc2VydmV1ciDpY291dGUuCi0gPHZhbGV1cj4gZXN0IGxhIHZhbGV1ciDgIHJlY29ubmHudHJlIG91IHBvc2l0aW9ubmVyIGRhbnMgbGUgY29va2llLgoKRXhlbXBsZSA6IGxlIGNvb2tpZSBTRVJWRVJJRCBwZXV0IGNvbnRlbmlyIHNlcnZlcjAxIG91IHNlcnZlcjAyCi0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKQXR0ZW50aW9uIDogbGEgc3ludGF4ZSBhIGNoYW5n6SBkZXB1aXMgbGEgdmVyc2lvbiAxLjAuCi0tLS0tLS0tLS0tCgozKSBS6XBhcnRpdGV1ciBkZSBjaGFyZ2UgYXV0b25vbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZSByZWxhaXMgcGV1dCBlZmZlY3R1ZXIgbHVpLW3qbWUgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGxlcyBkaWZm6XJlbnRzCnNlcnZldXJzIGTpZmluaXMgcG91ciB1biBzZXJ2aWNlIGRvbm7pLCBlbiBtb2RlIFRDUCBjb21tZSBlbiBtb2RlIEhUVFAuIFBvdXIKY2VsYSwgb24gcHLpY2lzZSBsZSBtb3QgY2zpICdiYWxhbmNlJyBkYW5zIGxhIGTpZmluaXRpb24gZHUgc2VydmljZSwK6XZlbnR1ZWxsZW1lbnQgc3VpdmkgZHUgbm9tIGQndW4gYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbi4gSnVzcXUn4CBsYSB2ZXJzaW9uCjEuMi4xMSwgc2V1bCAncm91bmRyb2Jpbicg6XRhaXQgZ+ly6SwgZXQgYydlc3QgYXVzc2kgbGEgdmFsZXVyIGltcGxpY2l0ZSBwYXIKZOlmYXV0LiBBdmVjIGxhIHZlcnNpb24gMS4yLjEyLCBsZSBub3V2ZWF1IG1vdCBjbOkgJ3NvdXJjZScgZXN0IGFwcGFydS4gSWwgZXN0Cul2aWRlbnQgcXUnZW4gY2FzIGQndXRpbGlzYXRpb24gZHUgculwYXJ0aXRldXIgaW50ZXJuZSwgaWwgbmUgZmF1ZHJhIHBhcwpzcOljaWZpZXIgZCdhZHJlc3NlIGRlIGRpc3BhdGNoLCBldCBxdSdpbCBmYXVkcmEgYXUgbW9pbnMgdW4gc2VydmV1ci4KCkV4ZW1wbGUgOiBt6m1lIHF1ZSBwculj6WRlbW1lbnQgZW4gculwYXJ0aXRpb24gaW50ZXJuZQotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGRlIGTpdGVybWluZXIgYXV0b21hdGlxdWVtZW50IGxlIHBvcnQKZHUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzZXJhIGVudm956WUgbGEgY29ubmV4aW9uLCBlbiBmb25jdGlvbiBkdSBwb3J0IGQn6WNvdXRlCnN1ciBsZXF1ZWwgbGUgY2xpZW50IHMnZXN0IGNvbm5lY3TpLiBFbiBlZmZldCwgaWwgeSBhIDQgcG9zc2liaWxpdOlzIHBvdXIgbGUKY2hhbXAgPHBvcnQ+IGRlIGwnYWRyZXNzZSBzZXJ2ZXVyIDoKCiAgLSBub24gc3DpY2lmaekgb3UgbnVsIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbi4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIChzZXVsIGNhcyBzdXBwb3J06SBwb3VyIGxlcyB2ZXJzaW9ucyBhbnTpcmlldXJlcykgOgogICAgbGUgc2VydmV1ciByZWNldnJhIGxhIGNvbm5leGlvbiBzdXIgbGUgcG9ydCBk6XNpZ27pLgoKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnKycgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBhdXF1ZWwgb24gYWpvdXRlIGxhIHZhbGV1ciBk6XNpZ27pZS4KICAgIAogIC0gdmFsZXVyIG51belyaXF1ZSBwculj6WTpZSBkJ3VuIHNpZ25lICctJyA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24sIGR1cXVlbCBvbiBzb3VzdHJhaXQgbGEgdmFsZXVyCiAgICBk6XNpZ27pZS4KICAgIApFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIHNpbXVsdGFu6SBkZXMgcG9ydHMgODAgZXQgODEgZXQgODA4MC04MDg5CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwLDo4MSw6ODA4MC04MDg5CiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIFRDUCBkZXMgcG9ydHMgMjUsIDM4OSBldCA2NjMgdmVycyBsZXMgcG9ydHMgMTAyNSwgMTM4OSBldCAxNjYzCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDozODksOjY2MwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjorMTAwMAoKQ29tbWUgaW5kaXF16SBwculj6WRlbW1lbnQsIGxhIHZlcnNpb24gMS4yLjEyIGFwcG9ydGEgbGUgbm91dmVhdSBtb3QgY2zpCidzb3VyY2UnLiBMb3JzcXVlIGNlbHVpLWNpIGVzdCB1dGlsaXPpLCBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGVzdCBoYWNo6WUgZXQKZGlzdHJpYnXpZSBkZSBtYW5p6HJlIGhvbW9n6G5lIHBhcm1pIGxlcyBzZXJ2ZXVycyBkaXNwb25pYmxlcywgZGUgc29ydGUgcXUndW5lCm3qbWUgYWRyZXNzZSBJUCBhaWxsZSB0b3Vqb3VycyBzdXIgbGUgbeptZSBzZXJ2ZXVyIHRhbnQgcXUnaWwgbid5IGEgYXVjdW4KY2hhbmdlbWVudCBkYW5zIGxlIG5vbWJyZSBkZSBzZXJ2ZXVycyBkaXNwb25pYmxlcy4gQ2VjaSBwZXV0IOp0cmUgdXRpbGlz6SBwYXIKZXhlbXBsZSBwb3VyIGF0dGFjaGVyIGxlIEhUVFAgZXQgbGUgSFRUUFMgc3VyIHVuIG3qbWUgc2VydmV1ciBwb3VyIHVuIG3qbWUKY2xpZW50LiBDZWxhIHBldXQg6WdhbGVtZW50IOp0cmUgdXRpbGlz6SBwb3VyIGFt6Wxpb3JlciBsYSBwZXJzaXN0YW5jZQpsb3JzcXUndW5lIHBhcnRpZSBkZSBsYSBwb3B1bGF0aW9uIGRlcyBjbGllbnRzIG4nYWNjZXB0ZSBwYXMgbGVzIGNvb2tpZXMuIERhbnMKY2UgY2FzLCBzZXVscyBjZXMgZGVybmllcnMgc2Vyb250IHBlcnR1cmLpcyBwYXIgbGEgcGVydGUgZCd1biBzZXJ2ZXVyLgoKTk9URTogaWwgZXN0IGltcG9ydGFudCBkZSBwcmVuZHJlIGVuIGNvbXB0ZSBsZSBmYWl0IHF1ZSBiZWF1Y291cCBkJ2ludGVybmF1dGVzCiAgICAgIG5hdmlndWVudCDgIHRyYXZlcnMgZGVzIGZlcm1lcyBkZSBwcm94aWVzIHF1aSBhc3NpZ25lbnQgZGVzIGFkcmVzc2VzIElQCiAgICAgIGRpZmbpcmVudGVzIOAgY2hhcXVlIHJlcXXqdGUuIEQnYXV0cmVzIGludGVybmF1dGVzIHV0aWxpc2VudCBkZXMgbGllbnMg4AogICAgICBsYSBkZW1hbmRlIGV0IG9idGllbm5lbnQgdW5lIGFkcmVzc2UgSVAgZGlmZulyZW50ZSDgIGNoYXF1ZSBjb25uZXhpb24uIERlCiAgICAgIGNlIGZhaXQsIGxlIHBhcmFt6HRyZSAnc291cmNlJyBkb2l0IOp0cmUgdXRpbGlz6SBhdmVjIHVuZSBleHRy6G1lCiAgICAgIHBy6WNhdXRpb24uCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KCiMgYXNzdXJlciBxdSd1bmUgbeptZSBhZHJlc3NlIElQIGlyYSBzdXIgbGUgbeptZSBzZXJ2ZXVyIHBvdXIgdG91dCBzZXJ2aWNlCgogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDo4MCw6NDQzCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSBzb3VyY2UKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yCgojIGFt6Wxpb3JlciBsYSBwZXJzaXN0YW5jZSBwYXIgbCd1dGlsaXNhdGlvbiBkZSBsYSBzb3VyY2UgZW4gcGx1cyBkdSBjb29raWUgOgoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugc291cmNlCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgoKMy4xKSBTdXJ2ZWlsbGFuY2UgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgdGVzdGVyIGwn6XRhdCBkZXMgc2VydmV1cnMgcGFyIOl0YWJsaXNzZW1lbnQgZGUgY29ubmV4aW9uClRDUCBvdSBwYXIgZW52b2kgZCd1bmUgcmVxdep0ZSBIVFRQLiBVbiBzZXJ2ZXVyIGhvcnMgZCd1c2FnZSBuZSBzZXJhIHBhcwp1dGlsaXPpIGRhbnMgbGUgcHJvY2Vzc3VzIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBQb3VyIGFjdGl2ZXIgbGEKc3VydmVpbGxhbmNlLCBham91dGVyIGxlIG1vdCBjbOkgJ2NoZWNrJyDgIGxhIGZpbiBkZSBsYSBk6WNsYXJhdGlvbiBkdSBzZXJ2ZXVyLgpJbCBlc3QgcG9zc2libGUgZGUgc3DpY2lmaWVyIGwnaW50ZXJ2YWxsZSAoZW4gbWlsbGlzZWNvbmRlcykgc+lwYXJhbnQgZGV1eAp0ZXN0cyBkdSBzZXJ2ZXVyIHBhciBsZSBwYXJhbeh0cmUgImludGVyIiwgbGUgbm9tYnJlIGQn6WNoZWNzIGFjY2VwdOlzIHBhciBsZQpwYXJhbeh0cmUgImZhbGwiLCBldCBsZSBub21icmUgZGUgc3VjY+hzIGF2YW50IHJlcHJpc2UgcGFyIGxlIHBhcmFt6HRyZSAicmlzZSIuCkxlcyBwYXJhbeh0cmVzIG5vbiBwculjaXPpcyBwcmVubmVudCBsZXMgdmFsZXVycyBzdWl2YW50ZXMgcGFyIGTpZmF1dCA6CgogLSBpbnRlciA6IDIwMDAKIC0gcmlzZSAgOiAyCiAtIGZhbGwgIDogMwogLSBwb3J0ICA6IHBvcnQgZGUgY29ubmV4aW9uIGR1IHNlcnZldXIKCkxlIG1vZGUgcGFyIGTpZmF1dCBjb25zaXN0ZSDgIOl0YWJsaXIgZGVzIGNvbm5leGlvbnMgVENQIHVuaXF1ZW1lbnQuIERhbnMKY2VydGFpbnMgY2FzIGRlIHBhbm5lcywgZGVzIHNlcnZldXJzIHBldXZlbnQgY29udGludWVyIOAgYWNjZXB0ZXIgbGVzCmNvbm5leGlvbnMgc2FucyBsZXMgdHJhaXRlci4gRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE2LCBoYXByb3h5IGVzdCBlbiBtZXN1cmUKZCdlbnZveWVyIGRlcyByZXF16nRlcyBIVFRQIGNvdXJ0ZXMgZXQgdHLocyBwZXUgY2/7dGV1c2VzLiBMZXMgdmVyc2lvbnMgMS4xLjE2CmV0IDEuMS4xNyB1dGlsaXNlbnQgIk9QVElPTlMgLyBIVFRQLzEuMCIuIERhbnMgbGVzIHZlcnNpb25zIDEuMS4xOCDgIDEuMS4yMCwKbGVzIHJlcXXqdGVzIG9udCDpdOkgY2hhbmfpZXMgZW4gIk9QVElPTlMgKiBIVFRQLzEuMCIgcG91ciBkZXMgcmFpc29ucyBkZQpjb250cvRsZSBkJ2FjY+hzIGF1eCByZXNzb3VyY2VzLiBDZXBlbmRhbnQsIGNldHRlIHJlcXXqdGUgZG9jdW1lbnTpZSBkYW5zIGxhClJGQzIwNjggbidlc3QgcGFzIGNvbXByaXNlIHBhciB0b3VzIGxlcyBzZXJ2ZXVycy4gRG9uYyDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uCjEuMS4yMSwgbGEgcmVxdep0ZSBwYXIgZOlmYXV0IGVzdCByZXZlbnVlIOAgIk9QVElPTlMgLyBIVFRQLzEuMCIsIG1haXMgaWwgZXN0CnBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgbGEgcGFydGllIFVSSS4gTGVzIHJlcXXqdGVzIE9QVElPTlMgcHLpc2VudGVudApsJ2F2YW50YWdlIGQn6nRyZSBmYWNpbGVtZW50IGV4dHJhY3RpYmxlcyBkZXMgbG9ncywgZXQgZGUgbmUgcGFzIGluZHVpcmUKZCdhY2PocyBhdXggZmljaGllcnMgY/R06SBzZXJ2ZXVyLiBTZXVsZXMgbGVzIHLpcG9uc2VzIDJ4eCBldCAzeHggc29udApjb25zaWTpcullcyB2YWxpZGVzLCBsZXMgYXV0cmVzICh5IGNvbXByaXMgbm9uLXLpcG9uc2VzKSBhYm91dGlzc2VudCDgIHVuCuljaGVjLiBMZSB0ZW1wcyBtYXhpbWFsIGltcGFydGkgcG91ciB1bmUgculwb25zZSBlc3Qg6WdhbCDgIGwnaW50ZXJ2YWxsZSBlbnRyZQpkZXV4IHRlc3RzIChwYXJhbeh0cmUgImludGVyIikuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBzcOljaWZpZXIgbCdvcHRpb24KImh0dHBjaGsiLCDpdmVudHVlbGxlbWVudCBzdWl2aWUgZCd1bmUgbel0aG9kZSBldCBkJ3VuZSBVUkkuIEwnb3B0aW9uICJodHRwY2hrIgphY2NlcHRlIGRvbmMgNCBmb3JtZXMgOgoKICAtIG9wdGlvbiBodHRwY2hrICAgICAgICAgICAgICAgLT4gT1BUSU9OUyAvIEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBVUkkgICAgICAgICAgIC0+IE9QVElPTlMgPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJICAgICAgLT4gPE1FVEg+IDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSBWRVIgIC0+IDxNRVRIPiA8VVJJPiA8VkVSPgoKVm9pciBsZXMgZXhlbXBsZXMgY2ktYXBy6HMuICAgICAgICAKCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIGTpZmluaXIgZGVzIHNlcnZldXJzIGRlIHNlY291cnMsCnV0aWxpc+lzIHVuaXF1ZW1lbnQgbG9yc3F1J2F1Y3VuIGRlcyBhdXRyZXMgc2VydmV1cnMgbmUgZm9uY3Rpb25uZS4gUG91ciBjZWxhLApham91dGVyIGxlIG1vdCBjbOkgImJhY2t1cCIgc3VyIGxhIGxpZ25lIGRlIGTpZmluaXRpb24gZHUgc2VydmV1ci4gVW4gc2VydmV1cgpkZSBzZWNvdXJzIG4nZXN0IGFwcGVs6SBxdWUgbG9yc3F1ZSB0b3VzIGxlcyBzZXJ2ZXVycyBub3JtYXV4LCBhaW5zaSBxdWUgdG91cwpsZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBxdWkgbGUgcHLpY+hkZW50IHNvbnQgaG9ycyBkJ3VzYWdlLiBJbCBuJ3kgYSBkb25jIHBhcwpkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgZW50cmUgZGVzIHNlcnZldXJzIGRlIHNlY291cnMgcGFyIGTpZmF1dC4gQSBwYXJ0aXIKZGUgbGEgdmVyc2lvbiAxLjIuOSwgaWwgZXN0IHBvc3NpYmxlIGRlIGxlcyB1dGlsaXNlciBzaW11bHRhbultZW50IGdy4mNlIOAKbCdvcHRpb24gJ2FsbGJhY2t1cHMnLiBDZSB0eXBlIGRlIHNlcnZldXJzIHBldXQgc2VydmlyIOAgcmV0b3VybmVyIGRlcyBwYWdlcwpkJ2luZGlzcG9uaWJpbGl06SBkZSBzZXJ2aWNlLiBEYW5zIGNlIGNhcywgaWwgZXN0IHBy6WbpcmFibGUgZGUgbmUgcGFzIGFmZmVjdGVyCmRlIGNvb2tpZSwgYWZpbiBxdWUgbGVzIGNsaWVudHMgcXVpIGxlIHJlbmNvbnRyZW50IG4neSBzb2llbnQgcGFzIGFmZmVjdOlzCmTpZmluaXRpdmVtZW50LiBMZSBmYWl0IGRlIG5lIHBhcyBtZXR0cmUgZGUgY29va2llIGVudm9pZSB1biBjb29raWUgdmlkZSwgY2UKcXVpIGEgcG91ciBlZmZldCBkZSBzdXBwcmltZXIgdW4g6XZlbnR1ZWwgY29va2llIGFmZmVjdOkgcHLpY+lkZW1tZW50LgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjIyLCBpbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudAp2ZXJzIHVuIHBvcnQgZGlmZulyZW50IGRlIGNlbHVpIGRlIHNlcnZpY2UuIEMnZXN0IG7pY2Vzc2FpcmUgcHJpbmNpcGFsZW1lbnQKcG91ciBsZXMgY29uZmlndXJhdGlvbnMgb/kgbGUgc2VydmV1ciBuJ2EgcGFzIGRlIHBvcnQgcHLpZOlmaW5pLCBwYXIgZXhlbXBsZQpsb3JzcXUnaWwgZXN0IGTpZHVpdCBkdSBwb3J0IGQnYWNjZXB0YXRpb24gZGUgbGEgY29ubmV4aW9uLiBQb3VyIGNlbGEsIHV0aWxpc2VyCmxlIHBhcmFt6HRyZSAncG9ydCcgc3VpdmkgZHUgbnVt6XJvIGRlIHBvcnQgZGV2YW50IHLpcG9uZHJlIGF1eCByZXF16nRlcy4KCkVuZmluLCBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSB2aXN1YWxpc2VyIHJhcGlkZW1lbnQKbCfpdGF0IGNvdXJhbnQgZGUgdG91cyBsZXMgc2VydmV1cnMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwKU0lHSFVQIGF1IHByb2Nlc3N1cyBwcm94eS4gTCfpdGF0IGRlIHRvdXMgbGVzIHNlcnZldXJzIGRlIHRvdXMgbGVzIHByb3hpZXMgZXN0CmVudm956SBkYW5zIGxlcyBsb2dzIGVuIG5pdmVhdSAibm90aWNlIiwgYWluc2kgcXVlIHN1ciBsYSBzb3J0aWUgZCdlcnJldXJzIHNpCmVsbGUgZXN0IGFjdGl2ZS4gQydlc3QgdW5lIGJvbm5lIHJhaXNvbiBwb3VyIGF2b2lyIGF1IG1vaW5zIHVuIHNlcnZldXIgZGUgbG9ncwpsb2NhbCBlbiBuaXZlYXUgbm90aWNlLgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4IChldCAxLjIuMSksIHVuIG1lc3NhZ2UgZCd1cmdlbmNlIGVzdCBlbnZveekgZGFucyBsZXMKbG9ncyBlbiBuaXZlYXUgJ2VtZXJnJyBzaSB0b3VzIGxlcyBzZXJ2ZXVycyBkJ3VuZSBt6m1lIGluc3RhbmNlIHNvbnQgdG9tYulzLAphZmluIGRlIG5vdGlmaWVyIGwnYWRtaW5pc3RyYXRldXIgcXUnaWwgZmF1dCBwcmVuZHJlIHVuZSBhY3Rpb24gaW1t6WRpYXRlLgoKRGVwdWlzIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIHBsdXNpZXVycyBzZXJ2ZXVycyBwZXV2ZW50IHBhcnRhZ2VyIGxhCm3qbWUgdmFsZXVyIGRlIGNvb2tpZS4gQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBtb2RlIGJhY2t1cCwgcG91cgpz6WxlY3Rpb25uZXIgZGVzIGNoZW1pbnMgYWx0ZXJuYXRpZnMgcG91ciB1biBzZXJ2ZXVyIGRvbm7pLCBwb3VyIG1ldHRyZSBlbgpvZXV2cmUgbCdhcnLqdCBlbiBkb3VjZXVyIGQndW4gc2VydmV1ciwgb3UgcG91ciBkaXJpZ2VyIGxlcyBjbGllbnRzCnRlbXBvcmFpcmVtZW50IHZlcnMgdW5lIHBhZ2UgZCdlcnJldXIgZW4gYXR0ZW5kYW50IGxlIHJlZOltYXJyYWdlIGQndW5lCmFwcGxpY2F0aW9uLiBMZSBwcmluY2lwZSBlc3QgcXVlIGxvcnNxdSd1biBzZXJ2ZXVyIGVzdCBk6XRlY3TpIGNvbW1lIGlub3DpcmFudCwKbGUgcHJveHkgY2hlcmNoZXJhIGxlIHByb2NoYWluIHNlcnZldXIgcG9zc+lkYW50IGxhIG3qbWUgdmFsZXVyIGRlIGNvb2tpZSBwb3VyCmNoYXF1ZSBjbGllbnQgcXVpIGxlIGRlbWFuZGVyYS4gUydpbCBuZSB0cm91dmUgcGFzIGRlIHNlcnZldXIgbm9ybWFsLCBhbG9ycyBpbApsZSBjaGVyY2hlcmEgcGFybWkgbGVzIHNlcnZldXJzIGRlIGJhY2t1cC4gQ29uc3VsdGVyIGxlIGd1aWRlIGQnYXJjaGl0ZWN0dXJlCnBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQojIGNvbmYgZHUgcGFyYWdyYXBoZSAzKSBhdmVjIHN1cnZlaWxsYW5jZSBUQ1AKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50IGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdPUFRJT05TIC8gSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50IGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdPUFRJT05TIC9pbmRleC5odG1sIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrIC9pbmRleC5odG1sCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIGlkZW0gYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ0hFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDogd3d3JwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBy6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlIGJhc+llIHN1ciBsZSBwculmaXhlIGRlIGNvb2tpZSwgZXQgYXJy6nQgZW4KIyBkb3VjZXVyIHV0aWxpc2FudCB1biBzZWNvbmQgcG9ydCAoODEpIGp1c3RlIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgIHNlcnZlciB3ZWIxLW5vcm0gMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrIHBvcnQgODEKICAgICAgIHNlcnZlciB3ZWIyLW5vcm0gMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODEKICAgICAgIHNlcnZlciB3ZWIxLXN0b3AgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrIHBvcnQgODAgYmFja3VwCiAgICAgICBzZXJ2ZXIgd2ViMi1zdG9wIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgwIGJhY2t1cAoKIyBJbnNlcnRpb24gYXV0b21hdGlxdWUgZGUgY29va2llIGRhbnMgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBldCBzdXBwcmVzc2lvbgojIGF1dG9tYXRpcXVlIGRhbnMgbGEgcmVxdep0ZSwgdG91dCBlbiBpbmRpcXVhbnQgYXV4IGNhY2hlcyBkZSBuZSBwYXMgZ2FyZGVyCiMgY2UgY29va2llLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCiMgaWRlbSBhdmVjIHNlcnZldXIgYXBwbGljYXRpZiBkZSBzZWNvdXJzIHN1ciBhdXRyZSBzaXRlLCBldCBzZXJ2ZXVyIGRlIHBhZ2VzIGQnZXJyZXVycwogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cCAxOTIuMTY4LjIuMTo4MCBjb29raWUgc2VydmVyMDMgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgojIHJlbGF5YWdlIFNNVFArVExTIGF2ZWMgdGVzdCBkdSBzZXJ2ZXVyIGV0IHNlcnZldXIgZGUgYmFja3VwCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDo1ODcKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgMjUgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKIyBVdGlsaXNhdGlvbiBkJ3VuIGdyb3VwZSBkZSBzZXJ2ZXVycyBwb3VyIGxlIGJhY2t1cCAobuljZXNzaXRlIGhhcHJveHkgMS4yLjkpCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKICAgICAgICBzZXJ2ZXIgaW5zdDEgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrCiAgICAgICAgc2VydmVyIGluc3QyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgY2hlY2sKICAgICAgICBzZXJ2ZXIgYmFjazEgMTkyLjE2OC4xLjEwOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciBiYWNrMiAxOTIuMTY4LjEuMTE6ODAgY2hlY2sgYmFja3VwCiAgICAgICAgb3B0aW9uIGFsbGJhY2t1cHMgICMgYWxsIGJhY2t1cHMgd2lsbCBiZSB1c2VkCgoKMy4yKSBSZWNvbm5leGlvbiB2ZXJzIHVuIHLpcGFydGl0ZXVyIGVuIGNhcyBkJ+ljaGVjIGRpcmVjdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgc2kgdW4gc2VydmV1ciBk6WZpbmkgcGFyIHVuIGNvb2tpZSBuZSBy6XBvbmQgcGx1cywgbGVzIGNsaWVudHMKc2Vyb250IGTpZmluaXRpdmVtZW50IGFpZ3VpbGzpcyBkZXNzdXMg4CBjYXVzZSBkZSBsZXVyIGNvb2tpZSwgZXQgZGUgY2UgZmFpdCwKZOlmaW5pdGl2ZW1lbnQgcHJpdulzIGRlIHNlcnZpY2UuIExhIHNw6WNpZmljYXRpb24gZHUgcGFyYW3odHJlICdyZWRpc3BhdGNoJwphdXRvcmlzZSBkYW5zIGNlIGNhcyDgIHJlbnZveWVyIGxlcyBjb25uZXhpb25zIOljaG916WVzIHZlcnMgbGUgculwYXJ0aXRldXIKKGV4dGVybmUgb3UgaW50ZXJuZSkgYWZpbiBkJ2Fzc2lnbmVyIHVuIG5vdXZlYXUgc2VydmV1ciDgIGNlcyBjbGllbnRzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKICAgICAgICByZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSByZWZ1cyBkZSBjb25uZXhpb24uCgpQYXIgZOlmYXV0IChldCBkYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgYW506XJpZXVyZXMpLCBsZSBwYXJhbeh0cmUKcmVkaXNwYXRjaCBuZSBzJ2FwcGxpcXVlIHF1J2F1eCDpY2hlY3MgZGUgY29ubmV4aW9uIGF1IHNlcnZldXIuIERlcHVpcyBsYQp2ZXJzaW9uIDEuMS4xNywgaWwgcydhcHBsaXF1ZSBhdXNzaSBhdXggY29ubmV4aW9ucyBkZXN0aW7pZXMg4CBkZXMgc2VydmV1cnMKaWRlbnRpZmnpcyBjb21tZSBob3JzIGQndXNhZ2UgcGFyIGxhIHN1cnZlaWxsYW5jZS4gU2kgbCdvbiBzb3VoYWl0ZSBtYWxncukKdG91dCBxdSd1biBjbGllbnQgZGlzcG9zYW50IGQndW4gY29va2llIGNvcnJlc3BvbmRhbnQg4CB1biBzZXJ2ZXVyIGTpZmVjdHVldXgKdGVudGUgZGUgcyd5IGNvbm5lY3RlciwgaWwgZmF1dCBwculjaXNlciBsJ29wdGlvbiAicGVyc2lzdCIgOgoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gcGVyc2lzdAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKICAgICAgICByZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSBzZXJ2ZXVyIEhTLgoKCjMuMykgQXNzaWduYXRpb24gZGUgcG9pZHMgZGlmZulyZW50cyDgIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyZm9pcyBpbCBhcnJpdmUgZCdham91dGVyIGRlIG5vdXZlYXV4IHNlcnZldXJzIHBvdXIgYWNjcm/udHJlIGxhIGNhcGFjaXTpCmQndW5lIGZlcm1lIGRlIHNlcnZldXIsIG1haXMgbGUgbm91dmVhdSBzZXJ2ZXVyIGVzdCBzb2l0IGJlYXVjb3VwIHBsdXMgcGV0aXQKcXVlIGxlcyBhdXRyZXMgKGRhbnMgbGUgY2FzIGQndW4gYWpvdXQgZCd1cmdlbmNlIGRlIG1hdOlyaWVsIGRlIHLpY3Vw6XJhdGlvbiksCnNvaXQgcGx1cyBwdWlzc2FudCAobG9ycyBkJ3VuIGludmVzdGlzc2VtZW50IGRhbnMgZHUgbWF06XJpZWwgbmV1ZikuIFBvdXIgY2V0dGUKcmFpc29uLCBpbCBzZW1ibGUgcGFyZm9pcyBqdWRpY2lldXggZGUgcG91dm9pciBlbnZveWVyIHBsdXMgZGUgY2xpZW50cyB2ZXJzIGxlcwpwbHVzIGdyb3Mgc2VydmV1cnMuIEp1c3F1J+AgbGEgdmVyc2lvbiAxLjIuMTEsIGlsIOl0YWl0IG7pY2Vzc2FpcmUgZGUgculwbGlxdWVyCnBsdXNpZXVycyBmb2lzIGxlcyBk6WZpbml0aW9ucyBkZXMgc2VydmV1cnMgcG91ciBhdWdtZW50ZXIgbGV1ciBwb2lkcy4gRGVwdWlzCmxhIHZlcnNpb24gMS4yLjEyLCBsJ29wdGlvbiAnd2VpZ2h0JyBlc3QgZGlzcG9uaWJsZS4gSEFQcm94eSBjb25zdHJ1aXQgYWxvcnMKdW5lIHZ1ZSBkZXMgc2VydmV1cnMgZGlzcG9uaWJsZXMgbGEgcGx1cyBob21vZ+huZSBwb3NzaWJsZSBlbiBzZSBiYXNhbnQgc3VyCmxldXIgcG9pZHMgZGUgc29ydGUgcXVlIGxhIGNoYXJnZSBzZSBkaXN0cmlidWUgZGUgbGEgbWFuaehyZSBsYSBwbHVzIGxpc3NlCnBvc3NpYmxlLiBMZSBwb2lkcyBjb21wcmlzIGVudHJlIDEgZXQgMjU2IGRvaXQgcmVmbOl0ZXIgbGEgY2FwYWNpdOkgZCd1bgpzZXJ2ZXVyIHBhciByYXBwb3J0IGF1eCBhdXRyZXMuIERlIGNldHRlIG1hbmnocmUsIHNpIHVuIHNlcnZldXIgZGlzcGFyYWl0LCBsZXMKY2FwYWNpdOlzIHJlc3RhbnRlcyBzb250IHRvdWpvdXJzIHJlc3BlY3TpZXMuCgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQojIGRpc3RyaWJ1dGlvbiDpcXVpdGFibGUgc3VyIDIgb3B0ZXJvbiBhbmQgdW4gYW5jaWVuIHBlbnRpdW0zCgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSB3ZWlnaHQgIDggY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiB3ZWlnaHQgMjAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzZXJ2ZXIwMyB3ZWlnaHQgMjQgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjA0IGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKTm90ZXMgOgotLS0tLS0tCiAgLSBsb3JzcXVlIGxlIHBvaWRzIG4nZXN0IHBhcyBzcOljaWZp6SwgbGEgdmFsZXVyIHBhciBk6WZhdXQgZXN0IOAgMQoKICAtIGxlIHBvaWRzIG4naW1wYWN0ZSBwYXMgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50IChoZWFsdGggY2hlY2tzKSwgZG9uYyBpbAogICAgZXN0IHBsdXMgcHJvcHJlIGQndXRpbGlzZXIgbGVzIHBvaWRzIHF1ZSBkZSBy6XBsaXF1ZXIgbGUgbeptZSBzZXJ2ZXVyCiAgICBwbHVzaWV1cnMgZm9pcy4KCiAgLSBsZXMgcG9pZHMgcydhcHBsaXF1ZW50IOlnYWxlbWVudCBhdXggc2VydmV1cnMgZGUgYmFja3VwIHNpIGwnb3B0aW9uCiAgICAnYWxsYmFja3VwcycgZXN0IHBvc2l0aW9ubullLgoKICAtIGxlIHBvaWRzIHMnYXBwbGlxdWUgYXVzc2kg4CBsYSBy6XBhcnRpdGlvbiBzZWxvbiBsYSBzb3VyY2UKICAgICgnYmFsYW5jZSBzb3VyY2UnKS4KCiAgLSBxdWVscyBxdWUgc29pZW50IGxlcyBwb2lkcywgbGUgcHJlbWllciBzZXJ2ZXVyIHNlcmEgdG91am91cnMgYXNzaWdu6SBlbgogICAgcHJlbWllci4gQ2V0dGUgcuhnbGUgZmFjaWxpdGUgbGVzIGRpYWdub3N0aWNzLgoKICAtIHBvdXIgbGVzIHB1cmlzdGVzLCBsJ2FsZ29yaXRobWUgZGUgY2FsY3VsYXRpb24gZGUgbGEgdnVlIGRlcyBzZXJ2ZXVycyBkb25uZQogICAgdW5lIHByaW9yaXTpIGF1eCBwcmVtaWVycyBzZXJ2ZXVycywgZG9uYyBsYSB2dWUgZXN0IGxhIHBsdXMgdW5pZm9ybWUgc2kgbGVzCiAgICBzZXJ2ZXVycyBzb250IGTpY2xhculzIGRhbnMgbCdvcmRyZSBjcm9pc3NhbnQgZGUgbGV1cnMgcG9pZHMuCgoKNCkgRm9uY3Rpb25uYWxpdOlzIGFkZGl0aW9ubmVsbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRCdhdXRyZXMgZm9uY3Rpb25uYWxpdOlzIGQndXNhZ2UgbW9pbnMgY291cmFudCBzb250IGRpc3BvbmlibGVzLiBJbCBzJ2FnaXQKcHJpbmNpcGFsZW1lbnQgZHUgbW9kZSB0cmFuc3BhcmVudCwgZGUgbGEgam91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMsIGV0IGRlCmxhIHLp6WNyaXR1cmUgZGVzIGVuLXTqdGVzLgoKNC4xKSBGb25jdGlvbm5hbGl06XMgculzZWF1Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0LjEuMSkgRm9uY3Rpb25uZW1lbnQgZW4gbW9kZSB0cmFuc3BhcmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBsZSBtb3QgY2zpICd0cmFuc3BhcmVudCcgcGVybWV0IGQnaW50ZXJjZXB0ZXIgZGVzIHNlc3Npb25zCnJvdXTpZXMg4CB0cmF2ZXJzIGxhIG1hY2hpbmUgaOliZXJnZWFudCBsZSBwcm94eS4gRGFucyBjZSBtb2RlLCBvbiBuZSBwculjaXNlCnBhcyBsJ2FkcmVzc2UgZGUgculwYXJ0aXRpb24gJ2Rpc3BhdGNoJywgY2FyIGNlbGxlLWNpIGVzdCB0aXLpZSBkZSBsJ2FkcmVzc2UKZGVzdGluYXRpb24gZGUgbGEgc2Vzc2lvbiBk6XRvdXJu6WUuIExlIHN5c3TobWUgZG9pdCBwZXJtZXR0cmUgZGUgcmVkaXJpZ2VyIGxlcwpwYXF1ZXRzIHZlcnMgdW4gcHJvY2Vzc3VzIGxvY2FsLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KU2kgbGUgcG9ydCBuJ2VzdCBwYXMgc3DpY2lmaekgc3VyIGxlIHNlcnZldXIsIGMnZXN0IGxlIHBvcnQgYXVxdWVsIHMnZXN0CmFkcmVzc+kgbGUgY2xpZW50IHF1aSBzZXJhIHV0aWxpc+kuIENlbGEgcGVybWV0IGRlIHJlbGF5ZXIgdG91cyBsZXMgcG9ydHMgVENQCmQndW5lIG3qbWUgYWRyZXNzZSBhdmVjIHVuZSBt6m1lIGluc3RhbmNlIGV0IHNhbnMgdXRpbGlzZXIgZGlyZWN0ZW1lbnQgbGUgbW9kZQp0cmFuc3BhcmVudC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yIGNoZWNrIHBvcnQgNjAwMDAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgoKNC4xLjIpIENob2l4IGQndW5lIGFkcmVzc2Ugc291cmNlIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIGlsIGRldmllbnQgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuZSBhZHJlc3NlCklQIHNvdXJjZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIuIEMnZXN0IHV0aWxlIHBvdXIgam9pbmRyZSBkZXMgc2VydmV1cnMgZGUKYmFja3VwIOAgcGFydGlyIGQndW4gTEFOIGRpZmbpcmVudCwgb3UgcG91ciB1dGlsaXNlciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcwpwb3VyIGpvaW5kcmUgbGUgbeptZSBzZXJ2ZXVyLiBDJ2VzdCDpZ2FsZW1lbnQgdXRpbGlzYWJsZSBwb3VyIGZhY2lsaXRlciB1bmUKculwYXJ0aXRpb24gZGUgY2hhcmdlIHNlbG9uIGwnYWRyZXNzZSBJUCBzb3VyY2UgcG91ciBkZXMgY29ubmV4aW9ucyBzb3J0YW50ZXMuCkJpZW4gZW50ZW5kdSwgbGEgbeptZSBhZHJlc3NlIGVzdCB1dGlsaXPpZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGxlcyAyIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xMwogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4xLjEKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjIuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZmFpcmUgdW5lIHLpcGFydGl0aW9uIGQnYWRyZXNzZSBzb3VyY2VzIHBvdXIgam9pbmRyZSBsZSBt6m1lIHByb3h5IOAKICAgICMgdHJhdmVycyBkZXV4IGxpZW5zIFdBTiAKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTEgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4yLjEKICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MiAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjMuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmb3JjZXIgdW5lIGNvbm5leGlvbiBUQ1Ag4CBzJ2F0dGFjaGVyIOAgdW4gcG9ydCBwYXJ0aWN1bGllcgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDoyMDAwCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAoKNC4xLjMpIE1haW50aWVuIGRlIHNlc3Npb24gVENQIChrZWVwLWFsaXZlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuNywgaWwgZGV2aWVudCBwb3NzaWJsZSBkJ2FjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbgpUQ1AgKFRDUCBrZWVwLWFsaXZlKSDgIGxhIGZvaXMgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyLiBDZWxhIHBlcm1ldApkJ2VtcOpjaGVyIGRlcyBzZXNzaW9ucyBsb25ndWVzIGQnZXhwaXJlciBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0CmV4dGVybmVzIHRlbHMgcXVlIGRlcyBmaXJld2FsbHMgb3UgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UuIENlbGEgcGVybWV0CmF1c3NpIGF1IHN5c3TobWUgZGUgZOl0ZWN0ZXIgZXQgdGVybWluZXIgZGVzIHNlc3Npb25zIGZpZ+llcyBsb3JzcXUnYXVjdW4KdGltZS1vdXQgbidhIOl06SBwb3NpdGlvbm7pIChmb3J0ZW1lbnQgZOljb25zZWlsbOkpLiBMZSBwcm94eSBuZSBwZXV0IHBhcwpwb3NpdGlvbm5lciBsJ2ludGVydmFsbGUgZW50cmUgbGVzIGFubm9uY2VzIG5pIGxlIG5vbWJyZSBtYXhpbWFsLCB2ZXVpbGxlegp2b3VzIHLpZulyZXIgYXUgbWFudWVsIGR1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gcG91ciBjZWxhLiBJbCBleGlzdGUgMyBvcHRpb25zCnBvdXIgYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uIFRDUCA6CgoJb3B0aW9uIHRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyCglvcHRpb24gY2xpdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudAoJb3B0aW9uIHNydnRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBzZXJ2ZXVyCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpMJ3VuIGRlcyBwb2ludHMgZm9ydHMgZGUgSEFQcm94eSBlc3QgaW5k6W5pYWJsZW1lbnQgbGEgcHLpY2lzaW9uIGRlIHNlcyBsb2dzLgpJbCBmb3Vybml0IHByb2JhYmxlbWVudCBsZSBwbHVzIGZpbiBuaXZlYXUgZCdpbmZvcm1hdGlvbiBkaXNwb25pYmxlIHBvdXIgdW4KdGVsIG91dGlsLCBjZSBxdWkgZXN0IHRy6HMgaW1wb3J0YW50IHBvdXIgbGVzIGRpYWdub3N0aWNzIGVuIGVudmlyb25uZW1lbnRzCmNvbXBsZXhlcy4gRW4gc3RhbmRhcmQsIGxlcyBpbmZvcm1hdGlvbnMgam91cm5hbGlz6WVzIGluY2x1ZW50IGxlIHBvcnQgY2xpZW50LApsZXMgY2hyb25vbel0cmFnZXMgZGVzIOl0YXRzIFRDUC9IVFRQLCBkZXMg6XRhdHMgZGUgc2Vzc2lvbiBwculjaXMgYXUgbW9tZW50IGRlCmxhIHRlcm1pbmFpc29uIGV0IHNhIGNhdXNlLCBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZXMgZOljaXNpb25zIGQnYWlndWlsbGFnZSBkdQp0cmFmaWMgdmVycyB1biBzZXJ2ZXVyLCBldCBiaWVuIHP7ciBsYSBwb3NzaWJpbGl06SBkZSBjYXB0dXJlciBkZXMgZW4tdOp0ZXMKYXJiaXRyYWlyZXMuCgpEYW5zIGxlIGJ1dCBkJ2Ft6Wxpb3JlciBsYSBy6WFjdGl2aXTpIGRlcyBhZG1pbmlzdHJhdGV1cnMsIGlsIG9mZnJlIHVuZSBncmFuZGUKdHJhbnNwYXJlbmNlIHN1ciBsZXMgcHJvYmzobWVzIHJlbmNvbnRy6XMsIOAgbGEgZm9pcyBpbnRlcm5lcyBldCBleHRlcm5lcywgZXQKaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgbG9ncyB2ZXJzIGRlcyBzZXJ2ZXVycyBkaWZm6XJlbnRzIGVuIG3qbWUgdGVtcHMKYXZlYyBkZXMgbml2ZWF1eCBkZSBmaWx0cmFnZSBkaWZm6XJlbnRzIDoKCiAgLSBsb2dzIGdsb2JhdXggYXUgbml2ZWF1IHByb2Nlc3N1cyAoZXJyZXVycyBzeXN06G1lLCBhcnLqdHMvZOltYXJyYWdlcywgLi4uKQogIC0gZXJyZXVycyBzeXN06G1lIGV0IGludGVybmVzIHBhciBpbnN0YW5jZSAobWFucXVlIGRlIHJlc3NvdXJjZXMsIGJ1Z3MsIC4uLikKICAtIHByb2Js6G1lcyBleHRlcm5lcyBwYXIgaW5zdGFuY2UgKGFycup0cy9yZWxhbmNlIHNlcnZldXJzLCBsaW1pdGVzLCAuLi4pCiAgLSBhY3Rpdml06SBwYXIgaW5zdGFuY2UgKGNvbm5leGlvbnMgY2xpZW50cyksIGF1c3NpIGJpZW4gbG9ycyBkZSBsZXVyCiAgICDpdGFibGlzc2VtZW50IHF1J+AgbGV1ciB0ZXJtaW5haXNvbi4KCkxhIHBvc3NpYmlsaXTpIGRlIGRpc3RyaWJ1ZXIgZGlmZulyZW50cyBuaXZlYXV4IGRlIGxvZ3Mg4CBkaWZm6XJlbnRzIHNlcnZldXJzCnBlcm1ldCDgIHBsdXNpZXVycyDpcXVpcGVzIGRlIHByb2R1Y3Rpb24gZCdpbnTpcmFnaXIgZXQgZGUgY29ycmlnZXIgbGV1cnMKcHJvYmzobWVzIGxlIHBsdXMgdPR0IHBvc3NpYmxlLiBQYXIgZXhlbXBsZSwgbCfpcXVpcGUgc3lzdOhtZSBwZXV0IHN1cnZlaWxsZXIKb2NjYXNpb25uZWxsZW1lbnQgbGVzIGVycmV1cnMgc3lzdOhtZSwgcGVuZGFudCBxdWUgbCfpcXVpcGUgYXBwbGljYXRpb24Kc3VydmVpbGxlIGxlcyBhbGVydGVzIGQnYXJy6nRzL2TpbWFycmFnZXMgZGUgc2VzIHNlcnZldXJzIGVuIHRlbXBzIHLpZWwsIGV0CnF1ZSBsJ+lxdWlwZSBz6WN1cml06SBhbmFseXNlIGwnYWN0aXZpdOkgZW4gZGlmZuly6SBkJ3VuZSBoZXVyZS4KCgo0LjIuMSkgTml2ZWF1eCBkZSBsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIFRDUCBldCBIVFRQIHBldXZlbnQgZG9ubmVyIGxpZXUg4CB1bmUgam91cm5hbGlzYXRpb24gc29tbWFpcmUgb3UKZOl0YWlsbOllIGluZGlxdWFudCwgcG91ciBjaGFxdWUgY29ubmV4aW9uLCBsYSBkYXRlLCBsJ2hldXJlLCBsJ2FkcmVzc2UgSVAKc291cmNlLCBsZSBzZXJ2ZXVyIGRlc3RpbmF0aW9uLCBsYSBkdXLpZSBkZSBsYSBjb25uZXhpb24sIGxlcyB0ZW1wcyBkZSBy6XBvbnNlLApsYSByZXF16nRlIEhUVFAsIGxlIGNvZGUgZGUgcmV0b3VyLCBsYSBxdWFudGl06SBkZSBkb25u6WVzIHRyYW5zbWlzZXMsIGV0IG3qbWUKZGFucyBjZXJ0YWlucyBjYXMsIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwZXJtZXR0YW50IGRlIHN1aXZyZSBsZXMgc2Vzc2lvbnMuClRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbiBzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBTZSBy6WbpcmVyIOAKbGEgc2VjdGlvbiAxLjEgcG91ciBwbHVzIGQnaW5mb3JtYXRpb24gc3VyIGxlcyBjYXTpZ29yaWVzIGRlIGxvZ3MuICBMYSBzeW50YXhlCmVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwXzE+IDxjYXTpZ29yaWVfMT4gW25pdmVhdV9tYXhfMV0KICAgIGxvZyA8YWRyZXNzZV9pcF8yPiA8Y2F06WdvcmllXzI+IFtuaXZlYXVfbWF4XzJdCm91CiAgICBsb2cgZ2xvYmFsCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGEgc3ludGF4ZSBzcOljaWZpcXVlICdsb2cgZ2xvYmFsJyBpbmRpcXVlIHF1ZSBsJ29uIHNvdWhhaXRlIHV0aWxpc2VyIGxlcwpwYXJhbeh0cmVzIGRlIGpvdXJuYWxpc2F0aW9uIGTpZmluaXMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAxIGxvY2FsNAoKNC4yLjIpIEZvcm1hdCBkZXMgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhciBk6WZhdXQsIGxlcyBjb25uZXhpb25zIHNvbnQgam91cm5hbGlz6WVzIGF1IG5pdmVhdSBUQ1AgZOhzIGwn6XRhYmxpc3NlbWVudApkZSBsYSBzZXNzaW9uIGVudHJlIGxlIGNsaWVudCBldCBsZSByZWxhaXMuIEVuIHBy6WNpc2FudCBsJ29wdGlvbiAndGNwbG9nJywKbGEgY29ubmV4aW9uIG5lIHNlcmEgam91cm5hbGlz6WUgcXUnZW4gZmluIGRlIHNlc3Npb24sIGFqb3V0YW50IGRlcyBwculjaXNpb25zCnN1ciBzb24g6XRhdCBsb3JzIGRlIGxhIGTpY29ubmV4aW9uLCBhaW5zaSBxdWUgbGUgdGVtcHMgZGUgY29ubmV4aW9uIGV0IGxhCmR1cullIHRvdGFsZSBkZSBsYSBzZXNzaW9uLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBUQ1AgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gcmVsYWlzLXRjcCAwLjAuMC4wOjgwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIG9wdGlvbiB0Y3Bsb2cKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIC0tIDEvMQogIAogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgRXhlbXBsZQogICAgICAKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgMTI3LjAuMC4xOjM0NTUwCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtdGNwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgdGVtcHNfY29ubmVjdCAnLycgdGVtcHNfdG90YWwgICAgICAgICAwLzUwMDcKICAgICAgICA3ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA4ICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICAgICAgOSAgY29ubnNfaW5zdGFuY2UgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgICAxLzEKClVuZSBhdXRyZSBvcHRpb24sICdodHRwbG9nJywgZm91cm5pdCBwbHVzIGRlIGTpdGFpbHMgc3VyIGxlIHByb3RvY29sZSBIVFRQLApub3RhbW1lbnQgbGEgcmVxdep0ZSBldCBsJ+l0YXQgZGVzIGNvb2tpZXMuIERhbnMgbGVzIGNhcyBv+SB1biBt6WNhbmlzbWUgZGUKc3VydmVpbGxhbmNlIGVmZmVjdHVhbnQgZGVzIGNvbm5leGlvbnMgZXQgZOljb25uZXhpb25zIGZy6XF1ZW50ZXMsIHBvbGx1ZXJhaXQKbGVzIGxvZ3MsIGlsIHN1ZmZpdCBkJ2Fqb3V0ZXIgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgcG91ciBuZSBwbHVzIG9idGVuaXIgdW5lCmxpZ25lIGRlIGxvZyBwb3VyIGxlcyBzZXNzaW9ucyBuJ2F5YW50IHBhcyBkb25u6SBsaWV1IOAgdW4g6WNoYW5nZSBkZSBkb25u6WVzCihyZXF16nRlIG91IHLpcG9uc2UpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBIVFRQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQ3LzcyMyAyMDAgMjQzIC0gLSAtLS0tIDMvMyAiSEVBRCAvIEhUVFAvMS4wIgoKRXhlbXBsZSBwbHVzIGNvbXBsZXQgOgoKICAgIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAyMDIvMjA1IHt3Lm9kcy5vcmd8TW96aWxsYX0ge30gIkhFQUQgLyBIVFRQLzEuMCIgCgogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgRXhlbXBsZQogICAgICAKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgMTAuMC4wLjE6MzQ1NTIKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNjozMV0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy1odHRwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgVHEgJy8nIFRjICcvJyBUciAnLycgVHQgICAgICAgICAgICAgICAzMTgzLy0xLy0xLzExMjE1CiAgICAgICAgNyAgQ29kZV9yZXRvdXJfSFRUUCAgICAgICAgICAgICAgICAgICAgICA1MDMKICAgICAgICA4ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA5ICBjb29raWVzX3JlcXXqdGVfY2FwdHVy6XMgICAgICAgICAgICAgIC0KICAgICAgIDEwICBjb29raWVzX3JlcG9uc2VfY2FwdHVy6XMgICAgICAgICAgICAgIC0KICAgICAgIDExICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgIFNDLS0KICAgICAgIDEyICBjb25uc19pbnN0YW5jZSAnLycgY29ubnNfcHJvY2Vzc3VzICAgIDIwMi8yMDUKICAgICAgIDEzICAneycgZW50ZXRlc19yZXF16nRlX2NhcHR1culzICd9JyAgICAgIHt3Lm9kcy5vcmd8TW96aWxsYX0KICAgICAgIDE0ICAneycgZW50ZXRlc19yZXBvbnNlX2NhcHR1culzICd9JyAgICAgIHt9CiAgICAgICAxNSAgJyInIHJlcXXqdGVfSFRUUCAnIicgICAgICAgICAgICAgICAgICAiSEVBRCAvIEhUVFAvMS4wIgogIApOb3RlIHBvdXIgbGVzIGFuYWx5c2V1cnMgZGUgbG9ncyA6IGwnVVJJIGVzdCBUT1VKT1VSUyBsZSBkZXJuaWVyIGNoYW1wIGRlIGxhIGxpZ25lLCBldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbmNlIHBhciB1biBndWlsbGVtZXQgJyInLgoKTGUgcHJvYmzobWUgZGUgbG9ndWVyIHVuaXF1ZW1lbnQgZW4gZmluIGRlIHNlc3Npb24sIGMnZXN0IHF1J2lsIGVzdCBpbXBvc3NpYmxlCmRlIHNhdm9pciBjZSBxdWkgc2UgcGFzc2UgZHVyYW50IGRlIGdyb3MgdHJhbnNmZXJ0cyBvdSBkZXMgc2Vzc2lvbnMgbG9uZ3Vlcy4KUG91ciBwYWxsaWVyIOAgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2xvZ2FzYXAnIGEg6XTpIGludHJvZHVpdGUgZGFucwpsYSB2ZXJzaW9uIDEuMS4yOCAoMS4yLjEpLiBMb3JzcXUnZWxsZSBlc3QgYWN0aXbpZSwgbGUgcHJveHkgbG9ndWVyYSBsZSBwbHVzCnT0dCBwb3NzaWJsZSwgYydlc3Qg4CBkaXJlIGp1c3RlIGF2YW50IHF1ZSBuZSBk6WJ1dGVudCBsZXMgdHJhbnNmZXJ0cyBkZQpkb25u6WVzLiBDZWxhIHNpZ25pZmllLCBkYW5zIGxlIGNhcyBkdSBUQ1AsIHF1J2lsIGxvZ3VlcmEgdG91am91cnMgbGUgculzdWx0YXQKZGUgbGEgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgZGFucyBsZSBjYXMgSFRUUCwgcXUnaWwgbG9ndWVyYSBlbiBmaW4gZGUKdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgZGUgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBhdXF1ZWwgY2FzIGxlIG5vbWJyZSBkJ29jdGV0cwpyZXBy6XNlbnRlcmEgbGEgdGFpbGxlIGRlcyBlbi106nRlcyByZXRvdXJu6XMgYXUgY2xpZW50LgoKQWZpbiBkJ+l2aXRlciB0b3V0ZSBjb25mdXNpb24gYXZlYyBsZXMgbG9ncyBub3JtYXV4LCBsZSB0ZW1wcyB0b3RhbCBkZQp0cmFuc2ZlcnQgZXQgbGUgbm9tYnJlIGQnb2N0ZXRzIHRyYW5zZuly6XMgc29udCBwculmaXjpcyBkJ3VuIHNpZ25lICcrJwpyYXBwZWxhbnQgcXVlIGxlcyB2YWxldXJzIHLpZWxsZXMgc29udCBjZXJ0YWluZW1lbnQgcGx1cyDpbGV26WVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBsb2dhc2FwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMy8zICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKCgo0LjIuMykgQ2hyb25vbel0cmFnZSBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQb3VyIGTpY2VsZXIgZGVzIHByb2Js6G1lcyBy6XNlYXUsIGxlcyBtZXN1cmVzIGR1IHRlbXBzIOljb3Vs6SBlbnRyZSBjZXJ0YWlucwrpduluZW1lbnRzIHNvbnQgZCd1bmUgdHLocyBncmFuZGUgdXRpbGl06S4gVG91cyBsZXMgdGVtcHMgc29udCBtZXN1culzIGVuCm1pbGxpc2Vjb25kZXMgKG1zKS4gRW4gbW9kZSBIVFRQLCBxdWF0cmUgcG9pbnRzIGRlIG1lc3VyZSBzb250IHJhcHBvcnTpcyBzb3VzCmxhIGZvcm1lIFRxL1RjL1RyL1R0IDoKCiAgLSBUcTogdGVtcHMgdG90YWwgZGUgculjZXB0aW9uIGRlIGxhIHJlcXXqdGUgSFRUUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KICAgIEMnZXN0IGxlIHRlbXBzIHF1aSBzJ2VzdCDpY291bOkgZW50cmUgbGUgbW9tZW50IG/5IGxlIGNsaWVudCBhIOl0YWJsaQogICAgc2EgY29ubmV4aW9uIHZlcnMgbGUgcmVsYWlzLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBhIHJl53UgbGUgZGVybmllcgogICAgZW4tdOp0ZSBIVFRQIHZhbGlkYW50IGxhIGZpbiBkZSBsYSByZXF16nRlLiBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUKICAgIHF1ZSBsYSByZXF16nRlIGNvbXBs6HRlIG4nYSBqYW1haXMg6XTpIHJl53VlLgoKICAtIFRjOiB0ZW1wcyBkJ+l0YWJsaXNzZW1lbnQgZGUgbGEgY29ubmV4aW9uIFRDUCBkdSByZWxhaXMgdmVycyBsZSBzZXJ2ZXVyLgogICAgQydlc3QgbGUgdGVtcHMg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBvdSBsZSByZWxhaXMgYSBpbml0aekgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgbCdhIGFjcXVpdHTpZSwgYydlc3QKICAgIOAgZGlyZSBsZSB0ZW1wcyBlbnRyZSBsJ2Vudm9pIGR1IHBhcXVldCBUQ1AgU1lOIGxhIHLpY2VwdGlvbiBkdSBTWU4vQUNLLgogICAgVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlIHF1ZSBsYSBjb25uZXhpb24gbidhIGphbWFpcyBwdSDqdHJlIOl0YWJsaWUKICAgIHZlcnMgbGUgc2VydmV1ci4KCiAgLSBUcjogdGVtcHMgZGUgculwb25zZSBkdSBzZXJ2ZXVyLiBDJ2VzdCBsZSB0ZW1wcyBxdWUgbGUgc2VydmV1ciBhIG1pcyBwb3VyCiAgICByZW52b3llciBsYSB0b3RhbGl06SBkZXMgZW4tdOp0ZXMgSFRUUCDgIHBhcnRpciBkdSBtb21lbnQgb/kgaWwgYSBhY3F1aXR06QogICAgbGEgY29ubmV4aW9uLiBDYSByZXBy6XNlbnRlIGV4YWN0ZW1lbnQgbGUgdGVtcHMgZGUgdHJhaXRlbWVudCBkZSBsYQogICAgdHJhbnNhY3Rpb24gc2FucyBsZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMgYXNzb2Np6WVzLiBVbmUgdmFsZXVyICctMScKICAgIGluZGlxdWUgcXVlIGxlIHNlcnZldXIgbidhIHBhcyBlbnZveekgbGEgdG90YWxpdOkgZGUgbCdlbi106nRlIEhUVFAuCgogIC0gVHQ6IGR1cullIGRlIHZpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbiwgZW50cmUgbGUgbW9tZW50IG/5IGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiBkdSBjbGllbnQgYSDpdOkgYWNxdWl0dOllIGV0IGxlIG1vbWVudCBv+SBsYSBjb25uZXhpb24gYSDpdOkKICAgIHJlZmVybellIGF1eCBkZXV4IGV4dHLpbWl06XMgKGNsaWVudCBldCBzZXJ2ZXVyKS4gTGEgc2lnbmlmaWNhdGlvbiBjaGFuZ2UKICAgIHVuIHBldSBzaSBsJ29wdGlvbiAnbG9nYXNhcCcgZXN0IHBy6XNlbnRlLiBEYW5zIGNlIGNhcywgbGUgdGVtcHMgY29ycmVzcG9uZAogICAgdW5pcXVlbWVudCDgIChUcSArIFRjICsgVHIpLCBldCBzZSB0cm91dmUgcHLpZml46SBkJ3VuIHNpZ25lICcrJy4gT24gcGV1dAogICAgZG9uYyBk6WR1aXJlIFRkLCBsZSB0ZW1wcyBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMsIGVuIGV4Y2x1YW50IGxlcyBhdXRyZXMKICAgIHRlbXBzIDoKCiAgICAgICAgVGQgPSBUdCAtIChUcSArIFRjICsgVHIpCgogICAgTGVzIHRlbXBzIHJhcHBvcnTpcyDgICctMScgc29udCBzaW1wbGVtZW50IOAg6WxpbWluZXIgZGUgY2V0dGUg6XF1YXRpb24uCgpFbiBtb2RlIFRDUCAoJ29wdGlvbiB0Y3Bsb2cnKSwgc2V1bHMgbGVzIGRldXggaW5kaWNhdGV1cnMgVGMgZXQgVHQgc29udApyYXBwb3J06XMuCgpDZXMgdGVtcHMgZm91cm5pc3NlbnQgZGUgcHLpY2lldXggcmVuc2VpZ25lbWVudCBzdXIgZGVzIGNhdXNlcyBwcm9iYWJsZXMgZGUKcHJvYmzobWVzLiBEdSBmYWl0IHF1ZSBsZSBwcm90b2NvbGUgVENQIGTpZmluaXNzZSBkZXMgdGVtcHMgZGUgcmV0cmFuc21pc3Npb24KZGUgMyBzZWNvbmRlcywgcHVpcyA2LCAxMiwgZXRjLi4uLCBsJ29ic2VydmF0aW9uIGRlIHRlbXBzIHByb2NoZXMgZGUgbXVsdGlwbGVzCmRlIDMgc2Vjb25kZXMgaW5kaXF1ZSBwcmF0aXF1ZW1lbnQgdG91am91cnMgZGVzIHBlcnRlcyBkZSBwYXF1ZXRzIGxp6XMg4CB1bgpwcm9ibOhtZSBy6XNlYXUgKGPiYmxlIG91IG7pZ29jaWF0aW9uKS4gRGUgcGx1cywgc2kgPFR0PiBlc3QgcHJvY2hlIGQndW5lCnZhbGV1ciBkZSB0aW1lLW91dCBkYW5zIGxhIGNvbmZpZ3VyYXRpb24sIGMnZXN0IHNvdXZlbnQgcXUndW5lIHNlc3Npb24gYSDpdOkKYWJhbmRvbm7pZSBzdXIgZXhwaXJhdGlvbiBkJ3VuIHRpbWUtb3V0LgoKQ2FzIGxlcyBwbHVzIGZy6XF1ZW50cyA6CgogIC0gU2kgVHEgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIGNsaWVudCBldCBsZSByZWxhaXMuCiAgLSBTaSBUYyBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIgZHVyYW50IGxhIHBoYXNlIGRlIGNvbm5leGlvbi4gQ2V0IGluZGljYXRldXIKICAgIGRldnJhaXQgbm9ybWFsZW1lbnQgdG91am91cnMg6nRyZSB0cuhzIGJhcyAobW9pbnMgZGUgcXVlbHF1ZXMgZGl6YWluZXMpLgogIC0gU2kgVHIgZXN0IHByZXNxdWUgdG91am91cnMgaW5m6XJpZXVyIOAgMzAwMCwgZXQgcXVlIGNlcnRhaW5lcyB2YWxldXJzCiAgICBzZW1ibGVudCBwcm9jaGVzIGRlIGxhIHZhbGV1ciBtb3llbm5lIG1ham9y6WUgZGUgMzAwMCwgaWwgeSBhIHBldXQt6nRyZQogICAgZGUgcGVydGVzIGVudHJlIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyLgogIC0gU2kgVHQgZXN0IGzpZ+hyZW1lbnQgc3Vw6XJpZXVyIGF1IHRpbWUtb3V0LCBjJ2VzdCBzb3V2ZW50IHBhcmNlIHF1ZSBsZQogICAgY2xpZW50IGV0IGxlIHNlcnZldXIgdXRpbGlzZW50IGR1IGtlZXAtYWxpdmUgSFRUUCBlbnRyZSBldXggZXQgcXVlIGxhCiAgICBzZXNzaW9uIGVzdCBtYWludGVudWUgYXBy6HMgbGEgZmluIGRlcyDpY2hhbmdlcy4gVm9pciBwbHVzIGxvaW4gcG91cgogICAgc2F2b2lyIGNvbW1lbnQgZOlzYWN0aXZlciBsZSBrZWVwLWFsaXZlIEhUVFAuCgpBdXRyZXMgY2FzICgneHgnIHJlcHLpc2VudGFudCB1bmUgdmFsZXVyIHF1ZWxjb25xdWUg4CBpZ25vcmVyKSA6CiAgICAtMS94eC94eC9UdCA6IGxlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSBvdQogICAgICAgICAgICAgICAgICBhIHJlZmVybekgc2EgY29ubmV4aW9uIHNhbnMgY29tcGzpdGVyIGxhIHJlcXXqdGUuCiAgICBUcS8tMS94eC9UdCA6IGxhIGNvbm5leGlvbiBuJ2EgcGFzIHB1IHMn6XRhYmxpciB2ZXJzIGxlIHNlcnZldXIgKHJlZnVzIG91CiAgICAgICAgICAgICAgICAgIHRpbWUtb3V0IGF1IGJvdXQgZGUgVHQtVHEgbXMpLgogICAgVHEvVGMvLTEvVHQgOiBsZSBzZXJ2ZXVyIGEgYWNjZXB06SBsYSBjb25uZXhpb24gbWFpcyBuJ2EgcGFzIHLpcG9uZHUgZGFucwogICAgICAgICAgICAgICAgICBsZXMgdGVtcHMgb3UgYmllbiBhIHJlZmVybekgc2EgY29ubmV4aW9uIHRyb3AgdPR0LCBhdSBib3V0CiAgICAgICAgICAgICAgICAgIGRlIFR0LShUcStUYykgbXMuCiAgICAgCjQuMi40KSBDb25kaXRpb25zIGRlIGTpY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBsb2dzIFRDUCBldCBIVFRQIGZvdXJuaXNzZW50IHVuIGluZGljYXRldXIgZGUgY29tcGzpdHVkZSBkZSBsYSBzZXNzaW9uIGRhbnMKbGUgY2hhbXAgJ2V0YXRfdGVybWluYWlzb24nLCBqdXN0ZSBhdmFudCBsZSBub21icmUgZGUgY29ubmV4aW9ucyBhY3RpdmVzLiBDJ2VzdAp1biBjaGFtcCBsb25nIGRlIDIgY2FyYWN06HJlcyBlbiBUQ1AgZXQgZGUgNCBjYXJhY3TocmVzIGVuIEhUVFAsIGNoYWN1biBheWFudAp1bmUgc2lnbmlmaWNhdGlvbiBwculjaXNlIDoKCiAgLSBzdXIgbGUgcHJlbWllciBjYXJhY3TocmUsIHVuIGNvZGUgcHLpY2lzYW50IGxlIHByZW1pZXIg6XbpbmVtZW50IHF1aSBhIGNhdXPpCiAgICBsYSB0ZXJtaW5haXNvbiBkZSBsYSBzZXNzaW9uIDoKCiAgICAgICAgQyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICBTIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdQogICAgICAgICAgICByZWZ1cyBleHBsaWNpdGUgZGUgY29ubmV4aW9uIGRlIGxhIHBhcnQgZGUgY2UgZGVybmllci4KCiAgICAgICAgUCA6IHRlcm1pbmFpc29uIHBy6W1hdHVy6WUgZGVzIHNlc3Npb25zIHBhciBsZSBwcm94eSwgcG91ciBjYXVzZQogICAgICAgICAgICBkJ2ltcG9zaXRpb24gZCd1bmUgbGltaXRlIHN1ciBsZSBub21icmUgZGUgY29ubmV4aW9ucywgcG91ciBjYXVzZQogICAgICAgICAgICBkZSBjb25maWd1cmF0aW9uIChleDogZmlsdHJlIGQnVVJMKSwgb3UgcGFyY2UgcXUndW4gY29udHL0bGUgZGUKICAgICAgICAgICAgc+ljdXJpdOkgYSBk6XRlY3TpIGV0IGJsb3F16SB1bmUgYW5vbWFsaWUgZGFucyBsYSBy6XBvbnNlIGR1CiAgICAgICAgICAgIHNlcnZldXIgcXVpIGF1cmFpdCBwdSBjYXVzZXIgdW5lIGZ1aXRlIGQnaW5mb3JtYXRpb25zIChwYXIgZXhlbXBsZSwKICAgICAgICAgICAgdW4gY29va2llIGNhY2hhYmxlKS4KCiAgICAgICAgUiA6IHVuZSByZXNzb3VyY2Ugc3VyIGxlIHByb3h5IGEg6XTpIOlwdWlz6WUgKG3pbW9pcmUsIHNvY2tldHMsIHBvcnRzCiAgICAgICAgICAgIHNvdXJjZSwgLi4uKS4gR+lu6XJhbGVtZW50LCBjZWxhIGFycml2ZSBhdSBjb3VycyBkZSBsJ+l0YWJsaXNzZW1lbnQKICAgICAgICAgICAgZCd1bmUgY29ubmV4aW9uLCBldCBsZXMgbG9ncyBzeXN06G1lIGRvaXZlbnQgY29udGVuaXIgdW5lIGNvcGllIGRlCiAgICAgICAgICAgIGwn6XJyZXVyIHBy6WNpc2UuCgogICAgICAgIEkgOiB1bmUgZXJyZXVyIGludGVybmUgYSDpdOkgaWRlbnRpZmnpZSBwYXIgbGUgcHJveHkg4CBsYSBzdWl0ZSBkJ3VuCiAgICAgICAgICAgIGF1dG8tY29udHL0bGUuIENlY2kgbmUgZG9pdCBKQU1BSVMgYXJyaXZlciwgZXQgdm91cyDqdGVzIGVuY291cmFn6XMKICAgICAgICAgICAg4CByZW1vbnRlciBuJ2ltcG9ydGUgcXVlbCBsb2cgY29udGVuYW50IGNlY2kgY2FyIGlsIHMnYWdpcmEgdW4gYnVnLgoKICAgICAgICBjIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgY2xpZW50IGEgZXhwaXLpIChjbGl0aW1lb3V0KS4KCiAgICAgICAgcyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IHNlcnZldXIgYSBleHBpcukgKHNydnRpbWVvdXQgZXQgY29udGltZW91dCkKCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUgZGUgc2Vzc2lvbi4KCiAgLSBzdXIgbGUgc2Vjb25kIGNhcmFjdOhyZSwgbCfpdGF0IGQnYXZhbmNlbWVudCBkZSBsYSBzZXNzaW9uIFRDUC9IVFRQIGxvcnMgZGUKICAgIGxhIGZlcm1ldHVyZSA6CgogICAgICAgIFIgOiBhdHRlbnRlIGQndW5lIFJFUVVFVEUgSFRUUCBjb21wbOh0ZSBkZSBsYSBwYXJ0IGR1IGNsaWVudC4gUmllbiBuJ2EKICAgICAgICAgICAg6XTpIHRyYW5zbWlzIGF1IHNlcnZldXIuCgogICAgICAgIEMgOiBhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBDT05ORVhJT04gdmVycyBsZSBzZXJ2ZXVyLiBMZQogICAgICAgICAgICBzZXJ2ZXVyIHBldXQgYXUgcGx1cyBhdm9pciB2dSBsYSB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLCBtYWlzCiAgICAgICAgICAgIGF1Y3VuZSBkb25u6WUgbidhIOl06SDpY2hhbmfpZS4KCiAgICAgICAgSCA6IGF0dGVudGUsIHLpY2VwdGlvbiBvdSB0cmFpdGVtZW50IGRlcyBlbi106nRlcyBIVFRQICgiSEVBREVSUyIpLgoKICAgICAgICBEIDogdHJhbnNmZXJ0IGRlcyBET05ORUVTIGR1IHNlcnZldXIgdmVycyBsZSBjbGllbnQuCgogICAgICAgIEwgOiB0cmFuc2ZlcnQgZGVzIGRlcm5p6HJlcyAoIkxBU1QiKSBkb25u6WVzIGR1IHByb3h5IHZlcnMgbGUgY2xpZW50LAogICAgICAgICAgICBhbG9ycyBxdWUgbGUgc2VydmV1ciBhIGTpauAgZmluaS4KCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUsIGFwcuhzIGZpbiBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuCgogIC0gbGUgdHJvaXNp6G1lIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWxsZSBpZGVudGlmaWNhdGlvbiBkJ3VuIGNvb2tpZSBkZQogICAgcGVyc2lzdGVuY2UgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGVuY2UgbidhIOl06SBwculzZW506S4gQydlc3QgZ+lu6XJhbGVtZW50IGxlCiAgICAgICAgICAgIGNhcyBzdXIgbGVzIE5PVVZFTExFUyBjb25uZXhpb25zIGNsaWVudHMuCgogICAgICAgIEkgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgSU5WQUxJREUgbmUgY29ycmVzcG9uZGFudCDgIGF1Y3VuCiAgICAgICAgICAgIHNlcnZldXIgY29ubnUuIENlY2kgcGV1dCDqdHJlIGT7IOAgdW4gY2hhbmdlbWVudCBkZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgIHLpY2VudCwg4CBkZXMgbelsYW5nZXMgZGUgbm9tcyBkZSBjb29raWVzIGVudHJlIHNpdGVzIEhUVFAvSFRUUFMsCiAgICAgICAgICAgIG91IOAgdW5lIGF0dGFxdWUuCgogICAgICAgIEQgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgaG9ycwogICAgICAgICAgICBkJ3VzYWdlICgiRE9XTiIpLiBTdWl2YW50IGwnb3B0aW9uICdwZXJzaXN0JywgaWwgYSDpdOkgcmVudm956SB2ZXJzCiAgICAgICAgICAgIHVuIGF1dHJlIHNlcnZldXIgb3UgYSB0b3V0IGRlIG3qbWUgdGVudOkgZGUgc2UgY29ubmVjdGVyIHN1ciBjZWx1aQogICAgICAgICAgICBjb3JyZXNwb25kYW50IGF1IGNvb2tpZS4KCiAgICAgICAgViA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBWQUxJREUgZXQgYSBwdSBzZSBjb25uZWN0ZXIgYXUKICAgICAgICAgICAgc2VydmV1ciBjb3JyZXNwb25kYW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlIChwYXMgZGUgY29va2llIHBvc2l0aW9ubukgZGFucyBsYSBjb25maWd1cmF0aW9uKS4KCiAgLSBsZSBkZXJuaWVyIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWwgdHJhaXRlbWVudCBlZmZlY3R16SBzdXIgdW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSByZXRyb3VybukgcGFyIGxlIHNlcnZldXIgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGF1Y3VuCiAgICAgICAgICAgIG4nYSDpdOkgaW5z6XLpLgoKICAgICAgICBJIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RhbmNlIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLCBldCBsZQogICAgICAgICAgICBwcm94eSBlbiBhIElOU0VSRSB1bi4KCiAgICAgICAgUCA6IHVuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIgZXQgdHJhbnNtaXMKICAgICAgICAgICAgdGVsIHF1ZWwgKCJQQVNTSUYiKS4KCiAgICAgICAgUiA6IGxlIGNvb2tpZSByZXRvdXJu6SBwYXIgbGUgc2VydmV1ciBhIOl06SBSRUVDUklUIHBhciBsZSBwcm94eS4KCiAgICAgICAgRCA6IGxlIGNvb2tpZSBwculzZW506SBwYXIgbGUgc2VydmV1ciBhIOl06SBERVRSVUlUIHBhciBsZSBwcm94eSBwb3VyCiAgICAgICAgICAgIG5lIHBhcyDqdHJlIHJldG91cm7pIGF1IGNsaWVudC4KCiAgICAgICAgLSA6IG5vbiBhcHBsaXF1YWJsZQoKCkxhIGNvbWJpbmFpc29uIGRlcyBkZXV4IHByZW1pZXJzIGluZGljYXRldXJzIGZvdXJuaXQgdW5lIGdyYW5kZSBxdWFudGl0aekKZCdpbmZvcm1hdGlvbnMgc3VyIGNlIHF1aSBzZSBwYXNzYWl0IGxvcnNxdWUgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZS4gQ2VsYQpwZXV0IG5vdGFtbWVudCBhaWRlciDgIGTpdGVjdGVyIHVuZSBzYXR1cmF0aW9uIGRlIHNlcnZldXIsIGRlcyB0cm91YmxlcyBy6XNlYXUsCmRlcyDpcHVpc2VtZW50cyBkZSByZXNzb3VyY2VzIHN5c3TobWUgbG9jYWxlcywgZGVzIGF0dGFxdWVzLCBldGMuLi4KCkxlcyBjb21iaW5haXNvbnMgZCdpbmRpY2F0ZXVycyBsZXMgcGx1cyBmculxdWVudGVzIHNvbnQg6W51bely6WVzIGljaS4KCiAgIEluZGljICBSYWlzb24KICAgICAgQ1IgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhdmFudCBkJ+ltZXR0cmUgdW5lIHJlcXXqdGUgY29tcGzodGUuIElsIGVzdAogICAgICAgICAgdHLocyBwcm9iYWJsZSBxdWUgbGEgcmVxdep0ZSBhaXQg6XTpIHRhcOllIOAgbGEgbWFpbiBkYW5zIHVuIGNsaWVudAogICAgICAgICAgdGVsbmV0IGV0IGFib3J06WUgdHJvcCB09HQuCgogICAgICBjUiAgTGUgdGVtcHMgaW1wYXJ0aSBhdSBjbGllbnQgYSBleHBpcukgYXZhbnQgculjZXB0aW9uIGQndW5lIHJlcXXqdGUKICAgICAgICAgIGNvbXBs6HRlLiBDZWNpIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpCiAgICAgICAgICBzdXIgbGUgY2xpZW50IHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzCiAgICAgICAgICB0cmFuc3BvcnRlciBkZXMgcGFxdWV0cyBlbnRpZXJzLCBvdSBwYXIgZGVzIGNsaWVudHMgcXVpIOludm9pZW50IGRlcwogICAgICAgICAgcmVxdep0ZXMg4CBsYSBtYWluIGV0IG5lIHRhcGVudCBwYXMgYXNzZXogdml0ZS4KCiAgICAgIFNDICBMZSBzZXJ2ZXVyIGEgZXhwbGljaXRlbWVudCByZWZ1c+kgbGEgY29ubmV4aW9uIChsZSBwcm94eSBhIHJl53UgdW4KICAgICAgICAgIFJTVCBUQ1Agb3UgdW4gbWVzc2FnZSBJQ01QIGVuIHJldG91cikuIERhbnMgY2VydGFpbnMgY2FzLCBjZWxhIHBldXQKICAgICAgICAgIOp0cmUgbGEgY291Y2hlIHLpc2VhdSBxdWkgaW5kaXF1ZSBhdSBwcm94eSBxdWUgbGUgc2VydmV1ciBuJ2VzdCBwYXMKICAgICAgICAgIGpvaWduYWJsZSAocC5leDogcGFzIGRlIHJvdXRlLCBwYXMgZGUgculwb25zZSBBUlAgZW4gbG9jYWwsIGV0Yy4uLikKCiAgICAgIHNDICBMYSBjb25uZXhpb24gYXUgc2VydmV1ciBuJ2EgcGFzIHB1IHMn6XRhYmxpciBkYW5zIGxlIHRlbXBzIGltcGFydGkuCgogICAgICBQQyAgTGUgcHJveHkgYSByZWZ1c+kgZCfpdGFibGlyIHVuZSBjb25uZXhpb24gYXUgc2VydmV1ciBwYXJjZSBxdWUgbGUKICAgICAgICAgIG5vbWJyZSBkZSBjb25uZXhpb25zIGEgYXR0ZWludCBsYSBsaW1pdGUgJ21heGNvbm4nIChnbG9iYWwgb3UgZGUKICAgICAgICAgIGwnaW5zdGFuY2UpLiBMZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGwnaW5zdGFuY2UgcG91cnJhaXQg6nRyZQogICAgICAgICAgYXVnbWVudOksIHRvdXQgY29tbWUgbGUgcGFyYW3odHJlICdtYXhjb25uJyBnbG9iYWwuCgogICAgICBSQyAgVW5lIHJlc3NvdXJjZSBsb2NhbGUgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMgc291cmNlKSwKICAgICAgICAgIGVtcOpjaGFudCBsYSBjb25uZXhpb24gYXUgc2VydmV1ciBkZSBzJ+l0YWJsaXIuIExlcyBsb2dzIGQnZXJyZXVycwogICAgICAgICAgZGlyb250IHBy6WNpc+ltZW50IGNlIHF1aSBtYW5xdWFpdC4gRGFucyB0b3VzIGxlcyBjYXMsIGxlIHNldWwgcmVt6GRlCiAgICAgICAgICBjb25zaXN0ZSDgIGFmZmluZXIgbGUgcGFyYW3pdHJhZ2Ugc3lzdOhtZS4KCiAgICAgIGNIICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdSBjb3VycyBkJ3VuZSByZXF16nRlIFBPU1QuIENlY2kKICAgICAgICAgIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpIHN1ciBsZSBjbGllbnQKICAgICAgICAgIHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzIHRyYW5zcG9ydGVyIGRlcwogICAgICAgICAgcGFxdWV0cyBlbnRpZXJzLgoKICAgICAgU0ggIExlIHNlcnZldXIgYSBhYm9ydOkgYnJ1dGFsZW1lbnQgYWxvcnMgcXUnaWwgZGV2YWl0IGVudm95ZXIgc2VzCiAgICAgICAgICBlbi106nRlcy4gRW4gZ+lu6XJhbCwgY2VsYSBpbmRpcXVlIHF1J2lsIGEgY3Jhc2jpLgoKICAgICAgc0ggIExlIHNlcnZldXIgbidhIHBhcyBwdSBy6XBvbmRyZSBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSwgY2UgcXVpIG1vbnRyZQogICAgICAgICAgZGVzIHRyYW5zYWN0aW9ucyB0cm9wIGxvbmd1ZXMsIHByb2JhYmxlbWVudCBjYXVz6WVzIHBhciB1biBiYWNrLWVuZAogICAgICAgICAgc2F0dXLpLiBMZXMgc2V1bGVzIHNvbHV0aW9ucyBzb250IGRlIGNvcnJpZ2VyIGxlIHByb2Js6G1lIHN1cgogICAgICAgICAgbCdhcHBsaWNhdGlvbiwgZCdhY2Nyb+50cmUgbGUgcGFyYW3odHJlICdzcnZ0aW1lb3V0JyBwb3VyIHN1cHBvcnRlcgogICAgICAgICAgZGVzIGF0dGVudGVzIHBsdXMgbG9uZ3VlcyBhdSByaXNxdWUgcXVlIGxlcyBjbGllbnRzIGFiYW5kb25uZW50IOAKICAgICAgICAgIGxldXIgdG91ciwgb3UgYmllbiBkJ2Fqb3V0ZXIgZGVzIHNlcnZldXJzLgogICAgICAKICAgICAgUFIgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCwgc29pdCDgIGNhdXNlIGQndW5lIHN5bnRheGUKICAgICAgICAgIEhUVFAgaW52YWxpZGUsIGF1cXVlbCBjYXMgaWwgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDAgYXUgY2xpZW50LAogICAgICAgICAgc29pdCDgIGNhdXNlIGQndW5lIHJlcXXqdGUgdmFsaWRhbnQgdW4gZmlsdHJlIGQnaW50ZXJkaWN0aW9uLCBhdXF1ZWwKICAgICAgICAgIGNhcyBsZSBwcm94eSBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMy4KCiAgICAgIFBIICBMZSBwcm94eSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1IHNlcnZldXIgcGFyY2UgcXUnZWxsZSDpdGFpdCBpbnZhbGlkZSwKICAgICAgICAgIGluY29tcGzodGUsIGRhbmdlcmV1c2UgKCdjYWNoZSBjb250cm9sJyksIG91IHBhcmNlIHF1J2VsbGUgdmFsaWRhaXQKICAgICAgICAgIHVuIGZpbHRyZSBkZSBz6WN1cml06S4gRGFucyB0b3VzIGxlcyBjYXMsIHVuZSBlcnJldXIgSFRUUCA1MDIgZXN0CiAgICAgICAgICByZW52b3npZSBhdSBjbGllbnQuCgogICAgICBjRCAgTGUgY2xpZW50IG4nYSBwYXMgbHUgZGUgZG9ubullcyBwZW5kYW50IGxlIHRlbXBzIHF1aSBsdWkg6XRhaXQKICAgICAgICAgIGltcGFydGkuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyBwcm9ibOhtZXMgculzZWF1IGP0dOkgY2xpZW50LgoKICAgICAgQ0QgIExlIGNsaWVudCBhIGFib3J06SBzYSBjb25uZWN0aW9uIGRlIG1hbmnocmUgaW5hdHRlbmR1ZSBwZW5kYW50IGxlCiAgICAgICAgICB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuIENlY2kgZXN0IHByb3ZvcXXpIHNvaXQgcGFyIGxlIGNyYXNoIGQndW4KICAgICAgICAgIG5hdmlnYXRldXIsIG91IHBhciB1bmUgc2Vzc2lvbiBlbiBIVFRQIGtlZXAtYWxpdmUgZW50cmUgbGUgc2VydmV1cgogICAgICAgICAgZXQgbGUgY2xpZW50IHRlcm1pbullIGVuIHByZW1pZXIgcGFyIGxlIGNsaWVudC4KCiAgICAgIHNEICBMZSBzZXJ2ZXVyIG4nYSByaWVuIGZhaXQgZHVyYW50IGxlIHRlbXBzIGltcGFydGkgcGFyIGxlIHBhcmFt6HRyZQogICAgICAgICAgJ3NydnRpbWVvdXQnLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgdGltZW91dHMgdHJvcCBjb3VydHMKICAgICAgICAgIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQgKGZpcmV3YWxscywgculwYXJ0aXRldXJzIGRlIGNoYXJnZSkKICAgICAgICAgIHNpdHXpcyBlbnRyZSBsZSBwcm94eSBldCBsZSBzZXJ2ZXVyLgoKNC4yLjUpIENhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjksIGxlcyBjYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcyBuZSBzb250IHBsdXMgZW52b3npcwp0ZWxzIHF1ZWxzIGRhbnMgbGVzIGxpZ25lcyBkZSBsb2dzLCBtYWlzIGluc2NyaXRzIHNvdXMgbGEgZm9ybWUgZGUgZGV1eCBjaGlmZnJlcwpoZXhhZOljaW1hdXgsIHBy6WZpeOlzIGR1IGNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJy4gTGVzIHNldWxzIGNhcmFjdOhyZXMKZG9y6W5hdmFudCBsb2d16XMgdGVscyBxdWVscyBzb250IGNvbXByaXMgZW50cmUgMzIgZXQgMTI2LiBCaWVuIOl2aWRlbW1lbnQsIGxlCmNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJyBlc3QgbHVpLW3qbWUgZW5jb2TpIGFmaW4gZGUgbGV2ZXIgbCdhbWJpZ3VpdOkuIElsIGVuCmVzdCBkZSBt6m1lIHBvdXIgbGUgY2FyYWN06HJlICciJywgYWluc2kgcXVlIGxlcyBjYXJhY3TocmVzICd7JywgJ3wnIGV0ICd9JyBwb3VyCmxlcyBlbi106nRlcy4KCjQuMi42KSBDYXB0dXJlIGQnZW4tdOp0ZXMgSFRUUCBldCBkZSBjb29raWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHZlcnNpb24gMS4xLjIzIGEgYXBwb3J06SBsYSBjYXB0dXJlIGRlcyBjb29raWVzLCBldCBsYSB2ZXJzaW9uIDEuMS4yOSBsYQpjYXB0dXJlIGQnZW4tdOp0ZXMuIFRvdXQgY2VjaSBlc3QgZWZmZWN0dekgZW4gdXRpbGlzYW50IGxlIG1vdC1jbOkgJ2NhcHR1cmUnLgoKTGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMgZmFjaWxpdGVudCBsZSBzdWl2aSBldCBsYSByZWNvbnN0aXR1dGlvbiBkJ3VuZSBzZXNzaW9uCnV0aWxpc2F0ZXVyLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSBjb29raWUgPHBy6WZpeGVfY29va2llPiBsZW4gPGxvbmd1ZXVyX2NhcHR1cmU+CgpDZWNpIGFjdGl2ZXJhIGxhIGNhcHR1cmUgZGUgY29va2llcyDgIGxhIGZvaXMgZGFucyBsZXMgcmVxdep0ZXMgZXQgZGFucyBsZXMKculwb25zZXMuIERlIGNldHRlIG1hbmnocmUsIGlsIGRldmllbnQgZmFjaWxlIGRlIGTpdGVjdGVyIGxvcnNxdSd1biB1dGlsaXNhdGV1cgpiYXNjdWxlIHN1ciB1bmUgbm91dmVsbGUgc2Vzc2lvbiBwYXIgZXhlbXBsZSwgY2FyIGxlIHNlcnZldXIgbHVpIHLpYXNzaWduZXJhIHVuCm5vdXZlYXUgY29va2llLgoKTGUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2VyYSBwYXIgPHBy6WZpeGVfY29va2llPiBzZXJhIGNhcHR1cuksIGV0CnRyYW5zbWlzIHNvdXMgbGEgZm9ybWUgIk5PTT12YWxldXIiLCBzYW5zIHRvdXRlZm9pcywgZXhj6WRlciA8bG9uZ3VldXJfY2FwdHVyZT4KY2FyYWN06HJlcyAoNjQgYXUgbWF4aW11bSkuIExvcnNxdWUgbGUgbm9tIGR1IGNvb2tpZSBlc3QgZml4ZSBldCBjb25udSwgb24gcGV1dApsZSBzdWZmaXhlciBkdSBzaWduZSAiPSIgcG91ciBzJ2Fzc3VyZXIgcXUnYXVjdW4gYXV0cmUgY29va2llIG5lIHByZW5kcmEgc2EKcGxhY2UgZGFucyBsZXMgbG9ncy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlIHBhciAiQVNQU0VTU0lPTiIKICAgIGNhcHR1cmUgY29va2llIEFTUFNFU1NJT04gbGVuIDMyCgogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGVzdCBleGFjdGVtZW50ICJ2Z252aXNpdG9yIgogICAgY2FwdHVyZSBjb29raWUgdmdudmlzaXRvcj0gbGVuIDMyCgpEYW5zIGxlcyBsb2dzLCBsZSBjaGFtcCBwculj6WRhbnQgbCdpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgY29udGllbnQgbGUgY29va2llCnBvc2l0aW9ubukgcGFyIGxlIHNlcnZldXIsIHBy6WPpZOkgZHUgY29va2llIHBvc2l0aW9ubukgcGFyIGxlIGNsaWVudC4gQ2hhY3VuCmRlIGNlcyBjaGFtcHMgZXN0IHJlbXBsYWPpIHBhciBsZSBzaWduZSAiLSIgbG9yc3F1J2F1Y3VuIGNvb2tpZSBuJ2VzdCBmb3VybmkKcGFyIGxlIGNsaWVudCBvdSBsZSBzZXJ2ZXVyLCBvdSBsb3JzcXVlIGwnb3B0aW9uIGVzdCBk6XNhY3RpdullLi4KCkxlcyBjYXB0dXJlcyBkJ2VuLXTqdGVzIG9udCB1biBy9GxlIGNvbXBs6HRlbWVudCBkaWZm6XJlbnQuIEVsbGVzIHNvbnQgdXRpbGVzCnBvdXIgc3VpdnJlIHVuIGlkZW50aWZpYW50IGRlIHJlcXXqdGUgZ2xvYmFsZW1lbnQgdW5pcXVlIHBvc2l0aW9ubukgcGFyIHVuCmF1dHJlIHByb3h5IGVuIGFtb250LCBwb3VyIGpvdXJuYWxpc2VyIGxlcyBub21zIGRlIHNlcnZldXJzIHZpcnR1ZWxzLCBsZXMgdHlwZXMKZGUgY2xpZW50cyB3ZWIsIGxhIGxvbmd1ZXVyIGRlcyBQT1NULCBsZXMgJ3JlZmVycmVycycsIGV0Yy4gRGFucyBsYSBy6XBvbnNlLCBvbgpwZXV0IGNoZXJjaGVyIGRlcyBpbmZvcm1hdGlvbnMgcmVsYXRpdmVzIOAgbGEgbG9uZ3VldXIgYW5ub25j6WUgZGUgbGEgculwb25zZSwKbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSwgb3UgZW5jb3JlIGxhIGxvY2FsaXNhdGlvbiBkJ3VuIG9iamV0IGVuIGNhcwpkZSByZWRpcmVjdGlvbi4gVG91dCBjb21tZSBwb3VyIGxlcyBjYXB0dXJlcyBkZSBjb29raWVzLCBpbCBlc3QgcG9zc2libGUKZCdpbmNsdXJlIGxlcyBlbi106nRlcyBkZSByZXF16nRlcyBldCBkZSBy6XBvbnNlIHNpbXVsdGFu6W1lbnQuIExhIHN5bnRheGUgZXN0CmxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgoKTm90ZTogTGVzIG5vbXMgZCdlbi106nRlcyBuZSBzb250IHBhcyBzZW5zaWJsZXMg4CBsYSBjYXNzZS4KCkV4ZW1wbGVzOgotLS0tLS0tLS0KICAgICMgY29uc2VydmVyIGxlIG5vbSBkdSBzZXJ2ZXVyIHZpcnR1ZWwgYWNj6WTpIHBhciBsZSBjbGllbnQKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICAjIG5vdGVyIGxhIGxvbmd1ZXVyIGRlcyBkb25u6WVzIGVudm956WVzIGRhbnMgdW4gUE9TVAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCgogICAgIyBub3RlciBsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlIHBhciBsZSBzZXJ2ZXVyCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICAjIG5vdGVyIGwnVVJMIGRlIHJlZGlyZWN0aW9uCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCkxlcyBlbi106nRlcyBub24gdHJvdXbpcyBzb250IGxvZ3XpcyDgIHZpZGUsIGV0IHNpIHVuIGVuLXTqdGUgYXBwYXJhaXQgcGx1c2lldXJzCmZvaXMsIHNldWxlIGxhIGRlcm5p6HJlIG9jY3VyZW5jZSBzZXJhIGNvbnNlcnbpZS4gTGVzIGVuLXTqdGVzIGRlIHJlcXXqdGUgc29udApyZWdyb3Vw6XMgZW50cmUgZGV1eCBhY2NvbGFkZXMgJ3snIGV0ICd9JyBkYW5zIGwnb3JkcmUgZGUgbGV1ciBk6WNsYXJhdGlvbiwgZXQKY2hhY3VuIHPpcGFy6XMgcGFyIHVuZSBiYXJyZSB2ZXJ0aWNhbGUgJ3wnLCBzYW5zIGF1Y3VuIGVzcGFjZS4gTGVzIGVuLXTqdGVzIGRlCnLpcG9uc2Ugc29udCBwculzZW506XMgZGUgbGEgbeptZSBtYW5p6HJlLCBtYWlzIGFwcuhzIHVuIGVzcGFjZSBzdWl2YW50IGxlIGJsb2MKZCdlbi106nRlIGRlIHJlcXXqdGUuIExlIHRvdXQgcHLpY+hkZSBsYSByZXF16nRlIEhUVFAuIEV4ZW1wbGUgOgoKICBDb25maWc6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgUmVmZXJlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFNlcnZlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgVmlhIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgogIExvZyA6CgogICAgQXVnICA5IDIwOjI2OjA5IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMTQgWzA5L0F1Zy8yMDA0OjIwOjI2OjA5XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMTYyLysxNjIgMjAwICszNTAgLSAtIC0tLS0ge2ZyLmFkc2VydmVyLnlhaG9vLmNvfHxodHRwOi8vZnIuZjQxNi5tYWlsLn0ge3w4NjR8cHJpdmF0ZXx8fSAiR0VUIGh0dHA6Ly9mci5hZHNlcnZlci55YWhvby5jb20vIgogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjAgWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMTgyLysxODIgMjAwICsyNzkgLSAtIC0tLS0ge3cub2RzLm9yZ3x8fSB7Rm9ybWlsdXgvMC4xLjh8MzQ5NXx8fH0gIkdFVCBodHRwOi8vdy5vZHMub3JnL3N5dGFkaW4uaHRtbCBIVFRQLzEuMSIgCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyOCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMi8xMjYvKzEyOCAyMDAgKzIyMyAtIC0gLS0tLSB7d3d3LmluZm90cmFmaWMuY29tfHxodHRwOi8vdy5vZHMub3JnL3N5dH0ge0FwYWNoZS8yLjAuNDAgKFJlZCBIfDkwNjh8fHx9ICJHRVQgaHR0cDovL3d3dy5pbmZvdHJhZmljLmNvbS9pbWFnZXMvbGl2ZS9jYXJ0ZXNpZGYvZ3JhbmRlcy9pZGZfbmUucG5nIEhUVFAvMS4xIiAKCjQuMi43KSBFeGVtcGxlcyBkZSBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvNy8xNDcvNjcyMyAyMDAgMjQzIC0gLSAtLS0tIDMvNSAiSEVBRCAvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgbG9uZ3VlICg2LjVzKSBzYWlzaWUg4CBsYSBtYWluIGF2ZWMgdW4gY2xpZW50IHRlbG5ldC4gTGUgc2VydmV1ciBhCiAgICAgculwb25kdSBlbiAxNDcgbXMgZXQgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZSBub3JtYWxlbWVudCAoJy0tLS0nKQoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAzLzMgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgcG91ciB1biBsb25nIHRyYW5zZmVydC4gTCdvcHRpb24gJ2xvZ2FzYXAnIOl0YWl0IHNw6WNpZmnpZSBkb25jIGxlCiAgICAgbG9nIGEg6XTpIGfpbuly6SBqdXN0ZSBhdmFudCBsZSB0cmFuc2ZlcnQgZGUgZG9ubullcy4gTGUgc2VydmV1ciBhIHLpcG9uZHUKICAgICBlbiAxNCBtcywgMjQzIG9jdGV0cyBkJ2VuLXTqdGVzIG9udCDpdOkgdHJhbnNm6XLpcyBhdSBjbGllbnQsIGV0IGxlIHRlbXBzCiAgICAgdG90YWwgZW50cmUgbCdhY2NlcHQoKSBldCBsZSBwcmVtaWVyIG9jdGV0IGRlIGRvbm7pZSBlc3QgZGUgMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvMzAgNTAyIDI0MyAtIC0gUEgtLSAyLzMgIkdFVCAvY2dpLWJpbi9idWcuY2dpPyBIVFRQLzEuMCIKICA9PiBsZSBwcm94eSBhIGJsb3F16SB1bmUgculwb25zZSBkdSBzZXJ2ZXVyIHNvaXQg4CBjYXVzZSBkJ3VuIGZpbHRyZSAncnNwZGVueScKICAgICBvdSAncnNwaWRlbnknLCBzb2l0IHBhcmNlIHF1J2lsIGEgZOl0ZWN06SB1biByaXNxdWUgZGUgZnVpdGUgc2Vuc2libGUKICAgICBkJ2luZm9ybWF0aW9ucyByaXNxdWFudCBkJ+p0cmUgY2FjaOllcy4gRGFucyBjZSBjYXMsIGxhIHLpcG9uc2UgZXN0CiAgICAgcmVtcGxhY+llIHBhciAnNTAyIGJhZCBnYXRld2F5Jy4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OCBbMTUvT2N0LzIwMDM6MTU6MTg6NTVdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvODQ5MCAtMSAwIC0gLSBDUi0tIDIvMiAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBhIHJlZmVybekgbGEgY29ubmV4aW9uIGx1aS1t6m1lCiAgICAgKCdDLS0tJykgYXUgYm91dCBkZSA4LjVzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuCiAgICAgQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ5IFsxNS9PY3QvMjAwMzoxNToxOTowNl0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS81MDAwMSA0MDggMCAtIC0gY1ItLSAyLzIgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgc29uIHRpbWUtb3V0IGEgZXhwaXLpICgnYy0tLScpIGF1CiAgICAgYm91dCBkZSA1MHMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4gQXVjdW5lCiAgICAgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIsIG1haXMgbGUgcmVsYWlzIGEgdG91dCBkZSBt6m1lCiAgICAgcHUgcmVudm95ZXIgdW4gbWVzc2FnZSA0MDggYXUgY2xpZW50LgoKLSBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIGNECiAgPT4gbG9nIGVuIG1vZGUgJ3RjcGxvZycuIEV4cGlyYXRpb24gZHUgdGltZS1vdXQgY/R06SBjbGllbnQgKCdjRCcpIGF1IGJvdXQgZGUKICAgICA1cy4KCi0gaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDIwMi8yMDUgIkhFQUQgLyBIVFRQLzEuMCIgCiAgPT4gTGEgcmVxdep0ZSBjbGllbnQgbWV0IDNzIOAgZW50cmVyIChwZXV0Lep0cmUgdW4gcHJvYmzobWUgculzZWF1KSwgZXQgbGEKICAgICBjb25uZXhpb24gKCdTQy0tJykgdmVycyBsZSBzZXJ2ZXVyIOljaG91ZSBhdSBib3V0IGRlIDQgdGVudGF0aXZlcyBkZSAyCiAgICAgc2Vjb25kZXMgKHJldHJpZXMgMyBkYW5zIGxhIGNvbmYpLCBwdWlzIHVuIGNvZGUgNTAzIGVzdCByZXRvdXJu6SBhdSBjbGllbnQuCiAgICAgSWwgeSBhdmFpdCAyMDIgY29ubmV4aW9ucyBzdXIgY2V0dGUgaW5zdGFuY2UsIGV0IDIwNSBzdXIgbCdlbnNlbWJsZSBkZXMKICAgICBpbnN0YW5jZXMgcG91ciBjZSBwcm9jZXNzdXMuIElsIGVzdCBwb3NzaWJsZSBxdWUgbGUgc2VydmV1ciBhaXQgcmVmdXPpIGxhCiAgICAgY29ubmV4aW9uIHBhcmNlIHF1J2lsIHkgZW4gYXZhaXQgZOlq4CB0cm9wIGQn6XRhYmxpZXMuCgoKNC4zKSBNb2RpZmljYXRpb24gZGVzIGVuLXTqdGVzIEhUVFAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAgdW5pcXVlbWVudCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlbXBsYWNlciBjZXJ0YWlucyBlbi106nRlcyBkYW5zIGxhCnJlcXXqdGUgZXQvb3UgbGEgculwb25zZSDgIHBhcnRpciBkJ2V4cHJlc3Npb25zIHLpZ3VsaehyZXMuIElsIGVzdCDpZ2FsZW1lbnQKcG9zc2libGUgZGUgYmxvcXVlciBjZXJ0YWluZXMgcmVxdep0ZXMgZW4gZm9uY3Rpb24gZHUgY29udGVudSBkZXMgZW4tdOp0ZXMgb3UKZGUgbGEgcmVxdep0ZS4gVW5lIGxpbWl0YXRpb24gY2VwZW5kYW50IDogbGVzIGVuLXTqdGVzIGZvdXJuaXMgYXUgbWlsaWV1IGRlCmNvbm5leGlvbnMgcGVyc2lzdGVudGVzIChrZWVwLWFsaXZlKSBuZSBzb250IHBhcyB2dXMgY2FyIGlscyBzb250IGNvbnNpZOly6XMKY29tbWUgZmFpc2FudCBwYXJ0aWUgZGVzIOljaGFuZ2VzIGRlIGRvbm7pZXMgY29uc+ljdXRpZnMg4CBsYSBwcmVtaehyZSByZXF16nRlLgpMZXMgZG9ubullcyBuZSBzb250IHBhcyBhZmZlY3TpZXMsIGNlY2kgbmUgcydhcHBsaXF1ZSBxdSdhdXggZW4tdOp0ZXMuIAoKTGEgc3ludGF4ZSBlc3QgOgogICByZXFhZGQgICAgPHN0cmluZz4gICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcXJlcCAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBwb3VyIG1vZGlmaWVyIGxhIHJlcXXqdGUKICAgcmVxaXJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVsICAgIDxzZWFyY2g+ICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcWlkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWFsbG93ICA8c2VhcmNoPiAgICAgICAgICAgICBhdXRvcmlzZXIgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpYWxsb3cgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZW55ICAgPHNlYXJjaD4gICAgICAgICAgICAgaW50ZXJkaXJlIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxcGFzcyAgIDxzZWFyY2g+ICAgICAgICAgICAgIGluaGliZSBjZXMgYWN0aW9ucyBzdXIgbGVzIGVuLXTqdGVzIHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWlwYXNzICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAxIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6S4gSWwgZXN0IOlnYWxlbWVudCBwb3NzaWJsZSBkJ2luc+lyZXIgdW4gY2FyYWN06HJlIG5vbgppbXByaW1hYmxlICh1dGlsZSBwb3VyIGxlIHNhdXQgZGUgbGlnbmUpIGluc2NyaXZhbnQgJ1x4JyBzdWl2aSBkdSBjb2RlCmhleGFk6WNpbWFsIGRlIGNlIGNhcmFjdOhyZSAoY29tbWUgZW4gQykuCgo8c3RyaW5nPiByZXBy6XNlbnRlIHVuZSBjaGHubmUgcXVpIHNlcmEgYWpvdXTpZSBzeXN06W1hdGlxdWVtZW50IGFwcuhzIGxhCmRlcm5p6HJlIGxpZ25lIGQnZW4tdOp0ZS4KClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSBsYSBwcmVtaehyZSBsaWduZSBkZSBsYSByZXF16nRlIGV0IGNlbGxlIGRlIGxhIHLpcG9uc2Ugc29udCB0cmFpdOllcyBjb21tZQogICAgZGVzIGVuLXTqdGVzLCBjZSBxdWkgcGVybWV0IGRlIHLp6WNyaXJlIGRlcyBVUkwgZXQgZGVzIGNvZGVzIGQnZXJyZXVyLgogIC0gJ3JlcXJlcCcgZXN0IGwn6XF1aXZhbGVudCBkZSAnY2xpZXhwJyBlbiB2ZXJzaW9uIDEuMCwgZXQgJ3JzcHJlcCcgY2VsdWkgZGUKICAgICdzcnZleHAnLiBDZXMgbm9tcyBzb250IHRvdWpvdXJzIHN1cHBvcnTpcyBtYWlzIGTpY29uc2VpbGzpcy4KICAtIHBvdXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBsZSBub21icmUgdG90YWwgZGUgY2FyYWN06HJlcyBham91dOlzIHN1cgogICAgdW5lIHJlcXXqdGUgb3UgdW5lIHLpcG9uc2UgZXN0IGxpbWl06SDgIDQwOTYgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjUgKGNldHRlCiAgICBsaW1pdGUg6XRhaXQg4CAyNTYgYXVwYXJhdmFudCkuIENldHRlIHZhbGV1ciBlc3QgbW9kaWZpYWJsZSBkYW5zIGxlIGNvZGUuCiAgICBQb3VyIHVuIHVzYWdlIHRlbXBvcmFpcmUsIG9uIHBldXQgZ2FnbmVyIGRlIGxhIHBsYWNlIGVuIHN1cHByaW1hbnQgcXVlbHF1ZXMKICAgIGVuLXTqdGVzIGludXRpbGVzIGF2YW50IGxlcyBham91dHMuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDQwMyBmb3JiaWRkZW4iIHRhbmRpcyBxdSd1bmUKICAgIHLpcG9uc2UgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA1MDIgQmFkIGdhdGV3YXkiLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAgICAgIyMjIyMjIGEgZmV3IGV4YW1wbGVzICMjIyMjIwoKICAgICAgICAjIHJld3JpdGUgJ29ubGluZS5mcicgaW5zdGVhZCBvZiAnZnJlZS5mcicgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cwogICAgICAgIHJlcXJlcCAgICAgICAgXihHRVRcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCiAgICAgICAgcmVxcmVwICAgICAgICBeKFBPU1RcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCgogICAgICAgICMgZm9yY2UgcHJveHkgY29ubmVjdGlvbnMgdG8gY2xvc2UKICAgICAgICByZXFpcmVwICAgICAgICBeUHJveHktQ29ubmVjdGlvbjouKiAgICAgICAgUHJveHktQ29ubmVjdGlvbjpcIGNsb3NlCiAgICAgICAgIyByZXdyaXRlIGxvY2F0aW9ucwogICAgICAgIHJzcGlyZXAgICAgICAgIF4oTG9jYXRpb246XCApKFteOl0qOi8vW14vXSopKC4qKSBcMVwzCgogICAgICAgICMjIyMjIyBBIGZ1bGwgY29uZmlndXJhdGlvbiBiZWluZyB1c2VkIG9uIHByb2R1Y3Rpb24gIyMjIyMjCgogICAgICAgICMgRXZlcnkgaGVhZGVyIHNob3VsZCBlbmQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZS4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpbXCBdKiQKCiAgICAgICAgIyBibG9jayBBcGFjaGUgY2h1bmsgZXhwbG9pdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeVHJhbnNmZXItRW5jb2Rpbmc6W1wgXSpjaHVua2VkCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5Ib3N0OlwgYXBhY2hlLQoKICAgICAgICAjIGJsb2NrIGFubm95aW5nIHdvcm1zIHRoYXQgZmlsbCB0aGUgbG9ncy4uLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiooXC58JTJlKShcLnwlMmUpKCUyZnwlNWN8L3xcXFxcKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgKFteXCBdKlwgW15cIF0qXCB8LiolMDApCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKjxzY3JpcHQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qLyhyb290XC5leGVcP3xjbWRcLmV4ZVw/fGRlZmF1bHRcLmlkYVw/KQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQogICAgICAgIG9wdGlvbiAgICAgICAgICAgICAgICBodHRwY2xvcwoKICAgICAgICAjIGNoYW5nZSB0aGUgc2VydmVyIG5hbWUKICAgICAgICByc3BpZGVsICAgICAgICAgXlNlcnZlcjpcIAogICAgICAgIHJzcGFkZCAgICAgICAgICBTZXJ2ZXI6XCBGb3JtaWx1eC8wLjEuOAoKCkRlIHBsdXMsIGwnb3B0aW9uICdmb3J3YXJkZm9yJyBham91dGUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBkYW5zIHVuIGNoYW1wCidYLUZvcndhcmRlZC1Gb3InIGRlIGxhIHJlcXXqdGUsIGNlIHF1aSBwZXJtZXQg4CB1biBzZXJ2ZXVyIHdlYiBmaW5hbCBkZQpjb25uYe50cmUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBpbml0aWFsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCgpOb3RvbnMgcXVlIGNlcnRhaW5zIHNlcnZldXJzIEhUVFAgbmUgcmVmZXJtZW50IHBhcyBu6WNlc3NhaXJlbWVudCBsYSBzZXNzaW9uClRDUCBlbiBmaW4gZGUgdHJhaXRlbWVudCBsb3JzcXUnaWxzIHJl529pdmVudCB1biBlbnTqdGUgJ0Nvbm5lY3Rpb246IGNsb3NlJywKY2UgcXVpIHNlIHRyYWR1aXQgcGFyIGRlcyBncmFuZHMgbm9tYnJlcyBkZSBzZXNzaW9ucyDpdGFibGllcyBldCBkZXMgdGVtcHMKZ2xvYmF1eCB0cuhzIGxvbmdzIHN1ciBsZXMgcmVxdep0ZXMuIFBvdXIgY29udG91cm5lciBjZSBwcm9ibOhtZSwgbGEgdmVyc2lvbgoxLjIuOSBhcHBvcnRlIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2ZvcmNlY2xvc2UnIHF1aSByZWZlcm1lIGxhIGNvbm5leGlvbiBzb3J0YW50CnZlcnMgbGUgc2VydmV1ciBk6HMgcXUnaWwgY29tbWVuY2Ug4CBy6XBvbmRyZSBldCBzZXVsZW1lbnQgc2kgbGUgdGFtcG9uIGRlCnJlcXXqdGUgZXN0IHZpZGUuIEF0dGVudGlvbiB0b3V0ZWZvaXMg4CBuZSBQQVMgdXRpbGlzZXIgY2V0dGUgb3B0aW9uIHNpIGRlcwpt6XRob2RlcyBDT05ORUNUIHNvbnQgYXR0ZW5kdWVzIGVudHJlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyLiBMJ29wdGlvbgonZm9yY2VjbG9zZScgaW1wbGlxdWUgbCdvcHRpb24gJ2h0dHBjbG9zZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nICBnbG9iYWwKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGZvcmNlY2xvc2UKCgo0LjQpIFLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIGNvbWJpbmFpc29uIGRlIGwnaW5zZXJ0aW9uIGRlIGNvb2tpZSBhdmVjIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lCnBlcm1ldCBkJ2Fzc3VyZXIgdW5lIHBlcnNpc3RlbmNlIGRhbnMgbGVzIHNlc3Npb25zIEhUVFAgZCd1bmUgbWFuaehyZQpwcmF0aXF1ZW1lbnQgdHJhbnNwYXJlbnRlIHBvdXIgbGVzIGFwcGxpY2F0aW9ucy4gTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6CiAgLSBhdHRyaWJ1ZXIgdW5lIHZhbGV1ciBkJ3VuIGNvb2tpZSDgIGNoYXF1ZSBzZXJ2ZXVyCiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGludGVybmUKICAtIGluc+lyZXIgdW4gY29va2llIGRhbnMgbGVzIHLpcG9uc2VzIGlzc3VlcyBkJ3VuZSBy6XBhcnRpdGlvbiB1bmlxdWVtZW50LAogICAgZXQgZmFpcmUgZW4gc29ydGUgcXVlIGRlcyBjYWNoZXMgbmUgbeltb3Jpc2VudCBwYXMgY2UgY29va2llLgogIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24gbG9ycyBkZXMgcmVxdep0ZXMgdWx06XJpZXVyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKTCdhdXRyZSBzb2x1dGlvbiBhcHBvcnTpZSBwYXIgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMyBlc3QgZGUgcul1dGlsaXNlciB1bgpjb29raWUgZW4gcHJvdmVuYW5jZSBkdSBzZXJ2ZXVyIGV0IGRlIGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIuCkRhbnMgY2UgY2FzLCBuZSBwYXMgb3VibGllciBkZSBmb3JjZXIgbGUgbW9kZSAiaHR0cGNsb3NlIiBwb3VyIGVtcOpjaGVyIGxlCmNsaWVudCBldCBsZSBzZXJ2ZXVyIGRlIHRyYXZhaWxsZXIgZW4gbW9kZSAia2VlcC1hbGl2ZSIgYWZpbiBxdWUgbGUgcHJveHkKcHVpc3NlIGNvcnJpZ2VyIGxlIG5vbSBkdSBjb29raWUgZGFucyB0b3V0ZXMgbGVzIGZ1dHVyZXMgcmVxdep0ZXMuCgogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzcnYxIGNoZWNrCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc3J2MiBjaGVjawogICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKCjQuNSkgUHJvdGVjdGlvbiBjb250cmUgbGVzIGZ1aXRlcyBkJ2luZm9ybWF0aW9ucyBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGVzIHZlcnNpb25zIDEuMS4yOCBldCAxLjIuMSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnY2hlY2tjYWNoZScgYSDpdOkKY3Lp6WUuIEVsbGUgc2VydCDgIGluc3BlY3RlciBtaW51dGlldXNlbWVudCBsZXMgZW4tdOp0ZXMgJ0NhY2hlLWNvbnRyb2wnLAonUHJhZ21hJywgZXQgJ1NldC1jb29raWUnIGRhbnMgbGVzIHLpcG9uc2VzIHNlcnZldXIgcG91ciBk6XRlcm1pbmVyIHMnaWwgeSBhCnVuIHJpc3F1ZSBkZSBjYWNoZXIgdW4gY29va2llIHN1ciB1biBwcm94eSBj9HTpIGNsaWVudC4gUXVhbmQgY2V0dGUgb3B0aW9uIGVzdAphY3RpdullLCBsZXMgc2V1bGVzIHLpcG9uc2VzIHF1aSBwZXV2ZW50IOp0cmUgcmV0b3VybullcyBhdSBjbGllbnQgc29udCA6CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBuJ29udCBwYXMgZCdlbi106nRlICdTZXQtY29va2llJyA7CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBvbnQgdW4gY29kZSBkZSByZXRvdXIgYXV0cmUgcXVlIDIwMCwgMjAzLCAyMDYsIDMwMCwgMzAxLCAKICAgIDQxMCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6SB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgZm9udCBzdWl0ZSDgIHVuZSByZXF16nRlIFBPU1QsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukKICAgIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnUHJhZ21hOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHJpdmF0ZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLXN0b3JlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbWF4LWFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBzLW1heGFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUiJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSwnCiAgICAoYXV0b3Jpc2FudCBkJ2F1dHJlcyBjaGFtcHMgYXBy6HMgc2V0LWNvb2tpZSkuCgpTaSB1bmUgculwb25zZSBuZSByZXNwZWN0ZSBwYXMgY2VzIHBy6S1yZXF1aXMsIGFsb3JzIGVsbGUgc2VyYSBibG9xdellIGRlIGxhCm3qbWUgbWFuaehyZSBxdWUgcydpbCBzJ2FnaXNzYWl0IGQndW4gZmlsdHJlICdyc3BkZW55JywgYXZlYyBlbiByZXRvdXIgdW4KbWVzc2FnZSAiSFRUUCA1MDIgYmFkIGdhdGV3YXkiLiBMJ+l0YXQgZGUgc2Vzc2lvbiBtb250cmUgIlBILS0iIGNlIHF1aSB2ZXV0CmRpcmUgcXVlIGMnZXN0IGxlIHByb3h5IHF1aSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1cmFudCBsZSB0cmFpdGVtZW50IGRlcwplbi106nRlcy4gRGUgcGx1cywgdW4gbWVzc2FnZSBkJ2FsZXJ0ZSBzZXJhIGVudm956SBkYW5zIGxlcyBsb2dzIGRlIHNvcnRlIHF1ZQpsJ2FkbWluaXN0cmF0ZXVyIHNhY2hlIHF1J2lsIHkgYSB1bmUgYWN0aW9uIGNvcnJlY3RyaWNlIOAgZW50cmVwcmVuZHJlLgoKNC42KSBQZXJzb25hbGlzYXRpb24gZGVzIGVycmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbmVzIHNpdHVhdGlvbnMgY29uZHVpc2VudCDgIHJldG91cm5lciB1bmUgZXJyZXVyIEhUVFAgYXUgY2xpZW50IDoKICAtIHJlcXXqdGUgaW52YWxpZGUgb3UgdHJvcCBsb25ndWUgPT4gY29kZSBIVFRQIDQwMAogIC0gcmVxdep0ZSBtZXR0YW50IHRyb3AgZGUgdGVtcHMg4CB2ZW5pciA9PiBjb2RlIEhUVFAgNDA4CiAgLSByZXF16nRlIGludGVyZGl0ZSAoYmxvcXXpZSBwYXIgdW4gcmVxaWRlbnkpID0+IGNvZGUgSFRUUCA0MDMKICAtIGVycmV1ciBpbnRlcm5lIGR1IHByb3h5ID0+IGNvZGUgSFRUUCA1MDAKICAtIGxlIHNlcnZldXIgYSByZXRvdXJu6SB1bmUgculwb25zZSBpbmNvbXBs6HRlIG91IGludmFsaWRlID0+IGNvZGUgSFRUUCA1MDIKICAtIGF1Y3VuIHNlcnZldXIgZGlzcG9uaWJsZSBwb3VyIGNldHRlIHJlcXXqdGUgPT4gY29kZSBIVFRQIDUwMwogIC0gbGUgc2VydmV1ciBuJ2EgcGFzIHLpcG9uZHUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpID0+IGNvZGUgSFRUUCA1MDQKClVuIG1lc3NhZ2UgZCdlcnJldXIgc3VjY2ludCB0aXLpIGRlIGxhIFJGQyBhY2NvbXBhZ25lIGNlcyBjb2RlcyBkZSByZXRvdXIuCkNlcGVuZGFudCwgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjbGllbnTobGUsIG9uIHBldXQgcHLpZulyZXIgcmV0b3VybmVyIGRlcwpwYWdlcyBwZXJzb25uYWxpc+llcy4gQ2VjaSBlc3QgcG9zc2libGUgcGFyIGxlIGJpYWlzIGRlIGxhIGNvbW1hbmRlICJlcnJvcmxvYyI6CgogICAgZXJyb3Jsb2MgPGNvZGVfSFRUUD4gPGxvY2F0aW9uPgoKQXUgbGlldSBkZSBn6W7pcmVyIHVuZSBlcnJldXIgSFRUUCA8Y29kZV9IVFRQPiBwYXJtaSBsZXMgY29kZXMgY2l06XMgY2ktZGVzc3VzLApsZSBwcm94eSBn6W7ocmVyYSB1biBjb2RlIGRlIHJlZGlyZWN0aW9uIHRlbXBvcmFpcmUgKEhUVFAgMzAyKSB2ZXJzIGwnYWRyZXNzZQpkJ3VuZSBwYWdlIHBy6WNpc+llIGRhbnMgPGxvY2F0aW9uPi4gQ2V0dGUgYWRyZXNzZSBwZXV0IOp0cmUgcmVsYXRpdmUgYXUgc2l0ZSwKb3UgYWJzb2x1ZS4gQ29tbWUgY2V0dGUgculwb25zZSBlc3QgdHJh7nTpZSBwYXIgbGUgbmF2aWdhdGV1ciBkdSBjbGllbnQKbHVpLW3qbWUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlIHF1ZSBsJ2FkcmVzc2UgZm91cm5pZSBsdWkgc29pdCBhY2Nlc3NpYmxlLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBlcnJvcmxvYyA0MDAgL2JhZHJlcXVlc3QuaHRtbAogICAgICAgIGVycm9ybG9jIDQwMyAvZm9yYmlkZGVuLmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDggL3Rvb2xvbmcuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMCBodHRwOi8vaGFwcm94eS5kb21haW4ubmV0L2J1Z3JlcG9ydC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAyIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAzIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTA0IGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCgpOb3RlOiBsYSBSRkMyNjE2IHN0aXB1bGUgcXUndW4gY2xpZW50IGRvaXQgcul1dGlsaXNlciBsYSBt6m1lIG3pdGhvZGUgcG91cgphY2PpZGVyIOAgbCdVUkwgZGUgcmVkaXJlY3Rpb24gcXVlIGNlbGxlIHF1aSBsJ2EgcmV0b3VybullLCBjZSBxdWkgcG9zZSBkZXMKcHJvYmzobWVzIGF2ZWMgbGVzIHJlcXXqdGVzIFBPU1QuIExlIGNvZGUgZGUgcmV0b3VyIDMwMyBhIOl06SBjcunpIGV4cHLocyBwb3VyCnLpZ2xlciBjZSBwcm9ibOhtZSwgaW5kaXF1YW50IGF1IGNsaWVudCBxdSdpbCBkb2l0IGFjY+lkZXIg4CBsJ1VSTCByZXRvdXJu6WUKZGFucyBsZSBjaGFtcCBMb2NhdGlvbiBhdmVjIGxhIG3pdGhvZGUgR0VUIHVuaXF1ZW1lbnQuIFNldWxlbWVudCwgY2VydGFpbnMKbmF2aWdhdGV1cnMgYW506XJpZXVycyDgIEhUVFAvMS4xIG5lIGNvbm5haXNzZW50IHBhcyBjZSBjb2RlIGRlIHJldG91ci4gRGUKcGx1cywgbGEgcGx1cGFydCBkZXMgbmF2aWdhdGV1cnMgc2UgY29tcG9ydGVudCBk6WrgIGF2ZWMgbGUgY29kZSAzMDIgY29tbWUgaWxzCmRldnJhaWVudCBsZSBmYWlyZSBhdmVjIGxlIDMwMy4gRG9uYywgZGFucyBsZSBidXQgZGUgbGFpc3NlciBsZSBjaG9peCDgCmwndXRpbGlzYXRldXIsIGxlcyB2ZXJzaW9ucyAxLjEuMzEgZXQgMS4yLjUgYXBwb3J0ZW50IGRldXggbm91dmVsbGVzIGNvbW1hbmRlcwp2aXNhbnQg4CByZW1wbGFjZXIgJ2Vycm9ybG9jJyA6ICdlcnJvcmxvYzMwMicgZXQgJ2Vycm9ybG9jMzAzJy4KCkxldXIgdXNhZ2Ugbm9uIGFtYmln/CBlc3QgcmVjb21tYW5k6SDgIGxhIHBsYWNlIGRlIGxhIGNvbW1hbmRlICdlcnJvcmxvYycgKHF1aQp1dGlsaXNlIHRvdWpvdXJzIDMwMikuIERhbnMgbGUgZG91dGUsIHBy6WbpcmV6IGwndXRpbGlzYXRpb24gZGUgJ2Vycm9ybG9jMzAzJwpk6HMgcXVlIHZvdXMgc2F2ZXogcXVlIHZvcyBjbGllbnRzIHN1cHBvcnRlbnQgbGUgY29kZSBkZSByZXRvdXIgSFRUUCAzMDMuCgo0LjcpIENoYW5nZW1lbnQgZGVzIHZhbGV1cnMgcGFyIGTpZmF1dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxhIHZlcnNpb24gMS4xLjIyIGVzdCBhcHBhcnVlIGxhIG5vdGlvbiBkZSB2YWxldXJzIHBhciBk6WZhdXQsIGNlIHF1aQrpdml0ZSBkZSBy6XDpdGVyIGRlcyBwYXJhbeh0cmVzIGNvbW11bnMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcywgdGVscyBxdWUgbGVzCnRpbWVvdXRzLCBhZHJlc3NlcyBkZSBsb2csIG1vZGVzIGRlIGZvbmN0aW9ubmVtZW50LCBldGMuCgpMZXMgdmFsZXVycyBwYXIgZOlmYXV0IHNvbnQgcG9zaXRpb25u6WVzIGRhbnMgbGEgZGVybmnocmUgc2VjdGlvbiAnZGVmYXVsdHMnCnBy6WPpZGVudCBsJ2luc3RhbmNlIHF1aSBsZXMgdXRpbGlzZXJhLiBPbiBwZXV0IGRvbmMgbWV0dHJlIGF1dGFudCBkZSBzZWN0aW9ucwonZGVmYXVsdHMnIHF1ZSBsJ29uIHZldXQuIElsIGZhdXQganVzdGUgc2UgcmFwcGVsZXIgcXVlIGxhIHBy6XNlbmNlIGQndW5lIHRlbGxlCnNlY3Rpb24gaW1wbGlxdWUgdW5lIGFubnVsYXRpb24gZGUgdG91cyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHBvc2l0aW9ubulzCnBy6WPpZGVtbWVudCwgZGFucyBsZSBidXQgZGUgbGVzIHJlbXBsYWNlci4KCkxhIHNlY3Rpb24gJ2RlZmF1bHRzJyB1dGlsaXNlIGxhIG3qbWUgc3ludGF4ZSBxdWUgbGEgc2VjdGlvbiAnbGlzdGVuJywgYXV4CnBhcmFt6HRyZXMgcHLocyBxdWkgbmUgc29udCBwYXMgc3VwcG9ydOlzLiBMZSBtb3QgY2zpICdkZWZhdWx0cycgcGV1dCBhY2NlcHRlcgp1biBjb21tZW50YWlyZSBlbiBndWlzZSBwYXJhbeh0cmUuCgpEYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xLCBzZXVscyBsZXMgcGFyYW3odHJlcyBzdWl2YW50cyBwZXV2ZW50IOp0cmUKcG9zaXRpb25u6XMgZGFucyB1bmUgc2VjdGlvbiAnZGVmYXVsdHMnIDoKICAtIGxvZyAobGUgcHJlbWllciBldCBsZSBzZWNvbmQpCiAgLSBtb2RlIHsgdGNwLCBodHRwLCBoZWFsdGggfQogIC0gYmFsYW5jZSB7IHJvdW5kcm9iaW4gfQogIC0gZGlzYWJsZWQgKHBvdXIgZOlzYWN0aXZlciB0b3V0ZXMgbGVzIGluc3RhbmNlcyBxdWkgc3VpdmVudCkKICAtIGVuYWJsZWQgKHBvdXIgZmFpcmUgbCdvcOlyYXRpb24gaW52ZXJzZSwgbWFpcyBjJ2VzdCBsZSBjYXMgcGFyIGTpZmF1dCkKICAtIGNvbnRpbWVvdXQsIGNsaXRpbWVvdXQsIHNydnRpbWVvdXQsIGdyYWNlLCByZXRyaWVzLCBtYXhjb25uCiAgLSBvcHRpb24geyByZWRpc3BhdGNoLCB0cmFuc3BhcmVudCwga2VlcGFsaXZlLCBmb3J3YXJkZm9yLCBsb2dhc2FwLCBodHRwY2xvc2UsCiAgICAgICAgICAgICBjaGVja2NhY2hlLCBodHRwbG9nLCB0Y3Bsb2csIGRvbnRsb2dudWxsLCBwZXJzaXN0LCBodHRwY2hrIH0KICAtIHJlZGlzcGF0Y2gsIHJlZGlzcCwgdHJhbnNwYXJlbnQsIHNvdXJjZSB7IGFkZHI6cG9ydCB9CiAgLSBjb29raWUsIGNhcHR1cmUKICAtIGVycm9ybG9jCgpOZSBzb250IHBhcyBzdXBwb3J06XMgZGFucyBjZXR0ZSB2ZXJzaW9uLCBsZXMgYWRyZXNzZXMgZGUgZGlzcGF0Y2ggZXQgbGVzCmNvbmZpZ3VyYXRpb25zIGRlIHNlcnZldXJzLCBhaW5zaSBxdWUgdG91cyBsZXMgZmlsdHJlcyBiYXPpcyBzdXIgbGVzCmV4cHJlc3Npb25zIHLpZ3VsaehyZXMgOgogIC0gZGlzcGF0Y2gsIHNlcnZlciwKICAtIHJlcSosIHJzcCoKCkVuZmluLCBpbCBuJ3kgYSBwYXMgbGUgbW95ZW4sIHBvdXIgbGUgbW9tZW50LCBkJ2ludmFsaWRlciB1biBwYXJhbeh0cmUgYm9vbOllbgpwb3NpdGlvbm7pIHBhciBk6WZhdXQuIERvbmMgc2kgdW5lIG9wdGlvbiBlc3Qgc3DpY2lmaellIGRhbnMgbGVzIHBhcmFt6HRyZXMgcGFyCmTpZmF1dCwgbGUgc2V1bCBtb3llbiBkZSBsYSBk6XNhY3RpdmVyIHBvdXIgdW5lIGluc3RhbmNlLCBjJ2VzdCBkZSBjaGFuZ2VyIGxlcwpwYXJhbeh0cmVzIHBhciBk6WZhdXQgYXZhbnQgbGEgZOljbGFyYXRpb24gZGUgbCdpbnN0YW5jZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIFRDUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMTgwMDAwCiAgICAgICAgc3J2dGltZW91dCAxODAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKICAgICAgICByZWRpc3BhdGNoCgogICAgbGlzdGVuIGFwcF90Y3AxIDEwLjAuMC4xOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjIuMiBiYWNrdXAKICAgIAogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIEhUVFAKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMjAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDIwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBjYXB0dXJlIGNvb2tpZSB1c2VyaWQ9IGxlbiAxMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6KzgwMDAgY29va2llIHNydjIgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKCiAgICBkZWZhdWx0cwogICAgICAgICMgc2VjdGlvbiB2aWRlIHF1aSBhbm51bGUgdG91cyBsZXMgcGFyYW3odGVzIHBhciBk6WZhdXQuCgo9PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6XRyYWdlIHN5c3TobWUgfAo9PT09PT09PT09PT09PT09PT09PT09PQoKU291cyBMaW51eCAyLjQKPT09PT09PT09PT09PT0KCi0tIGN1dCBoZXJlIC0tCiMhL2Jpbi9zaAojIHNldCB0aGlzIHRvIGFib3V0IDI1Ni80TSAoMTYzODQgZm9yIDI1Nk0gbWFjaGluZSkKTUFYRklMRVM9MTYzODQKZWNobyAkTUFYRklMRVMgPiAvcHJvYy9zeXMvZnMvZmlsZS1tYXgKdWxpbWl0IC1uICRNQVhGSUxFUwoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heCBdOyB0aGVuCiAgICAgICAgZWNobyA2NTUzNiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4CmZpCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQgXTsgdGhlbgogICAgICAgICMgMzAgc2Vjb25kcyBmb3IgZmluLCAxNSBmb3IgdGltZSB3YWl0CiAgICAgICAgZWNobyAzMDAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdAogICAgICAgIGVjaG8gMTUwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfdGltZV93YWl0CiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX2ludmFsaWRfc2NhbGUKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfb3V0X29mX3dpbmRvdwpmaQoKZWNobyAxMDI0IDYwOTk5ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2xvY2FsX3BvcnRfcmFuZ2UKZWNobyAzMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZmluX3RpbWVvdXQKZWNobyA0MDk2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfc3luX2JhY2tsb2cKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF90d19idWNrZXRzCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfb3JwaGFucwplY2hvIDMwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfa2VlcGFsaXZlX3RpbWUKZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90d19yZWN5Y2xlCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdGltZXN0YW1wcwplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2VjbgplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3NhY2sKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9kc2FjawoKIyBhdXRvLXR1bmVkIG9uIDIuNAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9tYXgKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fZGVmYXVsdAoKZWNobyAxNjM4NCA2NTUzNiA1MjQyODggPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3JtZW0KZWNobyAxNjM4NCAzNDk1MjAgNjk5MDQwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF93bWVtCgotLSBjdXQgaGVyZSAtLQoKU291cyBGcmVlQlNECj09PT09PT09PT09PQoKVW4gcG9ydCBkZSBIQS1Qcm94eSBzb3VzIEZyZWVCU0QgZXN0IGTpc29ybWFpcyBkaXNwb25pYmxlLCBncuJjZSDgCkNsZW1lbnQgTGFmb3JldCA8c2hlZXBraWxsZXJAY3VsdGRlYWRzaGVlcC5vcmc+LgoKUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zIDoKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvdXJsLmNnaT9wb3J0cy9uZXQvaGFwcm94eS9wa2ctZGVzY3IKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvY3Zzd2ViLmNnaS9wb3J0cy9uZXQvaGFwcm94eS8KaHR0cDovL3d3dy5mcmVzaHBvcnRzLm9yZy9uZXQvaGFwcm94eQoKCi0tIGZpbiAtLQo=