ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggQSAtIFAgciBvIHggeQogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51ZWwgZGUgculm6XJlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gMS4yLjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbHkgdGFycmVhdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDUvMTAvMDkKCj09PT09PT09PT09PT09PT0KfCBJbnRyb2R1Y3Rpb24gfAo9PT09PT09PT09PT09PT09CgpIQS1Qcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgoKSWwgcmVxdWllcnQgcGV1IGRlIHJlc3NvdXJjZXMsIGV0IHNvbiBhcmNoaXRlY3R1cmUg6XbpbmVtZW50aWVsbGUgbW9uby0KcHJvY2Vzc3VzIGx1aSBwZXJtZXQgZmFjaWxlbWVudCBkZSBn6XJlciBwbHVzaWV1cnMgbWlsbGllcnMgZGUgY29ubmV4aW9ucwpzaW11bHRhbullcyBzdXIgcGx1c2lldXJzIHJlbGFpcyBzYW5zIGVmZm9uZHJlciBsZSBzeXN06G1lLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6HRyZXMgZGUgbGFuY2VtZW50IHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgb3B0aW9ucyBkZSBsYW5jZW1lbnQgc29udCBwZXUgbm9tYnJldXNlcyA6CgogICAgLWYgPGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbj4KICAgIC1uIDxub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzPgogICAgLU4gPG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5PgogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGUgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgZXBvbGwoKQogICAgLWRwIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIHBvbGwoKQoKTGUgbm9tYnJlIG1heGltYWwgZGUgY29ubmV4aW9uIHNpbXVsdGFu6WVzIHBhciBwcm94eSBlc3QgbGUgcGFyYW3odHJlIHBhcgpk6WZhdXQgcG91ciBsZXMgcHJveGllcyBwb3VyIGxlc3F1ZWxzIGNlIHBhcmFt6HRyZSBuJ2VzdCBwYXMgcHLpY2lz6SBkYW5zIGxlCmZpY2hpZXIgZGUgY29uZmlndXJhdGlvbi4gSWwgcydhZ2l0IGR1IHBhcmFt6HRyZSAnbWF4Y29ubicgZGFucyBsZXMgc2VjdGlvbnMKJ2xpc3RlbicuCgpMZSBub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIGxpbWl0ZSBsZSBub21icmUgZGUKY29ubmV4aW9ucyBUQ1AgdXRpbGlzYWJsZXMg4CB1biBpbnN0YW50IGRvbm7pIHBhciBsZSBwcm9jZXNzdXMsIHRvdXMgcHJveGllcwpjb25mb25kdXMuIENlIHBhcmFt6HRyZSByZW1wbGFjZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpMZSBtb2RlIGRlYnVnIGNvcnJlc3BvbmQg4CBsJ29wdGlvbiAnZGVidWcnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIERhbnMgY2UKbW9kZSwgdG91dGVzIGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMsIGV0IHRvdXMgbGVzIOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUApzb250IGFmZmljaOlzLgoKTGVzIHN0YXRpc3RpcXVlcyBuZSBzb250IGRpc3BvbmlibGVzIHF1ZSBzaSBsZSBwcm9ncmFtbWUgYSDpdOkgY29tcGls6SBhdmVjCmwnb3B0aW9uICJTVEFUVElNRSIuIElsIHMnYWdpdCBwcmluY2lwYWxlbWVudCBkZSBkb25u6WVzIGJydXRlcyBuJ2F5YW50CmQndXRpbGl06SBxdWUgbG9ycyBkZSBiZW5jaG1hcmtzIHBhciBleGVtcGxlLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdHJ1Y3R1cmUKPT09PT09PT09CgpMJ2FuYWx5c2V1ciBkdSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gaWdub3JlIGRlcyBsaWduZXMgdmlkZXMsIGxlcyBlc3BhY2VzLApsZXMgdGFidWxhdGlvbnMsIGV0IHRvdXQgY2UgcXVpIGVzdCBjb21wcmlzIGVudHJlIGxlIHN5bWJvbGUgJyMnIChzJ2lsIG4nZXN0CnBhcyBwculj6WTpIGQndW4gJ1wnKSwgZXQgbGEgZmluIGRlIGxhIGxpZ25lLCBjZSBxdWkgY29uc3RpdHVlIHVuIGNvbW1lbnRhaXJlLgoKTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGVzdCBk6WNvdXDpIGVuIHNlY3Rpb25zIHLpcOly6WVzIHBhciBkZXMgbW90cyBjbOlzCnRlbHMgcXVlIDoKCiAgLSAnZ2xvYmFsJwogIC0gJ2xpc3RlbicKICAtICdkZWZhdWx0cycKClRvdXMgbGVzIHBhcmFt6HRyZXMgZm9udCBy6WbpcmVuY2Ug4CBsYSBzZWN0aW9uIGTpZmluaWUgcGFyIGxlIGRlcm5pZXIgbW90IGNs6QpyZWNvbm51LgoKCjEpIFBhcmFt6HRyZXMgZ2xvYmF1eAo9PT09PT09PT09PT09PT09PT09PT0KCklsIHMnYWdpdCBkZXMgcGFyYW3odHJlcyBhZ2lzc2FudCBzdXIgbGUgcHJvY2Vzc3VzLCBvdSBiaWVuIHN1ciBsJ2Vuc2VtYmxlIGRlcwpwcm94aWVzLiBJbHMgc29udCB0b3VzIHNw6WNpZmnpcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIExlcyBwYXJhbeh0cmVzCnN1cHBvcnTpcyBzb250IDoKCiAgLSBsb2cgPGFkcmVzc2U+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQogIC0gbWF4Y29ubiA8bm9tYnJlPgogIC0gdWlkIDxpZGVudGlmaWFudD4KICAtIGdpZCA8aWRlbnRpZmlhbnQ+CiAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgLSBuYnByb2MgPG5vbWJyZT4KICAtIGRhZW1vbgogIC0gZGVidWcKICAtIG5vZXBvbGwKICAtIG5vcG9sbAogIC0gcXVpZXQKICAtIHBpZGZpbGUgPGZpY2hpZXI+CiAgLSB1bGltaXQtbiA8bm9tYnJlPgoKCjEuMSkgSm91cm5hbGlzYXRpb24gZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBwbHVwYXJ0IGRlcyDpduluZW1lbnRzIHNvbnQgam91cm5hbGlz6XMgOiBk6W1hcnJhZ2VzLCBhcnLqdHMsIGRpc3Bhcml0aW9uIGV0CmFwcGFyaXRpb24gZGUgc2VydmV1cnMsIGNvbm5leGlvbnMsIGVycmV1cnMuIFRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbgpzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KCkxlcyBjb25uZXhpb25zIHNvbnQgZW52b3npZXMgZW4gbml2ZWF1ICJpbmZvIi4gTGVzIGTpbWFycmFnZXMgZGUgc2VydmljZSBldCBkZQpzZXJ2ZXVycyBzZXJvbnQgZW52b3npcyBlbiAibm90aWNlIiwgbGVzIHNpZ25hdXggZCdhcnLqdHMgZW4gIndhcm5pbmciIGV0IGxlcwphcnLqdHMgZOlmaW5pdGlmcyBkZSBzZXJ2aWNlcyBldCBkZSBzZXJ2ZXVycyBlbiAiYWxlcnQiLiBDZWNpIGVzdCB2YWxhYmxlIGF1c3NpCmJpZW4gcG91ciBsZXMgcHJveGllcyBxdWUgcG91ciBsZXMgc2VydmV1cnMgdGVzdOlzIHBhciBsZXMgcHJveGllcy4gTGUKcGFyYW3odHJlIG9wdGlvbm5lbCA8bml2ZWF1X21heD4gZOlmaW5pdCBsZSBuaXZlYXUgbWF4aW1hbCBkZSB0cmFjZXMg6W1pc2VzCnBhcm1pIGxlcyA4IHZhbGV1cnMgc3VpdmFudGVzICA6CiAgICBlbWVyZywgYWxlcnQsIGNyaXQsIGVyciwgd2FybmluZywgbm90aWNlLCBpbmZvLCBkZWJ1ZwoKUGFyIGNvbXBhdGliaWxpdOkgYXZlYyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzLCBsYSB2YWxldXIgcGFyIGTpZmF1dAplc3QgImRlYnVnIiBzaSBsJ29wdGlvbiBuJ2VzdCBwYXMgcHLpY2lz6WUuCgpMZXMgY2F06WdvcmllcyBwb3NzaWJsZXMgc29udCA6CiAgICBrZXJuLCB1c2VyLCBtYWlsLCBkYWVtb24sIGF1dGgsIHN5c2xvZywgbHByLCBuZXdzLAogICAgdXVjcCwgY3JvbiwgYXV0aDIsIGZ0cCwgbnRwLCBhdWRpdCwgYWxlcnQsIGNyb24yLAogICAgbG9jYWwwLCBsb2NhbDEsIGxvY2FsMiwgbG9jYWwzLCBsb2NhbDQsIGxvY2FsNSwgbG9jYWw2LCBsb2NhbDcKCkNvbmZvcm3pbWVudCDgIGxhIFJGQzMxNjQsIGxlcyBtZXNzYWdlcyDpbWlzIHNvbnQgbGltaXTpcyDgIDEwMjQgY2FyYWN06HJlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxMjcuMC4wLjEgICAgIGxvY2FsNCBub3RpY2UKCjEuMikgbGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGV0IGNvbnNlaWxs6SBkZSBsaW1pdGVyIGxlIG5vbWJyZSBnbG9iYWwgZGUgY29ubmV4aW9ucyBwYXIKcHJvY2Vzc3VzIOAgbCdhaWRlIGR1IG1vdCBjbOkgZ2xvYmFsICdtYXhjb25uJy4gTGVzIGNvbm5leGlvbnMgc29udCBjb21wcmlzZXMKYXUgc2VucyAnYWNjZXB0YXRpb24gZGUgY29ubmV4aW9uJywgZG9uYyBpbCBmYXV0IHMnYXR0ZW5kcmUgZW4gcuhnbGUgZ+lu6XJhbCDgCmF2b2lyIHVuIHBldSBwbHVzIGR1IGRvdWJsZSBkZSBzZXNzaW9ucyBUQ1AgcXVlIGxlIG1heGltdW0gZGUgY29ubmV4aW9ucyBmaXjpLgpDJ2VzdCBpbXBvcnRhbnQgcG91ciBmaXhlciBsZSBwYXJhbeh0cmUgJ3VsaW1pdCAtbicgYXZhbnQgZGUgbGFuY2VyIGxlIHByb3h5LgpQb3VyIGNvbXB0YWJpbGlzZXIgbGUgbm9tYnJlIGRlIHNvY2tldHMgbuljZXNzYWlyZXMsIGlsIGZhdXQgcHJlbmRyZSBlbiBjb21wdGUKY2VzIHBhcmFt6HRyZXMgOgoKICAtIDEgc29ja2V0IHBhciBjb25uZXhpb24gZW50cmFudGUKICAtIDEgc29ja2V0IHBhciBjb25uZXhpb24gc29ydGFudGUKICAtIDEgc29ja2V0IHBhciBjb3VwbGUgYWRyZXNzZS9wb3J0IGQn6WNvdXRlIHBhciBwcm94eQogIC0gMSBzb2NrZXQgcG91ciBjaGFxdWUgc2VydmV1ciBlbiBjb3VycyBkZSBoZWFsdGgtY2hlY2sKICAtIDEgc29ja2V0IHBvdXIgbGVzIGxvZ3MgKHRvdXMgc2VydmV1cnMgY29uZm9uZHVzKQoKRGFucyBsZSBjYXMgb/kgY2hhcXVlIHByb3h5IG4n6WNvdXRlIHF1ZSBzdXIgdW4gY291cGxlIGFkcmVzc2UvcG9ydCwKcG9zaXRpb25uZXIgbGEgbGltaXRlIGR1IG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgKHVsaW1pdCAtbikg4CAKKDIgKiBtYXhjb25uICsgbmJwcm94eSArIG5ic2VydmV1cnMgKyAxKS4gQSBwYXJ0aXIgZGVzIHZlcnNpb25zIDEuMS4zMi8xLjIuNiwKaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBjZXR0ZSBsaW1pdGUgZGFucyBsYSBjb25maWd1cmF0aW9uIOAgbCdhaWRlIGR1Cm1vdC1jbOkgZ2xvYmFsICd1bGltaXQtbicsIOAgY29uZGl0aW9uIGJpZW4gZW50ZW5kdSBxdWUgbGUgcHJveHkgYWl0IOl06Qpk6W1hcnLpIHNvdXMgbGUgY29tcHRlIHJvb3QgKG91IGF2ZWMgZGVzIGRyb2l0cyBzdWZmaXNhbnRzIHBvdXIg6WxldmVyIGxlCm5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMpLiBDZXR0ZSBzb2x1dGlvbiBtZXQgdW4gdGVybWUgYXUgcHJvYmzobWUKculjdXJyZW50IGQnaW5jZXJ0aXR1ZGUgZGUgbCdhZOlxdWF0aW9uIGVudHJlIGxlcyBsaW1pdGVzIHN5c3TobWVzIGxvcnMgZGUgbGEKZGVybmnocmUgcmVsYW5jZSBkdSBwcm94ZXNzdXMgZXQgbGVzIGxpbWl0ZXMgZW4gbm9tYnJlIGRlIGNvbm5leGlvbnMuIE5vdGVyIHF1ZQpjZXR0ZSBsaW1pdGUgcydhcHBsaXF1ZSBwYXIgcHJvY2Vzc3VzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgbWF4Y29ubiAzMjAwMAogICAgICAgIHVsaW1pdC1uIDY1NTM2CgoKMS4zKSBEaW1pbnV0aW9uIGRlcyBwcml2aWzoZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBZmluIGRlIHLpZHVpcmUgbGVzIHJpc3F1ZXMgZCdhdHRhcXVlcyBkYW5zIGxlIGNhcyBv+SB1bmUgZmFpbGxlIG5vbiBpZGVudGlmaellCnNlcmFpdCBleHBsb2l06WUsIGlsIGVzdCBwb3NzaWJsZSBkZSBkaW1pbnVlciBsZXMgcHJpdmls6GdlcyBkdSBwcm9jZXNzdXMsIGV0CmRlIGwnaXNvbGVyIGRhbnMgdW4gculwZXJ0b2lyZSBzYW5zIHJpc3F1ZS4KCkRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJywgbGUgcGFyYW3odHJlICd1aWQnIHBlcm1ldCBkZSBzcOljaWZpZXIgdW4gaWRlbnRpZmlhbnQKbnVt6XJpcXVlIGQndXRpbGlzYXRldXIuIExhIHZhbGV1ciAwLCBjb3JyZXNwb25kYW50IG5vcm1hbGVtZW50IGF1IHN1cGVyLQp1dGlsaXNhdGV1ciwgcG9zc+hkZSBpY2kgdW5lIHNpZ25pZmljYXRpb24gcGFydGljdWxp6HJlIGNhciBlbGxlIGluZGlxdWUgcXVlCmwnb24gbmUgc291aGFpdGUgcGFzIGNoYW5nZXIgY2V0IGlkZW50aWZpYW50IGV0IGNvbnNlcnZlciBsYSB2YWxldXIgY291cmFudGUuCkMnZXN0IGxhIHZhbGV1ciBwYXIgZOlmYXV0LiBEZSBsYSBt6m1lIG1hbmnocmUsIGxlIHBhcmFt6HRyZSAnZ2lkJyBjb3JyZXNwb25kIOAKdW4gaWRlbnRpZmlhbnQgZGUgZ3JvdXBlLCBldCB1dGlsaXNlIHBhciBk6WZhdXQgbGEgdmFsZXVyIDAgcG91ciBuZSByaWVuCmNoYW5nZXIuIElsIGVzdCBwYXJ0aWN1bGnocmVtZW50IGTpY29uc2VpbGzpIGQndXRpbGlzZXIgZGVzIGNvbXB0ZXMgZ+lu6XJpcXVlcwp0ZWxzIHF1ZSAnbm9ib2R5JyBjYXIgY2V0dGUgcHJhdGlxdWUgcmV2aWVudCDgIHV0aWxpc2VyICdyb290JyBzaSBkJ2F1dHJlcwpwcm9jZXNzdXMgdXRpbGlzZW50IGxlcyBt6m1lcyBpZGVudGlmaWFudHMuCgpMZSBwYXJhbeh0cmUgJ2Nocm9vdCcgYXV0b3Jpc2Ug4CBjaGFuZ2VyIGxhIHJhY2luZSBkdSBwcm9jZXNzdXMgdW5lIGZvaXMgbGUKcHJvZ3JhbW1lIGxhbmPpLCBkZSBzb3J0ZSBxdWUgbmkgbGUgcHJvY2Vzc3VzLCBuaSBsJ3VuIGRlIHNlcyBkZXNjZW5kYW50cyBuZQpwdWlzc2VudCByZW1vbnRlciBkZSBub3V2ZWF1IOAgbGEgcmFjaW5lLiBDZSB0eXBlIGRlIGNsb2lzb25uZW1lbnQgKGNocm9vdCkgZXN0CmfpbulyYWxlbWVudCBjb250b3VybmFibGUgc3VyIGNlcnRhaW5zIE9TIChMaW51eCwgU29sYXJpcykgcG91ciBwZXUgcXVlCmwnYXR0YXF1YW50IHBvc3PoZGUgZGVzIGRyb2l0cyAncm9vdCcgZXQgc29pdCBlbiBtZXN1cmUgZCd1dGlsaXNlciBvdSBkZSBjcullcgp1biBy6XBlcnRvaXJlLiBBdXNzaSwgaWwgZXN0IGltcG9ydGFudCBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgc3DpY2lmaXF1ZSBhdQpzZXJ2aWNlIHBvdXIgY2V0IHVzYWdlLCBldCBkZSBuZSBwYXMgbXV0dWFsaXNlciB1biBt6m1lIHLpcGVydG9pcmUgcG91cgpwbHVzaWV1cnMgc2VydmljZXMgZGUgbmF0dXJlIGRpZmbpcmVudGUuIFBvdXIgcmVuZHJlIGwnaXNvbGVtZW50IHBsdXMgcm9idXN0ZSwKaWwgZXN0IGNvbnNlaWxs6SBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgdmlkZSwgc2FucyBhdWN1biBkcm9pdCwgZXQgZGUgY2hhbmdlcgpsJ3VpZCBkdSBwcm9jZXNzdXMgZGUgc29ydGUgcXUnaWwgbmUgcHVpc3NlIHJpZW4gZmFpcmUgZGFucyBsZWRpdCBy6XBlcnRvaXJlLgoKUmVtYXJxdWUgaW1wb3J0YW50ZSA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlIGNhcyBv+SB1bmUgdGVsbGUgZmFpbGxlIHNlcmFpdCBtaXNlIGVuIOl2aWRlbmNlLCBpbCBlc3QgZm9ydCBwcm9iYWJsZQpxdWUgbGVzIHByZW1p6HJlcyB0ZW50YXRpdmVzIGRlIHNvbiBleHBsb2l0YXRpb24gcHJvdm9xdWVudCB1biBhcnLqdCBkdQpwcm9ncmFtbWUsIOAgY2F1c2UgZCd1biBzaWduYWwgZGUgdHlwZSAnU2VnbWVudGF0aW9uIEZhdWx0JywgJ0J1cyBFcnJvcicgb3UKZW5jb3JlICdJbGxlZ2FsIEluc3RydWN0aW9uJy4gTeptZSBzJ2lsIGVzdCB2cmFpIHF1ZSBmYWlyZSB0b3VybmVyIGxlIHNlcnZldXIKZW4gZW52aXJvbm5lbWVudCBsaW1pdOkgculkdWl0IGxlcyByaXNxdWVzIGQnaW50cnVzaW9uLCBpbCBlc3QgcGFyZm9pcyBiaWVuCnV0aWxlIGRhbnMgY2VzIGNpcmNvbnN0YW5jZXMgZGUgY29ubmHudHJlIGxlcyBjb25kaXRpb25zIGQnYXBwYXJpdGlvbiBkdQpwcm9ibOhtZSwgdmlhIGwnb2J0ZW50aW9uIGQndW4gZmljaGllciAnY29yZScuIExhIHBsdXBhcnQgZGVzIHN5c3TobWVzLCBwb3VyCmRlcyByYWlzb25zIGRlIHPpY3VyaXTpLCBk6XNhY3RpdmVudCBsYSBn6W7pcmF0aW9uIGR1IGZpY2hpZXIgJ2NvcmUnIGFwcuhzIHVuCmNoYW5nZW1lbnQgZCdpZGVudGlmaWFudCBwb3VyIGxlIHByb2Nlc3N1cy4gSWwgZmF1ZHJhIGRvbmMgc29pdCBsYW5jZXIgbGUKcHJvY2Vzc3VzIOAgcGFydGlyIGQndW4gY29tcHRlIHV0aWxpc2F0ZXVyIGF1eCBkcm9pdHMgculkdWl0cyAobWFpcyBuZSBwb3V2YW50CnBhcyBlZmZlY3R1ZXIgbGUgY2hyb290KSwgb3UgYmllbiBsZSBmYWlyZSBlbiByb290IHNhbnMgculkdWN0aW9uIGRlcyBkcm9pdHMKKHVpZCAwKS4gRGFucyBjZSBjYXMsIGxlIGZpY2hpZXIgc2UgdHJvdXZlcmEgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgZGUKbGFuY2VtZW50LCBzb2l0IGRhbnMgbGUgculwZXJ0b2lyZSBzcOljaWZp6SBhcHLocyBsJ29wdGlvbiAnY2hyb290Jy4gTmUgcGFzCm91YmxpZXIgbGEgY29tbWFuZGUgc3VpdmFudGUgcG91ciBhdXRvcmlzZXIgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyIGF2YW50IGRlCmxhbmNlciBsZSBwcm9ncmFtbWUgOgoKIyB1bGltaXQgLWMgdW5saW1pdGVkCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgdWlkICAgICAgICAzMDAwMAogICAgICAgIGdpZCAgICAgICAgMzAwMDAKICAgICAgICBjaHJvb3QgIC92YXIvY2hyb290L2hhcHJveHkKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKUGFyIGFpbGxldXJzLCBjZXJ0YWlucyBtZXNzYWdlcyBkJ2FsZXJ0ZSBzb250IHRvdWpvdXJzIGVudm956XMgc3VyIGxhIHNvcnRpZQpzdGFuZGFyZCwgbeptZSBlbiBtb2RlICdkYWVtb24nLiBQb3VyIG5lIHBsdXMgbGVzIHZvaXIgYWlsbGV1cnMgcXVlIGRhbnMgbGVzCmxvZ3MsIGlsIHN1ZmZpdCBkZSBwYXNzZXIgZW4gbW9kZSBzaWxlbmNpZXV4IHBhciBsJ2Fqb3V0IGRlIGwnb3B0aW9uICdxdWlldCcuCkNldHRlIG9wdGlvbiBuJ2EgcGFzIGQn6XF1aXZhbGVudCBlbiBsaWduZSBkZSBjb21tYW5kZS4KCkVuZmluLCBsZSBtb2RlICdkZWJ1ZycgcGVybWV0IGRlIGRpYWdub3N0aXF1ZXIgbGVzIG9yaWdpbmVzIGRlIGNlcnRhaW5zCnByb2Js6G1lcyBlbiBhZmZpY2hhbnQgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucyBldCDpY2hhbmdlcyBkJ2VuLXTqdGVzIEhUVFAKZW50cmUgbGVzIGNsaWVudHMgZXQgbGVzIHNlcnZldXJzLiBDZSBtb2RlIGVzdCBpbmNvbXBhdGlibGUgYXZlYyBsZXMgb3B0aW9ucwonZGFlbW9uJyBldCAncXVpZXQnIHBvdXIgZGVzIHJhaXNvbnMgZGUgYm9uIHNlbnMuCgoxLjUpIEFjY3JvaXNzZW1lbnQgZGUgbGEgY2FwYWNpdOkgZGUgdHJhaXRlbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdXIgZGVzIG1hY2hpbmVzIG11bHRpLXByb2Nlc3NldXJzLCBpbCBwZXV0IHNlbWJsZXIgZ+JjaOkgZGUgbid1dGlsaXNlciBxdSd1bgpwcm9jZXNzZXVyIHBvdXIgZWZmZWN0dWVyIGxlcyB04mNoZXMgZGUgcmVsYXlhZ2UsIG3qbWUgc2kgbGVzIGNoYXJnZXMKbuljZXNzYWlyZXMg4CBzYXR1cmVyIHVuIHByb2Nlc3NldXIgYWN0dWVsIHNvbnQgYmllbiBhdS1kZWzgIGRlcyBvcmRyZXMgZGUKZ3JhbmRldXIgY291cmFtbWVudCByZW5jb250culzLiBDZXBlbmRhbnQsIHBvdXIgZGVzIGJlc29pbnMgcGFydGljdWxpZXJzLCBsZQpwcm9ncmFtbWUgc2FpdCBk6W1hcnJlciBwbHVzaWV1cnMgcHJvY2Vzc3VzIHNlIHLpcGFydGlzc2FudCBsYSBjaGFyZ2UgZGUKdHJhdmFpbC4gQ2Ugbm9tYnJlIGRlIHByb2Nlc3N1cyBlc3Qgc3DpY2lmaekgcGFyIGxlIHBhcmFt6HRyZSAnbmJwcm9jJyBkZSBsYQpzZWN0aW9uICdnbG9iYWwnLiBTYSB2YWxldXIgcGFyIGTpZmF1dCBlc3QgbmF0dXJlbGxlbWVudCAxLiBDZWNpIG5lIGZvbmN0aW9ubmUKcXUnZW4gbW9kZSAnZGFlbW9uJy4gVW4gdXNhZ2UgZOlq4CByZW5jb250cukgcG91ciBjZSBwYXJhbeh0cmUgZnV0IGRlIGTpcGFzc2VyCmxhIGxpbWl0ZSBkZSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzIGFsbG916WUgcGFyIHByb2Nlc3N1cyBzb3VzClNvbGFyaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgZGFlbW9uCiAgICAgICAgcXVpZXQKICAgICAgICBuYnByb2MgICAgICAgIDIKCjEuNikgU2ltcGxpZmljYXRpb24gZGUgbGEgZ2VzdGlvbiBkZXMgcHJvY2Vzc3VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkhhcHJveHkgc3VwcG9ydGUgZG9y6W5hdmFudCBsYSBub3Rpb24gZGUgZmljaGllcnMgZGUgcGlkICgtPiBwaWRmaWxlcykuIFNpIGxlCnBhcmFt6HRyZSAnLXAnIGRlIGxpZ25lIGRlIGNvbW1hbmRlLCBvdSBsJ29wdGlvbiBnbG9iYWxlICdwaWRmaWxlJyBzb250IHN1aXZpcwpkJ3VuIG5vbSBkZSBmaWNoaWVyLCBhbG9ycyBjZSBmaWNoaWVyIHNlcmEgc3VwcHJpbekgcHVpcyByZWNy6ekgZXQgY29udGllbmRyYQpsZSBudW3pcm8gZGUgUElEIGRlcyBwcm9jZXNzdXMgZmlscywg4CByYWlzb24gZCd1biBwYXIgbGlnbmUgKHZhbGFibGUKdW5pcXVlbWVudCBlbiBtb2RlIGTpbW9uKS4gQ2UgZmljaGllciBuJ2VzdCBQQVMgcmVsYXRpZiBhdSBjbG9pc29ubmVtZW50IGNocm9vdAphZmluIGRlIHJlc3RlciBjb21wYXRpYmxlIGF2ZWMgdW4gculwZXJ0b2lyZSBwcm906WfpIGVuIGxlY3R1cmUgc2V1bGUuIElsCmFwcGFydGllbmRyYSDgIGwndXRpbGlzYXRldXIgYXlhbnQgbGFuY+kgbGUgcHJvY2Vzc3VzLCBldCBkaXNwb3NlcmEgZGVzIGRyb2l0cwowNjQ0LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jIDIKICAgICAgICBwaWRmaWxlIC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQKCiAgICAjIHBvdXIgc3RvcHBlciBzZXVsZW1lbnQgY2VzIHByb2Nlc3N1cyBwYXJtaSBkJ2F1dHJlcyA6CiAgICAjIGtpbGwgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKCgoxLjcpIE3pY2FuaXNtZXMgZGUgdHJhaXRlbWVudHMgZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjUsIGhhcHJveHkgc3VwcG9ydGUgbGVzIG3pY2FuaXNtZXMgcG9sbCgpIGV0CmVwb2xsKCkuIFN1ciBsZXMgc3lzdGVtcyBv+SBzZWxlY3QoKSBlc3QgbGltaXTpIHBhciBGRF9TRVRTSVpFIChjb21tZSBTb2xhcmlzKSwKcG9sbCgpIHBldXQg6nRyZSB1bmUgYWx0ZXJuYXRpdmUgaW506XJlc3NhbnRlLiBEZXMgdGVzdHMgZGUgcGVyZm9ybWFuY2UKbW9udHJlbnQgcXVlIGxlcyBwZXJmb3JtYW5jZXMgZGUgcG9sbCgpIG5lIGTpY3JvaXNzZW50IHBhcyBhdXNzaSB2aXRlIHF1ZSBsZQpub21icmUgZGUgc29ja2V0cyBhdWdtZW50ZSwgY2UgcXVpIGVuIGZhaXQgdW5lIHNvbHV0aW9uIHP7cmUgcG91ciBsZXMgZm9ydGVzCmNoYXJnZXMuIENlbGEgZGl0LCBTb2FscmlzIHV0aWxpc2UgZOlq4CBwb2xsKCkgcG91ciDpbXVsZXIgc2VsZWN0KCksIGRvbmMgdGFudApxdWUgbGUgbm9tYnJlIGRlIHNvY2tldHMgbmUgZOlwYXNzZSBwYXMgRkRfU0VUU0laRSwgcG9sbCgpIG5lIGRldnJhaXQgcGFzCmFwcG9ydGVyIGRlIHBlcmZvcm1hbmNlcyBzdXBwbOltZW50YWlyZXMuIFN1ciBsZXMgc3lzdOhtZXMg4CBiYXNlIExpbnV4CmluY2x1YW50IGxlIHBhdGNoIGVwb2xsKCkgKG91IHRvdXMgbGVzIExpbnV4IDIuNiksIGhhcHJveHkgdXRpbGlzZXJhIGVwb2xsKCkKcXVpIGVzdCBleHRy6G1lbWVudCByYXBpZGUgaW5k6XBlbmRhbW1lbnQgZHUgbm9tYnJlIGRlIHNvY2tldHMuIExlcyB0ZXN0cyBzdXIKaGFwcm94eSBvbnQgbW9udHLpIHVuZSBwZXJmb3JtYW5jZSBjb25zdGFudGUgZGUgMSDgIDQwMDAwIHNlc3Npb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKSBsb3JzcXUnaWwgZXN0IGRpc3BvbmlibGUsIGV0IHNlIHJlcGxpZXJhIHN1ciBwb2xsKCksCnB1aXMgZW4gZGVybmllciBsaWV1IHN1ciBzZWxlY3QoKS4gQ2VwZW5kYW50LCBzaSBwb3VyIHVuZSByYWlzb24gcXVlbGNvbnF1ZSBpbApzJ2F26XJhaXQgbuljZXNzYWlyZSBkZSBk6XNhY3RpdmVyIGVwb2xsKCkgb3UgcG9sbCgpIChwLmV4OiDgIGNhdXNlIGQndW4gYnVnIG91Cmp1c3RlIHBvdXIgY29tcGFyZXIgbGVzIHBlcmZvcm1hbmNlcyksIGRldXggbm91dmVsbGVzIG9wdGlvbnMgZ2xvYmFsZXMgb250IOl06Qpham91dOllcyBkYW5zIGNlIGJ1dCA6ICdub2Vwb2xsJyBldCAnbm9wb2xsJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgICMgdXRpbGlzZXIgc2V1bGVtZW50IHNlbGVjdCgpCiAgICAgICAgbm9lcG9sbAogICAgICAgIG5vcG9sbAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpIGV0IGxlIHBhcmFt6HRyZSAnLWRwJyBk6XNhY3RpdmUgcG9sbCgpLiBJbHMgc29udApyZXNwZWN0aXZlbWVudCDpcXVpdmFsZW50cyDgICdub2Vwb2xsJyBldCAnbm9wb2xsJy4KCgoyKSBE6WZpbml0aW9uIGQndW4gc2VydmljZSBlbiDpY291dGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgc2VjdGlvbnMgZGUgc2VydmljZSBk6WJ1dGVudCBwYXIgbGUgbW90IGNs6SAibGlzdGVuIiA6CgogICAgbGlzdGVuIDxub21faW5zdGFuY2U+IFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKLSA8bm9tX2luc3RhbmNlPiBlc3QgbGUgbm9tIGRlIGwnaW5zdGFuY2UgZOljcml0ZS4gQ2Ugbm9tIHNlcmEgZW52b3npIGRhbnMgbGVzCiAgbG9ncywgZG9uYyBpbCBlc3Qgc291aGFpdGFibGUgZCd1dGlsaXNlciB1biBub20gcmVsYXRpZiBhdSBzZXJ2aWNlIHJlbGF56S4KICBBdWN1biB0ZXN0IG4nZXN0IGVmZmVjdHXpIGNvbmNlcm5hbnQgbCd1bmljaXTpIGRlIGNlIG5vbSwgcXVpIG4nZXN0IHBhcwogIG9ibGlnYXRvaXJlLCBtYWlzIGZvcnRlbWVudCByZWNvbW1hbmTpZS4KCi0gPGFkcmVzc2VfSVA+IGVzdCBsJ2FkcmVzc2UgSVAgc3VyIGxhcXVlbGxlIGxlIHJlbGFpcyBhdHRlbmQgc2VzIGNvbm5leGlvbnMuCiAgTCdhYnNlbmNlIGQnYWRyZXNzZSBhaW5zaSBxdWUgbCdhZHJlc3NlIDAuMC4wLjAgc2lnbmlmaWVudCBxdWUgbGVzIGNvbm5leGlvbnMKICBwb3Vycm9udCBzJ2VmZmVjdHVlciBzdXIgdG91dGVzIGxlcyBhZHJlc3NlcyBkZSBsYSBtYWNoaW5lLgoKLSA8cGxhZ2VfcG9ydHM+IGNvcnJlc3BvbmQgc29pdCDgIHVuIHBvcnQsIHNvaXQg4CB1bmUgcGxhZ2UgZGUgcG9ydHMgc3VyCiAgbGVzcXVlbHMgbGUgcmVsYWlzIGFjY2VwdGVyYSBkZXMgY29ubmV4aW9ucyBwb3VyIGwnYWRyZXNzZSBJUCBzcOljaWZp6WUuCiAgQ2V0dGUgcGxhZ2UgcGV1dCDqdHJlIDoKICAgIC0gc29pdCB1biBwb3J0IG51belyaXF1ZSAoZXg6ICc4MCcpCiAgICAtIHNvaXQgdW5lIHBsYWdlIGNvbnN0aXR16WUgZGUgZGV1eCB2YWxldXJzIHPpcGFy6WVzIHBhciB1biB0aXJldAogICAgICAoZXg6ICcyMDAwLTIxMDAnKSByZXBy6XNlbnRhbnQgbGVzIGV4dHLpbWl06XMgaW5jbHVzZXMgZGFucyBsYQogICAgICBwbGFnZS4KICBJbCBmYXV0IGZhaXJlIGF0dGVudGlvbiDgIGwndXNhZ2UgZGVzIHBsYWdlcywgY2FyIGNoYXF1ZSBjb21iaW5haXNvbgogIDxhZHJlc3NlX0lQPjo8cG9ydD4gY29uc29tbWUgdW5lIHNvY2tldCwgZG9uYyB1biBkZXNjcmlwdGV1ciBkZSBmaWNoaWVyLgogIExlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBvcnQ+IGRvaXQg6nRyZSB1bmlxdWUgcG91ciB0b3V0ZXMgbGVzICBpbnN0YW5jZXMKICBkJ3VuZSBt6m1lIG1hY2hpbmUuIEwnYXR0YWNoZW1lbnQg4CB1biBwb3J0IGluZulyaWV1ciDgIDEwMjQgbuljZXNzaXRlIHVuCiAgbml2ZWF1IGRlIHByaXZpbOhnZSBwYXJ0aWN1bGllciBsb3JzIGR1IGxhbmNlbWVudCBkdSBwcm9ncmFtbWUKICAoaW5k6XBlbmRhbW1lbnQgZHUgcGFyYW3odHJlICd1aWQnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcpLgoKLSBsZSBjb3VwbGUgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz4gcGV1dCDqdHJlIHLpcOl06SBpbmTpZmluaW1lbnQgcG91cgogIGRlbWFuZGVyIGF1IHJlbGFpcyBkJ+ljb3V0ZXIg6WdhbGVtZW50IHN1ciBkJ2F1dHJlcyBhZHJlc3NlcyBldC9vdSBkJ2F1dHJlcwogIHBsYWdlcyBkZSBwb3J0cy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZGUgc+lwYXJlciBsZXMgY291cGxlcyBwYXIgdW5lIHZpcmd1bGUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICBsaXN0ZW4geDExX3Byb3h5IDEyNy4wLjAuMTo2MDAwLTYwMDkKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDEyNy4wLjAuMToyNSwxMjcuMC4wLjE6NTg3CiAgICBsaXN0ZW4gbGRhcF9wcm94eSA6Mzg5LDo2NjMKClNpIHRvdXRlcyBsZXMgYWRyZXNzZXMgbmUgdGllbm5lbnQgcGFzIHN1ciB1bmUgbGlnbmUsIGlsIGVzdCBwb3NzaWJsZSBkJ2VuCnJham91dGVyIOAgbCdhaWRlIGR1IG1vdCBjbOkgJ2JpbmQnLiBEYW5zIGNlIGNhcywgaWwgbidlc3QgbeptZSBwYXMgbuljZXNzYWlyZQpkZSBzcOljaWZpZXIgbGEgcHJlbWnocmUgYWRyZXNzZSBzdXIgbGEgbGlnbmUgbGlzdGVuLCBjZSBxdWkgZmFjaWxpdGUgcGFyZm9pcwpsJ+ljcml0dXJlIGRlIGNvbmZpZ3VyYXRpb25zIDoKCiAgICBiaW5kIFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBiaW5kIDEwLjAuMC4xOjEwMDgwLDEwLjAuMC4xOjEwNDQzCgoyLjEpIEluaGliaXRpb24gZCd1biBzZXJ2aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IOp0cmUgZOlzYWN0aXbpIHBvdXIgZGVzIGJlc29pbnMgZGUgbWFpbnRlbmFuY2UsIHNhbnMgYXZvaXIg4Apjb21tZW50ZXIgdG91dGUgdW5lIHBhcnRpZSBkdSBmaWNoaWVyLiBJbCBzdWZmaXQgZGUgcG9zaXRpb25uZXIgbGUgbW90IGNs6QoiZGlzYWJsZWQiIGRhbnMgc2Egc2VjdGlvbiA6CgogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIGRpc2FibGVkCgpSZW1hcnF1ZTogbGUgbW90IGNs6SAnZW5hYmxlZCcgcGVybWV0IGRlIHLpYWN0aXZlciB1biBzZXJ2aWNlIHBy6WFsYWJsZW1lbnQKICAgICAgICAgIGTpc2FjdGl26SBwYXIgbGUgbW90IGNs6SAnZGlzYWJsZWQnLCBwYXIgZXhlbXBsZSDgIGNhdXNlIGQndW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uIHBhciBk6WZhdXQuCgoyLjIpIE1vZGUgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHRyb2lzIG1vZGVzIGRpZmbpcmVudHMgOgogIC0gVENQCiAgLSBIVFRQCiAgLSBzdXBlcnZpc2lvbgoKTW9kZSBUQ1AKLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSwgZOhzIGxldXIg6XRhYmxpc3NlbWVudCwgbGVzIGNvbm5leGlvbnMgVENQCnZlcnMgdW4gb3UgcGx1c2lldXJzIHNlcnZldXJzLiBBdWN1biB0cmFpdGVtZW50IG4nZXN0IGVmZmVjdHXpIHN1ciBsZSBmbHV4LiBJbApzJ2FnaXQgc2ltcGxlbWVudCBkJ3VuZSBhc3NvY2lhdGlvbgogICAgIHNvdXJjZTxhZHJlc3NlOnBvcnQ+IC0+IGRlc3RpbmF0aW9uPGFkcmVzc2U6cG9ydD4uClBvdXIgbCd1dGlsaXNlciwgcHLpY2lzZXIgbGUgbW9kZSBUQ1Agc291cyBsYSBk6WNsYXJhdGlvbiBkdSByZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgbW9kZSB0Y3AKCk1vZGUgSFRUUAotLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSBsZXMgY29ubmV4aW9ucyBUQ1AgdmVycyB1biBvdSBwbHVzaWV1cnMKc2VydmV1cnMsIHVuZSBmb2lzIHF1J2lsIGRpc3Bvc2UgZCdhc3NleiBkJ2luZm9ybWF0aW9ucyBwb3VyIGVuIHByZW5kcmUgbGEKZOljaXNpb24uIExlcyBlbi106nRlcyBIVFRQIHNvbnQgYW5hbHlz6XMgcG91ciB5IHRyb3V2ZXIgdW4g6XZlbnR1ZWwgY29va2llLCBldApjZXJ0YWlucyBkJ2VudHJlLWV1eCBwZXV2ZW50IOp0cmUgbW9kaWZp6XMgcGFyIGxlIGJpYWlzIGQnZXhwcmVzc2lvbnMKculndWxp6HJlcy4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyIGxlIG1vZGUgSFRUUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1CnJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKCk1vZGUgc3VwZXJ2aXNpb24KLS0tLS0tLS0tLS0tLS0tLQpJbCBzJ2FnaXQgZCd1biBtb2RlIG9mZnJhbnQg4CB1biBjb21wb3NhbnQgZXh0ZXJuZSB1bmUgdmlzaWJpbGl06SBkZSBsJ+l0YXQgZGUKc2FudOkgZHUgc2VydmljZS4gSWwgc2UgY29udGVudGUgZGUgcmV0b3VybmVyICJPSyIg4CB0b3V0IGNsaWVudCBzZSBjb25uZWN0YW50CnN1ciBzb24gcG9ydC4gSWwgcGV1dCDqdHJlIHV0aWxpc+kgYXZlYyBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZSDpdm9sdelzIHBvdXIKZOl0ZXJtaW5lciBxdWVscyBzb250IGxlcyBzZXJ2aWNlcyB1dGlsaXNhYmxlcy4gU2kgbCdvcHRpb24gJ2h0dHBjaGsnIGVzdAphY3RpdullLCBhbG9ycyBsYSBy6XBvbnNlIGNoYW5nZXJhIGVuICdIVFRQLzEuMCAyMDAgT0snIHBvdXIgc2F0aXNmYWlyZSBsZXMKYXR0ZW50ZXMgZGUgY29tcG9zYW50cyBzYWNoYW50IHRlc3RlciBlbiBIVFRQLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIKbGUgbW9kZSBIRUFMVEggc291cyBsYSBk6WNsYXJhdGlvbiBkdSByZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHLpcG9uc2Ugc2ltcGxlIDogJ09LJwogICAgbGlzdGVuIGhlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAwCiAgICAgICAgbW9kZSBoZWFsdGgKCiAgICAjIHLpcG9uc2UgSFRUUCA6ICdIVFRQLzEuMCAyMDAgT0snCiAgICBsaXN0ZW4gaHR0cF9oZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMQogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKCgpMZXMgdmVyc2lvbnMgMS4xLjMyIGV0IDEuMi42IGFwcG9ydGVudCB1bmUgbm91dmVsbGUgc29sdXRpb24gcG91ciB2YWxpZGVyIGxlCmJvbiBmb25jdGlvbm5lbWVudCBkdSBwcm94eSBzYW5zIHBlcnR1cmJlciBsZSBzZXJ2aWNlLiBMZSBtb3QtY2zpICdtb25pdG9yLW5ldCcKYSDpdOkgY3Lp6SBkYW5zIGxlIGJ1dGQgZGUgc3DpY2lmaWVyIHVuIHLpc2VhdSBkJ+lxdWlwZW1lbnRzIHF1aSBuZSBQRVVWRU5UIFBBUwp1dGlsaXNlciBsZSBzZXJ2aWNlIHBvdXIgYXV0cmUgY2hvc2UgcXVlIGRlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudC4gQydlc3QKcGFydGljdWxp6HJlbWVudCBhZGFwdOkgYXV4IHByb3hpZXMgVENQLCBjYXIgY2VsYSBlbXDqY2hlIGxlIHByb3h5IGRlIHJlbGF5ZXIKZGVzIOl0YWJsaXNzZW1lbnRzIGRlIGNvbm5leGlvbiDpbWlzIHBhciB1biBvdXRpbCBkZSBzdXJ2ZWlsbGFuY2UuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IFRDUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSBwdWlzIHJlZmVybellCmV0IHJpZW4gbidlc3QgbG9ndekuIEMnZXN0IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBlbiBhbW9udApk6XRlY3RlIHF1ZSBsZSBzZXJ2aWNlIGVzdCBkaXNwb25pYmxlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBIVFRQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllLCByaWVuIG4nZXN0CmxvZ3XpLCBwdWlzIGxhIHLpcG9uc2Ugc3VpdmFudGUgZXN0IGVudm956WUgZXQgbGEgc2Vzc2lvbiByZWZlcm3pZSA6CiJIVFRQLzEuMCAyMDAgT0siLiBDJ2VzdCBub3JtYWxlbWVudCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UKSFRUUCBlbiBhbW9udCBk6XRlY3RlIGxlIHNlcnZpY2UgY29tbWUgb3DpcmF0aW9ubmVsLCBhdXNzaSBiaWVuIOAgdHJhdmVycyBkZXMKdGVzdHMgVENQIHF1ZSBIVFRQLgoKTGVzIHByb3hpZXMgdXRpbGlzYW50IGxlIG1vdC1jbOkgJ21vbml0b3ItbmV0JyBwZXV2ZW50IGFjY2Vzc29pcmVtZW50IHNlIHBhc3NlcgpkZSBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBjZSBxdWkgcGVybWV0dHJhIGRlIGxvZ3VlciBsZXMgY29ubmV4aW9ucyB2aWRlcwrpbWlzZXMgZGVwdWlzIGQnYXV0cmVzIGFkcmVzc2VzIHF1ZSBjZWxsZXMgZHUgculzZWF1IGRlIHRlc3RzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiB0c2UtcHJveHkKICAgICAgIGJpbmQgOjMzODksOjE0OTQsOjU5MDAgICMgVFNFLCBJQ0EgYW5kIFZOQyBhdCBvbmNlLgogICAgICAgbW9kZSB0Y3AKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHRzZS1mYXJtIDE5Mi4xNjguMS4xMAogICAgICAgbW9uaXRvci1uZXQgMTkyLjE2OC4xLjI1Mi8zMSAgICMgTDQgbG9hZC1iYWxhbmNlcnMgb24gLjI1MiBhbmQgLjI1MwoKCjIuMykgTGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgcGFyYW3odHJlICJtYXhjb25uIiBwZXJtZXQgZGUgZml4ZXIgbGEgbGltaXRlIGFjY2VwdGFibGUgZW4gbm9tYnJlIGRlCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5LiBDaGFxdWUgcHJveHkgcXVpIGF0dGVpbnQgY2V0dGUgdmFsZXVyIGNlc3NlCmQn6WNvdXRlciBqdXNxdSfgIGxpYulyYXRpb24gZCd1bmUgY29ubmV4aW9uLiBWb2lyIHBsdXMgbG9pbiBjb25jZXJuYW50IGxlcwpsaW1pdGF0aW9ucyBsaellcyBhdSBzeXN06G1lLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHRpbnlfc2VydmVyIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwCgoKMi40KSBBcnLqdCBlbiBkb3VjZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZCdhcnLqdGVyIGxlcyBzZXJ2aWNlcyBlbiBkb3VjZXVyIGVuIGVudm95YW50IHVuIHNpZ25hbApTSUdfVVNSMSBhdSBwcm9jZXNzdXMgcmVsYWlzLiBUb3VzIGxlcyBzZXJ2aWNlcyBzZXJvbnQgYWxvcnMgbWlzIGVuIHBoYXNlCmQnYXJy6nQsIG1haXMgcG91cnJvbnQgY29udGludWVyIGQnYWNjZXB0ZXIgZGVzIGNvbm5leGlvbnMgcGVuZGFudCB1biB0ZW1wcwpk6WZpbmkgcGFyIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIChlbiBtaWxsaXNlY29uZGVzKS4gQ2VsYSBwZXJtZXQgcGFyIGV4ZW1wbGUsCmRlIGZhaXJlIHNhdm9pciByYXBpZGVtZW50IOAgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIHF1J2lsIG5lIGRvaXQgcGx1cwp1dGlsaXNlciB1biByZWxhaXMsIHRvdXQgZW4gY29udGludWFudCBkJ2Fzc3VyZXIgbGUgc2VydmljZSBsZSB0ZW1wcyBxdSdpbApzJ2VuIHJlbmRlIGNvbXB0ZS4KClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBhY3RpdmVzIG5lIHNvbnQgamFtYWlzIGNhc3PpZXMuIERhbnMgbGUgcGlyZSBkZXMgY2FzLCBpbCBmYXVkcmEKYXR0ZW5kcmUgZW4gcGx1cyBsZXVyIGV4cGlyYXRpb24gYXZhbnQgbCdhcnLqdCB0b3RhbCBkdSBwcm9jZXNzdXMuIExhIHZhbGV1cgpwYXIgZOlmYXV0IGVzdCAwIChwYXMgZGUgZ3LiY2UsIGFycup0IGltbelkaWF0IGRlIGwn6WNvdXRlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgYXJy6nRlciBlbiBkb3VjZXVyIHBhciAna2lsbGFsbCAtVVNSMSBoYXByb3h5JwogICAgIyBsZSBzZXJ2aWNlIHRvdXJuZXJhIGVuY29yZSAxMCBzZWNvbmRlcyBhcHLocyBsYSBkZW1hbmRlIGQnYXJy6nQKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBncmFjZSAxMDAwMAoKICAgICMgY2UgcG9ydCBuJ2VzdCB0ZXN06SBxdWUgcGFyIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZS4KICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgZ3JhY2UgMAoKCjIuNSkgVGVtcHMgZCdleHBpcmF0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGNlcnRhaW5lcyBkdXLpZXMgZCdleHBpcmF0aW9uIGF1IG5pdmVhdSBkZXMKY29ubmV4aW9ucyBUQ1AuIFRyb2lzIHRlbXBzIGluZOlwZW5kYW50cyBzb250IGNvbmZpZ3VyYWJsZXMgZXQgYWNjZXB0ZW50IGRlcwp2YWxldXJzIGVuIG1pbGxpc2Vjb25kZXMuIFNpIGwndW5lIGRlIGNlcyB0cm9pcyB0ZW1wb3Jpc2F0aW9ucyBlc3QgZOlwYXNz6WUsIGxhCnNlc3Npb24gZXN0IHRlcm1pbullIOAgY2hhcXVlIGV4dHLpbWl06S4KCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgY2xpZW50LCBvdSBkZSBsYQogICAgcG9zc2liaWxpdOkgZGUgbHVpIGVudm95ZXIgZGVzIGRvbm7pZXMgOiAiY2xpdGltZW91dCIgOgoKICAgICAgICAjIHRpbWUtb3V0IGNsaWVudCDgIDJtbjMwLgogICAgICAgIGNsaXRpbWVvdXQgICAgICAgIDE1MDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdSBkZSBsYQogICAgcG9zc2liaWxpdOkgZGUgbHVpIGVudm95ZXIgZGVzIGRvbm7pZXMgOiAic3J2dGltZW91dCIgOgoKICAgICAgICAjIHRpbWUtb3V0IHNlcnZldXIg4CAzMHMuCiAgICAgICAgc3J2dGltZW91dCAgICAgICAgMzAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIKICAgICJjb250aW1lb3V0IiA6CgogICAgICAgICMgb24gYWJhbmRvbm5lIHNpIGxhIGNvbm5leGlvbiBuJ2VzdCBwYXMg6XRhYmxpZSBhcHLocyA0IHNlY29uZGVzCiAgICAgICAgY29udGltZW91dCAgICAgICAgNDAwMAoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtICJjb250aW1lb3V0IiBldCAic3J2dGltZW91dCIgbidvbnQgcGFzIGQndXRpbGl06SBkYW5zIGxlIGNhcyBkdSBzZXJ2ZXVyIGRlCiAgICB0eXBlICJoZWFsdGgiLgogIC0gc291cyBkZSBmb3J0ZXMgY2hhcmdlcywgb3Ugc3VyIHVuIHLpc2VhdSBzYXR1cukgb3UgZOlmZWN0dWV1eCwgaWwgZXN0CiAgICBwb3NzaWJsZSBkZSBwZXJkcmUgZGVzIHBhcXVldHMuIER1IGZhaXQgcXVlIGxhIHByZW1p6HJlIHJldHJhbnNtaXNzaW9uCiAgICBUQ1AgbidhaXQgbGlldSBxdSdhdSBib3V0IGRlIDMgc2Vjb3VkZXMsIGZpeGVyIHVuIHRpbWVvdXQgZGUgY29ubmV4aW9uCiAgICBpbmbpcmlldXIg4CAzIHNlY29uZGVzIG5lIHBlcm1ldCBwYXMgZGUgc2UgcmF0dHJhcGVyIHN1ciBsYSBwZXJ0ZQogICAgZGUgcGFxdWV0cyBjYXIgbGEgc2Vzc2lvbiBhdXJhIOl06SBhYmFuZG9ubullIGF2YW50IGxhIHByZW1p6HJlCiAgICByZXRyYW5zbWlzc2lvbi4gVW5lIHZhbGV1ciBkZSA0IHNlY29uZGVzIHLpZHVpcmEgY29uc2lk6XJhYmxlbWVudAogICAgbGUgbm9tYnJlIGQn6WNoZWNzIGRlIGNvbm5leGlvbi4KCjIuNikgVGVudGF0aXZlcyBkZSByZWNvbm5leGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTG9ycyBkJ3VuIOljaGVjIGRlIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIsIGlsIGVzdCBwb3NzaWJsZSBkZQpyZXRlbnRlciAocG90ZW50aWVsbGVtZW50IHZlcnMgdW4gYXV0cmUgc2VydmV1ciwgZW4gY2FzIGRlIHLpcGFydGl0aW9uCmRlIGNoYXJnZSkuIExlIG5vbWJyZSBkZSBub3V2ZWxsZXMgdGVudGF0aXZlcyBpbmZydWN0dWV1c2VzIGF2YW50CmFiYW5kb24gZXN0IGZvdXJuaSBwYXIgbGUgcGFyYW3odHJlICJyZXRyaWVzIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICAjIG9uIGVzc2FpZSBlbmNvcmUgdHJvaXMgZm9pcyBtYXhpCiAgICAgICAgcmV0cmllcyAzCgoKMi43KSBBZHJlc3NlIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzb250IHJlZGlyaWfpZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGVzdCBk6WZpbmkgcGFyCmxlIHBhcmFt6HRyZSAiZGlzcGF0Y2giIHNvdXMgbGEgZm9ybWUgPGFkcmVzc2VfaXA+Ojxwb3J0Pi4gSWwgY29ycmVzcG9uZCDgIHVuCnNlcnZldXIgZCdhc3NpZ25hdGlvbiBkZSBjb29raWUgZGFucyBsZSBjYXMgb/kgbGUgc2VydmljZSBjb25zaXN0ZSDgIGFzc3VyZXIKdW5pcXVlbWVudCB1bmUgcGVyc2lzdGVuY2UgSFRUUCwgb3UgYmllbiBzaW1wbGVtZW50IGF1IHNlcnZldXIgZGVzdGluYXRpb24gZGFucwpsZSBjYXMgZGUgcmVsYXlhZ2UgVENQIHNpbXBsZS4gQ2V0IGFuY2llbiBtb2RlIG5lIHBlcm1ldCBwYXMgZGUgdGVzdGVyIGwn6XRhdApkdSBzZXJ2ZXVyIGRpc3RhbnQsIGV0IGlsIGVzdCBtYWludGVuYW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciBkZSBwculm6XJlbmNlCmxlIG1vZGUgJ2JhbGFuY2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICAgICMgb24gZW52b2llIHRvdXRlcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgaWNpCiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjI6ODAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpDZSBwYXJhbeh0cmUgbidhIHBhcyBkJ3V0aWxpdOkgcG91ciB1biBzZXJ2ZXVyIGVuIG1vZGUgJ2hlYWx0aCcsIG5pIGVuIG1vZGUKJ2JhbGFuY2UnLgoKCjIuOCkgQWRyZXNzZSBkZSBzb3J0aWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgZm9yY2VyIGwnYWRyZXNzZSB1dGlsaXPpZSBwb3VyIOl0YWJsaXIgbGVzIGNvbm5leGlvbnMgdmVycwpsZXMgc2VydmV1cnMg4CBsJ2FpZGUgZHUgcGFyYW3odHJlICJzb3VyY2UiLiBJbCBlc3QgbeptZSBwb3NzaWJsZSBkZSBmb3JjZXIgbGUKcG9ydCwgYmllbiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgc2UgbGltaXRlIOAgZGVzIHVzYWdlcyB0cuhzIHNw6WNpZmlxdWVzLgpDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIGNhcyBkJ2FkcmVzc2FnZSBtdWx0aXBsZSwgZXQgcGx1cyBn6W7pcmFsZW1lbnQKcG91ciBwZXJtZXR0cmUgYXV4IHNlcnZldXJzIGRlIHRyb3V2ZXIgbGUgY2hlbWluIGRlIHJldG91ciBkYW5zIGRlcyBjb250ZXh0ZXMKZGUgcm91dGFnZSBkaWZmaWNpbGVzLiBTaSBsJ2FkcmVzc2UgZXN0ICcwLjAuMC4wJyBvdSAnKicgb3UgdmlkZSwgZWxsZSBzZXJhCmNob2lzaWUgbGlicmVtZW50IHBhciBsZSBzeXN0ZW1lLiBTaSBsZSBwb3J0IGVzdCAnMCcgb3UgdmlkZSwgaWwgc2VyYSBjaG9pc2kKbGlicmVtZW50IHBhciBsZSBzeXN06G1lLiBJbCBlc3Qg4CBub3RlciBxdWUgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4LCBsZXMKdGVzdHMgZGUgYm9uIGZvbmN0aW9ubmVtZW50IGRlcyBzZXJ2ZXVycyBzZXJvbnQgYXVzc2kgZWZmZWN0delzIOAgcGFydGlyIGRlIGxhCnNvdXJjZSBzcOljaWZp6WUgcGFyIGNlIHBhcmFt6HRyZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgKjo4MAogICAgICAgICAgICMgdG91dGVzIGxlcyBjb25uZXhpb25zIHByZW5uZW50IGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwCiAgICAgICAgc291cmNlIDE5Mi4xNjguMS4yMDA6MAoKICAgIGxpc3RlbiBybG9naW5fcHJveHkgKjo1MTMKICAgICAgICAgICAjIHV0aWxpc2VyIGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwIGV0IGxlIHBvcnQgculzZXJ26SA5MDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDo5MDAKCgoyLjkpIETpZmluaXRpb24gZHUgbm9tIGR1IGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkZSByZWNoZXJjaGVyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwb3VyIHNhdm9pcgp2ZXJzIHF1ZWwgc2VydmV1ciBhaWd1aWxsZXIgbGEgcmVxdep0ZSB1dGlsaXNhdGV1ci4gTGUgbm9tIGR1IGNvb2tpZSBlc3QgZG9ubukKcGFyIGxlIHBhcmFt6HRyZSAiY29va2llIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAoKT24gcGV1dCBtb2RpZmllciBsJ3V0aWxpc2F0aW9uIGR1IGNvb2tpZSBwb3VyIGxhIHJlbmRyZSBwbHVzIGludGVsbGlnZW50ZQp2aXMt4C12aXMgZGVzIGFwcGxpY2F0aW9ucyByZWxheellcy4gSWwgZXN0IHBvc3NpYmxlLCBub3RhbW1lbnQgZGUgc3VwcHJpbWVyIG91CnLp6WNyaXJlIHVuIGNvb2tpZSByZXRvdXJu6SBwYXIgdW4gc2VydmV1ciBhY2PpZOkgZW4gZGlyZWN0LCBldCBkJ2luc+lyZXIgdW4KY29va2llIGRhbnMgdW5lIHLpcG9uc2UgSFRUUCBhZHJlc3PpZSDgIHVuIHNlcnZldXIgc+lsZWN0aW9ubukgZW4gculwYXJ0aXRpb24KZGUgY2hhcmdlLCBldCBt6m1lIGRlIHNpZ25hbGVyIGF1eCBwcm94aWVzIGFtb250IGRlIG5lIHBhcyBjYWNoZXIgbGUgY29va2llCmluc+ly6S4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKUG91ciBuZSBjb25zZXJ2ZXIgbGUgY29va2llIHF1J2VuIGFjY+hzIGluZGlyZWN0LCBkb25jIOAgdHJhdmVycyBsZQpkaXNwYXRjaGV1ciwgZXQgc3VwcHJpbWVyIHRvdXRlcyBzZXMg6XZlbnR1ZWxsZXMgb2NjdXJlbmNlcyBsb3JzIGRlcyBhY2PocwpkaXJlY3RzIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluZGlyZWN0CgpQb3VyIHJlbXBsYWNlciBsYSB2YWxldXIgZCd1biBjb29raWUgZXhpc3RhbnQgcGFyIGNlbGxlIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIsCmxvcnMgZCd1biBhY2PocyBkaXJlY3QgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgcmV3cml0ZQoKUG91ciBjcullciB1biBjb29raWUgY29tcG9ydGFudCBsYSB2YWxldXIgYXR0cmlidellIOAgdW4gc2VydmV1ciBsb3JzIGQndW4KYWNj6HMgZW4gculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIERhbnMgY2UgY2FzLCBpbCBlc3Qgc291aGFpdGFibGUgcXVlCnRvdXMgbGVzIHNlcnZldXJzIGFpZW50IHVuIGNvb2tpZSByZW5zZWlnbukuIFVuIHNlcnZldXIgbm9uIGFzc2lnbukgZCd1biBjb29raWUKcmV0b3VybmVyYSB1biBjb29raWUgdmlkZSAoY29va2llIGRlIHN1cHByZXNzaW9uKSA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQKClBvdXIgcul1dGlsaXNlciB1biBjb29raWUgYXBwbGljYXRpZiBldCBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLApwdWlzIGxlIHN1cHByaW1lciBkYW5zIGxlcyByZXF16nRlcyBzdWl2YW50ZXMsIHV0aWxpc2VyIGwnb3B0aW9uICdwcmVmaXgnLiBFbGxlCnBlcm1ldCBkJ2luc+lyZXIgdW5lIGluc3RhbmNlIGRlIGhhcHJveHkgZGV2YW50IHVuZSBhcHBsaWNhdGlvbiBzYW5zIHJpc3F1ZXIKZCdpbmNvbXBhdGliaWxpdOlzIGT7ZXMg4CBkZXMgY2xpZW50cyBxdWkgbmUgc3VwcG9ydGVyYWllbnQgcGFzIGQnYXBwcmVuZHJlCnBsdXMgZCd1biBjb29raWUgOgoKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSwgZW4gcydhc3N1cmFudCBxdSd1biBjYWNoZSBlbiBhbW9udCBuZSBsZSBzdG9ja2VyYSBwYXMsCmFqb3V0ZXIgbGUgbW90IGNs6SAnbm9jYWNoZScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUKClBvdXIgaW5z6XJlciB1biBjb29raWUgc2V1bGVtZW50IHN1aXRlIGF1eCByZXF16nRlcyBkZSB0eXBlIFBPU1QsIGFqb3V0ZXIgbGUKbW90IGNs6SAncG9zdG9ubHknIGFwcuhzICdpbnNlcnQnIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBwb3N0b25seQoKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCi0gSWwgZXN0IHBvc3NpYmxlIGRlIGNvbWJpbmVyICdpbnNlcnQnIGF2ZWMgJ2luZGlyZWN0JyBvdSAncmV3cml0ZScgcG91cgogIHMnYWRhcHRlciDgIGRlcyBhcHBsaWNhdGlvbnMgZ+lu6XJhbnQgZOlq4CBsZSBjb29raWUsIGF2ZWMgdW4gY29udGVudQogIGludmFsaWRlLiBJbCBzdWZmaXQgcG91ciBjZWxhIGRlIGxlcyBzcOljaWZpZXIgc3VyIGxhIG3qbWUgbGlnbmUuCgotIGRhbnMgbGUgY2FzIG/5ICdpbnNlcnQnIGV0ICdpbmRpcmVjdCcgc29udCBzcOljaWZp6XMsIGxlIGNvb2tpZSBuJ2VzdCBqYW1haXMKICB0cmFuc21pcyBhdSBzZXJ2ZXVyIHZ1IHF1J2lsIG4nZW4gYSBwYXMgY29ubmFpc3NhbmNlIGV0IG5lIHBvdXJyYWl0IHBhcyBsZQogIGNvbXByZW5kcmUuCgotIGlsIGVzdCBwYXJ0aWN1bGnocmVtZW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciAnbm9jYWNoZScgZW4gbW9kZSBpbnNlcnRpb24gc2kKICBkZXMgY2FjaGVzIHBldXZlbnQgc2UgdHJvdXZlciBlbnRyZSBsZXMgY2xpZW50cyBldCBsJ2luc3RhbmNlIGR1IHByb3h5LiBEYW5zCiAgbGUgY2FzIGNvbnRyYWlyZSwgdW4gY2FjaGUgSFRUUCAxLjAgcG91cnJhaXQgY2FjaGVyIGxhIHLpcG9uc2UsIGluY2x1YW50IGxlCiAgY29va2llIGRlIHBlcnNpc3RlbmNlIGluc+ly6SwgZG9uYyBwcm92b3F1ZXIgZGVzIGNoYW5nZW1lbnRzIGRlIHNlcnZldXJzIHBvdXIKICBkZXMgY2xpZW50cyBwYXJ0YWdlYW50IGxlIG3qbWUgY2FjaGUuCgotIGxlIG1vZGUgJ3ByZWZpeCcgbmUgbuljZXNzaXRlIHBhcyBkJ3V0aWxpc2VyICdpbmRpcmVjdCcsICdub2NhY2hlJywgbmkKICAncG9zdG9ubHknLCBjYXIgdG91dCBjb21tZSBsZSBtb2RlICdyZXdyaXRlJywgaWwgcydhcHB1aWUgc3VyIHVuIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsJ2FwcGxpY2F0aW9uIHF1aSBlc3QgY2Vuc+llIHNhdm9pciDgIHF1ZWwgbW9tZW50IGlsIHBldXQKICDqdHJlIOltaXMgc2FucyByaXNxdWUuIFRvdXRlZm9pcywgY29tbWUgaWwgbuljZXNzaXRlIGRlIHJlY3RpZmllciBsZSBjb29raWUKICBwculzZW506SBwYXIgbGUgY2xpZW50IGRhbnMgY2hhcXVlIHJlcXXqdGUgdWx06XJpZXVyZSwgaWwgZXN0IGluZGlzcGVuc2FibGUKICBkZSBzJ2Fzc3VyZXIgcXVlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyIGNvbW11bmlxdWVyb250IHNhbnMgImtlZXAtYWxpdmUKICBIVFRQIi4gRGFucyBsZSBkb3V0ZSwgaWwgZXN0IHJlY29tbWFuZOkgZCd1dGlsaXNlciBsJ29wdGlvbiAiaHR0cGNsb3NlIi4KCi0gbG9yc3F1ZSBsJ2FwcGxpY2F0aW9uIGVzdCBiaWVuIGNvbm51ZSwgZXQgcXVlIGxlcyBwYXJ0aWVzIG7pY2Vzc2l0YW50IGRlIGxhCiAgcGVyc2lzdGVuY2Ugc29udCBzeXN06W1hdGlxdWVtZW50IGFjY+lk6WVzIHBhciB1biBmb3JtdWxhaXJlIGVuIG1vZGUgUE9TVCwKICBpbCBlc3QgcGx1cyBlZmZpY2FjZSBlbmNvcmUgZGUgY29tYmluZXIgbGUgbW90IGNs6SAicG9zdG9ubHkiIGF2ZWMgImluc2VydCIKICBldCAiaW5kaXJlY3QiLCBjYXIgbGEgcGFnZSBkJ2FjY3VlaWwgcmVzdGUgY2FjaGFibGUsIGV0IGMnZXN0IGwnYXBwbGljYXRpb24KICBxdWkgZ+hyZSBsZSAnY2FjaGUtY29udHJvbCcuCgoyLjEwKSBBc3NpZ25hdGlvbiBkJ3VuIHNlcnZldXIg4CB1bmUgdmFsZXVyIGRlIGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGQnYXNzb2NpZXIgZGVzIHZhbGV1cnMgZGUgY29va2llIOAgZGVzIHNlcnZldXJzCnBhciBsZSBwYXJhbeh0cmUgJ3NlcnZlcicuIExhIHN5bnRheGUgZXN0IDoKCiAgICBzZXJ2ZXIgPGlkZW50aWZpYW50PiA8YWRyZXNzZV9pcD46PHBvcnQ+IGNvb2tpZSA8dmFsZXVyPgoKLSA8aWRlbnRpZmlhbnQ+IGVzdCB1biBub20gcXVlbGNvbnF1ZSBkZSBzZXJ2ZXVyIHV0aWxpc+kgcG91ciBsJ2lkZW50aWZpZXIgZGFucyBsYQogIGNvbmZpZ3VyYXRpb24gZXQgbGVzIGxvZ3MuCi0gPGFkcmVzc2VfaXA+Ojxwb3J0PiBlc3QgbGUgY291cGxlIGFkcmVzc2UtcG9ydCBzdXIgbGVxdWVsIGxlIHNlcnZldXIg6WNvdXRlLgotIDx2YWxldXI+IGVzdCBsYSB2YWxldXIg4CByZWNvbm5h7nRyZSBvdSBwb3NpdGlvbm5lciBkYW5zIGxlIGNvb2tpZS4KCkV4ZW1wbGUgOiBsZSBjb29raWUgU0VSVkVSSUQgcGV1dCBjb250ZW5pciBzZXJ2ZXIwMSBvdSBzZXJ2ZXIwMgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkF0dGVudGlvbiA6IGxhIHN5bnRheGUgYSBjaGFuZ+kgZGVwdWlzIGxhIHZlcnNpb24gMS4wLgotLS0tLS0tLS0tLQoKMykgUulwYXJ0aXRldXIgZGUgY2hhcmdlIGF1dG9ub21lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGUgcmVsYWlzIHBldXQgZWZmZWN0dWVyIGx1aS1t6m1lIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBsZXMgZGlmZulyZW50cwpzZXJ2ZXVycyBk6WZpbmlzIHBvdXIgdW4gc2VydmljZSBkb25u6SwgZW4gbW9kZSBUQ1AgY29tbWUgZW4gbW9kZSBIVFRQLiBQb3VyCmNlbGEsIG9uIHBy6WNpc2UgbGUgbW90IGNs6SAnYmFsYW5jZScgZGFucyBsYSBk6WZpbml0aW9uIGR1IHNlcnZpY2UsCul2ZW50dWVsbGVtZW50IHN1aXZpIGR1IG5vbSBkJ3VuIGFsZ29yaXRobWUgZGUgculwYXJ0aXRpb24uIEVuIHZlcnNpb24gMS4xLjksCnNldWwgJ3JvdW5kcm9iaW4nIGVzdCBn6XLpLCBldCBjJ2VzdCBhdXNzaSBsYSB2YWxldXIgaW1wbGljaXRlIHBhciBk6WZhdXQuIElsCmVzdCDpdmlkZW50IHF1J2VuIGNhcyBkJ3V0aWxpc2F0aW9uIGR1IHLpcGFydGl0ZXVyIGludGVybmUsIGlsIG5lIGZhdWRyYSBwYXMKc3DpY2lmaWVyIGQnYWRyZXNzZSBkZSBkaXNwYXRjaCwgZXQgcXUnaWwgZmF1ZHJhIGF1IG1vaW5zIHVuIHNlcnZldXIuCgpFeGVtcGxlIDogbeptZSBxdWUgcHLpY+lkZW1tZW50IGVuIHLpcGFydGl0aW9uIGludGVybmUKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6XRlcm1pbmVyIGF1dG9tYXRpcXVlbWVudCBsZSBwb3J0CmR1IHNlcnZldXIgdmVycyBsZXF1ZWwgc2VyYSBlbnZveellIGxhIGNvbm5leGlvbiwgZW4gZm9uY3Rpb24gZHUgcG9ydCBkJ+ljb3V0ZQpzdXIgbGVxdWVsIGxlIGNsaWVudCBzJ2VzdCBjb25uZWN06S4gRW4gZWZmZXQsIGlsIHkgYSA0IHBvc3NpYmlsaXTpcyBwb3VyIGxlCmNoYW1wIDxwb3J0PiBkZSBsJ2FkcmVzc2Ugc2VydmV1ciA6CgogIC0gbm9uIHNw6WNpZmnpIG91IG51bCA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24uCgogIC0gdmFsZXVyIG51belyaXF1ZSAoc2V1bCBjYXMgc3VwcG9ydOkgcG91ciBsZXMgdmVyc2lvbnMgYW506XJpZXVyZXMpIDoKICAgIGxlIHNlcnZldXIgcmVjZXZyYSBsYSBjb25uZXhpb24gc3VyIGxlIHBvcnQgZOlzaWdu6S4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJysnIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgYXVxdWVsIG9uIGFqb3V0ZSBsYSB2YWxldXIgZOlzaWdu6WUuCiAgICAKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnLScgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBkdXF1ZWwgb24gc291c3RyYWl0IGxhIHZhbGV1cgogICAgZOlzaWdu6WUuCiAgICAKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBzaW11bHRhbukgZGVzIHBvcnRzIDgwIGV0IDgxIGV0IDgwODAtODA4OQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MCw6ODEsOjgwODAtODA4OQogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBUQ1AgZGVzIHBvcnRzIDI1LCAzODkgZXQgNjYzIHZlcnMgbGVzIHBvcnRzIDEwMjUsIDEzODkgZXQgMTY2MwoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6Mzg5LDo2NjMKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOisxMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6KzEwMDAKCgozLjEpIFN1cnZlaWxsYW5jZSBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSB0ZXN0ZXIgbCfpdGF0IGRlcyBzZXJ2ZXVycyBwYXIg6XRhYmxpc3NlbWVudCBkZSBjb25uZXhpb24KVENQIG91IHBhciBlbnZvaSBkJ3VuZSByZXF16nRlIEhUVFAuIFVuIHNlcnZldXIgaG9ycyBkJ3VzYWdlIG5lIHNlcmEgcGFzCnV0aWxpc+kgZGFucyBsZSBwcm9jZXNzdXMgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIFBvdXIgYWN0aXZlciBsYQpzdXJ2ZWlsbGFuY2UsIGFqb3V0ZXIgbGUgbW90IGNs6SAnY2hlY2snIOAgbGEgZmluIGRlIGxhIGTpY2xhcmF0aW9uIGR1IHNlcnZldXIuCklsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgbCdpbnRlcnZhbGxlIChlbiBtaWxsaXNlY29uZGVzKSBz6XBhcmFudCBkZXV4CnRlc3RzIGR1IHNlcnZldXIgcGFyIGxlIHBhcmFt6HRyZSAiaW50ZXIiLCBsZSBub21icmUgZCfpY2hlY3MgYWNjZXB06XMgcGFyIGxlCnBhcmFt6HRyZSAiZmFsbCIsIGV0IGxlIG5vbWJyZSBkZSBzdWNj6HMgYXZhbnQgcmVwcmlzZSBwYXIgbGUgcGFyYW3odHJlICJyaXNlIi4KTGVzIHBhcmFt6HRyZXMgbm9uIHBy6WNpc+lzIHByZW5uZW50IGxlcyB2YWxldXJzIHN1aXZhbnRlcyBwYXIgZOlmYXV0IDoKIC0gaW50ZXIgOiAyMDAwCiAtIHJpc2UgIDogMgogLSBmYWxsICA6IDMKIC0gcG9ydCAgOiBwb3J0IGRlIGNvbm5leGlvbiBkdSBzZXJ2ZXVyCgpMZSBtb2RlIHBhciBk6WZhdXQgY29uc2lzdGUg4CDpdGFibGlyIGRlcyBjb25uZXhpb25zIFRDUCB1bmlxdWVtZW50LiBEYW5zCmNlcnRhaW5zIGNhcyBkZSBwYW5uZXMsIGRlcyBzZXJ2ZXVycyBwZXV2ZW50IGNvbnRpbnVlciDgIGFjY2VwdGVyIGxlcwpjb25uZXhpb25zIHNhbnMgbGVzIHRyYWl0ZXIuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNiwgaGFwcm94eSBlc3QgZW4gbWVzdXJlCmQnZW52b3llciBkZXMgcmVxdep0ZXMgSFRUUCBjb3VydGVzIGV0IHRy6HMgcGV1IGNv+3RldXNlcy4gTGVzIHZlcnNpb25zIDEuMS4xNgpldCAxLjEuMTcgdXRpbGlzZW50ICJPUFRJT05TIC8gSFRUUC8xLjAiLiBEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTgg4CAxLjEuMjAsCmxlcyByZXF16nRlcyBvbnQg6XTpIGNoYW5n6WVzIGVuICJPUFRJT05TICogSFRUUC8xLjAiIHBvdXIgZGVzIHJhaXNvbnMgZGUKY29udHL0bGUgZCdhY2PocyBhdXggcmVzc291cmNlcy4gQ2VwZW5kYW50LCBjZXR0ZSByZXF16nRlIGRvY3VtZW506WUgZGFucyBsYQpSRkMyMDY4IG4nZXN0IHBhcyBjb21wcmlzZSBwYXIgdG91cyBsZXMgc2VydmV1cnMuIERvbmMg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbgoxLjEuMjEsIGxhIHJlcXXqdGUgcGFyIGTpZmF1dCBlc3QgcmV2ZW51ZSDgICJPUFRJT05TIC8gSFRUUC8xLjAiLCBtYWlzIGlsIGVzdApwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGxhIHBhcnRpZSBVUkkuIExlcyByZXF16nRlcyBPUFRJT05TIHBy6XNlbnRlbnQKbCdhdmFudGFnZSBkJ+p0cmUgZmFjaWxlbWVudCBleHRyYWN0aWJsZXMgZGVzIGxvZ3MsIGV0IGRlIG5lIHBhcyBpbmR1aXJlCmQnYWNj6HMgYXV4IGZpY2hpZXJzIGP0dOkgc2VydmV1ci4gU2V1bGVzIGxlcyBy6XBvbnNlcyAyeHggZXQgM3h4IHNvbnQKY29uc2lk6XLpZXMgdmFsaWRlcywgbGVzIGF1dHJlcyAoeSBjb21wcmlzIG5vbi1y6XBvbnNlcykgYWJvdXRpc3NlbnQg4CB1bgrpY2hlYy4gTGUgdGVtcHMgbWF4aW1hbCBpbXBhcnRpIHBvdXIgdW5lIHLpcG9uc2UgZXN0IOlnYWwg4CBsJ2ludGVydmFsbGUgZW50cmUKZGV1eCB0ZXN0cyAocGFyYW3odHJlICJpbnRlciIpLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgc3DpY2lmaWVyIGwnb3B0aW9uCiJodHRwY2hrIiwg6XZlbnR1ZWxsZW1lbnQgc3VpdmllIGQndW5lIG3pdGhvZGUgZXQgZCd1bmUgVVJJLiBMJ29wdGlvbiAiaHR0cGNoayIKYWNjZXB0ZSBkb25jIDQgZm9ybWVzIDoKICAtIG9wdGlvbiBodHRwY2hrICAgICAgICAgICAgICAgLT4gT1BUSU9OUyAvIEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBVUkkgICAgICAgICAgIC0+IE9QVElPTlMgPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJICAgICAgLT4gPE1FVEg+IDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSBWRVIgIC0+IDxNRVRIPiA8VVJJPiA8VkVSPgpWb2lyIGxlcyBleGVtcGxlcyBjaS1hcHLocy4gICAgICAgIAoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3Vycy4gQ2UgdHlwZSBkZSBzZXJ2ZXVycwpwZXV0IHNlcnZpciDgIHJldG91cm5lciBkZXMgcGFnZXMgZCdpbmRpc3BvbmliaWxpdOkgZGUgc2VydmljZS4gRGFucyBjZSBjYXMsCmlsIGVzdCBwculm6XJhYmxlIGRlIG5lIHBhcyBhZmZlY3RlciBkZSBjb29raWUsIGFmaW4gcXVlIGxlcyBjbGllbnRzIHF1aSBsZQpyZW5jb250cmVudCBuJ3kgc29pZW50IHBhcyBhZmZlY3TpcyBk6WZpbml0aXZlbWVudC4gTGUgZmFpdCBkZSBuZSBwYXMgbWV0dHJlCmRlIGNvb2tpZSBlbnZvaWUgdW4gY29va2llIHZpZGUsIGNlIHF1aSBhIHBvdXIgZWZmZXQgZGUgc3VwcHJpbWVyIHVuIOl2ZW50dWVsCmNvb2tpZSBhZmZlY3TpIHBy6WPpZGVtbWVudC4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQKdmVycyB1biBwb3J0IGRpZmbpcmVudCBkZSBjZWx1aSBkZSBzZXJ2aWNlLiBDJ2VzdCBu6WNlc3NhaXJlIHByaW5jaXBhbGVtZW50CnBvdXIgbGVzIGNvbmZpZ3VyYXRpb25zIG/5IGxlIHNlcnZldXIgbidhIHBhcyBkZSBwb3J0IHBy6WTpZmluaSwgcGFyIGV4ZW1wbGUKbG9yc3F1J2lsIGVzdCBk6WR1aXQgZHUgcG9ydCBkJ2FjY2VwdGF0aW9uIGRlIGxhIGNvbm5leGlvbi4gUG91ciBjZWxhLCB1dGlsaXNlcgpsZSBwYXJhbeh0cmUgJ3BvcnQnIHN1aXZpIGR1IG51belybyBkZSBwb3J0IGRldmFudCBy6XBvbmRyZSBhdXggcmVxdep0ZXMuCgpFbmZpbiwgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgdmlzdWFsaXNlciByYXBpZGVtZW50Cmwn6XRhdCBjb3VyYW50IGRlIHRvdXMgbGVzIHNlcnZldXJzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsClNJR0hVUCBhdSBwcm9jZXNzdXMgcHJveHkuIEwn6XRhdCBkZSB0b3VzIGxlcyBzZXJ2ZXVycyBkZSB0b3VzIGxlcyBwcm94aWVzIGVzdAplbnZveekgZGFucyBsZXMgbG9ncyBlbiBuaXZlYXUgIm5vdGljZSIsIGFpbnNpIHF1ZSBzdXIgbGEgc29ydGllIGQnZXJyZXVycyBzaQplbGxlIGVzdCBhY3RpdmUuIEMnZXN0IHVuZSBib25uZSByYWlzb24gcG91ciBhdm9pciBhdSBtb2lucyB1biBzZXJ2ZXVyIGRlIGxvZ3MKbG9jYWwgZW4gbml2ZWF1IG5vdGljZS4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCAoZXQgMS4yLjEpLCB1biBtZXNzYWdlIGQndXJnZW5jZSBlc3QgZW52b3npIGRhbnMgbGVzCmxvZ3MgZW4gbml2ZWF1ICdlbWVyZycgc2kgdG91cyBsZXMgc2VydmV1cnMgZCd1bmUgbeptZSBpbnN0YW5jZSBzb250IHRvbWLpcywKYWZpbiBkZSBub3RpZmllciBsJ2FkbWluaXN0cmF0ZXVyIHF1J2lsIGZhdXQgcHJlbmRyZSB1bmUgYWN0aW9uIGltbelkaWF0ZS4KCkRlcHVpcyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBwbHVzaWV1cnMgc2VydmV1cnMgcGV1dmVudCBwYXJ0YWdlciBsYQpt6m1lIHZhbGV1ciBkZSBjb29raWUuIEMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gbW9kZSBiYWNrdXAsIHBvdXIKc+lsZWN0aW9ubmVyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzIHBvdXIgdW4gc2VydmV1ciBkb25u6SwgcG91ciBtZXR0cmUgZW4Kb2V1dnJlIGwnYXJy6nQgZW4gZG91Y2V1ciBkJ3VuIHNlcnZldXIsIG91IHBvdXIgZGlyaWdlciBsZXMgY2xpZW50cwp0ZW1wb3JhaXJlbWVudCB2ZXJzIHVuZSBwYWdlIGQnZXJyZXVyIGVuIGF0dGVuZGFudCBsZSByZWTpbWFycmFnZSBkJ3VuZQphcHBsaWNhdGlvbi4gTGUgcHJpbmNpcGUgZXN0IHF1ZSBsb3JzcXUndW4gc2VydmV1ciBlc3QgZOl0ZWN06SBjb21tZSBpbm9w6XJhbnQsCmxlIHByb3h5IGNoZXJjaGVyYSBsZSBwcm9jaGFpbiBzZXJ2ZXVyIHBvc3PpZGFudCBsYSBt6m1lIHZhbGV1ciBkZSBjb29raWUgcG91cgpjaGFxdWUgY2xpZW50IHF1aSBsZSBkZW1hbmRlcmEuIFMnaWwgbmUgdHJvdXZlIHBhcyBkZSBzZXJ2ZXVyIG5vcm1hbCwgYWxvcnMgaWwKbGUgY2hlcmNoZXJhIHBhcm1pIGxlcyBzZXJ2ZXVycyBkZSBiYWNrdXAuIENvbnN1bHRlciBsZSBndWlkZSBkJ2FyY2hpdGVjdHVyZQpwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KIyBjb25mIGR1IHBhcmFncmFwaGUgMykgYXZlYyBzdXJ2ZWlsbGFuY2UgVENQCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvaW5kZXguaHRtbCBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayAvaW5kZXguaHRtbAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBpZGVtIGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6IHd3dycKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgculwYXJ0aXRpb24gYXZlYyBwZXJzaXN0ZW5jZSBiYXPpZSBzdXIgbGUgcHLpZml4ZSBkZSBjb29raWUsIGV0IGFycup0IGVuCiMgZG91Y2V1ciB1dGlsaXNhbnQgdW4gc2Vjb25kIHBvcnQgKDgxKSBqdXN0ZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICBzZXJ2ZXIgd2ViMS1ub3JtIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMi1ub3JtIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMS1zdG9wIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgwIGJhY2t1cAogICAgICAgc2VydmVyIHdlYjItc3RvcCAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MCBiYWNrdXAKCiMgSW5zZXJ0aW9uIGF1dG9tYXRpcXVlIGRlIGNvb2tpZSBkYW5zIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgZXQgc3VwcHJlc3Npb24KIyBhdXRvbWF0aXF1ZSBkYW5zIGxhIHJlcXXqdGUsIHRvdXQgZW4gaW5kaXF1YW50IGF1eCBjYWNoZXMgZGUgbmUgcGFzIGdhcmRlcgojIGNlIGNvb2tpZS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgojIGlkZW0gYXZlYyBzZXJ2ZXVyIGFwcGxpY2F0aWYgZGUgc2Vjb3VycyBzdXIgYXV0cmUgc2l0ZSwgZXQgc2VydmV1ciBkZSBwYWdlcyBkJ2VycmV1cnMKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjAzIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKIyByZWxheWFnZSBTTVRQK1RMUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6NTg3CiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDI1IGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCgozLjIpIFJlY29ubmV4aW9uIHZlcnMgdW4gculwYXJ0aXRldXIgZW4gY2FzIGQn6WNoZWMgZGlyZWN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBzaSB1biBzZXJ2ZXVyIGTpZmluaSBwYXIgdW4gY29va2llIG5lIHLpcG9uZCBwbHVzLCBsZXMgY2xpZW50cwpzZXJvbnQgZOlmaW5pdGl2ZW1lbnQgYWlndWlsbOlzIGRlc3N1cyDgIGNhdXNlIGRlIGxldXIgY29va2llLCBldCBkZSBjZSBmYWl0LApk6WZpbml0aXZlbWVudCBwcml26XMgZGUgc2VydmljZS4gTGEgc3DpY2lmaWNhdGlvbiBkdSBwYXJhbeh0cmUgJ3JlZGlzcGF0Y2gnCmF1dG9yaXNlIGRhbnMgY2UgY2FzIOAgcmVudm95ZXIgbGVzIGNvbm5leGlvbnMg6WNob3XpZXMgdmVycyBsZSBy6XBhcnRpdGV1cgooZXh0ZXJuZSBvdSBpbnRlcm5lKSBhZmluIGQnYXNzaWduZXIgdW4gbm91dmVhdSBzZXJ2ZXVyIOAgY2VzIGNsaWVudHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHJlZnVzIGRlIGNvbm5leGlvbi4KClBhciBk6WZhdXQgKGV0IGRhbnMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcyksIGxlIHBhcmFt6HRyZQpyZWRpc3BhdGNoIG5lIHMnYXBwbGlxdWUgcXUnYXV4IOljaGVjcyBkZSBjb25uZXhpb24gYXUgc2VydmV1ci4gRGVwdWlzIGxhCnZlcnNpb24gMS4xLjE3LCBpbCBzJ2FwcGxpcXVlIGF1c3NpIGF1eCBjb25uZXhpb25zIGRlc3RpbullcyDgIGRlcyBzZXJ2ZXVycwppZGVudGlmaelzIGNvbW1lIGhvcnMgZCd1c2FnZSBwYXIgbGEgc3VydmVpbGxhbmNlLiBTaSBsJ29uIHNvdWhhaXRlIG1hbGdy6Qp0b3V0IHF1J3VuIGNsaWVudCBkaXNwb3NhbnQgZCd1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgZOlmZWN0dWV1eAp0ZW50ZSBkZSBzJ3kgY29ubmVjdGVyLCBpbCBmYXV0IHBy6WNpc2VyIGwnb3B0aW9uICJwZXJzaXN0IiA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBwZXJzaXN0CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHNlcnZldXIgSFMuCgoKNCkgRm9uY3Rpb25uYWxpdOlzIGFkZGl0aW9ubmVsbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRCdhdXRyZXMgZm9uY3Rpb25uYWxpdOlzIGQndXNhZ2UgbW9pbnMgY291cmFudCBzb250IGRpc3BvbmlibGVzLiBJbCBzJ2FnaXQKcHJpbmNpcGFsZW1lbnQgZHUgbW9kZSB0cmFuc3BhcmVudCwgZGUgbGEgam91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMsIGV0IGRlCmxhIHLp6WNyaXR1cmUgZGVzIGVuLXTqdGVzLgoKNC4xKSBGb25jdGlvbm5hbGl06XMgculzZWF1Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0LjEuMSkgRm9uY3Rpb25uZW1lbnQgZW4gbW9kZSB0cmFuc3BhcmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBsZSBtb3QgY2zpICd0cmFuc3BhcmVudCcgcGVybWV0IGQnaW50ZXJjZXB0ZXIgZGVzIHNlc3Npb25zCnJvdXTpZXMg4CB0cmF2ZXJzIGxhIG1hY2hpbmUgaOliZXJnZWFudCBsZSBwcm94eS4gRGFucyBjZSBtb2RlLCBvbiBuZSBwculjaXNlCnBhcyBsJ2FkcmVzc2UgZGUgculwYXJ0aXRpb24gJ2Rpc3BhdGNoJywgY2FyIGNlbGxlLWNpIGVzdCB0aXLpZSBkZSBsJ2FkcmVzc2UKZGVzdGluYXRpb24gZGUgbGEgc2Vzc2lvbiBk6XRvdXJu6WUuIExlIHN5c3TobWUgZG9pdCBwZXJtZXR0cmUgZGUgcmVkaXJpZ2VyIGxlcwpwYXF1ZXRzIHZlcnMgdW4gcHJvY2Vzc3VzIGxvY2FsLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KU2kgbGUgcG9ydCBuJ2VzdCBwYXMgc3DpY2lmaekgc3VyIGxlIHNlcnZldXIsIGMnZXN0IGxlIHBvcnQgYXVxdWVsIHMnZXN0CmFkcmVzc+kgbGUgY2xpZW50IHF1aSBzZXJhIHV0aWxpc+kuIENlbGEgcGVybWV0IGRlIHJlbGF5ZXIgdG91cyBsZXMgcG9ydHMgVENQCmQndW5lIG3qbWUgYWRyZXNzZSBhdmVjIHVuZSBt6m1lIGluc3RhbmNlIGV0IHNhbnMgdXRpbGlzZXIgZGlyZWN0ZW1lbnQgbGUgbW9kZQp0cmFuc3BhcmVudC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yIGNoZWNrIHBvcnQgNjAwMDAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgoKNC4xLjIpIENob2l4IGQndW5lIGFkcmVzc2Ugc291cmNlIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIGlsIGRldmllbnQgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuZSBhZHJlc3NlCklQIHNvdXJjZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIuIEMnZXN0IHV0aWxlIHBvdXIgam9pbmRyZSBkZXMgc2VydmV1cnMgZGUKYmFja3VwIOAgcGFydGlyIGQndW4gTEFOIGRpZmbpcmVudCwgb3UgcG91ciB1dGlsaXNlciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcwpwb3VyIGpvaW5kcmUgbGUgbeptZSBzZXJ2ZXVyLiBDJ2VzdCDpZ2FsZW1lbnQgdXRpbGlzYWJsZSBwb3VyIGZhY2lsaXRlciB1bmUKculwYXJ0aXRpb24gZGUgY2hhcmdlIHNlbG9uIGwnYWRyZXNzZSBJUCBzb3VyY2UgcG91ciBkZXMgY29ubmV4aW9ucyBzb3J0YW50ZXMuCkJpZW4gZW50ZW5kdSwgbGEgbeptZSBhZHJlc3NlIGVzdCB1dGlsaXPpZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGxlcyAyIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xMwogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4xLjEKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjIuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZmFpcmUgdW5lIHLpcGFydGl0aW9uIGQnYWRyZXNzZSBzb3VyY2VzIHBvdXIgam9pbmRyZSBsZSBt6m1lIHByb3h5IOAKICAgICMgdHJhdmVycyBkZXV4IGxpZW5zIFdBTiAKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTEgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4yLjEKICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MiAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjMuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmb3JjZXIgdW5lIGNvbm5leGlvbiBUQ1Ag4CBzJ2F0dGFjaGVyIOAgdW4gcG9ydCBwYXJ0aWN1bGllcgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDoyMDAwCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAoKNC4xLjMpIE1haW50aWVuIGRlIHNlc3Npb24gVENQIChrZWVwLWFsaXZlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuNywgaWwgZGV2aWVudCBwb3NzaWJsZSBkJ2FjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbgpUQ1AgKFRDUCBrZWVwLWFsaXZlKSDgIGxhIGZvaXMgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyLiBDZWxhIHBlcm1ldApkJ2VtcOpjaGVyIGRlcyBzZXNzaW9ucyBsb25ndWVzIGQnZXhwaXJlciBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0CmV4dGVybmVzIHRlbHMgcXVlIGRlcyBmaXJld2FsbHMgb3UgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UuIENlbGEgcGVybWV0CmF1c3NpIGF1IHN5c3TobWUgZGUgZOl0ZWN0ZXIgZXQgdGVybWluZXIgZGVzIHNlc3Npb25zIGZpZ+llcyBsb3JzcXUnYXVjdW4KdGltZS1vdXQgbidhIOl06SBwb3NpdGlvbm7pIChmb3J0ZW1lbnQgZOljb25zZWlsbOkpLiBMZSBwcm94eSBuZSBwZXV0IHBhcwpwb3NpdGlvbm5lciBsJ2ludGVydmFsbGUgZW50cmUgbGVzIGFubm9uY2VzIG5pIGxlIG5vbWJyZSBtYXhpbWFsLCB2ZXVpbGxlegp2b3VzIHLpZulyZXIgYXUgbWFudWVsIGR1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gcG91ciBjZWxhLiBJbCBleGlzdGUgMyBvcHRpb25zCnBvdXIgYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uIFRDUCA6CgoJb3B0aW9uIHRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyCglvcHRpb24gY2xpdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudAoJb3B0aW9uIHNydnRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBzZXJ2ZXVyCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpMJ3VuIGRlcyBwb2ludHMgZm9ydHMgZGUgSEFQcm94eSBlc3QgaW5k6W5pYWJsZW1lbnQgbGEgcHLpY2lzaW9uIGRlIHNlcyBsb2dzLgpJbCBmb3Vybml0IHByb2JhYmxlbWVudCBsZSBwbHVzIGZpbiBuaXZlYXUgZCdpbmZvcm1hdGlvbiBkaXNwb25pYmxlIHBvdXIgdW4KdGVsIG91dGlsLCBjZSBxdWkgZXN0IHRy6HMgaW1wb3J0YW50IHBvdXIgbGVzIGRpYWdub3N0aWNzIGVuIGVudmlyb25uZW1lbnRzCmNvbXBsZXhlcy4gRW4gc3RhbmRhcmQsIGxlcyBpbmZvcm1hdGlvbnMgam91cm5hbGlz6WVzIGluY2x1ZW50IGxlIHBvcnQgY2xpZW50LApsZXMgY2hyb25vbel0cmFnZXMgZGVzIOl0YXRzIFRDUC9IVFRQLCBkZXMg6XRhdHMgZGUgc2Vzc2lvbiBwculjaXMgYXUgbW9tZW50IGRlCmxhIHRlcm1pbmFpc29uIGV0IHNhIGNhdXNlLCBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZXMgZOljaXNpb25zIGQnYWlndWlsbGFnZSBkdQp0cmFmaWMgdmVycyB1biBzZXJ2ZXVyLCBldCBiaWVuIHP7ciBsYSBwb3NzaWJpbGl06SBkZSBjYXB0dXJlciBkZXMgZW4tdOp0ZXMKYXJiaXRyYWlyZXMuCgpEYW5zIGxlIGJ1dCBkJ2Ft6Wxpb3JlciBsYSBy6WFjdGl2aXTpIGRlcyBhZG1pbmlzdHJhdGV1cnMsIGlsIG9mZnJlIHVuZSBncmFuZGUKdHJhbnNwYXJlbmNlIHN1ciBsZXMgcHJvYmzobWVzIHJlbmNvbnRy6XMsIOAgbGEgZm9pcyBpbnRlcm5lcyBldCBleHRlcm5lcywgZXQKaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgbG9ncyB2ZXJzIGRlcyBzZXJ2ZXVycyBkaWZm6XJlbnRzIGVuIG3qbWUgdGVtcHMKYXZlYyBkZXMgbml2ZWF1eCBkZSBmaWx0cmFnZSBkaWZm6XJlbnRzIDoKCiAgLSBsb2dzIGdsb2JhdXggYXUgbml2ZWF1IHByb2Nlc3N1cyAoZXJyZXVycyBzeXN06G1lLCBhcnLqdHMvZOltYXJyYWdlcywgLi4uKQogIC0gZXJyZXVycyBzeXN06G1lIGV0IGludGVybmVzIHBhciBpbnN0YW5jZSAobWFucXVlIGRlIHJlc3NvdXJjZXMsIGJ1Z3MsIC4uLikKICAtIHByb2Js6G1lcyBleHRlcm5lcyBwYXIgaW5zdGFuY2UgKGFycup0cy9yZWxhbmNlIHNlcnZldXJzLCBsaW1pdGVzLCAuLi4pCiAgLSBhY3Rpdml06SBwYXIgaW5zdGFuY2UgKGNvbm5leGlvbnMgY2xpZW50cyksIGF1c3NpIGJpZW4gbG9ycyBkZSBsZXVyCiAgICDpdGFibGlzc2VtZW50IHF1J+AgbGV1ciB0ZXJtaW5haXNvbi4KCkxhIHBvc3NpYmlsaXTpIGRlIGRpc3RyaWJ1ZXIgZGlmZulyZW50cyBuaXZlYXV4IGRlIGxvZ3Mg4CBkaWZm6XJlbnRzIHNlcnZldXJzCnBlcm1ldCDgIHBsdXNpZXVycyDpcXVpcGVzIGRlIHByb2R1Y3Rpb24gZCdpbnTpcmFnaXIgZXQgZGUgY29ycmlnZXIgbGV1cnMKcHJvYmzobWVzIGxlIHBsdXMgdPR0IHBvc3NpYmxlLiBQYXIgZXhlbXBsZSwgbCfpcXVpcGUgc3lzdOhtZSBwZXV0IHN1cnZlaWxsZXIKb2NjYXNpb25uZWxsZW1lbnQgbGVzIGVycmV1cnMgc3lzdOhtZSwgcGVuZGFudCBxdWUgbCfpcXVpcGUgYXBwbGljYXRpb24Kc3VydmVpbGxlIGxlcyBhbGVydGVzIGQnYXJy6nRzL2TpbWFycmFnZXMgZGUgc2VzIHNlcnZldXJzIGVuIHRlbXBzIHLpZWwsIGV0CnF1ZSBsJ+lxdWlwZSBz6WN1cml06SBhbmFseXNlIGwnYWN0aXZpdOkgZW4gZGlmZuly6SBkJ3VuZSBoZXVyZS4KCgo0LjIuMSkgTml2ZWF1eCBkZSBsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIFRDUCBldCBIVFRQIHBldXZlbnQgZG9ubmVyIGxpZXUg4CB1bmUgam91cm5hbGlzYXRpb24gc29tbWFpcmUgb3UKZOl0YWlsbOllIGluZGlxdWFudCwgcG91ciBjaGFxdWUgY29ubmV4aW9uLCBsYSBkYXRlLCBsJ2hldXJlLCBsJ2FkcmVzc2UgSVAKc291cmNlLCBsZSBzZXJ2ZXVyIGRlc3RpbmF0aW9uLCBsYSBkdXLpZSBkZSBsYSBjb25uZXhpb24sIGxlcyB0ZW1wcyBkZSBy6XBvbnNlLApsYSByZXF16nRlIEhUVFAsIGxlIGNvZGUgZGUgcmV0b3VyLCBsYSBxdWFudGl06SBkZSBkb25u6WVzIHRyYW5zbWlzZXMsIGV0IG3qbWUKZGFucyBjZXJ0YWlucyBjYXMsIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwZXJtZXR0YW50IGRlIHN1aXZyZSBsZXMgc2Vzc2lvbnMuClRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbiBzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBTZSBy6WbpcmVyIOAKbGEgc2VjdGlvbiAxLjEgcG91ciBwbHVzIGQnaW5mb3JtYXRpb24gc3VyIGxlcyBjYXTpZ29yaWVzIGRlIGxvZ3MuICBMYSBzeW50YXhlCmVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwXzE+IDxjYXTpZ29yaWVfMT4gW25pdmVhdV9tYXhfMV0KICAgIGxvZyA8YWRyZXNzZV9pcF8yPiA8Y2F06WdvcmllXzI+IFtuaXZlYXVfbWF4XzJdCm91CiAgICBsb2cgZ2xvYmFsCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGEgc3ludGF4ZSBzcOljaWZpcXVlICdsb2cgZ2xvYmFsJyBpbmRpcXVlIHF1ZSBsJ29uIHNvdWhhaXRlIHV0aWxpc2VyIGxlcwpwYXJhbeh0cmVzIGRlIGpvdXJuYWxpc2F0aW9uIGTpZmluaXMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAxIGxvY2FsNAoKNC4yLjIpIEZvcm1hdCBkZXMgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhciBk6WZhdXQsIGxlcyBjb25uZXhpb25zIHNvbnQgam91cm5hbGlz6WVzIGF1IG5pdmVhdSBUQ1AgZOhzIGwn6XRhYmxpc3NlbWVudApkZSBsYSBzZXNzaW9uIGVudHJlIGxlIGNsaWVudCBldCBsZSByZWxhaXMuIEVuIHBy6WNpc2FudCBsJ29wdGlvbiAndGNwbG9nJywKbGEgY29ubmV4aW9uIG5lIHNlcmEgam91cm5hbGlz6WUgcXUnZW4gZmluIGRlIHNlc3Npb24sIGFqb3V0YW50IGRlcyBwculjaXNpb25zCnN1ciBzb24g6XRhdCBsb3JzIGRlIGxhIGTpY29ubmV4aW9uLCBhaW5zaSBxdWUgbGUgdGVtcHMgZGUgY29ubmV4aW9uIGV0IGxhCmR1cullIHRvdGFsZSBkZSBsYSBzZXNzaW9uLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBUQ1AgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gcmVsYWlzLXRjcCAwLjAuMC4wOjgwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIG9wdGlvbiB0Y3Bsb2cKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIC0tIDEvMQogIAogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgRXhlbXBsZQogICAgICAKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgMTI3LjAuMC4xOjM0NTUwCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtdGNwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgdGVtcHNfY29ubmVjdCAnLycgdGVtcHNfdG90YWwgICAgICAgICAwLzUwMDcKICAgICAgICA3ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA4ICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICAgICAgOSAgY29ubnNfaW5zdGFuY2UgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgICAxLzEKClVuZSBhdXRyZSBvcHRpb24sICdodHRwbG9nJywgZm91cm5pdCBwbHVzIGRlIGTpdGFpbHMgc3VyIGxlIHByb3RvY29sZSBIVFRQLApub3RhbW1lbnQgbGEgcmVxdep0ZSBldCBsJ+l0YXQgZGVzIGNvb2tpZXMuIERhbnMgbGVzIGNhcyBv+SB1biBt6WNhbmlzbWUgZGUKc3VydmVpbGxhbmNlIGVmZmVjdHVhbnQgZGVzIGNvbm5leGlvbnMgZXQgZOljb25uZXhpb25zIGZy6XF1ZW50ZXMsIHBvbGx1ZXJhaXQKbGVzIGxvZ3MsIGlsIHN1ZmZpdCBkJ2Fqb3V0ZXIgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgcG91ciBuZSBwbHVzIG9idGVuaXIgdW5lCmxpZ25lIGRlIGxvZyBwb3VyIGxlcyBzZXNzaW9ucyBuJ2F5YW50IHBhcyBkb25u6SBsaWV1IOAgdW4g6WNoYW5nZSBkZSBkb25u6WVzCihyZXF16nRlIG91IHLpcG9uc2UpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBIVFRQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQ3LzcyMyAyMDAgMjQzIC0gLSAtLS0tIDMvMyAiSEVBRCAvIEhUVFAvMS4wIgoKRXhlbXBsZSBwbHVzIGNvbXBsZXQgOgoKICAgIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAyMDIvMjA1IHt3Lm9kcy5vcmd8TW96aWxsYX0ge30gIkhFQUQgLyBIVFRQLzEuMCIgCgogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgRXhlbXBsZQogICAgICAKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgMTAuMC4wLjE6MzQ1NTIKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNjozMV0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy1odHRwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgVHEgJy8nIFRjICcvJyBUciAnLycgVHQgICAgICAgICAgICAgICAzMTgzLy0xLy0xLzExMjE1CiAgICAgICAgNyAgQ29kZV9yZXRvdXJfSFRUUCAgICAgICAgICAgICAgICAgICAgICA1MDMKICAgICAgICA4ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA5ICBjb29raWVzX3JlcXXqdGVfY2FwdHVy6XMgICAgICAgICAgICAgIC0KICAgICAgIDEwICBjb29raWVzX3JlcG9uc2VfY2FwdHVy6XMgICAgICAgICAgICAgIC0KICAgICAgIDExICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgIFNDLS0KICAgICAgIDEyICBjb25uc19pbnN0YW5jZSAnLycgY29ubnNfcHJvY2Vzc3VzICAgIDIwMi8yMDUKICAgICAgIDEzICAneycgZW50ZXRlc19yZXF16nRlX2NhcHR1culzICd9JyAgICAgIHt3Lm9kcy5vcmd8TW96aWxsYX0KICAgICAgIDE0ICAneycgZW50ZXRlc19yZXBvbnNlX2NhcHR1culzICd9JyAgICAgIHt9CiAgICAgICAxNSAgJyInIHJlcXXqdGVfSFRUUCAnIicgICAgICAgICAgICAgICAgICAiSEVBRCAvIEhUVFAvMS4wIgogIApOb3RlIHBvdXIgbGVzIGFuYWx5c2V1cnMgZGUgbG9ncyA6IGwnVVJJIGVzdCBUT1VKT1VSUyBsZSBkZXJuaWVyIGNoYW1wIGRlIGxhIGxpZ25lLCBldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbmNlIHBhciB1biBndWlsbGVtZXQgJyInLgoKTGUgcHJvYmzobWUgZGUgbG9ndWVyIHVuaXF1ZW1lbnQgZW4gZmluIGRlIHNlc3Npb24sIGMnZXN0IHF1J2lsIGVzdCBpbXBvc3NpYmxlCmRlIHNhdm9pciBjZSBxdWkgc2UgcGFzc2UgZHVyYW50IGRlIGdyb3MgdHJhbnNmZXJ0cyBvdSBkZXMgc2Vzc2lvbnMgbG9uZ3Vlcy4KUG91ciBwYWxsaWVyIOAgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2xvZ2FzYXAnIGEg6XTpIGludHJvZHVpdGUgZGFucwpsYSB2ZXJzaW9uIDEuMS4yOCAoMS4yLjEpLiBMb3JzcXUnZWxsZSBlc3QgYWN0aXbpZSwgbGUgcHJveHkgbG9ndWVyYSBsZSBwbHVzCnT0dCBwb3NzaWJsZSwgYydlc3Qg4CBkaXJlIGp1c3RlIGF2YW50IHF1ZSBuZSBk6WJ1dGVudCBsZXMgdHJhbnNmZXJ0cyBkZQpkb25u6WVzLiBDZWxhIHNpZ25pZmllLCBkYW5zIGxlIGNhcyBkdSBUQ1AsIHF1J2lsIGxvZ3VlcmEgdG91am91cnMgbGUgculzdWx0YXQKZGUgbGEgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgZGFucyBsZSBjYXMgSFRUUCwgcXUnaWwgbG9ndWVyYSBlbiBmaW4gZGUKdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgZGUgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBhdXF1ZWwgY2FzIGxlIG5vbWJyZSBkJ29jdGV0cwpyZXBy6XNlbnRlcmEgbGEgdGFpbGxlIGRlcyBlbi106nRlcyByZXRvdXJu6XMgYXUgY2xpZW50LgoKQWZpbiBkJ+l2aXRlciB0b3V0ZSBjb25mdXNpb24gYXZlYyBsZXMgbG9ncyBub3JtYXV4LCBsZSB0ZW1wcyB0b3RhbCBkZQp0cmFuc2ZlcnQgZXQgbGUgbm9tYnJlIGQnb2N0ZXRzIHRyYW5zZuly6XMgc29udCBwculmaXjpcyBkJ3VuIHNpZ25lICcrJwpyYXBwZWxhbnQgcXVlIGxlcyB2YWxldXJzIHLpZWxsZXMgc29udCBjZXJ0YWluZW1lbnQgcGx1cyDpbGV26WVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBsb2dhc2FwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMy8zICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKCgo0LjIuMykgQ2hyb25vbel0cmFnZSBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQb3VyIGTpY2VsZXIgZGVzIHByb2Js6G1lcyBy6XNlYXUsIGxlcyBtZXN1cmVzIGR1IHRlbXBzIOljb3Vs6SBlbnRyZSBjZXJ0YWlucwrpduluZW1lbnRzIHNvbnQgZCd1bmUgdHLocyBncmFuZGUgdXRpbGl06S4gVG91cyBsZXMgdGVtcHMgc29udCBtZXN1culzIGVuCm1pbGxpc2Vjb25kZXMgKG1zKS4gRW4gbW9kZSBIVFRQLCBxdWF0cmUgcG9pbnRzIGRlIG1lc3VyZSBzb250IHJhcHBvcnTpcyBzb3VzCmxhIGZvcm1lIFRxL1RjL1RyL1R0IDoKCiAgLSBUcTogdGVtcHMgdG90YWwgZGUgculjZXB0aW9uIGRlIGxhIHJlcXXqdGUgSFRUUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KICAgIEMnZXN0IGxlIHRlbXBzIHF1aSBzJ2VzdCDpY291bOkgZW50cmUgbGUgbW9tZW50IG/5IGxlIGNsaWVudCBhIOl0YWJsaQogICAgc2EgY29ubmV4aW9uIHZlcnMgbGUgcmVsYWlzLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBhIHJl53UgbGUgZGVybmllcgogICAgZW4tdOp0ZSBIVFRQIHZhbGlkYW50IGxhIGZpbiBkZSBsYSByZXF16nRlLiBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUKICAgIHF1ZSBsYSByZXF16nRlIGNvbXBs6HRlIG4nYSBqYW1haXMg6XTpIHJl53VlLgoKICAtIFRjOiB0ZW1wcyBkJ+l0YWJsaXNzZW1lbnQgZGUgbGEgY29ubmV4aW9uIFRDUCBkdSByZWxhaXMgdmVycyBsZSBzZXJ2ZXVyLgogICAgQydlc3QgbGUgdGVtcHMg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBvdSBsZSByZWxhaXMgYSBpbml0aekgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgbCdhIGFjcXVpdHTpZSwgYydlc3QKICAgIOAgZGlyZSBsZSB0ZW1wcyBlbnRyZSBsJ2Vudm9pIGR1IHBhcXVldCBUQ1AgU1lOIGxhIHLpY2VwdGlvbiBkdSBTWU4vQUNLLgogICAgVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlIHF1ZSBsYSBjb25uZXhpb24gbidhIGphbWFpcyBwdSDqdHJlIOl0YWJsaWUKICAgIHZlcnMgbGUgc2VydmV1ci4KCiAgLSBUcjogdGVtcHMgZGUgculwb25zZSBkdSBzZXJ2ZXVyLiBDJ2VzdCBsZSB0ZW1wcyBxdWUgbGUgc2VydmV1ciBhIG1pcyBwb3VyCiAgICByZW52b3llciBsYSB0b3RhbGl06SBkZXMgZW4tdOp0ZXMgSFRUUCDgIHBhcnRpciBkdSBtb21lbnQgb/kgaWwgYSBhY3F1aXR06QogICAgbGEgY29ubmV4aW9uLiBDYSByZXBy6XNlbnRlIGV4YWN0ZW1lbnQgbGUgdGVtcHMgZGUgdHJhaXRlbWVudCBkZSBsYQogICAgdHJhbnNhY3Rpb24gc2FucyBsZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMgYXNzb2Np6WVzLiBVbmUgdmFsZXVyICctMScKICAgIGluZGlxdWUgcXVlIGxlIHNlcnZldXIgbidhIHBhcyBlbnZveekgbGEgdG90YWxpdOkgZGUgbCdlbi106nRlIEhUVFAuCgogIC0gVHQ6IGR1cullIGRlIHZpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbiwgZW50cmUgbGUgbW9tZW50IG/5IGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiBkdSBjbGllbnQgYSDpdOkgYWNxdWl0dOllIGV0IGxlIG1vbWVudCBv+SBsYSBjb25uZXhpb24gYSDpdOkKICAgIHJlZmVybellIGF1eCBkZXV4IGV4dHLpbWl06XMgKGNsaWVudCBldCBzZXJ2ZXVyKS4gTGEgc2lnbmlmaWNhdGlvbiBjaGFuZ2UKICAgIHVuIHBldSBzaSBsJ29wdGlvbiAnbG9nYXNhcCcgZXN0IHBy6XNlbnRlLiBEYW5zIGNlIGNhcywgbGUgdGVtcHMgY29ycmVzcG9uZAogICAgdW5pcXVlbWVudCDgIChUcSArIFRjICsgVHIpLCBldCBzZSB0cm91dmUgcHLpZml46SBkJ3VuIHNpZ25lICcrJy4gT24gcGV1dAogICAgZG9uYyBk6WR1aXJlIFRkLCBsZSB0ZW1wcyBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMsIGVuIGV4Y2x1YW50IGxlcyBhdXRyZXMKICAgIHRlbXBzIDoKCiAgICAgICAgVGQgPSBUdCAtIChUcSArIFRjICsgVHIpCgogICAgTGVzIHRlbXBzIHJhcHBvcnTpcyDgICctMScgc29udCBzaW1wbGVtZW50IOAg6WxpbWluZXIgZGUgY2V0dGUg6XF1YXRpb24uCgpFbiBtb2RlIFRDUCAoJ29wdGlvbiB0Y3Bsb2cnKSwgc2V1bHMgbGVzIGRldXggaW5kaWNhdGV1cnMgVGMgZXQgVHQgc29udApyYXBwb3J06XMuCgpDZXMgdGVtcHMgZm91cm5pc3NlbnQgZGUgcHLpY2lldXggcmVuc2VpZ25lbWVudCBzdXIgZGVzIGNhdXNlcyBwcm9iYWJsZXMgZGUKcHJvYmzobWVzLiBEdSBmYWl0IHF1ZSBsZSBwcm90b2NvbGUgVENQIGTpZmluaXNzZSBkZXMgdGVtcHMgZGUgcmV0cmFuc21pc3Npb24KZGUgMyBzZWNvbmRlcywgcHVpcyA2LCAxMiwgZXRjLi4uLCBsJ29ic2VydmF0aW9uIGRlIHRlbXBzIHByb2NoZXMgZGUgbXVsdGlwbGVzCmRlIDMgc2Vjb25kZXMgaW5kaXF1ZSBwcmF0aXF1ZW1lbnQgdG91am91cnMgZGVzIHBlcnRlcyBkZSBwYXF1ZXRzIGxp6XMg4CB1bgpwcm9ibOhtZSBy6XNlYXUgKGPiYmxlIG91IG7pZ29jaWF0aW9uKS4gRGUgcGx1cywgc2kgPFR0PiBlc3QgcHJvY2hlIGQndW5lCnZhbGV1ciBkZSB0aW1lLW91dCBkYW5zIGxhIGNvbmZpZ3VyYXRpb24sIGMnZXN0IHNvdXZlbnQgcXUndW5lIHNlc3Npb24gYSDpdOkKYWJhbmRvbm7pZSBzdXIgZXhwaXJhdGlvbiBkJ3VuIHRpbWUtb3V0LgoKQ2FzIGxlcyBwbHVzIGZy6XF1ZW50cyA6CgogIC0gU2kgVHEgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIGNsaWVudCBldCBsZSByZWxhaXMuCiAgLSBTaSBUYyBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIgZHVyYW50IGxhIHBoYXNlIGRlIGNvbm5leGlvbi4gQ2V0IGluZGljYXRldXIKICAgIGRldnJhaXQgbm9ybWFsZW1lbnQgdG91am91cnMg6nRyZSB0cuhzIGJhcyAobW9pbnMgZGUgcXVlbHF1ZXMgZGl6YWluZXMpLgogIC0gU2kgVHIgZXN0IHByZXNxdWUgdG91am91cnMgaW5m6XJpZXVyIOAgMzAwMCwgZXQgcXVlIGNlcnRhaW5lcyB2YWxldXJzCiAgICBzZW1ibGVudCBwcm9jaGVzIGRlIGxhIHZhbGV1ciBtb3llbm5lIG1ham9y6WUgZGUgMzAwMCwgaWwgeSBhIHBldXQt6nRyZQogICAgZGUgcGVydGVzIGVudHJlIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyLgogIC0gU2kgVHQgZXN0IGzpZ+hyZW1lbnQgc3Vw6XJpZXVyIGF1IHRpbWUtb3V0LCBjJ2VzdCBzb3V2ZW50IHBhcmNlIHF1ZSBsZQogICAgY2xpZW50IGV0IGxlIHNlcnZldXIgdXRpbGlzZW50IGR1IGtlZXAtYWxpdmUgSFRUUCBlbnRyZSBldXggZXQgcXVlIGxhCiAgICBzZXNzaW9uIGVzdCBtYWludGVudWUgYXBy6HMgbGEgZmluIGRlcyDpY2hhbmdlcy4gVm9pciBwbHVzIGxvaW4gcG91cgogICAgc2F2b2lyIGNvbW1lbnQgZOlzYWN0aXZlciBsZSBrZWVwLWFsaXZlIEhUVFAuCgpBdXRyZXMgY2FzICgneHgnIHJlcHLpc2VudGFudCB1bmUgdmFsZXVyIHF1ZWxjb25xdWUg4CBpZ25vcmVyKSA6CiAgICAtMS94eC94eC9UdCA6IGxlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSBvdQogICAgICAgICAgICAgICAgICBhIHJlZmVybekgc2EgY29ubmV4aW9uIHNhbnMgY29tcGzpdGVyIGxhIHJlcXXqdGUuCiAgICBUcS8tMS94eC9UdCA6IGxhIGNvbm5leGlvbiBuJ2EgcGFzIHB1IHMn6XRhYmxpciB2ZXJzIGxlIHNlcnZldXIgKHJlZnVzIG91CiAgICAgICAgICAgICAgICAgIHRpbWUtb3V0IGF1IGJvdXQgZGUgVHQtVHEgbXMpLgogICAgVHEvVGMvLTEvVHQgOiBsZSBzZXJ2ZXVyIGEgYWNjZXB06SBsYSBjb25uZXhpb24gbWFpcyBuJ2EgcGFzIHLpcG9uZHUgZGFucwogICAgICAgICAgICAgICAgICBsZXMgdGVtcHMgb3UgYmllbiBhIHJlZmVybekgc2EgY29ubmV4aW9uIHRyb3AgdPR0LCBhdSBib3V0CiAgICAgICAgICAgICAgICAgIGRlIFR0LShUcStUYykgbXMuCiAgICAgCjQuMi40KSBDb25kaXRpb25zIGRlIGTpY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBsb2dzIFRDUCBldCBIVFRQIGZvdXJuaXNzZW50IHVuIGluZGljYXRldXIgZGUgY29tcGzpdHVkZSBkZSBsYSBzZXNzaW9uIGRhbnMKbGUgY2hhbXAgJ2V0YXRfdGVybWluYWlzb24nLCBqdXN0ZSBhdmFudCBsZSBub21icmUgZGUgY29ubmV4aW9ucyBhY3RpdmVzLiBDJ2VzdAp1biBjaGFtcCBsb25nIGRlIDIgY2FyYWN06HJlcyBlbiBUQ1AgZXQgZGUgNCBjYXJhY3TocmVzIGVuIEhUVFAsIGNoYWN1biBheWFudAp1bmUgc2lnbmlmaWNhdGlvbiBwculjaXNlIDoKCiAgLSBzdXIgbGUgcHJlbWllciBjYXJhY3TocmUsIHVuIGNvZGUgcHLpY2lzYW50IGxlIHByZW1pZXIg6XbpbmVtZW50IHF1aSBhIGNhdXPpCiAgICBsYSB0ZXJtaW5haXNvbiBkZSBsYSBzZXNzaW9uIDoKCiAgICAgICAgQyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICBTIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdQogICAgICAgICAgICByZWZ1cyBleHBsaWNpdGUgZGUgY29ubmV4aW9uIGRlIGxhIHBhcnQgZGUgY2UgZGVybmllci4KCiAgICAgICAgUCA6IHRlcm1pbmFpc29uIHBy6W1hdHVy6WUgZGVzIHNlc3Npb25zIHBhciBsZSBwcm94eSwgcG91ciBjYXVzZQogICAgICAgICAgICBkJ2ltcG9zaXRpb24gZCd1bmUgbGltaXRlIHN1ciBsZSBub21icmUgZGUgY29ubmV4aW9ucywgcG91ciBjYXVzZQogICAgICAgICAgICBkZSBjb25maWd1cmF0aW9uIChleDogZmlsdHJlIGQnVVJMKSwgb3UgcGFyY2UgcXUndW4gY29udHL0bGUgZGUKICAgICAgICAgICAgc+ljdXJpdOkgYSBk6XRlY3TpIGV0IGJsb3F16SB1bmUgYW5vbWFsaWUgZGFucyBsYSBy6XBvbnNlIGR1CiAgICAgICAgICAgIHNlcnZldXIgcXVpIGF1cmFpdCBwdSBjYXVzZXIgdW5lIGZ1aXRlIGQnaW5mb3JtYXRpb25zIChwYXIgZXhlbXBsZSwKICAgICAgICAgICAgdW4gY29va2llIGNhY2hhYmxlKS4KCiAgICAgICAgUiA6IHVuZSByZXNzb3VyY2Ugc3VyIGxlIHByb3h5IGEg6XTpIOlwdWlz6WUgKG3pbW9pcmUsIHNvY2tldHMsIHBvcnRzCiAgICAgICAgICAgIHNvdXJjZSwgLi4uKS4gR+lu6XJhbGVtZW50LCBjZWxhIGFycml2ZSBhdSBjb3VycyBkZSBsJ+l0YWJsaXNzZW1lbnQKICAgICAgICAgICAgZCd1bmUgY29ubmV4aW9uLCBldCBsZXMgbG9ncyBzeXN06G1lIGRvaXZlbnQgY29udGVuaXIgdW5lIGNvcGllIGRlCiAgICAgICAgICAgIGwn6XJyZXVyIHBy6WNpc2UuCgogICAgICAgIEkgOiB1bmUgZXJyZXVyIGludGVybmUgYSDpdOkgaWRlbnRpZmnpZSBwYXIgbGUgcHJveHkg4CBsYSBzdWl0ZSBkJ3VuCiAgICAgICAgICAgIGF1dG8tY29udHL0bGUuIENlY2kgbmUgZG9pdCBKQU1BSVMgYXJyaXZlciwgZXQgdm91cyDqdGVzIGVuY291cmFn6XMKICAgICAgICAgICAg4CByZW1vbnRlciBuJ2ltcG9ydGUgcXVlbCBsb2cgY29udGVuYW50IGNlY2kgY2FyIGlsIHMnYWdpcmEgdW4gYnVnLgoKICAgICAgICBjIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgY2xpZW50IGEgZXhwaXLpIChjbGl0aW1lb3V0KS4KCiAgICAgICAgcyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IHNlcnZldXIgYSBleHBpcukgKHNydnRpbWVvdXQgZXQgY29udGltZW91dCkKCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUgZGUgc2Vzc2lvbi4KCiAgLSBzdXIgbGUgc2Vjb25kIGNhcmFjdOhyZSwgbCfpdGF0IGQnYXZhbmNlbWVudCBkZSBsYSBzZXNzaW9uIFRDUC9IVFRQIGxvcnMgZGUKICAgIGxhIGZlcm1ldHVyZSA6CgogICAgICAgIFIgOiBhdHRlbnRlIGQndW5lIFJFUVVFVEUgSFRUUCBjb21wbOh0ZSBkZSBsYSBwYXJ0IGR1IGNsaWVudC4gUmllbiBuJ2EKICAgICAgICAgICAg6XTpIHRyYW5zbWlzIGF1IHNlcnZldXIuCgogICAgICAgIEMgOiBhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBDT05ORVhJT04gdmVycyBsZSBzZXJ2ZXVyLiBMZQogICAgICAgICAgICBzZXJ2ZXVyIHBldXQgYXUgcGx1cyBhdm9pciB2dSBsYSB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLCBtYWlzCiAgICAgICAgICAgIGF1Y3VuZSBkb25u6WUgbidhIOl06SDpY2hhbmfpZS4KCiAgICAgICAgSCA6IGF0dGVudGUsIHLpY2VwdGlvbiBvdSB0cmFpdGVtZW50IGRlcyBlbi106nRlcyBIVFRQICgiSEVBREVSUyIpLgoKICAgICAgICBEIDogdHJhbnNmZXJ0IGRlcyBET05ORUVTIGR1IHNlcnZldXIgdmVycyBsZSBjbGllbnQuCgogICAgICAgIEwgOiB0cmFuc2ZlcnQgZGVzIGRlcm5p6HJlcyAoIkxBU1QiKSBkb25u6WVzIGR1IHByb3h5IHZlcnMgbGUgY2xpZW50LAogICAgICAgICAgICBhbG9ycyBxdWUgbGUgc2VydmV1ciBhIGTpauAgZmluaS4KCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUsIGFwcuhzIGZpbiBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuCgogIC0gbGUgdHJvaXNp6G1lIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWxsZSBpZGVudGlmaWNhdGlvbiBkJ3VuIGNvb2tpZSBkZQogICAgcGVyc2lzdGVuY2UgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGVuY2UgbidhIOl06SBwculzZW506S4gQydlc3QgZ+lu6XJhbGVtZW50IGxlCiAgICAgICAgICAgIGNhcyBzdXIgbGVzIE5PVVZFTExFUyBjb25uZXhpb25zIGNsaWVudHMuCgogICAgICAgIEkgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgSU5WQUxJREUgbmUgY29ycmVzcG9uZGFudCDgIGF1Y3VuCiAgICAgICAgICAgIHNlcnZldXIgY29ubnUuIENlY2kgcGV1dCDqdHJlIGT7IOAgdW4gY2hhbmdlbWVudCBkZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgIHLpY2VudCwg4CBkZXMgbelsYW5nZXMgZGUgbm9tcyBkZSBjb29raWVzIGVudHJlIHNpdGVzIEhUVFAvSFRUUFMsCiAgICAgICAgICAgIG91IOAgdW5lIGF0dGFxdWUuCgogICAgICAgIEQgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgaG9ycwogICAgICAgICAgICBkJ3VzYWdlICgiRE9XTiIpLiBTdWl2YW50IGwnb3B0aW9uICdwZXJzaXN0JywgaWwgYSDpdOkgcmVudm956SB2ZXJzCiAgICAgICAgICAgIHVuIGF1dHJlIHNlcnZldXIgb3UgYSB0b3V0IGRlIG3qbWUgdGVudOkgZGUgc2UgY29ubmVjdGVyIHN1ciBjZWx1aQogICAgICAgICAgICBjb3JyZXNwb25kYW50IGF1IGNvb2tpZS4KCiAgICAgICAgViA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBWQUxJREUgZXQgYSBwdSBzZSBjb25uZWN0ZXIgYXUKICAgICAgICAgICAgc2VydmV1ciBjb3JyZXNwb25kYW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlIChwYXMgZGUgY29va2llIHBvc2l0aW9ubukgZGFucyBsYSBjb25maWd1cmF0aW9uKS4KCiAgLSBsZSBkZXJuaWVyIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWwgdHJhaXRlbWVudCBlZmZlY3R16SBzdXIgdW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSByZXRyb3VybukgcGFyIGxlIHNlcnZldXIgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGF1Y3VuCiAgICAgICAgICAgIG4nYSDpdOkgaW5z6XLpLgoKICAgICAgICBJIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RhbmNlIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLCBldCBsZQogICAgICAgICAgICBwcm94eSBlbiBhIElOU0VSRSB1bi4KCiAgICAgICAgUCA6IHVuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIgZXQgdHJhbnNtaXMKICAgICAgICAgICAgdGVsIHF1ZWwgKCJQQVNTSUYiKS4KCiAgICAgICAgUiA6IGxlIGNvb2tpZSByZXRvdXJu6SBwYXIgbGUgc2VydmV1ciBhIOl06SBSRUVDUklUIHBhciBsZSBwcm94eS4KCiAgICAgICAgRCA6IGxlIGNvb2tpZSBwculzZW506SBwYXIgbGUgc2VydmV1ciBhIOl06SBERVRSVUlUIHBhciBsZSBwcm94eSBwb3VyCiAgICAgICAgICAgIG5lIHBhcyDqdHJlIHJldG91cm7pIGF1IGNsaWVudC4KCiAgICAgICAgLSA6IG5vbiBhcHBsaXF1YWJsZQoKCkxhIGNvbWJpbmFpc29uIGRlcyBkZXV4IHByZW1pZXJzIGluZGljYXRldXJzIGZvdXJuaXQgdW5lIGdyYW5kZSBxdWFudGl0aekKZCdpbmZvcm1hdGlvbnMgc3VyIGNlIHF1aSBzZSBwYXNzYWl0IGxvcnNxdWUgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZS4gQ2VsYQpwZXV0IG5vdGFtbWVudCBhaWRlciDgIGTpdGVjdGVyIHVuZSBzYXR1cmF0aW9uIGRlIHNlcnZldXIsIGRlcyB0cm91YmxlcyBy6XNlYXUsCmRlcyDpcHVpc2VtZW50cyBkZSByZXNzb3VyY2VzIHN5c3TobWUgbG9jYWxlcywgZGVzIGF0dGFxdWVzLCBldGMuLi4KCkxlcyBjb21iaW5haXNvbnMgZCdpbmRpY2F0ZXVycyBsZXMgcGx1cyBmculxdWVudGVzIHNvbnQg6W51bely6WVzIGljaS4KCiAgIEluZGljICBSYWlzb24KICAgICAgQ1IgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhdmFudCBkJ+ltZXR0cmUgdW5lIHJlcXXqdGUgY29tcGzodGUuIElsIGVzdAogICAgICAgICAgdHLocyBwcm9iYWJsZSBxdWUgbGEgcmVxdep0ZSBhaXQg6XTpIHRhcOllIOAgbGEgbWFpbiBkYW5zIHVuIGNsaWVudAogICAgICAgICAgdGVsbmV0IGV0IGFib3J06WUgdHJvcCB09HQuCgogICAgICBjUiAgTGUgdGVtcHMgaW1wYXJ0aSBhdSBjbGllbnQgYSBleHBpcukgYXZhbnQgculjZXB0aW9uIGQndW5lIHJlcXXqdGUKICAgICAgICAgIGNvbXBs6HRlLiBDZWNpIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpCiAgICAgICAgICBzdXIgbGUgY2xpZW50IHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzCiAgICAgICAgICB0cmFuc3BvcnRlciBkZXMgcGFxdWV0cyBlbnRpZXJzLCBvdSBwYXIgZGVzIGNsaWVudHMgcXVpIOludm9pZW50IGRlcwogICAgICAgICAgcmVxdep0ZXMg4CBsYSBtYWluIGV0IG5lIHRhcGVudCBwYXMgYXNzZXogdml0ZS4KCiAgICAgIFNDICBMZSBzZXJ2ZXVyIGEgZXhwbGljaXRlbWVudCByZWZ1c+kgbGEgY29ubmV4aW9uIChsZSBwcm94eSBhIHJl53UgdW4KICAgICAgICAgIFJTVCBUQ1Agb3UgdW4gbWVzc2FnZSBJQ01QIGVuIHJldG91cikuIERhbnMgY2VydGFpbnMgY2FzLCBjZWxhIHBldXQKICAgICAgICAgIOp0cmUgbGEgY291Y2hlIHLpc2VhdSBxdWkgaW5kaXF1ZSBhdSBwcm94eSBxdWUgbGUgc2VydmV1ciBuJ2VzdCBwYXMKICAgICAgICAgIGpvaWduYWJsZSAocC5leDogcGFzIGRlIHJvdXRlLCBwYXMgZGUgculwb25zZSBBUlAgZW4gbG9jYWwsIGV0Yy4uLikKCiAgICAgIHNDICBMYSBjb25uZXhpb24gYXUgc2VydmV1ciBuJ2EgcGFzIHB1IHMn6XRhYmxpciBkYW5zIGxlIHRlbXBzIGltcGFydGkuCgogICAgICBQQyAgTGUgcHJveHkgYSByZWZ1c+kgZCfpdGFibGlyIHVuZSBjb25uZXhpb24gYXUgc2VydmV1ciBwYXJjZSBxdWUgbGUKICAgICAgICAgIG5vbWJyZSBkZSBjb25uZXhpb25zIGEgYXR0ZWludCBsYSBsaW1pdGUgJ21heGNvbm4nIChnbG9iYWwgb3UgZGUKICAgICAgICAgIGwnaW5zdGFuY2UpLiBMZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGwnaW5zdGFuY2UgcG91cnJhaXQg6nRyZQogICAgICAgICAgYXVnbWVudOksIHRvdXQgY29tbWUgbGUgcGFyYW3odHJlICdtYXhjb25uJyBnbG9iYWwuCgogICAgICBSQyAgVW5lIHJlc3NvdXJjZSBsb2NhbGUgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMgc291cmNlKSwKICAgICAgICAgIGVtcOpjaGFudCBsYSBjb25uZXhpb24gYXUgc2VydmV1ciBkZSBzJ+l0YWJsaXIuIExlcyBsb2dzIGQnZXJyZXVycwogICAgICAgICAgZGlyb250IHBy6WNpc+ltZW50IGNlIHF1aSBtYW5xdWFpdC4gRGFucyB0b3VzIGxlcyBjYXMsIGxlIHNldWwgcmVt6GRlCiAgICAgICAgICBjb25zaXN0ZSDgIGFmZmluZXIgbGUgcGFyYW3pdHJhZ2Ugc3lzdOhtZS4KCiAgICAgIGNIICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdSBjb3VycyBkJ3VuZSByZXF16nRlIFBPU1QuIENlY2kKICAgICAgICAgIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpIHN1ciBsZSBjbGllbnQKICAgICAgICAgIHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzIHRyYW5zcG9ydGVyIGRlcwogICAgICAgICAgcGFxdWV0cyBlbnRpZXJzLgoKICAgICAgU0ggIExlIHNlcnZldXIgYSBhYm9ydOkgYnJ1dGFsZW1lbnQgYWxvcnMgcXUnaWwgZGV2YWl0IGVudm95ZXIgc2VzCiAgICAgICAgICBlbi106nRlcy4gRW4gZ+lu6XJhbCwgY2VsYSBpbmRpcXVlIHF1J2lsIGEgY3Jhc2jpLgoKICAgICAgc0ggIExlIHNlcnZldXIgbidhIHBhcyBwdSBy6XBvbmRyZSBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSwgY2UgcXVpIG1vbnRyZQogICAgICAgICAgZGVzIHRyYW5zYWN0aW9ucyB0cm9wIGxvbmd1ZXMsIHByb2JhYmxlbWVudCBjYXVz6WVzIHBhciB1biBiYWNrLWVuZAogICAgICAgICAgc2F0dXLpLiBMZXMgc2V1bGVzIHNvbHV0aW9ucyBzb250IGRlIGNvcnJpZ2VyIGxlIHByb2Js6G1lIHN1cgogICAgICAgICAgbCdhcHBsaWNhdGlvbiwgZCdhY2Nyb+50cmUgbGUgcGFyYW3odHJlICdzcnZ0aW1lb3V0JyBwb3VyIHN1cHBvcnRlcgogICAgICAgICAgZGVzIGF0dGVudGVzIHBsdXMgbG9uZ3VlcyBhdSByaXNxdWUgcXVlIGxlcyBjbGllbnRzIGFiYW5kb25uZW50IOAKICAgICAgICAgIGxldXIgdG91ciwgb3UgYmllbiBkJ2Fqb3V0ZXIgZGVzIHNlcnZldXJzLgogICAgICAKICAgICAgUFIgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCwgc29pdCDgIGNhdXNlIGQndW5lIHN5bnRheGUKICAgICAgICAgIEhUVFAgaW52YWxpZGUsIGF1cXVlbCBjYXMgaWwgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDAgYXUgY2xpZW50LAogICAgICAgICAgc29pdCDgIGNhdXNlIGQndW5lIHJlcXXqdGUgdmFsaWRhbnQgdW4gZmlsdHJlIGQnaW50ZXJkaWN0aW9uLCBhdXF1ZWwKICAgICAgICAgIGNhcyBsZSBwcm94eSBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMy4KCiAgICAgIFBIICBMZSBwcm94eSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1IHNlcnZldXIgcGFyY2UgcXUnZWxsZSDpdGFpdCBpbnZhbGlkZSwKICAgICAgICAgIGluY29tcGzodGUsIGRhbmdlcmV1c2UgKCdjYWNoZSBjb250cm9sJyksIG91IHBhcmNlIHF1J2VsbGUgdmFsaWRhaXQKICAgICAgICAgIHVuIGZpbHRyZSBkZSBz6WN1cml06S4gRGFucyB0b3VzIGxlcyBjYXMsIHVuZSBlcnJldXIgSFRUUCA1MDIgZXN0CiAgICAgICAgICByZW52b3npZSBhdSBjbGllbnQuCgogICAgICBjRCAgTGUgY2xpZW50IG4nYSBwYXMgbHUgZGUgZG9ubullcyBwZW5kYW50IGxlIHRlbXBzIHF1aSBsdWkg6XRhaXQKICAgICAgICAgIGltcGFydGkuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyBwcm9ibOhtZXMgculzZWF1IGP0dOkgY2xpZW50LgoKICAgICAgQ0QgIExlIGNsaWVudCBhIGFib3J06SBzYSBjb25uZWN0aW9uIGRlIG1hbmnocmUgaW5hdHRlbmR1ZSBwZW5kYW50IGxlCiAgICAgICAgICB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuIENlY2kgZXN0IHByb3ZvcXXpIHNvaXQgcGFyIGxlIGNyYXNoIGQndW4KICAgICAgICAgIG5hdmlnYXRldXIsIG91IHBhciB1bmUgc2Vzc2lvbiBlbiBIVFRQIGtlZXAtYWxpdmUgZW50cmUgbGUgc2VydmV1cgogICAgICAgICAgZXQgbGUgY2xpZW50IHRlcm1pbullIGVuIHByZW1pZXIgcGFyIGxlIGNsaWVudC4KCiAgICAgIHNEICBMZSBzZXJ2ZXVyIG4nYSByaWVuIGZhaXQgZHVyYW50IGxlIHRlbXBzIGltcGFydGkgcGFyIGxlIHBhcmFt6HRyZQogICAgICAgICAgJ3NydnRpbWVvdXQnLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgdGltZW91dHMgdHJvcCBjb3VydHMKICAgICAgICAgIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQgKGZpcmV3YWxscywgculwYXJ0aXRldXJzIGRlIGNoYXJnZSkKICAgICAgICAgIHNpdHXpcyBlbnRyZSBsZSBwcm94eSBldCBsZSBzZXJ2ZXVyLgoKNC4yLjUpIENhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjksIGxlcyBjYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcyBuZSBzb250IHBsdXMgZW52b3npcwp0ZWxzIHF1ZWxzIGRhbnMgbGVzIGxpZ25lcyBkZSBsb2dzLCBtYWlzIGluc2NyaXRzIHNvdXMgbGEgZm9ybWUgZGUgZGV1eCBjaGlmZnJlcwpoZXhhZOljaW1hdXgsIHBy6WZpeOlzIGR1IGNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJy4gTGVzIHNldWxzIGNhcmFjdOhyZXMKZG9y6W5hdmFudCBsb2d16XMgdGVscyBxdWVscyBzb250IGNvbXByaXMgZW50cmUgMzIgZXQgMTI2LiBCaWVuIOl2aWRlbW1lbnQsIGxlCmNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJyBlc3QgbHVpLW3qbWUgZW5jb2TpIGFmaW4gZGUgbGV2ZXIgbCdhbWJpZ3VpdOkuIElsIGVuCmVzdCBkZSBt6m1lIHBvdXIgbGUgY2FyYWN06HJlICciJywgYWluc2kgcXVlIGxlcyBjYXJhY3TocmVzICd7JywgJ3wnIGV0ICd9JyBwb3VyCmxlcyBlbi106nRlcy4KCjQuMi42KSBDYXB0dXJlIGQnZW4tdOp0ZXMgSFRUUCBldCBkZSBjb29raWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHZlcnNpb24gMS4xLjIzIGEgYXBwb3J06SBsYSBjYXB0dXJlIGRlcyBjb29raWVzLCBldCBsYSB2ZXJzaW9uIDEuMS4yOSBsYQpjYXB0dXJlIGQnZW4tdOp0ZXMuIFRvdXQgY2VjaSBlc3QgZWZmZWN0dekgZW4gdXRpbGlzYW50IGxlIG1vdC1jbOkgJ2NhcHR1cmUnLgoKTGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMgZmFjaWxpdGVudCBsZSBzdWl2aSBldCBsYSByZWNvbnN0aXR1dGlvbiBkJ3VuZSBzZXNzaW9uCnV0aWxpc2F0ZXVyLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSBjb29raWUgPHBy6WZpeGVfY29va2llPiBsZW4gPGxvbmd1ZXVyX2NhcHR1cmU+CgpDZWNpIGFjdGl2ZXJhIGxhIGNhcHR1cmUgZGUgY29va2llcyDgIGxhIGZvaXMgZGFucyBsZXMgcmVxdep0ZXMgZXQgZGFucyBsZXMKculwb25zZXMuIERlIGNldHRlIG1hbmnocmUsIGlsIGRldmllbnQgZmFjaWxlIGRlIGTpdGVjdGVyIGxvcnNxdSd1biB1dGlsaXNhdGV1cgpiYXNjdWxlIHN1ciB1bmUgbm91dmVsbGUgc2Vzc2lvbiBwYXIgZXhlbXBsZSwgY2FyIGxlIHNlcnZldXIgbHVpIHLpYXNzaWduZXJhIHVuCm5vdXZlYXUgY29va2llLgoKTGUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2VyYSBwYXIgPHBy6WZpeGVfY29va2llPiBzZXJhIGNhcHR1cuksIGV0CnRyYW5zbWlzIHNvdXMgbGEgZm9ybWUgIk5PTT12YWxldXIiLCBzYW5zIHRvdXRlZm9pcywgZXhj6WRlciA8bG9uZ3VldXJfY2FwdHVyZT4KY2FyYWN06HJlcyAoNjQgYXUgbWF4aW11bSkuIExvcnNxdWUgbGUgbm9tIGR1IGNvb2tpZSBlc3QgZml4ZSBldCBjb25udSwgb24gcGV1dApsZSBzdWZmaXhlciBkdSBzaWduZSAiPSIgcG91ciBzJ2Fzc3VyZXIgcXUnYXVjdW4gYXV0cmUgY29va2llIG5lIHByZW5kcmEgc2EKcGxhY2UgZGFucyBsZXMgbG9ncy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlIHBhciAiQVNQU0VTU0lPTiIKICAgIGNhcHR1cmUgY29va2llIEFTUFNFU1NJT04gbGVuIDMyCgogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGVzdCBleGFjdGVtZW50ICJ2Z252aXNpdG9yIgogICAgY2FwdHVyZSBjb29raWUgdmdudmlzaXRvcj0gbGVuIDMyCgpEYW5zIGxlcyBsb2dzLCBsZSBjaGFtcCBwculj6WRhbnQgbCdpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgY29udGllbnQgbGUgY29va2llCnBvc2l0aW9ubukgcGFyIGxlIHNlcnZldXIsIHBy6WPpZOkgZHUgY29va2llIHBvc2l0aW9ubukgcGFyIGxlIGNsaWVudC4gQ2hhY3VuCmRlIGNlcyBjaGFtcHMgZXN0IHJlbXBsYWPpIHBhciBsZSBzaWduZSAiLSIgbG9yc3F1J2F1Y3VuIGNvb2tpZSBuJ2VzdCBmb3VybmkKcGFyIGxlIGNsaWVudCBvdSBsZSBzZXJ2ZXVyLCBvdSBsb3JzcXVlIGwnb3B0aW9uIGVzdCBk6XNhY3RpdullLi4KCkxlcyBjYXB0dXJlcyBkJ2VuLXTqdGVzIG9udCB1biBy9GxlIGNvbXBs6HRlbWVudCBkaWZm6XJlbnQuIEVsbGVzIHNvbnQgdXRpbGVzCnBvdXIgc3VpdnJlIHVuIGlkZW50aWZpYW50IGRlIHJlcXXqdGUgZ2xvYmFsZW1lbnQgdW5pcXVlIHBvc2l0aW9ubukgcGFyIHVuCmF1dHJlIHByb3h5IGVuIGFtb250LCBwb3VyIGpvdXJuYWxpc2VyIGxlcyBub21zIGRlIHNlcnZldXJzIHZpcnR1ZWxzLCBsZXMgdHlwZXMKZGUgY2xpZW50cyB3ZWIsIGxhIGxvbmd1ZXVyIGRlcyBQT1NULCBsZXMgJ3JlZmVycmVycycsIGV0Yy4gRGFucyBsYSBy6XBvbnNlLCBvbgpwZXV0IGNoZXJjaGVyIGRlcyBpbmZvcm1hdGlvbnMgcmVsYXRpdmVzIOAgbGEgbG9uZ3VldXIgYW5ub25j6WUgZGUgbGEgculwb25zZSwKbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSwgb3UgZW5jb3JlIGxhIGxvY2FsaXNhdGlvbiBkJ3VuIG9iamV0IGVuIGNhcwpkZSByZWRpcmVjdGlvbi4gVG91dCBjb21tZSBwb3VyIGxlcyBjYXB0dXJlcyBkZSBjb29raWVzLCBpbCBlc3QgcG9zc2libGUKZCdpbmNsdXJlIGxlcyBlbi106nRlcyBkZSByZXF16nRlcyBldCBkZSBy6XBvbnNlIHNpbXVsdGFu6W1lbnQuIExhIHN5bnRheGUgZXN0CmxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgoKTm90ZTogTGVzIG5vbXMgZCdlbi106nRlcyBuZSBzb250IHBhcyBzZW5zaWJsZXMg4CBsYSBjYXNzZS4KCkV4ZW1wbGVzOgotLS0tLS0tLS0KICAgICMgY29uc2VydmVyIGxlIG5vbSBkdSBzZXJ2ZXVyIHZpcnR1ZWwgYWNj6WTpIHBhciBsZSBjbGllbnQKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICAjIG5vdGVyIGxhIGxvbmd1ZXVyIGRlcyBkb25u6WVzIGVudm956WVzIGRhbnMgdW4gUE9TVAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCgogICAgIyBub3RlciBsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlIHBhciBsZSBzZXJ2ZXVyCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICAjIG5vdGVyIGwnVVJMIGRlIHJlZGlyZWN0aW9uCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCkxlcyBlbi106nRlcyBub24gdHJvdXbpcyBzb250IGxvZ3XpcyDgIHZpZGUsIGV0IHNpIHVuIGVuLXTqdGUgYXBwYXJhaXQgcGx1c2lldXJzCmZvaXMsIHNldWxlIGxhIGRlcm5p6HJlIG9jY3VyZW5jZSBzZXJhIGNvbnNlcnbpZS4gTGVzIGVuLXTqdGVzIGRlIHJlcXXqdGUgc29udApyZWdyb3Vw6XMgZW50cmUgZGV1eCBhY2NvbGFkZXMgJ3snIGV0ICd9JyBkYW5zIGwnb3JkcmUgZGUgbGV1ciBk6WNsYXJhdGlvbiwgZXQKY2hhY3VuIHPpcGFy6XMgcGFyIHVuZSBiYXJyZSB2ZXJ0aWNhbGUgJ3wnLCBzYW5zIGF1Y3VuIGVzcGFjZS4gTGVzIGVuLXTqdGVzIGRlCnLpcG9uc2Ugc29udCBwculzZW506XMgZGUgbGEgbeptZSBtYW5p6HJlLCBtYWlzIGFwcuhzIHVuIGVzcGFjZSBzdWl2YW50IGxlIGJsb2MKZCdlbi106nRlIGRlIHJlcXXqdGUuIExlIHRvdXQgcHLpY+hkZSBsYSByZXF16nRlIEhUVFAuIEV4ZW1wbGUgOgoKICBDb25maWc6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgUmVmZXJlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFNlcnZlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgVmlhIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgogIExvZyA6CgogICAgQXVnICA5IDIwOjI2OjA5IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMTQgWzA5L0F1Zy8yMDA0OjIwOjI2OjA5XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMTYyLysxNjIgMjAwICszNTAgLSAtIC0tLS0ge2ZyLmFkc2VydmVyLnlhaG9vLmNvfHxodHRwOi8vZnIuZjQxNi5tYWlsLn0ge3w4NjR8cHJpdmF0ZXx8fSAiR0VUIGh0dHA6Ly9mci5hZHNlcnZlci55YWhvby5jb20vIgogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjAgWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMTgyLysxODIgMjAwICsyNzkgLSAtIC0tLS0ge3cub2RzLm9yZ3x8fSB7Rm9ybWlsdXgvMC4xLjh8MzQ5NXx8fH0gIkdFVCBodHRwOi8vdy5vZHMub3JnL3N5dGFkaW4uaHRtbCBIVFRQLzEuMSIgCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyOCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMi8xMjYvKzEyOCAyMDAgKzIyMyAtIC0gLS0tLSB7d3d3LmluZm90cmFmaWMuY29tfHxodHRwOi8vdy5vZHMub3JnL3N5dH0ge0FwYWNoZS8yLjAuNDAgKFJlZCBIfDkwNjh8fHx9ICJHRVQgaHR0cDovL3d3dy5pbmZvdHJhZmljLmNvbS9pbWFnZXMvbGl2ZS9jYXJ0ZXNpZGYvZ3JhbmRlcy9pZGZfbmUucG5nIEhUVFAvMS4xIiAKCjQuMi43KSBFeGVtcGxlcyBkZSBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvNy8xNDcvNjcyMyAyMDAgMjQzIC0gLSAtLS0tIDMvNSAiSEVBRCAvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgbG9uZ3VlICg2LjVzKSBzYWlzaWUg4CBsYSBtYWluIGF2ZWMgdW4gY2xpZW50IHRlbG5ldC4gTGUgc2VydmV1ciBhCiAgICAgculwb25kdSBlbiAxNDcgbXMgZXQgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZSBub3JtYWxlbWVudCAoJy0tLS0nKQoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAzLzMgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgcG91ciB1biBsb25nIHRyYW5zZmVydC4gTCdvcHRpb24gJ2xvZ2FzYXAnIOl0YWl0IHNw6WNpZmnpZSBkb25jIGxlCiAgICAgbG9nIGEg6XTpIGfpbuly6SBqdXN0ZSBhdmFudCBsZSB0cmFuc2ZlcnQgZGUgZG9ubullcy4gTGUgc2VydmV1ciBhIHLpcG9uZHUKICAgICBlbiAxNCBtcywgMjQzIG9jdGV0cyBkJ2VuLXTqdGVzIG9udCDpdOkgdHJhbnNm6XLpcyBhdSBjbGllbnQsIGV0IGxlIHRlbXBzCiAgICAgdG90YWwgZW50cmUgbCdhY2NlcHQoKSBldCBsZSBwcmVtaWVyIG9jdGV0IGRlIGRvbm7pZSBlc3QgZGUgMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvMzAgNTAyIDI0MyAtIC0gUEgtLSAyLzMgIkdFVCAvY2dpLWJpbi9idWcuY2dpPyBIVFRQLzEuMCIKICA9PiBsZSBwcm94eSBhIGJsb3F16SB1bmUgculwb25zZSBkdSBzZXJ2ZXVyIHNvaXQg4CBjYXVzZSBkJ3VuIGZpbHRyZSAncnNwZGVueScKICAgICBvdSAncnNwaWRlbnknLCBzb2l0IHBhcmNlIHF1J2lsIGEgZOl0ZWN06SB1biByaXNxdWUgZGUgZnVpdGUgc2Vuc2libGUKICAgICBkJ2luZm9ybWF0aW9ucyByaXNxdWFudCBkJ+p0cmUgY2FjaOllcy4gRGFucyBjZSBjYXMsIGxhIHLpcG9uc2UgZXN0CiAgICAgcmVtcGxhY+llIHBhciAnNTAyIGJhZCBnYXRld2F5Jy4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OCBbMTUvT2N0LzIwMDM6MTU6MTg6NTVdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvODQ5MCAtMSAwIC0gLSBDUi0tIDIvMiAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBhIHJlZmVybekgbGEgY29ubmV4aW9uIGx1aS1t6m1lCiAgICAgKCdDLS0tJykgYXUgYm91dCBkZSA4LjVzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuCiAgICAgQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ5IFsxNS9PY3QvMjAwMzoxNToxOTowNl0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS81MDAwMSA0MDggMCAtIC0gY1ItLSAyLzIgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgc29uIHRpbWUtb3V0IGEgZXhwaXLpICgnYy0tLScpIGF1CiAgICAgYm91dCBkZSA1MHMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4gQXVjdW5lCiAgICAgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIsIG1haXMgbGUgcmVsYWlzIGEgdG91dCBkZSBt6m1lCiAgICAgcHUgcmVudm95ZXIgdW4gbWVzc2FnZSA0MDggYXUgY2xpZW50LgoKLSBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIGNECiAgPT4gbG9nIGVuIG1vZGUgJ3RjcGxvZycuIEV4cGlyYXRpb24gZHUgdGltZS1vdXQgY/R06SBjbGllbnQgKCdjRCcpIGF1IGJvdXQgZGUKICAgICA1cy4KCi0gaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDIwMi8yMDUgIkhFQUQgLyBIVFRQLzEuMCIgCiAgPT4gTGEgcmVxdep0ZSBjbGllbnQgbWV0IDNzIOAgZW50cmVyIChwZXV0Lep0cmUgdW4gcHJvYmzobWUgculzZWF1KSwgZXQgbGEKICAgICBjb25uZXhpb24gKCdTQy0tJykgdmVycyBsZSBzZXJ2ZXVyIOljaG91ZSBhdSBib3V0IGRlIDQgdGVudGF0aXZlcyBkZSAyCiAgICAgc2Vjb25kZXMgKHJldHJpZXMgMyBkYW5zIGxhIGNvbmYpLCBwdWlzIHVuIGNvZGUgNTAzIGVzdCByZXRvdXJu6SBhdSBjbGllbnQuCiAgICAgSWwgeSBhdmFpdCAyMDIgY29ubmV4aW9ucyBzdXIgY2V0dGUgaW5zdGFuY2UsIGV0IDIwNSBzdXIgbCdlbnNlbWJsZSBkZXMKICAgICBpbnN0YW5jZXMgcG91ciBjZSBwcm9jZXNzdXMuIElsIGVzdCBwb3NzaWJsZSBxdWUgbGUgc2VydmV1ciBhaXQgcmVmdXPpIGxhCiAgICAgY29ubmV4aW9uIHBhcmNlIHF1J2lsIHkgZW4gYXZhaXQgZOlq4CB0cm9wIGQn6XRhYmxpZXMuCgoKNC4zKSBNb2RpZmljYXRpb24gZGVzIGVuLXTqdGVzIEhUVFAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAgdW5pcXVlbWVudCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlbXBsYWNlciBjZXJ0YWlucyBlbi106nRlcyBkYW5zIGxhCnJlcXXqdGUgZXQvb3UgbGEgculwb25zZSDgIHBhcnRpciBkJ2V4cHJlc3Npb25zIHLpZ3VsaehyZXMuIElsIGVzdCDpZ2FsZW1lbnQKcG9zc2libGUgZGUgYmxvcXVlciBjZXJ0YWluZXMgcmVxdep0ZXMgZW4gZm9uY3Rpb24gZHUgY29udGVudSBkZXMgZW4tdOp0ZXMgb3UKZGUgbGEgcmVxdep0ZS4gVW5lIGxpbWl0YXRpb24gY2VwZW5kYW50IDogbGVzIGVuLXTqdGVzIGZvdXJuaXMgYXUgbWlsaWV1IGRlCmNvbm5leGlvbnMgcGVyc2lzdGVudGVzIChrZWVwLWFsaXZlKSBuZSBzb250IHBhcyB2dXMgY2FyIGlscyBzb250IGNvbnNpZOly6XMKY29tbWUgZmFpc2FudCBwYXJ0aWUgZGVzIOljaGFuZ2VzIGRlIGRvbm7pZXMgY29uc+ljdXRpZnMg4CBsYSBwcmVtaehyZSByZXF16nRlLgpMZXMgZG9ubullcyBuZSBzb250IHBhcyBhZmZlY3TpZXMsIGNlY2kgbmUgcydhcHBsaXF1ZSBxdSdhdXggZW4tdOp0ZXMuIAoKTGEgc3ludGF4ZSBlc3QgOgogICByZXFhZGQgICAgPHN0cmluZz4gICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcXJlcCAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBwb3VyIG1vZGlmaWVyIGxhIHJlcXXqdGUKICAgcmVxaXJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVsICAgIDxzZWFyY2g+ICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcWlkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWFsbG93ICA8c2VhcmNoPiAgICAgICAgICAgICBhdXRvcmlzZXIgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpYWxsb3cgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZW55ICAgPHNlYXJjaD4gICAgICAgICAgICAgaW50ZXJkaXJlIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxcGFzcyAgIDxzZWFyY2g+ICAgICAgICAgICAgIGluaGliZSBjZXMgYWN0aW9ucyBzdXIgbGVzIGVuLXTqdGVzIHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWlwYXNzICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAxIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6S4gSWwgZXN0IOlnYWxlbWVudCBwb3NzaWJsZSBkJ2luc+lyZXIgdW4gY2FyYWN06HJlIG5vbgppbXByaW1hYmxlICh1dGlsZSBwb3VyIGxlIHNhdXQgZGUgbGlnbmUpIGluc2NyaXZhbnQgJ1x4JyBzdWl2aSBkdSBjb2RlCmhleGFk6WNpbWFsIGRlIGNlIGNhcmFjdOhyZSAoY29tbWUgZW4gQykuCgo8c3RyaW5nPiByZXBy6XNlbnRlIHVuZSBjaGHubmUgcXVpIHNlcmEgYWpvdXTpZSBzeXN06W1hdGlxdWVtZW50IGFwcuhzIGxhCmRlcm5p6HJlIGxpZ25lIGQnZW4tdOp0ZS4KClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSBsYSBwcmVtaehyZSBsaWduZSBkZSBsYSByZXF16nRlIGV0IGNlbGxlIGRlIGxhIHLpcG9uc2Ugc29udCB0cmFpdOllcyBjb21tZQogICAgZGVzIGVuLXTqdGVzLCBjZSBxdWkgcGVybWV0IGRlIHLp6WNyaXJlIGRlcyBVUkwgZXQgZGVzIGNvZGVzIGQnZXJyZXVyLgogIC0gJ3JlcXJlcCcgZXN0IGwn6XF1aXZhbGVudCBkZSAnY2xpZXhwJyBlbiB2ZXJzaW9uIDEuMCwgZXQgJ3JzcHJlcCcgY2VsdWkgZGUKICAgICdzcnZleHAnLiBDZXMgbm9tcyBzb250IHRvdWpvdXJzIHN1cHBvcnTpcyBtYWlzIGTpY29uc2VpbGzpcy4KICAtIHBvdXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBsZSBub21icmUgdG90YWwgZGUgY2FyYWN06HJlcyBham91dOlzIHN1cgogICAgdW5lIHJlcXXqdGUgb3UgdW5lIHLpcG9uc2UgZXN0IGxpbWl06SDgIDQwOTYgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjUgKGNldHRlCiAgICBsaW1pdGUg6XRhaXQg4CAyNTYgYXVwYXJhdmFudCkuIENldHRlIHZhbGV1ciBlc3QgbW9kaWZpYWJsZSBkYW5zIGxlIGNvZGUuCiAgICBQb3VyIHVuIHVzYWdlIHRlbXBvcmFpcmUsIG9uIHBldXQgZ2FnbmVyIGRlIGxhIHBsYWNlIGVuIHN1cHByaW1hbnQgcXVlbHF1ZXMKICAgIGVuLXTqdGVzIGludXRpbGVzIGF2YW50IGxlcyBham91dHMuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDQwMyBmb3JiaWRkZW4iIHRhbmRpcyBxdSd1bmUKICAgIHLpcG9uc2UgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA1MDIgQmFkIGdhdGV3YXkiLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAgICAgIyMjIyMjIGEgZmV3IGV4YW1wbGVzICMjIyMjIwoKICAgICAgICAjIHJld3JpdGUgJ29ubGluZS5mcicgaW5zdGVhZCBvZiAnZnJlZS5mcicgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cwogICAgICAgIHJlcXJlcCAgICAgICAgXihHRVRcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCiAgICAgICAgcmVxcmVwICAgICAgICBeKFBPU1RcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCgogICAgICAgICMgZm9yY2UgcHJveHkgY29ubmVjdGlvbnMgdG8gY2xvc2UKICAgICAgICByZXFpcmVwICAgICAgICBeUHJveHktQ29ubmVjdGlvbjouKiAgICAgICAgUHJveHktQ29ubmVjdGlvbjpcIGNsb3NlCiAgICAgICAgIyByZXdyaXRlIGxvY2F0aW9ucwogICAgICAgIHJzcGlyZXAgICAgICAgIF4oTG9jYXRpb246XCApKFteOl0qOi8vW14vXSopKC4qKSBcMVwzCgogICAgICAgICMjIyMjIyBBIGZ1bGwgY29uZmlndXJhdGlvbiBiZWluZyB1c2VkIG9uIHByb2R1Y3Rpb24gIyMjIyMjCgogICAgICAgICMgRXZlcnkgaGVhZGVyIHNob3VsZCBlbmQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZS4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpbXCBdKiQKCiAgICAgICAgIyBibG9jayBBcGFjaGUgY2h1bmsgZXhwbG9pdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeVHJhbnNmZXItRW5jb2Rpbmc6W1wgXSpjaHVua2VkCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5Ib3N0OlwgYXBhY2hlLQoKICAgICAgICAjIGJsb2NrIGFubm95aW5nIHdvcm1zIHRoYXQgZmlsbCB0aGUgbG9ncy4uLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiooXC58JTJlKShcLnwlMmUpKCUyZnwlNWN8L3xcXFxcKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgKFteXCBdKlwgW15cIF0qXCB8LiolMDApCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKjxzY3JpcHQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qLyhyb290XC5leGVcP3xjbWRcLmV4ZVw/fGRlZmF1bHRcLmlkYVw/KQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQogICAgICAgIG9wdGlvbiAgICAgICAgICAgICAgICBodHRwY2xvcwoKICAgICAgICAjIGNoYW5nZSB0aGUgc2VydmVyIG5hbWUKICAgICAgICByc3BpZGVsICAgICAgICAgXlNlcnZlcjpcIAogICAgICAgIHJzcGFkZCAgICAgICAgICBTZXJ2ZXI6XCBGb3JtaWx1eC8wLjEuOAoKCkRlIHBsdXMsIGwnb3B0aW9uICdmb3J3YXJkZm9yJyBham91dGUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBkYW5zIHVuIGNoYW1wCidYLUZvcndhcmRlZC1Gb3InIGRlIGxhIHJlcXXqdGUsIGNlIHF1aSBwZXJtZXQg4CB1biBzZXJ2ZXVyIHdlYiBmaW5hbCBkZQpjb25uYe50cmUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBpbml0aWFsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCgo0LjQpIFLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIGNvbWJpbmFpc29uIGRlIGwnaW5zZXJ0aW9uIGRlIGNvb2tpZSBhdmVjIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lCnBlcm1ldCBkJ2Fzc3VyZXIgdW5lIHBlcnNpc3RlbmNlIGRhbnMgbGVzIHNlc3Npb25zIEhUVFAgZCd1bmUgbWFuaehyZQpwcmF0aXF1ZW1lbnQgdHJhbnNwYXJlbnRlIHBvdXIgbGVzIGFwcGxpY2F0aW9ucy4gTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6CiAgLSBhdHRyaWJ1ZXIgdW5lIHZhbGV1ciBkJ3VuIGNvb2tpZSDgIGNoYXF1ZSBzZXJ2ZXVyCiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGludGVybmUKICAtIGluc+lyZXIgdW4gY29va2llIGRhbnMgbGVzIHLpcG9uc2VzIGlzc3VlcyBkJ3VuZSBy6XBhcnRpdGlvbiB1bmlxdWVtZW50LAogICAgZXQgZmFpcmUgZW4gc29ydGUgcXVlIGRlcyBjYWNoZXMgbmUgbeltb3Jpc2VudCBwYXMgY2UgY29va2llLgogIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24gbG9ycyBkZXMgcmVxdep0ZXMgdWx06XJpZXVyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKTCdhdXRyZSBzb2x1dGlvbiBhcHBvcnTpZSBwYXIgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMyBlc3QgZGUgcul1dGlsaXNlciB1bgpjb29raWUgZW4gcHJvdmVuYW5jZSBkdSBzZXJ2ZXVyIGV0IGRlIGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIuCkRhbnMgY2UgY2FzLCBuZSBwYXMgb3VibGllciBkZSBmb3JjZXIgbGUgbW9kZSAiaHR0cGNsb3NlIiBwb3VyIGVtcOpjaGVyIGxlCmNsaWVudCBldCBsZSBzZXJ2ZXVyIGRlIHRyYXZhaWxsZXIgZW4gbW9kZSAia2VlcC1hbGl2ZSIgYWZpbiBxdWUgbGUgcHJveHkKcHVpc3NlIGNvcnJpZ2VyIGxlIG5vbSBkdSBjb29raWUgZGFucyB0b3V0ZXMgbGVzIGZ1dHVyZXMgcmVxdep0ZXMuCgogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzcnYxIGNoZWNrCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc3J2MiBjaGVjawogICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKCjQuNSkgUHJvdGVjdGlvbiBjb250cmUgbGVzIGZ1aXRlcyBkJ2luZm9ybWF0aW9ucyBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGVzIHZlcnNpb25zIDEuMS4yOCBldCAxLjIuMSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnY2hlY2tjYWNoZScgYSDpdOkKY3Lp6WUuIEVsbGUgc2VydCDgIGluc3BlY3RlciBtaW51dGlldXNlbWVudCBsZXMgZW4tdOp0ZXMgJ0NhY2hlLWNvbnRyb2wnLAonUHJhZ21hJywgZXQgJ1NldC1jb29raWUnIGRhbnMgbGVzIHLpcG9uc2VzIHNlcnZldXIgcG91ciBk6XRlcm1pbmVyIHMnaWwgeSBhCnVuIHJpc3F1ZSBkZSBjYWNoZXIgdW4gY29va2llIHN1ciB1biBwcm94eSBj9HTpIGNsaWVudC4gUXVhbmQgY2V0dGUgb3B0aW9uIGVzdAphY3RpdullLCBsZXMgc2V1bGVzIHLpcG9uc2VzIHF1aSBwZXV2ZW50IOp0cmUgcmV0b3VybullcyBhdSBjbGllbnQgc29udCA6CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBuJ29udCBwYXMgZCdlbi106nRlICdTZXQtY29va2llJyA7CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBvbnQgdW4gY29kZSBkZSByZXRvdXIgYXV0cmUgcXVlIDIwMCwgMjAzLCAyMDYsIDMwMCwgMzAxLCAKICAgIDQxMCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6SB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgZm9udCBzdWl0ZSDgIHVuZSByZXF16nRlIFBPU1QsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukKICAgIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnUHJhZ21hOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHJpdmF0ZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLXN0b3JlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbWF4LWFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBzLW1heGFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUiJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSwnCiAgICAoYXV0b3Jpc2FudCBkJ2F1dHJlcyBjaGFtcHMgYXBy6HMgc2V0LWNvb2tpZSkuCgpTaSB1bmUgculwb25zZSBuZSByZXNwZWN0ZSBwYXMgY2VzIHBy6S1yZXF1aXMsIGFsb3JzIGVsbGUgc2VyYSBibG9xdellIGRlIGxhCm3qbWUgbWFuaehyZSBxdWUgcydpbCBzJ2FnaXNzYWl0IGQndW4gZmlsdHJlICdyc3BkZW55JywgYXZlYyBlbiByZXRvdXIgdW4KbWVzc2FnZSAiSFRUUCA1MDIgYmFkIGdhdGV3YXkiLiBMJ+l0YXQgZGUgc2Vzc2lvbiBtb250cmUgIlBILS0iIGNlIHF1aSB2ZXV0CmRpcmUgcXVlIGMnZXN0IGxlIHByb3h5IHF1aSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1cmFudCBsZSB0cmFpdGVtZW50IGRlcwplbi106nRlcy4gRGUgcGx1cywgdW4gbWVzc2FnZSBkJ2FsZXJ0ZSBzZXJhIGVudm956SBkYW5zIGxlcyBsb2dzIGRlIHNvcnRlIHF1ZQpsJ2FkbWluaXN0cmF0ZXVyIHNhY2hlIHF1J2lsIHkgYSB1bmUgYWN0aW9uIGNvcnJlY3RyaWNlIOAgZW50cmVwcmVuZHJlLgoKNC42KSBQZXJzb25hbGlzYXRpb24gZGVzIGVycmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbmVzIHNpdHVhdGlvbnMgY29uZHVpc2VudCDgIHJldG91cm5lciB1bmUgZXJyZXVyIEhUVFAgYXUgY2xpZW50IDoKICAtIHJlcXXqdGUgaW52YWxpZGUgb3UgdHJvcCBsb25ndWUgPT4gY29kZSBIVFRQIDQwMAogIC0gcmVxdep0ZSBtZXR0YW50IHRyb3AgZGUgdGVtcHMg4CB2ZW5pciA9PiBjb2RlIEhUVFAgNDA4CiAgLSByZXF16nRlIGludGVyZGl0ZSAoYmxvcXXpZSBwYXIgdW4gcmVxaWRlbnkpID0+IGNvZGUgSFRUUCA0MDMKICAtIGVycmV1ciBpbnRlcm5lIGR1IHByb3h5ID0+IGNvZGUgSFRUUCA1MDAKICAtIGxlIHNlcnZldXIgYSByZXRvdXJu6SB1bmUgculwb25zZSBpbmNvbXBs6HRlIG91IGludmFsaWRlID0+IGNvZGUgSFRUUCA1MDIKICAtIGF1Y3VuIHNlcnZldXIgZGlzcG9uaWJsZSBwb3VyIGNldHRlIHJlcXXqdGUgPT4gY29kZSBIVFRQIDUwMwogIC0gbGUgc2VydmV1ciBuJ2EgcGFzIHLpcG9uZHUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpID0+IGNvZGUgSFRUUCA1MDQKClVuIG1lc3NhZ2UgZCdlcnJldXIgc3VjY2ludCB0aXLpIGRlIGxhIFJGQyBhY2NvbXBhZ25lIGNlcyBjb2RlcyBkZSByZXRvdXIuCkNlcGVuZGFudCwgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjbGllbnTobGUsIG9uIHBldXQgcHLpZulyZXIgcmV0b3VybmVyIGRlcwpwYWdlcyBwZXJzb25uYWxpc+llcy4gQ2VjaSBlc3QgcG9zc2libGUgcGFyIGxlIGJpYWlzIGRlIGxhIGNvbW1hbmRlICJlcnJvcmxvYyI6CgogICAgZXJyb3Jsb2MgPGNvZGVfSFRUUD4gPGxvY2F0aW9uPgoKQXUgbGlldSBkZSBn6W7pcmVyIHVuZSBlcnJldXIgSFRUUCA8Y29kZV9IVFRQPiBwYXJtaSBsZXMgY29kZXMgY2l06XMgY2ktZGVzc3VzLApsZSBwcm94eSBn6W7ocmVyYSB1biBjb2RlIGRlIHJlZGlyZWN0aW9uIHRlbXBvcmFpcmUgKEhUVFAgMzAyKSB2ZXJzIGwnYWRyZXNzZQpkJ3VuZSBwYWdlIHBy6WNpc+llIGRhbnMgPGxvY2F0aW9uPi4gQ2V0dGUgYWRyZXNzZSBwZXV0IOp0cmUgcmVsYXRpdmUgYXUgc2l0ZSwKb3UgYWJzb2x1ZS4gQ29tbWUgY2V0dGUgculwb25zZSBlc3QgdHJh7nTpZSBwYXIgbGUgbmF2aWdhdGV1ciBkdSBjbGllbnQKbHVpLW3qbWUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlIHF1ZSBsJ2FkcmVzc2UgZm91cm5pZSBsdWkgc29pdCBhY2Nlc3NpYmxlLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBlcnJvcmxvYyA0MDAgL2JhZHJlcXVlc3QuaHRtbAogICAgICAgIGVycm9ybG9jIDQwMyAvZm9yYmlkZGVuLmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDggL3Rvb2xvbmcuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMCBodHRwOi8vaGFwcm94eS5kb21haW4ubmV0L2J1Z3JlcG9ydC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAyIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAzIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTA0IGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCgpOb3RlOiBsYSBSRkMyNjE2IHN0aXB1bGUgcXUndW4gY2xpZW50IGRvaXQgcul1dGlsaXNlciBsYSBt6m1lIG3pdGhvZGUgcG91cgphY2PpZGVyIOAgbCdVUkwgZGUgcmVkaXJlY3Rpb24gcXVlIGNlbGxlIHF1aSBsJ2EgcmV0b3VybullLCBjZSBxdWkgcG9zZSBkZXMKcHJvYmzobWVzIGF2ZWMgbGVzIHJlcXXqdGVzIFBPU1QuIExlIGNvZGUgZGUgcmV0b3VyIDMwMyBhIOl06SBjcunpIGV4cHLocyBwb3VyCnLpZ2xlciBjZSBwcm9ibOhtZSwgaW5kaXF1YW50IGF1IGNsaWVudCBxdSdpbCBkb2l0IGFjY+lkZXIg4CBsJ1VSTCByZXRvdXJu6WUKZGFucyBsZSBjaGFtcCBMb2NhdGlvbiBhdmVjIGxhIG3pdGhvZGUgR0VUIHVuaXF1ZW1lbnQuIFNldWxlbWVudCwgY2VydGFpbnMKbmF2aWdhdGV1cnMgYW506XJpZXVycyDgIEhUVFAvMS4xIG5lIGNvbm5haXNzZW50IHBhcyBjZSBjb2RlIGRlIHJldG91ci4gRGUKcGx1cywgbGEgcGx1cGFydCBkZXMgbmF2aWdhdGV1cnMgc2UgY29tcG9ydGVudCBk6WrgIGF2ZWMgbGUgY29kZSAzMDIgY29tbWUgaWxzCmRldnJhaWVudCBsZSBmYWlyZSBhdmVjIGxlIDMwMy4gRG9uYywgZGFucyBsZSBidXQgZGUgbGFpc3NlciBsZSBjaG9peCDgCmwndXRpbGlzYXRldXIsIGxlcyB2ZXJzaW9ucyAxLjEuMzEgZXQgMS4yLjUgYXBwb3J0ZW50IGRldXggbm91dmVsbGVzIGNvbW1hbmRlcwp2aXNhbnQg4CByZW1wbGFjZXIgJ2Vycm9ybG9jJyA6ICdlcnJvcmxvYzMwMicgZXQgJ2Vycm9ybG9jMzAzJy4KCkxldXIgdXNhZ2Ugbm9uIGFtYmln/CBlc3QgcmVjb21tYW5k6SDgIGxhIHBsYWNlIGRlIGxhIGNvbW1hbmRlICdlcnJvcmxvYycgKHF1aQp1dGlsaXNlIHRvdWpvdXJzIDMwMikuIERhbnMgbGUgZG91dGUsIHBy6WbpcmV6IGwndXRpbGlzYXRpb24gZGUgJ2Vycm9ybG9jMzAzJwpk6HMgcXVlIHZvdXMgc2F2ZXogcXVlIHZvcyBjbGllbnRzIHN1cHBvcnRlbnQgbGUgY29kZSBkZSByZXRvdXIgSFRUUCAzMDMuCgo0LjcpIENoYW5nZW1lbnQgZGVzIHZhbGV1cnMgcGFyIGTpZmF1dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxhIHZlcnNpb24gMS4xLjIyIGVzdCBhcHBhcnVlIGxhIG5vdGlvbiBkZSB2YWxldXJzIHBhciBk6WZhdXQsIGNlIHF1aQrpdml0ZSBkZSBy6XDpdGVyIGRlcyBwYXJhbeh0cmVzIGNvbW11bnMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcywgdGVscyBxdWUgbGVzCnRpbWVvdXRzLCBhZHJlc3NlcyBkZSBsb2csIG1vZGVzIGRlIGZvbmN0aW9ubmVtZW50LCBldGMuCgpMZXMgdmFsZXVycyBwYXIgZOlmYXV0IHNvbnQgcG9zaXRpb25u6WVzIGRhbnMgbGEgZGVybmnocmUgc2VjdGlvbiAnZGVmYXVsdHMnCnBy6WPpZGVudCBsJ2luc3RhbmNlIHF1aSBsZXMgdXRpbGlzZXJhLiBPbiBwZXV0IGRvbmMgbWV0dHJlIGF1dGFudCBkZSBzZWN0aW9ucwonZGVmYXVsdHMnIHF1ZSBsJ29uIHZldXQuIElsIGZhdXQganVzdGUgc2UgcmFwcGVsZXIgcXVlIGxhIHBy6XNlbmNlIGQndW5lIHRlbGxlCnNlY3Rpb24gaW1wbGlxdWUgdW5lIGFubnVsYXRpb24gZGUgdG91cyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHBvc2l0aW9ubulzCnBy6WPpZGVtbWVudCwgZGFucyBsZSBidXQgZGUgbGVzIHJlbXBsYWNlci4KCkxhIHNlY3Rpb24gJ2RlZmF1bHRzJyB1dGlsaXNlIGxhIG3qbWUgc3ludGF4ZSBxdWUgbGEgc2VjdGlvbiAnbGlzdGVuJywgYXV4CnBhcmFt6HRyZXMgcHLocyBxdWkgbmUgc29udCBwYXMgc3VwcG9ydOlzLiBMZSBtb3QgY2zpICdkZWZhdWx0cycgcGV1dCBhY2NlcHRlcgp1biBjb21tZW50YWlyZSBlbiBndWlzZSBwYXJhbeh0cmUuCgpEYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xLCBzZXVscyBsZXMgcGFyYW3odHJlcyBzdWl2YW50cyBwZXV2ZW50IOp0cmUKcG9zaXRpb25u6XMgZGFucyB1bmUgc2VjdGlvbiAnZGVmYXVsdHMnIDoKICAtIGxvZyAobGUgcHJlbWllciBldCBsZSBzZWNvbmQpCiAgLSBtb2RlIHsgdGNwLCBodHRwLCBoZWFsdGggfQogIC0gYmFsYW5jZSB7IHJvdW5kcm9iaW4gfQogIC0gZGlzYWJsZWQgKHBvdXIgZOlzYWN0aXZlciB0b3V0ZXMgbGVzIGluc3RhbmNlcyBxdWkgc3VpdmVudCkKICAtIGVuYWJsZWQgKHBvdXIgZmFpcmUgbCdvcOlyYXRpb24gaW52ZXJzZSwgbWFpcyBjJ2VzdCBsZSBjYXMgcGFyIGTpZmF1dCkKICAtIGNvbnRpbWVvdXQsIGNsaXRpbWVvdXQsIHNydnRpbWVvdXQsIGdyYWNlLCByZXRyaWVzLCBtYXhjb25uCiAgLSBvcHRpb24geyByZWRpc3BhdGNoLCB0cmFuc3BhcmVudCwga2VlcGFsaXZlLCBmb3J3YXJkZm9yLCBsb2dhc2FwLCBodHRwY2xvc2UsCiAgICAgICAgICAgICBjaGVja2NhY2hlLCBodHRwbG9nLCB0Y3Bsb2csIGRvbnRsb2dudWxsLCBwZXJzaXN0LCBodHRwY2hrIH0KICAtIHJlZGlzcGF0Y2gsIHJlZGlzcCwgdHJhbnNwYXJlbnQsIHNvdXJjZSB7IGFkZHI6cG9ydCB9CiAgLSBjb29raWUsIGNhcHR1cmUKICAtIGVycm9ybG9jCgpOZSBzb250IHBhcyBzdXBwb3J06XMgZGFucyBjZXR0ZSB2ZXJzaW9uLCBsZXMgYWRyZXNzZXMgZGUgZGlzcGF0Y2ggZXQgbGVzCmNvbmZpZ3VyYXRpb25zIGRlIHNlcnZldXJzLCBhaW5zaSBxdWUgdG91cyBsZXMgZmlsdHJlcyBiYXPpcyBzdXIgbGVzCmV4cHJlc3Npb25zIHLpZ3VsaehyZXMgOgogIC0gZGlzcGF0Y2gsIHNlcnZlciwKICAtIHJlcSosIHJzcCoKCkVuZmluLCBpbCBuJ3kgYSBwYXMgbGUgbW95ZW4sIHBvdXIgbGUgbW9tZW50LCBkJ2ludmFsaWRlciB1biBwYXJhbeh0cmUgYm9vbOllbgpwb3NpdGlvbm7pIHBhciBk6WZhdXQuIERvbmMgc2kgdW5lIG9wdGlvbiBlc3Qgc3DpY2lmaellIGRhbnMgbGVzIHBhcmFt6HRyZXMgcGFyCmTpZmF1dCwgbGUgc2V1bCBtb3llbiBkZSBsYSBk6XNhY3RpdmVyIHBvdXIgdW5lIGluc3RhbmNlLCBjJ2VzdCBkZSBjaGFuZ2VyIGxlcwpwYXJhbeh0cmVzIHBhciBk6WZhdXQgYXZhbnQgbGEgZOljbGFyYXRpb24gZGUgbCdpbnN0YW5jZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIFRDUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMTgwMDAwCiAgICAgICAgc3J2dGltZW91dCAxODAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKICAgICAgICByZWRpc3BhdGNoCgogICAgbGlzdGVuIGFwcF90Y3AxIDEwLjAuMC4xOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjIuMiBiYWNrdXAKICAgIAogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIEhUVFAKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMjAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDIwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBjYXB0dXJlIGNvb2tpZSB1c2VyaWQ9IGxlbiAxMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6KzgwMDAgY29va2llIHNydjIgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKCiAgICBkZWZhdWx0cwogICAgICAgICMgc2VjdGlvbiB2aWRlIHF1aSBhbm51bGUgdG91cyBsZXMgcGFyYW3odGVzIHBhciBk6WZhdXQuCgo9PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6XRyYWdlIHN5c3TobWUgfAo9PT09PT09PT09PT09PT09PT09PT09PQoKU291cyBMaW51eCAyLjQKPT09PT09PT09PT09PT0KCi0tIGN1dCBoZXJlIC0tCiMhL2Jpbi9zaAojIHNldCB0aGlzIHRvIGFib3V0IDI1Ni80TSAoMTYzODQgZm9yIDI1Nk0gbWFjaGluZSkKTUFYRklMRVM9MTYzODQKZWNobyAkTUFYRklMRVMgPiAvcHJvYy9zeXMvZnMvZmlsZS1tYXgKdWxpbWl0IC1uICRNQVhGSUxFUwoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heCBdOyB0aGVuCiAgICAgICAgZWNobyA2NTUzNiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4CmZpCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQgXTsgdGhlbgogICAgICAgICMgMzAgc2Vjb25kcyBmb3IgZmluLCAxNSBmb3IgdGltZSB3YWl0CiAgICAgICAgZWNobyAzMDAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdAogICAgICAgIGVjaG8gMTUwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfdGltZV93YWl0CiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX2ludmFsaWRfc2NhbGUKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfb3V0X29mX3dpbmRvdwpmaQoKZWNobyAxMDI0IDYwOTk5ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2xvY2FsX3BvcnRfcmFuZ2UKZWNobyAzMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZmluX3RpbWVvdXQKZWNobyA0MDk2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfc3luX2JhY2tsb2cKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF90d19idWNrZXRzCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfb3JwaGFucwplY2hvIDMwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfa2VlcGFsaXZlX3RpbWUKZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90d19yZWN5Y2xlCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdGltZXN0YW1wcwplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2VjbgplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3NhY2sKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9kc2FjawoKIyBhdXRvLXR1bmVkIG9uIDIuNAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9tYXgKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fZGVmYXVsdAoKZWNobyAxNjM4NCA2NTUzNiA1MjQyODggPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3JtZW0KZWNobyAxNjM4NCAzNDk1MjAgNjk5MDQwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF93bWVtCgotLSBjdXQgaGVyZSAtLQoKU291cyBGcmVlQlNECj09PT09PT09PT09PQoKVW4gcG9ydCBkZSBIQS1Qcm94eSBzb3VzIEZyZWVCU0QgZXN0IGTpc29ybWFpcyBkaXNwb25pYmxlLCBncuJjZSDgCkNsZW1lbnQgTGFmb3JldCA8c2hlZXBraWxsZXJAY3VsdGRlYWRzaGVlcC5vcmc+LgoKUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zIDoKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvdXJsLmNnaT9wb3J0cy9uZXQvaGFwcm94eS9wa2ctZGVzY3IKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvY3Zzd2ViLmNnaS9wb3J0cy9uZXQvaGFwcm94eS8KaHR0cDovL3d3dy5mcmVzaHBvcnRzLm9yZy9uZXQvaGFwcm94eQoKCi0tIGZpbiAtLQo=