ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA3LzA5Cgo9PT09PT09PT09PT09PT09CnwgSW50cm9kdWN0aW9uIHwKPT09PT09PT09PT09PT09PQoKSEFQcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgogIC0gbWFpbnRlbmlyIGRlcyBjbGllbnRzIHN1ciBsZSBib24gc2VydmV1ciBzZXJ2ZXVyIGQnYXBwbGljYXRpb24gZW4gZm9uY3Rpb24KICAgIGRlIGNvb2tpZXMgYXBwbGljYXRpZnMuCiAgLSBmb3VybmlyIGRlcyByYXBwb3J0cyBkJ+l0YXQgZW4gSFRNTCDgIGRlcyB1dGlsaXNhdGV1cnMgYXV0aGVudGlmaelzLCDgCiAgICB0cmF2ZXJzIGRlcyBVUkkgZGUgbCdhcHBsaWNhdGlvbiBpbnRlcmNlcHTpZXMuCgpJbCByZXF1aWVydCBwZXUgZGUgcmVzc291cmNlcywgZXQgc29uIGFyY2hpdGVjdHVyZSDpduluZW1lbnRpZWxsZSBtb25vLQpwcm9jZXNzdXMgbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zCnNpbXVsdGFu6WVzIHN1ciBwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAgICA9ICdtYXhjb25uJyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcKICAgIC1OIDxub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBpbnN0YW5jZT4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zICdsaXN0ZW4nIG91ICdkZWZhdWx0JwogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXNmIHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIEZJTklTSAogICAgLXN0IHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIFRFUk1JTkFURQogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGUgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgZXBvbGwoKQogICAgLWRwIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIHBvbGwoKQogICAgLWRiIGTpc2FjdGl2ZSBsYSBtaXNlIGVuIGFycmnocmUtcGxhbiAodXRpbGUgcG91ciBk6WJ1Z2dlcikKICAgIC1tIDxtZWdzPiBhcHBsaXF1ZSB1bmUgbGltaXRhdGlvbiBkZSA8bWVncz4gTW8gZCd1dGlsaXNhdGlvbiBt6W1vaXJlCgpMZSBub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb24gc2ltdWx0YW7pZXMgcGFyIHByb3h5IGVzdCBsZSBwYXJhbeh0cmUgcGFyCmTpZmF1dCBwb3VyIGxlcyBwcm94aWVzIHBvdXIgbGVzcXVlbHMgY2UgcGFyYW3odHJlIG4nZXN0IHBhcyBwculjaXPpIGRhbnMgbGUKZmljaGllciBkZSBjb25maWd1cmF0aW9uLiBJbCBzJ2FnaXQgZHUgcGFyYW3odHJlICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucwonbGlzdGVuJy4KCkxlIG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbGltaXRlIGxlIG5vbWJyZSBkZQpjb25uZXhpb25zIFRDUCB1dGlsaXNhYmxlcyDgIHVuIGluc3RhbnQgZG9ubukgcGFyIGxlIHByb2Nlc3N1cywgdG91cyBwcm94aWVzCmNvbmZvbmR1cy4gQ2UgcGFyYW3odHJlIHJlbXBsYWNlIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkxlIG1vZGUgZGVidWcgY29ycmVzcG9uZCDgIGwnb3B0aW9uICdkZWJ1ZycgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gRGFucyBjZQptb2RlLCB0b3V0ZXMgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucywgZXQgdG91cyBsZXMg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCnNvbnQgYWZmaWNo6XMuCgpQb3VyIGRlYnVnZ2VyLCBsJ29wdGlvbiAnLWRiJyBlc3QgdHLocyBwcmF0aXF1ZSBjYXIgZWxsZSBk6XNhY3RpdmUKdGVtcG9yYWlyZW1lbnQgbGUgbW9kZSBkYWVtb24gZXQgbGUgbW9kZSBtdWx0aS1wcm9jZXNzdXMuIExlIHNlcnZpY2UgcGV1dCBhbG9ycwrqdHJlIGFycup06SBwYXIgdW4gc2ltcGxlIGFwcHVpIHN1ciBDdHJsLUMsIHNhbnMgYXZvaXIg4CBtb2RpZmllciBsYQpjb25maWd1cmF0aW9uIG5pIOAgYWN0aXZlciBsZSBtb2RlIGRlYnVnIGNvbXBsZXQuCgpMZXMgc3RhdGlzdGlxdWVzIG5lIHNvbnQgZGlzcG9uaWJsZXMgcXVlIHNpIGxlIHByb2dyYW1tZSBhIOl06SBjb21waWzpIGF2ZWMKbCdvcHRpb24gIlNUQVRUSU1FIi4gSWwgcydhZ2l0IHByaW5jaXBhbGVtZW50IGRlIGRvbm7pZXMgYnJ1dGVzIG4nYXlhbnQKZCd1dGlsaXTpIHF1ZSBsb3JzIGRlIGJlbmNobWFya3MgcGFyIGV4ZW1wbGUsIGV0IHNvbnQgYW1lbullcyDgIGRpc3BhcmFpdHJlLgoKTGVzIHBhcmFt6HRyZXMgJy1zdCcgZXQgJy1zZicgc29udCB1dGlsaXPpcyBwb3VyIGxhIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkLgpWb2lyIGxhIHNlY3Rpb24g4CBjZSBzdWpldC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdHJ1Y3R1cmUKPT09PT09PT09CgpMJ2FuYWx5c2V1ciBkdSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gaWdub3JlIGRlcyBsaWduZXMgdmlkZXMsIGxlcyBlc3BhY2VzLApsZXMgdGFidWxhdGlvbnMsIGV0IHRvdXQgY2UgcXVpIGVzdCBjb21wcmlzIGVudHJlIGxlIHN5bWJvbGUgJyMnIChzJ2lsIG4nZXN0CnBhcyBwculj6WTpIGQndW4gJ1wnKSwgZXQgbGEgZmluIGRlIGxhIGxpZ25lLCBjZSBxdWkgY29uc3RpdHVlIHVuIGNvbW1lbnRhaXJlLgoKTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGVzdCBk6WNvdXDpIGVuIHNlY3Rpb25zIHLpcOly6WVzIHBhciBkZXMgbW90cyBjbOlzCnRlbHMgcXVlIDoKCiAgLSAnZ2xvYmFsJwogIC0gJ2xpc3RlbicKICAtICdkZWZhdWx0cycKClRvdXMgbGVzIHBhcmFt6HRyZXMgZm9udCBy6WbpcmVuY2Ug4CBsYSBzZWN0aW9uIGTpZmluaWUgcGFyIGxlIGRlcm5pZXIgbW90IGNs6QpyZWNvbm51LgoKCjEpIFBhcmFt6HRyZXMgZ2xvYmF1eAo9PT09PT09PT09PT09PT09PT09PT0KCklsIHMnYWdpdCBkZXMgcGFyYW3odHJlcyBhZ2lzc2FudCBzdXIgbGUgcHJvY2Vzc3VzLCBvdSBiaWVuIHN1ciBsJ2Vuc2VtYmxlIGRlcwpwcm94aWVzLiBJbHMgc29udCB0b3VzIHNw6WNpZmnpcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIExlcyBwYXJhbeh0cmVzCnN1cHBvcnTpcyBzb250IDoKCiAgLSBsb2cgPGFkcmVzc2U+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQogIC0gbWF4Y29ubiA8bm9tYnJlPgogIC0gdWlkIDxpZGVudGlmaWFudD4KICAtIGdpZCA8aWRlbnRpZmlhbnQ+CiAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgLSBuYnByb2MgPG5vbWJyZT4KICAtIGRhZW1vbgogIC0gZGVidWcKICAtIG5vZXBvbGwKICAtIG5vcG9sbAogIC0gcXVpZXQKICAtIHBpZGZpbGUgPGZpY2hpZXI+CiAgLSB1bGltaXQtbiA8bm9tYnJlPgoKCjEuMSkgSm91cm5hbGlzYXRpb24gZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBwbHVwYXJ0IGRlcyDpduluZW1lbnRzIHNvbnQgam91cm5hbGlz6XMgOiBk6W1hcnJhZ2VzLCBhcnLqdHMsIGRpc3Bhcml0aW9uIGV0CmFwcGFyaXRpb24gZGUgc2VydmV1cnMsIGNvbm5leGlvbnMsIGVycmV1cnMuIFRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbgpzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KCkxlcyBjb25uZXhpb25zIHNvbnQgZW52b3npZXMgZW4gbml2ZWF1ICJpbmZvIi4gTGVzIGTpbWFycmFnZXMgZGUgc2VydmljZSBldCBkZQpzZXJ2ZXVycyBzZXJvbnQgZW52b3npcyBlbiAibm90aWNlIiwgbGVzIHNpZ25hdXggZCdhcnLqdHMgZW4gIndhcm5pbmciIGV0IGxlcwphcnLqdHMgZOlmaW5pdGlmcyBkZSBzZXJ2aWNlcyBldCBkZSBzZXJ2ZXVycyBlbiAiYWxlcnQiLiBDZWNpIGVzdCB2YWxhYmxlIGF1c3NpCmJpZW4gcG91ciBsZXMgcHJveGllcyBxdWUgcG91ciBsZXMgc2VydmV1cnMgdGVzdOlzIHBhciBsZXMgcHJveGllcy4gTGUKcGFyYW3odHJlIG9wdGlvbm5lbCA8bml2ZWF1X21heD4gZOlmaW5pdCBsZSBuaXZlYXUgbWF4aW1hbCBkZSB0cmFjZXMg6W1pc2VzCnBhcm1pIGxlcyA4IHZhbGV1cnMgc3VpdmFudGVzICA6CiAgICBlbWVyZywgYWxlcnQsIGNyaXQsIGVyciwgd2FybmluZywgbm90aWNlLCBpbmZvLCBkZWJ1ZwoKUGFyIGNvbXBhdGliaWxpdOkgYXZlYyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzLCBsYSB2YWxldXIgcGFyIGTpZmF1dAplc3QgImRlYnVnIiBzaSBsJ29wdGlvbiBuJ2VzdCBwYXMgcHLpY2lz6WUuCgpMZXMgY2F06WdvcmllcyBwb3NzaWJsZXMgc29udCA6CiAgICBrZXJuLCB1c2VyLCBtYWlsLCBkYWVtb24sIGF1dGgsIHN5c2xvZywgbHByLCBuZXdzLAogICAgdXVjcCwgY3JvbiwgYXV0aDIsIGZ0cCwgbnRwLCBhdWRpdCwgYWxlcnQsIGNyb24yLAogICAgbG9jYWwwLCBsb2NhbDEsIGxvY2FsMiwgbG9jYWwzLCBsb2NhbDQsIGxvY2FsNSwgbG9jYWw2LCBsb2NhbDcKCkNvbmZvcm3pbWVudCDgIGxhIFJGQzMxNjQsIGxlcyBtZXNzYWdlcyDpbWlzIHNvbnQgbGltaXTpcyDgIDEwMjQgY2FyYWN06HJlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxMjcuMC4wLjEgICAgIGxvY2FsNCBub3RpY2UKCjEuMikgbGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGV0IGNvbnNlaWxs6SBkZSBsaW1pdGVyIGxlIG5vbWJyZSBnbG9iYWwgZGUgY29ubmV4aW9ucyBwYXIKcHJvY2Vzc3VzIOAgbCdhaWRlIGR1IG1vdCBjbOkgZ2xvYmFsICdtYXhjb25uJy4gTGVzIGNvbm5leGlvbnMgc29udCBjb21wcmlzZXMKYXUgc2VucyAnYWNjZXB0YXRpb24gZGUgY29ubmV4aW9uJywgZG9uYyBpbCBmYXV0IHMnYXR0ZW5kcmUgZW4gcuhnbGUgZ+lu6XJhbCDgCmF2b2lyIHVuIHBldSBwbHVzIGR1IGRvdWJsZSBkZSBzZXNzaW9ucyBUQ1AgcXVlIGxlIG1heGltdW0gZGUgY29ubmV4aW9ucyBmaXjpLgpDJ2VzdCBpbXBvcnRhbnQgcG91ciBmaXhlciBsZSBwYXJhbeh0cmUgJ3VsaW1pdCAtbicgYXZhbnQgZGUgbGFuY2VyIGxlIHByb3h5LgpQb3VyIGNvbXB0YWJpbGlzZXIgbGUgbm9tYnJlIGRlIHNvY2tldHMgbuljZXNzYWlyZXMsIGlsIGZhdXQgcHJlbmRyZSBlbiBjb21wdGUKY2VzIHBhcmFt6HRyZXMgOgoKICAtIDEgc29ja2V0IHBhciBjb25uZXhpb24gZW50cmFudGUKICAtIDEgc29ja2V0IHBhciBjb25uZXhpb24gc29ydGFudGUKICAtIDEgc29ja2V0IHBhciBjb3VwbGUgYWRyZXNzZS9wb3J0IGQn6WNvdXRlIHBhciBwcm94eQogIC0gMSBzb2NrZXQgcG91ciBjaGFxdWUgc2VydmV1ciBlbiBjb3VycyBkZSBoZWFsdGgtY2hlY2sKICAtIDEgc29ja2V0IHBvdXIgbGVzIGxvZ3MgKHRvdXMgc2VydmV1cnMgY29uZm9uZHVzKQoKRGFucyBsZSBjYXMgb/kgY2hhcXVlIHByb3h5IG4n6WNvdXRlIHF1ZSBzdXIgdW4gY291cGxlIGFkcmVzc2UvcG9ydCwKcG9zaXRpb25uZXIgbGEgbGltaXRlIGR1IG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgKHVsaW1pdCAtbikg4CAKKDIgKiBtYXhjb25uICsgbmJwcm94eSArIG5ic2VydmV1cnMgKyAxKS4gQSBwYXJ0aXIgZGVzIHZlcnNpb25zIDEuMS4zMi8xLjIuNiwKaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBjZXR0ZSBsaW1pdGUgZGFucyBsYSBjb25maWd1cmF0aW9uIOAgbCdhaWRlIGR1Cm1vdC1jbOkgZ2xvYmFsICd1bGltaXQtbicsIOAgY29uZGl0aW9uIGJpZW4gZW50ZW5kdSBxdWUgbGUgcHJveHkgYWl0IOl06Qpk6W1hcnLpIHNvdXMgbGUgY29tcHRlIHJvb3QgKG91IGF2ZWMgZGVzIGRyb2l0cyBzdWZmaXNhbnRzIHBvdXIg6WxldmVyIGxlCm5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMpLiBDZXR0ZSBzb2x1dGlvbiBtZXQgdW4gdGVybWUgYXUgcHJvYmzobWUKculjdXJyZW50IGQnaW5jZXJ0aXR1ZGUgZGUgbCdhZOlxdWF0aW9uIGVudHJlIGxlcyBsaW1pdGVzIHN5c3TobWVzIGxvcnMgZGUgbGEKZGVybmnocmUgcmVsYW5jZSBkdSBwcm94ZXNzdXMgZXQgbGVzIGxpbWl0ZXMgZW4gbm9tYnJlIGRlIGNvbm5leGlvbnMuIE5vdGVyIHF1ZQpjZXR0ZSBsaW1pdGUgcydhcHBsaXF1ZSBwYXIgcHJvY2Vzc3VzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgbWF4Y29ubiAzMjAwMAogICAgICAgIHVsaW1pdC1uIDY1NTM2CgoKMS4zKSBEaW1pbnV0aW9uIGRlcyBwcml2aWzoZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBZmluIGRlIHLpZHVpcmUgbGVzIHJpc3F1ZXMgZCdhdHRhcXVlcyBkYW5zIGxlIGNhcyBv+SB1bmUgZmFpbGxlIG5vbiBpZGVudGlmaellCnNlcmFpdCBleHBsb2l06WUsIGlsIGVzdCBwb3NzaWJsZSBkZSBkaW1pbnVlciBsZXMgcHJpdmls6GdlcyBkdSBwcm9jZXNzdXMsIGV0CmRlIGwnaXNvbGVyIGRhbnMgdW4gculwZXJ0b2lyZSBzYW5zIHJpc3F1ZS4KCkRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJywgbGUgcGFyYW3odHJlICd1aWQnIHBlcm1ldCBkZSBzcOljaWZpZXIgdW4gaWRlbnRpZmlhbnQKbnVt6XJpcXVlIGQndXRpbGlzYXRldXIuIExhIHZhbGV1ciAwLCBjb3JyZXNwb25kYW50IG5vcm1hbGVtZW50IGF1IHN1cGVyLQp1dGlsaXNhdGV1ciwgcG9zc+hkZSBpY2kgdW5lIHNpZ25pZmljYXRpb24gcGFydGljdWxp6HJlIGNhciBlbGxlIGluZGlxdWUgcXVlCmwnb24gbmUgc291aGFpdGUgcGFzIGNoYW5nZXIgY2V0IGlkZW50aWZpYW50IGV0IGNvbnNlcnZlciBsYSB2YWxldXIgY291cmFudGUuCkMnZXN0IGxhIHZhbGV1ciBwYXIgZOlmYXV0LiBEZSBsYSBt6m1lIG1hbmnocmUsIGxlIHBhcmFt6HRyZSAnZ2lkJyBjb3JyZXNwb25kIOAKdW4gaWRlbnRpZmlhbnQgZGUgZ3JvdXBlLCBldCB1dGlsaXNlIHBhciBk6WZhdXQgbGEgdmFsZXVyIDAgcG91ciBuZSByaWVuCmNoYW5nZXIuIElsIGVzdCBwYXJ0aWN1bGnocmVtZW50IGTpY29uc2VpbGzpIGQndXRpbGlzZXIgZGVzIGNvbXB0ZXMgZ+lu6XJpcXVlcwp0ZWxzIHF1ZSAnbm9ib2R5JyBjYXIgY2V0dGUgcHJhdGlxdWUgcmV2aWVudCDgIHV0aWxpc2VyICdyb290JyBzaSBkJ2F1dHJlcwpwcm9jZXNzdXMgdXRpbGlzZW50IGxlcyBt6m1lcyBpZGVudGlmaWFudHMuCgpMZSBwYXJhbeh0cmUgJ2Nocm9vdCcgYXV0b3Jpc2Ug4CBjaGFuZ2VyIGxhIHJhY2luZSBkdSBwcm9jZXNzdXMgdW5lIGZvaXMgbGUKcHJvZ3JhbW1lIGxhbmPpLCBkZSBzb3J0ZSBxdWUgbmkgbGUgcHJvY2Vzc3VzLCBuaSBsJ3VuIGRlIHNlcyBkZXNjZW5kYW50cyBuZQpwdWlzc2VudCByZW1vbnRlciBkZSBub3V2ZWF1IOAgbGEgcmFjaW5lLiBDZSB0eXBlIGRlIGNsb2lzb25uZW1lbnQgKGNocm9vdCkgZXN0CmfpbulyYWxlbWVudCBjb250b3VybmFibGUgc3VyIGNlcnRhaW5zIE9TIChMaW51eCwgU29sYXJpcykgcG91ciBwZXUgcXVlCmwnYXR0YXF1YW50IHBvc3PoZGUgZGVzIGRyb2l0cyAncm9vdCcgZXQgc29pdCBlbiBtZXN1cmUgZCd1dGlsaXNlciBvdSBkZSBjcullcgp1biBy6XBlcnRvaXJlLiBBdXNzaSwgaWwgZXN0IGltcG9ydGFudCBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgc3DpY2lmaXF1ZSBhdQpzZXJ2aWNlIHBvdXIgY2V0IHVzYWdlLCBldCBkZSBuZSBwYXMgbXV0dWFsaXNlciB1biBt6m1lIHLpcGVydG9pcmUgcG91cgpwbHVzaWV1cnMgc2VydmljZXMgZGUgbmF0dXJlIGRpZmbpcmVudGUuIFBvdXIgcmVuZHJlIGwnaXNvbGVtZW50IHBsdXMgcm9idXN0ZSwKaWwgZXN0IGNvbnNlaWxs6SBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgdmlkZSwgc2FucyBhdWN1biBkcm9pdCwgZXQgZGUgY2hhbmdlcgpsJ3VpZCBkdSBwcm9jZXNzdXMgZGUgc29ydGUgcXUnaWwgbmUgcHVpc3NlIHJpZW4gZmFpcmUgZGFucyBsZWRpdCBy6XBlcnRvaXJlLgoKUmVtYXJxdWUgaW1wb3J0YW50ZSA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlIGNhcyBv+SB1bmUgdGVsbGUgZmFpbGxlIHNlcmFpdCBtaXNlIGVuIOl2aWRlbmNlLCBpbCBlc3QgZm9ydCBwcm9iYWJsZQpxdWUgbGVzIHByZW1p6HJlcyB0ZW50YXRpdmVzIGRlIHNvbiBleHBsb2l0YXRpb24gcHJvdm9xdWVudCB1biBhcnLqdCBkdQpwcm9ncmFtbWUsIOAgY2F1c2UgZCd1biBzaWduYWwgZGUgdHlwZSAnU2VnbWVudGF0aW9uIEZhdWx0JywgJ0J1cyBFcnJvcicgb3UKZW5jb3JlICdJbGxlZ2FsIEluc3RydWN0aW9uJy4gTeptZSBzJ2lsIGVzdCB2cmFpIHF1ZSBmYWlyZSB0b3VybmVyIGxlIHNlcnZldXIKZW4gZW52aXJvbm5lbWVudCBsaW1pdOkgculkdWl0IGxlcyByaXNxdWVzIGQnaW50cnVzaW9uLCBpbCBlc3QgcGFyZm9pcyBiaWVuCnV0aWxlIGRhbnMgY2VzIGNpcmNvbnN0YW5jZXMgZGUgY29ubmHudHJlIGxlcyBjb25kaXRpb25zIGQnYXBwYXJpdGlvbiBkdQpwcm9ibOhtZSwgdmlhIGwnb2J0ZW50aW9uIGQndW4gZmljaGllciAnY29yZScuIExhIHBsdXBhcnQgZGVzIHN5c3TobWVzLCBwb3VyCmRlcyByYWlzb25zIGRlIHPpY3VyaXTpLCBk6XNhY3RpdmVudCBsYSBn6W7pcmF0aW9uIGR1IGZpY2hpZXIgJ2NvcmUnIGFwcuhzIHVuCmNoYW5nZW1lbnQgZCdpZGVudGlmaWFudCBwb3VyIGxlIHByb2Nlc3N1cy4gSWwgZmF1ZHJhIGRvbmMgc29pdCBsYW5jZXIgbGUKcHJvY2Vzc3VzIOAgcGFydGlyIGQndW4gY29tcHRlIHV0aWxpc2F0ZXVyIGF1eCBkcm9pdHMgculkdWl0cyAobWFpcyBuZSBwb3V2YW50CnBhcyBlZmZlY3R1ZXIgbGUgY2hyb290KSwgb3UgYmllbiBsZSBmYWlyZSBlbiByb290IHNhbnMgculkdWN0aW9uIGRlcyBkcm9pdHMKKHVpZCAwKS4gRGFucyBjZSBjYXMsIGxlIGZpY2hpZXIgc2UgdHJvdXZlcmEgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgZGUKbGFuY2VtZW50LCBzb2l0IGRhbnMgbGUgculwZXJ0b2lyZSBzcOljaWZp6SBhcHLocyBsJ29wdGlvbiAnY2hyb290Jy4gTmUgcGFzCm91YmxpZXIgbGEgY29tbWFuZGUgc3VpdmFudGUgcG91ciBhdXRvcmlzZXIgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyIGF2YW50IGRlCmxhbmNlciBsZSBwcm9ncmFtbWUgOgoKIyB1bGltaXQgLWMgdW5saW1pdGVkCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgdWlkICAgICAgICAzMDAwMAogICAgICAgIGdpZCAgICAgICAgMzAwMDAKICAgICAgICBjaHJvb3QgIC92YXIvY2hyb290L2hhcHJveHkKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKTGUgcGFyYW3odHJlIGRlIGxpZ25lIGRlIGNvbW1hbmRlICctZGInIGluaGliZSBsZXMgb3B0aW9ucyBnbG9iYWxlcyAnZGFlbW9uJwpldCAnbmJwcm9jJyBwb3VyIGZhaXJlIGZvbmN0aW9ubmVyIGxlIHByb2Nlc3N1cyBlbiBtb2RlIG5vcm1hbCwgYXZhbnQtcGxhbi4KClBhciBhaWxsZXVycywgY2VydGFpbnMgbWVzc2FnZXMgZCdhbGVydGUgc29udCB0b3Vqb3VycyBlbnZveelzIHN1ciBsYSBzb3J0aWUKc3RhbmRhcmQsIG3qbWUgZW4gbW9kZSAnZGFlbW9uJy4gUG91ciBuZSBwbHVzIGxlcyB2b2lyIGFpbGxldXJzIHF1ZSBkYW5zIGxlcwpsb2dzLCBpbCBzdWZmaXQgZGUgcGFzc2VyIGVuIG1vZGUgc2lsZW5jaWV1eCBwYXIgbCdham91dCBkZSBsJ29wdGlvbiAncXVpZXQnLgpDZXR0ZSBvcHRpb24gbidhIHBhcyBkJ+lxdWl2YWxlbnQgZW4gbGlnbmUgZGUgY29tbWFuZGUuCgpFbmZpbiwgbGUgbW9kZSAnZGVidWcnIHBlcm1ldCBkZSBkaWFnbm9zdGlxdWVyIGxlcyBvcmlnaW5lcyBkZSBjZXJ0YWlucwpwcm9ibOhtZXMgZW4gYWZmaWNoYW50IGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMgZXQg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCmVudHJlIGxlcyBjbGllbnRzIGV0IGxlcyBzZXJ2ZXVycy4gQ2UgbW9kZSBlc3QgaW5jb21wYXRpYmxlIGF2ZWMgbGVzIG9wdGlvbnMKJ2RhZW1vbicgZXQgJ3F1aWV0JyBwb3VyIGRlcyByYWlzb25zIGRlIGJvbiBzZW5zLgoKMS41KSBBY2Nyb2lzc2VtZW50IGRlIGxhIGNhcGFjaXTpIGRlIHRyYWl0ZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VyIGRlcyBtYWNoaW5lcyBtdWx0aS1wcm9jZXNzZXVycywgaWwgcGV1dCBzZW1ibGVyIGfiY2jpIGRlIG4ndXRpbGlzZXIgcXUndW4KcHJvY2Vzc2V1ciBwb3VyIGVmZmVjdHVlciBsZXMgdOJjaGVzIGRlIHJlbGF5YWdlLCBt6m1lIHNpIGxlcyBjaGFyZ2VzCm7pY2Vzc2FpcmVzIOAgc2F0dXJlciB1biBwcm9jZXNzZXVyIGFjdHVlbCBzb250IGJpZW4gYXUtZGVs4CBkZXMgb3JkcmVzIGRlCmdyYW5kZXVyIGNvdXJhbW1lbnQgcmVuY29udHLpcy4gQ2VwZW5kYW50LCBwb3VyIGRlcyBiZXNvaW5zIHBhcnRpY3VsaWVycywgbGUKcHJvZ3JhbW1lIHNhaXQgZOltYXJyZXIgcGx1c2lldXJzIHByb2Nlc3N1cyBzZSBy6XBhcnRpc3NhbnQgbGEgY2hhcmdlIGRlCnRyYXZhaWwuIENlIG5vbWJyZSBkZSBwcm9jZXNzdXMgZXN0IHNw6WNpZmnpIHBhciBsZSBwYXJhbeh0cmUgJ25icHJvYycgZGUgbGEKc2VjdGlvbiAnZ2xvYmFsJy4gU2EgdmFsZXVyIHBhciBk6WZhdXQgZXN0IG5hdHVyZWxsZW1lbnQgMS4gQ2VjaSBuZSBmb25jdGlvbm5lCnF1J2VuIG1vZGUgJ2RhZW1vbicuIFVuIHVzYWdlIGTpauAgcmVuY29udHLpIHBvdXIgY2UgcGFyYW3odHJlIGZ1dCBkZSBk6XBhc3NlcgpsYSBsaW1pdGUgZGUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyBhbGxvdellIHBhciBwcm9jZXNzdXMgc291cwpTb2xhcmlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jICAgICAgICAyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgogICAgIyBwb3VyIHJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBhdmVjIHVuIGltcGFjdCBtaW5pbWFsIHN1ciBsZSBzZXJ2aWNlLAogICAgIyBldCBzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcyA6CiAgICAjIGhhcHJveHkgLWYgaGFwcm94eS5jZmcgLXAgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkgLXN0ICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgoxLjcpIE3pY2FuaXNtZXMgZGUgdHJhaXRlbWVudHMgZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjUsIGhhcHJveHkgc3VwcG9ydGUgbGVzIG3pY2FuaXNtZXMgcG9sbCgpIGV0CmVwb2xsKCkuIFN1ciBsZXMgc3lzdGVtcyBv+SBzZWxlY3QoKSBlc3QgbGltaXTpIHBhciBGRF9TRVRTSVpFIChjb21tZSBTb2xhcmlzKSwKcG9sbCgpIHBldXQg6nRyZSB1bmUgYWx0ZXJuYXRpdmUgaW506XJlc3NhbnRlLiBEZXMgdGVzdHMgZGUgcGVyZm9ybWFuY2UKbW9udHJlbnQgcXVlIGxlcyBwZXJmb3JtYW5jZXMgZGUgcG9sbCgpIG5lIGTpY3JvaXNzZW50IHBhcyBhdXNzaSB2aXRlIHF1ZSBsZQpub21icmUgZGUgc29ja2V0cyBhdWdtZW50ZSwgY2UgcXVpIGVuIGZhaXQgdW5lIHNvbHV0aW9uIHP7cmUgcG91ciBsZXMgZm9ydGVzCmNoYXJnZXMuIENlbGEgZGl0LCBTb2FscmlzIHV0aWxpc2UgZOlq4CBwb2xsKCkgcG91ciDpbXVsZXIgc2VsZWN0KCksIGRvbmMgdGFudApxdWUgbGUgbm9tYnJlIGRlIHNvY2tldHMgbmUgZOlwYXNzZSBwYXMgRkRfU0VUU0laRSwgcG9sbCgpIG5lIGRldnJhaXQgcGFzCmFwcG9ydGVyIGRlIHBlcmZvcm1hbmNlcyBzdXBwbOltZW50YWlyZXMuIFN1ciBsZXMgc3lzdOhtZXMg4CBiYXNlIExpbnV4CmluY2x1YW50IGxlIHBhdGNoIGVwb2xsKCkgKG91IHRvdXMgbGVzIExpbnV4IDIuNiksIGhhcHJveHkgdXRpbGlzZXJhIGVwb2xsKCkKcXVpIGVzdCBleHRy6G1lbWVudCByYXBpZGUgaW5k6XBlbmRhbW1lbnQgZHUgbm9tYnJlIGRlIHNvY2tldHMuIExlcyB0ZXN0cyBzdXIKaGFwcm94eSBvbnQgbW9udHLpIHVuZSBwZXJmb3JtYW5jZSBjb25zdGFudGUgZGUgMSDgIDQwMDAwIHNlc3Npb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKSBsb3JzcXUnaWwgZXN0IGRpc3BvbmlibGUsIGV0IHNlIHJlcGxpZXJhIHN1ciBwb2xsKCksCnB1aXMgZW4gZGVybmllciBsaWV1IHN1ciBzZWxlY3QoKS4gQ2VwZW5kYW50LCBzaSBwb3VyIHVuZSByYWlzb24gcXVlbGNvbnF1ZSBpbApzJ2F26XJhaXQgbuljZXNzYWlyZSBkZSBk6XNhY3RpdmVyIGVwb2xsKCkgb3UgcG9sbCgpIChwLmV4OiDgIGNhdXNlIGQndW4gYnVnIG91Cmp1c3RlIHBvdXIgY29tcGFyZXIgbGVzIHBlcmZvcm1hbmNlcyksIGRldXggbm91dmVsbGVzIG9wdGlvbnMgZ2xvYmFsZXMgb250IOl06Qpham91dOllcyBkYW5zIGNlIGJ1dCA6ICdub2Vwb2xsJyBldCAnbm9wb2xsJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgICMgdXRpbGlzZXIgc2V1bGVtZW50IHNlbGVjdCgpCiAgICAgICAgbm9lcG9sbAogICAgICAgIG5vcG9sbAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpIGV0IGxlIHBhcmFt6HRyZSAnLWRwJyBk6XNhY3RpdmUgcG9sbCgpLiBJbHMgc29udApyZXNwZWN0aXZlbWVudCDpcXVpdmFsZW50cyDgICdub2Vwb2xsJyBldCAnbm9wb2xsJy4KCgoyKSBE6WZpbml0aW9uIGQndW4gc2VydmljZSBlbiDpY291dGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgc2VjdGlvbnMgZGUgc2VydmljZSBk6WJ1dGVudCBwYXIgbGUgbW90IGNs6SAibGlzdGVuIiA6CgogICAgbGlzdGVuIDxub21faW5zdGFuY2U+IFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKLSA8bm9tX2luc3RhbmNlPiBlc3QgbGUgbm9tIGRlIGwnaW5zdGFuY2UgZOljcml0ZS4gQ2Ugbm9tIHNlcmEgZW52b3npIGRhbnMgbGVzCiAgbG9ncywgZG9uYyBpbCBlc3Qgc291aGFpdGFibGUgZCd1dGlsaXNlciB1biBub20gcmVsYXRpZiBhdSBzZXJ2aWNlIHJlbGF56S4KICBBdWN1biB0ZXN0IG4nZXN0IGVmZmVjdHXpIGNvbmNlcm5hbnQgbCd1bmljaXTpIGRlIGNlIG5vbSwgcXVpIG4nZXN0IHBhcwogIG9ibGlnYXRvaXJlLCBtYWlzIGZvcnRlbWVudCByZWNvbW1hbmTpZS4KCi0gPGFkcmVzc2VfSVA+IGVzdCBsJ2FkcmVzc2UgSVAgc3VyIGxhcXVlbGxlIGxlIHJlbGFpcyBhdHRlbmQgc2VzIGNvbm5leGlvbnMuCiAgTCdhYnNlbmNlIGQnYWRyZXNzZSBhaW5zaSBxdWUgbCdhZHJlc3NlIDAuMC4wLjAgc2lnbmlmaWVudCBxdWUgbGVzIGNvbm5leGlvbnMKICBwb3Vycm9udCBzJ2VmZmVjdHVlciBzdXIgdG91dGVzIGxlcyBhZHJlc3NlcyBkZSBsYSBtYWNoaW5lLgoKLSA8cGxhZ2VfcG9ydHM+IGNvcnJlc3BvbmQgc29pdCDgIHVuIHBvcnQsIHNvaXQg4CB1bmUgcGxhZ2UgZGUgcG9ydHMgc3VyCiAgbGVzcXVlbHMgbGUgcmVsYWlzIGFjY2VwdGVyYSBkZXMgY29ubmV4aW9ucyBwb3VyIGwnYWRyZXNzZSBJUCBzcOljaWZp6WUuCiAgQ2V0dGUgcGxhZ2UgcGV1dCDqdHJlIDoKICAgIC0gc29pdCB1biBwb3J0IG51belyaXF1ZSAoZXg6ICc4MCcpCiAgICAtIHNvaXQgdW5lIHBsYWdlIGNvbnN0aXR16WUgZGUgZGV1eCB2YWxldXJzIHPpcGFy6WVzIHBhciB1biB0aXJldAogICAgICAoZXg6ICcyMDAwLTIxMDAnKSByZXBy6XNlbnRhbnQgbGVzIGV4dHLpbWl06XMgaW5jbHVzZXMgZGFucyBsYQogICAgICBwbGFnZS4KICBJbCBmYXV0IGZhaXJlIGF0dGVudGlvbiDgIGwndXNhZ2UgZGVzIHBsYWdlcywgY2FyIGNoYXF1ZSBjb21iaW5haXNvbgogIDxhZHJlc3NlX0lQPjo8cG9ydD4gY29uc29tbWUgdW5lIHNvY2tldCwgZG9uYyB1biBkZXNjcmlwdGV1ciBkZSBmaWNoaWVyLgogIExlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBvcnQ+IGRvaXQg6nRyZSB1bmlxdWUgcG91ciB0b3V0ZXMgbGVzICBpbnN0YW5jZXMKICBkJ3VuZSBt6m1lIG1hY2hpbmUuIEwnYXR0YWNoZW1lbnQg4CB1biBwb3J0IGluZulyaWV1ciDgIDEwMjQgbuljZXNzaXRlIHVuCiAgbml2ZWF1IGRlIHByaXZpbOhnZSBwYXJ0aWN1bGllciBsb3JzIGR1IGxhbmNlbWVudCBkdSBwcm9ncmFtbWUKICAoaW5k6XBlbmRhbW1lbnQgZHUgcGFyYW3odHJlICd1aWQnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcpLgoKLSBsZSBjb3VwbGUgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz4gcGV1dCDqdHJlIHLpcOl06SBpbmTpZmluaW1lbnQgcG91cgogIGRlbWFuZGVyIGF1IHJlbGFpcyBkJ+ljb3V0ZXIg6WdhbGVtZW50IHN1ciBkJ2F1dHJlcyBhZHJlc3NlcyBldC9vdSBkJ2F1dHJlcwogIHBsYWdlcyBkZSBwb3J0cy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZGUgc+lwYXJlciBsZXMgY291cGxlcyBwYXIgdW5lIHZpcmd1bGUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICBsaXN0ZW4geDExX3Byb3h5IDEyNy4wLjAuMTo2MDAwLTYwMDkKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDEyNy4wLjAuMToyNSwxMjcuMC4wLjE6NTg3CiAgICBsaXN0ZW4gbGRhcF9wcm94eSA6Mzg5LDo2NjMKClNpIHRvdXRlcyBsZXMgYWRyZXNzZXMgbmUgdGllbm5lbnQgcGFzIHN1ciB1bmUgbGlnbmUsIGlsIGVzdCBwb3NzaWJsZSBkJ2VuCnJham91dGVyIOAgbCdhaWRlIGR1IG1vdCBjbOkgJ2JpbmQnLiBEYW5zIGNlIGNhcywgaWwgbidlc3QgbeptZSBwYXMgbuljZXNzYWlyZQpkZSBzcOljaWZpZXIgbGEgcHJlbWnocmUgYWRyZXNzZSBzdXIgbGEgbGlnbmUgbGlzdGVuLCBjZSBxdWkgZmFjaWxpdGUgcGFyZm9pcwpsJ+ljcml0dXJlIGRlIGNvbmZpZ3VyYXRpb25zIDoKCiAgICBiaW5kIFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBiaW5kIDEwLjAuMC4xOjEwMDgwLDEwLjAuMC4xOjEwNDQzCgoyLjEpIEluaGliaXRpb24gZCd1biBzZXJ2aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IOp0cmUgZOlzYWN0aXbpIHBvdXIgZGVzIGJlc29pbnMgZGUgbWFpbnRlbmFuY2UsIHNhbnMgYXZvaXIg4Apjb21tZW50ZXIgdG91dGUgdW5lIHBhcnRpZSBkdSBmaWNoaWVyLiBJbCBzdWZmaXQgZGUgcG9zaXRpb25uZXIgbGUgbW90IGNs6QoiZGlzYWJsZWQiIGRhbnMgc2Egc2VjdGlvbiA6CgogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIGRpc2FibGVkCgpSZW1hcnF1ZTogbGUgbW90IGNs6SAnZW5hYmxlZCcgcGVybWV0IGRlIHLpYWN0aXZlciB1biBzZXJ2aWNlIHBy6WFsYWJsZW1lbnQKICAgICAgICAgIGTpc2FjdGl26SBwYXIgbGUgbW90IGNs6SAnZGlzYWJsZWQnLCBwYXIgZXhlbXBsZSDgIGNhdXNlIGQndW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uIHBhciBk6WZhdXQuCgoyLjIpIE1vZGUgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHRyb2lzIG1vZGVzIGRpZmbpcmVudHMgOgogIC0gVENQCiAgLSBIVFRQCiAgLSDpdGF0IGRlIHNhbnTpCgpNb2RlIFRDUAotLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllLCBk6HMgbGV1ciDpdGFibGlzc2VtZW50LCBsZXMgY29ubmV4aW9ucyBUQ1AKdmVycyB1biBvdSBwbHVzaWV1cnMgc2VydmV1cnMuIEF1Y3VuIHRyYWl0ZW1lbnQgbidlc3QgZWZmZWN0dekgc3VyIGxlIGZsdXguIElsCnMnYWdpdCBzaW1wbGVtZW50IGQndW5lIGFzc29jaWF0aW9uCiAgICAgc291cmNlPGFkcmVzc2U6cG9ydD4gLT4gZGVzdGluYXRpb248YWRyZXNzZTpwb3J0Pi4KUG91ciBsJ3V0aWxpc2VyLCBwculjaXNlciBsZSBtb2RlIFRDUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBtb2RlIHRjcAoKTW9kZSBIVFRQCi0tLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllIGxlcyBjb25uZXhpb25zIFRDUCB2ZXJzIHVuIG91IHBsdXNpZXVycwpzZXJ2ZXVycywgdW5lIGZvaXMgcXUnaWwgZGlzcG9zZSBkJ2Fzc2V6IGQnaW5mb3JtYXRpb25zIHBvdXIgZW4gcHJlbmRyZSBsYQpk6WNpc2lvbi4gTGVzIGVuLXTqdGVzIEhUVFAgc29udCBhbmFseXPpcyBwb3VyIHkgdHJvdXZlciB1biDpdmVudHVlbCBjb29raWUsIGV0CmNlcnRhaW5zIGQnZW50cmUtZXV4IHBldXZlbnQg6nRyZSBtb2RpZmnpcyBwYXIgbGUgYmlhaXMgZCdleHByZXNzaW9ucwpy6Wd1bGnocmVzLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIgbGUgbW9kZSBIVFRQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUKcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAoKTW9kZSBzdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tCklsIHMnYWdpdCBkJ3VuIG1vZGUgb2ZmcmFudCDgIHVuIGNvbXBvc2FudCBleHRlcm5lIHVuZSB2aXNpYmlsaXTpIGRlIGwn6XRhdCBkZQpzYW506SBkdSBzZXJ2aWNlLiBJbCBzZSBjb250ZW50ZSBkZSByZXRvdXJuZXIgIk9LIiDgIHRvdXQgY2xpZW50IHNlIGNvbm5lY3RhbnQKc3VyIHNvbiBwb3J0LiBJbCBwZXV0IOp0cmUgdXRpbGlz6SBhdmVjIGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIOl2b2x16XMgcG91cgpk6XRlcm1pbmVyIHF1ZWxzIHNvbnQgbGVzIHNlcnZpY2VzIHV0aWxpc2FibGVzLiBTaSBsJ29wdGlvbiAnaHR0cGNoaycgZXN0CmFjdGl26WUsIGFsb3JzIGxhIHLpcG9uc2UgY2hhbmdlcmEgZW4gJ0hUVFAvMS4wIDIwMCBPSycgcG91ciBzYXRpc2ZhaXJlIGxlcwphdHRlbnRlcyBkZSBjb21wb3NhbnRzIHNhY2hhbnQgdGVzdGVyIGVuIEhUVFAuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlcgpsZSBtb2RlIEhFQUxUSCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgculwb25zZSBzaW1wbGUgOiAnT0snCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAoKICAgICMgculwb25zZSBIVFRQIDogJ0hUVFAvMS4wIDIwMCBPSycKICAgIGxpc3RlbiBodHRwX2hlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAxCiAgICAgICAgbW9kZSBoZWFsdGgKICAgICAgICBvcHRpb24gaHR0cGNoawoKCjIuMi4xIFN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0tCkxlcyB2ZXJzaW9ucyAxLjEuMzIgZXQgMS4yLjYgYXBwb3J0ZW50IHVuZSBub3V2ZWxsZSBzb2x1dGlvbiBwb3VyIHZhbGlkZXIgbGUKYm9uIGZvbmN0aW9ubmVtZW50IGR1IHByb3h5IHNhbnMgcGVydHVyYmVyIGxlIHNlcnZpY2UuIExlIG1vdC1jbOkgJ21vbml0b3ItbmV0JwphIOl06SBjcunpIGRhbnMgbGUgYnV0ZCBkZSBzcOljaWZpZXIgdW4gculzZWF1IGQn6XF1aXBlbWVudHMgcXVpIG5lIFBFVVZFTlQgUEFTCnV0aWxpc2VyIGxlIHNlcnZpY2UgcG91ciBhdXRyZSBjaG9zZSBxdWUgZGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50LiBDJ2VzdApwYXJ0aWN1bGnocmVtZW50IGFkYXB06SBhdXggcHJveGllcyBUQ1AsIGNhciBjZWxhIGVtcOpjaGUgbGUgcHJveHkgZGUgcmVsYXllcgpkZXMg6XRhYmxpc3NlbWVudHMgZGUgY29ubmV4aW9uIOltaXMgcGFyIHVuIG91dGlsIGRlIHN1cnZlaWxsYW5jZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgVENQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllIHB1aXMgcmVmZXJt6WUKZXQgcmllbiBuJ2VzdCBsb2d16S4gQydlc3Qgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIGVuIGFtb250CmTpdGVjdGUgcXVlIGxlIHNlcnZpY2UgZXN0IGRpc3BvbmlibGUuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IEhUVFAsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUsIHJpZW4gbidlc3QKbG9ndeksIHB1aXMgbGEgculwb25zZSBzdWl2YW50ZSBlc3QgZW52b3npZSBldCBsYSBzZXNzaW9uIHJlZmVybellIDoKIkhUVFAvMS4wIDIwMCBPSyIuIEMnZXN0IG5vcm1hbGVtZW50IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZQpIVFRQIGVuIGFtb250IGTpdGVjdGUgbGUgc2VydmljZSBjb21tZSBvcOlyYXRpb25uZWwsIGF1c3NpIGJpZW4g4CB0cmF2ZXJzIGRlcwp0ZXN0cyBUQ1AgcXVlIEhUVFAuCgpMZXMgcHJveGllcyB1dGlsaXNhbnQgbGUgbW90LWNs6SAnbW9uaXRvci1uZXQnIHBldXZlbnQgYWNjZXNzb2lyZW1lbnQgc2UgcGFzc2VyCmRlIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIGNlIHF1aSBwZXJtZXR0cmEgZGUgbG9ndWVyIGxlcyBjb25uZXhpb25zIHZpZGVzCultaXNlcyBkZXB1aXMgZCdhdXRyZXMgYWRyZXNzZXMgcXVlIGNlbGxlcyBkdSBy6XNlYXUgZGUgdGVzdHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHRzZS1wcm94eQogICAgICAgYmluZCA6MzM4OSw6MTQ5NCw6NTkwMCAgIyBUU0UsIElDQSBhbmQgVk5DIGF0IG9uY2UuCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgdHNlLWZhcm0gMTkyLjE2OC4xLjEwCiAgICAgICBtb25pdG9yLW5ldCAxOTIuMTY4LjEuMjUyLzMxICAgIyBMNCBsb2FkLWJhbGFuY2VycyBvbiAuMjUyIGFuZCAuMjUzCgoKTG9yc3F1ZSBsZSBzeXN06G1lIGVmZmVjdHVhbnQgbGVzIHRlc3RzIGVzdCBzaXR16SBkZXJyaehyZSB1biBwcm94eSwgbGUgbW90LWNs6QonbW9uaXRvci1uZXQnIG4nZXN0IHBhcyB1dGlsaXNhYmxlIGR1IGZhaXQgcXVlIGhhcHJveHkgdmVycmEgdG91am91cnMgbGEgbeptZQphZHJlc3NlIHBvdXIgbGUgcHJveHkuIFBvdXIgcGFsbGllciDgIGNldHRlIGxpbWl0YXRpb24sIGxhIHZlcnNpb24gMS4yLjE1IGEKYXBwb3J06SBsZSBtb3QtY2zpICdtb25pdG9yLXVyaScuIElsIGTpZmluaXQgdW5lIFVSSSBxdWkgbmUgc2VyYSBuaSByZXRyYW5zbWlzZQpuaSBsb2fpZSwgbWFpcyBwb3VyIGxhcXVlbGxlIGhhcHJveHkgcmV0b3VybmVyYSBpbW3pZGlhdGVtZW50IHVuZSBy6XBvbnNlCiJIVFRQLzEuMCAyMDAgT0siLiBDZWxhIHJlbmQgcG9zc2libGVzIGxlcyB0ZXN0cyBkZSB2YWxpZGl06SBkJ3VuZSBjaGHubmUKcmV2ZXJzZS1wcm94eS0+aGFwcm94eSBlbiB1bmUgcmVxdep0ZSBIVFRQLiBDZWxhIHBldXQg6nRyZSB1dGlsaXPpIHBvdXIgdmFsaWRlcgp1bmUgY29tYmluYWlzaW9uIGRlIHN0dW5uZWwraGFwcm94eSDgIGwnYWlkZSBkZSB0ZXN0cyBIVFRQUyBwYXIgZXhlbXBsZS4gQmllbgplbnRlbmR1LCBjZSBtb3QtY2zpIG4nZXN0IHZhbGlkZSBxdSdlbiBtb2RlIEhUVFAsIHNpbm9uIGlsIG4neSBhIHBhcyBkZSBub3Rpb24KZCdVUkkuIE5vdGVyIHF1ZSBsYSBt6XRob2RlIGV0IGxhIHZlcnNpb24gSFRUUCBzb250IHNpbXBsZW1lbnQgaWdub3LpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHN0dW5uZWxfYmFja2VuZCA6ODA4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xMDo4MCBjaGVjawogICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjExOjgwIGNoZWNrCiAgICAgICBtb25pdG9yLXVyaSAvaGFwcm94eV90ZXN0CgoKMi4zKSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBwYXJhbeh0cmUgIm1heGNvbm4iIHBlcm1ldCBkZSBmaXhlciBsYSBsaW1pdGUgYWNjZXB0YWJsZSBlbiBub21icmUgZGUKY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHkuIENoYXF1ZSBwcm94eSBxdWkgYXR0ZWludCBjZXR0ZSB2YWxldXIgY2Vzc2UKZCfpY291dGVyIGp1c3F1J+AgbGli6XJhdGlvbiBkJ3VuZSBjb25uZXhpb24uIFZvaXIgcGx1cyBsb2luIGNvbmNlcm5hbnQgbGVzCmxpbWl0YXRpb25zIGxp6WVzIGF1IHN5c3TobWUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gdGlueV9zZXJ2ZXIgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAKCgoyLjQpIEFycup0IGVuIGRvdWNldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkJ2Fycup0ZXIgbGVzIHNlcnZpY2VzIGVuIGRvdWNldXIgZW4gZW52b3lhbnQgdW4gc2lnbmFsClNJR1VTUjEgYXUgcHJvY2Vzc3VzIHJlbGFpcy4gVG91cyBsZXMgc2VydmljZXMgc2Vyb250IGFsb3JzIG1pcyBlbiBwaGFzZQpkJ2Fycup0LCBtYWlzIHBvdXJyb250IGNvbnRpbnVlciBkJ2FjY2VwdGVyIGRlcyBjb25uZXhpb25zIHBlbmRhbnQgdW4gdGVtcHMKZOlmaW5pIHBhciBsZSBwYXJhbeh0cmUgJ2dyYWNlJyAoZW4gbWlsbGlzZWNvbmRlcykuIENlbGEgcGVybWV0IHBhciBleGVtcGxlLApkZSBmYWlyZSBzYXZvaXIgcmFwaWRlbWVudCDgIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBxdSdpbCBuZSBkb2l0IHBsdXMKdXRpbGlzZXIgdW4gcmVsYWlzLCB0b3V0IGVuIGNvbnRpbnVhbnQgZCdhc3N1cmVyIGxlIHNlcnZpY2UgbGUgdGVtcHMgcXUnaWwKcydlbiByZW5kZSBjb21wdGUuCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgYWN0aXZlcyBuZSBzb250IGphbWFpcyBjYXNz6WVzLiBEYW5zIGxlIHBpcmUgZGVzIGNhcywgaWwgZmF1ZHJhCmF0dGVuZHJlIGVuIHBsdXMgbGV1ciBleHBpcmF0aW9uIGF2YW50IGwnYXJy6nQgdG90YWwgZHUgcHJvY2Vzc3VzLCBvdSBiaWVuIHR1ZXIKbWFudWVsbGVtZW50IGxlIHByb2Nlc3N1cyBwYXIgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdURVJNLiBMYSB2YWxldXIgcGFyIGTpZmF1dApkdSBwYXJhbeh0cmUgJ2dyYWNlJyBlc3QgMCAocGFzIGRlIGdy4mNlLCBhcnLqdCBpbW3pZGlhdCBkZSBsJ+ljb3V0ZSkuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGFycup0ZXIgZW4gZG91Y2V1ciBwYXIgJ2tpbGxhbGwgLVVTUjEgaGFwcm94eScKICAgICMgbGUgc2VydmljZSB0b3VybmVyYSBlbmNvcmUgMTAgc2Vjb25kZXMgYXBy6HMgbGEgZGVtYW5kZSBkJ2Fycup0CiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgZ3JhY2UgMTAwMDAKCiAgICAjIGNlIHBvcnQgbidlc3QgdGVzdOkgcXVlIHBhciB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UuCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIGdyYWNlIDAKCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjgsIHVuIG5vdXZlYXUgbeljYW5pc21lIGRlIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkCmEg6XTpIGludHJvZHVpdC4gSWwgZXN0IGTpc29ybWFpcyBwb3NzaWJsZSBkZSBtZXR0cmUgbGVzIHByb3hpZXMgZW4gInBhdXNlIiBlbgplbnZveWFudCB1biBzaWduYWwgU0lHVFRPVSBhdXggcHJvY2Vzc3VzLiBDZWxhIGTpc2FjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlCnNhbnMgY2Fzc2VyIGxlcyBzZXNzaW9ucyBleGlzdGFudGVzLiBTdWl0ZSDgIGNlbGEsIGwnZW52b2kgZCd1biBzaWduYWwgU0lHVFRJTgpy6WFjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlLiBDZWNpIGVzdCB0cuhzIHByYXRpcXVlIHBvdXIgdGVudGVyIGRlIGNoYXJnZXIKdW5lIG5vdXZlbGxlIGNvbmZpZ3VyYXRpb24gb3UgbeptZSB1bmUgbm91dmVsbGUgdmVyc2lvbiBkZSBoYXByb3h5IHNhbnMgY2Fzc2VyCmxlcyBjb25uZXhpb25zIGV4aXN0YW50ZXMuIFNpIGxlIHJlY2hhcmdlbWVudCBzJ2VmZmVjdHVlIGNvcnJlY3RlbWVudCwgaWwgbmUKcmVzdGUgcGx1cyBxdSfgIGVudm95ZXIgdW4gc2lnbmFsIFNJR1VTUjEgYXV4IGFuY2llbnMgcHJvY2Vzc3VzLCBjZSBxdWkKcHJvdm9xdWVyYSBsZXVyIGFycup0IGltbelkaWF0IGTocyBxdWUgbGV1cnMgY29ubmV4aW9ucyBzZXJvbnQgdGVybWlu6WVzIDsgZW4KcmV2YW5jaGUsIHNpIGxlIHJlY2hhcmdlbWVudCDpY2hvdWUsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsIFNJR1RUSU4gcG91cgpyZW1ldHRyZSBsZXMgcG9ydHMgZW4g6WNvdXRlIGV0IHLpdGFibGlyIGxlIHNlcnZpY2UgaW1t6WRpYXRlbWVudC4gVmV1aWxsZXoKbm90ZXIgcXVlIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCBpZ25vcukgcG91ciBsZSBzaWduYWwgU0lHVFRPVSBhaW5zaSBxdWUgbGUKc2lnbmFsIFNJR1VTUjEgdW5lIGZvaXMgbGUgcHJvY2Vzc3VzIGVuIHBhdXNlLiBBdXNzaSwgaWwgcGV1dCBzJ2F26XJlciB0cuhzCnV0aWxlIGRlIHNhdXZlciBsZSBmaWNoaWVyIGRlIHBpZCBhdmFudCBkZSBk6W1hcnJlciB1bmUgbm91dmVsbGUgaW5zdGFuY2UuCgpDZSBt6WNhbmlzbWUgZXN0IHBsZWluZW1lbnQgZXhwbG9pdOkg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuMTEgYXZlYyBsZXMKb3B0aW9ucyAnLXN0JyBldCAnLXNmJyAodm9pciBjaS1kZXNzb3VzKS4KCjIuNCkgUmVjb25maWd1cmF0aW9uIOAgY2hhdWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgaW5mb3JtZXIgZGVzIHByb2Nlc3N1cwpleGlzdGFudHMgcXVlIGxhIGNvbmZpZ3VyYXRpb24gdmEg6nRyZSByZWNoYXJn6WUuIElscyByZWNldnJvbnQgbGUgc2lnbmFsClNJR1RUT1UsIGxldXIgZGVtYW5kYW50IGRlIGxpYulyZXIgbGVzIHBvcnRzIGVuIOljb3V0ZSBhZmluIHF1ZSBsZSBub3V2ZWF1CnByb2Nlc3N1cyBwdWlzc2UgbGVzIHByZW5kcmUuIFNpIHF1b2kgcXVlIGNlIHNvaXQgc2UgcGFzc2UgbWFsLCBsZSBub3V2ZWF1CnByb2Nlc3N1cyBsZXVyIGVudmVycmEgdW4gc2lnbmFsIFNJR1RUSU4gcG91ciBsZXVyIGluZGlxdWVyIHF1J2lscyBwZXV2ZW50CnNlIHJlbWV0dHJlIGVuIOljb3V0ZSBldCBjb250aW51ZXIgbGV1ciB0cmF2YWlsLiBFbiByZXZhbmNoZSwgc2kgbGEKY29uZmlndXJhdGlvbiBzZSBjaGFyZ2UgY29ycmVjdGVtZW50LCBhbG9ycyBpbHMgcmVjZXZyb250IHVuIHNpZ25hbCBkZSBkZW1hbmRlCmRlIGZpbiBkZSB0cmF2YWlsIGVuIGRvdWNldXIgKC1zZiksIG91IGRlIHRlcm1pbmFpc29uIGltbelkaWF0ZSAoLXN0KSBxdWkKY291cGVyYSBsZXMgc2Vzc2lvbnMgZW4gY291cnMuIFVuIHVzYWdlIHR5cGlxdWUgdGVsIHF1ZSBjZWx1aS1jaSBwZXJtZXQgZGUKcmVjaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIHNhbnMgaW50ZXJydXB0aW9uIGRlIHNlcnZpY2UgOgoKICMgaGFwcm94eSAtcCAvdmFyL3J1bi9oYXByb3h5LnBpZCAtc2YgJChjYXQgL3Zhci9ydW4vaGFwcm94eS5waWQpCgoKMi41KSBUZW1wcyBkJ2V4cGlyYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgY2VydGFpbmVzIGR1cullcyBkJ2V4cGlyYXRpb24gYXUgbml2ZWF1IGRlcwpjb25uZXhpb25zIFRDUC4gVHJvaXMgdGVtcHMgaW5k6XBlbmRhbnRzIHNvbnQgY29uZmlndXJhYmxlcyBldCBhY2NlcHRlbnQgZGVzCnZhbGV1cnMgZW4gbWlsbGlzZWNvbmRlcy4gU2kgbCd1bmUgZGUgY2VzIHRyb2lzIHRlbXBvcmlzYXRpb25zIGVzdCBk6XBhc3PpZSwgbGEKc2Vzc2lvbiBlc3QgdGVybWlu6WUg4CBjaGFxdWUgZXh0cultaXTpLgoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBjbGllbnQsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJjbGl0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgY2xpZW50IOAgMm1uMzAuCiAgICAgICAgY2xpdGltZW91dCAgICAgICAgMTUwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJzcnZ0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgc2VydmV1ciDgIDMwcy4KICAgICAgICBzcnZ0aW1lb3V0ICAgICAgICAzMDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1cgogICAgImNvbnRpbWVvdXQiIDoKCiAgICAgICAgIyBvbiBhYmFuZG9ubmUgc2kgbGEgY29ubmV4aW9uIG4nZXN0IHBhcyDpdGFibGllIGFwcuhzIDQgc2Vjb25kZXMKICAgICAgICBjb250aW1lb3V0ICAgICAgICA0MDAwCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gImNvbnRpbWVvdXQiIGV0ICJzcnZ0aW1lb3V0IiBuJ29udCBwYXMgZCd1dGlsaXTpIGRhbnMgbGUgY2FzIGR1IHNlcnZldXIgZGUKICAgIHR5cGUgImhlYWx0aCIuCiAgLSBzb3VzIGRlIGZvcnRlcyBjaGFyZ2VzLCBvdSBzdXIgdW4gculzZWF1IHNhdHVy6SBvdSBk6WZlY3R1ZXV4LCBpbCBlc3QKICAgIHBvc3NpYmxlIGRlIHBlcmRyZSBkZXMgcGFxdWV0cy4gRHUgZmFpdCBxdWUgbGEgcHJlbWnocmUgcmV0cmFuc21pc3Npb24KICAgIFRDUCBuJ2FpdCBsaWV1IHF1J2F1IGJvdXQgZGUgMyBzZWNvdWRlcywgZml4ZXIgdW4gdGltZW91dCBkZSBjb25uZXhpb24KICAgIGluZulyaWV1ciDgIDMgc2Vjb25kZXMgbmUgcGVybWV0IHBhcyBkZSBzZSByYXR0cmFwZXIgc3VyIGxhIHBlcnRlCiAgICBkZSBwYXF1ZXRzIGNhciBsYSBzZXNzaW9uIGF1cmEg6XTpIGFiYW5kb25u6WUgYXZhbnQgbGEgcHJlbWnocmUKICAgIHJldHJhbnNtaXNzaW9uLiBVbmUgdmFsZXVyIGRlIDQgc2Vjb25kZXMgculkdWlyYSBjb25zaWTpcmFibGVtZW50CiAgICBsZSBub21icmUgZCfpY2hlY3MgZGUgY29ubmV4aW9uLgoKMi42KSBUZW50YXRpdmVzIGRlIHJlY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMb3JzIGQndW4g6WNoZWMgZGUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ciwgaWwgZXN0IHBvc3NpYmxlIGRlCnJldGVudGVyIChwb3RlbnRpZWxsZW1lbnQgdmVycyB1biBhdXRyZSBzZXJ2ZXVyLCBlbiBjYXMgZGUgculwYXJ0aXRpb24KZGUgY2hhcmdlKS4gTGUgbm9tYnJlIGRlIG5vdXZlbGxlcyB0ZW50YXRpdmVzIGluZnJ1Y3R1ZXVzZXMgYXZhbnQKYWJhbmRvbiBlc3QgZm91cm5pIHBhciBsZSBwYXJhbeh0cmUgInJldHJpZXMiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICMgb24gZXNzYWllIGVuY29yZSB0cm9pcyBmb2lzIG1heGkKICAgICAgICByZXRyaWVzIDMKCklsIGVzdCDgIG5vdGVyIHF1ZSBsYSB0ZW50YXRpdmUgZGUgcmVjb25uZXhpb24gcGV1dCBhbWVuZXIg4CB1dGlsaXNlciB1biBhdXRyZQpzZXJ2ZXVyIHNpIGxlIHByZW1pZXIgYSBkaXNwYXJ1IGVudHJlIGRldXggdGVudGF0aXZlcyBkZSBjb25uZXhpb24uCgoKMi43KSBBZHJlc3NlIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzb250IHJlZGlyaWfpZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGVzdCBk6WZpbmkgcGFyCmxlIHBhcmFt6HRyZSAiZGlzcGF0Y2giIHNvdXMgbGEgZm9ybWUgPGFkcmVzc2VfaXA+Ojxwb3J0Pi4gSWwgY29ycmVzcG9uZCDgIHVuCnNlcnZldXIgZCdhc3NpZ25hdGlvbiBkZSBjb29raWUgZGFucyBsZSBjYXMgb/kgbGUgc2VydmljZSBjb25zaXN0ZSDgIGFzc3VyZXIKdW5pcXVlbWVudCB1bmUgcGVyc2lzdGVuY2UgSFRUUCwgb3UgYmllbiBzaW1wbGVtZW50IGF1IHNlcnZldXIgZGVzdGluYXRpb24gZGFucwpsZSBjYXMgZGUgcmVsYXlhZ2UgVENQIHNpbXBsZS4gQ2V0IGFuY2llbiBtb2RlIG5lIHBlcm1ldCBwYXMgZGUgdGVzdGVyIGwn6XRhdApkdSBzZXJ2ZXVyIGRpc3RhbnQsIGV0IGlsIGVzdCBtYWludGVuYW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciBkZSBwculm6XJlbmNlCmxlIG1vZGUgJ2JhbGFuY2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICAgICMgb24gZW52b2llIHRvdXRlcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgaWNpCiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjI6ODAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpDZSBwYXJhbeh0cmUgbidhIHBhcyBkJ3V0aWxpdOkgcG91ciB1biBzZXJ2ZXVyIGVuIG1vZGUgJ2hlYWx0aCcsIG5pIGVuIG1vZGUKJ2JhbGFuY2UnLgoKCjIuOCkgQWRyZXNzZSBkZSBzb3J0aWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgZm9yY2VyIGwnYWRyZXNzZSB1dGlsaXPpZSBwb3VyIOl0YWJsaXIgbGVzIGNvbm5leGlvbnMgdmVycwpsZXMgc2VydmV1cnMg4CBsJ2FpZGUgZHUgcGFyYW3odHJlICJzb3VyY2UiLiBJbCBlc3QgbeptZSBwb3NzaWJsZSBkZSBmb3JjZXIgbGUKcG9ydCwgYmllbiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgc2UgbGltaXRlIOAgZGVzIHVzYWdlcyB0cuhzIHNw6WNpZmlxdWVzLgpDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIGNhcyBkJ2FkcmVzc2FnZSBtdWx0aXBsZSwgZXQgcGx1cyBn6W7pcmFsZW1lbnQKcG91ciBwZXJtZXR0cmUgYXV4IHNlcnZldXJzIGRlIHRyb3V2ZXIgbGUgY2hlbWluIGRlIHJldG91ciBkYW5zIGRlcyBjb250ZXh0ZXMKZGUgcm91dGFnZSBkaWZmaWNpbGVzLiBTaSBsJ2FkcmVzc2UgZXN0ICcwLjAuMC4wJyBvdSAnKicgb3UgdmlkZSwgZWxsZSBzZXJhCmNob2lzaWUgbGlicmVtZW50IHBhciBsZSBzeXN0ZW1lLiBTaSBsZSBwb3J0IGVzdCAnMCcgb3UgdmlkZSwgaWwgc2VyYSBjaG9pc2kKbGlicmVtZW50IHBhciBsZSBzeXN06G1lLiBJbCBlc3Qg4CBub3RlciBxdWUgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4LCBsZXMKdGVzdHMgZGUgYm9uIGZvbmN0aW9ubmVtZW50IGRlcyBzZXJ2ZXVycyBzZXJvbnQgYXVzc2kgZWZmZWN0delzIOAgcGFydGlyIGRlIGxhCnNvdXJjZSBzcOljaWZp6WUgcGFyIGNlIHBhcmFt6HRyZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgKjo4MAogICAgICAgICAgICMgdG91dGVzIGxlcyBjb25uZXhpb25zIHByZW5uZW50IGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwCiAgICAgICAgc291cmNlIDE5Mi4xNjguMS4yMDA6MAoKICAgIGxpc3RlbiBybG9naW5fcHJveHkgKjo1MTMKICAgICAgICAgICAjIHV0aWxpc2VyIGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwIGV0IGxlIHBvcnQgculzZXJ26SA5MDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDo5MDAKCgoyLjkpIETpZmluaXRpb24gZHUgbm9tIGR1IGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkZSByZWNoZXJjaGVyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwb3VyIHNhdm9pcgp2ZXJzIHF1ZWwgc2VydmV1ciBhaWd1aWxsZXIgbGEgcmVxdep0ZSB1dGlsaXNhdGV1ci4gTGUgbm9tIGR1IGNvb2tpZSBlc3QgZG9ubukKcGFyIGxlIHBhcmFt6HRyZSAiY29va2llIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAoKT24gcGV1dCBtb2RpZmllciBsJ3V0aWxpc2F0aW9uIGR1IGNvb2tpZSBwb3VyIGxhIHJlbmRyZSBwbHVzIGludGVsbGlnZW50ZQp2aXMt4C12aXMgZGVzIGFwcGxpY2F0aW9ucyByZWxheellcy4gSWwgZXN0IHBvc3NpYmxlLCBub3RhbW1lbnQgZGUgc3VwcHJpbWVyIG91CnLp6WNyaXJlIHVuIGNvb2tpZSByZXRvdXJu6SBwYXIgdW4gc2VydmV1ciBhY2PpZOkgZW4gZGlyZWN0LCBldCBkJ2luc+lyZXIgdW4KY29va2llIGRhbnMgdW5lIHLpcG9uc2UgSFRUUCBhZHJlc3PpZSDgIHVuIHNlcnZldXIgc+lsZWN0aW9ubukgZW4gculwYXJ0aXRpb24KZGUgY2hhcmdlLCBldCBt6m1lIGRlIHNpZ25hbGVyIGF1eCBwcm94aWVzIGFtb250IGRlIG5lIHBhcyBjYWNoZXIgbGUgY29va2llCmluc+ly6S4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKUG91ciBuZSBjb25zZXJ2ZXIgbGUgY29va2llIHF1J2VuIGFjY+hzIGluZGlyZWN0LCBkb25jIOAgdHJhdmVycyBsZQpkaXNwYXRjaGV1ciwgZXQgc3VwcHJpbWVyIHRvdXRlcyBzZXMg6XZlbnR1ZWxsZXMgb2NjdXJlbmNlcyBsb3JzIGRlcyBhY2PocwpkaXJlY3RzIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluZGlyZWN0CgpQb3VyIHJlbXBsYWNlciBsYSB2YWxldXIgZCd1biBjb29raWUgZXhpc3RhbnQgcGFyIGNlbGxlIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIsCmxvcnMgZCd1biBhY2PocyBkaXJlY3QgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgcmV3cml0ZQoKUG91ciBjcullciB1biBjb29raWUgY29tcG9ydGFudCBsYSB2YWxldXIgYXR0cmlidellIOAgdW4gc2VydmV1ciBsb3JzIGQndW4KYWNj6HMgZW4gculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIERhbnMgY2UgY2FzLCBpbCBlc3Qgc291aGFpdGFibGUgcXVlCnRvdXMgbGVzIHNlcnZldXJzIGFpZW50IHVuIGNvb2tpZSByZW5zZWlnbukuIFVuIHNlcnZldXIgbm9uIGFzc2lnbukgZCd1biBjb29raWUKcmV0b3VybmVyYSB1biBjb29raWUgdmlkZSAoY29va2llIGRlIHN1cHByZXNzaW9uKSA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQKClBvdXIgcul1dGlsaXNlciB1biBjb29raWUgYXBwbGljYXRpZiBldCBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLApwdWlzIGxlIHN1cHByaW1lciBkYW5zIGxlcyByZXF16nRlcyBzdWl2YW50ZXMsIHV0aWxpc2VyIGwnb3B0aW9uICdwcmVmaXgnLiBFbGxlCnBlcm1ldCBkJ2luc+lyZXIgdW5lIGluc3RhbmNlIGRlIGhhcHJveHkgZGV2YW50IHVuZSBhcHBsaWNhdGlvbiBzYW5zIHJpc3F1ZXIKZCdpbmNvbXBhdGliaWxpdOlzIGT7ZXMg4CBkZXMgY2xpZW50cyBxdWkgbmUgc3VwcG9ydGVyYWllbnQgcGFzIGQnYXBwcmVuZHJlCnBsdXMgZCd1biBjb29raWUgOgoKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSwgZW4gcydhc3N1cmFudCBxdSd1biBjYWNoZSBlbiBhbW9udCBuZSBsZSBzdG9ja2VyYSBwYXMsCmFqb3V0ZXIgbGUgbW90IGNs6SAnbm9jYWNoZScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUKClBvdXIgaW5z6XJlciB1biBjb29raWUgc2V1bGVtZW50IHN1aXRlIGF1eCByZXF16nRlcyBkZSB0eXBlIFBPU1QsIGFqb3V0ZXIgbGUKbW90IGNs6SAncG9zdG9ubHknIGFwcuhzICdpbnNlcnQnIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBwb3N0b25seQoKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCi0gSWwgZXN0IHBvc3NpYmxlIGRlIGNvbWJpbmVyICdpbnNlcnQnIGF2ZWMgJ2luZGlyZWN0JyBvdSAncmV3cml0ZScgcG91cgogIHMnYWRhcHRlciDgIGRlcyBhcHBsaWNhdGlvbnMgZ+lu6XJhbnQgZOlq4CBsZSBjb29raWUsIGF2ZWMgdW4gY29udGVudQogIGludmFsaWRlLiBJbCBzdWZmaXQgcG91ciBjZWxhIGRlIGxlcyBzcOljaWZpZXIgc3VyIGxhIG3qbWUgbGlnbmUuCgotIGRhbnMgbGUgY2FzIG/5ICdpbnNlcnQnIGV0ICdpbmRpcmVjdCcgc29udCBzcOljaWZp6XMsIGxlIGNvb2tpZSBuJ2VzdCBqYW1haXMKICB0cmFuc21pcyBhdSBzZXJ2ZXVyIHZ1IHF1J2lsIG4nZW4gYSBwYXMgY29ubmFpc3NhbmNlIGV0IG5lIHBvdXJyYWl0IHBhcyBsZQogIGNvbXByZW5kcmUuCgotIGlsIGVzdCBwYXJ0aWN1bGnocmVtZW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciAnbm9jYWNoZScgZW4gbW9kZSBpbnNlcnRpb24gc2kKICBkZXMgY2FjaGVzIHBldXZlbnQgc2UgdHJvdXZlciBlbnRyZSBsZXMgY2xpZW50cyBldCBsJ2luc3RhbmNlIGR1IHByb3h5LiBEYW5zCiAgbGUgY2FzIGNvbnRyYWlyZSwgdW4gY2FjaGUgSFRUUCAxLjAgcG91cnJhaXQgY2FjaGVyIGxhIHLpcG9uc2UsIGluY2x1YW50IGxlCiAgY29va2llIGRlIHBlcnNpc3RlbmNlIGluc+ly6SwgZG9uYyBwcm92b3F1ZXIgZGVzIGNoYW5nZW1lbnRzIGRlIHNlcnZldXJzIHBvdXIKICBkZXMgY2xpZW50cyBwYXJ0YWdlYW50IGxlIG3qbWUgY2FjaGUuCgotIGxlIG1vZGUgJ3ByZWZpeCcgbmUgbuljZXNzaXRlIHBhcyBkJ3V0aWxpc2VyICdpbmRpcmVjdCcsICdub2NhY2hlJywgbmkKICAncG9zdG9ubHknLCBjYXIgdG91dCBjb21tZSBsZSBtb2RlICdyZXdyaXRlJywgaWwgcydhcHB1aWUgc3VyIHVuIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsJ2FwcGxpY2F0aW9uIHF1aSBlc3QgY2Vuc+llIHNhdm9pciDgIHF1ZWwgbW9tZW50IGlsIHBldXQKICDqdHJlIOltaXMgc2FucyByaXNxdWUuIFRvdXRlZm9pcywgY29tbWUgaWwgbuljZXNzaXRlIGRlIHJlY3RpZmllciBsZSBjb29raWUKICBwculzZW506SBwYXIgbGUgY2xpZW50IGRhbnMgY2hhcXVlIHJlcXXqdGUgdWx06XJpZXVyZSwgaWwgZXN0IGluZGlzcGVuc2FibGUKICBkZSBzJ2Fzc3VyZXIgcXVlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyIGNvbW11bmlxdWVyb250IHNhbnMgImtlZXAtYWxpdmUKICBIVFRQIi4gRGFucyBsZSBkb3V0ZSwgaWwgZXN0IHJlY29tbWFuZOkgZCd1dGlsaXNlciBsJ29wdGlvbiAiaHR0cGNsb3NlIi4KCi0gbG9yc3F1ZSBsJ2FwcGxpY2F0aW9uIGVzdCBiaWVuIGNvbm51ZSwgZXQgcXVlIGxlcyBwYXJ0aWVzIG7pY2Vzc2l0YW50IGRlIGxhCiAgcGVyc2lzdGVuY2Ugc29udCBzeXN06W1hdGlxdWVtZW50IGFjY+lk6WVzIHBhciB1biBmb3JtdWxhaXJlIGVuIG1vZGUgUE9TVCwKICBpbCBlc3QgcGx1cyBlZmZpY2FjZSBlbmNvcmUgZGUgY29tYmluZXIgbGUgbW90IGNs6SAicG9zdG9ubHkiIGF2ZWMgImluc2VydCIKICBldCAiaW5kaXJlY3QiLCBjYXIgbGEgcGFnZSBkJ2FjY3VlaWwgcmVzdGUgY2FjaGFibGUsIGV0IGMnZXN0IGwnYXBwbGljYXRpb24KICBxdWkgZ+hyZSBsZSAnY2FjaGUtY29udHJvbCcuCgoyLjEwKSBBc3NpZ25hdGlvbiBkJ3VuIHNlcnZldXIg4CB1bmUgdmFsZXVyIGRlIGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGQnYXNzb2NpZXIgZGVzIHZhbGV1cnMgZGUgY29va2llIOAgZGVzIHNlcnZldXJzCnBhciBsZSBwYXJhbeh0cmUgJ3NlcnZlcicuIExhIHN5bnRheGUgZXN0IDoKCiAgICBzZXJ2ZXIgPGlkZW50aWZpYW50PiA8YWRyZXNzZV9pcD46PHBvcnQ+IGNvb2tpZSA8dmFsZXVyPgoKLSA8aWRlbnRpZmlhbnQ+IGVzdCB1biBub20gcXVlbGNvbnF1ZSBkZSBzZXJ2ZXVyIHV0aWxpc+kgcG91ciBsJ2lkZW50aWZpZXIgZGFucyBsYQogIGNvbmZpZ3VyYXRpb24gZXQgbGVzIGxvZ3MuCi0gPGFkcmVzc2VfaXA+Ojxwb3J0PiBlc3QgbGUgY291cGxlIGFkcmVzc2UtcG9ydCBzdXIgbGVxdWVsIGxlIHNlcnZldXIg6WNvdXRlLgotIDx2YWxldXI+IGVzdCBsYSB2YWxldXIg4CByZWNvbm5h7nRyZSBvdSBwb3NpdGlvbm5lciBkYW5zIGxlIGNvb2tpZS4KCkV4ZW1wbGUgOiBsZSBjb29raWUgU0VSVkVSSUQgcGV1dCBjb250ZW5pciBzZXJ2ZXIwMSBvdSBzZXJ2ZXIwMgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkF0dGVudGlvbiA6IGxhIHN5bnRheGUgYSBjaGFuZ+kgZGVwdWlzIGxhIHZlcnNpb24gMS4wLgotLS0tLS0tLS0tLQoKMykgUulwYXJ0aXRldXIgZGUgY2hhcmdlIGF1dG9ub21lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGUgcmVsYWlzIHBldXQgZWZmZWN0dWVyIGx1aS1t6m1lIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBsZXMgZGlmZulyZW50cwpzZXJ2ZXVycyBk6WZpbmlzIHBvdXIgdW4gc2VydmljZSBkb25u6SwgZW4gbW9kZSBUQ1AgY29tbWUgZW4gbW9kZSBIVFRQLiBQb3VyCmNlbGEsIG9uIHBy6WNpc2UgbGUgbW90IGNs6SAnYmFsYW5jZScgZGFucyBsYSBk6WZpbml0aW9uIGR1IHNlcnZpY2UsCul2ZW50dWVsbGVtZW50IHN1aXZpIGR1IG5vbSBkJ3VuIGFsZ29yaXRobWUgZGUgculwYXJ0aXRpb24uIEp1c3F1J+AgbGEgdmVyc2lvbgoxLjIuMTEsIHNldWwgJ3JvdW5kcm9iaW4nIOl0YWl0IGfpcuksIGV0IGMnZXN0IGF1c3NpIGxhIHZhbGV1ciBpbXBsaWNpdGUgcGFyCmTpZmF1dC4gQXZlYyBsYSB2ZXJzaW9uIDEuMi4xMiwgbGUgbm91dmVhdSBtb3QgY2zpICdzb3VyY2UnIGVzdCBhcHBhcnUuIElsIGVzdArpdmlkZW50IHF1J2VuIGNhcyBkJ3V0aWxpc2F0aW9uIGR1IHLpcGFydGl0ZXVyIGludGVybmUsIGlsIG5lIGZhdWRyYSBwYXMKc3DpY2lmaWVyIGQnYWRyZXNzZSBkZSBkaXNwYXRjaCwgZXQgcXUnaWwgZmF1ZHJhIGF1IG1vaW5zIHVuIHNlcnZldXIuCgpFeGVtcGxlIDogbeptZSBxdWUgcHLpY+lkZW1tZW50IGVuIHLpcGFydGl0aW9uIGludGVybmUKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6XRlcm1pbmVyIGF1dG9tYXRpcXVlbWVudCBsZSBwb3J0CmR1IHNlcnZldXIgdmVycyBsZXF1ZWwgc2VyYSBlbnZveellIGxhIGNvbm5leGlvbiwgZW4gZm9uY3Rpb24gZHUgcG9ydCBkJ+ljb3V0ZQpzdXIgbGVxdWVsIGxlIGNsaWVudCBzJ2VzdCBjb25uZWN06S4gRW4gZWZmZXQsIGlsIHkgYSA0IHBvc3NpYmlsaXTpcyBwb3VyIGxlCmNoYW1wIDxwb3J0PiBkZSBsJ2FkcmVzc2Ugc2VydmV1ciA6CgogIC0gbm9uIHNw6WNpZmnpIG91IG51bCA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24uCgogIC0gdmFsZXVyIG51belyaXF1ZSAoc2V1bCBjYXMgc3VwcG9ydOkgcG91ciBsZXMgdmVyc2lvbnMgYW506XJpZXVyZXMpIDoKICAgIGxlIHNlcnZldXIgcmVjZXZyYSBsYSBjb25uZXhpb24gc3VyIGxlIHBvcnQgZOlzaWdu6S4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJysnIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgYXVxdWVsIG9uIGFqb3V0ZSBsYSB2YWxldXIgZOlzaWdu6WUuCiAgICAKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnLScgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBkdXF1ZWwgb24gc291c3RyYWl0IGxhIHZhbGV1cgogICAgZOlzaWdu6WUuCiAgICAKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBzaW11bHRhbukgZGVzIHBvcnRzIDgwIGV0IDgxIGV0IDgwODAtODA4OQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MCw6ODEsOjgwODAtODA4OQogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBUQ1AgZGVzIHBvcnRzIDI1LCAzODkgZXQgNjYzIHZlcnMgbGVzIHBvcnRzIDEwMjUsIDEzODkgZXQgMTY2MwoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6Mzg5LDo2NjMKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOisxMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6KzEwMDAKCkNvbW1lIGluZGlxdekgcHLpY+lkZW1tZW50LCBsYSB2ZXJzaW9uIDEuMi4xMiBhcHBvcnRhIGxlIG5vdXZlYXUgbW90IGNs6Qonc291cmNlJy4gTG9yc3F1ZSBjZWx1aS1jaSBlc3QgdXRpbGlz6SwgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBlc3QgaGFjaOllIGV0CmRpc3RyaWJ16WUgZGUgbWFuaehyZSBob21vZ+huZSBwYXJtaSBsZXMgc2VydmV1cnMgZGlzcG9uaWJsZXMsIGRlIHNvcnRlIHF1J3VuZQpt6m1lIGFkcmVzc2UgSVAgYWlsbGUgdG91am91cnMgc3VyIGxlIG3qbWUgc2VydmV1ciB0YW50IHF1J2lsIG4neSBhIGF1Y3VuCmNoYW5nZW1lbnQgZGFucyBsZSBub21icmUgZGUgc2VydmV1cnMgZGlzcG9uaWJsZXMuIENlY2kgcGV1dCDqdHJlIHV0aWxpc+kgcGFyCmV4ZW1wbGUgcG91ciBhdHRhY2hlciBsZSBIVFRQIGV0IGxlIEhUVFBTIHN1ciB1biBt6m1lIHNlcnZldXIgcG91ciB1biBt6m1lCmNsaWVudC4gQ2VsYSBwZXV0IOlnYWxlbWVudCDqdHJlIHV0aWxpc+kgcG91ciBhbelsaW9yZXIgbGEgcGVyc2lzdGFuY2UKbG9yc3F1J3VuZSBwYXJ0aWUgZGUgbGEgcG9wdWxhdGlvbiBkZXMgY2xpZW50cyBuJ2FjY2VwdGUgcGFzIGxlcyBjb29raWVzLiBEYW5zCmNlIGNhcywgc2V1bHMgY2VzIGRlcm5pZXJzIHNlcm9udCBwZXJ0dXJi6XMgcGFyIGxhIHBlcnRlIGQndW4gc2VydmV1ci4KCk5PVEU6IGlsIGVzdCBpbXBvcnRhbnQgZGUgcHJlbmRyZSBlbiBjb21wdGUgbGUgZmFpdCBxdWUgYmVhdWNvdXAgZCdpbnRlcm5hdXRlcwogICAgICBuYXZpZ3VlbnQg4CB0cmF2ZXJzIGRlcyBmZXJtZXMgZGUgcHJveGllcyBxdWkgYXNzaWduZW50IGRlcyBhZHJlc3NlcyBJUAogICAgICBkaWZm6XJlbnRlcyDgIGNoYXF1ZSByZXF16nRlLiBEJ2F1dHJlcyBpbnRlcm5hdXRlcyB1dGlsaXNlbnQgZGVzIGxpZW5zIOAKICAgICAgbGEgZGVtYW5kZSBldCBvYnRpZW5uZW50IHVuZSBhZHJlc3NlIElQIGRpZmbpcmVudGUg4CBjaGFxdWUgY29ubmV4aW9uLiBEZQogICAgICBjZSBmYWl0LCBsZSBwYXJhbeh0cmUgJ3NvdXJjZScgZG9pdCDqdHJlIHV0aWxpc+kgYXZlYyB1bmUgZXh0cuhtZQogICAgICBwculjYXV0aW9uLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIGFzc3VyZXIgcXUndW5lIG3qbWUgYWRyZXNzZSBJUCBpcmEgc3VyIGxlIG3qbWUgc2VydmV1ciBwb3VyIHRvdXQgc2VydmljZQoKICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugc291cmNlCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMgoKIyBhbelsaW9yZXIgbGEgcGVyc2lzdGFuY2UgcGFyIGwndXRpbGlzYXRpb24gZGUgbGEgc291cmNlIGVuIHBsdXMgZHUgY29va2llIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHNvdXJjZQogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKCjMuMSkgU3VydmVpbGxhbmNlIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHRlc3RlciBsJ+l0YXQgZGVzIHNlcnZldXJzIHBhciDpdGFibGlzc2VtZW50IGRlIGNvbm5leGlvbgpUQ1Agb3UgcGFyIGVudm9pIGQndW5lIHJlcXXqdGUgSFRUUC4gVW4gc2VydmV1ciBob3JzIGQndXNhZ2UgbmUgc2VyYSBwYXMKdXRpbGlz6SBkYW5zIGxlIHByb2Nlc3N1cyBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gUG91ciBhY3RpdmVyIGxhCnN1cnZlaWxsYW5jZSwgYWpvdXRlciBsZSBtb3QgY2zpICdjaGVjaycg4CBsYSBmaW4gZGUgbGEgZOljbGFyYXRpb24gZHUgc2VydmV1ci4KSWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBsJ2ludGVydmFsbGUgKGVuIG1pbGxpc2Vjb25kZXMpIHPpcGFyYW50IGRldXgKdGVzdHMgZHUgc2VydmV1ciBwYXIgbGUgcGFyYW3odHJlICJpbnRlciIsIGxlIG5vbWJyZSBkJ+ljaGVjcyBhY2NlcHTpcyBwYXIgbGUKcGFyYW3odHJlICJmYWxsIiwgZXQgbGUgbm9tYnJlIGRlIHN1Y2PocyBhdmFudCByZXByaXNlIHBhciBsZSBwYXJhbeh0cmUgInJpc2UiLgpMZXMgcGFyYW3odHJlcyBub24gcHLpY2lz6XMgcHJlbm5lbnQgbGVzIHZhbGV1cnMgc3VpdmFudGVzIHBhciBk6WZhdXQgOgoKIC0gaW50ZXIgOiAyMDAwCiAtIHJpc2UgIDogMgogLSBmYWxsICA6IDMKIC0gcG9ydCAgOiBwb3J0IGRlIGNvbm5leGlvbiBkdSBzZXJ2ZXVyCgpMZSBtb2RlIHBhciBk6WZhdXQgY29uc2lzdGUg4CDpdGFibGlyIGRlcyBjb25uZXhpb25zIFRDUCB1bmlxdWVtZW50LiBEYW5zCmNlcnRhaW5zIGNhcyBkZSBwYW5uZXMsIGRlcyBzZXJ2ZXVycyBwZXV2ZW50IGNvbnRpbnVlciDgIGFjY2VwdGVyIGxlcwpjb25uZXhpb25zIHNhbnMgbGVzIHRyYWl0ZXIuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNiwgaGFwcm94eSBlc3QgZW4gbWVzdXJlCmQnZW52b3llciBkZXMgcmVxdep0ZXMgSFRUUCBjb3VydGVzIGV0IHRy6HMgcGV1IGNv+3RldXNlcy4gTGVzIHZlcnNpb25zIDEuMS4xNgpldCAxLjEuMTcgdXRpbGlzZW50ICJPUFRJT05TIC8gSFRUUC8xLjAiLiBEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTgg4CAxLjEuMjAsCmxlcyByZXF16nRlcyBvbnQg6XTpIGNoYW5n6WVzIGVuICJPUFRJT05TICogSFRUUC8xLjAiIHBvdXIgZGVzIHJhaXNvbnMgZGUKY29udHL0bGUgZCdhY2PocyBhdXggcmVzc291cmNlcy4gQ2VwZW5kYW50LCBjZXR0ZSByZXF16nRlIGRvY3VtZW506WUgZGFucyBsYQpSRkMyMDY4IG4nZXN0IHBhcyBjb21wcmlzZSBwYXIgdG91cyBsZXMgc2VydmV1cnMuIERvbmMg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbgoxLjEuMjEsIGxhIHJlcXXqdGUgcGFyIGTpZmF1dCBlc3QgcmV2ZW51ZSDgICJPUFRJT05TIC8gSFRUUC8xLjAiLCBtYWlzIGlsIGVzdApwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGxhIHBhcnRpZSBVUkkuIExlcyByZXF16nRlcyBPUFRJT05TIHBy6XNlbnRlbnQKbCdhdmFudGFnZSBkJ+p0cmUgZmFjaWxlbWVudCBleHRyYWN0aWJsZXMgZGVzIGxvZ3MsIGV0IGRlIG5lIHBhcyBpbmR1aXJlCmQnYWNj6HMgYXV4IGZpY2hpZXJzIGP0dOkgc2VydmV1ci4gU2V1bGVzIGxlcyBy6XBvbnNlcyAyeHggZXQgM3h4IHNvbnQKY29uc2lk6XLpZXMgdmFsaWRlcywgbGVzIGF1dHJlcyAoeSBjb21wcmlzIG5vbi1y6XBvbnNlcykgYWJvdXRpc3NlbnQg4CB1bgrpY2hlYy4gTGUgdGVtcHMgbWF4aW1hbCBpbXBhcnRpIHBvdXIgdW5lIHLpcG9uc2UgZXN0IOlnYWwg4CBsJ2ludGVydmFsbGUgZW50cmUKZGV1eCB0ZXN0cyAocGFyYW3odHJlICJpbnRlciIpLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgc3DpY2lmaWVyIGwnb3B0aW9uCiJodHRwY2hrIiwg6XZlbnR1ZWxsZW1lbnQgc3VpdmllIGQndW5lIG3pdGhvZGUgZXQgZCd1bmUgVVJJLiBMJ29wdGlvbiAiaHR0cGNoayIKYWNjZXB0ZSBkb25jIDQgZm9ybWVzIDoKCiAgLSBvcHRpb24gaHR0cGNoayAgICAgICAgICAgICAgIC0+IE9QVElPTlMgLyBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgVVJJICAgICAgICAgICAtPiBPUFRJT05TIDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSAgICAgIC0+IDxNRVRIPiA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgVkVSICAtPiA8TUVUSD4gPFVSST4gPFZFUj4KCkhBUHJveHkgZXN0IHNvdXZlbnQgdXRpbGlz6SBwb3VyIHJlbGF5ZXIgZGl2ZXJzIHByb3RvY29sZXMgcmVwb3NhbnQgc3VyIFRDUCwKdGVscyBxdWUgSFRUUFMsIFNNVFAgb3UgTERBUCwgbGUgcGx1cyBjb21tdW4g6XRhbnQgSFRUUFMuIFVuIHByb2Js6G1lIGFzc2V6CmNvdXJhbW1lbnQgcmVuY29udHLpIGRhbnMgbGVzIGRhdGEgY2VudGVycyBlc3QgbGUgYmVzb2luIGRlIHJlbGF5ZXIgZHUgdHJhZmljCnZlcnMgZGVzIHNlcnZldXJzIGxvaW50YWlucyB0b3V0IGVuIG1haW50ZW5hbnQgbGEgcG9zc2liaWxpdOkgZGUgYmFzY3VsZXIgc3VyCnVuIHNlcnZldXIgZGUgc2Vjb3Vycy4gTGVzIHRlc3RzIHB1cmVtZW50IFRDUCBuZSBzdWZmaXNlbnQgcGFzIHRvdWpvdXJzIGRhbnMKY2VzIHNpdHVhdGlvbnMgY2FyIGwnb24gdHJvdXZlIHNvdXZlbnQsIGRhbnMgbGEgY2hh7m5lLCBkZXMgcHJveGllcywgZmlyZXdhbGxzCm91IHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UgcXVpIHBldXZlbnQgYWNxdWl0dGVyIGxhIGNvbm5leGlvbiBhdmFudCBxdSdlbGxlCm4nYXR0ZWlnbmUgbGUgc2VydmV1ci4gTGEgc2V1bGUgc29sdXRpb24g4CBjZSBwcm9ibOhtZSBlc3QgZCdlbnZveWVyIGRlcyB0ZXN0cwphcHBsaWNhdGlmcy4gQ29tbWUgbGEgZGVtYW5kZSBwb3VyIGxlcyB0ZXN0cyBIVFRQUyBlc3Qg6WxldullLCBjZSB0ZXN0IGEg6XTpCmltcGzpbWVudOkgZW4gdmVyc2lvbiAxLjIuMTUgc3VyIGxhIGJhc2UgZGUgbWVzc2FnZXMgU1NMdjMgQ0xJRU5UIEhFTExPLiBQb3VyCmwnYWN0aXZlciwgdXRpbGlzZXIgIm9wdGlvbiBzc2wtaGVsbG8tY2hrIi4gQ2VjaSBlbnZlcnJhIGRlcyBtZXNzYWdlcyBTU0x2MwpDTElFTlQgSEVMTE8gYXV4IHNlcnZldXJzLCBlbiBhbm5vbudhbnQgdW4gc3VwcG9ydCBwb3VyIGxhIG1ham9yaXTpIGRlcwphbGdvcml0aG1lcyBkZSBjaGlmZnJlbWVudC4gU2kgZW4gcmV0b3VyLCBsZSBzZXJ2ZXVyIGVudm9pZSBjZSBxdWkgcmVzc2VtYmxlIOAKdW5lIHLpcG9uc2UgU1NMdjMgU0VSVkVSIEhFTExPIG91IEFMRVJUIChyZWZ1cyBkZXMgYWxnb3JpdGhtZXMpLCBhbG9ycyBsYQpy6XBvbnNlIHNlcmEgY29uc2lk6XLpZSBjb21tZSB2YWxpZGUuIE5vdGVyIHF1J0FwYWNoZSBuZSBwcm9kdWl0IHBhcyBkZSBsb2cKbG9yc3F1J2lsIHJl529pdCBkZXMgbWVzc2FnZXMgSEVMTE8sIGNlIHF1aSBlbiBmYWl0IHVuIHR5cGUgZGUgbWVzc2FnZQpwYXJmYWl0ZW1lbnQgYWRhcHTpIOAgY2UgYmVzb2luLgoKVm9pciBsZXMgZXhlbXBsZXMgY2ktYXBy6HMuICAgICAgICAKCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIGTpZmluaXIgZGVzIHNlcnZldXJzIGRlIHNlY291cnMsCnV0aWxpc+lzIHVuaXF1ZW1lbnQgbG9yc3F1J2F1Y3VuIGRlcyBhdXRyZXMgc2VydmV1cnMgbmUgZm9uY3Rpb25uZS4gUG91ciBjZWxhLApham91dGVyIGxlIG1vdCBjbOkgImJhY2t1cCIgc3VyIGxhIGxpZ25lIGRlIGTpZmluaXRpb24gZHUgc2VydmV1ci4gVW4gc2VydmV1cgpkZSBzZWNvdXJzIG4nZXN0IGFwcGVs6SBxdWUgbG9yc3F1ZSB0b3VzIGxlcyBzZXJ2ZXVycyBub3JtYXV4LCBhaW5zaSBxdWUgdG91cwpsZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBxdWkgbGUgcHLpY+hkZW50IHNvbnQgaG9ycyBkJ3VzYWdlLiBJbCBuJ3kgYSBkb25jIHBhcwpkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgZW50cmUgZGVzIHNlcnZldXJzIGRlIHNlY291cnMgcGFyIGTpZmF1dC4gQSBwYXJ0aXIKZGUgbGEgdmVyc2lvbiAxLjIuOSwgaWwgZXN0IHBvc3NpYmxlIGRlIGxlcyB1dGlsaXNlciBzaW11bHRhbultZW50IGdy4mNlIOAKbCdvcHRpb24gJ2FsbGJhY2t1cHMnLiBDZSB0eXBlIGRlIHNlcnZldXJzIHBldXQgc2VydmlyIOAgcmV0b3VybmVyIGRlcyBwYWdlcwpkJ2luZGlzcG9uaWJpbGl06SBkZSBzZXJ2aWNlLiBEYW5zIGNlIGNhcywgaWwgZXN0IHBy6WbpcmFibGUgZGUgbmUgcGFzIGFmZmVjdGVyCmRlIGNvb2tpZSwgYWZpbiBxdWUgbGVzIGNsaWVudHMgcXVpIGxlIHJlbmNvbnRyZW50IG4neSBzb2llbnQgcGFzIGFmZmVjdOlzCmTpZmluaXRpdmVtZW50LiBMZSBmYWl0IGRlIG5lIHBhcyBtZXR0cmUgZGUgY29va2llIGVudm9pZSB1biBjb29raWUgdmlkZSwgY2UKcXVpIGEgcG91ciBlZmZldCBkZSBzdXBwcmltZXIgdW4g6XZlbnR1ZWwgY29va2llIGFmZmVjdOkgcHLpY+lkZW1tZW50LgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjIyLCBpbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudAp2ZXJzIHVuIHBvcnQgZGlmZulyZW50IGRlIGNlbHVpIGRlIHNlcnZpY2UuIEMnZXN0IG7pY2Vzc2FpcmUgcHJpbmNpcGFsZW1lbnQKcG91ciBsZXMgY29uZmlndXJhdGlvbnMgb/kgbGUgc2VydmV1ciBuJ2EgcGFzIGRlIHBvcnQgcHLpZOlmaW5pLCBwYXIgZXhlbXBsZQpsb3JzcXUnaWwgZXN0IGTpZHVpdCBkdSBwb3J0IGQnYWNjZXB0YXRpb24gZGUgbGEgY29ubmV4aW9uLiBQb3VyIGNlbGEsIHV0aWxpc2VyCmxlIHBhcmFt6HRyZSAncG9ydCcgc3VpdmkgZHUgbnVt6XJvIGRlIHBvcnQgZGV2YW50IHLpcG9uZHJlIGF1eCByZXF16nRlcy4KCkVuZmluLCBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSB2aXN1YWxpc2VyIHJhcGlkZW1lbnQKbCfpdGF0IGNvdXJhbnQgZGUgdG91cyBsZXMgc2VydmV1cnMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwKU0lHSFVQIGF1IHByb2Nlc3N1cyBwcm94eS4gTCfpdGF0IGRlIHRvdXMgbGVzIHNlcnZldXJzIGRlIHRvdXMgbGVzIHByb3hpZXMgZXN0CmVudm956SBkYW5zIGxlcyBsb2dzIGVuIG5pdmVhdSAibm90aWNlIiwgYWluc2kgcXVlIHN1ciBsYSBzb3J0aWUgZCdlcnJldXJzIHNpCmVsbGUgZXN0IGFjdGl2ZS4gQydlc3QgdW5lIGJvbm5lIHJhaXNvbiBwb3VyIGF2b2lyIGF1IG1vaW5zIHVuIHNlcnZldXIgZGUgbG9ncwpsb2NhbCBlbiBuaXZlYXUgbm90aWNlLgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4IChldCAxLjIuMSksIHVuIG1lc3NhZ2UgZCd1cmdlbmNlIGVzdCBlbnZveekgZGFucyBsZXMKbG9ncyBlbiBuaXZlYXUgJ2VtZXJnJyBzaSB0b3VzIGxlcyBzZXJ2ZXVycyBkJ3VuZSBt6m1lIGluc3RhbmNlIHNvbnQgdG9tYulzLAphZmluIGRlIG5vdGlmaWVyIGwnYWRtaW5pc3RyYXRldXIgcXUnaWwgZmF1dCBwcmVuZHJlIHVuZSBhY3Rpb24gaW1t6WRpYXRlLgoKRGVwdWlzIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIHBsdXNpZXVycyBzZXJ2ZXVycyBwZXV2ZW50IHBhcnRhZ2VyIGxhCm3qbWUgdmFsZXVyIGRlIGNvb2tpZS4gQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBtb2RlIGJhY2t1cCwgcG91cgpz6WxlY3Rpb25uZXIgZGVzIGNoZW1pbnMgYWx0ZXJuYXRpZnMgcG91ciB1biBzZXJ2ZXVyIGRvbm7pLCBwb3VyIG1ldHRyZSBlbgpvZXV2cmUgbCdhcnLqdCBlbiBkb3VjZXVyIGQndW4gc2VydmV1ciwgb3UgcG91ciBkaXJpZ2VyIGxlcyBjbGllbnRzCnRlbXBvcmFpcmVtZW50IHZlcnMgdW5lIHBhZ2UgZCdlcnJldXIgZW4gYXR0ZW5kYW50IGxlIHJlZOltYXJyYWdlIGQndW5lCmFwcGxpY2F0aW9uLiBMZSBwcmluY2lwZSBlc3QgcXVlIGxvcnNxdSd1biBzZXJ2ZXVyIGVzdCBk6XRlY3TpIGNvbW1lIGlub3DpcmFudCwKbGUgcHJveHkgY2hlcmNoZXJhIGxlIHByb2NoYWluIHNlcnZldXIgcG9zc+lkYW50IGxhIG3qbWUgdmFsZXVyIGRlIGNvb2tpZSBwb3VyCmNoYXF1ZSBjbGllbnQgcXVpIGxlIGRlbWFuZGVyYS4gUydpbCBuZSB0cm91dmUgcGFzIGRlIHNlcnZldXIgbm9ybWFsLCBhbG9ycyBpbApsZSBjaGVyY2hlcmEgcGFybWkgbGVzIHNlcnZldXJzIGRlIGJhY2t1cC4gQ29uc3VsdGVyIGxlIGd1aWRlIGQnYXJjaGl0ZWN0dXJlCnBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQojIGNvbmYgZHUgcGFyYWdyYXBoZSAzKSBhdmVjIHN1cnZlaWxsYW5jZSBUQ1AKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50IGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdPUFRJT05TIC8gSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50IGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdPUFRJT05TIC9pbmRleC5odG1sIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrIC9pbmRleC5odG1sCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIGlkZW0gYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ0hFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDogd3d3JwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBy6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlIGJhc+llIHN1ciBsZSBwculmaXhlIGRlIGNvb2tpZSwgZXQgYXJy6nQgZW4KIyBkb3VjZXVyIHV0aWxpc2FudCB1biBzZWNvbmQgcG9ydCAoODEpIGp1c3RlIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgIHNlcnZlciB3ZWIxLW5vcm0gMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrIHBvcnQgODEKICAgICAgIHNlcnZlciB3ZWIyLW5vcm0gMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODEKICAgICAgIHNlcnZlciB3ZWIxLXN0b3AgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrIHBvcnQgODAgYmFja3VwCiAgICAgICBzZXJ2ZXIgd2ViMi1zdG9wIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgwIGJhY2t1cAoKIyBJbnNlcnRpb24gYXV0b21hdGlxdWUgZGUgY29va2llIGRhbnMgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBldCBzdXBwcmVzc2lvbgojIGF1dG9tYXRpcXVlIGRhbnMgbGEgcmVxdep0ZSwgdG91dCBlbiBpbmRpcXVhbnQgYXV4IGNhY2hlcyBkZSBuZSBwYXMgZ2FyZGVyCiMgY2UgY29va2llLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCiMgaWRlbSBhdmVjIHNlcnZldXIgYXBwbGljYXRpZiBkZSBzZWNvdXJzIHN1ciBhdXRyZSBzaXRlLCBldCBzZXJ2ZXVyIGRlIHBhZ2VzIGQnZXJyZXVycwogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cCAxOTIuMTY4LjIuMTo4MCBjb29raWUgc2VydmVyMDMgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgojIHJlbGF5YWdlIFNNVFArVExTIGF2ZWMgdGVzdCBkdSBzZXJ2ZXVyIGV0IHNlcnZldXIgZGUgYmFja3VwCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDo1ODcKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgMjUgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKIyByZWxheWFnZSBIVFRQUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo0NDMKICAgICAgICBtb2RlIHRjcAoJb3B0aW9uIHNzbC1oZWxsby1jaGsKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgojIFV0aWxpc2F0aW9uIGQndW4gZ3JvdXBlIGRlIHNlcnZldXJzIHBvdXIgbGUgYmFja3VwIChu6WNlc3NpdGUgaGFwcm94eSAxLjIuOSkKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciBpbnN0MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDIgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrCiAgICAgICAgc2VydmVyIGluc3QzIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyBjaGVjawogICAgICAgIHNlcnZlciBiYWNrMSAxOTIuMTY4LjEuMTA6ODAgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIGJhY2syIDE5Mi4xNjguMS4xMTo4MCBjaGVjayBiYWNrdXAKICAgICAgICBvcHRpb24gYWxsYmFja3VwcyAgIyBhbGwgYmFja3VwcyB3aWxsIGJlIHVzZWQKCgozLjIpIFJlY29ubmV4aW9uIHZlcnMgdW4gculwYXJ0aXRldXIgZW4gY2FzIGQn6WNoZWMgZGlyZWN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBzaSB1biBzZXJ2ZXVyIGTpZmluaSBwYXIgdW4gY29va2llIG5lIHLpcG9uZCBwbHVzLCBsZXMgY2xpZW50cwpzZXJvbnQgZOlmaW5pdGl2ZW1lbnQgYWlndWlsbOlzIGRlc3N1cyDgIGNhdXNlIGRlIGxldXIgY29va2llLCBldCBkZSBjZSBmYWl0LApk6WZpbml0aXZlbWVudCBwcml26XMgZGUgc2VydmljZS4gTGEgc3DpY2lmaWNhdGlvbiBkdSBwYXJhbeh0cmUgJ3JlZGlzcGF0Y2gnCmF1dG9yaXNlIGRhbnMgY2UgY2FzIOAgcmVudm95ZXIgbGVzIGNvbm5leGlvbnMg6WNob3XpZXMgdmVycyBsZSBy6XBhcnRpdGV1cgooZXh0ZXJuZSBvdSBpbnRlcm5lKSBhZmluIGQnYXNzaWduZXIgdW4gbm91dmVhdSBzZXJ2ZXVyIOAgY2VzIGNsaWVudHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHJlZnVzIGRlIGNvbm5leGlvbi4KClBhciBk6WZhdXQgKGV0IGRhbnMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcyksIGxlIHBhcmFt6HRyZQpyZWRpc3BhdGNoIG5lIHMnYXBwbGlxdWUgcXUnYXV4IOljaGVjcyBkZSBjb25uZXhpb24gYXUgc2VydmV1ci4gRGVwdWlzIGxhCnZlcnNpb24gMS4xLjE3LCBpbCBzJ2FwcGxpcXVlIGF1c3NpIGF1eCBjb25uZXhpb25zIGRlc3RpbullcyDgIGRlcyBzZXJ2ZXVycwppZGVudGlmaelzIGNvbW1lIGhvcnMgZCd1c2FnZSBwYXIgbGEgc3VydmVpbGxhbmNlLiBTaSBsJ29uIHNvdWhhaXRlIG1hbGdy6Qp0b3V0IHF1J3VuIGNsaWVudCBkaXNwb3NhbnQgZCd1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgZOlmZWN0dWV1eAp0ZW50ZSBkZSBzJ3kgY29ubmVjdGVyLCBpbCBmYXV0IHBy6WNpc2VyIGwnb3B0aW9uICJwZXJzaXN0IiA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBwZXJzaXN0CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHNlcnZldXIgSFMuCgoKMy4zKSBBc3NpZ25hdGlvbiBkZSBwb2lkcyBkaWZm6XJlbnRzIOAgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXJmb2lzIGlsIGFycml2ZSBkJ2Fqb3V0ZXIgZGUgbm91dmVhdXggc2VydmV1cnMgcG91ciBhY2Nyb+50cmUgbGEgY2FwYWNpdOkKZCd1bmUgZmVybWUgZGUgc2VydmV1ciwgbWFpcyBsZSBub3V2ZWF1IHNlcnZldXIgZXN0IHNvaXQgYmVhdWNvdXAgcGx1cyBwZXRpdApxdWUgbGVzIGF1dHJlcyAoZGFucyBsZSBjYXMgZCd1biBham91dCBkJ3VyZ2VuY2UgZGUgbWF06XJpZWwgZGUgculjdXDpcmF0aW9uKSwKc29pdCBwbHVzIHB1aXNzYW50IChsb3JzIGQndW4gaW52ZXN0aXNzZW1lbnQgZGFucyBkdSBtYXTpcmllbCBuZXVmKS4gUG91ciBjZXR0ZQpyYWlzb24sIGlsIHNlbWJsZSBwYXJmb2lzIGp1ZGljaWV1eCBkZSBwb3V2b2lyIGVudm95ZXIgcGx1cyBkZSBjbGllbnRzIHZlcnMgbGVzCnBsdXMgZ3JvcyBzZXJ2ZXVycy4gSnVzcXUn4CBsYSB2ZXJzaW9uIDEuMi4xMSwgaWwg6XRhaXQgbuljZXNzYWlyZSBkZSBy6XBsaXF1ZXIKcGx1c2lldXJzIGZvaXMgbGVzIGTpZmluaXRpb25zIGRlcyBzZXJ2ZXVycyBwb3VyIGF1Z21lbnRlciBsZXVyIHBvaWRzLiBEZXB1aXMKbGEgdmVyc2lvbiAxLjIuMTIsIGwnb3B0aW9uICd3ZWlnaHQnIGVzdCBkaXNwb25pYmxlLiBIQVByb3h5IGNvbnN0cnVpdCBhbG9ycwp1bmUgdnVlIGRlcyBzZXJ2ZXVycyBkaXNwb25pYmxlcyBsYSBwbHVzIGhvbW9n6G5lIHBvc3NpYmxlIGVuIHNlIGJhc2FudCBzdXIKbGV1ciBwb2lkcyBkZSBzb3J0ZSBxdWUgbGEgY2hhcmdlIHNlIGRpc3RyaWJ1ZSBkZSBsYSBtYW5p6HJlIGxhIHBsdXMgbGlzc2UKcG9zc2libGUuIExlIHBvaWRzIGNvbXByaXMgZW50cmUgMSBldCAyNTYgZG9pdCByZWZs6XRlciBsYSBjYXBhY2l06SBkJ3VuCnNlcnZldXIgcGFyIHJhcHBvcnQgYXV4IGF1dHJlcy4gTGUgcG9pZHMgZGUgMSBkb25uZSBsYSBmculxdWVuY2UgZCdhcHBhcml0aW9uCmxhIHBsdXMgZmFpYmxlLCBldCAyNTYgbGEgZnLpcXVlbmNlIGxhIHBsdXMg6WxldullLiBEZSBjZXR0ZSBtYW5p6HJlLCBzaSB1bgpzZXJ2ZXVyIGRpc3BhcmFpdCwgbGVzIGNhcGFjaXTpcyByZXN0YW50ZXMgc29udCB0b3Vqb3VycyByZXNwZWN06WVzLgoKCkV4ZW1wbGUgOgotLS0tLS0tLS0KIyBkaXN0cmlidXRpb24g6XF1aXRhYmxlIHN1ciAyIG9wdGVyb24gYW5kIHVuIGFuY2llbiBwZW50aXVtMwoKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgd2VpZ2h0ICA4IGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgd2VpZ2h0IDIwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgc2VydmVyMDMgd2VpZ2h0IDI0IGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwNCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCk5vdGVzIDoKLS0tLS0tLQogIC0gbG9yc3F1ZSBsZSBwb2lkcyBuJ2VzdCBwYXMgc3DpY2lmaeksIGxhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCDgIDEKCiAgLSBsZSBwb2lkcyBuJ2ltcGFjdGUgcGFzIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudCAoaGVhbHRoIGNoZWNrcyksIGRvbmMgaWwKICAgIGVzdCBwbHVzIHByb3ByZSBkJ3V0aWxpc2VyIGxlcyBwb2lkcyBxdWUgZGUgculwbGlxdWVyIGxlIG3qbWUgc2VydmV1cgogICAgcGx1c2lldXJzIGZvaXMuCgogIC0gbGVzIHBvaWRzIHMnYXBwbGlxdWVudCDpZ2FsZW1lbnQgYXV4IHNlcnZldXJzIGRlIGJhY2t1cCBzaSBsJ29wdGlvbgogICAgJ2FsbGJhY2t1cHMnIGVzdCBwb3NpdGlvbm7pZS4KCiAgLSBsZSBwb2lkcyBzJ2FwcGxpcXVlIGF1c3NpIOAgbGEgculwYXJ0aXRpb24gc2Vsb24gbGEgc291cmNlCiAgICAoJ2JhbGFuY2Ugc291cmNlJykuCgogIC0gcXVlbHMgcXVlIHNvaWVudCBsZXMgcG9pZHMsIGxlIHByZW1pZXIgc2VydmV1ciBzZXJhIHRvdWpvdXJzIGFzc2lnbukgZW4KICAgIHByZW1pZXIuIENldHRlIHLoZ2xlIGZhY2lsaXRlIGxlcyBkaWFnbm9zdGljcy4KCiAgLSBwb3VyIGxlcyBwdXJpc3RlcywgbCdhbGdvcml0aG1lIGRlIGNhbGN1bGF0aW9uIGRlIGxhIHZ1ZSBkZXMgc2VydmV1cnMgZG9ubmUKICAgIHVuZSBwcmlvcml06SBhdXggcHJlbWllcnMgc2VydmV1cnMsIGRvbmMgbGEgdnVlIGVzdCBsYSBwbHVzIHVuaWZvcm1lIHNpIGxlcwogICAgc2VydmV1cnMgc29udCBk6WNsYXLpcyBkYW5zIGwnb3JkcmUgY3JvaXNzYW50IGRlIGxldXJzIHBvaWRzLgoKTGEgZGlzdHJpYnV0aW9uIGR1IHRyYWZpYyBzdWl2cmEgZXhhY3RlbWVudCBsZSBz6XF1ZW5jZW1lbnQgc3VpdmFudCA6CgogICAgICAgIFJlcXVlc3R8ICAgICAgICAgICAgICAgICAgIDEgMSAxIDEKICAgICAgICBudW1iZXIgfCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzCiAgICAgICAtLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBwMy04MDAgfCBYIC4gLiAuIC4gLiAuIFggLiAuIC4gLiAuCiAgICAgICAgb3B0LTIwIHwgLiBYIC4gWCAuIFggLiAuIC4gWCAuIFggLgogICAgICAgIG9wdC0yNCB8IC4gLiBYIC4gWCAuIFggLiBYIC4gWCAuIFgKCgozLjQpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcyBwYXIgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDZXJ0YWlucyBzZXJ2ZXVycyB3ZWIgbXVsdGktcHJvY2Vzc3VzIHRlbHMgcXUnQXBhY2hlIHNvdWZmcmVudCBk6HMgcXUnaWwgeSBhCnRyb3AgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzLCBwYXJjZSBxdSdpbCBlc3QgdHLocyBjb/t0ZXV4IGRlIGZhaXJlCmZvbmN0aW9ubmVyIGRlcyBjZW50YWluZXMgb3UgZGVzIG1pbGxpZXJzIGRlIHByb2Nlc3N1cyBzdXIgdW4gc3lzdOhtZS4gVW5lCnNvbHV0aW9uIGNvbnNpc3RlIOAgYXVnbWVudGVyIGxlIG5vbWJyZSBkZSBzZXJ2ZXVycyBldCBkZSBy6XBhcnRpciBsYSBjaGFyZ2UKZW50cmUgZXV4LCBtYWlzIGNlbGEgcG9zZSB1biBwcm9ibOhtZSBsb3JzcXVlIGxlIGJ1dCBlc3QgdW5pcXVlbWVudCBkZSBy6XNpc3RlcgrgIGRlcyBwaWNzIGRlIGNoYXJnZSBvY2Nhc2lvbm5lbHMuCgpQb3VyIHLpc291ZHJlIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgZm9uY3Rpb25uYWxpdOkgYSDpdOkgaW1wbOltZW506WUgZGFucwpIQVByb3h5IDEuMi4xMy4gSWwgcydhZ2l0IGQndW5lIGxpbWl0ZSAibWF4Y29ubiIgcGFyIHNlcnZldXIsIGFzc29jaellIOAgdW5lCmZpbGUgZCdhdHRlbnRlIHBhciBzZXJ2ZXVyIGV0IHBhciBwcm94eS4gQ2VjaSB0cmFuc2Zvcm1lIEhBUHJveHkgZW4gdW4gdGFtcG9uCmVudHJlIGRlcyBtaWxsaWVycyBkZSBjbGllbnRzIGV0IHF1ZWxxdWVzIHNlcnZldXJzLiBEYW5zIGJpZW4gZGVzIGNhcywgbGUgZmFpdApkZSBkaW1pbnVlciBsYSB2YWxldXIgbWF4Y29ubiBhbelsaW9yZXJhIG5vdGFibGVtZW50IGxlcyBwZXJmb3JtYW5jZXMgZGVzCnNlcnZldXJzIGV0IGRpbWludWVyYSBsZXMgdGVtcHMgZGUgculwb25zZSBzaW1wbGVtZW50IHBhcmNlIHF1ZSBsZXMgc2VydmV1cnMKc2Vyb250IG1vaW5zIGNvbmdlc3Rpb25u6XMuCgpRdWFuZCB1bmUgcmVxdep0ZSBjaGVyY2hlIOAgam9pbmRyZSBuJ2ltcG9ydGUgcXVlbCBzZXJ2ZXVyLCBsZSBwcmVtaWVyIHNlcnZldXIKbm9uIHNhdHVy6SBlc3QgdXRpbGlz6SwgZW4gcmVzcGVjdGFudCBsJ2FsZ29yaXRobWUgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlLiBTaQp0b3VzIGxlcyBzZXJ2ZXVycyBzb250IHNhdHVy6XMsIGFsb3JzIGxhIHJlcXXqdGUgc2VyYSBtaXNlIGRhbnMgbGEgZmlsZQpkJ2F0dGVudGUgZ2xvYmFsZSBkZSBsJ2luc3RhbmNlLiBFbGxlIHNvcnRpcmEgZGUgY2V0dGUgZmlsZSBkJ2F0dGVudGUgbG9yc3F1ZQp0b3V0ZXMgbGVzIHJlcXXqdGVzIHBy6WPpZGVudGVzIGF1cm9udCDpdOkgbGli6XLpZXMgZXQgcXUndW4gc2VydmV1ciBhdXJhIOl06QpsaWLpcukgZCd1bmUgY29ubmV4aW9uIHBvdXIgbGEgdHJhaXRlci4KClNpIHVuZSByZXF16nRlIGZhaXQgculm6XJlbmNlIOAgdW4gc2VydmV1ciBlbiBwYXJ0aWN1bGllciAocC5leDogaGFjaGFnZSBkJ0lQCnNvdXJjZSwgb3UgcGVyc2lzdGFuY2UgcGFyIGNvb2tpZSksIGV0IHF1ZSBjZSBzZXJ2ZXIgZXN0IHNhdHVy6SwgYWxvcnMgbGEKcmVxdep0ZSBzZXJhIG1pc2UgZGFucyBsYSBmaWxlIGQnYXR0ZW50ZSBk6WRp6WUg4CBjZSBzZXJ2ZXVyLiBDZXR0ZSBmaWxlCmQnYXR0ZW50ZSBlc3QgcHJpb3JpdGFpcmUgc3VyIGxhIGZpbGUgZCdhdHRlbnRlIGdsb2JhbGUsIGRlIHNvcnRlIHF1J2lsIHNvaXQKcGx1cyBmYWNpbGUgZCdhdHRlaW5kcmUgbGUgc2l0ZSBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgcXVpIHMneSB0cm91dmVudCBk6WrgCnF1ZSBwb3VyIGxlcyBub3V2ZWF1eCB1dGlsaXNhdGV1cnMuCgpQb3VyIGNlbGEsIGxlcyBsb2dzIG9udCBk+yDqdHJlIGVucmljaGlzIHBvdXIgaW5kaXF1ZXIgbGUgbm9tYnJlIGRlIHNlc3Npb25zCnBhciBzZXJ2ZXVyLCBsYSBwb3NpdGlvbiBkZSBsYSByZXF16nRlIGRhbnMgbGVzIGZpbGVzIGQnYXR0ZW50ZXMsIGV0IGxlIHRlbXBzCnBhc3PpIGVuIGZpbGUgZCdhdHRlbnRlLiBDZWNpIGFpZGUgY29uc2lk6XJhYmxlbWVudCDgIGZhaXJlIGRlIGxhIHBy6XZpc2lvbiBkZQpjYXBhY2l06S4gVm9pciBsYSBzZWN0aW9uICdsb2dzJyBwbHVzIGJhcyBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIFByZW5kcmUgc29pbiBkdSBQMyBxdWkgbidhIHF1ZSAyNTYgTW8gZGUgUkFNLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDI0IG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCkNldHRlIG9wdGlvbiBzZSBtb250cmEgc2kgZWZmaWNhY2UgcG91ciBy6WR1aXJlIGxlcyB0ZW1wcyBkZSBy6XBvbnNlIGRlcwpzZXJ2ZXVycyBxdWUgY2VydGFpbnMgdXRpbGlzYXRldXJzIHZvdWxhaWVudCB1dGlsaXNlciBkZXMgdmFsZXVycyB0cm9wIGJhc3Nlcwpwb3VyIGFt6Wxpb3JlciBsZXMgcGVyZm9ybWFuY2VzIGRlIGxldXJzIHNlcnZldXJzLiBTZXVsZW1lbnQsIGlscyBuJ+l0YWllbnQKYWxvcnMgcGx1cyBlbiBtZXN1cmUgZGUgc3VwcG9ydGVyIGRlIHRy6HMgZm9ydGVzIGNoYXJnZXMgcGFyY2UgcXUnaWwgbifpdGFpdApwbHVzIHBvc3NpYmxlIGRlIGxlcyBzYXR1cmVyLiBQb3VyIGNldHRlIHJhaXNvbiwgbGEgdmVyc2lvbiAxLjIuMTQgYSBhcHBvcnTpIGxhCmxpbWl0YXRpb24gZHluYW1pcXVlIGRlIGNvbm5leGlvbnMgYXZlYyBsJ2FkZGl0aW9uIGR1IHBhcmFt6HRyZSAibWluY29ubiIuCkxvcnNxdWUgY2UgcGFyYW3odHJlIGVzdCBhc3NvY2npIOAgIm1heGNvbm4iLCBpbCBhY3RpdmUgbGEgbGltaXRhdGlvbiBkeW5hbWlxdWUKYmFz6WUgc3VyIGxhIGNoYXJnZSBkZSBsJ2luc3RhbmNlLiBMZSBub21icmUgbWF4aW1hbCBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMKc3VyIHVuIHNlcnZldXIgZGV2aWVudCBhbG9ycyBwcm9wb3J0aW9ubmVsIGF1IG5vbWJyZSBkZSBzZXNzaW9ucyBkZSBsJ2luc3RhbmNlCnBhciByYXBwb3J0IOAgc29uICdtYXhjb25uJy4gVW4gbWluaW11bSBkZSA8bWluY29ubj4gc2Vzc2lvbnMgc2VyYSB0b3Vqb3VycwpwZXJtaXMgcXVlbGxlIHF1ZSBzb2l0IGxhIGNoYXJnZS4gQ2VjaSBhc3N1cmVyYSBxdWUgbGVzIHNlcnZldXJzIHRyYXZhaWxsZXJvbnQKYXUgbWVpbGxldXIgZGUgbGV1cnMgcGVyZm9ybWFuY2VzIHNvdXMgZGVzIGNoYXJnZXMgbm9ybWFsZXMsIGV0IHF1J2lscyBzZXJvbnQKdG91dCBkZSBt6m1lIGNhcGFibGVzIGRlIHN1cHBvcnRlciBkZSBmb3J0ZXMgcG9pbnRlcyBsb3JzcXVlIG7pY2Vzc2FpcmUuIExhCmxpbWl0ZSBkeW5hbWlxdWUgZXN0IGNhbGN1bOllIGNvbW1lIGNlY2kgOgoKICAgIHNydi5keW5fbGltaXQgPSBtYXgoc3J2Lm1pbmNvbm4sIHNydi5tYXhjb25uICogaW5zdC5zZXNzIC8gaW5zdC5tYXhjb25uKQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBQcmVuZHJlIHNvaW4gZHUgUDMgcXVpIG4nYSBxdWUgMjU2IE1vIGRlIFJBTS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAgOCBtaW5jb25uIDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpEYW5zIGwnZXhlbXBsZSBjaS1kZXNzdXMsIGxlIHNlcnZldXIgInBlbnRpdW0zLTgwMCcgcmVjZXZyYSBhdSBwbHVzIDEwMApjb25uZXhpb25zIHNpbXVsdGFu6WVzIGxvcnNxdWUgbCdpbnN0YW5jZSBkdSBwcm94eSBlbiBhdHRlaW5kcmEgMTAwMDAsIGV0CnJlY2V2cmEgc2V1bGVtZW50IDEwIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgdGFudCBxdWUgbGUgcHJveHkgc2VyYSBzb3VzIGxlcyAxMDAwCnNlc3Npb25zLgoKTm90ZXMgOgotLS0tLS0tCiAgLSBsYSByZXF16nRlIG5lIHJlc3RlcmEgcGFzIGluZOlmaW5pbWVudCBlbiBmaWxlIGQnYXR0ZW50ZSwgZWxsZSBlc3QKICAgIGFzc3Vq6XRpZSBhdSBwYXJhbeh0cmUgJ2NvbnRpbWVvdXQnLCBldCBzaSB1bmUgcmVxdep0ZSBuZSBwZXV0IHBhcwogICAgc29ydGlyIGRlIGxhIGZpbGUgYXZhbnQgY2UgdGltZS1vdXQsIHNvaXQgcGFyY2UgcXVlIGxlIHNlcnZldXIgZXN0CiAgICBzYXR1cuksIHNvaXQgcGFyY2UgcXUnaWwgeSBhIHRyb3AgZGUgcmVxdep0ZXMgZW4gZmlsZSBkJ2F0dGVudGUsCiAgICBhbG9ycyBlbGxlIGV4cGlyZXJhIGF2ZWMgdW5lIGVycmV1ciA1MDMuCgogIC0gc2kgc2V1bCA8bWluY29ubj4gZXN0IHNw6WNpZmnpLCBpbCBhIGxlIG3qbWUgZWZmZXQgcXVlIDxtYXhjb25uPgoKICAtIHBvc2l0aW9ubmVyIGRlcyB2YWxldXJzIHRyb3AgYmFzc2VzIHBvdXIgJ21heGNvbm4nIHBldXQgYW3pbGlvcmVyIGxlcwogICAgcGVyZm9ybWFuY2VzIG1haXMgYXVzc2kgcGVybWV0dHJlIOAgZGVzIHV0aWxpc2F0ZXVycyB0cm9wIGxlbnRzIGRlIGJsb3F1ZXIKICAgIHVuIHNlcnZldXIgcG91ciBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCgozLjUpIEFiYW5kb24gZGVzIHJlcXXqdGVzIGFib3J06WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gcHLpc2VuY2UgZGUgdHLocyBmb3J0ZXMgY2hhcmdlcywgbGVzIHNlcnZldXJzIG1ldHRyb250IHVuIGNlcnRhaW4gdGVtcHMg4Apy6XBvbmRyZS4gTGEgZmlsZSBkJ2F0dGVudGUgZHUgcHJveHkgc2UgcmVtcGxpcmEsIGV0IGxlcyB0ZW1wcyBkZSBy6XBvbnNlCnN1aXZyb250IHVuZSBjcm9pc3NhbmNlIHByb3BvcnRpb25uZWxsZSDgIGxhIHRhaWxsZSBkZSBmaWxlIGQnYXR0ZW50ZSBmb2lzCmxlIHRlbXBzIG1veWVuIGRlIHLpcG9uc2UgcGFyIHNlc3Npb24uIExvcnNxdWUgbGVzIGNsaWVudHMgYXR0ZW5kcm9udCBwbHVzIGRlCnF1ZWxxdWVzIHNlY29uZGVzLCBpbHMgY2xpcXVlcm9udCBzb3V2ZW50IHN1ciBsZSBib3V0b24gJ1NUT1AnIGRlIGxldXIKbmF2aWdhdGV1ciwgbGFpc3NhbnQgZGVzIHJlcXXqdGVzIGludXRpbGVzIGVuIGZpbGUgZCdhdHRlbnRlIGV0IHJhbGVudGlzc2FudApkb25jIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKQ29tbWUgaWwgbid5IGEgYXVjdW4gbW95ZW4gZGUgZGlzdGluZ3VlciB1biB2cmFpIGNsaWMgc3VyIFNUT1AgZCd1bmUgc2ltcGxlCmZlcm1ldHVyZSBkdSBjYW5hbCBkZSBzb3J0aWUgc3VyIGxlIGNsaWVudCAoc2h1dGRvd24oU0hVVF9XUikpLCBsZXMgYWdlbnRzIEhUVFAKZG9pdmVudCDqdHJlIGNvbnNlcnZhdGV1cnMgZXQgY29uc2lk6XJlciBxdWUgbGUgY2xpZW50IG4nYSBwcm9iYWJsZW1lbnQgZmVybekKcXVlIGxlIGNhbmFsIGRlIHNvcnRpZSBlbiBhdHRlbmRhbnQgbGEgculwb25zZS4gVG91dGVmb2lzLCBjZWNpIGludHJvZHVpdCBkZXMKcmlzcXVlcyBkZSBjb25nZXN0aW9uIGxvcnNxdWUgYmVhdWNvdXAgZCd1dGlsaXNhdGV1cnMgZm9udCBkZSBt6m1lLCBldCBzJ2F26HJlCmF1am91cmQnaHVpIGNvbXBs6HRlbWVudCBpbnV0aWxlIGNhciBwcm9iYWJsZW1lbnQgYXVjdW4gY2xpZW50IG5lIHJlZmVybWUgbGEKc2Vzc2lvbiBlbiBhdHRlbmRhbnQgbGEgculwb25zZS4gQ2VydGFpbnMgYWdlbnRzIEhUVFAgc3VwcG9ydGVudCBjZWNpIChTcXVpZCwKQXBhY2hlLCBIQVByb3h5KSwgZXQgZCdhdXRyZXMgbmUgbGUgc3VwcG9ydGVudCBwYXMgKFRVWCwgZXQgbGEgcGx1cGFydCBkZXMKculwYXJ0aXRldXJzIGRlIGNoYXJnZSBtYXTpcmllbHMpLiBEb25jIGxhIHByb2JhYmlsaXTpIHBvdXIgcXUndW5lIG5vdGlmaWNhdGlvbgpkZSBmZXJtZXR1cmUgZCd1biBjYW5hbCBkJ2VudHLpZSBj9HTpIGNsaWVudCByZXBy6XNlbnRlIHVuIHV0aWxpc2F0ZXVyIGNsaXF1YW50CnN1ciAnU1RPUCcgZXN0IHByb2NoZSBkZSAxMDAlLCBldCBpbCBlc3QgdnJhaW1lbnQgdGVudGFudCBkJ2FiYW5kb25uZXIgbGEKcmVxdep0ZSBwcultYXR1cultZW50IHNhbnMgcG9sbHVlciBsZXMgc2VydmV1cnMuCgpQb3VyIGNldHRlIHJhaXNvbiwgdW5lIG5vdXZlbGxlIG9wdGlvbiAiYWJvcnRvbmNsb3NlIiBhIOl06SBpbnRyb2R1aXRlIGVuCnZlcnNpb24gMS4yLjE0LiBQYXIgZOlmYXV0IChzYW5zIGwnb3B0aW9uKSwgbGUgY29tcG9ydGVtZW50IHJlc3RlIGNvbmZvcm1lIOAKSFRUUC4gTWFpcyBsb3JzcXVlIGwnb3B0aW9uIGVzdCBzcOljaWZp6WUsIHVuZSBzZXNzaW9uIGRvbnQgbGUgY2FuYWwgZW50cmFudAplc3QgZmVybekgc2VyYSBhYm9ydOllIHNpIGNlbGEgZXN0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUgcXVlIGxhIHJlcXXqdGUgZXN0CnNvaXQgZW4gZmlsZSBkJ2F0dGVudGUsIHNvaXQgZW4gdGVudGF0aXZlIGRlIGNvbm5leGlvbi4gQ2VjaSBy6WR1aXQKY29uc2lk6XJhYmxlbWVudCBsYSBsb25ndWV1ciBkZXMgZmlsZXMgZCdhdHRlbnRlcyBldCBsYSBjaGFyZ2Ugc3VyIGxlcyBzZXJ2ZXVycwpzYXR1culzIGxvcnNxdWUgbGVzIHV0aWxpc2F0ZXVycyBzb250IHRlbnTpcyBkZSBjbGlxdWVyIHN1ciAnU1RPUCcsIGNlIHF1aSDgCnNvbiB0b3VyLCBy6WR1aXQgbGVzIHRlbXBzIGRlIHLpcG9uc2UgcG91ciBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBiY2sxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBvcHRpb24gYWJvcnRvbmNsb3NlCgoKNCkgRm9uY3Rpb25uYWxpdOlzIGFkZGl0aW9ubmVsbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRCdhdXRyZXMgZm9uY3Rpb25uYWxpdOlzIGQndXNhZ2UgbW9pbnMgY291cmFudCBzb250IGRpc3BvbmlibGVzLiBJbCBzJ2FnaXQKcHJpbmNpcGFsZW1lbnQgZHUgbW9kZSB0cmFuc3BhcmVudCwgZGUgbGEgam91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMsIGRlIGxhCnLp6WNyaXR1cmUgZGVzIGVuLXTqdGVzLCBldCBkdSBzdGF0dXQgc291cyBmb3JtZSBkZSBwYWdlIEhUTUwuCgoKNC4xKSBGb25jdGlvbm5hbGl06XMgculzZWF1Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0LjEuMSkgRm9uY3Rpb25uZW1lbnQgZW4gbW9kZSB0cmFuc3BhcmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBsZSBtb3QgY2zpICd0cmFuc3BhcmVudCcgcGVybWV0IGQnaW50ZXJjZXB0ZXIgZGVzIHNlc3Npb25zCnJvdXTpZXMg4CB0cmF2ZXJzIGxhIG1hY2hpbmUgaOliZXJnZWFudCBsZSBwcm94eS4gRGFucyBjZSBtb2RlLCBvbiBuZSBwculjaXNlCnBhcyBsJ2FkcmVzc2UgZGUgculwYXJ0aXRpb24gJ2Rpc3BhdGNoJywgY2FyIGNlbGxlLWNpIGVzdCB0aXLpZSBkZSBsJ2FkcmVzc2UKZGVzdGluYXRpb24gZGUgbGEgc2Vzc2lvbiBk6XRvdXJu6WUuIExlIHN5c3TobWUgZG9pdCBwZXJtZXR0cmUgZGUgcmVkaXJpZ2VyIGxlcwpwYXF1ZXRzIHZlcnMgdW4gcHJvY2Vzc3VzIGxvY2FsLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KU2kgbGUgcG9ydCBuJ2VzdCBwYXMgc3DpY2lmaekgc3VyIGxlIHNlcnZldXIsIGMnZXN0IGxlIHBvcnQgYXVxdWVsIHMnZXN0CmFkcmVzc+kgbGUgY2xpZW50IHF1aSBzZXJhIHV0aWxpc+kuIENlbGEgcGVybWV0IGRlIHJlbGF5ZXIgdG91cyBsZXMgcG9ydHMgVENQCmQndW5lIG3qbWUgYWRyZXNzZSBhdmVjIHVuZSBt6m1lIGluc3RhbmNlIGV0IHNhbnMgdXRpbGlzZXIgZGlyZWN0ZW1lbnQgbGUgbW9kZQp0cmFuc3BhcmVudC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yIGNoZWNrIHBvcnQgNjAwMDAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgoKNC4xLjIpIENob2l4IGQndW5lIGFkcmVzc2Ugc291cmNlIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIGlsIGRldmllbnQgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuZSBhZHJlc3NlCklQIHNvdXJjZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIuIEMnZXN0IHV0aWxlIHBvdXIgam9pbmRyZSBkZXMgc2VydmV1cnMgZGUKYmFja3VwIOAgcGFydGlyIGQndW4gTEFOIGRpZmbpcmVudCwgb3UgcG91ciB1dGlsaXNlciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcwpwb3VyIGpvaW5kcmUgbGUgbeptZSBzZXJ2ZXVyLiBDJ2VzdCDpZ2FsZW1lbnQgdXRpbGlzYWJsZSBwb3VyIGZhY2lsaXRlciB1bmUKculwYXJ0aXRpb24gZGUgY2hhcmdlIHNlbG9uIGwnYWRyZXNzZSBJUCBzb3VyY2UgcG91ciBkZXMgY29ubmV4aW9ucyBzb3J0YW50ZXMuCkJpZW4gZW50ZW5kdSwgbGEgbeptZSBhZHJlc3NlIGVzdCB1dGlsaXPpZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGxlcyAyIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xMwogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4xLjEKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjIuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZmFpcmUgdW5lIHLpcGFydGl0aW9uIGQnYWRyZXNzZSBzb3VyY2VzIHBvdXIgam9pbmRyZSBsZSBt6m1lIHByb3h5IOAKICAgICMgdHJhdmVycyBkZXV4IGxpZW5zIFdBTiAKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTEgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4yLjEKICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MiAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjMuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmb3JjZXIgdW5lIGNvbm5leGlvbiBUQ1Ag4CBzJ2F0dGFjaGVyIOAgdW4gcG9ydCBwYXJ0aWN1bGllcgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDoyMDAwCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAoKNC4xLjMpIE1haW50aWVuIGRlIHNlc3Npb24gVENQIChrZWVwLWFsaXZlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuNywgaWwgZGV2aWVudCBwb3NzaWJsZSBkJ2FjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbgpUQ1AgKFRDUCBrZWVwLWFsaXZlKSDgIGxhIGZvaXMgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyLiBDZWxhIHBlcm1ldApkJ2VtcOpjaGVyIGRlcyBzZXNzaW9ucyBsb25ndWVzIGQnZXhwaXJlciBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0CmV4dGVybmVzIHRlbHMgcXVlIGRlcyBmaXJld2FsbHMgb3UgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UuIENlbGEgcGVybWV0CmF1c3NpIGF1IHN5c3TobWUgZGUgZOl0ZWN0ZXIgZXQgdGVybWluZXIgZGVzIHNlc3Npb25zIGZpZ+llcyBsb3JzcXUnYXVjdW4KdGltZS1vdXQgbidhIOl06SBwb3NpdGlvbm7pIChmb3J0ZW1lbnQgZOljb25zZWlsbOkpLiBMZSBwcm94eSBuZSBwZXV0IHBhcwpwb3NpdGlvbm5lciBsJ2ludGVydmFsbGUgZW50cmUgbGVzIGFubm9uY2VzIG5pIGxlIG5vbWJyZSBtYXhpbWFsLCB2ZXVpbGxlegp2b3VzIHLpZulyZXIgYXUgbWFudWVsIGR1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gcG91ciBjZWxhLiBJbCBleGlzdGUgMyBvcHRpb25zCnBvdXIgYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uIFRDUCA6CgoJb3B0aW9uIHRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyCglvcHRpb24gY2xpdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudAoJb3B0aW9uIHNydnRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBzZXJ2ZXVyCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpMJ3VuIGRlcyBwb2ludHMgZm9ydHMgZGUgSEFQcm94eSBlc3QgaW5k6W5pYWJsZW1lbnQgbGEgcHLpY2lzaW9uIGRlIHNlcyBsb2dzLgpJbCBmb3Vybml0IHByb2JhYmxlbWVudCBsZSBwbHVzIGZpbiBuaXZlYXUgZCdpbmZvcm1hdGlvbiBkaXNwb25pYmxlIHBvdXIgdW4KdGVsIG91dGlsLCBjZSBxdWkgZXN0IHRy6HMgaW1wb3J0YW50IHBvdXIgbGVzIGRpYWdub3N0aWNzIGVuIGVudmlyb25uZW1lbnRzCmNvbXBsZXhlcy4gRW4gc3RhbmRhcmQsIGxlcyBpbmZvcm1hdGlvbnMgam91cm5hbGlz6WVzIGluY2x1ZW50IGxlIHBvcnQgY2xpZW50LApsZXMgY2hyb25vbel0cmFnZXMgZGVzIOl0YXRzIFRDUC9IVFRQLCBkZXMg6XRhdHMgZGUgc2Vzc2lvbiBwculjaXMgYXUgbW9tZW50IGRlCmxhIHRlcm1pbmFpc29uIGV0IHNhIGNhdXNlLCBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZXMgZOljaXNpb25zIGQnYWlndWlsbGFnZSBkdQp0cmFmaWMgdmVycyB1biBzZXJ2ZXVyLCBldCBiaWVuIHP7ciBsYSBwb3NzaWJpbGl06SBkZSBjYXB0dXJlciBkZXMgZW4tdOp0ZXMKYXJiaXRyYWlyZXMuCgpEYW5zIGxlIGJ1dCBkJ2Ft6Wxpb3JlciBsYSBy6WFjdGl2aXTpIGRlcyBhZG1pbmlzdHJhdGV1cnMsIGlsIG9mZnJlIHVuZSBncmFuZGUKdHJhbnNwYXJlbmNlIHN1ciBsZXMgcHJvYmzobWVzIHJlbmNvbnRy6XMsIOAgbGEgZm9pcyBpbnRlcm5lcyBldCBleHRlcm5lcywgZXQKaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgbG9ncyB2ZXJzIGRlcyBzZXJ2ZXVycyBkaWZm6XJlbnRzIGVuIG3qbWUgdGVtcHMKYXZlYyBkZXMgbml2ZWF1eCBkZSBmaWx0cmFnZSBkaWZm6XJlbnRzIDoKCiAgLSBsb2dzIGdsb2JhdXggYXUgbml2ZWF1IHByb2Nlc3N1cyAoZXJyZXVycyBzeXN06G1lLCBhcnLqdHMvZOltYXJyYWdlcywgLi4uKQogIC0gZXJyZXVycyBzeXN06G1lIGV0IGludGVybmVzIHBhciBpbnN0YW5jZSAobWFucXVlIGRlIHJlc3NvdXJjZXMsIGJ1Z3MsIC4uLikKICAtIHByb2Js6G1lcyBleHRlcm5lcyBwYXIgaW5zdGFuY2UgKGFycup0cy9yZWxhbmNlIHNlcnZldXJzLCBsaW1pdGVzLCAuLi4pCiAgLSBhY3Rpdml06SBwYXIgaW5zdGFuY2UgKGNvbm5leGlvbnMgY2xpZW50cyksIGF1c3NpIGJpZW4gbG9ycyBkZSBsZXVyCiAgICDpdGFibGlzc2VtZW50IHF1J+AgbGV1ciB0ZXJtaW5haXNvbi4KCkxhIHBvc3NpYmlsaXTpIGRlIGRpc3RyaWJ1ZXIgZGlmZulyZW50cyBuaXZlYXV4IGRlIGxvZ3Mg4CBkaWZm6XJlbnRzIHNlcnZldXJzCnBlcm1ldCDgIHBsdXNpZXVycyDpcXVpcGVzIGRlIHByb2R1Y3Rpb24gZCdpbnTpcmFnaXIgZXQgZGUgY29ycmlnZXIgbGV1cnMKcHJvYmzobWVzIGxlIHBsdXMgdPR0IHBvc3NpYmxlLiBQYXIgZXhlbXBsZSwgbCfpcXVpcGUgc3lzdOhtZSBwZXV0IHN1cnZlaWxsZXIKb2NjYXNpb25uZWxsZW1lbnQgbGVzIGVycmV1cnMgc3lzdOhtZSwgcGVuZGFudCBxdWUgbCfpcXVpcGUgYXBwbGljYXRpb24Kc3VydmVpbGxlIGxlcyBhbGVydGVzIGQnYXJy6nRzL2TpbWFycmFnZXMgZGUgc2VzIHNlcnZldXJzIGVuIHRlbXBzIHLpZWwsIGV0CnF1ZSBsJ+lxdWlwZSBz6WN1cml06SBhbmFseXNlIGwnYWN0aXZpdOkgZW4gZGlmZuly6SBkJ3VuZSBoZXVyZS4KCgo0LjIuMSkgTml2ZWF1eCBkZSBsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIFRDUCBldCBIVFRQIHBldXZlbnQgZG9ubmVyIGxpZXUg4CB1bmUgam91cm5hbGlzYXRpb24gc29tbWFpcmUgb3UKZOl0YWlsbOllIGluZGlxdWFudCwgcG91ciBjaGFxdWUgY29ubmV4aW9uLCBsYSBkYXRlLCBsJ2hldXJlLCBsJ2FkcmVzc2UgSVAKc291cmNlLCBsZSBzZXJ2ZXVyIGRlc3RpbmF0aW9uLCBsYSBkdXLpZSBkZSBsYSBjb25uZXhpb24sIGxlcyB0ZW1wcyBkZSBy6XBvbnNlLApsYSByZXF16nRlIEhUVFAsIGxlIGNvZGUgZGUgcmV0b3VyLCBsYSBxdWFudGl06SBkZSBkb25u6WVzIHRyYW5zbWlzZXMsIGV0IG3qbWUKZGFucyBjZXJ0YWlucyBjYXMsIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwZXJtZXR0YW50IGRlIHN1aXZyZSBsZXMgc2Vzc2lvbnMuClRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbiBzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBTZSBy6WbpcmVyIOAKbGEgc2VjdGlvbiAxLjEgcG91ciBwbHVzIGQnaW5mb3JtYXRpb24gc3VyIGxlcyBjYXTpZ29yaWVzIGRlIGxvZ3MuICBMYSBzeW50YXhlCmVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwXzE+IDxjYXTpZ29yaWVfMT4gW25pdmVhdV9tYXhfMV0KICAgIGxvZyA8YWRyZXNzZV9pcF8yPiA8Y2F06WdvcmllXzI+IFtuaXZlYXVfbWF4XzJdCm91CiAgICBsb2cgZ2xvYmFsCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGEgc3ludGF4ZSBzcOljaWZpcXVlICdsb2cgZ2xvYmFsJyBpbmRpcXVlIHF1ZSBsJ29uIHNvdWhhaXRlIHV0aWxpc2VyIGxlcwpwYXJhbeh0cmVzIGRlIGpvdXJuYWxpc2F0aW9uIGTpZmluaXMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAxIGxvY2FsNAoKNC4yLjIpIEZvcm1hdCBkZXMgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhciBk6WZhdXQsIGxlcyBjb25uZXhpb25zIHNvbnQgam91cm5hbGlz6WVzIGF1IG5pdmVhdSBUQ1AgZOhzIGwn6XRhYmxpc3NlbWVudApkZSBsYSBzZXNzaW9uIGVudHJlIGxlIGNsaWVudCBldCBsZSByZWxhaXMuIEVuIHBy6WNpc2FudCBsJ29wdGlvbiAndGNwbG9nJywKbGEgY29ubmV4aW9uIG5lIHNlcmEgam91cm5hbGlz6WUgcXUnZW4gZmluIGRlIHNlc3Npb24sIGFqb3V0YW50IGRlcyBwculjaXNpb25zCnN1ciBzb24g6XRhdCBsb3JzIGRlIGxhIGTpY29ubmV4aW9uLCBhaW5zaSBxdWUgbGUgdGVtcHMgZGUgY29ubmV4aW9uIGV0IGxhCmR1cullIHRvdGFsZSBkZSBsYSBzZXNzaW9uLiBMZSBub21icmUgZGUgc2Vzc2lvbnMgcmVzdGFudGVzIGFwcuhzIGxhCmTpY29ubmV4aW9uIGVzdCDpZ2FsZW1lbnQgaW5kaXF16SAocG91ciBsZSBzZXJ2ZXVyLCBsJ2luc3RhbmNlIGV0IGxlIHByb2Nlc3MpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBUQ1AgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gcmVsYWlzLXRjcCAwLjAuMC4wOjgwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIG9wdGlvbiB0Y3Bsb2cKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvMC81MDA3IDAgLS0gMS8xLzEgMC8wCiAgCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZW1wbGUKCiAgICAgICAgMSAgbm9tX3Byb2Nlc3N1cyAnWycgcGlkICddOicgICAgICAgICAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgICAgICAgICAxMjcuMC4wLjE6MzQ1NTAKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtdGNwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICB0ZW1wc19maWxlICcvJyB0ZW1wc19jb25uZWN0ICcvJyB0ZW1wc190b3RhbCAgMC8wLzUwMDcKICAgICAgICA3ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDggIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogICAgICAgIDkgIGNvbm5fc3J2ICcvJyBjb25uc19pbnN0ICcvJyBjb25uc19wcm9jZXNzdXMgICAxLzEvMQogICAgICAgMTAgIHBvc2l0aW9uIGVuIGZpbGUgZCdhdHRlbnRlIHNydiAnLycgZ2xvYmFsZSAgICAwLzAKClVuZSBhdXRyZSBvcHRpb24sICdodHRwbG9nJywgZm91cm5pdCBwbHVzIGRlIGTpdGFpbHMgc3VyIGxlIHByb3RvY29sZSBIVFRQLApub3RhbW1lbnQgbGEgcmVxdep0ZSBldCBsJ+l0YXQgZGVzIGNvb2tpZXMuIERhbnMgbGVzIGNhcyBv+SB1biBt6WNhbmlzbWUgZGUKc3VydmVpbGxhbmNlIGVmZmVjdHVhbnQgZGVzIGNvbm5leGlvbnMgZXQgZOljb25uZXhpb25zIGZy6XF1ZW50ZXMsIHBvbGx1ZXJhaXQKbGVzIGxvZ3MsIGlsIHN1ZmZpdCBkJ2Fqb3V0ZXIgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgcG91ciBuZSBwbHVzIG9idGVuaXIgdW5lCmxpZ25lIGRlIGxvZyBwb3VyIGxlcyBzZXNzaW9ucyBuJ2F5YW50IHBhcyBkb25u6SBsaWV1IOAgdW4g6WNoYW5nZSBkZSBkb25u6WVzCihyZXF16nRlIG91IHLpcG9uc2UpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBIVFRQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNDcvNzIzIDIwMCAyNDMgLSAtIC0tLS0gMi8zLzMgMC8wICJIRUFEIC8gSFRUUC8xLjAiCgpFeGVtcGxlIHBsdXMgY29tcGxldCA6CgogICAgaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDEzNy8yMDIvMjA1IDAvMCB7dy5vZHMub3JnfE1vemlsbGF9IHt9ICJIRUFEIC8gSFRUUC8xLjAiIAoKICAgIENoYW1wICBGb3JtYXQgLyBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlbXBsZQoKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAgICAgICAgIDEwLjAuMC4xOjM0NTUyCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNjozMV0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWlzLWh0dHAKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3J2MQogICAgICAgIDYgIFRxICcvJyBUdyAnLycgVGMgJy8nIFRyICcvJyBUdCAgICAgICAgICAgICAgICAzMTgzLy0xLy0xLy0xLzExMjE1CiAgICAgICAgNyAgQ29kZV9yZXRvdXJfSFRUUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMwogICAgICAgIDggIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgOSAgY29va2llc19yZXF16nRlX2NhcHR1culzICAgICAgICAgICAgICAgICAgICAgIC0KICAgICAgIDEwICBjb29raWVzX3JlcG9uc2VfY2FwdHVy6XMgICAgICAgICAgICAgICAgICAgICAgLQogICAgICAgMTEgIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQy0tCiAgICAgICAxMiAgY29ubnNfc3J2ICcvJyBjb25uc19pbnN0ICcvJyBjb25uc19wcm9jZXNzdXMgIDEzNy8yMDIvMjA1CiAgICAgICAxMyAgcG9zaXRpb24gZmlsZSBzZXJ2ZXVyICcvJyBnbG9iYWxlICAgICAgICAgICAgIDAvMAogICAgICAgMTQgICd7JyBlbnRldGVzX3JlcXXqdGVfY2FwdHVy6XMgJ30nICAgICAgICAgICAgICB7dy5vZHMub3JnfE1vemlsbGF9CiAgICAgICAxNSAgJ3snIGVudGV0ZXNfcmVwb25zZV9jYXB0dXLpcyAnfScgICAgICAgICAgICAgIHt9CiAgICAgICAxNiAgJyInIHJlcXXqdGVfSFRUUCAnIicgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFEIC8gSFRUUC8xLjAiCiAgCk5vdGUgcG91ciBsZXMgYW5hbHlzZXVycyBkZSBsb2dzIDogbCdVUkkgZXN0IFRPVUpPVVJTIGxlIGRlcm5pZXIgY2hhbXAgZGUgbGEgbGlnbmUsIGV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVuY2UgcGFyIHVuIGd1aWxsZW1ldCAnIicuCgpMZSBwcm9ibOhtZSBkZSBsb2d1ZXIgdW5pcXVlbWVudCBlbiBmaW4gZGUgc2Vzc2lvbiwgYydlc3QgcXUnaWwgZXN0IGltcG9zc2libGUKZGUgc2F2b2lyIGNlIHF1aSBzZSBwYXNzZSBkdXJhbnQgZGUgZ3JvcyB0cmFuc2ZlcnRzIG91IGRlcyBzZXNzaW9ucyBsb25ndWVzLgpQb3VyIHBhbGxpZXIg4CBjZSBwcm9ibOhtZSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnbG9nYXNhcCcgYSDpdOkgaW50cm9kdWl0ZSBkYW5zCmxhIHZlcnNpb24gMS4xLjI4ICgxLjIuMSkuIExvcnNxdSdlbGxlIGVzdCBhY3RpdullLCBsZSBwcm94eSBsb2d1ZXJhIGxlIHBsdXMKdPR0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUganVzdGUgYXZhbnQgcXVlIG5lIGTpYnV0ZW50IGxlcyB0cmFuc2ZlcnRzIGRlCmRvbm7pZXMuIENlbGEgc2lnbmlmaWUsIGRhbnMgbGUgY2FzIGR1IFRDUCwgcXUnaWwgbG9ndWVyYSB0b3Vqb3VycyBsZSBy6XN1bHRhdApkZSBsYSBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBkYW5zIGxlIGNhcyBIVFRQLCBxdSdpbCBsb2d1ZXJhIGVuIGZpbiBkZQp0cmFpdGVtZW50IGRlcyBlbi106nRlcyBkZSBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGF1cXVlbCBjYXMgbGUgbm9tYnJlIGQnb2N0ZXRzCnJlcHLpc2VudGVyYSBsYSB0YWlsbGUgZGVzIGVuLXTqdGVzIHJldG91cm7pcyBhdSBjbGllbnQuCgpBZmluIGQn6XZpdGVyIHRvdXRlIGNvbmZ1c2lvbiBhdmVjIGxlcyBsb2dzIG5vcm1hdXgsIGxlIHRlbXBzIHRvdGFsIGRlCnRyYW5zZmVydCBldCBsZSBub21icmUgZCdvY3RldHMgdHJhbnNm6XLpcyBzb250IHBy6WZpeOlzIGQndW4gc2lnbmUgJysnCnJhcHBlbGFudCBxdWUgbGVzIHZhbGV1cnMgcullbGxlcyBzb250IGNlcnRhaW5lbWVudCBwbHVzIOlsZXbpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGxvZ2FzYXAKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAzLzMgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgoKCjQuMi4zKSBDaHJvbm9t6XRyYWdlIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBvdXIgZOljZWxlciBkZXMgcHJvYmzobWVzIHLpc2VhdSwgbGVzIG1lc3VyZXMgZHUgdGVtcHMg6WNvdWzpIGVudHJlIGNlcnRhaW5zCul26W5lbWVudHMgc29udCBkJ3VuZSB0cuhzIGdyYW5kZSB1dGlsaXTpLiBUb3VzIGxlcyB0ZW1wcyBzb250IG1lc3Vy6XMgZW4KbWlsbGlzZWNvbmRlcyAobXMpLiBFbiBtb2RlIEhUVFAsIHF1YXRyZSBwb2ludHMgZGUgbWVzdXJlIHNvbnQgcmFwcG9ydOlzIHNvdXMKbGEgZm9ybWUgVHEvVHcvVGMvVHIvVHQgOgoKICAtIFRxOiB0ZW1wcyB0b3RhbCBkZSBy6WNlcHRpb24gZGUgbGEgcmVxdep0ZSBIVFRQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgogICAgQydlc3QgbGUgdGVtcHMgcXVpIHMnZXN0IOljb3Vs6SBlbnRyZSBsZSBtb21lbnQgb/kgbGUgY2xpZW50IGEg6XRhYmxpCiAgICBzYSBjb25uZXhpb24gdmVycyBsZSByZWxhaXMsIGV0IGxlIG1vbWVudCBv+SBjZSBkZXJuaWVyIGEgcmXndSBsZSBkZXJuaWVyCiAgICBlbi106nRlIEhUVFAgdmFsaWRhbnQgbGEgZmluIGRlIGxhIHJlcXXqdGUuIFVuZSB2YWxldXIgJy0xJyBpY2kgaW5kaXF1ZQogICAgcXVlIGxhIHJlcXXqdGUgY29tcGzodGUgbidhIGphbWFpcyDpdOkgcmXndWUuCgogIC0gVHc6IHRlbXBzIHRvdGFsIHBhc3PpIGRhbnMgbGVzIGZpbGVzIGQnYXR0ZW50ZSBhdmFudCBkJ29idGVuaXIgdW5lIHBsYWNlCiAgICB2ZXJzIHVuIHNlcnZldXIuIENlY2kgdGllbnQgY29tcHRlIOAgbGEgZm9pcyBkZSBsYSBmaWxlIGQnYXR0ZW50ZSBnbG9iYWxlCiAgICBldCBkZSBjZWxsZSBkdSBzZXJ2ZXVyLCBldCBk6XBlbmQgZHUgbm9tYnJlIGRlIHJlcXXqdGVzIGRhbnMgbGEgZmlsZSBldCBkdQogICAgdGVtcHMgbuljZXNzYWlyZSBhdSBzZXJ2ZXVyIHBvdXIgY29tcGzpdGVyIGxlcyBzZXNzaW9ucyBwculj6WRlbnRlcy4gTGEKICAgIHZhbGV1ciAnLTEnIGluZGlxdWUgcXVlIGxhIHJlcXXqdGUgYSDpdOkgZOl0cnVpdGUgYXZhbnQgZCdhdHRlaW5kcmUgdW5lCiAgICBmaWxlLgoKICAtIFRjOiB0ZW1wcyBkJ+l0YWJsaXNzZW1lbnQgZGUgbGEgY29ubmV4aW9uIFRDUCBkdSByZWxhaXMgdmVycyBsZSBzZXJ2ZXVyLgogICAgQydlc3QgbGUgdGVtcHMg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBvdSBsZSByZWxhaXMgYSBpbml0aekgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgbCdhIGFjcXVpdHTpZSwgYydlc3QKICAgIOAgZGlyZSBsZSB0ZW1wcyBlbnRyZSBsJ2Vudm9pIGR1IHBhcXVldCBUQ1AgU1lOIGxhIHLpY2VwdGlvbiBkdSBTWU4vQUNLLgogICAgVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlIHF1ZSBsYSBjb25uZXhpb24gbidhIGphbWFpcyBwdSDqdHJlIOl0YWJsaWUKICAgIHZlcnMgbGUgc2VydmV1ci4KCiAgLSBUcjogdGVtcHMgZGUgculwb25zZSBkdSBzZXJ2ZXVyLiBDJ2VzdCBsZSB0ZW1wcyBxdWUgbGUgc2VydmV1ciBhIG1pcyBwb3VyCiAgICByZW52b3llciBsYSB0b3RhbGl06SBkZXMgZW4tdOp0ZXMgSFRUUCDgIHBhcnRpciBkdSBtb21lbnQgb/kgaWwgYSBhY3F1aXR06QogICAgbGEgY29ubmV4aW9uLiBDYSByZXBy6XNlbnRlIGV4YWN0ZW1lbnQgbGUgdGVtcHMgZGUgdHJhaXRlbWVudCBkZSBsYQogICAgdHJhbnNhY3Rpb24gc2FucyBsZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMgYXNzb2Np6WVzLiBVbmUgdmFsZXVyICctMScKICAgIGluZGlxdWUgcXVlIGxlIHNlcnZldXIgbidhIHBhcyBlbnZveekgbGEgdG90YWxpdOkgZGUgbCdlbi106nRlIEhUVFAuCgogIC0gVHQ6IGR1cullIGRlIHZpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbiwgZW50cmUgbGUgbW9tZW50IG/5IGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiBkdSBjbGllbnQgYSDpdOkgYWNxdWl0dOllIGV0IGxlIG1vbWVudCBv+SBsYSBjb25uZXhpb24gYSDpdOkKICAgIHJlZmVybellIGF1eCBkZXV4IGV4dHLpbWl06XMgKGNsaWVudCBldCBzZXJ2ZXVyKS4gTGEgc2lnbmlmaWNhdGlvbiBjaGFuZ2UKICAgIHVuIHBldSBzaSBsJ29wdGlvbiAnbG9nYXNhcCcgZXN0IHBy6XNlbnRlLiBEYW5zIGNlIGNhcywgbGUgdGVtcHMgY29ycmVzcG9uZAogICAgdW5pcXVlbWVudCDgIChUcSArIFR3ICsgVGMgKyBUciksIGV0IHNlIHRyb3V2ZSBwculmaXjpIGQndW4gc2lnbmUgJysnLiBPbgogICAgcGV1dCBkb25jIGTpZHVpcmUgVGQsIGxlIHRlbXBzIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcywgZW4gZXhjbHVhbnQgbGVzCiAgICBhdXRyZXMgdGVtcHMgOgoKICAgICAgICBUZCA9IFR0IC0gKFRxICsgVHcgKyBUYyArIFRyKQoKICAgIExlcyB0ZW1wcyByYXBwb3J06XMg4CAnLTEnIHNvbnQgc2ltcGxlbWVudCDgIOlsaW1pbmVyIGRlIGNldHRlIOlxdWF0aW9uLgoKRW4gbW9kZSBUQ1AgKCdvcHRpb24gdGNwbG9nJyksIHNldWxzIGxlcyBkZXV4IGluZGljYXRldXJzIFR3LCBUYyBldCBUdCBzb250CnJhcHBvcnTpcy4KCkNlcyB0ZW1wcyBmb3Vybmlzc2VudCBkZSBwculjaWV1eCByZW5zZWlnbmVtZW50IHN1ciBkZXMgY2F1c2VzIHByb2JhYmxlcyBkZQpwcm9ibOhtZXMuIER1IGZhaXQgcXVlIGxlIHByb3RvY29sZSBUQ1AgZOlmaW5pc3NlIGRlcyB0ZW1wcyBkZSByZXRyYW5zbWlzc2lvbgpkZSAzIHNlY29uZGVzLCBwdWlzIDYsIDEyLCBldGMuLi4sIGwnb2JzZXJ2YXRpb24gZGUgdGVtcHMgcHJvY2hlcyBkZSBtdWx0aXBsZXMKZGUgMyBzZWNvbmRlcyBpbmRpcXVlIHByYXRpcXVlbWVudCB0b3Vqb3VycyBkZXMgcGVydGVzIGRlIHBhcXVldHMgbGnpcyDgIHVuCnByb2Js6G1lIHLpc2VhdSAoY+JibGUgb3Ugbulnb2NpYXRpb24pLiBEZSBwbHVzLCBzaSA8VHQ+IGVzdCBwcm9jaGUgZCd1bmUKdmFsZXVyIGRlIHRpbWUtb3V0IGRhbnMgbGEgY29uZmlndXJhdGlvbiwgYydlc3Qgc291dmVudCBxdSd1bmUgc2Vzc2lvbiBhIOl06QphYmFuZG9ubullIHN1ciBleHBpcmF0aW9uIGQndW4gdGltZS1vdXQuCgpDYXMgbGVzIHBsdXMgZnLpcXVlbnRzIDoKCiAgLSBTaSBUcSBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4KICAtIFNpIFRjIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSByZWxhaXMgZXQgbGUgc2VydmV1ciBkdXJhbnQgbGEgcGhhc2UgZGUgY29ubmV4aW9uLiBDZXQgaW5kaWNhdGV1cgogICAgZGV2cmFpdCBub3JtYWxlbWVudCB0b3Vqb3VycyDqdHJlIHRy6HMgYmFzIChtb2lucyBkZSBxdWVscXVlcyBkaXphaW5lcykuCiAgLSBTaSBUciBlc3QgcHJlc3F1ZSB0b3Vqb3VycyBpbmbpcmlldXIg4CAzMDAwLCBldCBxdWUgY2VydGFpbmVzIHZhbGV1cnMKICAgIHNlbWJsZW50IHByb2NoZXMgZGUgbGEgdmFsZXVyIG1veWVubmUgbWFqb3LpZSBkZSAzMDAwLCBpbCB5IGEgcGV1dC3qdHJlCiAgICBkZSBwZXJ0ZXMgZW50cmUgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIuCiAgLSBTaSBUdCBlc3QgbOln6HJlbWVudCBzdXDpcmlldXIgYXUgdGltZS1vdXQsIGMnZXN0IHNvdXZlbnQgcGFyY2UgcXVlIGxlCiAgICBjbGllbnQgZXQgbGUgc2VydmV1ciB1dGlsaXNlbnQgZHUga2VlcC1hbGl2ZSBIVFRQIGVudHJlIGV1eCBldCBxdWUgbGEKICAgIHNlc3Npb24gZXN0IG1haW50ZW51ZSBhcHLocyBsYSBmaW4gZGVzIOljaGFuZ2VzLiBWb2lyIHBsdXMgbG9pbiBwb3VyCiAgICBzYXZvaXIgY29tbWVudCBk6XNhY3RpdmVyIGxlIGtlZXAtYWxpdmUgSFRUUC4KCkF1dHJlcyBjYXMgKCd4eCcgcmVwculzZW50YW50IHVuZSB2YWxldXIgcXVlbGNvbnF1ZSDgIGlnbm9yZXIpIDoKICAtMS94eC94eC94eC9UdDogbGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpIG91CiAgICAgICAgICAgICAgICAgIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gc2FucyBjb21wbOl0ZXIgbGEgcmVxdep0ZS4KICBUcS8tMS94eC94eC9UdDogSWwgbifpdGFpdCBwYXMgcG9zc2libGUgZGUgdHJhaXRlciBsYSByZXF1ZXN0LCBwcm9iYWJsZW1lbnQKICAgICAgICAgICAgICAgICAgcGFyY2UgcXVlIHRvdXMgbGVzIHNlcnZldXJzIOl0YWllbnQgaG9ycyBkJ3VzYWdlLgogIFRxL1R3Ly0xL3h4L1R0OiBsYSBjb25uZXhpb24gbidhIHBhcyBwdSBzJ+l0YWJsaXIgdmVycyBsZSBzZXJ2ZXVyIChyZWZ1cyBvdQogICAgICAgICAgICAgICAgICB0aW1lLW91dCBhdSBib3V0IGRlIFR0LShUcStUdykgbXMpLgogIFRxL1R3L1RjLy0xL1R0OiBsZSBzZXJ2ZXVyIGEgYWNjZXB06SBsYSBjb25uZXhpb24gbWFpcyBuJ2EgcGFzIHLpcG9uZHUgZGFucwogICAgICAgICAgICAgICAgICBsZXMgdGVtcHMgb3UgYmllbiBhIHJlZmVybekgc2EgY29ubmV4aW9uIHRyb3AgdPR0LCBhdSBib3V0CiAgICAgICAgICAgICAgICAgIGRlIFR0LShUcStUdytUYykgbXMuCiAgICAgCjQuMi40KSBDb25kaXRpb25zIGRlIGTpY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBsb2dzIFRDUCBldCBIVFRQIGZvdXJuaXNzZW50IHVuIGluZGljYXRldXIgZGUgY29tcGzpdHVkZSBkZSBsYSBzZXNzaW9uIGRhbnMKbGUgY2hhbXAgJ2V0YXRfdGVybWluYWlzb24nLCBqdXN0ZSBhdmFudCBsZSBub21icmUgZGUgY29ubmV4aW9ucyBhY3RpdmVzLiBDJ2VzdAp1biBjaGFtcCBsb25nIGRlIDIgY2FyYWN06HJlcyBlbiBUQ1AgZXQgZGUgNCBjYXJhY3TocmVzIGVuIEhUVFAsIGNoYWN1biBheWFudAp1bmUgc2lnbmlmaWNhdGlvbiBwculjaXNlIDoKCiAgLSBzdXIgbGUgcHJlbWllciBjYXJhY3TocmUsIHVuIGNvZGUgcHLpY2lzYW50IGxlIHByZW1pZXIg6XbpbmVtZW50IHF1aSBhIGNhdXPpCiAgICBsYSB0ZXJtaW5haXNvbiBkZSBsYSBzZXNzaW9uIDoKCiAgICAgICAgQyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICBTIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdQogICAgICAgICAgICByZWZ1cyBleHBsaWNpdGUgZGUgY29ubmV4aW9uIGRlIGxhIHBhcnQgZGUgY2UgZGVybmllci4KCiAgICAgICAgUCA6IHRlcm1pbmFpc29uIHBy6W1hdHVy6WUgZGVzIHNlc3Npb25zIHBhciBsZSBwcm94eSwgcG91ciBjYXVzZQogICAgICAgICAgICBkJ2ltcG9zaXRpb24gZCd1bmUgbGltaXRlIHN1ciBsZSBub21icmUgZGUgY29ubmV4aW9ucywgcG91ciBjYXVzZQogICAgICAgICAgICBkZSBjb25maWd1cmF0aW9uIChleDogZmlsdHJlIGQnVVJMKSwgb3UgcGFyY2UgcXUndW4gY29udHL0bGUgZGUKICAgICAgICAgICAgc+ljdXJpdOkgYSBk6XRlY3TpIGV0IGJsb3F16SB1bmUgYW5vbWFsaWUgZGFucyBsYSBy6XBvbnNlIGR1CiAgICAgICAgICAgIHNlcnZldXIgcXVpIGF1cmFpdCBwdSBjYXVzZXIgdW5lIGZ1aXRlIGQnaW5mb3JtYXRpb25zIChwYXIgZXhlbXBsZSwKICAgICAgICAgICAgdW4gY29va2llIGNhY2hhYmxlKS4KCiAgICAgICAgUiA6IHVuZSByZXNzb3VyY2Ugc3VyIGxlIHByb3h5IGEg6XTpIOlwdWlz6WUgKG3pbW9pcmUsIHNvY2tldHMsIHBvcnRzCiAgICAgICAgICAgIHNvdXJjZSwgLi4uKS4gR+lu6XJhbGVtZW50LCBjZWxhIGFycml2ZSBhdSBjb3VycyBkZSBsJ+l0YWJsaXNzZW1lbnQKICAgICAgICAgICAgZCd1bmUgY29ubmV4aW9uLCBldCBsZXMgbG9ncyBzeXN06G1lIGRvaXZlbnQgY29udGVuaXIgdW5lIGNvcGllIGRlCiAgICAgICAgICAgIGwn6XJyZXVyIHBy6WNpc2UuCgogICAgICAgIEkgOiB1bmUgZXJyZXVyIGludGVybmUgYSDpdOkgaWRlbnRpZmnpZSBwYXIgbGUgcHJveHkg4CBsYSBzdWl0ZSBkJ3VuCiAgICAgICAgICAgIGF1dG8tY29udHL0bGUuIENlY2kgbmUgZG9pdCBKQU1BSVMgYXJyaXZlciwgZXQgdm91cyDqdGVzIGVuY291cmFn6XMKICAgICAgICAgICAg4CByZW1vbnRlciBuJ2ltcG9ydGUgcXVlbCBsb2cgY29udGVuYW50IGNlY2kgY2FyIGlsIHMnYWdpcmEgdW4gYnVnLgoKICAgICAgICBjIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgY2xpZW50IGEgZXhwaXLpIChjbGl0aW1lb3V0KS4KCiAgICAgICAgcyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IHNlcnZldXIgYSBleHBpcukgKHNydnRpbWVvdXQgZXQgY29udGltZW91dCkKCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUgZGUgc2Vzc2lvbi4KCiAgLSBzdXIgbGUgc2Vjb25kIGNhcmFjdOhyZSwgbCfpdGF0IGQnYXZhbmNlbWVudCBkZSBsYSBzZXNzaW9uIFRDUC9IVFRQIGxvcnMgZGUKICAgIGxhIGZlcm1ldHVyZSA6CgogICAgICAgIFIgOiBhdHRlbnRlIGQndW5lIFJFUVVFVEUgSFRUUCBjb21wbOh0ZSBkZSBsYSBwYXJ0IGR1IGNsaWVudC4gUmllbiBuJ2EKICAgICAgICAgICAg6XTpIHRyYW5zbWlzIGF1IHNlcnZldXIuCgogICAgICAgIFEgOiBhdHRlbnRlIGVuIGZpbGUgZCdhdHRlbnRlIChRVUVVRSkgZCd1bmUgcGxhY2UgcG91ciBhdm9pciB1bmUKICAgICAgICAgICAgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ci4gTmUgcGV1dCBhcHBhcmHudHJlIHF1ZSBzdXIgdW4gc2VydmV1cgogICAgICAgICAgICBwb3Nz6WRhbnQgdW4gcGFyYW3odHJlICdtYXhjb25uJy4gQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUKICAgICAgICAgICAgYXUgc2VydmV1ci4KCiAgICAgICAgQyA6IGF0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIENPTk5FWElPTiB2ZXJzIGxlIHNlcnZldXIuIExlCiAgICAgICAgICAgIHNlcnZldXIgcGV1dCBhdSBwbHVzIGF2b2lyIHZ1IGxhIHRlbnRhdGl2ZSBkZSBjb25uZXhpb24sIG1haXMKICAgICAgICAgICAgYXVjdW5lIGRvbm7pZSBuJ2Eg6XTpIOljaGFuZ+llLgoKICAgICAgICBIIDogYXR0ZW50ZSwgculjZXB0aW9uIG91IHRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIEhUVFAgKCJIRUFERVJTIikuCgogICAgICAgIEQgOiB0cmFuc2ZlcnQgZGVzIERPTk5FRVMgZHUgc2VydmV1ciB2ZXJzIGxlIGNsaWVudC4KCiAgICAgICAgTCA6IHRyYW5zZmVydCBkZXMgZGVybmnocmVzICgiTEFTVCIpIGRvbm7pZXMgZHUgcHJveHkgdmVycyBsZSBjbGllbnQsCiAgICAgICAgICAgIGFsb3JzIHF1ZSBsZSBzZXJ2ZXVyIGEgZOlq4CBmaW5pLgoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSwgYXBy6HMgZmluIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcy4KCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLiBDJ2VzdCBn6W7pcmFsZW1lbnQgbGUKICAgICAgICAgICAgY2FzIHN1ciBsZXMgTk9VVkVMTEVTIGNvbm5leGlvbnMgY2xpZW50cy4KCiAgICAgICAgSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBJTlZBTElERSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4KICAgICAgICAgICAgc2VydmV1ciBjb25udS4gQ2VjaSBwZXV0IOp0cmUgZPsg4CB1biBjaGFuZ2VtZW50IGRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgculjZW50LCDgIGRlcyBt6WxhbmdlcyBkZSBub21zIGRlIGNvb2tpZXMgZW50cmUgc2l0ZXMgSFRUUC9IVFRQUywKICAgICAgICAgICAgb3Ug4CB1bmUgYXR0YXF1ZS4KCiAgICAgICAgRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCiAgICAgICAgICAgIGQndXNhZ2UgKCJET1dOIikuIFN1aXZhbnQgbCdvcHRpb24gJ3BlcnNpc3QnLCBpbCBhIOl06SByZW52b3npIHZlcnMKICAgICAgICAgICAgdW4gYXV0cmUgc2VydmV1ciBvdSBhIHRvdXQgZGUgbeptZSB0ZW506SBkZSBzZSBjb25uZWN0ZXIgc3VyIGNlbHVpCiAgICAgICAgICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoKICAgICAgICBWIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIFZBTElERSBldCBhIHB1IHNlIGNvbm5lY3RlciBhdQogICAgICAgICAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUgKHBhcyBkZSBjb29raWUgcG9zaXRpb25u6SBkYW5zIGxhIGNvbmZpZ3VyYXRpb24pLgoKICAtIGxlIGRlcm5pZXIgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbCB0cmFpdGVtZW50IGVmZmVjdHXpIHN1ciB1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlIHJldHJvdXJu6SBwYXIgbGUgc2VydmV1ciAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgYXVjdW4KICAgICAgICAgICAgbidhIOl06SBpbnPpcukuCgogICAgICAgIEkgOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGxlCiAgICAgICAgICAgIHByb3h5IGVuIGEgSU5TRVJFIHVuLgoKICAgICAgICBQIDogdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIGEg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciBldCB0cmFuc21pcwogICAgICAgICAgICB0ZWwgcXVlbCAoIlBBU1NJRiIpLgoKICAgICAgICBSIDogbGUgY29va2llIHJldG91cm7pIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIFJFRUNSSVQgcGFyIGxlIHByb3h5LgoKICAgICAgICBEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIERFVFJVSVQgcGFyIGxlIHByb3h5IHBvdXIKICAgICAgICAgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlCgoKTGEgY29tYmluYWlzb24gZGVzIGRldXggcHJlbWllcnMgaW5kaWNhdGV1cnMgZm91cm5pdCB1bmUgZ3JhbmRlIHF1YW50aXRp6QpkJ2luZm9ybWF0aW9ucyBzdXIgY2UgcXVpIHNlIHBhc3NhaXQgbG9yc3F1ZSBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullLiBDZWxhCnBldXQgbm90YW1tZW50IGFpZGVyIOAgZOl0ZWN0ZXIgdW5lIHNhdHVyYXRpb24gZGUgc2VydmV1ciwgZGVzIHRyb3VibGVzIHLpc2VhdSwKZGVzIOlwdWlzZW1lbnRzIGRlIHJlc3NvdXJjZXMgc3lzdOhtZSBsb2NhbGVzLCBkZXMgYXR0YXF1ZXMsIGV0Yy4uLgoKTGVzIGNvbWJpbmFpc29ucyBkJ2luZGljYXRldXJzIGxlcyBwbHVzIGZy6XF1ZW50ZXMgc29udCDpbnVt6XLpZXMgaWNpLgoKICAgSW5kaWMgIFJhaXNvbgogICAgICBDUiAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGF2YW50IGQn6W1ldHRyZSB1bmUgcmVxdep0ZSBjb21wbOh0ZS4gSWwgZXN0CiAgICAgICAgICB0cuhzIHByb2JhYmxlIHF1ZSBsYSByZXF16nRlIGFpdCDpdOkgdGFw6WUg4CBsYSBtYWluIGRhbnMgdW4gY2xpZW50CiAgICAgICAgICB0ZWxuZXQgZXQgYWJvcnTpZSB0cm9wIHT0dC4KCiAgICAgIGNSICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdmFudCBy6WNlcHRpb24gZCd1bmUgcmVxdep0ZQogICAgICAgICAgY29tcGzodGUuIENlY2kgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6WxldukKICAgICAgICAgIHN1ciBsZSBjbGllbnQgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMKICAgICAgICAgIHRyYW5zcG9ydGVyIGRlcyBwYXF1ZXRzIGVudGllcnMsIG91IHBhciBkZXMgY2xpZW50cyBxdWkg6W52b2llbnQgZGVzCiAgICAgICAgICByZXF16nRlcyDgIGxhIG1haW4gZXQgbmUgdGFwZW50IHBhcyBhc3NleiB2aXRlLgoKICAgICAgU0MgIExlIHNlcnZldXIgYSBleHBsaWNpdGVtZW50IHJlZnVz6SBsYSBjb25uZXhpb24gKGxlIHByb3h5IGEgcmXndSB1bgogICAgICAgICAgUlNUIFRDUCBvdSB1biBtZXNzYWdlIElDTVAgZW4gcmV0b3VyKS4gRGFucyBjZXJ0YWlucyBjYXMsIGNlbGEgcGV1dAogICAgICAgICAg6nRyZSBsYSBjb3VjaGUgculzZWF1IHF1aSBpbmRpcXVlIGF1IHByb3h5IHF1ZSBsZSBzZXJ2ZXVyIG4nZXN0IHBhcwogICAgICAgICAgam9pZ25hYmxlIChwLmV4OiBwYXMgZGUgcm91dGUsIHBhcyBkZSBy6XBvbnNlIEFSUCBlbiBsb2NhbCwgZXRjLi4uKQoKICAgICAgc0MgIExhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIG4nYSBwYXMgcHUgcyfpdGFibGlyIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aS4KCiAgICAgIFBDICBMZSBwcm94eSBhIHJlZnVz6SBkJ+l0YWJsaXIgdW5lIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIHBhcmNlIHF1ZSBsZQogICAgICAgICAgbm9tYnJlIGRlIGNvbm5leGlvbnMgYSBhdHRlaW50IGxhIGxpbWl0ZSAnbWF4Y29ubicgKGdsb2JhbCBvdSBkZQogICAgICAgICAgbCdpbnN0YW5jZSkuIExlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbCdpbnN0YW5jZSBwb3VycmFpdCDqdHJlCiAgICAgICAgICBhdWdtZW506SwgdG91dCBjb21tZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGdsb2JhbC4KCiAgICAgIFJDICBVbmUgcmVzc291cmNlIGxvY2FsZSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cyBzb3VyY2UpLAogICAgICAgICAgZW1w6mNoYW50IGxhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIGRlIHMn6XRhYmxpci4gTGVzIGxvZ3MgZCdlcnJldXJzCiAgICAgICAgICBkaXJvbnQgcHLpY2lz6W1lbnQgY2UgcXVpIG1hbnF1YWl0LiBEYW5zIHRvdXMgbGVzIGNhcywgbGUgc2V1bCByZW3oZGUKICAgICAgICAgIGNvbnNpc3RlIOAgYWZmaW5lciBsZSBwYXJhbel0cmFnZSBzeXN06G1lLgoKICAgICAgY0ggIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF1IGNvdXJzIGQndW5lIHJlcXXqdGUgUE9TVC4gQ2VjaQogICAgICAgICAgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6Wxldukgc3VyIGxlIGNsaWVudAogICAgICAgICAgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMgdHJhbnNwb3J0ZXIgZGVzCiAgICAgICAgICBwYXF1ZXRzIGVudGllcnMuCgogICAgICBDSCAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1J2lsIGF0dGVuZGFpdCB1biBk6WJ1dCBkZSBy6XBvbnNlIGRlIGxhCiAgICAgICAgICBwYXJ0IGR1IHNlcnZldXIuIENlbGEgcGV1dCDqdHJlIGNhdXPpIHBhciBsZSBzZXJ2ZXVyIHF1aSBtZXR0YWl0IHRyb3AKICAgICAgICAgIGRlIHRlbXBzIOAgculwb25kcmUsIG91IHBhciB1biBjbGllbnQgY2xpcXVhbnQgcHLpY2lwaXRhbW1lbnQgc3VyIGxlCiAgICAgICAgICBib3V0b24gJ1N0b3AnLgoKICAgICAgQ1EgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBtaXNlIGVuIGZpbGUKICAgICAgICAgIGQnYXR0ZW50ZSBwb3VyIG9idGVuaXIgdW4gc2VydmV1ciBhdmVjIHN1ZmZpc2FtbWVudCBkZSBjb25uZXhpb25zCiAgICAgICAgICBsaWJyZXMgcG91ciBsJ2FjY2VwdGVyLiBDZWxhIHNpZ25pZmllIHNvaXQgcXVlIGwnZW5zZW1ibGUgZGVzCiAgICAgICAgICBzZXJ2ZXVycyDpdGFpZW50IHNhdHVy6XMsIHNvaXQgcXVlIGxlIHNlcnZldXIgYXNzaWdu6SBhIG1pcyB0cm9wIGRlCiAgICAgICAgICB0ZW1wcyDgIHLpcG9uZHJlLgoKICAgICAgc1EgIExhIHNlc3Npb24gYSBhdHRlbmR1IHRyb3AgbG9uZ3RlbXBzIGVuIGZpbGUgZCdhdHRlbnRlIGV0IGEg6XTpCiAgICAgICAgICBleHBpcullLgoKICAgICAgU0ggIExlIHNlcnZldXIgYSBhYm9ydOkgYnJ1dGFsZW1lbnQgYWxvcnMgcXUnaWwgZGV2YWl0IGVudm95ZXIgc2VzCiAgICAgICAgICBlbi106nRlcy4gRW4gZ+lu6XJhbCwgY2VsYSBpbmRpcXVlIHF1J2lsIGEgY3Jhc2jpLgoKICAgICAgc0ggIExlIHNlcnZldXIgbidhIHBhcyBwdSBy6XBvbmRyZSBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSwgY2UgcXVpIG1vbnRyZQogICAgICAgICAgZGVzIHRyYW5zYWN0aW9ucyB0cm9wIGxvbmd1ZXMsIHByb2JhYmxlbWVudCBjYXVz6WVzIHBhciB1biBiYWNrLWVuZAogICAgICAgICAgc2F0dXLpLiBMZXMgc2V1bGVzIHNvbHV0aW9ucyBzb250IGRlIGNvcnJpZ2VyIGxlIHByb2Js6G1lIHN1cgogICAgICAgICAgbCdhcHBsaWNhdGlvbiwgZCdhY2Nyb+50cmUgbGUgcGFyYW3odHJlICdzcnZ0aW1lb3V0JyBwb3VyIHN1cHBvcnRlcgogICAgICAgICAgZGVzIGF0dGVudGVzIHBsdXMgbG9uZ3VlcyBhdSByaXNxdWUgcXVlIGxlcyBjbGllbnRzIGFiYW5kb25uZW50IOAKICAgICAgICAgIGxldXIgdG91ciwgb3UgYmllbiBkJ2Fqb3V0ZXIgZGVzIHNlcnZldXJzLgogICAgICAKICAgICAgUFIgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCwgc29pdCDgIGNhdXNlIGQndW5lIHN5bnRheGUKICAgICAgICAgIEhUVFAgaW52YWxpZGUsIGF1cXVlbCBjYXMgaWwgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDAgYXUgY2xpZW50LAogICAgICAgICAgc29pdCDgIGNhdXNlIGQndW5lIHJlcXXqdGUgdmFsaWRhbnQgdW4gZmlsdHJlIGQnaW50ZXJkaWN0aW9uLCBhdXF1ZWwKICAgICAgICAgIGNhcyBsZSBwcm94eSBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMy4KCiAgICAgIFBIICBMZSBwcm94eSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1IHNlcnZldXIgcGFyY2UgcXUnZWxsZSDpdGFpdCBpbnZhbGlkZSwKICAgICAgICAgIGluY29tcGzodGUsIGRhbmdlcmV1c2UgKCdjYWNoZSBjb250cm9sJyksIG91IHBhcmNlIHF1J2VsbGUgdmFsaWRhaXQKICAgICAgICAgIHVuIGZpbHRyZSBkZSBz6WN1cml06S4gRGFucyB0b3VzIGxlcyBjYXMsIHVuZSBlcnJldXIgSFRUUCA1MDIgZXN0CiAgICAgICAgICByZW52b3npZSBhdSBjbGllbnQuCgogICAgICBjRCAgTGUgY2xpZW50IG4nYSBwYXMgbHUgZGUgZG9ubullcyBwZW5kYW50IGxlIHRlbXBzIHF1aSBsdWkg6XRhaXQKICAgICAgICAgIGltcGFydGkuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyBwcm9ibOhtZXMgculzZWF1IGP0dOkgY2xpZW50LgoKICAgICAgQ0QgIExlIGNsaWVudCBhIGFib3J06SBzYSBjb25uZWN0aW9uIGRlIG1hbmnocmUgaW5hdHRlbmR1ZSBwZW5kYW50IGxlCiAgICAgICAgICB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuIENlY2kgZXN0IHByb3ZvcXXpIHNvaXQgcGFyIGxlIGNyYXNoIGQndW4KICAgICAgICAgIG5hdmlnYXRldXIsIG91IHBhciB1bmUgc2Vzc2lvbiBlbiBIVFRQIGtlZXAtYWxpdmUgZW50cmUgbGUgc2VydmV1cgogICAgICAgICAgZXQgbGUgY2xpZW50IHRlcm1pbullIGVuIHByZW1pZXIgcGFyIGxlIGNsaWVudC4KCiAgICAgIHNEICBMZSBzZXJ2ZXVyIG4nYSByaWVuIGZhaXQgZHVyYW50IGxlIHRlbXBzIGltcGFydGkgcGFyIGxlIHBhcmFt6HRyZQogICAgICAgICAgJ3NydnRpbWVvdXQnLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgdGltZW91dHMgdHJvcCBjb3VydHMKICAgICAgICAgIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQgKGZpcmV3YWxscywgculwYXJ0aXRldXJzIGRlIGNoYXJnZSkKICAgICAgICAgIHNpdHXpcyBlbnRyZSBsZSBwcm94eSBldCBsZSBzZXJ2ZXVyLgoKNC4yLjUpIENhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjksIGxlcyBjYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcyBuZSBzb250IHBsdXMgZW52b3npcwp0ZWxzIHF1ZWxzIGRhbnMgbGVzIGxpZ25lcyBkZSBsb2dzLCBtYWlzIGluc2NyaXRzIHNvdXMgbGEgZm9ybWUgZGUgZGV1eCBjaGlmZnJlcwpoZXhhZOljaW1hdXgsIHBy6WZpeOlzIGR1IGNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJy4gTGVzIHNldWxzIGNhcmFjdOhyZXMKZG9y6W5hdmFudCBsb2d16XMgdGVscyBxdWVscyBzb250IGNvbXByaXMgZW50cmUgMzIgZXQgMTI2LiBCaWVuIOl2aWRlbW1lbnQsIGxlCmNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJyBlc3QgbHVpLW3qbWUgZW5jb2TpIGFmaW4gZGUgbGV2ZXIgbCdhbWJpZ3VpdOkuIElsIGVuCmVzdCBkZSBt6m1lIHBvdXIgbGUgY2FyYWN06HJlICciJywgYWluc2kgcXVlIGxlcyBjYXJhY3TocmVzICd7JywgJ3wnIGV0ICd9JyBwb3VyCmxlcyBlbi106nRlcy4KCjQuMi42KSBDYXB0dXJlIGQnZW4tdOp0ZXMgSFRUUCBldCBkZSBjb29raWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHZlcnNpb24gMS4xLjIzIGEgYXBwb3J06SBsYSBjYXB0dXJlIGRlcyBjb29raWVzLCBldCBsYSB2ZXJzaW9uIDEuMS4yOSBsYQpjYXB0dXJlIGQnZW4tdOp0ZXMuIFRvdXQgY2VjaSBlc3QgZWZmZWN0dekgZW4gdXRpbGlzYW50IGxlIG1vdC1jbOkgJ2NhcHR1cmUnLgoKTGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMgZmFjaWxpdGVudCBsZSBzdWl2aSBldCBsYSByZWNvbnN0aXR1dGlvbiBkJ3VuZSBzZXNzaW9uCnV0aWxpc2F0ZXVyLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSBjb29raWUgPHBy6WZpeGVfY29va2llPiBsZW4gPGxvbmd1ZXVyX2NhcHR1cmU+CgpDZWNpIGFjdGl2ZXJhIGxhIGNhcHR1cmUgZGUgY29va2llcyDgIGxhIGZvaXMgZGFucyBsZXMgcmVxdep0ZXMgZXQgZGFucyBsZXMKculwb25zZXMuIERlIGNldHRlIG1hbmnocmUsIGlsIGRldmllbnQgZmFjaWxlIGRlIGTpdGVjdGVyIGxvcnNxdSd1biB1dGlsaXNhdGV1cgpiYXNjdWxlIHN1ciB1bmUgbm91dmVsbGUgc2Vzc2lvbiBwYXIgZXhlbXBsZSwgY2FyIGxlIHNlcnZldXIgbHVpIHLpYXNzaWduZXJhIHVuCm5vdXZlYXUgY29va2llLgoKTGUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2VyYSBwYXIgPHBy6WZpeGVfY29va2llPiBzZXJhIGNhcHR1cuksIGV0CnRyYW5zbWlzIHNvdXMgbGEgZm9ybWUgIk5PTT12YWxldXIiLCBzYW5zIHRvdXRlZm9pcywgZXhj6WRlciA8bG9uZ3VldXJfY2FwdHVyZT4KY2FyYWN06HJlcyAoNjQgYXUgbWF4aW11bSkuIExvcnNxdWUgbGUgbm9tIGR1IGNvb2tpZSBlc3QgZml4ZSBldCBjb25udSwgb24gcGV1dApsZSBzdWZmaXhlciBkdSBzaWduZSAiPSIgcG91ciBzJ2Fzc3VyZXIgcXUnYXVjdW4gYXV0cmUgY29va2llIG5lIHByZW5kcmEgc2EKcGxhY2UgZGFucyBsZXMgbG9ncy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlIHBhciAiQVNQU0VTU0lPTiIKICAgIGNhcHR1cmUgY29va2llIEFTUFNFU1NJT04gbGVuIDMyCgogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGVzdCBleGFjdGVtZW50ICJ2Z252aXNpdG9yIgogICAgY2FwdHVyZSBjb29raWUgdmdudmlzaXRvcj0gbGVuIDMyCgpEYW5zIGxlcyBsb2dzLCBsZSBjaGFtcCBwculj6WRhbnQgbCdpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgY29udGllbnQgbGUgY29va2llCnBvc2l0aW9ubukgcGFyIGxlIHNlcnZldXIsIHBy6WPpZOkgZHUgY29va2llIHBvc2l0aW9ubukgcGFyIGxlIGNsaWVudC4gQ2hhY3VuCmRlIGNlcyBjaGFtcHMgZXN0IHJlbXBsYWPpIHBhciBsZSBzaWduZSAiLSIgbG9yc3F1J2F1Y3VuIGNvb2tpZSBuJ2VzdCBmb3VybmkKcGFyIGxlIGNsaWVudCBvdSBsZSBzZXJ2ZXVyLCBvdSBsb3JzcXVlIGwnb3B0aW9uIGVzdCBk6XNhY3RpdullLi4KCkxlcyBjYXB0dXJlcyBkJ2VuLXTqdGVzIG9udCB1biBy9GxlIGNvbXBs6HRlbWVudCBkaWZm6XJlbnQuIEVsbGVzIHNvbnQgdXRpbGVzCnBvdXIgc3VpdnJlIHVuIGlkZW50aWZpYW50IGRlIHJlcXXqdGUgZ2xvYmFsZW1lbnQgdW5pcXVlIHBvc2l0aW9ubukgcGFyIHVuCmF1dHJlIHByb3h5IGVuIGFtb250LCBwb3VyIGpvdXJuYWxpc2VyIGxlcyBub21zIGRlIHNlcnZldXJzIHZpcnR1ZWxzLCBsZXMgdHlwZXMKZGUgY2xpZW50cyB3ZWIsIGxhIGxvbmd1ZXVyIGRlcyBQT1NULCBsZXMgJ3JlZmVycmVycycsIGV0Yy4gRGFucyBsYSBy6XBvbnNlLCBvbgpwZXV0IGNoZXJjaGVyIGRlcyBpbmZvcm1hdGlvbnMgcmVsYXRpdmVzIOAgbGEgbG9uZ3VldXIgYW5ub25j6WUgZGUgbGEgculwb25zZSwKbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSwgb3UgZW5jb3JlIGxhIGxvY2FsaXNhdGlvbiBkJ3VuIG9iamV0IGVuIGNhcwpkZSByZWRpcmVjdGlvbi4gVG91dCBjb21tZSBwb3VyIGxlcyBjYXB0dXJlcyBkZSBjb29raWVzLCBpbCBlc3QgcG9zc2libGUKZCdpbmNsdXJlIGxlcyBlbi106nRlcyBkZSByZXF16nRlcyBldCBkZSBy6XBvbnNlIHNpbXVsdGFu6W1lbnQuIExhIHN5bnRheGUgZXN0CmxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgoKTm90ZTogTGVzIG5vbXMgZCdlbi106nRlcyBuZSBzb250IHBhcyBzZW5zaWJsZXMg4CBsYSBjYXNzZS4KCkV4ZW1wbGVzOgotLS0tLS0tLS0KICAgICMgY29uc2VydmVyIGxlIG5vbSBkdSBzZXJ2ZXVyIHZpcnR1ZWwgYWNj6WTpIHBhciBsZSBjbGllbnQKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICAjIG5vdGVyIGxhIGxvbmd1ZXVyIGRlcyBkb25u6WVzIGVudm956WVzIGRhbnMgdW4gUE9TVAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCgogICAgIyBub3RlciBsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlIHBhciBsZSBzZXJ2ZXVyCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICAjIG5vdGVyIGwnVVJMIGRlIHJlZGlyZWN0aW9uCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCkxlcyBlbi106nRlcyBub24gdHJvdXbpcyBzb250IGxvZ3XpcyDgIHZpZGUsIGV0IHNpIHVuIGVuLXTqdGUgYXBwYXJhaXQgcGx1c2lldXJzCmZvaXMsIHNldWxlIGxhIGRlcm5p6HJlIG9jY3VyZW5jZSBzZXJhIGNvbnNlcnbpZS4gTGVzIGVuLXTqdGVzIGRlIHJlcXXqdGUgc29udApyZWdyb3Vw6XMgZW50cmUgZGV1eCBhY2NvbGFkZXMgJ3snIGV0ICd9JyBkYW5zIGwnb3JkcmUgZGUgbGV1ciBk6WNsYXJhdGlvbiwgZXQKY2hhY3VuIHPpcGFy6XMgcGFyIHVuZSBiYXJyZSB2ZXJ0aWNhbGUgJ3wnLCBzYW5zIGF1Y3VuIGVzcGFjZS4gTGVzIGVuLXTqdGVzIGRlCnLpcG9uc2Ugc29udCBwculzZW506XMgZGUgbGEgbeptZSBtYW5p6HJlLCBtYWlzIGFwcuhzIHVuIGVzcGFjZSBzdWl2YW50IGxlIGJsb2MKZCdlbi106nRlIGRlIHJlcXXqdGUuIExlIHRvdXQgcHLpY+hkZSBsYSByZXF16nRlIEhUVFAuIEV4ZW1wbGUgOgoKICBDb25maWc6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgUmVmZXJlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFNlcnZlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgVmlhIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgogIExvZyA6CgogICAgQXVnICA5IDIwOjI2OjA5IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMTQgWzA5L0F1Zy8yMDA0OjIwOjI2OjA5XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMC8xNjIvKzE2MiAyMDAgKzM1MCAtIC0gLS0tLSAwLzAvMCAwLzAge2ZyLmFkc2VydmVyLnlhaG9vLmNvfHxodHRwOi8vZnIuZjQxNi5tYWlsLn0ge3w4NjR8cHJpdmF0ZXx8fSAiR0VUIGh0dHA6Ly9mci5hZHNlcnZlci55YWhvby5jb20vIgogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjAgWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMC8xODIvKzE4MiAyMDAgKzI3OSAtIC0gLS0tLSAwLzAvMCAwLzAge3cub2RzLm9yZ3x8fSB7Rm9ybWlsdXgvMC4xLjh8MzQ5NXx8fH0gIkdFVCBodHRwOi8vdy5vZHMub3JnL3N5dGFkaW4uaHRtbCBIVFRQLzEuMSIgCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyOCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8yLzEyNi8rMTI4IDIwMCArMjIzIC0gLSAtLS0tIDAvMC8wIDAvMCB7d3d3LmluZm90cmFmaWMuY29tfHxodHRwOi8vdy5vZHMub3JnL3N5dH0ge0FwYWNoZS8yLjAuNDAgKFJlZCBIfDkwNjh8fHx9ICJHRVQgaHR0cDovL3d3dy5pbmZvdHJhZmljLmNvbS9pbWFnZXMvbGl2ZS9jYXJ0ZXNpZGYvZ3JhbmRlcy9pZGZfbmUucG5nIEhUVFAvMS4xIiAKCjQuMi43KSBFeGVtcGxlcyBkZSBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvMC83LzE0Ny82NzIzIDIwMCAyNDMgLSAtIC0tLS0gMS8zLzUgIDAvMCJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBsb25ndWUgKDYuNXMpIHNhaXNpZSDgIGxhIG1haW4gYXZlYyB1biBjbGllbnQgdGVsbmV0LiBMZSBzZXJ2ZXVyIGEKICAgICBy6XBvbmR1IGVuIDE0NyBtcyBldCBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullIG5vcm1hbGVtZW50ICgnLS0tLScpCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA2NTU5LzEyMzAvNy8xNDcvNjg3MCAyMDAgMjQzIC0gLSAtLS0tIDk5LzIzOS8zMjQgMC85ICJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gSWRlbSwgbWFpcyBsYSByZXF16nRlIGEg6XTpIG1pc2UgZW4gYXR0ZW50ZSBkYW5zIGxhIGZpbGUgZ2xvYmFsZSBkZXJyaehyZQogICAgIDkgYXV0cmVzIHJlcXXqdGVzIGTpauAgcHLpc2VudGVzLCBldCB5IGEgYXR0ZW5kdSAxMjMwIG1zLgoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDEvMy8zIDAvMCAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBwb3VyIHVuIGxvbmcgdHJhbnNmZXJ0LiBMJ29wdGlvbiAnbG9nYXNhcCcg6XRhaXQgc3DpY2lmaellIGRvbmMgbGUKICAgICBsb2cgYSDpdOkgZ+lu6XLpIGp1c3RlIGF2YW50IGxlIHRyYW5zZmVydCBkZSBkb25u6WVzLiBMZSBzZXJ2ZXVyIGEgculwb25kdQogICAgIGVuIDE0IG1zLCAyNDMgb2N0ZXRzIGQnZW4tdOp0ZXMgb250IOl06SB0cmFuc2bpculzIGF1IGNsaWVudCwgZXQgbGUgdGVtcHMKICAgICB0b3RhbCBlbnRyZSBsJ2FjY2VwdCgpIGV0IGxlIHByZW1pZXIgb2N0ZXQgZGUgZG9ubullIGVzdCBkZSAzMCBtcy4KCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0LzMwIDUwMiAyNDMgLSAtIFBILS0gMC8yLzMgMC8wICJHRVQgL2NnaS1iaW4vYnVnLmNnaT8gSFRUUC8xLjAiCiAgPT4gbGUgcHJveHkgYSBibG9xdekgdW5lIHLpcG9uc2UgZHUgc2VydmV1ciBzb2l0IOAgY2F1c2UgZCd1biBmaWx0cmUgJ3JzcGRlbnknCiAgICAgb3UgJ3JzcGlkZW55Jywgc29pdCBwYXJjZSBxdSdpbCBhIGTpdGVjdOkgdW4gcmlzcXVlIGRlIGZ1aXRlIHNlbnNpYmxlCiAgICAgZCdpbmZvcm1hdGlvbnMgcmlzcXVhbnQgZCfqdHJlIGNhY2jpZXMuIERhbnMgY2UgY2FzLCBsYSBy6XBvbnNlIGVzdAogICAgIHJlbXBsYWPpZSBwYXIgJzUwMiBiYWQgZ2F0ZXdheScuCgotIGhhcHJveHlbMTgxMTNdOiAxMjcuMC4wLjE6MzQ1NDggWzE1L09jdC8yMDAzOjE1OjE4OjU1XSByZWxhaXMtaHR0cCA8Tk9TUlY+IC0xLy0xLy0xLy0xLzg0OTAgLTEgMCAtIC0gQ1ItLSAwLzIvMiAwLzAgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgYSByZWZlcm3pIGxhIGNvbm5leGlvbiBsdWktbeptZQogICAgICgnQy0tLScpIGF1IGJvdXQgZGUgOC41cywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbi106nRlICgnLVItLScpLgogICAgIEF1Y3VuZSBjb25uZXhpb24gbidhIOl06SBlbnZveellIHZlcnMgbGUgc2VydmV1ci4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OSBbMTUvT2N0LzIwMDM6MTU6MTk6MDZdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvLTEvNTAwMDEgNDA4IDAgLSAtIGNSLS0gMC8yLzIgMC8wICIiIAogID0+IExlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGV0IHNvbiB0aW1lLW91dCBhIGV4cGly6SAoJ2MtLS0nKSBhdQogICAgIGJvdXQgZGUgNTBzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuIEF1Y3VuZQogICAgIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLCBtYWlzIGxlIHJlbGFpcyBhIHRvdXQgZGUgbeptZQogICAgIHB1IHJlbnZveWVyIHVuIG1lc3NhZ2UgNDA4IGF1IGNsaWVudC4KCi0gaGFwcm94eVsxODk4OV06IDEyNy4wLjAuMTozNDU1MCBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdIHJlbGFpcy10Y3AgU3J2MSAwLzUwMDcgMCBjRAogID0+IGxvZyBlbiBtb2RlICd0Y3Bsb2cnLiBFeHBpcmF0aW9uIGR1IHRpbWUtb3V0IGP0dOkgY2xpZW50ICgnY0QnKSBhdSBib3V0IGRlCiAgICAgNXMuCgotIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAxMTUvMjAyLzIwNSAwLzAgIkhFQUQgLyBIVFRQLzEuMCIgCiAgPT4gTGEgcmVxdep0ZSBjbGllbnQgbWV0IDNzIOAgZW50cmVyIChwZXV0Lep0cmUgdW4gcHJvYmzobWUgculzZWF1KSwgZXQgbGEKICAgICBjb25uZXhpb24gKCdTQy0tJykgdmVycyBsZSBzZXJ2ZXVyIOljaG91ZSBhdSBib3V0IGRlIDQgdGVudGF0aXZlcyBkZSAyCiAgICAgc2Vjb25kZXMgKHJldHJpZXMgMyBkYW5zIGxhIGNvbmYpLCBwdWlzIHVuIGNvZGUgNTAzIGVzdCByZXRvdXJu6SBhdQogICAgIGNsaWVudC4gSWwgeSBhdmFpdCAxMTUgY29ubmV4aW9ucyBzdXIgY2Ugc2VydmV1ciwgMjAyIGNvbm5leGlvbnMgc3VyIGNldHRlCiAgICAgaW5zdGFuY2UsIGV0IDIwNSBzdXIgbCdlbnNlbWJsZSBkZXMgaW5zdGFuY2VzIHBvdXIgY2UgcHJvY2Vzc3VzLiBJbCBlc3QKICAgICBwb3NzaWJsZSBxdWUgbGUgc2VydmV1ciBhaXQgcmVmdXPpIGxhIGNvbm5leGlvbiBwYXJjZSBxdSdpbCB5IGVuIGF2YWl0CiAgICAgZOlq4CB0cm9wIGQn6XRhYmxpZXMuCgoKNC4zKSBNb2RpZmljYXRpb24gZGVzIGVuLXTqdGVzIEhUVFAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAgdW5pcXVlbWVudCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlbXBsYWNlciBjZXJ0YWlucyBlbi106nRlcyBkYW5zIGxhCnJlcXXqdGUgZXQvb3UgbGEgculwb25zZSDgIHBhcnRpciBkJ2V4cHJlc3Npb25zIHLpZ3VsaehyZXMuIElsIGVzdCDpZ2FsZW1lbnQKcG9zc2libGUgZGUgYmxvcXVlciBjZXJ0YWluZXMgcmVxdep0ZXMgZW4gZm9uY3Rpb24gZHUgY29udGVudSBkZXMgZW4tdOp0ZXMgb3UKZGUgbGEgcmVxdep0ZS4gVW5lIGxpbWl0YXRpb24gY2VwZW5kYW50IDogbGVzIGVuLXTqdGVzIGZvdXJuaXMgYXUgbWlsaWV1IGRlCmNvbm5leGlvbnMgcGVyc2lzdGVudGVzIChrZWVwLWFsaXZlKSBuZSBzb250IHBhcyB2dXMgY2FyIGlscyBzb250IGNvbnNpZOly6XMKY29tbWUgZmFpc2FudCBwYXJ0aWUgZGVzIOljaGFuZ2VzIGRlIGRvbm7pZXMgY29uc+ljdXRpZnMg4CBsYSBwcmVtaehyZSByZXF16nRlLgpMZXMgZG9ubullcyBuZSBzb250IHBhcyBhZmZlY3TpZXMsIGNlY2kgbmUgcydhcHBsaXF1ZSBxdSdhdXggZW4tdOp0ZXMuIAoKTGEgc3ludGF4ZSBlc3QgOgogICByZXFhZGQgICAgPHN0cmluZz4gICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcXJlcCAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBwb3VyIG1vZGlmaWVyIGxhIHJlcXXqdGUKICAgcmVxaXJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVsICAgIDxzZWFyY2g+ICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcWlkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWFsbG93ICA8c2VhcmNoPiAgICAgICAgICAgICBhdXRvcmlzZXIgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpYWxsb3cgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZW55ICAgPHNlYXJjaD4gICAgICAgICAgICAgaW50ZXJkaXJlIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxcGFzcyAgIDxzZWFyY2g+ICAgICAgICAgICAgIGluaGliZSBjZXMgYWN0aW9ucyBzdXIgbGVzIGVuLXTqdGVzIHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWlwYXNzICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAxIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6S4gSWwgZXN0IOlnYWxlbWVudCBwb3NzaWJsZSBkJ2luc+lyZXIgdW4gY2FyYWN06HJlIG5vbgppbXByaW1hYmxlICh1dGlsZSBwb3VyIGxlIHNhdXQgZGUgbGlnbmUpIGluc2NyaXZhbnQgJ1x4JyBzdWl2aSBkdSBjb2RlCmhleGFk6WNpbWFsIGRlIGNlIGNhcmFjdOhyZSAoY29tbWUgZW4gQykuCgo8c3RyaW5nPiByZXBy6XNlbnRlIHVuZSBjaGHubmUgcXVpIHNlcmEgYWpvdXTpZSBzeXN06W1hdGlxdWVtZW50IGFwcuhzIGxhCmRlcm5p6HJlIGxpZ25lIGQnZW4tdOp0ZS4KClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSBsYSBwcmVtaehyZSBsaWduZSBkZSBsYSByZXF16nRlIGV0IGNlbGxlIGRlIGxhIHLpcG9uc2Ugc29udCB0cmFpdOllcyBjb21tZQogICAgZGVzIGVuLXTqdGVzLCBjZSBxdWkgcGVybWV0IGRlIHLp6WNyaXJlIGRlcyBVUkwgZXQgZGVzIGNvZGVzIGQnZXJyZXVyLgogIC0gJ3JlcXJlcCcgZXN0IGwn6XF1aXZhbGVudCBkZSAnY2xpZXhwJyBlbiB2ZXJzaW9uIDEuMCwgZXQgJ3JzcHJlcCcgY2VsdWkgZGUKICAgICdzcnZleHAnLiBDZXMgbm9tcyBzb250IHRvdWpvdXJzIHN1cHBvcnTpcyBtYWlzIGTpY29uc2VpbGzpcy4KICAtIHBvdXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBsZSBub21icmUgdG90YWwgZGUgY2FyYWN06HJlcyBham91dOlzIHN1cgogICAgdW5lIHJlcXXqdGUgb3UgdW5lIHLpcG9uc2UgZXN0IGxpbWl06SDgIDQwOTYgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjUgKGNldHRlCiAgICBsaW1pdGUg6XRhaXQg4CAyNTYgYXVwYXJhdmFudCkuIENldHRlIHZhbGV1ciBlc3QgbW9kaWZpYWJsZSBkYW5zIGxlIGNvZGUuCiAgICBQb3VyIHVuIHVzYWdlIHRlbXBvcmFpcmUsIG9uIHBldXQgZ2FnbmVyIGRlIGxhIHBsYWNlIGVuIHN1cHByaW1hbnQgcXVlbHF1ZXMKICAgIGVuLXTqdGVzIGludXRpbGVzIGF2YW50IGxlcyBham91dHMuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDQwMyBmb3JiaWRkZW4iIHRhbmRpcyBxdSd1bmUKICAgIHLpcG9uc2UgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA1MDIgQmFkIGdhdGV3YXkiLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAgICAgIyMjIyMjIGEgZmV3IGV4YW1wbGVzICMjIyMjIwoKICAgICAgICAjIHJld3JpdGUgJ29ubGluZS5mcicgaW5zdGVhZCBvZiAnZnJlZS5mcicgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cwogICAgICAgIHJlcXJlcCAgICAgICAgXihHRVRcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCiAgICAgICAgcmVxcmVwICAgICAgICBeKFBPU1RcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCgogICAgICAgICMgZm9yY2UgcHJveHkgY29ubmVjdGlvbnMgdG8gY2xvc2UKICAgICAgICByZXFpcmVwICAgICAgICBeUHJveHktQ29ubmVjdGlvbjouKiAgICAgICAgUHJveHktQ29ubmVjdGlvbjpcIGNsb3NlCiAgICAgICAgIyByZXdyaXRlIGxvY2F0aW9ucwogICAgICAgIHJzcGlyZXAgICAgICAgIF4oTG9jYXRpb246XCApKFteOl0qOi8vW14vXSopKC4qKSBcMVwzCgogICAgICAgICMjIyMjIyBBIGZ1bGwgY29uZmlndXJhdGlvbiBiZWluZyB1c2VkIG9uIHByb2R1Y3Rpb24gIyMjIyMjCgogICAgICAgICMgRXZlcnkgaGVhZGVyIHNob3VsZCBlbmQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZS4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpbXCBdKiQKCiAgICAgICAgIyBibG9jayBBcGFjaGUgY2h1bmsgZXhwbG9pdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeVHJhbnNmZXItRW5jb2Rpbmc6W1wgXSpjaHVua2VkCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5Ib3N0OlwgYXBhY2hlLQoKICAgICAgICAjIGJsb2NrIGFubm95aW5nIHdvcm1zIHRoYXQgZmlsbCB0aGUgbG9ncy4uLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiooXC58JTJlKShcLnwlMmUpKCUyZnwlNWN8L3xcXFxcKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgKFteXCBdKlwgW15cIF0qXCB8LiolMDApCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKjxzY3JpcHQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qLyhyb290XC5leGVcP3xjbWRcLmV4ZVw/fGRlZmF1bHRcLmlkYVw/KQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQogICAgICAgIG9wdGlvbiAgICAgICAgICAgICAgICBodHRwY2xvcwoKICAgICAgICAjIGNoYW5nZSB0aGUgc2VydmVyIG5hbWUKICAgICAgICByc3BpZGVsICAgICAgICAgXlNlcnZlcjpcIAogICAgICAgIHJzcGFkZCAgICAgICAgICBTZXJ2ZXI6XCBGb3JtaWx1eC8wLjEuOAoKCkRlIHBsdXMsIGwnb3B0aW9uICdmb3J3YXJkZm9yJyBham91dGUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBkYW5zIHVuIGNoYW1wCidYLUZvcndhcmRlZC1Gb3InIGRlIGxhIHJlcXXqdGUsIGNlIHF1aSBwZXJtZXQg4CB1biBzZXJ2ZXVyIHdlYiBmaW5hbCBkZQpjb25uYe50cmUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBpbml0aWFsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCgpOb3RvbnMgcXVlIGNlcnRhaW5zIHNlcnZldXJzIEhUVFAgbmUgcmVmZXJtZW50IHBhcyBu6WNlc3NhaXJlbWVudCBsYSBzZXNzaW9uClRDUCBlbiBmaW4gZGUgdHJhaXRlbWVudCBsb3JzcXUnaWxzIHJl529pdmVudCB1biBlbnTqdGUgJ0Nvbm5lY3Rpb246IGNsb3NlJywKY2UgcXVpIHNlIHRyYWR1aXQgcGFyIGRlcyBncmFuZHMgbm9tYnJlcyBkZSBzZXNzaW9ucyDpdGFibGllcyBldCBkZXMgdGVtcHMKZ2xvYmF1eCB0cuhzIGxvbmdzIHN1ciBsZXMgcmVxdep0ZXMuIFBvdXIgY29udG91cm5lciBjZSBwcm9ibOhtZSwgbGEgdmVyc2lvbgoxLjIuOSBhcHBvcnRlIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2ZvcmNlY2xvc2UnIHF1aSByZWZlcm1lIGxhIGNvbm5leGlvbiBzb3J0YW50CnZlcnMgbGUgc2VydmV1ciBk6HMgcXUnaWwgY29tbWVuY2Ug4CBy6XBvbmRyZSBldCBzZXVsZW1lbnQgc2kgbGUgdGFtcG9uIGRlCnJlcXXqdGUgZXN0IHZpZGUuIEF0dGVudGlvbiB0b3V0ZWZvaXMg4CBuZSBQQVMgdXRpbGlzZXIgY2V0dGUgb3B0aW9uIHNpIGRlcwpt6XRob2RlcyBDT05ORUNUIHNvbnQgYXR0ZW5kdWVzIGVudHJlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyLiBMJ29wdGlvbgonZm9yY2VjbG9zZScgaW1wbGlxdWUgbCdvcHRpb24gJ2h0dHBjbG9zZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nICBnbG9iYWwKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGZvcmNlY2xvc2UKCgo0LjQpIFLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIGNvbWJpbmFpc29uIGRlIGwnaW5zZXJ0aW9uIGRlIGNvb2tpZSBhdmVjIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lCnBlcm1ldCBkJ2Fzc3VyZXIgdW5lIHBlcnNpc3RlbmNlIGRhbnMgbGVzIHNlc3Npb25zIEhUVFAgZCd1bmUgbWFuaehyZQpwcmF0aXF1ZW1lbnQgdHJhbnNwYXJlbnRlIHBvdXIgbGVzIGFwcGxpY2F0aW9ucy4gTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6CiAgLSBhdHRyaWJ1ZXIgdW5lIHZhbGV1ciBkJ3VuIGNvb2tpZSDgIGNoYXF1ZSBzZXJ2ZXVyCiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGludGVybmUKICAtIGluc+lyZXIgdW4gY29va2llIGRhbnMgbGVzIHLpcG9uc2VzIGlzc3VlcyBkJ3VuZSBy6XBhcnRpdGlvbiB1bmlxdWVtZW50LAogICAgZXQgZmFpcmUgZW4gc29ydGUgcXVlIGRlcyBjYWNoZXMgbmUgbeltb3Jpc2VudCBwYXMgY2UgY29va2llLgogIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24gbG9ycyBkZXMgcmVxdep0ZXMgdWx06XJpZXVyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKTCdhdXRyZSBzb2x1dGlvbiBhcHBvcnTpZSBwYXIgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMyBlc3QgZGUgcul1dGlsaXNlciB1bgpjb29raWUgZW4gcHJvdmVuYW5jZSBkdSBzZXJ2ZXVyIGV0IGRlIGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIuCkRhbnMgY2UgY2FzLCBuZSBwYXMgb3VibGllciBkZSBmb3JjZXIgbGUgbW9kZSAiaHR0cGNsb3NlIiBwb3VyIGVtcOpjaGVyIGxlCmNsaWVudCBldCBsZSBzZXJ2ZXVyIGRlIHRyYXZhaWxsZXIgZW4gbW9kZSAia2VlcC1hbGl2ZSIgYWZpbiBxdWUgbGUgcHJveHkKcHVpc3NlIGNvcnJpZ2VyIGxlIG5vbSBkdSBjb29raWUgZGFucyB0b3V0ZXMgbGVzIGZ1dHVyZXMgcmVxdep0ZXMuCgogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzcnYxIGNoZWNrCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc3J2MiBjaGVjawogICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKCjQuNSkgUHJvdGVjdGlvbiBjb250cmUgbGVzIGZ1aXRlcyBkJ2luZm9ybWF0aW9ucyBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGVzIHZlcnNpb25zIDEuMS4yOCBldCAxLjIuMSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnY2hlY2tjYWNoZScgYSDpdOkKY3Lp6WUuIEVsbGUgc2VydCDgIGluc3BlY3RlciBtaW51dGlldXNlbWVudCBsZXMgZW4tdOp0ZXMgJ0NhY2hlLWNvbnRyb2wnLAonUHJhZ21hJywgZXQgJ1NldC1jb29raWUnIGRhbnMgbGVzIHLpcG9uc2VzIHNlcnZldXIgcG91ciBk6XRlcm1pbmVyIHMnaWwgeSBhCnVuIHJpc3F1ZSBkZSBjYWNoZXIgdW4gY29va2llIHN1ciB1biBwcm94eSBj9HTpIGNsaWVudC4gUXVhbmQgY2V0dGUgb3B0aW9uIGVzdAphY3RpdullLCBsZXMgc2V1bGVzIHLpcG9uc2VzIHF1aSBwZXV2ZW50IOp0cmUgcmV0b3VybullcyBhdSBjbGllbnQgc29udCA6CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBuJ29udCBwYXMgZCdlbi106nRlICdTZXQtY29va2llJyA7CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBvbnQgdW4gY29kZSBkZSByZXRvdXIgYXV0cmUgcXVlIDIwMCwgMjAzLCAyMDYsIDMwMCwgMzAxLCAKICAgIDQxMCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6SB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgZm9udCBzdWl0ZSDgIHVuZSByZXF16nRlIFBPU1QsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukKICAgIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnUHJhZ21hOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHJpdmF0ZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLXN0b3JlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbWF4LWFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBzLW1heGFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUiJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSwnCiAgICAoYXV0b3Jpc2FudCBkJ2F1dHJlcyBjaGFtcHMgYXBy6HMgc2V0LWNvb2tpZSkuCgpTaSB1bmUgculwb25zZSBuZSByZXNwZWN0ZSBwYXMgY2VzIHBy6S1yZXF1aXMsIGFsb3JzIGVsbGUgc2VyYSBibG9xdellIGRlIGxhCm3qbWUgbWFuaehyZSBxdWUgcydpbCBzJ2FnaXNzYWl0IGQndW4gZmlsdHJlICdyc3BkZW55JywgYXZlYyBlbiByZXRvdXIgdW4KbWVzc2FnZSAiSFRUUCA1MDIgYmFkIGdhdGV3YXkiLiBMJ+l0YXQgZGUgc2Vzc2lvbiBtb250cmUgIlBILS0iIGNlIHF1aSB2ZXV0CmRpcmUgcXVlIGMnZXN0IGxlIHByb3h5IHF1aSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1cmFudCBsZSB0cmFpdGVtZW50IGRlcwplbi106nRlcy4gRGUgcGx1cywgdW4gbWVzc2FnZSBkJ2FsZXJ0ZSBzZXJhIGVudm956SBkYW5zIGxlcyBsb2dzIGRlIHNvcnRlIHF1ZQpsJ2FkbWluaXN0cmF0ZXVyIHNhY2hlIHF1J2lsIHkgYSB1bmUgYWN0aW9uIGNvcnJlY3RyaWNlIOAgZW50cmVwcmVuZHJlLgoKNC42KSBQZXJzb25hbGlzYXRpb24gZGVzIGVycmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbmVzIHNpdHVhdGlvbnMgY29uZHVpc2VudCDgIHJldG91cm5lciB1bmUgZXJyZXVyIEhUVFAgYXUgY2xpZW50IDoKICAtIHJlcXXqdGUgaW52YWxpZGUgb3UgdHJvcCBsb25ndWUgPT4gY29kZSBIVFRQIDQwMAogIC0gcmVxdep0ZSBtZXR0YW50IHRyb3AgZGUgdGVtcHMg4CB2ZW5pciA9PiBjb2RlIEhUVFAgNDA4CiAgLSByZXF16nRlIGludGVyZGl0ZSAoYmxvcXXpZSBwYXIgdW4gcmVxaWRlbnkpID0+IGNvZGUgSFRUUCA0MDMKICAtIGVycmV1ciBpbnRlcm5lIGR1IHByb3h5ID0+IGNvZGUgSFRUUCA1MDAKICAtIGxlIHNlcnZldXIgYSByZXRvdXJu6SB1bmUgculwb25zZSBpbmNvbXBs6HRlIG91IGludmFsaWRlID0+IGNvZGUgSFRUUCA1MDIKICAtIGF1Y3VuIHNlcnZldXIgZGlzcG9uaWJsZSBwb3VyIGNldHRlIHJlcXXqdGUgPT4gY29kZSBIVFRQIDUwMwogIC0gbGUgc2VydmV1ciBuJ2EgcGFzIHLpcG9uZHUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpID0+IGNvZGUgSFRUUCA1MDQKClVuIG1lc3NhZ2UgZCdlcnJldXIgc3VjY2ludCB0aXLpIGRlIGxhIFJGQyBhY2NvbXBhZ25lIGNlcyBjb2RlcyBkZSByZXRvdXIuCkNlcGVuZGFudCwgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjbGllbnTobGUsIG9uIHBldXQgcHLpZulyZXIgcmV0b3VybmVyIGRlcwpwYWdlcyBwZXJzb25uYWxpc+llcy4gQ2VjaSBlc3QgcG9zc2libGUgcGFyIGxlIGJpYWlzIGRlIGxhIGNvbW1hbmRlICJlcnJvcmxvYyI6CgogICAgZXJyb3Jsb2MgPGNvZGVfSFRUUD4gPGxvY2F0aW9uPgoKQXUgbGlldSBkZSBn6W7pcmVyIHVuZSBlcnJldXIgSFRUUCA8Y29kZV9IVFRQPiBwYXJtaSBsZXMgY29kZXMgY2l06XMgY2ktZGVzc3VzLApsZSBwcm94eSBn6W7ocmVyYSB1biBjb2RlIGRlIHJlZGlyZWN0aW9uIHRlbXBvcmFpcmUgKEhUVFAgMzAyKSB2ZXJzIGwnYWRyZXNzZQpkJ3VuZSBwYWdlIHBy6WNpc+llIGRhbnMgPGxvY2F0aW9uPi4gQ2V0dGUgYWRyZXNzZSBwZXV0IOp0cmUgcmVsYXRpdmUgYXUgc2l0ZSwKb3UgYWJzb2x1ZS4gQ29tbWUgY2V0dGUgculwb25zZSBlc3QgdHJh7nTpZSBwYXIgbGUgbmF2aWdhdGV1ciBkdSBjbGllbnQKbHVpLW3qbWUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlIHF1ZSBsJ2FkcmVzc2UgZm91cm5pZSBsdWkgc29pdCBhY2Nlc3NpYmxlLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBlcnJvcmxvYyA0MDAgL2JhZHJlcXVlc3QuaHRtbAogICAgICAgIGVycm9ybG9jIDQwMyAvZm9yYmlkZGVuLmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDggL3Rvb2xvbmcuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMCBodHRwOi8vaGFwcm94eS5kb21haW4ubmV0L2J1Z3JlcG9ydC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAyIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAzIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTA0IGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCgpOb3RlOiBsYSBSRkMyNjE2IHN0aXB1bGUgcXUndW4gY2xpZW50IGRvaXQgcul1dGlsaXNlciBsYSBt6m1lIG3pdGhvZGUgcG91cgphY2PpZGVyIOAgbCdVUkwgZGUgcmVkaXJlY3Rpb24gcXVlIGNlbGxlIHF1aSBsJ2EgcmV0b3VybullLCBjZSBxdWkgcG9zZSBkZXMKcHJvYmzobWVzIGF2ZWMgbGVzIHJlcXXqdGVzIFBPU1QuIExlIGNvZGUgZGUgcmV0b3VyIDMwMyBhIOl06SBjcunpIGV4cHLocyBwb3VyCnLpZ2xlciBjZSBwcm9ibOhtZSwgaW5kaXF1YW50IGF1IGNsaWVudCBxdSdpbCBkb2l0IGFjY+lkZXIg4CBsJ1VSTCByZXRvdXJu6WUKZGFucyBsZSBjaGFtcCBMb2NhdGlvbiBhdmVjIGxhIG3pdGhvZGUgR0VUIHVuaXF1ZW1lbnQuIFNldWxlbWVudCwgY2VydGFpbnMKbmF2aWdhdGV1cnMgYW506XJpZXVycyDgIEhUVFAvMS4xIG5lIGNvbm5haXNzZW50IHBhcyBjZSBjb2RlIGRlIHJldG91ci4gRGUKcGx1cywgbGEgcGx1cGFydCBkZXMgbmF2aWdhdGV1cnMgc2UgY29tcG9ydGVudCBk6WrgIGF2ZWMgbGUgY29kZSAzMDIgY29tbWUgaWxzCmRldnJhaWVudCBsZSBmYWlyZSBhdmVjIGxlIDMwMy4gRG9uYywgZGFucyBsZSBidXQgZGUgbGFpc3NlciBsZSBjaG9peCDgCmwndXRpbGlzYXRldXIsIGxlcyB2ZXJzaW9ucyAxLjEuMzEgZXQgMS4yLjUgYXBwb3J0ZW50IGRldXggbm91dmVsbGVzIGNvbW1hbmRlcwp2aXNhbnQg4CByZW1wbGFjZXIgJ2Vycm9ybG9jJyA6ICdlcnJvcmxvYzMwMicgZXQgJ2Vycm9ybG9jMzAzJy4KCkxldXIgdXNhZ2Ugbm9uIGFtYmln/CBlc3QgcmVjb21tYW5k6SDgIGxhIHBsYWNlIGRlIGxhIGNvbW1hbmRlICdlcnJvcmxvYycgKHF1aQp1dGlsaXNlIHRvdWpvdXJzIDMwMikuIERhbnMgbGUgZG91dGUsIHBy6WbpcmV6IGwndXRpbGlzYXRpb24gZGUgJ2Vycm9ybG9jMzAzJwpk6HMgcXVlIHZvdXMgc2F2ZXogcXVlIHZvcyBjbGllbnRzIHN1cHBvcnRlbnQgbGUgY29kZSBkZSByZXRvdXIgSFRUUCAzMDMuCgo0LjcpIENoYW5nZW1lbnQgZGVzIHZhbGV1cnMgcGFyIGTpZmF1dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxhIHZlcnNpb24gMS4xLjIyIGVzdCBhcHBhcnVlIGxhIG5vdGlvbiBkZSB2YWxldXJzIHBhciBk6WZhdXQsIGNlIHF1aQrpdml0ZSBkZSBy6XDpdGVyIGRlcyBwYXJhbeh0cmVzIGNvbW11bnMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcywgdGVscyBxdWUgbGVzCnRpbWVvdXRzLCBhZHJlc3NlcyBkZSBsb2csIG1vZGVzIGRlIGZvbmN0aW9ubmVtZW50LCBldGMuCgpMZXMgdmFsZXVycyBwYXIgZOlmYXV0IHNvbnQgcG9zaXRpb25u6WVzIGRhbnMgbGEgZGVybmnocmUgc2VjdGlvbiAnZGVmYXVsdHMnCnBy6WPpZGVudCBsJ2luc3RhbmNlIHF1aSBsZXMgdXRpbGlzZXJhLiBPbiBwZXV0IGRvbmMgbWV0dHJlIGF1dGFudCBkZSBzZWN0aW9ucwonZGVmYXVsdHMnIHF1ZSBsJ29uIHZldXQuIElsIGZhdXQganVzdGUgc2UgcmFwcGVsZXIgcXVlIGxhIHBy6XNlbmNlIGQndW5lIHRlbGxlCnNlY3Rpb24gaW1wbGlxdWUgdW5lIGFubnVsYXRpb24gZGUgdG91cyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHBvc2l0aW9ubulzCnBy6WPpZGVtbWVudCwgZGFucyBsZSBidXQgZGUgbGVzIHJlbXBsYWNlci4KCkxhIHNlY3Rpb24gJ2RlZmF1bHRzJyB1dGlsaXNlIGxhIG3qbWUgc3ludGF4ZSBxdWUgbGEgc2VjdGlvbiAnbGlzdGVuJywgYXV4CnBhcmFt6HRyZXMgcHLocyBxdWkgbmUgc29udCBwYXMgc3VwcG9ydOlzLiBMZSBtb3QgY2zpICdkZWZhdWx0cycgcGV1dCBhY2NlcHRlcgp1biBjb21tZW50YWlyZSBlbiBndWlzZSBwYXJhbeh0cmUuCgpEYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xLCBzZXVscyBsZXMgcGFyYW3odHJlcyBzdWl2YW50cyBwZXV2ZW50IOp0cmUKcG9zaXRpb25u6XMgZGFucyB1bmUgc2VjdGlvbiAnZGVmYXVsdHMnIDoKICAtIGxvZyAobGUgcHJlbWllciBldCBsZSBzZWNvbmQpCiAgLSBtb2RlIHsgdGNwLCBodHRwLCBoZWFsdGggfQogIC0gYmFsYW5jZSB7IHJvdW5kcm9iaW4gfQogIC0gZGlzYWJsZWQgKHBvdXIgZOlzYWN0aXZlciB0b3V0ZXMgbGVzIGluc3RhbmNlcyBxdWkgc3VpdmVudCkKICAtIGVuYWJsZWQgKHBvdXIgZmFpcmUgbCdvcOlyYXRpb24gaW52ZXJzZSwgbWFpcyBjJ2VzdCBsZSBjYXMgcGFyIGTpZmF1dCkKICAtIGNvbnRpbWVvdXQsIGNsaXRpbWVvdXQsIHNydnRpbWVvdXQsIGdyYWNlLCByZXRyaWVzLCBtYXhjb25uCiAgLSBvcHRpb24geyByZWRpc3BhdGNoLCB0cmFuc3BhcmVudCwga2VlcGFsaXZlLCBmb3J3YXJkZm9yLCBsb2dhc2FwLCBodHRwY2xvc2UsCiAgICAgICAgICAgICBjaGVja2NhY2hlLCBodHRwbG9nLCB0Y3Bsb2csIGRvbnRsb2dudWxsLCBwZXJzaXN0LCBodHRwY2hrIH0KICAtIHJlZGlzcGF0Y2gsIHJlZGlzcCwgdHJhbnNwYXJlbnQsIHNvdXJjZSB7IGFkZHI6cG9ydCB9CiAgLSBjb29raWUsIGNhcHR1cmUKICAtIGVycm9ybG9jCgpOZSBzb250IHBhcyBzdXBwb3J06XMgZGFucyBjZXR0ZSB2ZXJzaW9uLCBsZXMgYWRyZXNzZXMgZGUgZGlzcGF0Y2ggZXQgbGVzCmNvbmZpZ3VyYXRpb25zIGRlIHNlcnZldXJzLCBhaW5zaSBxdWUgdG91cyBsZXMgZmlsdHJlcyBiYXPpcyBzdXIgbGVzCmV4cHJlc3Npb25zIHLpZ3VsaehyZXMgOgogIC0gZGlzcGF0Y2gsIHNlcnZlciwKICAtIHJlcSosIHJzcCoKCkVuZmluLCBpbCBuJ3kgYSBwYXMgbGUgbW95ZW4sIHBvdXIgbGUgbW9tZW50LCBkJ2ludmFsaWRlciB1biBwYXJhbeh0cmUgYm9vbOllbgpwb3NpdGlvbm7pIHBhciBk6WZhdXQuIERvbmMgc2kgdW5lIG9wdGlvbiBlc3Qgc3DpY2lmaellIGRhbnMgbGVzIHBhcmFt6HRyZXMgcGFyCmTpZmF1dCwgbGUgc2V1bCBtb3llbiBkZSBsYSBk6XNhY3RpdmVyIHBvdXIgdW5lIGluc3RhbmNlLCBjJ2VzdCBkZSBjaGFuZ2VyIGxlcwpwYXJhbeh0cmVzIHBhciBk6WZhdXQgYXZhbnQgbGEgZOljbGFyYXRpb24gZGUgbCdpbnN0YW5jZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIFRDUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMTgwMDAwCiAgICAgICAgc3J2dGltZW91dCAxODAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKICAgICAgICByZWRpc3BhdGNoCgogICAgbGlzdGVuIGFwcF90Y3AxIDEwLjAuMC4xOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjIuMiBiYWNrdXAKICAgIAogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIEhUVFAKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMjAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDIwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBjYXB0dXJlIGNvb2tpZSB1c2VyaWQ9IGxlbiAxMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6KzgwMDAgY29va2llIHNydjIgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKCiAgICBkZWZhdWx0cwogICAgICAgICMgc2VjdGlvbiB2aWRlIHF1aSBhbm51bGUgdG91cyBsZXMgcGFyYW3odGVzIHBhciBk6WZhdXQuCgoKNC44KSBSYXBwb3J0IGQn6XRhdCBzb3VzIGZvcm1lIGRlIHBhZ2UgSFRNTAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuMTQsIGlsIGRldmllbnQgcG9zc2libGUgcG91ciBoYXByb3h5IGQnaW50ZXJjZXB0cmUgZGVzCnJlcXXqdGVzIHBvdXIgdW5lIFVSSSBwYXJ0aWN1bGnocmUgZXQgZGUgcmV0b3VybmVyIHVuIHJhcHBvcnQgY29tcGxldCBkJ+l0YXQgZGUKbCdhY3Rpdml06SBkdSBwcm94eSwgZXQgZGVzIHN0YXRpc3RpcXVlcyBzdXIgbGVzIHNlcnZldXJzLiBDZWNpIGVzdCBkaXNwb25pYmxlCnZpYSBsZSBtb3QgY2zpICJzdGF0cyIgYXNzb2Np6SDgIG4naW1wb3J0ZSBsYXF1ZWxsZSBkZSBjZXMgb3B0aW9ucyA6CgogICAtIHN0YXRzIGVuYWJsZQogICAtIHN0YXRzIHVyaSA8dXJpIHByZWZpeD4KICAgLSBzdGF0cyByZWFsbSA8YXV0aGVudGljYXRpb24gcmVhbG0+CiAgIC0gc3RhdHMgYXV0aCA8dXNlcjpwYXNzd29yZD4KICAgLSBzdGF0cyBzY29wZSA8cHJveHlfaWQ+IHwgJy4nCgoKUGFyIGTpZmF1dCwgbGUgcmFwcG9ydCBlc3QgZOlzYWN0aXbpLiBMZSBmYWl0IGRlIHNw6WNpZmllciB1bmUgZGVzIGNvbWJpbmFpc2lvbgpjaS1kZXNzdXMgYWN0aXZlIGxlIHJhcHBvcnQgcG91ciBsJ2luc3RhbmNlIGRlIHByb3h5IHF1aSBsZSBy6WbpcmVuY2UuIExhCnNvbHV0aW9uIGxhIHBsdXMgc2ltcGxlIGVzdCBkJ3V0aWxpc2VyICJzdGF0cyBlbmFibGUiIHF1aSBhY3RpdmVyYSBsZSByYXBwb3J0CmF2ZWMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBzdWl2YW50IDoKCiAgIC0gZGVmYXVsdCBVUkkgICA6ICIvaGFwcm94eT9zdGF0cyIgICAgICAgIChDT05GSUdfU1RBVFNfREVGQVVMVF9VUkkpCiAgIC0gZGVmYXVsdCBhdXRoICA6IG5vbiBzcOljaWZp6SAocGFzIGQnYXV0aGVudGljYXRpb24pCiAgIC0gZGVmYXVsdCByZWFsbSA6ICJIQVByb3h5IFN0YXRpc3RpY3MiICAgIChDT05GSUdfU1RBVFNfREVGQVVMVF9SRUFMTSkKICAgLSBkZWZhdWx0IHNjb3BlIDogbm9uIHNwZWNpZmnpIChhY2PocyDgIHRvdXRlcyBsZXMgaW5zdGFuY2VzKQoKTCdvcHRpb24gInN0YXRzIHVyaSA8dXJpX3ByZWZpeD4iIHBlcm1ldCBkJ2ludGVyY2VwdGVyIHVuIGF1dHJlIHBy6WZpeGUgZCdVUkkKcXVlIGNlbHVpIHBhciBk6WZhdXQuIE5vdGVyIHF1ZSBuJ2ltcG9ydGUgcXVlbGxlIFVSSSBxdWkgQ09NTUVOQ0UgYXZlYyBjZXR0ZQpjaGHubmUgc2VyYSB2YWxpZOllLiBQYXIgZXhlbXBsZSwgdW5lIGluc3RhbmNlIHBvdXJyYWl0IOp0cmUgZOlkaellIOAgbGEgcGFnZQpkJ+l0YXQgc2V1bGVtZW50IGV0IHLpcG9uZHJlIOAgdG91dGUgVVJJLgoKRXhhbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBpbnRlcmNlcHRlIG4naW1wb3J0ZSBxdWVsbGUgVVJJIGV0IHJldG91cm5lIGxhIHBhZ2UgZCfpdGF0LgogICAgbGlzdGVuIHN0YXRzIDo4MDgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgc3RhdHMgdXJpIC8KCgpMJ29wdGlvbiAic3RhdHMgYXV0aCA8dXNlcjpwYXNzd29yZD4iIGFjdGl2ZSBsJ2F1dGhlbnRpZmljYXRpb24gIkJhc2ljIiBldApham91dGUgdW4gY291cGxlICJ1c2VyOnBhc3N3b3JkIiB2YWxpZGUg4CBsYSBsaXN0ZSBkZXMgY29tcHRlcyBhdXRvcmlz6XMuCkwndXRpbGlzYXRldXIgPHVzZXI+IGV0IGxlIG1vdCBkZSBwYXNzZSA8cGFzc3dvcmQ+IGRvaXZlbnQg6nRyZSBwculjaXPpcwplbiBjbGFpciBkYW5zIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiwgZXQgY29tbWUgY2VjaSBlc3QgZGUKbCdhdXRoZW50aWZpY2F0aW9uIEhUVFAgIkJhc2ljIiwgaWwgZmF1dCDqdHJlIGNvbnNjaWVudCBxdSdpbHMgdHJhbnNpdGVudCBlbgpjbGFpciBzdXIgbGUgculzZWF1LCBkb25jIGlsIG5lIGZhdXQgcGFzIHV0aWxpc2VyIGRlIGNvbXB0ZSBzZW5zaWJsZS4gTGEgbGlzdGUKZXN0IGlsbGltaXTpZSBkYW5zIGxlIGJ1dCBkZSBwb3V2b2lyIGZvdXJuaXIgZGVzIGFjY+hzIGZhY2lsZW1lbnQg4CBkZXMKZOl2ZWxvcHBldXJzIG91IOAgZGVzIGNsaWVudHMuCgpMJ29wdGlvbiAic3RhdHMgcmVhbG0gPHJlYWxtPiIgZOlmaW5pdCBsZSAiZG9tYWluZSIgKCJyZWFsbSIpIGRlIHZhbGlkaXTpIGR1Cm1vdCBkZSBwYXNzZSBxdWkgc2VyYSBwculzZW506SBkYW5zIGxhIGJv7nRlIGRlIGRpYWxvZ3VlIGR1IG5hdmlnYXRldXIKbG9yc3F1J2lsIGRlbWFuZGVyYSB1biBjb21wdGUgdXRpbGlzYXRldXIgZXQgdW4gbW90IGRlIHBhc3NlLiBJbCBlc3QgaW1wb3J0YW50CmRlIHMnYXNzdXJlciBxdWUgY2VsdWktY2kgc29pdCBkaWZm6XJlbnQgZGUgY2V1eCB1dGlsaXPpcyBwYXIgbCdhcHBsaWNhdGlvbiwKYXV0cmVtZW50IGxlIG5hdmlnYXRldXIgdGVudGVyYSBkJ2VuIHV0aWxpc2VyIHVuIGNhY2jpIGRlcHVpcyBsJ2FwcGxpY2F0aW9uLgpOb3RlciBxdWUgbGVzIGVzcGFjZXMgZGFucyBsZSBub20gZGUgInJlYWxtIiBkb2l2ZW50IOp0cmUgcHJvdOln6XMgcGFyIHVuCmJhY2tzbGFzaCAoJ1wnKS4KCkwnb3B0aW9uICJzdGF0cyBzY29wZSA8cHJveHlfaWQ+IiBsaW1pdGUgbGEgcG9ydOllIGR1IHJhcHBvcnQgZCfpdGF0LiBQYXIKZOlmYXV0LCB0b3V0ZXMgbGVzIGluc3RhbmNlcyBwcm94eSBzb250IGxpc3TpZXMuIE1haXMgZGFucyBjZXJ0YWluZXMKY2lyY29uc3RhbmNlcywgaWwgc2VyYWl0IHBy6WbpcmFibGUgZGUgbmUgbGlzdGVyIHF1ZSBjZXJ0YWlucyBwcm94aWVzIG91CnNpbXBsZW1lbnQgbGUgcHJveHkgY291cmFudC4gQydlc3QgY2UgcXVlIGZhaXQgY2V0dGUgb3B0aW9uLiBMZSBub20gc3DpY2lhbCAiLiIKKHVuIHNpbXBsZSBwb2ludCkgculm6XJlbmNlIGxlIHByb3h5IGNvdXJhbnQuIENldHRlIG9wdGlvbiBwZXV0IOp0cmUgculw6XTpZQphdXRhbnQgZGUgZm9pcyBxdWUgbuljZXNzYWlyZSBwb3VyIGF1dG9yaXNlciBkJ2F1dHJlcyBwcm94aWVzLCBt6m1lIHBvdXIgZGVzCm5vbXMgculm6XJlbmPpcyBwbHVzIGxvaW4gZGFucyBsYSBjb25maWd1cmF0aW9uIG91IGJpZW4gZGVzIG5vbXMgcXVpIG4nZXhpc3RlbnQKcGFzIGVuY29yZS4gTGUgbm9tIHBy6WNpc+kgZXN0IGNlbHVpIHF1aSBhcHBhcmFpdCBhcHLocyBsZSBtb3QgY2zpICJsaXN0ZW4iLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBzaW1wbGUgYXBwbGljYXRpb24gZW1iYXJxdWFudCBsYSBwYWdlIGQn6XRhdCBhdXRoZW50aWZp6WUKICAgIGxpc3RlbiBhcHAxIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwODAgY29va2llIHNydjEgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4yOjgwODAgY29va2llIHNydjIgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBTdGF0aXN0aWNzXCBmb3JcIE15QXBwMS0yCiAgICAgICAgc3RhdHMgYXV0aCBndWVzdDpndWVzdAogICAgICAgIHN0YXRzIGF1dGggYWRtaW46QWRNaU4xMjMKICAgICAgICBzdGF0cyBzY29wZSAuCiAgICAgICAgc3RhdHMgc2NvcGUgYXBwMgoKICAgICMgc2ltcGxlIGFwcGxpY2F0aW9uIGVtYmFycXVhbnQgbGEgcGFnZSBkJ+l0YXQgc2FucyBhdXRoZW50aWZpY2F0aW9uCiAgICBsaXN0ZW4gYXBwMiAxOTIuMTY4LjIuMTAwOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMTo4MDgwIGNvb2tpZSBzcnYxIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMjo4MDgwIGNvb2tpZSBzcnYyIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gU3RhdGlzdGljc1wgZm9yXCBNeUFwcDIKICAgICAgICBzdGF0cyBzY29wZSAuCgogICAgbGlzdGVuIGFkbWluX3BhZ2UgOjgwODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gR2xvYmFsXCBzdGF0aXN0aWNzCiAgICAgICAgc3RhdHMgYXV0aCBhZG1pbjpBZE1pTjEyMwoKTm90ZXMgOgotLS0tLS0tCiAgLSBsZXMgb3B0aW9ucyAic3RhdHMiIHBldXZlbnQgYXVzc2kg6nRyZSBzcOljaWZp6WVzIGRhbnMgdW5lIHNlY3Rpb24KICAgICJkZWZhdWx0cyIsIGF1cXVlbCBjYXMgbGEgbeptZSBjb25maWd1cmF0aW9uIGV4YWN0ZW1lbnQgc2VyYSBmb3VybmllIOAKICAgIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHN1aXZhbnRlcywgZCdv+SBsJ3V0aWxpdOkgZHUgc2NvcGUgIi4iLiBUb3V0ZWZvaXMsIHNpCiAgICB1bmUgaW5zdGFuY2UgcmVk6WZpbml0IG4naW1wb3J0ZSBxdWVsIHBhcmFt6HRyZSAic3RhdHMiLCBhbG9ycyBsZXMgZOlmYXV0cwogICAgbmUgbHVpIHNlcm9udCBwYXMgYXBwbGlxdelzLgoKICAtIGwnYXV0aGVudGlmaWNhdGlvbiAiQmFzaWMiIGVzdCB0cuhzIHNpbXBsaXN0ZSBldCBub24gc+ljdXJpc+llIGNvbnRyZSBsYQogICAgY2FwdHVyZSBy6XNlYXUuIEF1Y3VuIG1vdCBkZSBwYXNzZSBzZW5zaWJsZSBuZSBkb2l0IOp0cmUgdXRpbGlz6SwgZXQgaWwKICAgIGVzdCBib24gZGUgc2F2b2lyIHF1J2lsIG4nZXhpc3RlIHBhcyBkZSBtb3llbiBkZSBsZSBzdXBwcmltZXIgZHUgbmF2aWdhdGV1cgogICAgYXBy6HMgdXNhZ2UsIGRvbmMgaWwgc2VyYSBlbnZveekgdGVsIHF1ZWwg4CBsJ2FwcGxpY2F0aW9uIGF1IGNvdXJzIGRlcwogICAgYWNj6HMgc3VjY2Vzc2lmcy4KCiAgLSBJbCBlc3QgdHLocyBpbXBvcnRhbnQgZGUgcHLpY2lzZXIgbCdvcHRpb24gImh0dHBjbG9zZSIsIHNpbm9uIGxlIHByb3h5IG5lCiAgICBzZXJhIHBhcyBlbiBtZXN1cmUgZGUgZOl0ZWN0ZXIgbGVzIFVSSSBkYW5zIGxlcyBzZXNzaW9ucyBrZWVwLWFsaXZlCiAgICBtYWludGVudWVzIGVudHJlIGxlIG5hdmlnYXRldXIgZXQgbGVzIHNlcnZldXJzLCBkb25jIGxlcyBVUkkgZGUgc3RhdHMKICAgIHNlcm9udCB0cmFuc21pc2VzIHRlbGxlcyBxdWVsbGVzIGF1eCBzZXJ2ZXVycyBjb21tZSBzaSBsJ29wdGlvbiBuJ+l0YWl0CiAgICBwYXMgcHLpY2lz6WUuCgoKPT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbel0cmFnZSBzeXN06G1lIHwKPT09PT09PT09PT09PT09PT09PT09PT0KClNvdXMgTGludXggMi40Cj09PT09PT09PT09PT09CgotLSBjdXQgaGVyZSAtLQojIS9iaW4vc2gKIyBzZXQgdGhpcyB0byBhYm91dCAyNTYvNE0gKDE2Mzg0IGZvciAyNTZNIG1hY2hpbmUpCk1BWEZJTEVTPTE2Mzg0CmVjaG8gJE1BWEZJTEVTID4gL3Byb2Mvc3lzL2ZzL2ZpbGUtbWF4CnVsaW1pdCAtbiAkTUFYRklMRVMKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXggXTsgdGhlbgogICAgICAgIGVjaG8gNjU1MzYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heApmaQoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0IF07IHRoZW4KICAgICAgICAjIDMwIHNlY29uZHMgZm9yIGZpbiwgMTUgZm9yIHRpbWUgd2FpdAogICAgICAgIGVjaG8gMzAwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQKICAgICAgICBlY2hvIDE1MDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X3RpbWVfd2FpdAogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19pbnZhbGlkX3NjYWxlCiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX291dF9vZl93aW5kb3cKZmkKCmVjaG8gMTAyNCA2MDk5OSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCmVjaG8gMzAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2Zpbl90aW1lb3V0CmVjaG8gNDA5NiA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3N5bl9iYWNrbG9nCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfdHdfYnVja2V0cwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X29ycGhhbnMKZWNobyAzMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2tlZXBhbGl2ZV90aW1lCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdHdfcmVjeWNsZQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3RpbWVzdGFtcHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9lY24KZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9zYWNrCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZHNhY2sKCiMgYXV0by10dW5lZCBvbiAyLjQKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fbWF4CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX2RlZmF1bHQKCmVjaG8gMTYzODQgNjU1MzYgNTI0Mjg4ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9ybWVtCmVjaG8gMTYzODQgMzQ5NTIwIDY5OTA0MCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfd21lbQoKLS0gY3V0IGhlcmUgLS0KClNvdXMgRnJlZUJTRAo9PT09PT09PT09PT0KClVuIHBvcnQgZGUgSEEtUHJveHkgc291cyBGcmVlQlNEIGVzdCBk6XNvcm1haXMgZGlzcG9uaWJsZSwgZ3LiY2Ug4ApDbGVtZW50IExhZm9yZXQgPHNoZWVwa2lsbGVyQGN1bHRkZWFkc2hlZXAub3JnPi4KClBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyA6Cmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3VybC5jZ2k/cG9ydHMvbmV0L2hhcHJveHkvcGtnLWRlc2NyCmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvcG9ydHMvbmV0L2hhcHJveHkvCmh0dHA6Ly93d3cuZnJlc2hwb3J0cy5vcmcvbmV0L2hhcHJveHkKCgotLSBmaW4gLS0K