ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA5LzAzCgo9PT09PT09PT09PT09PT09CnwgSW50cm9kdWN0aW9uIHwKPT09PT09PT09PT09PT09PQoKSEFQcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgogIC0gbWFpbnRlbmlyIGRlcyBjbGllbnRzIHN1ciBsZSBib24gc2VydmV1ciBzZXJ2ZXVyIGQnYXBwbGljYXRpb24gZW4gZm9uY3Rpb24KICAgIGRlIGNvb2tpZXMgYXBwbGljYXRpZnMuCiAgLSBmb3VybmlyIGRlcyByYXBwb3J0cyBkJ+l0YXQgZW4gSFRNTCDgIGRlcyB1dGlsaXNhdGV1cnMgYXV0aGVudGlmaelzLCDgCiAgICB0cmF2ZXJzIGRlcyBVUkkgZGUgbCdhcHBsaWNhdGlvbiBpbnRlcmNlcHTpZXMuCgpJbCByZXF1aWVydCBwZXUgZGUgcmVzc291cmNlcywgZXQgc29uIGFyY2hpdGVjdHVyZSDpduluZW1lbnRpZWxsZSBtb25vLQpwcm9jZXNzdXMgbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zCnNpbXVsdGFu6WVzIHN1ciBwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAgICA9ICdtYXhjb25uJyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcKICAgIC1OIDxub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBpbnN0YW5jZT4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zICdsaXN0ZW4nIG91ICdkZWZhdWx0JwogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXNmIHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIEZJTklTSAogICAgLXN0IHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIFRFUk1JTkFURQogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGsgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUga3F1ZXVlKCkKICAgIC1kcyBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpIHNwZWN1bGF0aWYKICAgIC1kZSBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpCiAgICAtZHAgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgcG9sbCgpCiAgICAtZGIgZOlzYWN0aXZlIGxhIG1pc2UgZW4gYXJyaehyZS1wbGFuICh1dGlsZSBwb3VyIGTpYnVnZ2VyKQogICAgLW0gPG1lZ3M+IGFwcGxpcXVlIHVuZSBsaW1pdGF0aW9uIGRlIDxtZWdzPiBNbyBkJ3V0aWxpc2F0aW9uIG3pbW9pcmUKCkxlIG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbiBzaW11bHRhbullcyBwYXIgcHJveHkgZXN0IGxlIHBhcmFt6HRyZSBwYXIKZOlmYXV0IHBvdXIgbGVzIHByb3hpZXMgcG91ciBsZXNxdWVscyBjZSBwYXJhbeh0cmUgbidlc3QgcGFzIHBy6WNpc+kgZGFucyBsZQpmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24uIElsIHMnYWdpdCBkdSBwYXJhbeh0cmUgJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zCidsaXN0ZW4nLgoKTGUgbm9tYnJlIG1heGltYWwgdG90YWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBsaW1pdGUgbGUgbm9tYnJlIGRlCmNvbm5leGlvbnMgVENQIHV0aWxpc2FibGVzIOAgdW4gaW5zdGFudCBkb25u6SBwYXIgbGUgcHJvY2Vzc3VzLCB0b3VzIHByb3hpZXMKY29uZm9uZHVzLiBDZSBwYXJhbeh0cmUgcmVtcGxhY2UgbGUgcGFyYW3odHJlICdtYXhjb25uJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLgoKTGUgbW9kZSBkZWJ1ZyBjb3JyZXNwb25kIOAgbCdvcHRpb24gJ2RlYnVnJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLiBEYW5zIGNlCm1vZGUsIHRvdXRlcyBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zLCBldCB0b3VzIGxlcyDpY2hhbmdlcyBkJ2VuLXTqdGVzIEhUVFAKc29udCBhZmZpY2jpcy4KClBvdXIgZGVidWdnZXIsIGwnb3B0aW9uICctZGInIGVzdCB0cuhzIHByYXRpcXVlIGNhciBlbGxlIGTpc2FjdGl2ZQp0ZW1wb3JhaXJlbWVudCBsZSBtb2RlIGRhZW1vbiBldCBsZSBtb2RlIG11bHRpLXByb2Nlc3N1cy4gTGUgc2VydmljZSBwZXV0IGFsb3JzCup0cmUgYXJy6nTpIHBhciB1biBzaW1wbGUgYXBwdWkgc3VyIEN0cmwtQywgc2FucyBhdm9pciDgIG1vZGlmaWVyIGxhCmNvbmZpZ3VyYXRpb24gbmkg4CBhY3RpdmVyIGxlIG1vZGUgZGVidWcgY29tcGxldC4KCkxlcyBzdGF0aXN0aXF1ZXMgbmUgc29udCBkaXNwb25pYmxlcyBxdWUgc2kgbGUgcHJvZ3JhbW1lIGEg6XTpIGNvbXBpbOkgYXZlYwpsJ29wdGlvbiAiU1RBVFRJTUUiLiBJbCBzJ2FnaXQgcHJpbmNpcGFsZW1lbnQgZGUgZG9ubullcyBicnV0ZXMgbidheWFudApkJ3V0aWxpdOkgcXVlIGxvcnMgZGUgYmVuY2htYXJrcyBwYXIgZXhlbXBsZSwgZXQgc29udCBhbWVu6WVzIOAgZGlzcGFyYWl0cmUuCgpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgbGEgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQuClZvaXIgbGEgc2VjdGlvbiDgIGNlIHN1amV0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB8Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN0cnVjdHVyZQo9PT09PT09PT0KCkwnYW5hbHlzZXVyIGR1IGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBpZ25vcmUgZGVzIGxpZ25lcyB2aWRlcywgbGVzIGVzcGFjZXMsCmxlcyB0YWJ1bGF0aW9ucywgZXQgdG91dCBjZSBxdWkgZXN0IGNvbXByaXMgZW50cmUgbGUgc3ltYm9sZSAnIycgKHMnaWwgbidlc3QKcGFzIHBy6WPpZOkgZCd1biAnXCcpLCBldCBsYSBmaW4gZGUgbGEgbGlnbmUsIGNlIHF1aSBjb25zdGl0dWUgdW4gY29tbWVudGFpcmUuCgpMZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGTpY291cOkgZW4gc2VjdGlvbnMgculw6XLpZXMgcGFyIGRlcyBtb3RzIGNs6XMKdGVscyBxdWUgOgoKICAtICdnbG9iYWwnCiAgLSAnbGlzdGVuJwogIC0gJ2RlZmF1bHRzJwoKVG91cyBsZXMgcGFyYW3odHJlcyBmb250IHLpZulyZW5jZSDgIGxhIHNlY3Rpb24gZOlmaW5pZSBwYXIgbGUgZGVybmllciBtb3QgY2zpCnJlY29ubnUuCgoKMSkgUGFyYW3odHJlcyBnbG9iYXV4Cj09PT09PT09PT09PT09PT09PT09PQoKSWwgcydhZ2l0IGRlcyBwYXJhbeh0cmVzIGFnaXNzYW50IHN1ciBsZSBwcm9jZXNzdXMsIG91IGJpZW4gc3VyIGwnZW5zZW1ibGUgZGVzCnByb3hpZXMuIElscyBzb250IHRvdXMgc3DpY2lmaelzIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gTGVzIHBhcmFt6HRyZXMKc3VwcG9ydOlzIHNvbnQgOgoKICAtIGxvZyA8YWRyZXNzZT4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCiAgLSBtYXhjb25uIDxub21icmU+CiAgLSB1aWQgPGlkZW50aWZpYW50PgogIC0gZ2lkIDxpZGVudGlmaWFudD4KICAtIHVzZXIgPG5vbSBkJ3V0aWxpc2F0ZXVyPgogIC0gZ3JvdXAgPG5vbSBkZSBncm91cGU+CiAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgLSBuYnByb2MgPG5vbWJyZT4KICAtIGRhZW1vbgogIC0gZGVidWcKICAtIG5va3F1ZXVlCiAgLSBub3NlcG9sbAogIC0gbm9lcG9sbAogIC0gbm9wb2xsCiAgLSBxdWlldAogIC0gcGlkZmlsZSA8ZmljaGllcj4KICAtIHVsaW1pdC1uIDxub21icmU+CiAgLSB0dW5lLm1heHBvbGxldmVudHMgPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBEYW5zIGxlIGNhcyBv+SBpbCBuZSBzZXJhaXQgcGFzIHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgcG91ciBsJ3VpZCwgaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBub20gZCd1dGlsaXNhdGV1ciBhcHLocwpsZSBtb3QtY2zpICd1c2VyJy4gRGUgbGEgbeptZSBtYW5p6HJlLCBpbCBlc3QgcG9zc2libGUgZGUgcHLpY2lzZXIgdW4gbm9tIGRlCmdyb3VwZSBhcHLocyBsZSBtb3QtY2zpICdncm91cCcuCgpJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMgdGVscyBxdWUKJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMgcHJvY2Vzc3VzCnV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgICMgd2l0aCB1aWQvZ2lkCiAgICBnbG9iYWwKICAgICAgICB1aWQgICAgICAgIDMwMDAwCiAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKICAgICMgd2l0aCB1c2VyL2dyb3VwCiAgICBnbG9iYWwKICAgICAgICB1c2VyICAgIGhhcHJveHkKICAgICAgICBncm91cCAgIHB1YmxpYwogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKTGUgcGFyYW3odHJlIGRlIGxpZ25lIGRlIGNvbW1hbmRlICctZGInIGluaGliZSBsZXMgb3B0aW9ucyBnbG9iYWxlcyAnZGFlbW9uJwpldCAnbmJwcm9jJyBwb3VyIGZhaXJlIGZvbmN0aW9ubmVyIGxlIHByb2Nlc3N1cyBlbiBtb2RlIG5vcm1hbCwgYXZhbnQtcGxhbi4KClBhciBhaWxsZXVycywgY2VydGFpbnMgbWVzc2FnZXMgZCdhbGVydGUgc29udCB0b3Vqb3VycyBlbnZveelzIHN1ciBsYSBzb3J0aWUKc3RhbmRhcmQsIG3qbWUgZW4gbW9kZSAnZGFlbW9uJy4gUG91ciBuZSBwbHVzIGxlcyB2b2lyIGFpbGxldXJzIHF1ZSBkYW5zIGxlcwpsb2dzLCBpbCBzdWZmaXQgZGUgcGFzc2VyIGVuIG1vZGUgc2lsZW5jaWV1eCBwYXIgbCdham91dCBkZSBsJ29wdGlvbiAncXVpZXQnLgpDZXR0ZSBvcHRpb24gbidhIHBhcyBkJ+lxdWl2YWxlbnQgZW4gbGlnbmUgZGUgY29tbWFuZGUuCgpFbmZpbiwgbGUgbW9kZSAnZGVidWcnIHBlcm1ldCBkZSBkaWFnbm9zdGlxdWVyIGxlcyBvcmlnaW5lcyBkZSBjZXJ0YWlucwpwcm9ibOhtZXMgZW4gYWZmaWNoYW50IGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMgZXQg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCmVudHJlIGxlcyBjbGllbnRzIGV0IGxlcyBzZXJ2ZXVycy4gQ2UgbW9kZSBlc3QgaW5jb21wYXRpYmxlIGF2ZWMgbGVzIG9wdGlvbnMKJ2RhZW1vbicgZXQgJ3F1aWV0JyBwb3VyIGRlcyByYWlzb25zIGRlIGJvbiBzZW5zLgoKMS41KSBBY2Nyb2lzc2VtZW50IGRlIGxhIGNhcGFjaXTpIGRlIHRyYWl0ZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VyIGRlcyBtYWNoaW5lcyBtdWx0aS1wcm9jZXNzZXVycywgaWwgcGV1dCBzZW1ibGVyIGfiY2jpIGRlIG4ndXRpbGlzZXIgcXUndW4KcHJvY2Vzc2V1ciBwb3VyIGVmZmVjdHVlciBsZXMgdOJjaGVzIGRlIHJlbGF5YWdlLCBt6m1lIHNpIGxlcyBjaGFyZ2VzCm7pY2Vzc2FpcmVzIOAgc2F0dXJlciB1biBwcm9jZXNzZXVyIGFjdHVlbCBzb250IGJpZW4gYXUtZGVs4CBkZXMgb3JkcmVzIGRlCmdyYW5kZXVyIGNvdXJhbW1lbnQgcmVuY29udHLpcy4gQ2VwZW5kYW50LCBwb3VyIGRlcyBiZXNvaW5zIHBhcnRpY3VsaWVycywgbGUKcHJvZ3JhbW1lIHNhaXQgZOltYXJyZXIgcGx1c2lldXJzIHByb2Nlc3N1cyBzZSBy6XBhcnRpc3NhbnQgbGEgY2hhcmdlIGRlCnRyYXZhaWwuIENlIG5vbWJyZSBkZSBwcm9jZXNzdXMgZXN0IHNw6WNpZmnpIHBhciBsZSBwYXJhbeh0cmUgJ25icHJvYycgZGUgbGEKc2VjdGlvbiAnZ2xvYmFsJy4gU2EgdmFsZXVyIHBhciBk6WZhdXQgZXN0IG5hdHVyZWxsZW1lbnQgMS4gQ2VjaSBuZSBmb25jdGlvbm5lCnF1J2VuIG1vZGUgJ2RhZW1vbicuIFVuIHVzYWdlIGTpauAgcmVuY29udHLpIHBvdXIgY2UgcGFyYW3odHJlIGZ1dCBkZSBk6XBhc3NlcgpsYSBsaW1pdGUgZGUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyBhbGxvdellIHBhciBwcm9jZXNzdXMgc291cwpTb2xhcmlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jICAgICAgICAyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgogICAgIyBwb3VyIHJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBhdmVjIHVuIGltcGFjdCBtaW5pbWFsIHN1ciBsZSBzZXJ2aWNlLAogICAgIyBldCBzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcyA6CiAgICAjIGhhcHJveHkgLWYgaGFwcm94eS5jZmcgLXAgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCAtc2YgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKCjEuNykgTeljYW5pc21lcyBkZSB0cmFpdGVtZW50cyBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuNSwgaGFwcm94eSBzdXBwb3J0ZSBsZXMgbeljYW5pc21lcyBwb2xsKCkgZXQKZXBvbGwoKS4gU3VyIGxlcyBzeXN0ZW1zIG/5IHNlbGVjdCgpIGVzdCBsaW1pdOkgcGFyIEZEX1NFVFNJWkUgKGNvbW1lIFNvbGFyaXMpLApwb2xsKCkgcGV1dCDqdHJlIHVuZSBhbHRlcm5hdGl2ZSBpbnTpcmVzc2FudGUuIERlcyB0ZXN0cyBkZSBwZXJmb3JtYW5jZQptb250cmVudCBxdWUgbGVzIHBlcmZvcm1hbmNlcyBkZSBwb2xsKCkgbmUgZOljcm9pc3NlbnQgcGFzIGF1c3NpIHZpdGUgcXVlIGxlCm5vbWJyZSBkZSBzb2NrZXRzIGF1Z21lbnRlLCBjZSBxdWkgZW4gZmFpdCB1bmUgc29sdXRpb24gc/tyZSBwb3VyIGxlcyBmb3J0ZXMKY2hhcmdlcy4gQ2VsYSBkaXQsIFNvYWxyaXMgdXRpbGlzZSBk6WrgIHBvbGwoKSBwb3VyIOltdWxlciBzZWxlY3QoKSwgZG9uYyB0YW50CnF1ZSBsZSBub21icmUgZGUgc29ja2V0cyBuZSBk6XBhc3NlIHBhcyBGRF9TRVRTSVpFLCBwb2xsKCkgbmUgZGV2cmFpdCBwYXMKYXBwb3J0ZXIgZGUgcGVyZm9ybWFuY2VzIHN1cHBs6W1lbnRhaXJlcy4gU3VyIGxlcyBzeXN06G1lcyDgIGJhc2UgTGludXgKaW5jbHVhbnQgbGUgcGF0Y2ggZXBvbGwoKSAob3UgdG91cyBsZXMgTGludXggMi42KSwgaGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKQpxdWkgZXN0IGV4dHLobWVtZW50IHJhcGlkZSBpbmTpcGVuZGFtbWVudCBkdSBub21icmUgZGUgc29ja2V0cy4gTGVzIHRlc3RzIHN1cgpoYXByb3h5IG9udCBtb250cukgdW5lIHBlcmZvcm1hbmNlIGNvbnN0YW50ZSBkZSAxIOAgNDAwMDAgc2Vzc2lvbnMgc2ltdWx0YW7pZXMuCkxhIHZlcnNpb24gMS4zLjkgYSBpbnRyb2R1aXQgbGUgc3VwcG9ydCBkZSBrcXVldWUoKSBwb3VyIEZyZWVCU0QvT3BlbkJTRCwgYWluc2kKcXUndW5lIHZhcmlhbnRlIGFwcGVs6WUgInNwZWN1bGF0aXZlIGVwb2xsKCkiIGNvbnNpc3RhbnQg4CB0ZW50ZXIgZCdlZmZlY3R1ZXIKbGVzIG9w6XJhdGlvbnMgZCdlbnRy6WVzL3NvcnRpZXMgYXZhbnQgZGUgY2hh7m5lciBsZXMg6XbpbmVtZW50cyBwYXIgbGVzIGFwcGVscwpzeXN06G1lLgoKQWZpbiBkJ29wdGltaXNlciBsYSBsYXRlbmNlLCBpbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIGxpbWl0ZXIgbGUgbm9tYnJlCmQn6XbpbmVtZW50cyByZW1vbnTpcyDgIGNoYXF1ZSBhcHBlbC4gTGEgbGltaXRlIHBhciBk6WZhdXQgZXN0IGZpeOllIOAgMjAwLiBTaQp1bmUgbGF0ZW5jZSBwbHVzIHBldGl0ZSBlc3QgcmVjaGVyY2jpZSwgaWwgcGV1dCDqdHJlIGp1c3RpZmnpIGQnYWJhaXNzZXIgY2V0dGUKbGltaXRlIHBhciBsJ3V0aWxpc2F0aW9uIGR1IHBhcmFt6HRyZSAndHVuZS5tYXhwb2xsZXZlbnRzJyBkYW5zIGxhIHNlY3Rpb24KJ2dsb2JhbCcuIEwnYXVnbWVudGVyIHBlcm1ldHRyYSBkJ+ljb25vbWlzZXIgdW4gcGV1IGxlIHByb2Nlc3NldXIgZW4gcHLpc2VuY2UKZGUgdHLocyBncmFuZHMgbm9tYnJlcyBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEga3F1ZXVlKCkgb3Ugc3BlY3VsYXRpdmUgZXBvbGwoKSBsb3JzcXVlIGNlIHNlcmEgZGlzcG9uaWJsZSwKcHVpcyBlcG9sbCgpLCBldCBzZSByZXBsaWVyYSBzdXIgcG9sbCgpLCBwdWlzIGVuIGRlcm5pZXIgbGlldSBzdXIgc2VsZWN0KCkuCkNlcGVuZGFudCwgc2kgcG91ciB1bmUgcmFpc29uIHF1ZWxjb25xdWUgaWwgcydhdulyYWl0IG7pY2Vzc2FpcmUgZGUgZOlzYWN0aXZlcgplcG9sbCgpIG91IHBvbGwoKSAocC5leDog4CBjYXVzZSBkJ3VuIGJ1ZyBvdSBqdXN0ZSBwb3VyIGNvbXBhcmVyIGxlcwpwZXJmb3JtYW5jZXMpLCBkZSBub3V2ZWxsZXMgb3B0aW9ucyBnbG9iYWxlcyBvbnQg6XTpIGFqb3V06WVzIGRhbnMgY2UgYnV0IDoKJ25vc2Vwb2xsJywgJ25va3F1ZXVlJywgJ25vZXBvbGwnIGV0ICdub3BvbGwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgIyB1dGlsaXNlciBzZXVsZW1lbnQgc2VsZWN0KCkKICAgICAgICBub2Vwb2xsCiAgICAgICAgbm9wb2xsCiAgICAgICAgdHVuZS5tYXhwb2xsZXZlbnRzIDEwMAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpLCBsZSBwYXJhbeh0cmUgJy1kcCcgZOlzYWN0aXZlIHBvbGwoKSwgJy1kaycga3F1ZXVlKCkKZXQgJy1kcycgZOlzYWN0aXZlIHNwZWN1bGF0aXZlIGVwb2xsKCkuIElscyBzb250IHJlc3BlY3RpdmVtZW50IOlxdWl2YWxlbnRzIOAKJ25vZXBvbGwnLCAnbm9wb2xsJywgJ25va3F1ZXVlJyBldCAnbm9zZXBvbGwnLgoKCjIpIETpZmluaXRpb24gZCd1biBzZXJ2aWNlIGVuIOljb3V0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBzZWN0aW9ucyBkZSBzZXJ2aWNlIGTpYnV0ZW50IHBhciBsZSBtb3QgY2zpICJsaXN0ZW4iIDoKCiAgICBsaXN0ZW4gPG5vbV9pbnN0YW5jZT4gWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgotIDxub21faW5zdGFuY2U+IGVzdCBsZSBub20gZGUgbCdpbnN0YW5jZSBk6WNyaXRlLiBDZSBub20gc2VyYSBlbnZveekgZGFucyBsZXMKICBsb2dzLCBkb25jIGlsIGVzdCBzb3VoYWl0YWJsZSBkJ3V0aWxpc2VyIHVuIG5vbSByZWxhdGlmIGF1IHNlcnZpY2UgcmVsYXnpLgogIEF1Y3VuIHRlc3Qgbidlc3QgZWZmZWN0dekgY29uY2VybmFudCBsJ3VuaWNpdOkgZGUgY2Ugbm9tLCBxdWkgbidlc3QgcGFzCiAgb2JsaWdhdG9pcmUsIG1haXMgZm9ydGVtZW50IHJlY29tbWFuZOllLgoKLSA8YWRyZXNzZV9JUD4gZXN0IGwnYWRyZXNzZSBJUCBzdXIgbGFxdWVsbGUgbGUgcmVsYWlzIGF0dGVuZCBzZXMgY29ubmV4aW9ucy4KICBMJ2Fic2VuY2UgZCdhZHJlc3NlIGFpbnNpIHF1ZSBsJ2FkcmVzc2UgMC4wLjAuMCBzaWduaWZpZW50IHF1ZSBsZXMgY29ubmV4aW9ucwogIHBvdXJyb250IHMnZWZmZWN0dWVyIHN1ciB0b3V0ZXMgbGVzIGFkcmVzc2VzIGRlIGxhIG1hY2hpbmUuCgotIDxwbGFnZV9wb3J0cz4gY29ycmVzcG9uZCBzb2l0IOAgdW4gcG9ydCwgc29pdCDgIHVuZSBwbGFnZSBkZSBwb3J0cyBzdXIKICBsZXNxdWVscyBsZSByZWxhaXMgYWNjZXB0ZXJhIGRlcyBjb25uZXhpb25zIHBvdXIgbCdhZHJlc3NlIElQIHNw6WNpZmnpZS4KICBDZXR0ZSBwbGFnZSBwZXV0IOp0cmUgOgogICAgLSBzb2l0IHVuIHBvcnQgbnVt6XJpcXVlIChleDogJzgwJykKICAgIC0gc29pdCB1bmUgcGxhZ2UgY29uc3RpdHXpZSBkZSBkZXV4IHZhbGV1cnMgc+lwYXLpZXMgcGFyIHVuIHRpcmV0CiAgICAgIChleDogJzIwMDAtMjEwMCcpIHJlcHLpc2VudGFudCBsZXMgZXh0cultaXTpcyBpbmNsdXNlcyBkYW5zIGxhCiAgICAgIHBsYWdlLgogIElsIGZhdXQgZmFpcmUgYXR0ZW50aW9uIOAgbCd1c2FnZSBkZXMgcGxhZ2VzLCBjYXIgY2hhcXVlIGNvbWJpbmFpc29uCiAgPGFkcmVzc2VfSVA+Ojxwb3J0PiBjb25zb21tZSB1bmUgc29ja2V0LCBkb25jIHVuIGRlc2NyaXB0ZXVyIGRlIGZpY2hpZXIuCiAgTGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cG9ydD4gZG9pdCDqdHJlIHVuaXF1ZSBwb3VyIHRvdXRlcyBsZXMgIGluc3RhbmNlcwogIGQndW5lIG3qbWUgbWFjaGluZS4gTCdhdHRhY2hlbWVudCDgIHVuIHBvcnQgaW5m6XJpZXVyIOAgMTAyNCBu6WNlc3NpdGUgdW4KICBuaXZlYXUgZGUgcHJpdmls6GdlIHBhcnRpY3VsaWVyIGxvcnMgZHUgbGFuY2VtZW50IGR1IHByb2dyYW1tZQogIChpbmTpcGVuZGFtbWVudCBkdSBwYXJhbeh0cmUgJ3VpZCcgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJykuCgotIGxlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPiBwZXV0IOp0cmUgculw6XTpIGluZOlmaW5pbWVudCBwb3VyCiAgZGVtYW5kZXIgYXUgcmVsYWlzIGQn6WNvdXRlciDpZ2FsZW1lbnQgc3VyIGQnYXV0cmVzIGFkcmVzc2VzIGV0L291IGQnYXV0cmVzCiAgcGxhZ2VzIGRlIHBvcnRzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkZSBz6XBhcmVyIGxlcyBjb3VwbGVzIHBhciB1bmUgdmlyZ3VsZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgIGxpc3RlbiB4MTFfcHJveHkgMTI3LjAuMC4xOjYwMDAtNjAwOQogICAgbGlzdGVuIHNtdHBfcHJveHkgMTI3LjAuMC4xOjI1LDEyNy4wLjAuMTo1ODcKICAgIGxpc3RlbiBsZGFwX3Byb3h5IDozODksOjY2MwoKU2kgdG91dGVzIGxlcyBhZHJlc3NlcyBuZSB0aWVubmVudCBwYXMgc3VyIHVuZSBsaWduZSwgaWwgZXN0IHBvc3NpYmxlIGQnZW4KcmFqb3V0ZXIg4CBsJ2FpZGUgZHUgbW90IGNs6SAnYmluZCcuIERhbnMgY2UgY2FzLCBpbCBuJ2VzdCBt6m1lIHBhcyBu6WNlc3NhaXJlCmRlIHNw6WNpZmllciBsYSBwcmVtaehyZSBhZHJlc3NlIHN1ciBsYSBsaWduZSBsaXN0ZW4sIGNlIHF1aSBmYWNpbGl0ZSBwYXJmb2lzCmwn6WNyaXR1cmUgZGUgY29uZmlndXJhdGlvbnMgOgoKICAgIGJpbmQgWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIGJpbmQgMTAuMC4wLjE6MTAwODAsMTAuMC4wLjE6MTA0NDMKCjIuMSkgSW5oaWJpdGlvbiBkJ3VuIHNlcnZpY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQg6nRyZSBk6XNhY3RpdukgcG91ciBkZXMgYmVzb2lucyBkZSBtYWludGVuYW5jZSwgc2FucyBhdm9pciDgCmNvbW1lbnRlciB0b3V0ZSB1bmUgcGFydGllIGR1IGZpY2hpZXIuIElsIHN1ZmZpdCBkZSBwb3NpdGlvbm5lciBsZSBtb3QgY2zpCiJkaXNhYmxlZCIgZGFucyBzYSBzZWN0aW9uIDoKCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgZGlzYWJsZWQKClJlbWFycXVlOiBsZSBtb3QgY2zpICdlbmFibGVkJyBwZXJtZXQgZGUgculhY3RpdmVyIHVuIHNlcnZpY2UgcHLpYWxhYmxlbWVudAogICAgICAgICAgZOlzYWN0aXbpIHBhciBsZSBtb3QgY2zpICdkaXNhYmxlZCcsIHBhciBleGVtcGxlIOAgY2F1c2UgZCd1bmUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGFyIGTpZmF1dC4KCjIuMikgTW9kZSBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IGZvbmN0aW9ubmVyIGRhbnMgdHJvaXMgbW9kZXMgZGlmZulyZW50cyA6CiAgLSBUQ1AKICAtIEhUVFAKICAtIOl0YXQgZGUgc2FudOkKCk1vZGUgVENQCi0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUsIGTocyBsZXVyIOl0YWJsaXNzZW1lbnQsIGxlcyBjb25uZXhpb25zIFRDUAp2ZXJzIHVuIG91IHBsdXNpZXVycyBzZXJ2ZXVycy4gQXVjdW4gdHJhaXRlbWVudCBuJ2VzdCBlZmZlY3R16SBzdXIgbGUgZmx1eC4gSWwKcydhZ2l0IHNpbXBsZW1lbnQgZCd1bmUgYXNzb2NpYXRpb24KICAgICBzb3VyY2U8YWRyZXNzZTpwb3J0PiAtPiBkZXN0aW5hdGlvbjxhZHJlc3NlOnBvcnQ+LgpQb3VyIGwndXRpbGlzZXIsIHBy6WNpc2VyIGxlIG1vZGUgVENQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIG1vZGUgdGNwCgpNb2RlIEhUVFAKLS0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUgbGVzIGNvbm5leGlvbnMgVENQIHZlcnMgdW4gb3UgcGx1c2lldXJzCnNlcnZldXJzLCB1bmUgZm9pcyBxdSdpbCBkaXNwb3NlIGQnYXNzZXogZCdpbmZvcm1hdGlvbnMgcG91ciBlbiBwcmVuZHJlIGxhCmTpY2lzaW9uLiBMZXMgZW4tdOp0ZXMgSFRUUCBzb250IGFuYWx5c+lzIHBvdXIgeSB0cm91dmVyIHVuIOl2ZW50dWVsIGNvb2tpZSwgZXQKY2VydGFpbnMgZCdlbnRyZS1ldXggcGV1dmVudCDqdHJlIG1vZGlmaelzIHBhciBsZSBiaWFpcyBkJ2V4cHJlc3Npb25zCnLpZ3VsaehyZXMuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlciBsZSBtb2RlIEhUVFAgc291cyBsYSBk6WNsYXJhdGlvbiBkdQpyZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCgpNb2RlIHN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0KSWwgcydhZ2l0IGQndW4gbW9kZSBvZmZyYW50IOAgdW4gY29tcG9zYW50IGV4dGVybmUgdW5lIHZpc2liaWxpdOkgZGUgbCfpdGF0IGRlCnNhbnTpIGR1IHNlcnZpY2UuIElsIHNlIGNvbnRlbnRlIGRlIHJldG91cm5lciAiT0siIOAgdG91dCBjbGllbnQgc2UgY29ubmVjdGFudApzdXIgc29uIHBvcnQuIElsIHBldXQg6nRyZSB1dGlsaXPpIGF2ZWMgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2Ug6XZvbHXpcyBwb3VyCmTpdGVybWluZXIgcXVlbHMgc29udCBsZXMgc2VydmljZXMgdXRpbGlzYWJsZXMuIFNpIGwnb3B0aW9uICdodHRwY2hrJyBlc3QKYWN0aXbpZSwgYWxvcnMgbGEgculwb25zZSBjaGFuZ2VyYSBlbiAnSFRUUC8xLjAgMjAwIE9LJyBwb3VyIHNhdGlzZmFpcmUgbGVzCmF0dGVudGVzIGRlIGNvbXBvc2FudHMgc2FjaGFudCB0ZXN0ZXIgZW4gSFRUUC4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyCmxlIG1vZGUgSEVBTFRIIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBy6XBvbnNlIHNpbXBsZSA6ICdPSycKICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCgogICAgIyBy6XBvbnNlIEhUVFAgOiAnSFRUUC8xLjAgMjAwIE9LJwogICAgbGlzdGVuIGh0dHBfaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDEKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIG9wdGlvbiBodHRwY2hrCgoKMi4yLjEgU3VwZXJ2aXNpb24KLS0tLS0tLS0tLS0tLS0tLS0KTGVzIHZlcnNpb25zIDEuMS4zMiBldCAxLjIuNiBhcHBvcnRlbnQgdW5lIG5vdXZlbGxlIHNvbHV0aW9uIHBvdXIgdmFsaWRlciBsZQpib24gZm9uY3Rpb25uZW1lbnQgZHUgcHJveHkgc2FucyBwZXJ0dXJiZXIgbGUgc2VydmljZS4gTGUgbW90LWNs6SAnbW9uaXRvci1uZXQnCmEg6XTpIGNy6ekgZGFucyBsZSBidXRkIGRlIHNw6WNpZmllciB1biBy6XNlYXUgZCfpcXVpcGVtZW50cyBxdWkgbmUgUEVVVkVOVCBQQVMKdXRpbGlzZXIgbGUgc2VydmljZSBwb3VyIGF1dHJlIGNob3NlIHF1ZSBkZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQuIEMnZXN0CnBhcnRpY3VsaehyZW1lbnQgYWRhcHTpIGF1eCBwcm94aWVzIFRDUCwgY2FyIGNlbGEgZW1w6mNoZSBsZSBwcm94eSBkZSByZWxheWVyCmRlcyDpdGFibGlzc2VtZW50cyBkZSBjb25uZXhpb24g6W1pcyBwYXIgdW4gb3V0aWwgZGUgc3VydmVpbGxhbmNlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBUQ1AsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUgcHVpcyByZWZlcm3pZQpldCByaWVuIG4nZXN0IGxvZ3XpLiBDJ2VzdCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgZW4gYW1vbnQKZOl0ZWN0ZSBxdWUgbGUgc2VydmljZSBlc3QgZGlzcG9uaWJsZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgSFRUUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSwgcmllbiBuJ2VzdApsb2d16SwgcHVpcyBsYSBy6XBvbnNlIHN1aXZhbnRlIGVzdCBlbnZveellIGV0IGxhIHNlc3Npb24gcmVmZXJt6WUgOgoiSFRUUC8xLjAgMjAwIE9LIi4gQydlc3Qgbm9ybWFsZW1lbnQgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlCkhUVFAgZW4gYW1vbnQgZOl0ZWN0ZSBsZSBzZXJ2aWNlIGNvbW1lIG9w6XJhdGlvbm5lbCwgYXVzc2kgYmllbiDgIHRyYXZlcnMgZGVzCnRlc3RzIFRDUCBxdWUgSFRUUC4KCkxlcyBwcm94aWVzIHV0aWxpc2FudCBsZSBtb3QtY2zpICdtb25pdG9yLW5ldCcgcGV1dmVudCBhY2Nlc3NvaXJlbWVudCBzZSBwYXNzZXIKZGUgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgY2UgcXVpIHBlcm1ldHRyYSBkZSBsb2d1ZXIgbGVzIGNvbm5leGlvbnMgdmlkZXMK6W1pc2VzIGRlcHVpcyBkJ2F1dHJlcyBhZHJlc3NlcyBxdWUgY2VsbGVzIGR1IHLpc2VhdSBkZSB0ZXN0cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gdHNlLXByb3h5CiAgICAgICBiaW5kIDozMzg5LDoxNDk0LDo1OTAwICAjIFRTRSwgSUNBIGFuZCBWTkMgYXQgb25jZS4KICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB0c2UtZmFybSAxOTIuMTY4LjEuMTAKICAgICAgIG1vbml0b3ItbmV0IDE5Mi4xNjguMS4yNTIvMzEgICAjIEw0IGxvYWQtYmFsYW5jZXJzIG9uIC4yNTIgYW5kIC4yNTMKCgpMb3JzcXVlIGxlIHN5c3TobWUgZWZmZWN0dWFudCBsZXMgdGVzdHMgZXN0IHNpdHXpIGRlcnJp6HJlIHVuIHByb3h5LCBsZSBtb3QtY2zpCidtb25pdG9yLW5ldCcgbidlc3QgcGFzIHV0aWxpc2FibGUgZHUgZmFpdCBxdWUgaGFwcm94eSB2ZXJyYSB0b3Vqb3VycyBsYSBt6m1lCmFkcmVzc2UgcG91ciBsZSBwcm94eS4gUG91ciBwYWxsaWVyIOAgY2V0dGUgbGltaXRhdGlvbiwgbGEgdmVyc2lvbiAxLjIuMTUgYQphcHBvcnTpIGxlIG1vdC1jbOkgJ21vbml0b3ItdXJpJy4gSWwgZOlmaW5pdCB1bmUgVVJJIHF1aSBuZSBzZXJhIG5pIHJldHJhbnNtaXNlCm5pIGxvZ+llLCBtYWlzIHBvdXIgbGFxdWVsbGUgaGFwcm94eSByZXRvdXJuZXJhIGltbelkaWF0ZW1lbnQgdW5lIHLpcG9uc2UKIkhUVFAvMS4wIDIwMCBPSyIuIENlbGEgcmVuZCBwb3NzaWJsZXMgbGVzIHRlc3RzIGRlIHZhbGlkaXTpIGQndW5lIGNoYe5uZQpyZXZlcnNlLXByb3h5LT5oYXByb3h5IGVuIHVuZSByZXF16nRlIEhUVFAuIENlbGEgcGV1dCDqdHJlIHV0aWxpc+kgcG91ciB2YWxpZGVyCnVuZSBjb21iaW5haXNpb24gZGUgc3R1bm5lbCtoYXByb3h5IOAgbCdhaWRlIGRlIHRlc3RzIEhUVFBTIHBhciBleGVtcGxlLiBCaWVuCmVudGVuZHUsIGNlIG1vdC1jbOkgbidlc3QgdmFsaWRlIHF1J2VuIG1vZGUgSFRUUCwgc2lub24gaWwgbid5IGEgcGFzIGRlIG5vdGlvbgpkJ1VSSS4gTm90ZXIgcXVlIGxhIG3pdGhvZGUgZXQgbGEgdmVyc2lvbiBIVFRQIHNvbnQgc2ltcGxlbWVudCBpZ25vcullcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gc3R1bm5lbF9iYWNrZW5kIDo4MDgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEwOjgwIGNoZWNrCiAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMTE6ODAgY2hlY2sKICAgICAgIG1vbml0b3ItdXJpIC9oYXByb3h5X3Rlc3QKCgoyLjMpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHBhcmFt6HRyZSAibWF4Y29ubiIgcGVybWV0IGRlIGZpeGVyIGxhIGxpbWl0ZSBhY2NlcHRhYmxlIGVuIG5vbWJyZSBkZQpjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBwcm94eS4gQ2hhcXVlIHByb3h5IHF1aSBhdHRlaW50IGNldHRlIHZhbGV1ciBjZXNzZQpkJ+ljb3V0ZXIganVzcXUn4CBsaWLpcmF0aW9uIGQndW5lIGNvbm5leGlvbi4gVm9pciBwbHVzIGxvaW4gY29uY2VybmFudCBsZXMKbGltaXRhdGlvbnMgbGnpZXMgYXUgc3lzdOhtZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB0aW55X3NlcnZlciAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMAoKCjIuNCkgQXJy6nQgZW4gZG91Y2V1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGQnYXJy6nRlciBsZXMgc2VydmljZXMgZW4gZG91Y2V1ciBlbiBlbnZveWFudCB1biBzaWduYWwKU0lHVVNSMSBhdSBwcm9jZXNzdXMgcmVsYWlzLiBUb3VzIGxlcyBzZXJ2aWNlcyBzZXJvbnQgYWxvcnMgbWlzIGVuIHBoYXNlCmQnYXJy6nQsIG1haXMgcG91cnJvbnQgY29udGludWVyIGQnYWNjZXB0ZXIgZGVzIGNvbm5leGlvbnMgcGVuZGFudCB1biB0ZW1wcwpk6WZpbmkgcGFyIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIChlbiBtaWxsaXNlY29uZGVzKS4gQ2VsYSBwZXJtZXQgcGFyIGV4ZW1wbGUsCmRlIGZhaXJlIHNhdm9pciByYXBpZGVtZW50IOAgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIHF1J2lsIG5lIGRvaXQgcGx1cwp1dGlsaXNlciB1biByZWxhaXMsIHRvdXQgZW4gY29udGludWFudCBkJ2Fzc3VyZXIgbGUgc2VydmljZSBsZSB0ZW1wcyBxdSdpbApzJ2VuIHJlbmRlIGNvbXB0ZS4KClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBhY3RpdmVzIG5lIHNvbnQgamFtYWlzIGNhc3PpZXMuIERhbnMgbGUgcGlyZSBkZXMgY2FzLCBpbCBmYXVkcmEKYXR0ZW5kcmUgZW4gcGx1cyBsZXVyIGV4cGlyYXRpb24gYXZhbnQgbCdhcnLqdCB0b3RhbCBkdSBwcm9jZXNzdXMsIG91IGJpZW4gdHVlcgptYW51ZWxsZW1lbnQgbGUgcHJvY2Vzc3VzIHBhciBsJ2Vudm9pIGQndW4gc2lnbmFsIFNJR1RFUk0uIExhIHZhbGV1ciBwYXIgZOlmYXV0CmR1IHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCAwIChwYXMgZGUgZ3LiY2UsIGFycup0IGltbelkaWF0IGRlIGwn6WNvdXRlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgYXJy6nRlciBlbiBkb3VjZXVyIHBhciAna2lsbGFsbCAtVVNSMSBoYXByb3h5JwogICAgIyBsZSBzZXJ2aWNlIHRvdXJuZXJhIGVuY29yZSAxMCBzZWNvbmRlcyBhcHLocyBsYSBkZW1hbmRlIGQnYXJy6nQKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBncmFjZSAxMDAwMAoKICAgICMgY2UgcG9ydCBuJ2VzdCB0ZXN06SBxdWUgcGFyIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZS4KICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgZ3JhY2UgMAoKQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuOCwgdW4gbm91dmVhdSBt6WNhbmlzbWUgZGUgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQKYSDpdOkgaW50cm9kdWl0LiBJbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIG1ldHRyZSBsZXMgcHJveGllcyBlbiAicGF1c2UiIGVuCmVudm95YW50IHVuIHNpZ25hbCBTSUdUVE9VIGF1eCBwcm9jZXNzdXMuIENlbGEgZOlzYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUKc2FucyBjYXNzZXIgbGVzIHNlc3Npb25zIGV4aXN0YW50ZXMuIFN1aXRlIOAgY2VsYSwgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdUVElOCnLpYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUuIENlY2kgZXN0IHRy6HMgcHJhdGlxdWUgcG91ciB0ZW50ZXIgZGUgY2hhcmdlcgp1bmUgbm91dmVsbGUgY29uZmlndXJhdGlvbiBvdSBt6m1lIHVuZSBub3V2ZWxsZSB2ZXJzaW9uIGRlIGhhcHJveHkgc2FucyBjYXNzZXIKbGVzIGNvbm5leGlvbnMgZXhpc3RhbnRlcy4gU2kgbGUgcmVjaGFyZ2VtZW50IHMnZWZmZWN0dWUgY29ycmVjdGVtZW50LCBpbCBuZQpyZXN0ZSBwbHVzIHF1J+AgZW52b3llciB1biBzaWduYWwgU0lHVVNSMSBhdXggYW5jaWVucyBwcm9jZXNzdXMsIGNlIHF1aQpwcm92b3F1ZXJhIGxldXIgYXJy6nQgaW1t6WRpYXQgZOhzIHF1ZSBsZXVycyBjb25uZXhpb25zIHNlcm9udCB0ZXJtaW7pZXMgOyBlbgpyZXZhbmNoZSwgc2kgbGUgcmVjaGFyZ2VtZW50IOljaG91ZSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwgU0lHVFRJTiBwb3VyCnJlbWV0dHJlIGxlcyBwb3J0cyBlbiDpY291dGUgZXQgcul0YWJsaXIgbGUgc2VydmljZSBpbW3pZGlhdGVtZW50LiBWZXVpbGxlegpub3RlciBxdWUgbGUgcGFyYW3odHJlICdncmFjZScgZXN0IGlnbm9y6SBwb3VyIGxlIHNpZ25hbCBTSUdUVE9VIGFpbnNpIHF1ZSBsZQpzaWduYWwgU0lHVVNSMSB1bmUgZm9pcyBsZSBwcm9jZXNzdXMgZW4gcGF1c2UuIEF1c3NpLCBpbCBwZXV0IHMnYXbpcmVyIHRy6HMKdXRpbGUgZGUgc2F1dmVyIGxlIGZpY2hpZXIgZGUgcGlkIGF2YW50IGRlIGTpbWFycmVyIHVuZSBub3V2ZWxsZSBpbnN0YW5jZS4KCkNlIG3pY2FuaXNtZSBlc3QgcGxlaW5lbWVudCBleHBsb2l06SDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi4xMSBhdmVjIGxlcwpvcHRpb25zICctc3QnIGV0ICctc2YnICh2b2lyIGNpLWRlc3NvdXMpLgoKMi40KSBSZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBwYXJhbeh0cmVzICctc3QnIGV0ICctc2YnIHNvbnQgdXRpbGlz6XMgcG91ciBpbmZvcm1lciBkZXMgcHJvY2Vzc3VzCmV4aXN0YW50cyBxdWUgbGEgY29uZmlndXJhdGlvbiB2YSDqdHJlIHJlY2hhcmfpZS4gSWxzIHJlY2V2cm9udCBsZSBzaWduYWwKU0lHVFRPVSwgbGV1ciBkZW1hbmRhbnQgZGUgbGli6XJlciBsZXMgcG9ydHMgZW4g6WNvdXRlIGFmaW4gcXVlIGxlIG5vdXZlYXUKcHJvY2Vzc3VzIHB1aXNzZSBsZXMgcHJlbmRyZS4gU2kgcXVvaSBxdWUgY2Ugc29pdCBzZSBwYXNzZSBtYWwsIGxlIG5vdXZlYXUKcHJvY2Vzc3VzIGxldXIgZW52ZXJyYSB1biBzaWduYWwgU0lHVFRJTiBwb3VyIGxldXIgaW5kaXF1ZXIgcXUnaWxzIHBldXZlbnQKc2UgcmVtZXR0cmUgZW4g6WNvdXRlIGV0IGNvbnRpbnVlciBsZXVyIHRyYXZhaWwuIEVuIHJldmFuY2hlLCBzaSBsYQpjb25maWd1cmF0aW9uIHNlIGNoYXJnZSBjb3JyZWN0ZW1lbnQsIGFsb3JzIGlscyByZWNldnJvbnQgdW4gc2lnbmFsIGRlIGRlbWFuZGUKZGUgZmluIGRlIHRyYXZhaWwgZW4gZG91Y2V1ciAoLXNmKSwgb3UgZGUgdGVybWluYWlzb24gaW1t6WRpYXRlICgtc3QpIHF1aQpjb3VwZXJhIGxlcyBzZXNzaW9ucyBlbiBjb3Vycy4gVW4gdXNhZ2UgdHlwaXF1ZSB0ZWwgcXVlIGNlbHVpLWNpIHBlcm1ldCBkZQpyZWNoYXJnZXIgdW5lIGNvbmZpZ3VyYXRpb24gc2FucyBpbnRlcnJ1cHRpb24gZGUgc2VydmljZSA6CgogIyBoYXByb3h5IC1wIC92YXIvcnVuL2hhcHJveHkucGlkIC1zZiAkKGNhdCAvdmFyL3J1bi9oYXByb3h5LnBpZCkKCgoyLjUpIFRlbXBzIGQnZXhwaXJhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgcGFyYW3pdHJlciBjZXJ0YWluZXMgZHVy6WVzIGQnZXhwaXJhdGlvbiBhdSBuaXZlYXUgZGVzCmNvbm5leGlvbnMgVENQLiBUcm9pcyB0ZW1wcyBpbmTpcGVuZGFudHMgc29udCBjb25maWd1cmFibGVzIGV0IGFjY2VwdGVudCBkZXMKdmFsZXVycyBlbiBtaWxsaXNlY29uZGVzLiBTaSBsJ3VuZSBkZSBjZXMgdHJvaXMgdGVtcG9yaXNhdGlvbnMgZXN0IGTpcGFzc+llLCBsYQpzZXNzaW9uIGVzdCB0ZXJtaW7pZSDgIGNoYXF1ZSBleHRy6W1pdOkuCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IGNsaWVudCwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogImNsaXRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBjbGllbnQg4CAybW4zMC4KICAgICAgICBjbGl0aW1lb3V0ICAgICAgICAxNTAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogInNydnRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBzZXJ2ZXVyIOAgMzBzLgogICAgICAgIHNydnRpbWVvdXQgICAgICAgIDMwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyCiAgICAiY29udGltZW91dCIgOgoKICAgICAgICAjIG9uIGFiYW5kb25uZSBzaSBsYSBjb25uZXhpb24gbidlc3QgcGFzIOl0YWJsaWUgYXBy6HMgNCBzZWNvbmRlcwogICAgICAgIGNvbnRpbWVvdXQgICAgICAgIDQwMDAKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSAiY29udGltZW91dCIgZXQgInNydnRpbWVvdXQiIG4nb250IHBhcyBkJ3V0aWxpdOkgZGFucyBsZSBjYXMgZHUgc2VydmV1ciBkZQogICAgdHlwZSAiaGVhbHRoIi4KICAtIHNvdXMgZGUgZm9ydGVzIGNoYXJnZXMsIG91IHN1ciB1biBy6XNlYXUgc2F0dXLpIG91IGTpZmVjdHVldXgsIGlsIGVzdAogICAgcG9zc2libGUgZGUgcGVyZHJlIGRlcyBwYXF1ZXRzLiBEdSBmYWl0IHF1ZSBsYSBwcmVtaehyZSByZXRyYW5zbWlzc2lvbgogICAgVENQIG4nYWl0IGxpZXUgcXUnYXUgYm91dCBkZSAzIHNlY291ZGVzLCBmaXhlciB1biB0aW1lb3V0IGRlIGNvbm5leGlvbgogICAgaW5m6XJpZXVyIOAgMyBzZWNvbmRlcyBuZSBwZXJtZXQgcGFzIGRlIHNlIHJhdHRyYXBlciBzdXIgbGEgcGVydGUKICAgIGRlIHBhcXVldHMgY2FyIGxhIHNlc3Npb24gYXVyYSDpdOkgYWJhbmRvbm7pZSBhdmFudCBsYSBwcmVtaehyZQogICAgcmV0cmFuc21pc3Npb24uIFVuZSB2YWxldXIgZGUgNCBzZWNvbmRlcyBy6WR1aXJhIGNvbnNpZOlyYWJsZW1lbnQKICAgIGxlIG5vbWJyZSBkJ+ljaGVjcyBkZSBjb25uZXhpb24uCiAgLSBBIGNvbXB0ZXIgZGUgbGEgdmVyc2lvbiAxLjMuMTQsIGlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgbGVzIGR1cullcwogICAgZCdleHBpcmF0aW9uIGRhbnMgZGVzIHVuaXTpcyBkZSB0ZW1wcyBhcmJpdHJhaXJlcyDgIGNob2lzaXIgcGFybWkKICAgIHsgdXMsIG1zLCBzLCBtLCBoLCBkIH0uIFBvdXIgY2VsYSwgbGEgdmFsZXVyIGVudGnocmUgZG9pdCDqdHJlIHN1ZmZpeOllCiAgICBkZSBsJ3VuaXTpLgoKMi42KSBUZW50YXRpdmVzIGRlIHJlY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMb3JzIGQndW4g6WNoZWMgZGUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ciwgaWwgZXN0IHBvc3NpYmxlIGRlCnJldGVudGVyIChwb3RlbnRpZWxsZW1lbnQgdmVycyB1biBhdXRyZSBzZXJ2ZXVyLCBlbiBjYXMgZGUgculwYXJ0aXRpb24KZGUgY2hhcmdlKS4gTGUgbm9tYnJlIGRlIG5vdXZlbGxlcyB0ZW50YXRpdmVzIGluZnJ1Y3R1ZXVzZXMgYXZhbnQKYWJhbmRvbiBlc3QgZm91cm5pIHBhciBsZSBwYXJhbeh0cmUgInJldHJpZXMiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICMgb24gZXNzYWllIGVuY29yZSB0cm9pcyBmb2lzIG1heGkKICAgICAgICByZXRyaWVzIDMKCklsIGVzdCDgIG5vdGVyIHF1ZSBsYSB0ZW50YXRpdmUgZGUgcmVjb25uZXhpb24gcGV1dCBhbWVuZXIg4CB1dGlsaXNlciB1biBhdXRyZQpzZXJ2ZXVyIHNpIGxlIHByZW1pZXIgYSBkaXNwYXJ1IGVudHJlIGRldXggdGVudGF0aXZlcyBkZSBjb25uZXhpb24uCgoKMi43KSBBZHJlc3NlIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzb250IHJlZGlyaWfpZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGVzdCBk6WZpbmkgcGFyCmxlIHBhcmFt6HRyZSAiZGlzcGF0Y2giIHNvdXMgbGEgZm9ybWUgPGFkcmVzc2VfaXA+Ojxwb3J0Pi4gSWwgY29ycmVzcG9uZCDgIHVuCnNlcnZldXIgZCdhc3NpZ25hdGlvbiBkZSBjb29raWUgZGFucyBsZSBjYXMgb/kgbGUgc2VydmljZSBjb25zaXN0ZSDgIGFzc3VyZXIKdW5pcXVlbWVudCB1bmUgcGVyc2lzdGVuY2UgSFRUUCwgb3UgYmllbiBzaW1wbGVtZW50IGF1IHNlcnZldXIgZGVzdGluYXRpb24gZGFucwpsZSBjYXMgZGUgcmVsYXlhZ2UgVENQIHNpbXBsZS4gQ2V0IGFuY2llbiBtb2RlIG5lIHBlcm1ldCBwYXMgZGUgdGVzdGVyIGwn6XRhdApkdSBzZXJ2ZXVyIGRpc3RhbnQsIGV0IGlsIGVzdCBtYWludGVuYW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciBkZSBwculm6XJlbmNlCmxlIG1vZGUgJ2JhbGFuY2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICAgICMgb24gZW52b2llIHRvdXRlcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgaWNpCiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjI6ODAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpDZSBwYXJhbeh0cmUgbidhIHBhcyBkJ3V0aWxpdOkgcG91ciB1biBzZXJ2ZXVyIGVuIG1vZGUgJ2hlYWx0aCcsIG5pIGVuIG1vZGUKJ2JhbGFuY2UnLgoKCjIuOCkgQWRyZXNzZSBkZSBzb3J0aWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgZm9yY2VyIGwnYWRyZXNzZSB1dGlsaXPpZSBwb3VyIOl0YWJsaXIgbGVzIGNvbm5leGlvbnMgdmVycwpsZXMgc2VydmV1cnMg4CBsJ2FpZGUgZHUgcGFyYW3odHJlICJzb3VyY2UiLiBJbCBlc3QgbeptZSBwb3NzaWJsZSBkZSBmb3JjZXIgbGUKcG9ydCwgYmllbiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgc2UgbGltaXRlIOAgZGVzIHVzYWdlcyB0cuhzIHNw6WNpZmlxdWVzLgpDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIGNhcyBkJ2FkcmVzc2FnZSBtdWx0aXBsZSwgZXQgcGx1cyBn6W7pcmFsZW1lbnQKcG91ciBwZXJtZXR0cmUgYXV4IHNlcnZldXJzIGRlIHRyb3V2ZXIgbGUgY2hlbWluIGRlIHJldG91ciBkYW5zIGRlcyBjb250ZXh0ZXMKZGUgcm91dGFnZSBkaWZmaWNpbGVzLiBTaSBsJ2FkcmVzc2UgZXN0ICcwLjAuMC4wJyBvdSAnKicgb3UgdmlkZSwgZWxsZSBzZXJhCmNob2lzaWUgbGlicmVtZW50IHBhciBsZSBzeXN0ZW1lLiBTaSBsZSBwb3J0IGVzdCAnMCcgb3UgdmlkZSwgaWwgc2VyYSBjaG9pc2kKbGlicmVtZW50IHBhciBsZSBzeXN06G1lLiBJbCBlc3Qg4CBub3RlciBxdWUgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4LCBsZXMKdGVzdHMgZGUgYm9uIGZvbmN0aW9ubmVtZW50IGRlcyBzZXJ2ZXVycyBzZXJvbnQgYXVzc2kgZWZmZWN0delzIOAgcGFydGlyIGRlIGxhCnNvdXJjZSBzcOljaWZp6WUgcGFyIGNlIHBhcmFt6HRyZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgKjo4MAogICAgICAgICAgICMgdG91dGVzIGxlcyBjb25uZXhpb25zIHByZW5uZW50IGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwCiAgICAgICAgc291cmNlIDE5Mi4xNjguMS4yMDA6MAoKICAgIGxpc3RlbiBybG9naW5fcHJveHkgKjo1MTMKICAgICAgICAgICAjIHV0aWxpc2VyIGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwIGV0IGxlIHBvcnQgculzZXJ26SA5MDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDo5MDAKCgoyLjkpIETpZmluaXRpb24gZHUgbm9tIGR1IGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkZSByZWNoZXJjaGVyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwb3VyIHNhdm9pcgp2ZXJzIHF1ZWwgc2VydmV1ciBhaWd1aWxsZXIgbGEgcmVxdep0ZSB1dGlsaXNhdGV1ci4gTGUgbm9tIGR1IGNvb2tpZSBlc3QgZG9ubukKcGFyIGxlIHBhcmFt6HRyZSAiY29va2llIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAoKT24gcGV1dCBtb2RpZmllciBsJ3V0aWxpc2F0aW9uIGR1IGNvb2tpZSBwb3VyIGxhIHJlbmRyZSBwbHVzIGludGVsbGlnZW50ZQp2aXMt4C12aXMgZGVzIGFwcGxpY2F0aW9ucyByZWxheellcy4gSWwgZXN0IHBvc3NpYmxlLCBub3RhbW1lbnQgZGUgc3VwcHJpbWVyIG91CnLp6WNyaXJlIHVuIGNvb2tpZSByZXRvdXJu6SBwYXIgdW4gc2VydmV1ciBhY2PpZOkgZW4gZGlyZWN0LCBldCBkJ2luc+lyZXIgdW4KY29va2llIGRhbnMgdW5lIHLpcG9uc2UgSFRUUCBhZHJlc3PpZSDgIHVuIHNlcnZldXIgc+lsZWN0aW9ubukgZW4gculwYXJ0aXRpb24KZGUgY2hhcmdlLCBldCBt6m1lIGRlIHNpZ25hbGVyIGF1eCBwcm94aWVzIGFtb250IGRlIG5lIHBhcyBjYWNoZXIgbGUgY29va2llCmluc+ly6S4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKUG91ciBuZSBjb25zZXJ2ZXIgbGUgY29va2llIHF1J2VuIGFjY+hzIGluZGlyZWN0LCBkb25jIOAgdHJhdmVycyBsZQpkaXNwYXRjaGV1ciwgZXQgc3VwcHJpbWVyIHRvdXRlcyBzZXMg6XZlbnR1ZWxsZXMgb2NjdXJlbmNlcyBsb3JzIGRlcyBhY2PocwpkaXJlY3RzIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluZGlyZWN0CgpQb3VyIHJlbXBsYWNlciBsYSB2YWxldXIgZCd1biBjb29raWUgZXhpc3RhbnQgcGFyIGNlbGxlIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIsCmxvcnMgZCd1biBhY2PocyBkaXJlY3QgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgcmV3cml0ZQoKUG91ciBjcullciB1biBjb29raWUgY29tcG9ydGFudCBsYSB2YWxldXIgYXR0cmlidellIOAgdW4gc2VydmV1ciBsb3JzIGQndW4KYWNj6HMgZW4gculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIERhbnMgY2UgY2FzLCBpbCBlc3Qgc291aGFpdGFibGUgcXVlCnRvdXMgbGVzIHNlcnZldXJzIGFpZW50IHVuIGNvb2tpZSByZW5zZWlnbukuIFVuIHNlcnZldXIgbm9uIGFzc2lnbukgZCd1biBjb29raWUKcmV0b3VybmVyYSB1biBjb29raWUgdmlkZSAoY29va2llIGRlIHN1cHByZXNzaW9uKSA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQKClBvdXIgcul1dGlsaXNlciB1biBjb29raWUgYXBwbGljYXRpZiBldCBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLApwdWlzIGxlIHN1cHByaW1lciBkYW5zIGxlcyByZXF16nRlcyBzdWl2YW50ZXMsIHV0aWxpc2VyIGwnb3B0aW9uICdwcmVmaXgnLiBFbGxlCnBlcm1ldCBkJ2luc+lyZXIgdW5lIGluc3RhbmNlIGRlIGhhcHJveHkgZGV2YW50IHVuZSBhcHBsaWNhdGlvbiBzYW5zIHJpc3F1ZXIKZCdpbmNvbXBhdGliaWxpdOlzIGT7ZXMg4CBkZXMgY2xpZW50cyBxdWkgbmUgc3VwcG9ydGVyYWllbnQgcGFzIGQnYXBwcmVuZHJlCnBsdXMgZCd1biBjb29raWUgOgoKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSwgZW4gcydhc3N1cmFudCBxdSd1biBjYWNoZSBlbiBhbW9udCBuZSBsZSBzdG9ja2VyYSBwYXMsCmFqb3V0ZXIgbGUgbW90IGNs6SAnbm9jYWNoZScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUKClBvdXIgaW5z6XJlciB1biBjb29raWUgc2V1bGVtZW50IHN1aXRlIGF1eCByZXF16nRlcyBkZSB0eXBlIFBPU1QsIGFqb3V0ZXIgbGUKbW90IGNs6SAncG9zdG9ubHknIGFwcuhzICdpbnNlcnQnIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBwb3N0b25seQoKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCi0gSWwgZXN0IHBvc3NpYmxlIGRlIGNvbWJpbmVyICdpbnNlcnQnIGF2ZWMgJ2luZGlyZWN0JyBvdSAncmV3cml0ZScgcG91cgogIHMnYWRhcHRlciDgIGRlcyBhcHBsaWNhdGlvbnMgZ+lu6XJhbnQgZOlq4CBsZSBjb29raWUsIGF2ZWMgdW4gY29udGVudQogIGludmFsaWRlLiBJbCBzdWZmaXQgcG91ciBjZWxhIGRlIGxlcyBzcOljaWZpZXIgc3VyIGxhIG3qbWUgbGlnbmUuCgotIGRhbnMgbGUgY2FzIG/5ICdpbnNlcnQnIGV0ICdpbmRpcmVjdCcgc29udCBzcOljaWZp6XMsIGxlIGNvb2tpZSBuJ2VzdCBqYW1haXMKICB0cmFuc21pcyBhdSBzZXJ2ZXVyIHZ1IHF1J2lsIG4nZW4gYSBwYXMgY29ubmFpc3NhbmNlIGV0IG5lIHBvdXJyYWl0IHBhcyBsZQogIGNvbXByZW5kcmUuCgotIGlsIGVzdCBwYXJ0aWN1bGnocmVtZW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciAnbm9jYWNoZScgZW4gbW9kZSBpbnNlcnRpb24gc2kKICBkZXMgY2FjaGVzIHBldXZlbnQgc2UgdHJvdXZlciBlbnRyZSBsZXMgY2xpZW50cyBldCBsJ2luc3RhbmNlIGR1IHByb3h5LiBEYW5zCiAgbGUgY2FzIGNvbnRyYWlyZSwgdW4gY2FjaGUgSFRUUCAxLjAgcG91cnJhaXQgY2FjaGVyIGxhIHLpcG9uc2UsIGluY2x1YW50IGxlCiAgY29va2llIGRlIHBlcnNpc3RlbmNlIGluc+ly6SwgZG9uYyBwcm92b3F1ZXIgZGVzIGNoYW5nZW1lbnRzIGRlIHNlcnZldXJzIHBvdXIKICBkZXMgY2xpZW50cyBwYXJ0YWdlYW50IGxlIG3qbWUgY2FjaGUuCgotIGxlIG1vZGUgJ3ByZWZpeCcgbmUgbuljZXNzaXRlIHBhcyBkJ3V0aWxpc2VyICdpbmRpcmVjdCcsICdub2NhY2hlJywgbmkKICAncG9zdG9ubHknLCBjYXIgdG91dCBjb21tZSBsZSBtb2RlICdyZXdyaXRlJywgaWwgcydhcHB1aWUgc3VyIHVuIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsJ2FwcGxpY2F0aW9uIHF1aSBlc3QgY2Vuc+llIHNhdm9pciDgIHF1ZWwgbW9tZW50IGlsIHBldXQKICDqdHJlIOltaXMgc2FucyByaXNxdWUuIFRvdXRlZm9pcywgY29tbWUgaWwgbuljZXNzaXRlIGRlIHJlY3RpZmllciBsZSBjb29raWUKICBwculzZW506SBwYXIgbGUgY2xpZW50IGRhbnMgY2hhcXVlIHJlcXXqdGUgdWx06XJpZXVyZSwgaWwgZXN0IGluZGlzcGVuc2FibGUKICBkZSBzJ2Fzc3VyZXIgcXVlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyIGNvbW11bmlxdWVyb250IHNhbnMgImtlZXAtYWxpdmUKICBIVFRQIi4gRGFucyBsZSBkb3V0ZSwgaWwgZXN0IHJlY29tbWFuZOkgZCd1dGlsaXNlciBsJ29wdGlvbiAiaHR0cGNsb3NlIi4KCi0gbG9yc3F1ZSBsJ2FwcGxpY2F0aW9uIGVzdCBiaWVuIGNvbm51ZSwgZXQgcXVlIGxlcyBwYXJ0aWVzIG7pY2Vzc2l0YW50IGRlIGxhCiAgcGVyc2lzdGVuY2Ugc29udCBzeXN06W1hdGlxdWVtZW50IGFjY+lk6WVzIHBhciB1biBmb3JtdWxhaXJlIGVuIG1vZGUgUE9TVCwKICBpbCBlc3QgcGx1cyBlZmZpY2FjZSBlbmNvcmUgZGUgY29tYmluZXIgbGUgbW90IGNs6SAicG9zdG9ubHkiIGF2ZWMgImluc2VydCIKICBldCAiaW5kaXJlY3QiLCBjYXIgbGEgcGFnZSBkJ2FjY3VlaWwgcmVzdGUgY2FjaGFibGUsIGV0IGMnZXN0IGwnYXBwbGljYXRpb24KICBxdWkgZ+hyZSBsZSAnY2FjaGUtY29udHJvbCcuCgoyLjEwKSBBc3NpZ25hdGlvbiBkJ3VuIHNlcnZldXIg4CB1bmUgdmFsZXVyIGRlIGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGQnYXNzb2NpZXIgZGVzIHZhbGV1cnMgZGUgY29va2llIOAgZGVzIHNlcnZldXJzCnBhciBsZSBwYXJhbeh0cmUgJ3NlcnZlcicuIExhIHN5bnRheGUgZXN0IDoKCiAgICBzZXJ2ZXIgPGlkZW50aWZpYW50PiA8YWRyZXNzZV9pcD46PHBvcnQ+IGNvb2tpZSA8dmFsZXVyPgoKLSA8aWRlbnRpZmlhbnQ+IGVzdCB1biBub20gcXVlbGNvbnF1ZSBkZSBzZXJ2ZXVyIHV0aWxpc+kgcG91ciBsJ2lkZW50aWZpZXIgZGFucyBsYQogIGNvbmZpZ3VyYXRpb24gZXQgbGVzIGxvZ3MuCi0gPGFkcmVzc2VfaXA+Ojxwb3J0PiBlc3QgbGUgY291cGxlIGFkcmVzc2UtcG9ydCBzdXIgbGVxdWVsIGxlIHNlcnZldXIg6WNvdXRlLgotIDx2YWxldXI+IGVzdCBsYSB2YWxldXIg4CByZWNvbm5h7nRyZSBvdSBwb3NpdGlvbm5lciBkYW5zIGxlIGNvb2tpZS4KCkV4ZW1wbGUgOiBsZSBjb29raWUgU0VSVkVSSUQgcGV1dCBjb250ZW5pciBzZXJ2ZXIwMSBvdSBzZXJ2ZXIwMgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkF0dGVudGlvbiA6IGxhIHN5bnRheGUgYSBjaGFuZ+kgZGVwdWlzIGxhIHZlcnNpb24gMS4wLgotLS0tLS0tLS0tLQoKMykgUulwYXJ0aXRldXIgZGUgY2hhcmdlIGF1dG9ub21lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGUgcmVsYWlzIHBldXQgZWZmZWN0dWVyIGx1aS1t6m1lIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBsZXMgZGlmZulyZW50cwpzZXJ2ZXVycyBk6WZpbmlzIHBvdXIgdW4gc2VydmljZSBkb25u6SwgZW4gbW9kZSBUQ1AgY29tbWUgZW4gbW9kZSBIVFRQLiBQb3VyCmNlbGEsIG9uIHBy6WNpc2UgbGUgbW90IGNs6SAnYmFsYW5jZScgZGFucyBsYSBk6WZpbml0aW9uIGR1IHNlcnZpY2UsCul2ZW50dWVsbGVtZW50IHN1aXZpIGR1IG5vbSBkJ3VuIGFsZ29yaXRobWUgZGUgculwYXJ0aXRpb24uIEp1c3F1J+AgbGEgdmVyc2lvbgoxLjIuMTEsIHNldWwgJ3JvdW5kcm9iaW4nIOl0YWl0IGfpcuksIGV0IGMnZXN0IGF1c3NpIGxhIHZhbGV1ciBpbXBsaWNpdGUgcGFyCmTpZmF1dC4gQXZlYyBsYSB2ZXJzaW9uIDEuMi4xMiwgbGUgbm91dmVhdSBtb3QgY2zpICdzb3VyY2UnIGVzdCBhcHBhcnUuIExhCnZlcnNpb24gMS4zLjEwIGEg6WdhbGVtZW50IGFwcG9ydOkgbGUgbW90IGNs6SAndXJpJy4gSWwgZXN0IOl2aWRlbnQgcXUnZW4gY2FzCmQndXRpbGlzYXRpb24gZHUgculwYXJ0aXRldXIgaW50ZXJuZSwgaWwgbmUgZmF1ZHJhIHBhcyBzcOljaWZpZXIgZCdhZHJlc3NlIGRlCmRpc3BhdGNoLCBldCBxdSdpbCBmYXVkcmEgYXUgbW9pbnMgdW4gc2VydmV1ci4KCkV4ZW1wbGUgOiBt6m1lIHF1ZSBwculj6WRlbW1lbnQgZW4gculwYXJ0aXRpb24gaW50ZXJuZQotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGRlIGTpdGVybWluZXIgYXV0b21hdGlxdWVtZW50IGxlIHBvcnQKZHUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzZXJhIGVudm956WUgbGEgY29ubmV4aW9uLCBlbiBmb25jdGlvbiBkdSBwb3J0IGQn6WNvdXRlCnN1ciBsZXF1ZWwgbGUgY2xpZW50IHMnZXN0IGNvbm5lY3TpLiBFbiBlZmZldCwgaWwgeSBhIDQgcG9zc2liaWxpdOlzIHBvdXIgbGUKY2hhbXAgPHBvcnQ+IGRlIGwnYWRyZXNzZSBzZXJ2ZXVyIDoKCiAgLSBub24gc3DpY2lmaekgb3UgbnVsIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbi4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIChzZXVsIGNhcyBzdXBwb3J06SBwb3VyIGxlcyB2ZXJzaW9ucyBhbnTpcmlldXJlcykgOgogICAgbGUgc2VydmV1ciByZWNldnJhIGxhIGNvbm5leGlvbiBzdXIgbGUgcG9ydCBk6XNpZ27pLgoKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnKycgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBhdXF1ZWwgb24gYWpvdXRlIGxhIHZhbGV1ciBk6XNpZ27pZS4KICAgIAogIC0gdmFsZXVyIG51belyaXF1ZSBwculj6WTpZSBkJ3VuIHNpZ25lICctJyA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24sIGR1cXVlbCBvbiBzb3VzdHJhaXQgbGEgdmFsZXVyCiAgICBk6XNpZ27pZS4KICAgIApFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIHNpbXVsdGFu6SBkZXMgcG9ydHMgODAgZXQgODEgZXQgODA4MC04MDg5CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwLDo4MSw6ODA4MC04MDg5CiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIFRDUCBkZXMgcG9ydHMgMjUsIDM4OSBldCA2NjMgdmVycyBsZXMgcG9ydHMgMTAyNSwgMTM4OSBldCAxNjYzCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDozODksOjY2MwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjorMTAwMAoKQ29tbWUgaW5kaXF16SBwculj6WRlbW1lbnQsIGxhIHZlcnNpb24gMS4yLjEyIGFwcG9ydGEgbGUgbm91dmVhdSBtb3QgY2zpCidzb3VyY2UnLiBMb3JzcXVlIGNlbHVpLWNpIGVzdCB1dGlsaXPpLCBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGVzdCBoYWNo6WUgZXQKZGlzdHJpYnXpZSBkZSBtYW5p6HJlIGhvbW9n6G5lIHBhcm1pIGxlcyBzZXJ2ZXVycyBkaXNwb25pYmxlcywgZGUgc29ydGUgcXUndW5lCm3qbWUgYWRyZXNzZSBJUCBhaWxsZSB0b3Vqb3VycyBzdXIgbGUgbeptZSBzZXJ2ZXVyIHRhbnQgcXUnaWwgbid5IGEgYXVjdW4KY2hhbmdlbWVudCBkYW5zIGxlIG5vbWJyZSBkZSBzZXJ2ZXVycyBkaXNwb25pYmxlcy4gQ2VjaSBwZXV0IOp0cmUgdXRpbGlz6SBwYXIKZXhlbXBsZSBwb3VyIGF0dGFjaGVyIGxlIEhUVFAgZXQgbGUgSFRUUFMgc3VyIHVuIG3qbWUgc2VydmV1ciBwb3VyIHVuIG3qbWUKY2xpZW50LiBDZWxhIHBldXQg6WdhbGVtZW50IOp0cmUgdXRpbGlz6SBwb3VyIGFt6Wxpb3JlciBsYSBwZXJzaXN0YW5jZQpsb3JzcXUndW5lIHBhcnRpZSBkZSBsYSBwb3B1bGF0aW9uIGRlcyBjbGllbnRzIG4nYWNjZXB0ZSBwYXMgbGVzIGNvb2tpZXMuIERhbnMKY2UgY2FzLCBzZXVscyBjZXMgZGVybmllcnMgc2Vyb250IHBlcnR1cmLpcyBwYXIgbGEgcGVydGUgZCd1biBzZXJ2ZXVyLgoKTk9URTogaWwgZXN0IGltcG9ydGFudCBkZSBwcmVuZHJlIGVuIGNvbXB0ZSBsZSBmYWl0IHF1ZSBiZWF1Y291cCBkJ2ludGVybmF1dGVzCiAgICAgIG5hdmlndWVudCDgIHRyYXZlcnMgZGVzIGZlcm1lcyBkZSBwcm94aWVzIHF1aSBhc3NpZ25lbnQgZGVzIGFkcmVzc2VzIElQCiAgICAgIGRpZmbpcmVudGVzIOAgY2hhcXVlIHJlcXXqdGUuIEQnYXV0cmVzIGludGVybmF1dGVzIHV0aWxpc2VudCBkZXMgbGllbnMg4AogICAgICBsYSBkZW1hbmRlIGV0IG9idGllbm5lbnQgdW5lIGFkcmVzc2UgSVAgZGlmZulyZW50ZSDgIGNoYXF1ZSBjb25uZXhpb24uIERlCiAgICAgIGNlIGZhaXQsIGxlIHBhcmFt6HRyZSAnc291cmNlJyBkb2l0IOp0cmUgdXRpbGlz6SBhdmVjIHVuZSBleHRy6G1lCiAgICAgIHBy6WNhdXRpb24uCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KCiMgYXNzdXJlciBxdSd1bmUgbeptZSBhZHJlc3NlIElQIGlyYSBzdXIgbGUgbeptZSBzZXJ2ZXVyIHBvdXIgdG91dCBzZXJ2aWNlCgogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDo4MCw6NDQzCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSBzb3VyY2UKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yCgojIGFt6Wxpb3JlciBsYSBwZXJzaXN0YW5jZSBwYXIgbCd1dGlsaXNhdGlvbiBkZSBsYSBzb3VyY2UgZW4gcGx1cyBkdSBjb29raWUgOgoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugc291cmNlCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgpEZSBwbHVzLCB0ZWwgcXUnaW5kaXF16SBjaS1kZXNzdXMsIGxhIHZlcnNpb24gMS4zLjEwIGEgaW50cm9kdWl0IGxlIG1vdCBjbOkKJ3VyaScuIElsIGVzdCB0cuhzIHByYXRpcXVlIGRhbnMgbGUgY2FzIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMKcmV2ZXJzZS1wcm94eS1jYWNoZXMsIHBhcmNlIHF1J2lsIHV0aWxpc2VyYSBsZSBy6XN1bHRhdCBkJ3VuIGhhY2hhZ2UgZGUgbCdVUkkKcG91ciBjaG9pc2lyIHVuIHNlcnZldXIsIGNlIHF1aSBhdXJhIHBvdXIgZWZmZXQgZCdvcHRpbWlzZXIgbGUgdGF1eCBkZSBjYWNoZQpkdSBmYWl0IHF1ZSBsYSBt6m1lIFVSSSBzZXJhIHRvdWpvdXJzIGVudm956WUgYXUgbeptZSBjYWNoZS4gQ2UgbW90LWNs6SBuJ2VzdAphdXRvcmlz6SBxdSdlbiBtb2RlIEhUVFAuCgpFeGFtcGxlIDoKLS0tLS0tLS0tCgojIEVudm9pZSB0b3Vqb3VycyB1bmUgVVJJIGRvbm7pZSBhdSBt6m1lIHNlcnZldXIKCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjMxMjgKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHVyaQogICAgICAgIHNlcnZlciBzcXVpZDEgMTkyLjE2OC4xLjEKICAgICAgICBzZXJ2ZXIgc3F1aWQyIDE5Mi4xNjguMS4yCgpMYSB2ZXJzaW9uIDEuMy4xNCBhIGFwcG9ydOkgdW5lIG5vdXZlbGxlIG3pdGhvZGUgJ2JhbGFuY2UgdXJsX3BhcmFtJy4gRWxsZQpjb25zaXN0ZSDgIHNlIGJhc2VyIHN1ciB1biBwYXJhbeh0cmUgcGFzc+kgZGFucyBsJ1VSTCBwb3VyIGVmZmVjdHVlciB1biBoYWNoYWdlCnV0aWxpc+kgcG91ciBk6XRlcm1pbmVyIGxlIHNlcnZldXIg4CB1dGlsaXNlci4gQ2VjaSBlc3QgcHJpbmNpcGFsZW1lbnQgdXRpbGUKcG91ciBkZXMgYXBwbGljYXRpb25zIG4nYXlhbnQgcGFzIHVuZSBleGlnZW5jZSBzdHJpY3RlIGRlIHBlcnNpc3RhbmNlLCBtYWlzCnBvdXIgbGVzcXVlbGxlcyBlbGxlIHByb2N1cmUgdW4gZ2FpbiBkZSBwZXJmb3JtYW5jZSBub3RhYmxlIGRhbnMgZGVzCmVudmlyb25uZW1lbnRzIG/5IGlsIG4nZXN0IHBhcyB0b3Vqb3VycyBwb3NzaWJsZSBkJ3V0aWxpc2VyIGRlcyBjb29raWVzLiBFbiBjYXMKZCdhYnNlbmNlIGR1IHBhcmFt6HRyZSBkYW5zIGwnVVJMLCBhbG9ycyB1bmUgculwYXJ0aXRpb24gZGUgdHlwZSAncm91bmQgcm9iaW4nCmVzdCBlZmZlY3R16WUuCgpFeGFtcGxlIDoKLS0tLS0tLS0tCgojIGhhY2hlIGxlIHBhcmFt6HRyZSAiYmFza2V0X2lkIiBkYW5zIGwnVVJMIHBvdXIgZOl0ZXJtaW5lciBsZSBzZXJ2ZXVyCgogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDozMTI4CiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSB1cmxfcGFyYW0gYmFza2V0X2lkCiAgICAgICAgc2VydmVyIGViaXoxIDE5Mi4xNjguMS4xCiAgICAgICAgc2VydmVyIGViaXoyIDE5Mi4xNjguMS4yCgoKMy4xKSBTdXJ2ZWlsbGFuY2UgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgdGVzdGVyIGwn6XRhdCBkZXMgc2VydmV1cnMgcGFyIOl0YWJsaXNzZW1lbnQgZGUgY29ubmV4aW9uClRDUCBvdSBwYXIgZW52b2kgZCd1bmUgcmVxdep0ZSBIVFRQLiBVbiBzZXJ2ZXVyIGhvcnMgZCd1c2FnZSBuZSBzZXJhIHBhcwp1dGlsaXPpIGRhbnMgbGUgcHJvY2Vzc3VzIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBQb3VyIGFjdGl2ZXIgbGEKc3VydmVpbGxhbmNlLCBham91dGVyIGxlIG1vdCBjbOkgJ2NoZWNrJyDgIGxhIGZpbiBkZSBsYSBk6WNsYXJhdGlvbiBkdSBzZXJ2ZXVyLgpJbCBlc3QgcG9zc2libGUgZGUgc3DpY2lmaWVyIGwnaW50ZXJ2YWxsZSAoZW4gbWlsbGlzZWNvbmRlcykgc+lwYXJhbnQgZGV1eAp0ZXN0cyBkdSBzZXJ2ZXVyIHBhciBsZSBwYXJhbeh0cmUgImludGVyIiwgbGUgbm9tYnJlIGQn6WNoZWNzIGFjY2VwdOlzIHBhciBsZQpwYXJhbeh0cmUgImZhbGwiLCBldCBsZSBub21icmUgZGUgc3VjY+hzIGF2YW50IHJlcHJpc2UgcGFyIGxlIHBhcmFt6HRyZSAicmlzZSIuCkxlcyBwYXJhbeh0cmVzIG5vbiBwculjaXPpcyBwcmVubmVudCBsZXMgdmFsZXVycyBzdWl2YW50ZXMgcGFyIGTpZmF1dCA6CgogLSBpbnRlciA6IDIwMDAKIC0gcmlzZSAgOiAyCiAtIGZhbGwgIDogMwogLSBwb3J0ICA6IHBvcnQgZGUgY29ubmV4aW9uIGR1IHNlcnZldXIKIC0gYWRkciAgOiBhZHJlc3NlIGRlIGNvbm5leGlvbiBkdSBzZXJ2ZXVyIChwYXIgZGVmYXV0OiBhZHJlc3NlIGR1IHNlcnZldXIpCiAKTGUgbW9kZSBwYXIgZOlmYXV0IGNvbnNpc3RlIOAg6XRhYmxpciBkZXMgY29ubmV4aW9ucyBUQ1AgdW5pcXVlbWVudC4gRGFucwpjZXJ0YWlucyBjYXMgZGUgcGFubmVzLCBkZXMgc2VydmV1cnMgcGV1dmVudCBjb250aW51ZXIg4CBhY2NlcHRlciBsZXMKY29ubmV4aW9ucyBzYW5zIGxlcyB0cmFpdGVyLiBEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTYsIGhhcHJveHkgZXN0IGVuIG1lc3VyZQpkJ2Vudm95ZXIgZGVzIHJlcXXqdGVzIEhUVFAgY291cnRlcyBldCB0cuhzIHBldSBjb/t0ZXVzZXMuIExlcyB2ZXJzaW9ucyAxLjEuMTYKZXQgMS4xLjE3IHV0aWxpc2VudCAiT1BUSU9OUyAvIEhUVFAvMS4wIi4gRGFucyBsZXMgdmVyc2lvbnMgMS4xLjE4IOAgMS4xLjIwLApsZXMgcmVxdep0ZXMgb250IOl06SBjaGFuZ+llcyBlbiAiT1BUSU9OUyAqIEhUVFAvMS4wIiBwb3VyIGRlcyByYWlzb25zIGRlCmNvbnRy9GxlIGQnYWNj6HMgYXV4IHJlc3NvdXJjZXMuIENlcGVuZGFudCwgY2V0dGUgcmVxdep0ZSBkb2N1bWVudOllIGRhbnMgbGEKUkZDMjA2OCBuJ2VzdCBwYXMgY29tcHJpc2UgcGFyIHRvdXMgbGVzIHNlcnZldXJzLiBEb25jIOAgcGFydGlyIGRlIGxhIHZlcnNpb24KMS4xLjIxLCBsYSByZXF16nRlIHBhciBk6WZhdXQgZXN0IHJldmVudWUg4CAiT1BUSU9OUyAvIEhUVFAvMS4wIiwgbWFpcyBpbCBlc3QKcG9zc2libGUgZGUgcGFyYW3pdHJlciBsYSBwYXJ0aWUgVVJJLiBMZXMgcmVxdep0ZXMgT1BUSU9OUyBwculzZW50ZW50CmwnYXZhbnRhZ2UgZCfqdHJlIGZhY2lsZW1lbnQgZXh0cmFjdGlibGVzIGRlcyBsb2dzLCBldCBkZSBuZSBwYXMgaW5kdWlyZQpkJ2FjY+hzIGF1eCBmaWNoaWVycyBj9HTpIHNlcnZldXIuIFNldWxlcyBsZXMgculwb25zZXMgMnh4IGV0IDN4eCBzb250CmNvbnNpZOly6WVzIHZhbGlkZXMsIGxlcyBhdXRyZXMgKHkgY29tcHJpcyBub24tculwb25zZXMpIGFib3V0aXNzZW50IOAgdW4K6WNoZWMuIExlIHRlbXBzIG1heGltYWwgaW1wYXJ0aSBwb3VyIHVuZSBy6XBvbnNlIGVzdCDpZ2FsIOAgbCdpbnRlcnZhbGxlIGVudHJlCmRldXggdGVzdHMgKHBhcmFt6HRyZSAiaW50ZXIiKS4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHNw6WNpZmllciBsJ29wdGlvbgoiaHR0cGNoayIsIOl2ZW50dWVsbGVtZW50IHN1aXZpZSBkJ3VuZSBt6XRob2RlIGV0IGQndW5lIFVSSS4gTCdvcHRpb24gImh0dHBjaGsiCmFjY2VwdGUgZG9uYyA0IGZvcm1lcyA6CgogIC0gb3B0aW9uIGh0dHBjaGsgICAgICAgICAgICAgICAtPiBPUFRJT05TIC8gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIFVSSSAgICAgICAgICAgLT4gT1BUSU9OUyA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgICAgICAtPiA8TUVUSD4gPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJIFZFUiAgLT4gPE1FVEg+IDxVUkk+IDxWRVI+CgpIQVByb3h5IGVzdCBzb3V2ZW50IHV0aWxpc+kgcG91ciByZWxheWVyIGRpdmVycyBwcm90b2NvbGVzIHJlcG9zYW50IHN1ciBUQ1AsCnRlbHMgcXVlIEhUVFBTLCBTTVRQIG91IExEQVAsIGxlIHBsdXMgY29tbXVuIOl0YW50IEhUVFBTLiBVbiBwcm9ibOhtZSBhc3Nlegpjb3VyYW1tZW50IHJlbmNvbnRy6SBkYW5zIGxlcyBkYXRhIGNlbnRlcnMgZXN0IGxlIGJlc29pbiBkZSByZWxheWVyIGR1IHRyYWZpYwp2ZXJzIGRlcyBzZXJ2ZXVycyBsb2ludGFpbnMgdG91dCBlbiBtYWludGVuYW50IGxhIHBvc3NpYmlsaXTpIGRlIGJhc2N1bGVyIHN1cgp1biBzZXJ2ZXVyIGRlIHNlY291cnMuIExlcyB0ZXN0cyBwdXJlbWVudCBUQ1AgbmUgc3VmZmlzZW50IHBhcyB0b3Vqb3VycyBkYW5zCmNlcyBzaXR1YXRpb25zIGNhciBsJ29uIHRyb3V2ZSBzb3V2ZW50LCBkYW5zIGxhIGNoYe5uZSwgZGVzIHByb3hpZXMsIGZpcmV3YWxscwpvdSBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIHF1aSBwZXV2ZW50IGFjcXVpdHRlciBsYSBjb25uZXhpb24gYXZhbnQgcXUnZWxsZQpuJ2F0dGVpZ25lIGxlIHNlcnZldXIuIExhIHNldWxlIHNvbHV0aW9uIOAgY2UgcHJvYmzobWUgZXN0IGQnZW52b3llciBkZXMgdGVzdHMKYXBwbGljYXRpZnMuIENvbW1lIGxhIGRlbWFuZGUgcG91ciBsZXMgdGVzdHMgSFRUUFMgZXN0IOlsZXbpZSwgY2UgdGVzdCBhIOl06QppbXBs6W1lbnTpIGVuIHZlcnNpb24gMS4yLjE1IHN1ciBsYSBiYXNlIGRlIG1lc3NhZ2VzIFNTTHYzIENMSUVOVCBIRUxMTy4gUG91cgpsJ2FjdGl2ZXIsIHV0aWxpc2VyICJvcHRpb24gc3NsLWhlbGxvLWNoayIuIENlY2kgZW52ZXJyYSBkZXMgbWVzc2FnZXMgU1NMdjMKQ0xJRU5UIEhFTExPIGF1eCBzZXJ2ZXVycywgZW4gYW5ub27nYW50IHVuIHN1cHBvcnQgcG91ciBsYSBtYWpvcml06SBkZXMKYWxnb3JpdGhtZXMgZGUgY2hpZmZyZW1lbnQuIFNpIGVuIHJldG91ciwgbGUgc2VydmV1ciBlbnZvaWUgY2UgcXVpIHJlc3NlbWJsZSDgCnVuZSBy6XBvbnNlIFNTTHYzIFNFUlZFUiBIRUxMTyBvdSBBTEVSVCAocmVmdXMgZGVzIGFsZ29yaXRobWVzKSwgYWxvcnMgbGEKculwb25zZSBzZXJhIGNvbnNpZOly6WUgY29tbWUgdmFsaWRlLiBOb3RlciBxdSdBcGFjaGUgbmUgcHJvZHVpdCBwYXMgZGUgbG9nCmxvcnNxdSdpbCByZedvaXQgZGVzIG1lc3NhZ2VzIEhFTExPLCBjZSBxdWkgZW4gZmFpdCB1biB0eXBlIGRlIG1lc3NhZ2UKcGFyZmFpdGVtZW50IGFkYXB06SDgIGNlIGJlc29pbi4KCkxhIHZlcnNpb24gMS4zLjEwIGVzdCBhY2NvbXBhZ27pZSBkJ3VuIG5vdXZlYXUgdGVzdCBkJ+l0YXQgcG91ciBsZSBTTVRQLiBQYXIKZOlmYXV0LCBpbCBjb25zaXN0ZSDgIGVudm95ZXIgIkhFTE8gbG9jYWxob3N0IiBhdXggc2VydmV1cnMsIGV0IOAgYXR0ZW5kcmUgbGUKbWVzc2FnZSAiMjUwIiBlbiByZXRvdXIuIE5vdGV6IHF1J2lsIHBldXQgYXVzc2kgZW52b3llciB1bmUgcmVxdep0ZSBwbHVzCnNw6WNpZmlxdWUgOgoKICAtIG9wdGlvbiBzbXRwY2hrICAgICAgICAgICAgICAgICAgICAgICAgIC0+IGVudm9pZSAiSEVMTyBsb2NhbGhvc3QiCiAgLSBvcHRpb24gc210cGNoayBFSExPIG1haWwubXlkb21haW4uY29tICAtPiBlbnZvaWUgY2UgbWVzc2FnZSBFU01UUAoKVm9pciBsZXMgZXhlbXBsZXMgY2ktYXBy6HMuICAgICAgICAKCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIGTpZmluaXIgZGVzIHNlcnZldXJzIGRlIHNlY291cnMsCnV0aWxpc+lzIHVuaXF1ZW1lbnQgbG9yc3F1J2F1Y3VuIGRlcyBhdXRyZXMgc2VydmV1cnMgbmUgZm9uY3Rpb25uZS4gUG91ciBjZWxhLApham91dGVyIGxlIG1vdCBjbOkgImJhY2t1cCIgc3VyIGxhIGxpZ25lIGRlIGTpZmluaXRpb24gZHUgc2VydmV1ci4gVW4gc2VydmV1cgpkZSBzZWNvdXJzIG4nZXN0IGFwcGVs6SBxdWUgbG9yc3F1ZSB0b3VzIGxlcyBzZXJ2ZXVycyBub3JtYXV4LCBhaW5zaSBxdWUgdG91cwpsZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBxdWkgbGUgcHLpY+hkZW50IHNvbnQgaG9ycyBkJ3VzYWdlLiBJbCBuJ3kgYSBkb25jIHBhcwpkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgZW50cmUgZGVzIHNlcnZldXJzIGRlIHNlY291cnMgcGFyIGTpZmF1dC4gQSBwYXJ0aXIKZGUgbGEgdmVyc2lvbiAxLjIuOSwgaWwgZXN0IHBvc3NpYmxlIGRlIGxlcyB1dGlsaXNlciBzaW11bHRhbultZW50IGdy4mNlIOAKbCdvcHRpb24gJ2FsbGJhY2t1cHMnLiBDZSB0eXBlIGRlIHNlcnZldXJzIHBldXQgc2VydmlyIOAgcmV0b3VybmVyIGRlcyBwYWdlcwpkJ2luZGlzcG9uaWJpbGl06SBkZSBzZXJ2aWNlLiBEYW5zIGNlIGNhcywgaWwgZXN0IHBy6WbpcmFibGUgZGUgbmUgcGFzIGFmZmVjdGVyCmRlIGNvb2tpZSwgYWZpbiBxdWUgbGVzIGNsaWVudHMgcXVpIGxlIHJlbmNvbnRyZW50IG4neSBzb2llbnQgcGFzIGFmZmVjdOlzCmTpZmluaXRpdmVtZW50LiBMZSBmYWl0IGRlIG5lIHBhcyBtZXR0cmUgZGUgY29va2llIGVudm9pZSB1biBjb29raWUgdmlkZSwgY2UKcXVpIGEgcG91ciBlZmZldCBkZSBzdXBwcmltZXIgdW4g6XZlbnR1ZWwgY29va2llIGFmZmVjdOkgcHLpY+lkZW1tZW50LgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjIyLCBpbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudAp2ZXJzIHVuIHBvcnQgZGlmZulyZW50IGRlIGNlbHVpIGRlIHNlcnZpY2UuIEMnZXN0IG7pY2Vzc2FpcmUgcHJpbmNpcGFsZW1lbnQKcG91ciBsZXMgY29uZmlndXJhdGlvbnMgb/kgbGUgc2VydmV1ciBuJ2EgcGFzIGRlIHBvcnQgcHLpZOlmaW5pLCBwYXIgZXhlbXBsZQpsb3JzcXUnaWwgZXN0IGTpZHVpdCBkdSBwb3J0IGQnYWNjZXB0YXRpb24gZGUgbGEgY29ubmV4aW9uLiBQb3VyIGNlbGEsIHV0aWxpc2VyCmxlIHBhcmFt6HRyZSAncG9ydCcgc3VpdmkgZHUgbnVt6XJvIGRlIHBvcnQgZGV2YW50IHLpcG9uZHJlIGF1eCByZXF16nRlcy4gSWwKZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQgdmVycyB1bmUgYWRyZXNzZSBkaWZm6XJlbnRlIApkZSBjZWxsZSBkZSBzZXJ2aWNlLiBDZWxhIHBlcm1ldCBkJ3V0aWxpc2VyLCBzdXIgbGEgbWFjaGluZSBmYWlzYW50IGZvbmN0aW9ubmVyCkhBcHJveHksIHVuIGTpbW9uIHBlcm1ldHRhbnQgZGVzIHRlc3RzIHNwZWNpZmlxdWVzICggUkVHRVggc3VyIHVuIHLpc3VsdGF0IGV0CmJhc2N1bGVtZW50IGRlIHBsdXNpZXVycyBmZXJtZXMgZW4gY2FzIGQnZXJyZXVyIHN1ciBsJ3VuZSBkJ2VsbGVzKS4KCkVuZmluLCBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSB2aXN1YWxpc2VyIHJhcGlkZW1lbnQKbCfpdGF0IGNvdXJhbnQgZGUgdG91cyBsZXMgc2VydmV1cnMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwKU0lHSFVQIGF1IHByb2Nlc3N1cyBwcm94eS4gTCfpdGF0IGRlIHRvdXMgbGVzIHNlcnZldXJzIGRlIHRvdXMgbGVzIHByb3hpZXMgZXN0CmVudm956SBkYW5zIGxlcyBsb2dzIGVuIG5pdmVhdSAibm90aWNlIiwgYWluc2kgcXVlIHN1ciBsYSBzb3J0aWUgZCdlcnJldXJzIHNpCmVsbGUgZXN0IGFjdGl2ZS4gQydlc3QgdW5lIGJvbm5lIHJhaXNvbiBwb3VyIGF2b2lyIGF1IG1vaW5zIHVuIHNlcnZldXIgZGUgbG9ncwpsb2NhbCBlbiBuaXZlYXUgbm90aWNlLgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4IChldCAxLjIuMSksIHVuIG1lc3NhZ2UgZCd1cmdlbmNlIGVzdCBlbnZveekgZGFucyBsZXMKbG9ncyBlbiBuaXZlYXUgJ2VtZXJnJyBzaSB0b3VzIGxlcyBzZXJ2ZXVycyBkJ3VuZSBt6m1lIGluc3RhbmNlIHNvbnQgdG9tYulzLAphZmluIGRlIG5vdGlmaWVyIGwnYWRtaW5pc3RyYXRldXIgcXUnaWwgZmF1dCBwcmVuZHJlIHVuZSBhY3Rpb24gaW1t6WRpYXRlLgoKRGVwdWlzIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIHBsdXNpZXVycyBzZXJ2ZXVycyBwZXV2ZW50IHBhcnRhZ2VyIGxhCm3qbWUgdmFsZXVyIGRlIGNvb2tpZS4gQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBtb2RlIGJhY2t1cCwgcG91cgpz6WxlY3Rpb25uZXIgZGVzIGNoZW1pbnMgYWx0ZXJuYXRpZnMgcG91ciB1biBzZXJ2ZXVyIGRvbm7pLCBwb3VyIG1ldHRyZSBlbgpvZXV2cmUgbCdhcnLqdCBlbiBkb3VjZXVyIGQndW4gc2VydmV1ciwgb3UgcG91ciBkaXJpZ2VyIGxlcyBjbGllbnRzCnRlbXBvcmFpcmVtZW50IHZlcnMgdW5lIHBhZ2UgZCdlcnJldXIgZW4gYXR0ZW5kYW50IGxlIHJlZOltYXJyYWdlIGQndW5lCmFwcGxpY2F0aW9uLiBMZSBwcmluY2lwZSBlc3QgcXVlIGxvcnNxdSd1biBzZXJ2ZXVyIGVzdCBk6XRlY3TpIGNvbW1lIGlub3DpcmFudCwKbGUgcHJveHkgY2hlcmNoZXJhIGxlIHByb2NoYWluIHNlcnZldXIgcG9zc+lkYW50IGxhIG3qbWUgdmFsZXVyIGRlIGNvb2tpZSBwb3VyCmNoYXF1ZSBjbGllbnQgcXVpIGxlIGRlbWFuZGVyYS4gUydpbCBuZSB0cm91dmUgcGFzIGRlIHNlcnZldXIgbm9ybWFsLCBhbG9ycyBpbApsZSBjaGVyY2hlcmEgcGFybWkgbGVzIHNlcnZldXJzIGRlIGJhY2t1cC4gQ29uc3VsdGVyIGxlIGd1aWRlIGQnYXJjaGl0ZWN0dXJlCnBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQojIGNvbmYgZHUgcGFyYWdyYXBoZSAzKSBhdmVjIHN1cnZlaWxsYW5jZSBUQ1AKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50IGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdPUFRJT05TIC8gSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50IGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdPUFRJT05TIC9pbmRleC5odG1sIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrIC9pbmRleC5odG1sCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIGlkZW0gYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ0hFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDogd3d3JwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBy6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlIGJhc+llIHN1ciBsZSBwculmaXhlIGRlIGNvb2tpZSwgZXQgYXJy6nQgZW4KIyBkb3VjZXVyIHV0aWxpc2FudCB1biBzZWNvbmQgcG9ydCAoODEpIGp1c3RlIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgIHNlcnZlciB3ZWIxLW5vcm0gMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrIHBvcnQgODEKICAgICAgIHNlcnZlciB3ZWIyLW5vcm0gMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODEKICAgICAgIHNlcnZlciB3ZWIxLXN0b3AgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrIHBvcnQgODAgYmFja3VwCiAgICAgICBzZXJ2ZXIgd2ViMi1zdG9wIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgwIGJhY2t1cAoKIyBJbnNlcnRpb24gYXV0b21hdGlxdWUgZGUgY29va2llIGRhbnMgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBldCBzdXBwcmVzc2lvbgojIGF1dG9tYXRpcXVlIGRhbnMgbGEgcmVxdep0ZSwgdG91dCBlbiBpbmRpcXVhbnQgYXV4IGNhY2hlcyBkZSBuZSBwYXMgZ2FyZGVyCiMgY2UgY29va2llLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCiMgaWRlbSBhdmVjIHNlcnZldXIgYXBwbGljYXRpZiBkZSBzZWNvdXJzIHN1ciBhdXRyZSBzaXRlLCBldCBzZXJ2ZXVyIGRlIHBhZ2VzIGQnZXJyZXVycwogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cCAxOTIuMTY4LjIuMTo4MCBjb29raWUgc2VydmVyMDMgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgojIHJlbGF5YWdlIFNNVFArVExTIGF2ZWMgdGVzdCBkdSBzZXJ2ZXVyIGV0IHNlcnZldXIgZGUgYmFja3VwCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDo1ODcKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgMjUgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKIyByZWxheWFnZSBIVFRQUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo0NDMKICAgICAgICBtb2RlIHRjcAoJb3B0aW9uIHNzbC1oZWxsby1jaGsKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgojIFV0aWxpc2F0aW9uIGQndW4gZ3JvdXBlIGRlIHNlcnZldXJzIHBvdXIgbGUgYmFja3VwIChu6WNlc3NpdGUgaGFwcm94eSAxLjIuOSkKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciBpbnN0MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDIgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrCiAgICAgICAgc2VydmVyIGluc3QzIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyBjaGVjawogICAgICAgIHNlcnZlciBiYWNrMSAxOTIuMTY4LjEuMTA6ODAgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIGJhY2syIDE5Mi4xNjguMS4xMTo4MCBjaGVjayBiYWNrdXAKICAgICAgICBvcHRpb24gYWxsYmFja3VwcyAgIyBhbGwgYmFja3VwcyB3aWxsIGJlIHVzZWQKCgozLjIpIFJlY29ubmV4aW9uIHZlcnMgdW4gculwYXJ0aXRldXIgZW4gY2FzIGQn6WNoZWMgZGlyZWN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBzaSB1biBzZXJ2ZXVyIGTpZmluaSBwYXIgdW4gY29va2llIG5lIHLpcG9uZCBwbHVzLCBsZXMgY2xpZW50cwpzZXJvbnQgZOlmaW5pdGl2ZW1lbnQgYWlndWlsbOlzIGRlc3N1cyDgIGNhdXNlIGRlIGxldXIgY29va2llLCBldCBkZSBjZSBmYWl0LApk6WZpbml0aXZlbWVudCBwcml26XMgZGUgc2VydmljZS4gTGEgc3DpY2lmaWNhdGlvbiBkdSBwYXJhbeh0cmUgJ3JlZGlzcGF0Y2gnCmF1dG9yaXNlIGRhbnMgY2UgY2FzIOAgcmVudm95ZXIgbGVzIGNvbm5leGlvbnMg6WNob3XpZXMgdmVycyBsZSBy6XBhcnRpdGV1cgooZXh0ZXJuZSBvdSBpbnRlcm5lKSBhZmluIGQnYXNzaWduZXIgdW4gbm91dmVhdSBzZXJ2ZXVyIOAgY2VzIGNsaWVudHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHJlZnVzIGRlIGNvbm5leGlvbi4KClBhciBk6WZhdXQgKGV0IGRhbnMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcyksIGxlIHBhcmFt6HRyZQpyZWRpc3BhdGNoIG5lIHMnYXBwbGlxdWUgcXUnYXV4IOljaGVjcyBkZSBjb25uZXhpb24gYXUgc2VydmV1ci4gRGVwdWlzIGxhCnZlcnNpb24gMS4xLjE3LCBpbCBzJ2FwcGxpcXVlIGF1c3NpIGF1eCBjb25uZXhpb25zIGRlc3RpbullcyDgIGRlcyBzZXJ2ZXVycwppZGVudGlmaelzIGNvbW1lIGhvcnMgZCd1c2FnZSBwYXIgbGEgc3VydmVpbGxhbmNlLiBTaSBsJ29uIHNvdWhhaXRlIG1hbGdy6Qp0b3V0IHF1J3VuIGNsaWVudCBkaXNwb3NhbnQgZCd1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgZOlmZWN0dWV1eAp0ZW50ZSBkZSBzJ3kgY29ubmVjdGVyLCBpbCBmYXV0IHBy6WNpc2VyIGwnb3B0aW9uICJwZXJzaXN0IiA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBwZXJzaXN0CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHNlcnZldXIgSFMuCgoKMy4zKSBBc3NpZ25hdGlvbiBkZSBwb2lkcyBkaWZm6XJlbnRzIOAgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXJmb2lzIGlsIGFycml2ZSBkJ2Fqb3V0ZXIgZGUgbm91dmVhdXggc2VydmV1cnMgcG91ciBhY2Nyb+50cmUgbGEgY2FwYWNpdOkKZCd1bmUgZmVybWUgZGUgc2VydmV1ciwgbWFpcyBsZSBub3V2ZWF1IHNlcnZldXIgZXN0IHNvaXQgYmVhdWNvdXAgcGx1cyBwZXRpdApxdWUgbGVzIGF1dHJlcyAoZGFucyBsZSBjYXMgZCd1biBham91dCBkJ3VyZ2VuY2UgZGUgbWF06XJpZWwgZGUgculjdXDpcmF0aW9uKSwKc29pdCBwbHVzIHB1aXNzYW50IChsb3JzIGQndW4gaW52ZXN0aXNzZW1lbnQgZGFucyBkdSBtYXTpcmllbCBuZXVmKS4gUG91ciBjZXR0ZQpyYWlzb24sIGlsIHNlbWJsZSBwYXJmb2lzIGp1ZGljaWV1eCBkZSBwb3V2b2lyIGVudm95ZXIgcGx1cyBkZSBjbGllbnRzIHZlcnMgbGVzCnBsdXMgZ3JvcyBzZXJ2ZXVycy4gSnVzcXUn4CBsYSB2ZXJzaW9uIDEuMi4xMSwgaWwg6XRhaXQgbuljZXNzYWlyZSBkZSBy6XBsaXF1ZXIKcGx1c2lldXJzIGZvaXMgbGVzIGTpZmluaXRpb25zIGRlcyBzZXJ2ZXVycyBwb3VyIGF1Z21lbnRlciBsZXVyIHBvaWRzLiBEZXB1aXMKbGEgdmVyc2lvbiAxLjIuMTIsIGwnb3B0aW9uICd3ZWlnaHQnIGVzdCBkaXNwb25pYmxlLiBIQVByb3h5IGNvbnN0cnVpdCBhbG9ycwp1bmUgdnVlIGRlcyBzZXJ2ZXVycyBkaXNwb25pYmxlcyBsYSBwbHVzIGhvbW9n6G5lIHBvc3NpYmxlIGVuIHNlIGJhc2FudCBzdXIKbGV1ciBwb2lkcyBkZSBzb3J0ZSBxdWUgbGEgY2hhcmdlIHNlIGRpc3RyaWJ1ZSBkZSBsYSBtYW5p6HJlIGxhIHBsdXMgbGlzc2UKcG9zc2libGUuIExlIHBvaWRzIGNvbXByaXMgZW50cmUgMSBldCAyNTYgZG9pdCByZWZs6XRlciBsYSBjYXBhY2l06SBkJ3VuCnNlcnZldXIgcGFyIHJhcHBvcnQgYXV4IGF1dHJlcy4gTGUgcG9pZHMgZGUgMSBkb25uZSBsYSBmculxdWVuY2UgZCdhcHBhcml0aW9uCmxhIHBsdXMgZmFpYmxlLCBldCAyNTYgbGEgZnLpcXVlbmNlIGxhIHBsdXMg6WxldullLiBEZSBjZXR0ZSBtYW5p6HJlLCBzaSB1bgpzZXJ2ZXVyIGRpc3BhcmFpdCwgbGVzIGNhcGFjaXTpcyByZXN0YW50ZXMgc29udCB0b3Vqb3VycyByZXNwZWN06WVzLgoKCkV4ZW1wbGUgOgotLS0tLS0tLS0KIyBkaXN0cmlidXRpb24g6XF1aXRhYmxlIHN1ciAyIG9wdGVyb24gYW5kIHVuIGFuY2llbiBwZW50aXVtMwoKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgd2VpZ2h0ICA4IGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgd2VpZ2h0IDIwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgc2VydmVyMDMgd2VpZ2h0IDI0IGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwNCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCk5vdGVzIDoKLS0tLS0tLQogIC0gbG9yc3F1ZSBsZSBwb2lkcyBuJ2VzdCBwYXMgc3DpY2lmaeksIGxhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCDgIDEKCiAgLSBsZSBwb2lkcyBuJ2ltcGFjdGUgcGFzIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudCAoaGVhbHRoIGNoZWNrcyksIGRvbmMgaWwKICAgIGVzdCBwbHVzIHByb3ByZSBkJ3V0aWxpc2VyIGxlcyBwb2lkcyBxdWUgZGUgculwbGlxdWVyIGxlIG3qbWUgc2VydmV1cgogICAgcGx1c2lldXJzIGZvaXMuCgogIC0gbGVzIHBvaWRzIHMnYXBwbGlxdWVudCDpZ2FsZW1lbnQgYXV4IHNlcnZldXJzIGRlIGJhY2t1cCBzaSBsJ29wdGlvbgogICAgJ2FsbGJhY2t1cHMnIGVzdCBwb3NpdGlvbm7pZS4KCiAgLSBsZSBwb2lkcyBzJ2FwcGxpcXVlIGF1c3NpIOAgbGEgculwYXJ0aXRpb24gc2Vsb24gbGEgc291cmNlCiAgICAoJ2JhbGFuY2Ugc291cmNlJykuCgogIC0gcXVlbHMgcXVlIHNvaWVudCBsZXMgcG9pZHMsIGxlIHByZW1pZXIgc2VydmV1ciBzZXJhIHRvdWpvdXJzIGFzc2lnbukgZW4KICAgIHByZW1pZXIuIENldHRlIHLoZ2xlIGZhY2lsaXRlIGxlcyBkaWFnbm9zdGljcy4KCiAgLSBwb3VyIGxlcyBwdXJpc3RlcywgbCdhbGdvcml0aG1lIGRlIGNhbGN1bGF0aW9uIGRlIGxhIHZ1ZSBkZXMgc2VydmV1cnMgZG9ubmUKICAgIHVuZSBwcmlvcml06SBhdXggcHJlbWllcnMgc2VydmV1cnMsIGRvbmMgbGEgdnVlIGVzdCBsYSBwbHVzIHVuaWZvcm1lIHNpIGxlcwogICAgc2VydmV1cnMgc29udCBk6WNsYXLpcyBkYW5zIGwnb3JkcmUgY3JvaXNzYW50IGRlIGxldXJzIHBvaWRzLgoKTGEgZGlzdHJpYnV0aW9uIGR1IHRyYWZpYyBzdWl2cmEgZXhhY3RlbWVudCBsZSBz6XF1ZW5jZW1lbnQgc3VpdmFudCA6CgogICAgICAgIFJlcXVlc3R8ICAgICAgICAgICAgICAgICAgIDEgMSAxIDEKICAgICAgICBudW1iZXIgfCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzCiAgICAgICAtLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBwMy04MDAgfCBYIC4gLiAuIC4gLiAuIFggLiAuIC4gLiAuCiAgICAgICAgb3B0LTIwIHwgLiBYIC4gWCAuIFggLiAuIC4gWCAuIFggLgogICAgICAgIG9wdC0yNCB8IC4gLiBYIC4gWCAuIFggLiBYIC4gWCAuIFgKCgozLjQpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcyBwYXIgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDZXJ0YWlucyBzZXJ2ZXVycyB3ZWIgbXVsdGktcHJvY2Vzc3VzIHRlbHMgcXUnQXBhY2hlIHNvdWZmcmVudCBk6HMgcXUnaWwgeSBhCnRyb3AgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzLCBwYXJjZSBxdSdpbCBlc3QgdHLocyBjb/t0ZXV4IGRlIGZhaXJlCmZvbmN0aW9ubmVyIGRlcyBjZW50YWluZXMgb3UgZGVzIG1pbGxpZXJzIGRlIHByb2Nlc3N1cyBzdXIgdW4gc3lzdOhtZS4gVW5lCnNvbHV0aW9uIGNvbnNpc3RlIOAgYXVnbWVudGVyIGxlIG5vbWJyZSBkZSBzZXJ2ZXVycyBldCBkZSBy6XBhcnRpciBsYSBjaGFyZ2UKZW50cmUgZXV4LCBtYWlzIGNlbGEgcG9zZSB1biBwcm9ibOhtZSBsb3JzcXVlIGxlIGJ1dCBlc3QgdW5pcXVlbWVudCBkZSBy6XNpc3RlcgrgIGRlcyBwaWNzIGRlIGNoYXJnZSBvY2Nhc2lvbm5lbHMuCgpQb3VyIHLpc291ZHJlIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgZm9uY3Rpb25uYWxpdOkgYSDpdOkgaW1wbOltZW506WUgZGFucwpIQVByb3h5IDEuMi4xMy4gSWwgcydhZ2l0IGQndW5lIGxpbWl0ZSAibWF4Y29ubiIgcGFyIHNlcnZldXIsIGFzc29jaellIOAgdW5lCmZpbGUgZCdhdHRlbnRlIHBhciBzZXJ2ZXVyIGV0IHBhciBwcm94eS4gQ2VjaSB0cmFuc2Zvcm1lIEhBUHJveHkgZW4gdW4gdGFtcG9uCmVudHJlIGRlcyBtaWxsaWVycyBkZSBjbGllbnRzIGV0IHF1ZWxxdWVzIHNlcnZldXJzLiBEYW5zIGJpZW4gZGVzIGNhcywgbGUgZmFpdApkZSBkaW1pbnVlciBsYSB2YWxldXIgbWF4Y29ubiBhbelsaW9yZXJhIG5vdGFibGVtZW50IGxlcyBwZXJmb3JtYW5jZXMgZGVzCnNlcnZldXJzIGV0IGRpbWludWVyYSBsZXMgdGVtcHMgZGUgculwb25zZSBzaW1wbGVtZW50IHBhcmNlIHF1ZSBsZXMgc2VydmV1cnMKc2Vyb250IG1vaW5zIGNvbmdlc3Rpb25u6XMuCgpRdWFuZCB1bmUgcmVxdep0ZSBjaGVyY2hlIOAgam9pbmRyZSBuJ2ltcG9ydGUgcXVlbCBzZXJ2ZXVyLCBsZSBwcmVtaWVyIHNlcnZldXIKbm9uIHNhdHVy6SBlc3QgdXRpbGlz6SwgZW4gcmVzcGVjdGFudCBsJ2FsZ29yaXRobWUgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlLiBTaQp0b3VzIGxlcyBzZXJ2ZXVycyBzb250IHNhdHVy6XMsIGFsb3JzIGxhIHJlcXXqdGUgc2VyYSBtaXNlIGRhbnMgbGEgZmlsZQpkJ2F0dGVudGUgZ2xvYmFsZSBkZSBsJ2luc3RhbmNlLiBFbGxlIHNvcnRpcmEgZGUgY2V0dGUgZmlsZSBkJ2F0dGVudGUgbG9yc3F1ZQp0b3V0ZXMgbGVzIHJlcXXqdGVzIHBy6WPpZGVudGVzIGF1cm9udCDpdOkgbGli6XLpZXMgZXQgcXUndW4gc2VydmV1ciBhdXJhIOl06QpsaWLpcukgZCd1bmUgY29ubmV4aW9uIHBvdXIgbGEgdHJhaXRlci4KClNpIHVuZSByZXF16nRlIGZhaXQgculm6XJlbmNlIOAgdW4gc2VydmV1ciBlbiBwYXJ0aWN1bGllciAocC5leDogaGFjaGFnZSBkJ0lQCnNvdXJjZSwgb3UgcGVyc2lzdGFuY2UgcGFyIGNvb2tpZSksIGV0IHF1ZSBjZSBzZXJ2ZXIgZXN0IHNhdHVy6SwgYWxvcnMgbGEKcmVxdep0ZSBzZXJhIG1pc2UgZGFucyBsYSBmaWxlIGQnYXR0ZW50ZSBk6WRp6WUg4CBjZSBzZXJ2ZXVyLiBDZXR0ZSBmaWxlCmQnYXR0ZW50ZSBlc3QgcHJpb3JpdGFpcmUgc3VyIGxhIGZpbGUgZCdhdHRlbnRlIGdsb2JhbGUsIGRlIHNvcnRlIHF1J2lsIHNvaXQKcGx1cyBmYWNpbGUgZCdhdHRlaW5kcmUgbGUgc2l0ZSBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgcXVpIHMneSB0cm91dmVudCBk6WrgCnF1ZSBwb3VyIGxlcyBub3V2ZWF1eCB1dGlsaXNhdGV1cnMuCgpQb3VyIGNlbGEsIGxlcyBsb2dzIG9udCBk+yDqdHJlIGVucmljaGlzIHBvdXIgaW5kaXF1ZXIgbGUgbm9tYnJlIGRlIHNlc3Npb25zCnBhciBzZXJ2ZXVyLCBsYSBwb3NpdGlvbiBkZSBsYSByZXF16nRlIGRhbnMgbGVzIGZpbGVzIGQnYXR0ZW50ZXMsIGV0IGxlIHRlbXBzCnBhc3PpIGVuIGZpbGUgZCdhdHRlbnRlLiBDZWNpIGFpZGUgY29uc2lk6XJhYmxlbWVudCDgIGZhaXJlIGRlIGxhIHBy6XZpc2lvbiBkZQpjYXBhY2l06S4gVm9pciBsYSBzZWN0aW9uICdsb2dzJyBwbHVzIGJhcyBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIFByZW5kcmUgc29pbiBkdSBQMyBxdWkgbidhIHF1ZSAyNTYgTW8gZGUgUkFNLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDI0IG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCkNldHRlIG9wdGlvbiBzZSBtb250cmEgc2kgZWZmaWNhY2UgcG91ciBy6WR1aXJlIGxlcyB0ZW1wcyBkZSBy6XBvbnNlIGRlcwpzZXJ2ZXVycyBxdWUgY2VydGFpbnMgdXRpbGlzYXRldXJzIHZvdWxhaWVudCB1dGlsaXNlciBkZXMgdmFsZXVycyB0cm9wIGJhc3Nlcwpwb3VyIGFt6Wxpb3JlciBsZXMgcGVyZm9ybWFuY2VzIGRlIGxldXJzIHNlcnZldXJzLiBTZXVsZW1lbnQsIGlscyBuJ+l0YWllbnQKYWxvcnMgcGx1cyBlbiBtZXN1cmUgZGUgc3VwcG9ydGVyIGRlIHRy6HMgZm9ydGVzIGNoYXJnZXMgcGFyY2UgcXUnaWwgbifpdGFpdApwbHVzIHBvc3NpYmxlIGRlIGxlcyBzYXR1cmVyLiBQb3VyIGNldHRlIHJhaXNvbiwgbGEgdmVyc2lvbiAxLjIuMTQgYSBhcHBvcnTpIGxhCmxpbWl0YXRpb24gZHluYW1pcXVlIGRlIGNvbm5leGlvbnMgYXZlYyBsJ2FkZGl0aW9uIGR1IHBhcmFt6HRyZSAibWluY29ubiIuCkxvcnNxdWUgY2UgcGFyYW3odHJlIGVzdCBhc3NvY2npIOAgIm1heGNvbm4iLCBpbCBhY3RpdmUgbGEgbGltaXRhdGlvbiBkeW5hbWlxdWUKYmFz6WUgc3VyIGxhIGNoYXJnZSBkZSBsJ2luc3RhbmNlLiBMZSBub21icmUgbWF4aW1hbCBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMKc3VyIHVuIHNlcnZldXIgZGV2aWVudCBhbG9ycyBwcm9wb3J0aW9ubmVsIGF1IG5vbWJyZSBkZSBzZXNzaW9ucyBkZSBsJ2luc3RhbmNlCnBhciByYXBwb3J0IOAgc29uICdtYXhjb25uJy4gVW4gbWluaW11bSBkZSA8bWluY29ubj4gc2Vzc2lvbnMgc2VyYSB0b3Vqb3VycwpwZXJtaXMgcXVlbGxlIHF1ZSBzb2l0IGxhIGNoYXJnZS4gQ2VjaSBhc3N1cmVyYSBxdWUgbGVzIHNlcnZldXJzIHRyYXZhaWxsZXJvbnQKYXUgbWVpbGxldXIgZGUgbGV1cnMgcGVyZm9ybWFuY2VzIHNvdXMgZGVzIGNoYXJnZXMgbm9ybWFsZXMsIGV0IHF1J2lscyBzZXJvbnQKdG91dCBkZSBt6m1lIGNhcGFibGVzIGRlIHN1cHBvcnRlciBkZSBmb3J0ZXMgcG9pbnRlcyBsb3JzcXVlIG7pY2Vzc2FpcmUuIExhCmxpbWl0ZSBkeW5hbWlxdWUgZXN0IGNhbGN1bOllIGNvbW1lIGNlY2kgOgoKICAgIHNydi5keW5fbGltaXQgPSBtYXgoc3J2Lm1pbmNvbm4sIHNydi5tYXhjb25uICogaW5zdC5zZXNzIC8gaW5zdC5tYXhjb25uKQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBQcmVuZHJlIHNvaW4gZHUgUDMgcXVpIG4nYSBxdWUgMjU2IE1vIGRlIFJBTS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAgOCBtaW5jb25uIDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpEYW5zIGwnZXhlbXBsZSBjaS1kZXNzdXMsIGxlIHNlcnZldXIgInBlbnRpdW0zLTgwMCcgcmVjZXZyYSBhdSBwbHVzIDEwMApjb25uZXhpb25zIHNpbXVsdGFu6WVzIGxvcnNxdWUgbCdpbnN0YW5jZSBkdSBwcm94eSBlbiBhdHRlaW5kcmEgMTAwMDAsIGV0CnJlY2V2cmEgc2V1bGVtZW50IDEwIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgdGFudCBxdWUgbGUgcHJveHkgc2VyYSBzb3VzIGxlcyAxMDAwCnNlc3Npb25zLgoKSWwgZXN0IHBvc3NpYmxlIGRlIGxpbWl0ZXIgbGEgdGFpbGxlIGRlIGxhIGZpbGUgZCdhdHRlbnRlIGRhbnMgbGUgYnV0IGRlCnJlZGlzdHJpYnVlciBsZXMgY29ubmV4aW9ucyBkZXN0aW7pZXMg4CB1biBzZXJ2ZXVyIGVuIHBhcnRpY3VsaWVyIHF1aSBzb250IHRyb3AKbG9pbiBwb3VyIGF2b2lyIHVuZSBjaGFuY2UgZCfqdHJlIHNlcnZpZXMgZW4gdW4gdGVtcHMgcmFpc29ubmFibGUuIENlY2kgbidlc3QKYWNjZXB0YWJsZSBxdWUgZGFucyBsZSBjYXMgb/kgbCdhZmZpbml06SBlbnRyZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ciBuJ2VzdApwYXMgb2JsaWdhdG9pcmUsIG1haXMgbW90aXbpZSB1bmlxdWVtZW50IHBhciBkZXMgcmFpc29ucyBkZSBwZXJmb3JtYW5jZXMsIHBhcgpleGVtcGxlLCBwYXIgbCd1dGlsaXNhdGlvbiBkJ3VuIGNhY2hlIGxvY2FsIGF1IHNlcnZldXIuIEwnb3B0aW9uICdtYXhxdWV1ZScKcGVybWV0IGRlIHBy6WNpc2VyIGxhIGxpbWl0ZSBwYXIgc2VydmV1ciwgdGVsIHF1ZSBkYW5zIGwnZXhlbXBsZSBjaS1kZXNzb3VzIDoKCi4uLiAobeptZSBleGVtcGxlIHF1ZSBwculj6WRlbW1lbnQpCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1pbmNvbm4gMTAgbWF4Y29ubiAxMDAgY2hlY2sgbWF4cXVldWUgNTAKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjayBtYXhxdWV1ZSAyMDAKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawoKRW4gbCdhYnNlbmNlIGR1IHBhcmFt6HRyZSAnbWF4cXVldWUnLCBsYSBmaWxlIGQndW4gc2VydmV1ciBuJ2EgcGFzIGRlIGxpbWl0ZQpk6WZpbmllLiBEYW5zIGxlIGNhcyBjb250cmFpcmUsIGxvcnNxdWUgbGEgZmlsZSBhdHRlaW50IGxhIGxpbWl0ZSBmaXjpZSBwYXIKJ21heHF1ZXVlJywgbGVzIGNsaWVudHMgc29udCBk6XBsYWPpcyB2ZXJzIGxhIGZpbGUgZ2xvYmFsZS4KCk5vdGVzIDoKLS0tLS0tLQogIC0gbGEgcmVxdep0ZSBuZSByZXN0ZXJhIHBhcyBpbmTpZmluaW1lbnQgZW4gZmlsZSBkJ2F0dGVudGUsIGVsbGUgZXN0CiAgICBhc3N1aul0aWUgYXUgcGFyYW3odHJlICdjb250aW1lb3V0JywgZXQgc2kgdW5lIHJlcXXqdGUgbmUgcGV1dCBwYXMKICAgIHNvcnRpciBkZSBsYSBmaWxlIGF2YW50IGNlIHRpbWUtb3V0LCBzb2l0IHBhcmNlIHF1ZSBsZSBzZXJ2ZXVyIGVzdAogICAgc2F0dXLpLCBzb2l0IHBhcmNlIHF1J2lsIHkgYSB0cm9wIGRlIHJlcXXqdGVzIGVuIGZpbGUgZCdhdHRlbnRlLAogICAgYWxvcnMgZWxsZSBleHBpcmVyYSBhdmVjIHVuZSBlcnJldXIgNTAzLgoKICAtIHNpIHNldWwgPG1pbmNvbm4+IGVzdCBzcOljaWZp6SwgaWwgYSBsZSBt6m1lIGVmZmV0IHF1ZSA8bWF4Y29ubj4KCiAgLSBwb3NpdGlvbm5lciBkZXMgdmFsZXVycyB0cm9wIGJhc3NlcyBwb3VyICdtYXhjb25uJyBwZXV0IGFt6Wxpb3JlciBsZXMKICAgIHBlcmZvcm1hbmNlcyBtYWlzIGF1c3NpIHBlcm1ldHRyZSDgIGRlcyB1dGlsaXNhdGV1cnMgdHJvcCBsZW50cyBkZSBibG9xdWVyCiAgICB1biBzZXJ2ZXVyIHBvdXIgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgoKMy41KSBBYmFuZG9uIGRlcyByZXF16nRlcyBhYm9ydOllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIHBy6XNlbmNlIGRlIHRy6HMgZm9ydGVzIGNoYXJnZXMsIGxlcyBzZXJ2ZXVycyBtZXR0cm9udCB1biBjZXJ0YWluIHRlbXBzIOAKculwb25kcmUuIExhIGZpbGUgZCdhdHRlbnRlIGR1IHByb3h5IHNlIHJlbXBsaXJhLCBldCBsZXMgdGVtcHMgZGUgculwb25zZQpzdWl2cm9udCB1bmUgY3JvaXNzYW5jZSBwcm9wb3J0aW9ubmVsbGUg4CBsYSB0YWlsbGUgZGUgZmlsZSBkJ2F0dGVudGUgZm9pcwpsZSB0ZW1wcyBtb3llbiBkZSBy6XBvbnNlIHBhciBzZXNzaW9uLiBMb3JzcXVlIGxlcyBjbGllbnRzIGF0dGVuZHJvbnQgcGx1cyBkZQpxdWVscXVlcyBzZWNvbmRlcywgaWxzIGNsaXF1ZXJvbnQgc291dmVudCBzdXIgbGUgYm91dG9uICdTVE9QJyBkZSBsZXVyCm5hdmlnYXRldXIsIGxhaXNzYW50IGRlcyByZXF16nRlcyBpbnV0aWxlcyBlbiBmaWxlIGQnYXR0ZW50ZSBldCByYWxlbnRpc3NhbnQKZG9uYyBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCkNvbW1lIGlsIG4neSBhIGF1Y3VuIG1veWVuIGRlIGRpc3Rpbmd1ZXIgdW4gdnJhaSBjbGljIHN1ciBTVE9QIGQndW5lIHNpbXBsZQpmZXJtZXR1cmUgZHUgY2FuYWwgZGUgc29ydGllIHN1ciBsZSBjbGllbnQgKHNodXRkb3duKFNIVVRfV1IpKSwgbGVzIGFnZW50cyBIVFRQCmRvaXZlbnQg6nRyZSBjb25zZXJ2YXRldXJzIGV0IGNvbnNpZOlyZXIgcXVlIGxlIGNsaWVudCBuJ2EgcHJvYmFibGVtZW50IGZlcm3pCnF1ZSBsZSBjYW5hbCBkZSBzb3J0aWUgZW4gYXR0ZW5kYW50IGxhIHLpcG9uc2UuIFRvdXRlZm9pcywgY2VjaSBpbnRyb2R1aXQgZGVzCnJpc3F1ZXMgZGUgY29uZ2VzdGlvbiBsb3JzcXVlIGJlYXVjb3VwIGQndXRpbGlzYXRldXJzIGZvbnQgZGUgbeptZSwgZXQgcydhduhyZQphdWpvdXJkJ2h1aSBjb21wbOh0ZW1lbnQgaW51dGlsZSBjYXIgcHJvYmFibGVtZW50IGF1Y3VuIGNsaWVudCBuZSByZWZlcm1lIGxhCnNlc3Npb24gZW4gYXR0ZW5kYW50IGxhIHLpcG9uc2UuIENlcnRhaW5zIGFnZW50cyBIVFRQIHN1cHBvcnRlbnQgY2VjaSAoU3F1aWQsCkFwYWNoZSwgSEFQcm94eSksIGV0IGQnYXV0cmVzIG5lIGxlIHN1cHBvcnRlbnQgcGFzIChUVVgsIGV0IGxhIHBsdXBhcnQgZGVzCnLpcGFydGl0ZXVycyBkZSBjaGFyZ2UgbWF06XJpZWxzKS4gRG9uYyBsYSBwcm9iYWJpbGl06SBwb3VyIHF1J3VuZSBub3RpZmljYXRpb24KZGUgZmVybWV0dXJlIGQndW4gY2FuYWwgZCdlbnRy6WUgY/R06SBjbGllbnQgcmVwculzZW50ZSB1biB1dGlsaXNhdGV1ciBjbGlxdWFudApzdXIgJ1NUT1AnIGVzdCBwcm9jaGUgZGUgMTAwJSwgZXQgaWwgZXN0IHZyYWltZW50IHRlbnRhbnQgZCdhYmFuZG9ubmVyIGxhCnJlcXXqdGUgcHLpbWF0dXLpbWVudCBzYW5zIHBvbGx1ZXIgbGVzIHNlcnZldXJzLgoKUG91ciBjZXR0ZSByYWlzb24sIHVuZSBub3V2ZWxsZSBvcHRpb24gImFib3J0b25jbG9zZSIgYSDpdOkgaW50cm9kdWl0ZSBlbgp2ZXJzaW9uIDEuMi4xNC4gUGFyIGTpZmF1dCAoc2FucyBsJ29wdGlvbiksIGxlIGNvbXBvcnRlbWVudCByZXN0ZSBjb25mb3JtZSDgCkhUVFAuIE1haXMgbG9yc3F1ZSBsJ29wdGlvbiBlc3Qgc3DpY2lmaellLCB1bmUgc2Vzc2lvbiBkb250IGxlIGNhbmFsIGVudHJhbnQKZXN0IGZlcm3pIHNlcmEgYWJvcnTpZSBzaSBjZWxhIGVzdCBwb3NzaWJsZSwgYydlc3Qg4CBkaXJlIHF1ZSBsYSByZXF16nRlIGVzdApzb2l0IGVuIGZpbGUgZCdhdHRlbnRlLCBzb2l0IGVuIHRlbnRhdGl2ZSBkZSBjb25uZXhpb24uIENlY2kgculkdWl0CmNvbnNpZOlyYWJsZW1lbnQgbGEgbG9uZ3VldXIgZGVzIGZpbGVzIGQnYXR0ZW50ZXMgZXQgbGEgY2hhcmdlIHN1ciBsZXMgc2VydmV1cnMKc2F0dXLpcyBsb3JzcXVlIGxlcyB1dGlsaXNhdGV1cnMgc29udCB0ZW506XMgZGUgY2xpcXVlciBzdXIgJ1NUT1AnLCBjZSBxdWkg4Apzb24gdG91ciwgculkdWl0IGxlcyB0ZW1wcyBkZSBy6XBvbnNlIHBvdXIgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWIzIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgYmNrMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgb3B0aW9uIGFib3J0b25jbG9zZQoKCjQpIEZvbmN0aW9ubmFsaXTpcyBhZGRpdGlvbm5lbGxlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkQnYXV0cmVzIGZvbmN0aW9ubmFsaXTpcyBkJ3VzYWdlIG1vaW5zIGNvdXJhbnQgc29udCBkaXNwb25pYmxlcy4gSWwgcydhZ2l0CnByaW5jaXBhbGVtZW50IGR1IG1vZGUgdHJhbnNwYXJlbnQsIGRlIGxhIGpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zLCBkZSBsYQpy6eljcml0dXJlIGRlcyBlbi106nRlcywgZXQgZHUgc3RhdHV0IHNvdXMgZm9ybWUgZGUgcGFnZSBIVE1MLgoKCjQuMSkgRm9uY3Rpb25uYWxpdOlzIHLpc2VhdQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4xLjEpIEZvbmN0aW9ubmVtZW50IGVuIG1vZGUgdHJhbnNwYXJlbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgbGUgbW90IGNs6SAndHJhbnNwYXJlbnQnIHBlcm1ldCBkJ2ludGVyY2VwdGVyIGRlcyBzZXNzaW9ucwpyb3V06WVzIOAgdHJhdmVycyBsYSBtYWNoaW5lIGjpYmVyZ2VhbnQgbGUgcHJveHkuIERhbnMgY2UgbW9kZSwgb24gbmUgcHLpY2lzZQpwYXMgbCdhZHJlc3NlIGRlIHLpcGFydGl0aW9uICdkaXNwYXRjaCcsIGNhciBjZWxsZS1jaSBlc3QgdGly6WUgZGUgbCdhZHJlc3NlCmRlc3RpbmF0aW9uIGRlIGxhIHNlc3Npb24gZOl0b3VybullLiBMZSBzeXN06G1lIGRvaXQgcGVybWV0dHJlIGRlIHJlZGlyaWdlciBsZXMKcGFxdWV0cyB2ZXJzIHVuIHByb2Nlc3N1cyBsb2NhbC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICB0cmFuc3BhcmVudAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjEuMjo4MAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC0tZHBvcnQgODAgLWogUkVESVJFQ1QgLS10by1wb3J0cyA2NTAwMAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tClNpIGxlIHBvcnQgbidlc3QgcGFzIHNw6WNpZmnpIHN1ciBsZSBzZXJ2ZXVyLCBjJ2VzdCBsZSBwb3J0IGF1cXVlbCBzJ2VzdAphZHJlc3PpIGxlIGNsaWVudCBxdWkgc2VyYSB1dGlsaXPpLiBDZWxhIHBlcm1ldCBkZSByZWxheWVyIHRvdXMgbGVzIHBvcnRzIFRDUApkJ3VuZSBt6m1lIGFkcmVzc2UgYXZlYyB1bmUgbeptZSBpbnN0YW5jZSBldCBzYW5zIHV0aWxpc2VyIGRpcmVjdGVtZW50IGxlIG1vZGUKdHJhbnNwYXJlbnQuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCA2MDAwMAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjEuMiBjaGVjayBwb3J0IDYwMDAwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLWogUkVESVJFQ1QgLS10by1wb3J0cyA2NTAwMAoKCjQuMS4yKSBDaG9peCBkJ3VuZSBhZHJlc3NlIHNvdXJjZSBwYXIgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBpbCBkZXZpZW50IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1bmUgYWRyZXNzZQpJUCBzb3VyY2UgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyLiBDJ2VzdCB1dGlsZSBwb3VyIGpvaW5kcmUgZGVzIHNlcnZldXJzIGRlCmJhY2t1cCDgIHBhcnRpciBkJ3VuIExBTiBkaWZm6XJlbnQsIG91IHBvdXIgdXRpbGlzZXIgZGVzIGNoZW1pbnMgYWx0ZXJuYXRpZnMKcG91ciBqb2luZHJlIGxlIG3qbWUgc2VydmV1ci4gQydlc3Qg6WdhbGVtZW50IHV0aWxpc2FibGUgcG91ciBmYWNpbGl0ZXIgdW5lCnLpcGFydGl0aW9uIGRlIGNoYXJnZSBzZWxvbiBsJ2FkcmVzc2UgSVAgc291cmNlIHBvdXIgZGVzIGNvbm5leGlvbnMgc29ydGFudGVzLgpCaWVuIGVudGVuZHUsIGxhIG3qbWUgYWRyZXNzZSBlc3QgdXRpbGlz6WUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBsZXMgMiBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjEuMjo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMS4xCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4yLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZhaXJlIHVuZSBy6XBhcnRpdGlvbiBkJ2FkcmVzc2Ugc291cmNlcyBwb3VyIGpvaW5kcmUgbGUgbeptZSBwcm94eSDgCiAgICAjIHRyYXZlcnMgZGV1eCBsaWVucyBXQU4gCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkxIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMi4xCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTIgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4zLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZm9yY2VyIHVuZSBjb25uZXhpb24gVENQIOAgcydhdHRhY2hlciDgIHVuIHBvcnQgcGFydGljdWxpZXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6MjAwMAogICAgICAgbW9kZSB0Y3AKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKCjQuMS4zKSBNYWludGllbiBkZSBzZXNzaW9uIFRDUCAoa2VlcC1hbGl2ZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxhIHZlcnNpb24gMS4yLjcsIGlsIGRldmllbnQgcG9zc2libGUgZCdhY3RpdmVyIGxlIG1haW50aWVuIGRlIHNlc3Npb24KVENQIChUQ1Aga2VlcC1hbGl2ZSkg4CBsYSBmb2lzIGP0dOkgY2xpZW50IGV0IGP0dOkgc2VydmV1ci4gQ2VsYSBwZXJtZXQKZCdlbXDqY2hlciBkZXMgc2Vzc2lvbnMgbG9uZ3VlcyBkJ2V4cGlyZXIgc3VyIGRlcyDpcXVpcGVtZW50cyBkZSBuaXZlYXUgNApleHRlcm5lcyB0ZWxzIHF1ZSBkZXMgZmlyZXdhbGxzIG91IGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlLiBDZWxhIHBlcm1ldAphdXNzaSBhdSBzeXN06G1lIGRlIGTpdGVjdGVyIGV0IHRlcm1pbmVyIGRlcyBzZXNzaW9ucyBmaWfpZXMgbG9yc3F1J2F1Y3VuCnRpbWUtb3V0IG4nYSDpdOkgcG9zaXRpb25u6SAoZm9ydGVtZW50IGTpY29uc2VpbGzpKS4gTGUgcHJveHkgbmUgcGV1dCBwYXMKcG9zaXRpb25uZXIgbCdpbnRlcnZhbGxlIGVudHJlIGxlcyBhbm5vbmNlcyBuaSBsZSBub21icmUgbWF4aW1hbCwgdmV1aWxsZXoKdm91cyBy6WbpcmVyIGF1IG1hbnVlbCBkdSBzeXN06G1lIGQnZXhwbG9pdGF0aW9uIHBvdXIgY2VsYS4gSWwgZXhpc3RlIDMgb3B0aW9ucwpwb3VyIGFjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbiBUQ1AgOgoKCW9wdGlvbiB0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgY2xpZW50IGV0IGP0dOkgc2VydmV1cgoJb3B0aW9uIGNsaXRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQKCW9wdGlvbiBzcnZ0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgc2VydmV1cgoKNC4xLjQpIFLpbWFuZW5jZSBkZXMgZG9ubullcyBUQ1AgKGxpbmdlcmluZykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIGTpc2FjdGl2ZXIgbGEgY29uc2VydmF0aW9uIGRlIGRvbm7pZXMgbm9uIGFjcXVpdHTpZXMgcGFyIHVuCmNsaWVudCDgIGxhIGZpbiBkJ3VuZSBzZXNzaW9uLiBDZWxhIHBldXQgcGFyZm9pcyBzJ2F26XJlciBu6WNlc3NhaXJlIGxvcnNxdWUKaGFwcm94eSBlc3QgdXRpbGlz6SBlbiBmYWNlIGQndW4gZ3JhbmQgbm9tYnJlIGRlIGNsaWVudHMgbm9uIGZpYWJsZXMgZXQgcXUndW4Kbm9tYnJlIOlsZXbpIGRlIHNvY2tldHMgZW4g6XRhdCBGSU5fV0FJVCBlc3Qgb2JzZXJ26SBzdXIgbGEgbWFjaGluZS4gTCdvcHRpb24KcGV1dCDqdHJlIHV0aWxpc+llIGRhbnMgdW4gZnJvbnRlbmQgcG91ciBhanVzdGVyIGxlcyBjb25uZXhpb25zIHZlcnMgbGVzCmNsaWVudHMsIGV0IGRhbnMgdW4gYmFja2VuZCBwb3VyIGFqdXN0ZXIgbGVzIGNvbm5leGlvbnMgdmVycyBsZXMgc2VydmV1cnMgOgoKCW9wdGlvbiBub2xpbmdlcgkjIGTpc2FjdGl2ZSBsYSBjb25zZXJ2YXRpb24gZGUgZG9ubullcwoKCjQuMikgSm91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKTCd1biBkZXMgcG9pbnRzIGZvcnRzIGRlIEhBUHJveHkgZXN0IGluZOluaWFibGVtZW50IGxhIHBy6WNpc2lvbiBkZSBzZXMgbG9ncy4KSWwgZm91cm5pdCBwcm9iYWJsZW1lbnQgbGUgcGx1cyBmaW4gbml2ZWF1IGQnaW5mb3JtYXRpb24gZGlzcG9uaWJsZSBwb3VyIHVuCnRlbCBvdXRpbCwgY2UgcXVpIGVzdCB0cuhzIGltcG9ydGFudCBwb3VyIGxlcyBkaWFnbm9zdGljcyBlbiBlbnZpcm9ubmVtZW50cwpjb21wbGV4ZXMuIEVuIHN0YW5kYXJkLCBsZXMgaW5mb3JtYXRpb25zIGpvdXJuYWxpc+llcyBpbmNsdWVudCBsZSBwb3J0IGNsaWVudCwKbGVzIGNocm9ub23pdHJhZ2VzIGRlcyDpdGF0cyBUQ1AvSFRUUCwgZGVzIOl0YXRzIGRlIHNlc3Npb24gcHLpY2lzIGF1IG1vbWVudCBkZQpsYSB0ZXJtaW5haXNvbiBldCBzYSBjYXVzZSwgZGVzIGluZm9ybWF0aW9ucyBzdXIgbGVzIGTpY2lzaW9ucyBkJ2FpZ3VpbGxhZ2UgZHUKdHJhZmljIHZlcnMgdW4gc2VydmV1ciwgZXQgYmllbiBz+3IgbGEgcG9zc2liaWxpdOkgZGUgY2FwdHVyZXIgZGVzIGVuLXTqdGVzCmFyYml0cmFpcmVzLgoKRGFucyBsZSBidXQgZCdhbelsaW9yZXIgbGEgculhY3Rpdml06SBkZXMgYWRtaW5pc3RyYXRldXJzLCBpbCBvZmZyZSB1bmUgZ3JhbmRlCnRyYW5zcGFyZW5jZSBzdXIgbGVzIHByb2Js6G1lcyByZW5jb250culzLCDgIGxhIGZvaXMgaW50ZXJuZXMgZXQgZXh0ZXJuZXMsIGV0CmlsIGVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIGxvZ3MgdmVycyBkZXMgc2VydmV1cnMgZGlmZulyZW50cyBlbiBt6m1lIHRlbXBzCmF2ZWMgZGVzIG5pdmVhdXggZGUgZmlsdHJhZ2UgZGlmZulyZW50cyA6CgogIC0gbG9ncyBnbG9iYXV4IGF1IG5pdmVhdSBwcm9jZXNzdXMgKGVycmV1cnMgc3lzdOhtZSwgYXJy6nRzL2TpbWFycmFnZXMsIC4uLikKICAtIGVycmV1cnMgc3lzdOhtZSBldCBpbnRlcm5lcyBwYXIgaW5zdGFuY2UgKG1hbnF1ZSBkZSByZXNzb3VyY2VzLCBidWdzLCAuLi4pCiAgLSBwcm9ibOhtZXMgZXh0ZXJuZXMgcGFyIGluc3RhbmNlIChhcnLqdHMvcmVsYW5jZSBzZXJ2ZXVycywgbGltaXRlcywgLi4uKQogIC0gYWN0aXZpdOkgcGFyIGluc3RhbmNlIChjb25uZXhpb25zIGNsaWVudHMpLCBhdXNzaSBiaWVuIGxvcnMgZGUgbGV1cgogICAg6XRhYmxpc3NlbWVudCBxdSfgIGxldXIgdGVybWluYWlzb24uCgpMYSBwb3NzaWJpbGl06SBkZSBkaXN0cmlidWVyIGRpZmbpcmVudHMgbml2ZWF1eCBkZSBsb2dzIOAgZGlmZulyZW50cyBzZXJ2ZXVycwpwZXJtZXQg4CBwbHVzaWV1cnMg6XF1aXBlcyBkZSBwcm9kdWN0aW9uIGQnaW506XJhZ2lyIGV0IGRlIGNvcnJpZ2VyIGxldXJzCnByb2Js6G1lcyBsZSBwbHVzIHT0dCBwb3NzaWJsZS4gUGFyIGV4ZW1wbGUsIGwn6XF1aXBlIHN5c3TobWUgcGV1dCBzdXJ2ZWlsbGVyCm9jY2FzaW9ubmVsbGVtZW50IGxlcyBlcnJldXJzIHN5c3TobWUsIHBlbmRhbnQgcXVlIGwn6XF1aXBlIGFwcGxpY2F0aW9uCnN1cnZlaWxsZSBsZXMgYWxlcnRlcyBkJ2Fycup0cy9k6W1hcnJhZ2VzIGRlIHNlcyBzZXJ2ZXVycyBlbiB0ZW1wcyBy6WVsLCBldApxdWUgbCfpcXVpcGUgc+ljdXJpdOkgYW5hbHlzZSBsJ2FjdGl2aXTpIGVuIGRpZmbpcukgZCd1bmUgaGV1cmUuCgoKNC4yLjEpIE5pdmVhdXggZGUgbG9nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBUQ1AgZXQgSFRUUCBwZXV2ZW50IGRvbm5lciBsaWV1IOAgdW5lIGpvdXJuYWxpc2F0aW9uIHNvbW1haXJlIG91CmTpdGFpbGzpZSBpbmRpcXVhbnQsIHBvdXIgY2hhcXVlIGNvbm5leGlvbiwgbGEgZGF0ZSwgbCdoZXVyZSwgbCdhZHJlc3NlIElQCnNvdXJjZSwgbGUgc2VydmV1ciBkZXN0aW5hdGlvbiwgbGEgZHVy6WUgZGUgbGEgY29ubmV4aW9uLCBsZXMgdGVtcHMgZGUgculwb25zZSwKbGEgcmVxdep0ZSBIVFRQLCBsZSBjb2RlIGRlIHJldG91ciwgbGEgcXVhbnRpdOkgZGUgZG9ubullcyB0cmFuc21pc2VzLCBldCBt6m1lCmRhbnMgY2VydGFpbnMgY2FzLCBsYSB2YWxldXIgZCd1biBjb29raWUgcGVybWV0dGFudCBkZSBzdWl2cmUgbGVzIHNlc3Npb25zLgpUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4gc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gU2Ugculm6XJlciDgCmxhIHNlY3Rpb24gMS4xIHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9uIHN1ciBsZXMgY2F06WdvcmllcyBkZSBsb2dzLiAgTGEgc3ludGF4ZQplc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcF8xPiA8Y2F06WdvcmllXzE+IFtuaXZlYXVfbWF4XzFdCiAgICBsb2cgPGFkcmVzc2VfaXBfMj4gPGNhdOlnb3JpZV8yPiBbbml2ZWF1X21heF8yXQpvdQogICAgbG9nIGdsb2JhbAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkxhIHN5bnRheGUgc3DpY2lmaXF1ZSAnbG9nIGdsb2JhbCcgaW5kaXF1ZSBxdWUgbCdvbiBzb3VoYWl0ZSB1dGlsaXNlciBsZXMKcGFyYW3odHJlcyBkZSBqb3VybmFsaXNhdGlvbiBk6WZpbmlzIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMSBsb2NhbDQKCjQuMi4yKSBGb3JtYXQgZGVzIGxvZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXIgZOlmYXV0LCBsZXMgY29ubmV4aW9ucyBzb250IGpvdXJuYWxpc+llcyBhdSBuaXZlYXUgVENQIGTocyBsJ+l0YWJsaXNzZW1lbnQKZGUgbGEgc2Vzc2lvbiBlbnRyZSBsZSBjbGllbnQgZXQgbGUgcmVsYWlzLiBFbiBwculjaXNhbnQgbCdvcHRpb24gJ3RjcGxvZycsCmxhIGNvbm5leGlvbiBuZSBzZXJhIGpvdXJuYWxpc+llIHF1J2VuIGZpbiBkZSBzZXNzaW9uLCBham91dGFudCBkZXMgcHLpY2lzaW9ucwpzdXIgc29uIOl0YXQgbG9ycyBkZSBsYSBk6WNvbm5leGlvbiwgYWluc2kgcXVlIGxlIHRlbXBzIGRlIGNvbm5leGlvbiBldCBsYQpkdXLpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbi4gTGUgbm9tYnJlIGRlIHNlc3Npb25zIHJlc3RhbnRlcyBhcHLocyBsYQpk6WNvbm5leGlvbiBlc3Qg6WdhbGVtZW50IGluZGlxdekgKHBvdXIgbGUgc2VydmV1ciwgbCdpbnN0YW5jZSBldCBsZSBwcm9jZXNzKS4KCkV4ZW1wbGUgZGUgam91cm5hbGlzYXRpb24gVENQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbGlzdGVuIHJlbGFpcy10Y3AgMC4wLjAuMDo4MDAwCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBvcHRpb24gdGNwbG9nCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVsxODk4OV06IDEyNy4wLjAuMTozNDU1MCBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdIHJlbGFpcy10Y3AgU3J2MSAwLzAvNTAwNyAwIC0tIDEvMS8xIDAvMAogIAogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVtcGxlCgogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgICAgICAgICBoYXByb3h5WzE4OTg5XToKICAgICAgICAyICBpcF9jbGllbnQgJzonIHBvcnRfY2xpZW50ICAgICAgICAgICAgICAgICAgICAgMTI3LjAuMC4xOjM0NTUwCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWlzLXRjcAogICAgICAgIDUgIG5vbV9zZXJ2ZXVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgdGVtcHNfZmlsZSAnLycgdGVtcHNfY29ubmVjdCAnLycgdGVtcHNfdG90YWwgIDAvMC81MDA3CiAgICAgICAgNyAgb2N0ZXRzIGx1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA4ICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KICAgICAgICA5ICBjb25uX3NydiAnLycgY29ubnNfaW5zdCAnLycgY29ubnNfcHJvY2Vzc3VzICAgMS8xLzEKICAgICAgIDEwICBwb3NpdGlvbiBlbiBmaWxlIGQnYXR0ZW50ZSBzcnYgJy8nIGdsb2JhbGUgICAgMC8wCgpVbmUgYXV0cmUgb3B0aW9uLCAnaHR0cGxvZycsIGZvdXJuaXQgcGx1cyBkZSBk6XRhaWxzIHN1ciBsZSBwcm90b2NvbGUgSFRUUCwKbm90YW1tZW50IGxhIHJlcXXqdGUgZXQgbCfpdGF0IGRlcyBjb29raWVzLiBEYW5zIGxlcyBjYXMgb/kgdW4gbeljYW5pc21lIGRlCnN1cnZlaWxsYW5jZSBlZmZlY3R1YW50IGRlcyBjb25uZXhpb25zIGV0IGTpY29ubmV4aW9ucyBmculxdWVudGVzLCBwb2xsdWVyYWl0CmxlcyBsb2dzLCBpbCBzdWZmaXQgZCdham91dGVyIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIHBvdXIgbmUgcGx1cyBvYnRlbmlyIHVuZQpsaWduZSBkZSBsb2cgcG91ciBsZXMgc2Vzc2lvbnMgbidheWFudCBwYXMgZG9ubukgbGlldSDgIHVuIOljaGFuZ2UgZGUgZG9ubullcwoocmVxdep0ZSBvdSBy6XBvbnNlKS4KCkV4ZW1wbGUgZGUgam91cm5hbGlzYXRpb24gSFRUUCA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQ3LzcyMyAyMDAgMjQzIC0gLSAtLS0tIDIvMy8zIDAvMCAiSEVBRCAvIEhUVFAvMS4wIgoKRXhlbXBsZSBwbHVzIGNvbXBsZXQgOgoKICAgIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAxMzcvMjAyLzIwNSAwLzAge3cub2RzLm9yZ3xNb3ppbGxhfSB7fSAiSEVBRCAvIEhUVFAvMS4wIiAKCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZW1wbGUKCiAgICAgICAgMSAgbm9tX3Byb2Nlc3N1cyAnWycgcGlkICddOicgICAgICAgICAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgICAgICAgICAxMC4wLjAuMTozNDU1MgogICAgICAgIDMgICdbJyBkYXRlICddJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy1odHRwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICBUcSAnLycgVHcgJy8nIFRjICcvJyBUciAnLycgVHQgICAgICAgICAgICAgICAgMzE4My8tMS8tMS8tMS8xMTIxNQogICAgICAgIDcgIENvZGVfcmV0b3VyX0hUVFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDMKICAgICAgICA4ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDkgIGNvb2tpZXNfcmVxdep0ZV9jYXB0dXLpcyAgICAgICAgICAgICAgICAgICAgICAtCiAgICAgICAxMCAgY29va2llc19yZXBvbnNlX2NhcHR1culzICAgICAgICAgICAgICAgICAgICAgIC0KICAgICAgIDExICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0MtLQogICAgICAgMTIgIGNvbm5zX3NydiAnLycgY29ubnNfaW5zdCAnLycgY29ubnNfcHJvY2Vzc3VzICAxMzcvMjAyLzIwNQogICAgICAgMTMgIHBvc2l0aW9uIGZpbGUgc2VydmV1ciAnLycgZ2xvYmFsZSAgICAgICAgICAgICAwLzAKICAgICAgIDE0ICAneycgZW50ZXRlc19yZXF16nRlX2NhcHR1culzICd9JyAgICAgICAgICAgICAge3cub2RzLm9yZ3xNb3ppbGxhfQogICAgICAgMTUgICd7JyBlbnRldGVzX3JlcG9uc2VfY2FwdHVy6XMgJ30nICAgICAgICAgICAgICB7fQogICAgICAgMTYgICciJyByZXF16nRlX0hUVFAgJyInICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBRCAvIEhUVFAvMS4wIgogIApOb3RlIHBvdXIgbGVzIGFuYWx5c2V1cnMgZGUgbG9ncyA6IGwnVVJJIGVzdCBUT1VKT1VSUyBsZSBkZXJuaWVyIGNoYW1wIGRlIGxhIGxpZ25lLCBldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbmNlIHBhciB1biBndWlsbGVtZXQgJyInLgoKTGUgcHJvYmzobWUgZGUgbG9ndWVyIHVuaXF1ZW1lbnQgZW4gZmluIGRlIHNlc3Npb24sIGMnZXN0IHF1J2lsIGVzdCBpbXBvc3NpYmxlCmRlIHNhdm9pciBjZSBxdWkgc2UgcGFzc2UgZHVyYW50IGRlIGdyb3MgdHJhbnNmZXJ0cyBvdSBkZXMgc2Vzc2lvbnMgbG9uZ3Vlcy4KUG91ciBwYWxsaWVyIOAgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2xvZ2FzYXAnIGEg6XTpIGludHJvZHVpdGUgZGFucwpsYSB2ZXJzaW9uIDEuMS4yOCAoMS4yLjEpLiBMb3JzcXUnZWxsZSBlc3QgYWN0aXbpZSwgbGUgcHJveHkgbG9ndWVyYSBsZSBwbHVzCnT0dCBwb3NzaWJsZSwgYydlc3Qg4CBkaXJlIGp1c3RlIGF2YW50IHF1ZSBuZSBk6WJ1dGVudCBsZXMgdHJhbnNmZXJ0cyBkZQpkb25u6WVzLiBDZWxhIHNpZ25pZmllLCBkYW5zIGxlIGNhcyBkdSBUQ1AsIHF1J2lsIGxvZ3VlcmEgdG91am91cnMgbGUgculzdWx0YXQKZGUgbGEgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgZGFucyBsZSBjYXMgSFRUUCwgcXUnaWwgbG9ndWVyYSBlbiBmaW4gZGUKdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgZGUgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBhdXF1ZWwgY2FzIGxlIG5vbWJyZSBkJ29jdGV0cwpyZXBy6XNlbnRlcmEgbGEgdGFpbGxlIGRlcyBlbi106nRlcyByZXRvdXJu6XMgYXUgY2xpZW50LgoKQWZpbiBkJ+l2aXRlciB0b3V0ZSBjb25mdXNpb24gYXZlYyBsZXMgbG9ncyBub3JtYXV4LCBsZSB0ZW1wcyB0b3RhbCBkZQp0cmFuc2ZlcnQgZXQgbGUgbm9tYnJlIGQnb2N0ZXRzIHRyYW5zZuly6XMgc29udCBwculmaXjpcyBkJ3VuIHNpZ25lICcrJwpyYXBwZWxhbnQgcXVlIGxlcyB2YWxldXJzIHLpZWxsZXMgc29udCBjZXJ0YWluZW1lbnQgcGx1cyDpbGV26WVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBsb2dhc2FwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMy8zICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKCgo0LjIuMykgQ2hyb25vbel0cmFnZSBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQb3VyIGTpY2VsZXIgZGVzIHByb2Js6G1lcyBy6XNlYXUsIGxlcyBtZXN1cmVzIGR1IHRlbXBzIOljb3Vs6SBlbnRyZSBjZXJ0YWlucwrpduluZW1lbnRzIHNvbnQgZCd1bmUgdHLocyBncmFuZGUgdXRpbGl06S4gVG91cyBsZXMgdGVtcHMgc29udCBtZXN1culzIGVuCm1pbGxpc2Vjb25kZXMgKG1zKS4gRW4gbW9kZSBIVFRQLCBxdWF0cmUgcG9pbnRzIGRlIG1lc3VyZSBzb250IHJhcHBvcnTpcyBzb3VzCmxhIGZvcm1lIFRxL1R3L1RjL1RyL1R0IDoKCiAgLSBUcTogdGVtcHMgdG90YWwgZGUgculjZXB0aW9uIGRlIGxhIHJlcXXqdGUgSFRUUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KICAgIEMnZXN0IGxlIHRlbXBzIHF1aSBzJ2VzdCDpY291bOkgZW50cmUgbGUgbW9tZW50IG/5IGxlIGNsaWVudCBhIOl0YWJsaQogICAgc2EgY29ubmV4aW9uIHZlcnMgbGUgcmVsYWlzLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBhIHJl53UgbGUgZGVybmllcgogICAgZW4tdOp0ZSBIVFRQIHZhbGlkYW50IGxhIGZpbiBkZSBsYSByZXF16nRlLiBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUKICAgIHF1ZSBsYSByZXF16nRlIGNvbXBs6HRlIG4nYSBqYW1haXMg6XTpIHJl53VlLgoKICAtIFR3OiB0ZW1wcyB0b3RhbCBwYXNz6SBkYW5zIGxlcyBmaWxlcyBkJ2F0dGVudGUgYXZhbnQgZCdvYnRlbmlyIHVuZSBwbGFjZQogICAgdmVycyB1biBzZXJ2ZXVyLiBDZWNpIHRpZW50IGNvbXB0ZSDgIGxhIGZvaXMgZGUgbGEgZmlsZSBkJ2F0dGVudGUgZ2xvYmFsZQogICAgZXQgZGUgY2VsbGUgZHUgc2VydmV1ciwgZXQgZOlwZW5kIGR1IG5vbWJyZSBkZSByZXF16nRlcyBkYW5zIGxhIGZpbGUgZXQgZHUKICAgIHRlbXBzIG7pY2Vzc2FpcmUgYXUgc2VydmV1ciBwb3VyIGNvbXBs6XRlciBsZXMgc2Vzc2lvbnMgcHLpY+lkZW50ZXMuIExhCiAgICB2YWxldXIgJy0xJyBpbmRpcXVlIHF1ZSBsYSByZXF16nRlIGEg6XTpIGTpdHJ1aXRlIGF2YW50IGQnYXR0ZWluZHJlIHVuZQogICAgZmlsZS4KCiAgLSBUYzogdGVtcHMgZCfpdGFibGlzc2VtZW50IGRlIGxhIGNvbm5leGlvbiBUQ1AgZHUgcmVsYWlzIHZlcnMgbGUgc2VydmV1ci4KICAgIEMnZXN0IGxlIHRlbXBzIOljb3Vs6SBlbnRyZSBsZSBtb21lbnQgb3UgbGUgcmVsYWlzIGEgaW5pdGnpIGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiB2ZXJzIGxlIHNlcnZldXIsIGV0IGxlIG1vbWVudCBv+SBjZSBkZXJuaWVyIGwnYSBhY3F1aXR06WUsIGMnZXN0CiAgICDgIGRpcmUgbGUgdGVtcHMgZW50cmUgbCdlbnZvaSBkdSBwYXF1ZXQgVENQIFNZTiBsYSBy6WNlcHRpb24gZHUgU1lOL0FDSy4KICAgIFVuZSB2YWxldXIgJy0xJyBpY2kgaW5kaXF1ZSBxdWUgbGEgY29ubmV4aW9uIG4nYSBqYW1haXMgcHUg6nRyZSDpdGFibGllCiAgICB2ZXJzIGxlIHNlcnZldXIuCgogIC0gVHI6IHRlbXBzIGRlIHLpcG9uc2UgZHUgc2VydmV1ci4gQydlc3QgbGUgdGVtcHMgcXVlIGxlIHNlcnZldXIgYSBtaXMgcG91cgogICAgcmVudm95ZXIgbGEgdG90YWxpdOkgZGVzIGVuLXTqdGVzIEhUVFAg4CBwYXJ0aXIgZHUgbW9tZW50IG/5IGlsIGEgYWNxdWl0dOkKICAgIGxhIGNvbm5leGlvbi4gQ2EgcmVwculzZW50ZSBleGFjdGVtZW50IGxlIHRlbXBzIGRlIHRyYWl0ZW1lbnQgZGUgbGEKICAgIHRyYW5zYWN0aW9uIHNhbnMgbGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzIGFzc29jaellcy4gVW5lIHZhbGV1ciAnLTEnCiAgICBpbmRpcXVlIHF1ZSBsZSBzZXJ2ZXVyIG4nYSBwYXMgZW52b3npIGxhIHRvdGFsaXTpIGRlIGwnZW4tdOp0ZSBIVFRQLgoKICAtIFR0OiBkdXLpZSBkZSB2aWUgdG90YWxlIGRlIGxhIHNlc3Npb24sIGVudHJlIGxlIG1vbWVudCBv+SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gZHUgY2xpZW50IGEg6XTpIGFjcXVpdHTpZSBldCBsZSBtb21lbnQgb/kgbGEgY29ubmV4aW9uIGEg6XTpCiAgICByZWZlcm3pZSBhdXggZGV1eCBleHRy6W1pdOlzIChjbGllbnQgZXQgc2VydmV1cikuIExhIHNpZ25pZmljYXRpb24gY2hhbmdlCiAgICB1biBwZXUgc2kgbCdvcHRpb24gJ2xvZ2FzYXAnIGVzdCBwculzZW50ZS4gRGFucyBjZSBjYXMsIGxlIHRlbXBzIGNvcnJlc3BvbmQKICAgIHVuaXF1ZW1lbnQg4CAoVHEgKyBUdyArIFRjICsgVHIpLCBldCBzZSB0cm91dmUgcHLpZml46SBkJ3VuIHNpZ25lICcrJy4gT24KICAgIHBldXQgZG9uYyBk6WR1aXJlIFRkLCBsZSB0ZW1wcyBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMsIGVuIGV4Y2x1YW50IGxlcwogICAgYXV0cmVzIHRlbXBzIDoKCiAgICAgICAgVGQgPSBUdCAtIChUcSArIFR3ICsgVGMgKyBUcikKCiAgICBMZXMgdGVtcHMgcmFwcG9ydOlzIOAgJy0xJyBzb250IHNpbXBsZW1lbnQg4CDpbGltaW5lciBkZSBjZXR0ZSDpcXVhdGlvbi4KCkVuIG1vZGUgVENQICgnb3B0aW9uIHRjcGxvZycpLCBzZXVscyBsZXMgZGV1eCBpbmRpY2F0ZXVycyBUdywgVGMgZXQgVHQgc29udApyYXBwb3J06XMuCgpDZXMgdGVtcHMgZm91cm5pc3NlbnQgZGUgcHLpY2lldXggcmVuc2VpZ25lbWVudCBzdXIgZGVzIGNhdXNlcyBwcm9iYWJsZXMgZGUKcHJvYmzobWVzLiBEdSBmYWl0IHF1ZSBsZSBwcm90b2NvbGUgVENQIGTpZmluaXNzZSBkZXMgdGVtcHMgZGUgcmV0cmFuc21pc3Npb24KZGUgMyBzZWNvbmRlcywgcHVpcyA2LCAxMiwgZXRjLi4uLCBsJ29ic2VydmF0aW9uIGRlIHRlbXBzIHByb2NoZXMgZGUgbXVsdGlwbGVzCmRlIDMgc2Vjb25kZXMgaW5kaXF1ZSBwcmF0aXF1ZW1lbnQgdG91am91cnMgZGVzIHBlcnRlcyBkZSBwYXF1ZXRzIGxp6XMg4CB1bgpwcm9ibOhtZSBy6XNlYXUgKGPiYmxlIG91IG7pZ29jaWF0aW9uKS4gRGUgcGx1cywgc2kgPFR0PiBlc3QgcHJvY2hlIGQndW5lCnZhbGV1ciBkZSB0aW1lLW91dCBkYW5zIGxhIGNvbmZpZ3VyYXRpb24sIGMnZXN0IHNvdXZlbnQgcXUndW5lIHNlc3Npb24gYSDpdOkKYWJhbmRvbm7pZSBzdXIgZXhwaXJhdGlvbiBkJ3VuIHRpbWUtb3V0LgoKQ2FzIGxlcyBwbHVzIGZy6XF1ZW50cyA6CgogIC0gU2kgVHEgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIGNsaWVudCBldCBsZSByZWxhaXMuCiAgLSBTaSBUYyBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIgZHVyYW50IGxhIHBoYXNlIGRlIGNvbm5leGlvbi4gQ2V0IGluZGljYXRldXIKICAgIGRldnJhaXQgbm9ybWFsZW1lbnQgdG91am91cnMg6nRyZSB0cuhzIGJhcyAobW9pbnMgZGUgcXVlbHF1ZXMgZGl6YWluZXMpLgogIC0gU2kgVHIgZXN0IHByZXNxdWUgdG91am91cnMgaW5m6XJpZXVyIOAgMzAwMCwgZXQgcXVlIGNlcnRhaW5lcyB2YWxldXJzCiAgICBzZW1ibGVudCBwcm9jaGVzIGRlIGxhIHZhbGV1ciBtb3llbm5lIG1ham9y6WUgZGUgMzAwMCwgaWwgeSBhIHBldXQt6nRyZQogICAgZGUgcGVydGVzIGVudHJlIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyLgogIC0gU2kgVHQgZXN0IGzpZ+hyZW1lbnQgc3Vw6XJpZXVyIGF1IHRpbWUtb3V0LCBjJ2VzdCBzb3V2ZW50IHBhcmNlIHF1ZSBsZQogICAgY2xpZW50IGV0IGxlIHNlcnZldXIgdXRpbGlzZW50IGR1IGtlZXAtYWxpdmUgSFRUUCBlbnRyZSBldXggZXQgcXVlIGxhCiAgICBzZXNzaW9uIGVzdCBtYWludGVudWUgYXBy6HMgbGEgZmluIGRlcyDpY2hhbmdlcy4gVm9pciBwbHVzIGxvaW4gcG91cgogICAgc2F2b2lyIGNvbW1lbnQgZOlzYWN0aXZlciBsZSBrZWVwLWFsaXZlIEhUVFAuCgpBdXRyZXMgY2FzICgneHgnIHJlcHLpc2VudGFudCB1bmUgdmFsZXVyIHF1ZWxjb25xdWUg4CBpZ25vcmVyKSA6CiAgLTEveHgveHgveHgvVHQ6IGxlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSBvdQogICAgICAgICAgICAgICAgICBhIHJlZmVybekgc2EgY29ubmV4aW9uIHNhbnMgY29tcGzpdGVyIGxhIHJlcXXqdGUuCiAgVHEvLTEveHgveHgvVHQ6IElsIG4n6XRhaXQgcGFzIHBvc3NpYmxlIGRlIHRyYWl0ZXIgbGEgcmVxdWVzdCwgcHJvYmFibGVtZW50CiAgICAgICAgICAgICAgICAgIHBhcmNlIHF1ZSB0b3VzIGxlcyBzZXJ2ZXVycyDpdGFpZW50IGhvcnMgZCd1c2FnZS4KICBUcS9Udy8tMS94eC9UdDogbGEgY29ubmV4aW9uIG4nYSBwYXMgcHUgcyfpdGFibGlyIHZlcnMgbGUgc2VydmV1ciAocmVmdXMgb3UKICAgICAgICAgICAgICAgICAgdGltZS1vdXQgYXUgYm91dCBkZSBUdC0oVHErVHcpIG1zKS4KICBUcS9Udy9UYy8tMS9UdDogbGUgc2VydmV1ciBhIGFjY2VwdOkgbGEgY29ubmV4aW9uIG1haXMgbidhIHBhcyBy6XBvbmR1IGRhbnMKICAgICAgICAgICAgICAgICAgbGVzIHRlbXBzIG91IGJpZW4gYSByZWZlcm3pIHNhIGNvbm5leGlvbiB0cm9wIHT0dCwgYXUgYm91dAogICAgICAgICAgICAgICAgICBkZSBUdC0oVHErVHcrVGMpIG1zLgogICAgIAo0LjIuNCkgQ29uZGl0aW9ucyBkZSBk6WNvbm5leGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgbG9ncyBUQ1AgZXQgSFRUUCBmb3Vybmlzc2VudCB1biBpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgZGUgbGEgc2Vzc2lvbiBkYW5zCmxlIGNoYW1wICdldGF0X3Rlcm1pbmFpc29uJywganVzdGUgYXZhbnQgbGUgbm9tYnJlIGRlIGNvbm5leGlvbnMgYWN0aXZlcy4gQydlc3QKdW4gY2hhbXAgbG9uZyBkZSAyIGNhcmFjdOhyZXMgZW4gVENQIGV0IGRlIDQgY2FyYWN06HJlcyBlbiBIVFRQLCBjaGFjdW4gYXlhbnQKdW5lIHNpZ25pZmljYXRpb24gcHLpY2lzZSA6CgogIC0gc3VyIGxlIHByZW1pZXIgY2FyYWN06HJlLCB1biBjb2RlIHBy6WNpc2FudCBsZSBwcmVtaWVyIOl26W5lbWVudCBxdWkgYSBjYXVz6QogICAgbGEgdGVybWluYWlzb24gZGUgbGEgc2Vzc2lvbiA6CgogICAgICAgIEMgOiBmZXJtZXR1cmUgaW5hdHRlbmR1ZSBkZSBsYSBzZXNzaW9uIFRDUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KCiAgICAgICAgUyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UKICAgICAgICAgICAgcmVmdXMgZXhwbGljaXRlIGRlIGNvbm5leGlvbiBkZSBsYSBwYXJ0IGRlIGNlIGRlcm5pZXIuCgogICAgICAgIFAgOiB0ZXJtaW5haXNvbiBwcultYXR1cullIGRlcyBzZXNzaW9ucyBwYXIgbGUgcHJveHksIHBvdXIgY2F1c2UKICAgICAgICAgICAgZCdpbXBvc2l0aW9uIGQndW5lIGxpbWl0ZSBzdXIgbGUgbm9tYnJlIGRlIGNvbm5leGlvbnMsIHBvdXIgY2F1c2UKICAgICAgICAgICAgZGUgY29uZmlndXJhdGlvbiAoZXg6IGZpbHRyZSBkJ1VSTCksIG91IHBhcmNlIHF1J3VuIGNvbnRy9GxlIGRlCiAgICAgICAgICAgIHPpY3VyaXTpIGEgZOl0ZWN06SBldCBibG9xdekgdW5lIGFub21hbGllIGRhbnMgbGEgculwb25zZSBkdQogICAgICAgICAgICBzZXJ2ZXVyIHF1aSBhdXJhaXQgcHUgY2F1c2VyIHVuZSBmdWl0ZSBkJ2luZm9ybWF0aW9ucyAocGFyIGV4ZW1wbGUsCiAgICAgICAgICAgIHVuIGNvb2tpZSBjYWNoYWJsZSkuCgogICAgICAgIFIgOiB1bmUgcmVzc291cmNlIHN1ciBsZSBwcm94eSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cwogICAgICAgICAgICBzb3VyY2UsIC4uLikuIEfpbulyYWxlbWVudCwgY2VsYSBhcnJpdmUgYXUgY291cnMgZGUgbCfpdGFibGlzc2VtZW50CiAgICAgICAgICAgIGQndW5lIGNvbm5leGlvbiwgZXQgbGVzIGxvZ3Mgc3lzdOhtZSBkb2l2ZW50IGNvbnRlbmlyIHVuZSBjb3BpZSBkZQogICAgICAgICAgICBsJ+lycmV1ciBwculjaXNlLgoKICAgICAgICBJIDogdW5lIGVycmV1ciBpbnRlcm5lIGEg6XTpIGlkZW50aWZp6WUgcGFyIGxlIHByb3h5IOAgbGEgc3VpdGUgZCd1bgogICAgICAgICAgICBhdXRvLWNvbnRy9GxlLiBDZWNpIG5lIGRvaXQgSkFNQUlTIGFycml2ZXIsIGV0IHZvdXMg6nRlcyBlbmNvdXJhZ+lzCiAgICAgICAgICAgIOAgcmVtb250ZXIgbidpbXBvcnRlIHF1ZWwgbG9nIGNvbnRlbmFudCBjZWNpIGNhciBpbCBzJ2FnaXJhIHVuIGJ1Zy4KCiAgICAgICAgYyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IGNsaWVudCBhIGV4cGly6SAoY2xpdGltZW91dCkuCgogICAgICAgIHMgOiBsZSBk6WxhaSBtYXhpbWFsIGQnYXR0ZW50ZSBkdSBzZXJ2ZXVyIGEgZXhwaXLpIChzcnZ0aW1lb3V0IGV0IGNvbnRpbWVvdXQpCgogICAgICAgIC0gOiB0ZXJtaW5haXNvbiBub3JtYWxlIGRlIHNlc3Npb24uCgogIC0gc3VyIGxlIHNlY29uZCBjYXJhY3TocmUsIGwn6XRhdCBkJ2F2YW5jZW1lbnQgZGUgbGEgc2Vzc2lvbiBUQ1AvSFRUUCBsb3JzIGRlCiAgICBsYSBmZXJtZXR1cmUgOgoKICAgICAgICBSIDogYXR0ZW50ZSBkJ3VuZSBSRVFVRVRFIEhUVFAgY29tcGzodGUgZGUgbGEgcGFydCBkdSBjbGllbnQuIFJpZW4gbidhCiAgICAgICAgICAgIOl06SB0cmFuc21pcyBhdSBzZXJ2ZXVyLgoKICAgICAgICBRIDogYXR0ZW50ZSBlbiBmaWxlIGQnYXR0ZW50ZSAoUVVFVUUpIGQndW5lIHBsYWNlIHBvdXIgYXZvaXIgdW5lCiAgICAgICAgICAgIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIuIE5lIHBldXQgYXBwYXJh7nRyZSBxdWUgc3VyIHVuIHNlcnZldXIKICAgICAgICAgICAgcG9zc+lkYW50IHVuIHBhcmFt6HRyZSAnbWF4Y29ubicuIEF1Y3VuZSBjb25uZXhpb24gbidhIOl06SBlbnZveellCiAgICAgICAgICAgIGF1IHNlcnZldXIuCgogICAgICAgIEMgOiBhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBDT05ORVhJT04gdmVycyBsZSBzZXJ2ZXVyLiBMZQogICAgICAgICAgICBzZXJ2ZXVyIHBldXQgYXUgcGx1cyBhdm9pciB2dSBsYSB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLCBtYWlzCiAgICAgICAgICAgIGF1Y3VuZSBkb25u6WUgbidhIOl06SDpY2hhbmfpZS4KCiAgICAgICAgSCA6IGF0dGVudGUsIHLpY2VwdGlvbiBvdSB0cmFpdGVtZW50IGRlcyBlbi106nRlcyBIVFRQICgiSEVBREVSUyIpLgoKICAgICAgICBEIDogdHJhbnNmZXJ0IGRlcyBET05ORUVTIGR1IHNlcnZldXIgdmVycyBsZSBjbGllbnQuCgogICAgICAgIEwgOiB0cmFuc2ZlcnQgZGVzIGRlcm5p6HJlcyAoIkxBU1QiKSBkb25u6WVzIGR1IHByb3h5IHZlcnMgbGUgY2xpZW50LAogICAgICAgICAgICBhbG9ycyBxdWUgbGUgc2VydmV1ciBhIGTpauAgZmluaS4KCiAgICAgICAgVCA6IHJlcXXqdGUgYmxvcXXpZSBlbiBtb2RlICJ0YXJwaXQiIHBhciBsZSBwcm94eS4gRWxsZSBhIOl06SBtYWludGVudWUKICAgICAgICAgICAgb3V2ZXJ0ZSB2ZXJzIGxlIGNsaWVudCBwZW5kYW50IHRvdXRlIGxhIGR1cullIGR1IGNvbnRpbWVvdXQgb3UKICAgICAgICAgICAganVzcXUn4CBsJ2FiYW5kb24gZGUgbGEgcGFydCBkdSBjbGllbnQuCgogICAgICAgIC0gOiB0ZXJtaW5haXNvbiBub3JtYWxlLCBhcHLocyBmaW4gZGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLgoKICAtIGxlIHRyb2lzaehtZSBjYXJhY3TocmUgaW5kaXF1ZSBsJ+l2ZW50dWVsbGUgaWRlbnRpZmljYXRpb24gZCd1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlICh1bmlxdWVtZW50IGVuIG1vZGUgSFRUUCkgOgoKICAgICAgICBOIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIG4nYSDpdOkgcHLpc2VudOkuIEMnZXN0IGfpbulyYWxlbWVudCBsZQogICAgICAgICAgICBjYXMgc3VyIGxlcyBOT1VWRUxMRVMgY29ubmV4aW9ucyBjbGllbnRzLgoKICAgICAgICBJIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIElOVkFMSURFIG5lIGNvcnJlc3BvbmRhbnQg4CBhdWN1bgogICAgICAgICAgICBzZXJ2ZXVyIGNvbm51LiBDZWNpIHBldXQg6nRyZSBk+yDgIHVuIGNoYW5nZW1lbnQgZGUgY29uZmlndXJhdGlvbgogICAgICAgICAgICBy6WNlbnQsIOAgZGVzIG3pbGFuZ2VzIGRlIG5vbXMgZGUgY29va2llcyBlbnRyZSBzaXRlcyBIVFRQL0hUVFBTLAogICAgICAgICAgICBvdSDgIHVuZSBhdHRhcXVlLgoKICAgICAgICBEIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIGNvcnJlc3BvbmRhbnQg4CB1biBzZXJ2ZXVyIGhvcnMKICAgICAgICAgICAgZCd1c2FnZSAoIkRPV04iKS4gU3VpdmFudCBsJ29wdGlvbiAncGVyc2lzdCcsIGlsIGEg6XTpIHJlbnZveekgdmVycwogICAgICAgICAgICB1biBhdXRyZSBzZXJ2ZXVyIG91IGEgdG91dCBkZSBt6m1lIHRlbnTpIGRlIHNlIGNvbm5lY3RlciBzdXIgY2VsdWkKICAgICAgICAgICAgY29ycmVzcG9uZGFudCBhdSBjb29raWUuCgogICAgICAgIFYgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgVkFMSURFIGV0IGEgcHUgc2UgY29ubmVjdGVyIGF1CiAgICAgICAgICAgIHNlcnZldXIgY29ycmVzcG9uZGFudC4KCiAgICAgICAgLSA6IG5vbiBhcHBsaXF1YWJsZSAocGFzIGRlIGNvb2tpZSBwb3NpdGlvbm7pIGRhbnMgbGEgY29uZmlndXJhdGlvbikuCgogIC0gbGUgZGVybmllciBjYXJhY3TocmUgaW5kaXF1ZSBsJ+l2ZW50dWVsIHRyYWl0ZW1lbnQgZWZmZWN0dekgc3VyIHVuIGNvb2tpZSBkZQogICAgcGVyc2lzdGVuY2UgcmV0cm91cm7pIHBhciBsZSBzZXJ2ZXVyICh1bmlxdWVtZW50IGVuIG1vZGUgSFRUUCkgOgoKICAgICAgICBOIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RhbmNlIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLCBldCBhdWN1bgogICAgICAgICAgICBuJ2Eg6XTpIGluc+ly6S4KCiAgICAgICAgSSA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgbGUKICAgICAgICAgICAgcHJveHkgZW4gYSBJTlNFUkUgdW4uCgogICAgICAgIFAgOiB1biBjb29raWUgZGUgcGVyc2lzdGVuY2UgYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyIGV0IHRyYW5zbWlzCiAgICAgICAgICAgIHRlbCBxdWVsICgiUEFTU0lGIikuCgogICAgICAgIFIgOiBsZSBjb29raWUgcmV0b3VybukgcGFyIGxlIHNlcnZldXIgYSDpdOkgUkVFQ1JJVCBwYXIgbGUgcHJveHkuCgogICAgICAgIEQgOiBsZSBjb29raWUgcHLpc2VudOkgcGFyIGxlIHNlcnZldXIgYSDpdOkgREVUUlVJVCBwYXIgbGUgcHJveHkgcG91cgogICAgICAgICAgICBuZSBwYXMg6nRyZSByZXRvdXJu6SBhdSBjbGllbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUKCgpMYSBjb21iaW5haXNvbiBkZXMgZGV1eCBwcmVtaWVycyBpbmRpY2F0ZXVycyBmb3Vybml0IHVuZSBncmFuZGUgcXVhbnRpdGnpCmQnaW5mb3JtYXRpb25zIHN1ciBjZSBxdWkgc2UgcGFzc2FpdCBsb3JzcXVlIGxhIHNlc3Npb24gcydlc3QgdGVybWlu6WUuIENlbGEKcGV1dCBub3RhbW1lbnQgYWlkZXIg4CBk6XRlY3RlciB1bmUgc2F0dXJhdGlvbiBkZSBzZXJ2ZXVyLCBkZXMgdHJvdWJsZXMgculzZWF1LApkZXMg6XB1aXNlbWVudHMgZGUgcmVzc291cmNlcyBzeXN06G1lIGxvY2FsZXMsIGRlcyBhdHRhcXVlcywgZXRjLi4uCgpMZXMgY29tYmluYWlzb25zIGQnaW5kaWNhdGV1cnMgbGVzIHBsdXMgZnLpcXVlbnRlcyBzb250IOludW3pcullcyBpY2kuCgogICBJbmRpYyAgUmFpc29uCiAgICAgIENSICBMZSBjbGllbnQgYSBhYmFuZG9ubukgYXZhbnQgZCfpbWV0dHJlIHVuZSByZXF16nRlIGNvbXBs6HRlLiBJbCBlc3QKICAgICAgICAgIHRy6HMgcHJvYmFibGUgcXVlIGxhIHJlcXXqdGUgYWl0IOl06SB0YXDpZSDgIGxhIG1haW4gZGFucyB1biBjbGllbnQKICAgICAgICAgIHRlbG5ldCBldCBhYm9ydOllIHRyb3AgdPR0LgoKICAgICAgY1IgIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF2YW50IHLpY2VwdGlvbiBkJ3VuZSByZXF16nRlCiAgICAgICAgICBjb21wbOh0ZS4gQ2VjaSBlc3QgcGFyZm9pcyBjYXVz6SBwYXIgdW4gcGFyYW3odHJlIFRDUCBNU1MgdHJvcCDpbGV26QogICAgICAgICAgc3VyIGxlIGNsaWVudCBwb3VyIGRlcyBy6XNlYXV4IFBQUG9FIHN1ciBBRFNMIHF1aSBuZSBwZXV2ZW50IHBhcwogICAgICAgICAgdHJhbnNwb3J0ZXIgZGVzIHBhcXVldHMgZW50aWVycywgb3UgcGFyIGRlcyBjbGllbnRzIHF1aSDpbnZvaWVudCBkZXMKICAgICAgICAgIHJlcXXqdGVzIOAgbGEgbWFpbiBldCBuZSB0YXBlbnQgcGFzIGFzc2V6IHZpdGUuCgogICAgICBTQyAgTGUgc2VydmV1ciBhIGV4cGxpY2l0ZW1lbnQgcmVmdXPpIGxhIGNvbm5leGlvbiAobGUgcHJveHkgYSByZed1IHVuCiAgICAgICAgICBSU1QgVENQIG91IHVuIG1lc3NhZ2UgSUNNUCBlbiByZXRvdXIpLiBEYW5zIGNlcnRhaW5zIGNhcywgY2VsYSBwZXV0CiAgICAgICAgICDqdHJlIGxhIGNvdWNoZSBy6XNlYXUgcXVpIGluZGlxdWUgYXUgcHJveHkgcXVlIGxlIHNlcnZldXIgbidlc3QgcGFzCiAgICAgICAgICBqb2lnbmFibGUgKHAuZXg6IHBhcyBkZSByb3V0ZSwgcGFzIGRlIHLpcG9uc2UgQVJQIGVuIGxvY2FsLCBldGMuLi4pCgogICAgICBzQyAgTGEgY29ubmV4aW9uIGF1IHNlcnZldXIgbidhIHBhcyBwdSBzJ+l0YWJsaXIgZGFucyBsZSB0ZW1wcyBpbXBhcnRpLgoKICAgICAgUEMgIExlIHByb3h5IGEgcmVmdXPpIGQn6XRhYmxpciB1bmUgY29ubmV4aW9uIGF1IHNlcnZldXIgcGFyY2UgcXVlIGxlCiAgICAgICAgICBub21icmUgZGUgY29ubmV4aW9ucyBhIGF0dGVpbnQgbGEgbGltaXRlICdtYXhjb25uJyAoZ2xvYmFsIG91IGRlCiAgICAgICAgICBsJ2luc3RhbmNlKS4gTGUgcGFyYW3odHJlICdtYXhjb25uJyBkZSBsJ2luc3RhbmNlIHBvdXJyYWl0IOp0cmUKICAgICAgICAgIGF1Z21lbnTpLCB0b3V0IGNvbW1lIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZ2xvYmFsLgoKICAgICAgUkMgIFVuZSByZXNzb3VyY2UgbG9jYWxlIGEg6XTpIOlwdWlz6WUgKG3pbW9pcmUsIHNvY2tldHMsIHBvcnRzIHNvdXJjZSksCiAgICAgICAgICBlbXDqY2hhbnQgbGEgY29ubmV4aW9uIGF1IHNlcnZldXIgZGUgcyfpdGFibGlyLiBMZXMgbG9ncyBkJ2VycmV1cnMKICAgICAgICAgIGRpcm9udCBwculjaXPpbWVudCBjZSBxdWkgbWFucXVhaXQuIERhbnMgdG91cyBsZXMgY2FzLCBsZSBzZXVsIHJlbehkZQogICAgICAgICAgY29uc2lzdGUg4CBhZmZpbmVyIGxlIHBhcmFt6XRyYWdlIHN5c3TobWUuCgogICAgICBjSCAgTGUgdGVtcHMgaW1wYXJ0aSBhdSBjbGllbnQgYSBleHBpcukgYXUgY291cnMgZCd1bmUgcmVxdep0ZSBQT1NULiBDZWNpCiAgICAgICAgICBlc3QgcGFyZm9pcyBjYXVz6SBwYXIgdW4gcGFyYW3odHJlIFRDUCBNU1MgdHJvcCDpbGV26SBzdXIgbGUgY2xpZW50CiAgICAgICAgICBwb3VyIGRlcyBy6XNlYXV4IFBQUG9FIHN1ciBBRFNMIHF1aSBuZSBwZXV2ZW50IHBhcyB0cmFuc3BvcnRlciBkZXMKICAgICAgICAgIHBhcXVldHMgZW50aWVycy4KCiAgICAgIENIICBMZSBjbGllbnQgYSBhYmFuZG9ubukgYWxvcnMgcXUnaWwgYXR0ZW5kYWl0IHVuIGTpYnV0IGRlIHLpcG9uc2UgZGUgbGEKICAgICAgICAgIHBhcnQgZHUgc2VydmV1ci4gQ2VsYSBwZXV0IOp0cmUgY2F1c+kgcGFyIGxlIHNlcnZldXIgcXVpIG1ldHRhaXQgdHJvcAogICAgICAgICAgZGUgdGVtcHMg4CBy6XBvbmRyZSwgb3UgcGFyIHVuIGNsaWVudCBjbGlxdWFudCBwculjaXBpdGFtbWVudCBzdXIgbGUKICAgICAgICAgIGJvdXRvbiAnU3RvcCcuCgogICAgICBDUSAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1ZSBzYSBzZXNzaW9uIOl0YWl0IG1pc2UgZW4gZmlsZQogICAgICAgICAgZCdhdHRlbnRlIHBvdXIgb2J0ZW5pciB1biBzZXJ2ZXVyIGF2ZWMgc3VmZmlzYW1tZW50IGRlIGNvbm5leGlvbnMKICAgICAgICAgIGxpYnJlcyBwb3VyIGwnYWNjZXB0ZXIuIENlbGEgc2lnbmlmaWUgc29pdCBxdWUgbCdlbnNlbWJsZSBkZXMKICAgICAgICAgIHNlcnZldXJzIOl0YWllbnQgc2F0dXLpcywgc29pdCBxdWUgbGUgc2VydmV1ciBhc3NpZ27pIGEgbWlzIHRyb3AgZGUKICAgICAgICAgIHRlbXBzIOAgculwb25kcmUuCgogICAgICBDVCAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1ZSBzYSBzZXNzaW9uIOl0YWl0IGJsb3F16WUgZW4gbW9kZQogICAgICAgICAgdGFycGl0LgoKICAgICAgc1EgIExhIHNlc3Npb24gYSBhdHRlbmR1IHRyb3AgbG9uZ3RlbXBzIGVuIGZpbGUgZCdhdHRlbnRlIGV0IGEg6XTpCiAgICAgICAgICBleHBpcullLgoKICAgICAgU0ggIExlIHNlcnZldXIgYSBhYm9ydOkgYnJ1dGFsZW1lbnQgYWxvcnMgcXUnaWwgZGV2YWl0IGVudm95ZXIgc2VzCiAgICAgICAgICBlbi106nRlcy4gRW4gZ+lu6XJhbCwgY2VsYSBpbmRpcXVlIHF1J2lsIGEgY3Jhc2jpLgoKICAgICAgc0ggIExlIHNlcnZldXIgbidhIHBhcyBwdSBy6XBvbmRyZSBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSwgY2UgcXVpIG1vbnRyZQogICAgICAgICAgZGVzIHRyYW5zYWN0aW9ucyB0cm9wIGxvbmd1ZXMsIHByb2JhYmxlbWVudCBjYXVz6WVzIHBhciB1biBiYWNrLWVuZAogICAgICAgICAgc2F0dXLpLiBMZXMgc2V1bGVzIHNvbHV0aW9ucyBzb250IGRlIGNvcnJpZ2VyIGxlIHByb2Js6G1lIHN1cgogICAgICAgICAgbCdhcHBsaWNhdGlvbiwgZCdhY2Nyb+50cmUgbGUgcGFyYW3odHJlICdzcnZ0aW1lb3V0JyBwb3VyIHN1cHBvcnRlcgogICAgICAgICAgZGVzIGF0dGVudGVzIHBsdXMgbG9uZ3VlcyBhdSByaXNxdWUgcXVlIGxlcyBjbGllbnRzIGFiYW5kb25uZW50IOAKICAgICAgICAgIGxldXIgdG91ciwgb3UgYmllbiBkJ2Fqb3V0ZXIgZGVzIHNlcnZldXJzLgogICAgICAKICAgICAgUFIgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCwgc29pdCDgIGNhdXNlIGQndW5lIHN5bnRheGUKICAgICAgICAgIEhUVFAgaW52YWxpZGUsIGF1cXVlbCBjYXMgaWwgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDAgYXUgY2xpZW50LAogICAgICAgICAgc29pdCDgIGNhdXNlIGQndW5lIHJlcXXqdGUgdmFsaWRhbnQgdW4gZmlsdHJlIGQnaW50ZXJkaWN0aW9uLCBhdXF1ZWwKICAgICAgICAgIGNhcyBsZSBwcm94eSBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMy4KCiAgICAgIFBIICBMZSBwcm94eSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1IHNlcnZldXIgcGFyY2UgcXUnZWxsZSDpdGFpdCBpbnZhbGlkZSwKICAgICAgICAgIGluY29tcGzodGUsIGRhbmdlcmV1c2UgKCdjYWNoZSBjb250cm9sJyksIG91IHBhcmNlIHF1J2VsbGUgdmFsaWRhaXQKICAgICAgICAgIHVuIGZpbHRyZSBkZSBz6WN1cml06S4gRGFucyB0b3VzIGxlcyBjYXMsIHVuZSBlcnJldXIgSFRUUCA1MDIgZXN0CiAgICAgICAgICByZW52b3npZSBhdSBjbGllbnQuCgogICAgICBQVCAgTGUgcHJveHkgYSBibG9xdekgdW5lIHJlcXXqdGUgZHUgY2xpZW50IGV0IGEgbWFpbnRlbnUgc2EgY29ubmVjdGlvbgogICAgICAgICAgb3V2ZXJ0ZSBhdmFudCBkZSBsdWkgcmV0b3VybmVyIHVuZSBlcnJldXIgIjUwMCBzZXJ2ZXIgZXJyb3IiLiBSaWVuCiAgICAgICAgICBuJ2Eg6XTpIGVudm956SBhdSBzZXJ2ZXVyLgoKICAgICAgY0QgIExlIGNsaWVudCBuJ2EgcGFzIGx1IGRlIGRvbm7pZXMgcGVuZGFudCBsZSB0ZW1wcyBxdWkgbHVpIOl0YWl0CiAgICAgICAgICBpbXBhcnRpLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgcHJvYmzobWVzIHLpc2VhdSBj9HTpIGNsaWVudC4KCiAgICAgIENEICBMZSBjbGllbnQgYSBhYm9ydOkgc2EgY29ubmVjdGlvbiBkZSBtYW5p6HJlIGluYXR0ZW5kdWUgcGVuZGFudCBsZQogICAgICAgICAgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLiBDZWNpIGVzdCBwcm92b3F16SBzb2l0IHBhciBsZSBjcmFzaCBkJ3VuCiAgICAgICAgICBuYXZpZ2F0ZXVyLCBvdSBwYXIgdW5lIHNlc3Npb24gZW4gSFRUUCBrZWVwLWFsaXZlIGVudHJlIGxlIHNlcnZldXIKICAgICAgICAgIGV0IGxlIGNsaWVudCB0ZXJtaW7pZSBlbiBwcmVtaWVyIHBhciBsZSBjbGllbnQuCgogICAgICBzRCAgTGUgc2VydmV1ciBuJ2EgcmllbiBmYWl0IGR1cmFudCBsZSB0ZW1wcyBpbXBhcnRpIHBhciBsZSBwYXJhbeh0cmUKICAgICAgICAgICdzcnZ0aW1lb3V0Jy4gQ2VjaSBlc3Qgc291dmVudCBjYXVz6SBwYXIgZGVzIHRpbWVvdXRzIHRyb3AgY291cnRzCiAgICAgICAgICBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0IChmaXJld2FsbHMsIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UpCiAgICAgICAgICBzaXR16XMgZW50cmUgbGUgcHJveHkgZXQgbGUgc2VydmV1ci4KCjQuMi41KSBDYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGVwdWlzIGxhIHZlcnNpb24gMS4xLjI5LCBsZXMgY2FyYWN06HJlcyBub24taW1wcmltYWJsZXMgbmUgc29udCBwbHVzIGVudm956XMKdGVscyBxdWVscyBkYW5zIGxlcyBsaWduZXMgZGUgbG9ncywgbWFpcyBpbnNjcml0cyBzb3VzIGxhIGZvcm1lIGRlIGRldXggY2hpZmZyZXMKaGV4YWTpY2ltYXV4LCBwculmaXjpcyBkdSBjYXJhY3TocmUgZCfpY2hhcHBlbWVudCAnIycuIExlcyBzZXVscyBjYXJhY3TocmVzCmRvculuYXZhbnQgbG9ndelzIHRlbHMgcXVlbHMgc29udCBjb21wcmlzIGVudHJlIDMyIGV0IDEyNi4gQmllbiDpdmlkZW1tZW50LCBsZQpjYXJhY3TocmUgZCfpY2hhcHBlbWVudCAnIycgZXN0IGx1aS1t6m1lIGVuY29k6SBhZmluIGRlIGxldmVyIGwnYW1iaWd1aXTpLiBJbCBlbgplc3QgZGUgbeptZSBwb3VyIGxlIGNhcmFjdOhyZSAnIicsIGFpbnNpIHF1ZSBsZXMgY2FyYWN06HJlcyAneycsICd8JyBldCAnfScgcG91cgpsZXMgZW4tdOp0ZXMuCgo0LjIuNikgQ2FwdHVyZSBkJ2VuLXTqdGVzIEhUVFAgZXQgZGUgY29va2llcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSB2ZXJzaW9uIDEuMS4yMyBhIGFwcG9ydOkgbGEgY2FwdHVyZSBkZXMgY29va2llcywgZXQgbGEgdmVyc2lvbiAxLjEuMjkgbGEKY2FwdHVyZSBkJ2VuLXTqdGVzLiBUb3V0IGNlY2kgZXN0IGVmZmVjdHXpIGVuIHV0aWxpc2FudCBsZSBtb3QtY2zpICdjYXB0dXJlJy4KCkxlcyBjYXB0dXJlcyBkZSBjb29raWVzIGZhY2lsaXRlbnQgbGUgc3VpdmkgZXQgbGEgcmVjb25zdGl0dXRpb24gZCd1bmUgc2Vzc2lvbgp1dGlsaXNhdGV1ci4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGNhcHR1cmUgY29va2llIDxwculmaXhlX2Nvb2tpZT4gbGVuIDxsb25ndWV1cl9jYXB0dXJlPgoKQ2VjaSBhY3RpdmVyYSBsYSBjYXB0dXJlIGRlIGNvb2tpZXMg4CBsYSBmb2lzIGRhbnMgbGVzIHJlcXXqdGVzIGV0IGRhbnMgbGVzCnLpcG9uc2VzLiBEZSBjZXR0ZSBtYW5p6HJlLCBpbCBkZXZpZW50IGZhY2lsZSBkZSBk6XRlY3RlciBsb3JzcXUndW4gdXRpbGlzYXRldXIKYmFzY3VsZSBzdXIgdW5lIG5vdXZlbGxlIHNlc3Npb24gcGFyIGV4ZW1wbGUsIGNhciBsZSBzZXJ2ZXVyIGx1aSBy6WFzc2lnbmVyYSB1bgpub3V2ZWF1IGNvb2tpZS4KCkxlIHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlcmEgcGFyIDxwculmaXhlX2Nvb2tpZT4gc2VyYSBjYXB0dXLpLCBldAp0cmFuc21pcyBzb3VzIGxhIGZvcm1lICJOT009dmFsZXVyIiwgc2FucyB0b3V0ZWZvaXMsIGV4Y+lkZXIgPGxvbmd1ZXVyX2NhcHR1cmU+CmNhcmFjdOhyZXMgKDY0IGF1IG1heGltdW0pLiBMb3JzcXVlIGxlIG5vbSBkdSBjb29raWUgZXN0IGZpeGUgZXQgY29ubnUsIG9uIHBldXQKbGUgc3VmZml4ZXIgZHUgc2lnbmUgIj0iIHBvdXIgcydhc3N1cmVyIHF1J2F1Y3VuIGF1dHJlIGNvb2tpZSBuZSBwcmVuZHJhIHNhCnBsYWNlIGRhbnMgbGVzIGxvZ3MuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgICMgY2FwdHVyZSBkdSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZSBwYXIgIkFTUFNFU1NJT04iCiAgICBjYXB0dXJlIGNvb2tpZSBBU1BTRVNTSU9OIGxlbiAzMgoKICAgICMgY2FwdHVyZSBkdSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBlc3QgZXhhY3RlbWVudCAidmdudmlzaXRvciIKICAgIGNhcHR1cmUgY29va2llIHZnbnZpc2l0b3I9IGxlbiAzMgoKRGFucyBsZXMgbG9ncywgbGUgY2hhbXAgcHLpY+lkYW50IGwnaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGNvbnRpZW50IGxlIGNvb2tpZQpwb3NpdGlvbm7pIHBhciBsZSBzZXJ2ZXVyLCBwculj6WTpIGR1IGNvb2tpZSBwb3NpdGlvbm7pIHBhciBsZSBjbGllbnQuIENoYWN1bgpkZSBjZXMgY2hhbXBzIGVzdCByZW1wbGFj6SBwYXIgbGUgc2lnbmUgIi0iIGxvcnNxdSdhdWN1biBjb29raWUgbidlc3QgZm91cm5pCnBhciBsZSBjbGllbnQgb3UgbGUgc2VydmV1ciwgb3UgbG9yc3F1ZSBsJ29wdGlvbiBlc3QgZOlzYWN0aXbpZS4uCgpMZXMgY2FwdHVyZXMgZCdlbi106nRlcyBvbnQgdW4gcvRsZSBjb21wbOh0ZW1lbnQgZGlmZulyZW50LiBFbGxlcyBzb250IHV0aWxlcwpwb3VyIHN1aXZyZSB1biBpZGVudGlmaWFudCBkZSByZXF16nRlIGdsb2JhbGVtZW50IHVuaXF1ZSBwb3NpdGlvbm7pIHBhciB1bgphdXRyZSBwcm94eSBlbiBhbW9udCwgcG91ciBqb3VybmFsaXNlciBsZXMgbm9tcyBkZSBzZXJ2ZXVycyB2aXJ0dWVscywgbGVzIHR5cGVzCmRlIGNsaWVudHMgd2ViLCBsYSBsb25ndWV1ciBkZXMgUE9TVCwgbGVzICdyZWZlcnJlcnMnLCBldGMuIERhbnMgbGEgculwb25zZSwgb24KcGV1dCBjaGVyY2hlciBkZXMgaW5mb3JtYXRpb25zIHJlbGF0aXZlcyDgIGxhIGxvbmd1ZXVyIGFubm9uY+llIGRlIGxhIHLpcG9uc2UsCmxlIGZvbmN0aW9ubmVtZW50IGF0dGVuZHUgZHUgY2FjaGUsIG91IGVuY29yZSBsYSBsb2NhbGlzYXRpb24gZCd1biBvYmpldCBlbiBjYXMKZGUgcmVkaXJlY3Rpb24uIFRvdXQgY29tbWUgcG91ciBsZXMgY2FwdHVyZXMgZGUgY29va2llcywgaWwgZXN0IHBvc3NpYmxlCmQnaW5jbHVyZSBsZXMgZW4tdOp0ZXMgZGUgcmVxdep0ZXMgZXQgZGUgculwb25zZSBzaW11bHRhbultZW50LiBMYSBzeW50YXhlIGVzdApsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KCk5vdGU6IExlcyBub21zIGQnZW4tdOp0ZXMgbmUgc29udCBwYXMgc2Vuc2libGVzIOAgbGEgY2Fzc2UuCgpFeGVtcGxlczoKLS0tLS0tLS0tCiAgICAjIGNvbnNlcnZlciBsZSBub20gZHUgc2VydmV1ciB2aXJ0dWVsIGFjY+lk6SBwYXIgbGUgY2xpZW50CiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgIyBub3RlciBsYSBsb25ndWV1ciBkZXMgZG9ubullcyBlbnZveellcyBkYW5zIHVuIFBPU1QKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAoKICAgICMgbm90ZXIgbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSBwYXIgbGUgc2VydmV1cgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgIyBub3RlciBsJ1VSTCBkZSByZWRpcmVjdGlvbgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgpMZXMgZW4tdOp0ZXMgbm9uIHRyb3V26XMgc29udCBsb2d16XMg4CB2aWRlLCBldCBzaSB1biBlbi106nRlIGFwcGFyYWl0IHBsdXNpZXVycwpmb2lzLCBzZXVsZSBsYSBkZXJuaehyZSBvY2N1cmVuY2Ugc2VyYSBjb25zZXJ26WUuIExlcyBlbi106nRlcyBkZSByZXF16nRlIHNvbnQKcmVncm91cOlzIGVudHJlIGRldXggYWNjb2xhZGVzICd7JyBldCAnfScgZGFucyBsJ29yZHJlIGRlIGxldXIgZOljbGFyYXRpb24sIGV0CmNoYWN1biBz6XBhculzIHBhciB1bmUgYmFycmUgdmVydGljYWxlICd8Jywgc2FucyBhdWN1biBlc3BhY2UuIExlcyBlbi106nRlcyBkZQpy6XBvbnNlIHNvbnQgcHLpc2VudOlzIGRlIGxhIG3qbWUgbWFuaehyZSwgbWFpcyBhcHLocyB1biBlc3BhY2Ugc3VpdmFudCBsZSBibG9jCmQnZW4tdOp0ZSBkZSByZXF16nRlLiBMZSB0b3V0IHBy6WPoZGUgbGEgcmVxdep0ZSBIVFRQLiBFeGVtcGxlIDoKCiAgQ29uZmlnOgoKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIFJlZmVyZXIgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBTZXJ2ZXIgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENhY2hlLUNvbnRyb2wgbGVuIDgKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFZpYSBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKICBMb2cgOgoKICAgIEF1ZyAgOSAyMDoyNjowOSBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDE0IFswOS9BdWcvMjAwNDoyMDoyNjowOV0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzAvMTYyLysxNjIgMjAwICszNTAgLSAtIC0tLS0gMC8wLzAgMC8wIHtmci5hZHNlcnZlci55YWhvby5jb3x8aHR0cDovL2ZyLmY0MTYubWFpbC59IHt8ODY0fHByaXZhdGV8fH0gIkdFVCBodHRwOi8vZnIuYWRzZXJ2ZXIueWFob28uY29tLyIKICAgIEF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDIwIFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzAvMTgyLysxODIgMjAwICsyNzkgLSAtIC0tLS0gMC8wLzAgMC8wIHt3Lm9kcy5vcmd8fH0ge0Zvcm1pbHV4LzAuMS44fDM0OTV8fHx9ICJHRVQgaHR0cDovL3cub2RzLm9yZy9zeXRhZGluLmh0bWwgSFRUUC8xLjEiIAogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjggWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMi8xMjYvKzEyOCAyMDAgKzIyMyAtIC0gLS0tLSAwLzAvMCAwLzAge3d3dy5pbmZvdHJhZmljLmNvbXx8aHR0cDovL3cub2RzLm9yZy9zeXR9IHtBcGFjaGUvMi4wLjQwIChSZWQgSHw5MDY4fHx8fSAiR0VUIGh0dHA6Ly93d3cuaW5mb3RyYWZpYy5jb20vaW1hZ2VzL2xpdmUvY2FydGVzaWRmL2dyYW5kZXMvaWRmX25lLnBuZyBIVFRQLzEuMSIgCgo0LjIuNykgRXhlbXBsZXMgZGUgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA2NTU5LzAvNy8xNDcvNjcyMyAyMDAgMjQzIC0gLSAtLS0tIDEvMy81ICAwLzAiSEVBRCAvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgbG9uZ3VlICg2LjVzKSBzYWlzaWUg4CBsYSBtYWluIGF2ZWMgdW4gY2xpZW50IHRlbG5ldC4gTGUgc2VydmV1ciBhCiAgICAgculwb25kdSBlbiAxNDcgbXMgZXQgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZSBub3JtYWxlbWVudCAoJy0tLS0nKQoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgNjU1OS8xMjMwLzcvMTQ3LzY4NzAgMjAwIDI0MyAtIC0gLS0tLSA5OS8yMzkvMzI0IDAvOSAiSEVBRCAvIEhUVFAvMS4wIgogID0+IElkZW0sIG1haXMgbGEgcmVxdep0ZSBhIOl06SBtaXNlIGVuIGF0dGVudGUgZGFucyBsYSBmaWxlIGdsb2JhbGUgZGVycmnocmUKICAgICA5IGF1dHJlcyByZXF16nRlcyBk6WrgIHBy6XNlbnRlcywgZXQgeSBhIGF0dGVuZHUgMTIzMCBtcy4KCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAxLzMvMyAwLzAgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgcG91ciB1biBsb25nIHRyYW5zZmVydC4gTCdvcHRpb24gJ2xvZ2FzYXAnIOl0YWl0IHNw6WNpZmnpZSBkb25jIGxlCiAgICAgbG9nIGEg6XTpIGfpbuly6SBqdXN0ZSBhdmFudCBsZSB0cmFuc2ZlcnQgZGUgZG9ubullcy4gTGUgc2VydmV1ciBhIHLpcG9uZHUKICAgICBlbiAxNCBtcywgMjQzIG9jdGV0cyBkJ2VuLXTqdGVzIG9udCDpdOkgdHJhbnNm6XLpcyBhdSBjbGllbnQsIGV0IGxlIHRlbXBzCiAgICAgdG90YWwgZW50cmUgbCdhY2NlcHQoKSBldCBsZSBwcmVtaWVyIG9jdGV0IGRlIGRvbm7pZSBlc3QgZGUgMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNC8zMCA1MDIgMjQzIC0gLSBQSC0tIDAvMi8zIDAvMCAiR0VUIC9jZ2ktYmluL2J1Zy5jZ2k/IEhUVFAvMS4wIgogID0+IGxlIHByb3h5IGEgYmxvcXXpIHVuZSBy6XBvbnNlIGR1IHNlcnZldXIgc29pdCDgIGNhdXNlIGQndW4gZmlsdHJlICdyc3BkZW55JwogICAgIG91ICdyc3BpZGVueScsIHNvaXQgcGFyY2UgcXUnaWwgYSBk6XRlY3TpIHVuIHJpc3F1ZSBkZSBmdWl0ZSBzZW5zaWJsZQogICAgIGQnaW5mb3JtYXRpb25zIHJpc3F1YW50IGQn6nRyZSBjYWNo6WVzLiBEYW5zIGNlIGNhcywgbGEgculwb25zZSBlc3QKICAgICByZW1wbGFj6WUgcGFyICc1MDIgYmFkIGdhdGV3YXknLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ4IFsxNS9PY3QvMjAwMzoxNToxODo1NV0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS8tMS84NDkwIC0xIDAgLSAtIENSLS0gMC8yLzIgMC8wICIiIAogID0+IExlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGV0IGEgcmVmZXJt6SBsYSBjb25uZXhpb24gbHVpLW3qbWUKICAgICAoJ0MtLS0nKSBhdSBib3V0IGRlIDguNXMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4KICAgICBBdWN1bmUgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIuCgotIGhhcHJveHlbMTgxMTNdOiAxMjcuMC4wLjE6MzQ1NDkgWzE1L09jdC8yMDAzOjE1OjE5OjA2XSByZWxhaXMtaHR0cCA8Tk9TUlY+IC0xLy0xLy0xLy0xLzUwMDAxIDQwOCAwIC0gLSBjUi0tIDAvMi8yIDAvMCAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBzb24gdGltZS1vdXQgYSBleHBpcukgKCdjLS0tJykgYXUKICAgICBib3V0IGRlIDUwcywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbi106nRlICgnLVItLScpLiBBdWN1bmUKICAgICBjb25uZXhpb24gbidhIOl06SBlbnZveellIHZlcnMgbGUgc2VydmV1ciwgbWFpcyBsZSByZWxhaXMgYSB0b3V0IGRlIG3qbWUKICAgICBwdSByZW52b3llciB1biBtZXNzYWdlIDQwOCBhdSBjbGllbnQuCgotIGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC81MDA3IDAgY0QKICA9PiBsb2cgZW4gbW9kZSAndGNwbG9nJy4gRXhwaXJhdGlvbiBkdSB0aW1lLW91dCBj9HTpIGNsaWVudCAoJ2NEJykgYXUgYm91dCBkZQogICAgIDVzLgoKLSBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gMTE1LzIwMi8yMDUgMC8wICJIRUFEIC8gSFRUUC8xLjAiIAogID0+IExhIHJlcXXqdGUgY2xpZW50IG1ldCAzcyDgIGVudHJlciAocGV1dC3qdHJlIHVuIHByb2Js6G1lIHLpc2VhdSksIGV0IGxhCiAgICAgY29ubmV4aW9uICgnU0MtLScpIHZlcnMgbGUgc2VydmV1ciDpY2hvdWUgYXUgYm91dCBkZSA0IHRlbnRhdGl2ZXMgZGUgMgogICAgIHNlY29uZGVzIChyZXRyaWVzIDMgZGFucyBsYSBjb25mKSwgcHVpcyB1biBjb2RlIDUwMyBlc3QgcmV0b3VybukgYXUKICAgICBjbGllbnQuIElsIHkgYXZhaXQgMTE1IGNvbm5leGlvbnMgc3VyIGNlIHNlcnZldXIsIDIwMiBjb25uZXhpb25zIHN1ciBjZXR0ZQogICAgIGluc3RhbmNlLCBldCAyMDUgc3VyIGwnZW5zZW1ibGUgZGVzIGluc3RhbmNlcyBwb3VyIGNlIHByb2Nlc3N1cy4gSWwgZXN0CiAgICAgcG9zc2libGUgcXVlIGxlIHNlcnZldXIgYWl0IHJlZnVz6SBsYSBjb25uZXhpb24gcGFyY2UgcXUnaWwgeSBlbiBhdmFpdAogICAgIGTpauAgdHJvcCBkJ+l0YWJsaWVzLgoKCjQuMykgTW9kaWZpY2F0aW9uIGRlcyBlbi106nRlcyBIVFRQCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQIHVuaXF1ZW1lbnQsIGlsIGVzdCBwb3NzaWJsZSBkZSByZW1wbGFjZXIgY2VydGFpbnMgZW4tdOp0ZXMgZGFucyBsYQpyZXF16nRlIGV0L291IGxhIHLpcG9uc2Ug4CBwYXJ0aXIgZCdleHByZXNzaW9ucyBy6Wd1bGnocmVzLiBJbCBlc3Qg6WdhbGVtZW50CnBvc3NpYmxlIGRlIGJsb3F1ZXIgY2VydGFpbmVzIHJlcXXqdGVzIGVuIGZvbmN0aW9uIGR1IGNvbnRlbnUgZGVzIGVuLXTqdGVzIG91CmRlIGxhIHJlcXXqdGUuIFVuZSBsaW1pdGF0aW9uIGNlcGVuZGFudCA6IGxlcyBlbi106nRlcyBmb3VybmlzIGF1IG1pbGlldSBkZQpjb25uZXhpb25zIHBlcnNpc3RlbnRlcyAoa2VlcC1hbGl2ZSkgbmUgc29udCBwYXMgdnVzIGNhciBpbHMgc29udCBjb25zaWTpculzCmNvbW1lIGZhaXNhbnQgcGFydGllIGRlcyDpY2hhbmdlcyBkZSBkb25u6WVzIGNvbnPpY3V0aWZzIOAgbGEgcHJlbWnocmUgcmVxdep0ZS4KTGVzIGRvbm7pZXMgbmUgc29udCBwYXMgYWZmZWN06WVzLCBjZWNpIG5lIHMnYXBwbGlxdWUgcXUnYXV4IGVuLXTqdGVzLiAKCkxhIHN5bnRheGUgZXN0IDoKICAgcmVxYWRkICAgIDxzdHJpbmc+ICAgICAgICAgICAgIHBvdXIgYWpvdXRlciB1biBlbi106nRlIGRhbnMgbGEgcmVxdep0ZQogICByZXFyZXAgICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgcG91ciBtb2RpZmllciBsYSByZXF16nRlCiAgIHJlcWlyZXAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWRlbCAgICA8c2VhcmNoPiAgICAgICAgICAgICBwb3VyIHN1cHByaW1lciB1biBlbi106nRlIGRhbnMgbGEgcmVxdep0ZQogICByZXFpZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFhbGxvdyAgPHNlYXJjaD4gICAgICAgICAgICAgYXV0b3Jpc2VyIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWFsbG93IDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVueSAgIDxzZWFyY2g+ICAgICAgICAgICAgIGludGVyZGlyZSBsYSByZXF16nRlIHNpIHVuIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJlcWlkZW55ICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcXBhc3MgICA8c2VhcmNoPiAgICAgICAgICAgICBpbmhpYmUgY2VzIGFjdGlvbnMgc3VyIGxlcyBlbi106nRlcyB2YWxpZGFudCA8c2VhcmNoPgogICByZXFpcGFzcyAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXF0YXJwaXQgPHNlYXJjaD4gICAgICAgICAgICAgYmxvcXVlciBldCBtYWludGVuaXIgdW5lIHJlcXVlc3QgdmFsaWRhbnQgPHNlYXJjaD4KICAgcmVxaXRhcnBpdCA8c2VhcmNoPiAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCiAgIHJzcGFkZCAgIDxzdHJpbmc+ICAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHLpcG9uc2UKICAgcnNwcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIHBvdXIgbW9kaWZpZXIgbGEgculwb25zZQogICByc3BpcmVwICA8c2VhcmNoPiA8cmVwbGFjZT4gICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByc3BkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHLpcG9uc2UKICAgcnNwaWRlbCAgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgIHJlbXBsYWNlIGxhIHLpcG9uc2UgcGFyIHVuIEhUVFAgNTAyIHNpIHVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByc3BpZGVueSA8c2VhcmNoPiAgICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwoKCjxzZWFyY2g+IGVzdCB1bmUgZXhwcmVzc2lvbiBy6Wd1bGnocmUgY29tcGF0aWJsZSBQT1NJWCByZWdleHAgc3VwcG9ydGFudCBsZQpncm91cGFnZSBwYXIgcGFyZW50aOhzZXMgKHNhbnMgbGVzICdcJykuIExlcyBlc3BhY2VzIGV0IGF1dHJlcyBz6XBhcmF0ZXVycwpkb2l2ZW50IOp0cmVzIHBy6WPpZOlzIGQndW4gJ1wnIHBvdXIgbmUgcGFzIOp0cmUgY29uZm9uZHVzIGF2ZWMgbGEgZmluIGRlIGxhCmNoYe5uZS4gRGUgcGx1cywgY2VydGFpbnMgY2FyYWN06HJlcyBzcOljaWF1eCBwZXV2ZW50IOp0cmUgcHLpY+lk6XMgZCd1bgpiYWNrc2xhY2ggKCdcJykgOgoKICBcdCAgIHBvdXIgdW5lIHRhYnVsYXRpb24KICBcciAgIHBvdXIgdW4gcmV0b3VyIGNoYXJyaW90CiAgXG4gICBwb3VyIHVuIHNhdXQgZGUgbGlnbmUKICBcICAgIHBvdXIgZGlmZulyZW5jaWVyIHVuIGVzcGFjZSBkJ3VuIHPpcGFyYXRldXIKICBcIyAgIHBvdXIgZGlmZulyZW5jaWVyIHVuIGRp6HNlIGQndW4gY29tbWVudGFpcmUKICBcXCAgIHBvdXIgdXRpbGlzZXIgdW4gYmFja3NsYXNoIGRhbnMgbGEgcmVnZXgKICBcXFxcIHBvdXIgdXRpbGlzZXIgdW4gYmFja3NsYXNoIGRhbnMgbGUgdGV4dGUKICBceFhYIHBvdXIgdW4gY2FyYWN06HJlIHNw6WNpZmlxdWUgWFggKGNvbW1lIGVuIEMpCgoKPHJlcGxhY2U+IGNvbnRpZW50IGxhIGNoYe5uZSByZW1wbGHnYW50IGxhIHBvcnRpb24gdulyaWZp6WUgcGFyIGwnZXhwcmVzc2lvbi4KRWxsZSBwZXV0IGluY2x1cmUgbGVzIGNhcmFjdOhyZXMgc3DpY2lhdXggY2ktZGVzc3VzLCBmYWlyZSBy6WbpcmVuY2Ug4CB1bgpncm91cGUgZOlsaW1pdOkgcGFyIGRlcyBwYXJlbnRo6HNlcyBkYW5zIGwnZXhwcmVzc2lvbiBy6Wd1bGnocmUsIHBhciBzYQpwb3NpdGlvbiBudW3pcmFsZS4gTGVzIHBvc2l0aW9ucyB2b250IGRlIDAg4CA5LCBldCBzb250IGNvZOllcyBwYXIgdW4gJ1wnCnN1aXZpIGR1IGNoaWZmcmUgZOlzaXLpICgwIGTpc2lnbmFudCBsYSBsaWduZSBjb21wbOh0ZSkuIElsIGVzdCDpZ2FsZW1lbnQKcG9zc2libGUgZCdpbnPpcmVyIHVuIGNhcmFjdOhyZSBub24gaW1wcmltYWJsZSAodXRpbGUgcG91ciBsZSBzYXV0IGRlIGxpZ25lKQppbnNjcml2YW50ICdceCcgc3VpdmkgZHUgY29kZSBoZXhhZOljaW1hbCBkZSBjZSBjYXJhY3TocmUgKGNvbW1lIGVuIEMpLgoKPHN0cmluZz4gcmVwculzZW50ZSB1bmUgY2hh7m5lIHF1aSBzZXJhIGFqb3V06WUgc3lzdOltYXRpcXVlbWVudCBhcHLocyBsYQpkZXJuaehyZSBsaWduZSBkJ2VuLXTqdGUuCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gbGEgcHJlbWnocmUgbGlnbmUgZGUgbGEgcmVxdep0ZSBldCBjZWxsZSBkZSBsYSBy6XBvbnNlIHNvbnQgdHJhaXTpZXMgY29tbWUKICAgIGRlcyBlbi106nRlcywgY2UgcXVpIHBlcm1ldCBkZSBy6eljcmlyZSBkZXMgVVJMIGV0IGRlcyBjb2RlcyBkJ2VycmV1ci4KICAtICdyZXFyZXAnIGVzdCBsJ+lxdWl2YWxlbnQgZGUgJ2NsaWV4cCcgZW4gdmVyc2lvbiAxLjAsIGV0ICdyc3ByZXAnIGNlbHVpIGRlCiAgICAnc3J2ZXhwJy4gQ2VzIG5vbXMgc29udCB0b3Vqb3VycyBzdXBwb3J06XMgbWFpcyBk6WNvbnNlaWxs6XMuCiAgLSBwb3VyIGRlcyByYWlzb25zIGRlIHBlcmZvcm1hbmNlcywgbGUgbm9tYnJlIHRvdGFsIGRlIGNhcmFjdOhyZXMgYWpvdXTpcyBzdXIKICAgIHVuZSByZXF16nRlIG91IHVuZSBy6XBvbnNlIGVzdCBsaW1pdOkg4CA0MDk2IGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS41IChjZXR0ZQogICAgbGltaXRlIOl0YWl0IOAgMjU2IGF1cGFyYXZhbnQpLiBDZXR0ZSB2YWxldXIgZXN0IG1vZGlmaWFibGUgZGFucyBsZSBjb2RlLgogICAgUG91ciB1biB1c2FnZSB0ZW1wb3JhaXJlLCBvbiBwZXV0IGdhZ25lciBkZSBsYSBwbGFjZSBlbiBzdXBwcmltYW50IHF1ZWxxdWVzCiAgICBlbi106nRlcyBpbnV0aWxlcyBhdmFudCBsZXMgYWpvdXRzLgogIC0gdW5lIHJlcXXqdGUgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA0MDMgZm9yYmlkZGVuIiB0YW5kaXMgcXUndW5lCiAgICBy6XBvbnNlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNTAyIEJhZCBnYXRld2F5Ii4KICAtIHVuZSByZXF16nRlIGJsb3F16WUgcGFyICdyZXF0YXJwaXQnIHNlcmEgbWFpbnRlbnVlIHBlbmRhbnQgdW5lIGR1cullIOlnYWxlCiAgICBhdSBwYXJhbeh0cmUgJ2NvbnRpbWVvdXQnLCBvdSBqdXNxdSfgIGwnYWJhbmRvbiBkdSBjbGllbnQuIFJpZW4gbmUgc2VyYQogICAgZW52b3npIGF1IHNlcnZldXIuIExvcnNxdWUgbGUgdGVtcHMgYWxsb3XpIGV4cGlyZSwgbGUgcHJveHkgculwb25kcmEgYXZlYwogICAgdW5lIHLpcG9uc2UgIjUwMCBzZXJ2ZXIgZXJyb3IiIGRlIHNvcnRlIHF1ZSBsJ2F0dGFxdWFudCBuZSBzdXNwZWN0ZSBwYXMKICAgIHF1J2lsIGFpdCDpdOkgYmxvcXXpLiBMZXMgbG9ncyByYXBwb3J0ZXJvbnQgYXVzc2kgY2UgY29kZSA1MDAsIG1haXMgbGVzCiAgICBmbGFncyBkZSB0ZXJtaW5haXNvbiBpbmRpcXVlcm9udCAiUFQiLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAgICAgIyMjIyMjIGEgZmV3IGV4YW1wbGVzICMjIyMjIwoKICAgICAgICAjIHJld3JpdGUgJ29ubGluZS5mcicgaW5zdGVhZCBvZiAnZnJlZS5mcicgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cwogICAgICAgIHJlcXJlcCAgICAgICAgXihHRVRcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCiAgICAgICAgcmVxcmVwICAgICAgICBeKFBPU1RcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCgogICAgICAgICMgZm9yY2UgcHJveHkgY29ubmVjdGlvbnMgdG8gY2xvc2UKICAgICAgICByZXFpcmVwICAgICAgICBeUHJveHktQ29ubmVjdGlvbjouKiAgICAgICAgUHJveHktQ29ubmVjdGlvbjpcIGNsb3NlCiAgICAgICAgIyByZXdyaXRlIGxvY2F0aW9ucwogICAgICAgIHJzcGlyZXAgICAgICAgIF4oTG9jYXRpb246XCApKFteOl0qOi8vW14vXSopKC4qKSBcMVwzCgogICAgICAgICMjIyMjIyBBIGZ1bGwgY29uZmlndXJhdGlvbiBiZWluZyB1c2VkIG9uIHByb2R1Y3Rpb24gIyMjIyMjCgogICAgICAgICMgRXZlcnkgaGVhZGVyIHNob3VsZCBlbmQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZS4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpbXCBdKiQKCiAgICAgICAgIyBibG9jayBBcGFjaGUgY2h1bmsgZXhwbG9pdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeVHJhbnNmZXItRW5jb2Rpbmc6W1wgXSpjaHVua2VkCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5Ib3N0OlwgYXBhY2hlLQoKICAgICAgICAjIGJsb2NrIGFubm95aW5nIHdvcm1zIHRoYXQgZmlsbCB0aGUgbG9ncy4uLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiooXC58JTJlKShcLnwlMmUpKCUyZnwlNWN8L3xcXFxcKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgKFteXCBdKlwgW15cIF0qXCB8LiolMDApCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKjxzY3JpcHQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qLyhyb290XC5leGVcP3xjbWRcLmV4ZVw/fGRlZmF1bHRcLmlkYVw/KQoKCSMgdGFycGl0IGF0dGFja3Mgb24gdGhlIGxvZ2luIHBhZ2UuCiAgICAgICAgcmVxdGFycGl0ICAgICBeW146XCBdKlwgLipcLnBocD9sb2dpbj1bXjAtOV0KCiAgICAgICAgIyBhbGxvdyBvdGhlciBzeW50YWN0aWNhbGx5IHZhbGlkIHJlcXVlc3RzLCBhbmQgYmxvY2sgYW55IG90aGVyIG1ldGhvZAogICAgICAgIHJlcWlwYXNzICAgICAgICBeKEdFVHxQT1NUfEhFQUR8T1BUSU9OUylcIC8uKlwgSFRUUC8xXC5bMDFdJAogICAgICAgIHJlcWlwYXNzICAgICAgICBeT1BUSU9OU1wgXFwqXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAKCiAgICAgICAgIyBmb3JjZSBjb25uZWN0aW9uOmNsb3NlLCB0aHVzIGRpc2FibGluZyBIVFRQIGtlZXAtYWxpdmUKICAgICAgICBvcHRpb24gICAgICAgICAgICAgICAgaHR0cGNsb3MKCiAgICAgICAgIyBjaGFuZ2UgdGhlIHNlcnZlciBuYW1lCiAgICAgICAgcnNwaWRlbCAgICAgICAgIF5TZXJ2ZXI6XCAKICAgICAgICByc3BhZGQgICAgICAgICAgU2VydmVyOlwgRm9ybWlsdXgvMC4xLjgKCgpEZSBwbHVzLCBsJ29wdGlvbiAnZm9yd2FyZGZvcicgYWpvdXRlIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgZGFucyB1biBjaGFtcAonWC1Gb3J3YXJkZWQtRm9yJyBkZSBsYSByZXF16nRlLCBjZSBxdWkgcGVybWV0IOAgdW4gc2VydmV1ciB3ZWIgZmluYWwgZGUKY29ubmHudHJlIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgaW5pdGlhbC4gRGVwdWlzIGxhIHZlcnNpb24gMS4zLjgsIGlsIGVzdApwb3NzaWJsZSBkZSBwculjaXNlciBsZSBtb3QtY2zpICJleGNlcHQiIHN1aXZpIGQndW5lIGFkcmVzc2Ugb3UgdW4gculzZWF1CklQIHNvdXJjZSBwb3VyIGxlcXVlbCBsJ2VudOp0ZSBuZSBzZXJhIHBhcyBham91dOkuIEMnZXN0IHRy6HMgcHJhdGlxdWUgZGFucyBsZQpjYXMgb/kgdW4gYXV0cmUgcmV2ZXJzZS1wcm94eSBham91dGFudCBk6WrgIGwnZW506nRlIGVzdCBpbnN0YWxs6SBzdXIgbGEgbeptZQptYWNoaW5lIG91IGRhbnMgdW5lIERNWiBjb25udWUuIExlIGNhcyBsZSBwbHVzIGZy6XF1ZW50IGVzdCBsaekg4CBsJ3V0aWxpc2F0aW9uCmRlIHN0dW5uZWwgZW4gbG9jYWwuCgpFbmZpbiwgbCdvcHRpb24gJ2h0dHBjbG9zZScgYXBwYXJ1ZSBkYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xIHN1cHByaW1lIHRvdXQKZW4tdOp0ZSBkZSB0eXBlICdDb25uZWN0aW9uOicgZXQgYWpvdXRlICdDb25uZWN0aW9uOiBjbG9zZScgZGFucyBsZXMgZGV1eCBzZW5zLgpDZWNpIHNpbXBsaWZpZSBsYSBk6XNhY3RpdmF0aW9uIGR1IGtlZXAtYWxpdmUgSFRUUCBwYXIgcmFwcG9ydCDgIGwnYW5jaWVubmUKbel0aG9kZSBpbXBsaXF1YW50IDQgcuhnbGVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAgZ2xvYmFsCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gZm9yd2FyZGZvciBleGNlcHQgMTI3LjAuMC4xLzgKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCgpOb3RvbnMgcXVlIGNlcnRhaW5zIHNlcnZldXJzIEhUVFAgbmUgcmVmZXJtZW50IHBhcyBu6WNlc3NhaXJlbWVudCBsYSBzZXNzaW9uClRDUCBlbiBmaW4gZGUgdHJhaXRlbWVudCBsb3JzcXUnaWxzIHJl529pdmVudCB1biBlbnTqdGUgJ0Nvbm5lY3Rpb246IGNsb3NlJywKY2UgcXVpIHNlIHRyYWR1aXQgcGFyIGRlcyBncmFuZHMgbm9tYnJlcyBkZSBzZXNzaW9ucyDpdGFibGllcyBldCBkZXMgdGVtcHMKZ2xvYmF1eCB0cuhzIGxvbmdzIHN1ciBsZXMgcmVxdep0ZXMuIFBvdXIgY29udG91cm5lciBjZSBwcm9ibOhtZSwgbGEgdmVyc2lvbgoxLjIuOSBhcHBvcnRlIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2ZvcmNlY2xvc2UnIHF1aSByZWZlcm1lIGxhIGNvbm5leGlvbiBzb3J0YW50CnZlcnMgbGUgc2VydmV1ciBk6HMgcXUnaWwgY29tbWVuY2Ug4CBy6XBvbmRyZSBldCBzZXVsZW1lbnQgc2kgbGUgdGFtcG9uIGRlCnJlcXXqdGUgZXN0IHZpZGUuIEF0dGVudGlvbiB0b3V0ZWZvaXMg4CBuZSBQQVMgdXRpbGlzZXIgY2V0dGUgb3B0aW9uIHNpIGRlcwpt6XRob2RlcyBDT05ORUNUIHNvbnQgYXR0ZW5kdWVzIGVudHJlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyLiBMJ29wdGlvbgonZm9yY2VjbG9zZScgaW1wbGlxdWUgbCdvcHRpb24gJ2h0dHBjbG9zZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nICBnbG9iYWwKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGZvcmNlY2xvc2UKCgo0LjQpIFLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIGNvbWJpbmFpc29uIGRlIGwnaW5zZXJ0aW9uIGRlIGNvb2tpZSBhdmVjIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lCnBlcm1ldCBkJ2Fzc3VyZXIgdW5lIHBlcnNpc3RlbmNlIGRhbnMgbGVzIHNlc3Npb25zIEhUVFAgZCd1bmUgbWFuaehyZQpwcmF0aXF1ZW1lbnQgdHJhbnNwYXJlbnRlIHBvdXIgbGVzIGFwcGxpY2F0aW9ucy4gTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6CiAgLSBhdHRyaWJ1ZXIgdW5lIHZhbGV1ciBkJ3VuIGNvb2tpZSDgIGNoYXF1ZSBzZXJ2ZXVyCiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGludGVybmUKICAtIGluc+lyZXIgdW4gY29va2llIGRhbnMgbGVzIHLpcG9uc2VzIGlzc3VlcyBkJ3VuZSBy6XBhcnRpdGlvbiB1bmlxdWVtZW50LAogICAgZXQgZmFpcmUgZW4gc29ydGUgcXVlIGRlcyBjYWNoZXMgbmUgbeltb3Jpc2VudCBwYXMgY2UgY29va2llLgogIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24gbG9ycyBkZXMgcmVxdep0ZXMgdWx06XJpZXVyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKTCdhdXRyZSBzb2x1dGlvbiBhcHBvcnTpZSBwYXIgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMyBlc3QgZGUgcul1dGlsaXNlciB1bgpjb29raWUgZW4gcHJvdmVuYW5jZSBkdSBzZXJ2ZXVyIGV0IGRlIGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIuCkRhbnMgY2UgY2FzLCBuZSBwYXMgb3VibGllciBkZSBmb3JjZXIgbGUgbW9kZSAiaHR0cGNsb3NlIiBwb3VyIGVtcOpjaGVyIGxlCmNsaWVudCBldCBsZSBzZXJ2ZXVyIGRlIHRyYXZhaWxsZXIgZW4gbW9kZSAia2VlcC1hbGl2ZSIgYWZpbiBxdWUgbGUgcHJveHkKcHVpc3NlIGNvcnJpZ2VyIGxlIG5vbSBkdSBjb29raWUgZGFucyB0b3V0ZXMgbGVzIGZ1dHVyZXMgcmVxdep0ZXMuCgogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzcnYxIGNoZWNrCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc3J2MiBjaGVjawogICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKCjQuNSkgUHJvdGVjdGlvbiBjb250cmUgbGVzIGZ1aXRlcyBkJ2luZm9ybWF0aW9ucyBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGVzIHZlcnNpb25zIDEuMS4yOCBldCAxLjIuMSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnY2hlY2tjYWNoZScgYSDpdOkKY3Lp6WUuIEVsbGUgc2VydCDgIGluc3BlY3RlciBtaW51dGlldXNlbWVudCBsZXMgZW4tdOp0ZXMgJ0NhY2hlLWNvbnRyb2wnLAonUHJhZ21hJywgZXQgJ1NldC1jb29raWUnIGRhbnMgbGVzIHLpcG9uc2VzIHNlcnZldXIgcG91ciBk6XRlcm1pbmVyIHMnaWwgeSBhCnVuIHJpc3F1ZSBkZSBjYWNoZXIgdW4gY29va2llIHN1ciB1biBwcm94eSBj9HTpIGNsaWVudC4gUXVhbmQgY2V0dGUgb3B0aW9uIGVzdAphY3RpdullLCBsZXMgc2V1bGVzIHLpcG9uc2VzIHF1aSBwZXV2ZW50IOp0cmUgcmV0b3VybullcyBhdSBjbGllbnQgc29udCA6CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBuJ29udCBwYXMgZCdlbi106nRlICdTZXQtY29va2llJyA7CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBvbnQgdW4gY29kZSBkZSByZXRvdXIgYXV0cmUgcXVlIDIwMCwgMjAzLCAyMDYsIDMwMCwgMzAxLCAKICAgIDQxMCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6SB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgZm9udCBzdWl0ZSDgIHVuZSByZXF16nRlIFBPU1QsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukKICAgIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnUHJhZ21hOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHJpdmF0ZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLXN0b3JlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbWF4LWFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBzLW1heGFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUiJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSwnCiAgICAoYXV0b3Jpc2FudCBkJ2F1dHJlcyBjaGFtcHMgYXBy6HMgc2V0LWNvb2tpZSkuCgpTaSB1bmUgculwb25zZSBuZSByZXNwZWN0ZSBwYXMgY2VzIHBy6S1yZXF1aXMsIGFsb3JzIGVsbGUgc2VyYSBibG9xdellIGRlIGxhCm3qbWUgbWFuaehyZSBxdWUgcydpbCBzJ2FnaXNzYWl0IGQndW4gZmlsdHJlICdyc3BkZW55JywgYXZlYyBlbiByZXRvdXIgdW4KbWVzc2FnZSAiSFRUUCA1MDIgYmFkIGdhdGV3YXkiLiBMJ+l0YXQgZGUgc2Vzc2lvbiBtb250cmUgIlBILS0iIGNlIHF1aSB2ZXV0CmRpcmUgcXVlIGMnZXN0IGxlIHByb3h5IHF1aSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1cmFudCBsZSB0cmFpdGVtZW50IGRlcwplbi106nRlcy4gRGUgcGx1cywgdW4gbWVzc2FnZSBkJ2FsZXJ0ZSBzZXJhIGVudm956SBkYW5zIGxlcyBsb2dzIGRlIHNvcnRlIHF1ZQpsJ2FkbWluaXN0cmF0ZXVyIHNhY2hlIHF1J2lsIHkgYSB1bmUgYWN0aW9uIGNvcnJlY3RyaWNlIOAgZW50cmVwcmVuZHJlLgoKNC42KSBQZXJzb25hbGlzYXRpb24gZGVzIGVycmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbmVzIHNpdHVhdGlvbnMgY29uZHVpc2VudCDgIHJldG91cm5lciB1bmUgZXJyZXVyIEhUVFAgYXUgY2xpZW50IDoKICAtIHJlcXXqdGUgaW52YWxpZGUgb3UgdHJvcCBsb25ndWUgPT4gY29kZSBIVFRQIDQwMAogIC0gcmVxdep0ZSBtZXR0YW50IHRyb3AgZGUgdGVtcHMg4CB2ZW5pciA9PiBjb2RlIEhUVFAgNDA4CiAgLSByZXF16nRlIGludGVyZGl0ZSAoYmxvcXXpZSBwYXIgdW4gcmVxaWRlbnkpID0+IGNvZGUgSFRUUCA0MDMKICAtIGVycmV1ciBpbnRlcm5lIGR1IHByb3h5ID0+IGNvZGUgSFRUUCA1MDAKICAtIGxlIHNlcnZldXIgYSByZXRvdXJu6SB1bmUgculwb25zZSBpbmNvbXBs6HRlIG91IGludmFsaWRlID0+IGNvZGUgSFRUUCA1MDIKICAtIGF1Y3VuIHNlcnZldXIgZGlzcG9uaWJsZSBwb3VyIGNldHRlIHJlcXXqdGUgPT4gY29kZSBIVFRQIDUwMwogIC0gbGUgc2VydmV1ciBuJ2EgcGFzIHLpcG9uZHUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpID0+IGNvZGUgSFRUUCA1MDQKClVuIG1lc3NhZ2UgZCdlcnJldXIgc3VjY2ludCB0aXLpIGRlIGxhIFJGQyBhY2NvbXBhZ25lIGNlcyBjb2RlcyBkZSByZXRvdXIuCkNlcGVuZGFudCwgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjbGllbnTobGUsIG9uIHBldXQgcHLpZulyZXIgcmV0b3VybmVyIGRlcwpwYWdlcyBwZXJzb25uYWxpc+llcy4gQ2VjaSBlc3QgcG9zc2libGUgZGUgZGV1eCBtYW5p6HJlcywgbCd1bmUgcmVwb3NhbnQgc3VyCnVuZSByZWRpcmVjdGlvbiB2ZXJzIHVuIHNlcnZldXIgY29ubnUsIGV0IGwnYXV0cmUgY29uc2lzdGFudCDgIHJldG91cm5lciB1bgpmaWNoaWVyIGxvY2FsLgoKNC42LjEpIFJlZGlyZWN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLQpVbmUgcmVkaXJlY3Rpb24gZCdlcnJldXIgZXN0IGFzc3Vy6WUgcGFyIGxlIGJpYWlzIGRlIGxhIGNvbW1hbmRlICJlcnJvcmxvYyIgOgoKICAgIGVycm9ybG9jIDxjb2RlX0hUVFA+IDxsb2NhdGlvbj4KCkF1IGxpZXUgZGUgZ+lu6XJlciB1bmUgZXJyZXVyIEhUVFAgPGNvZGVfSFRUUD4gcGFybWkgbGVzIGNvZGVzIGNpdOlzIGNpLWRlc3N1cywKbGUgcHJveHkgZ+lu6HJlcmEgdW4gY29kZSBkZSByZWRpcmVjdGlvbiB0ZW1wb3JhaXJlIChIVFRQIDMwMikgdmVycyBsJ2FkcmVzc2UKZCd1bmUgcGFnZSBwculjaXPpZSBkYW5zIDxsb2NhdGlvbj4uIENldHRlIGFkcmVzc2UgcGV1dCDqdHJlIHJlbGF0aXZlIGF1IHNpdGUsCm91IGFic29sdWUuIENvbW1lIGNldHRlIHLpcG9uc2UgZXN0IHRyYe506WUgcGFyIGxlIG5hdmlnYXRldXIgZHUgY2xpZW50Cmx1aS1t6m1lLCBpbCBlc3QgaW5kaXNwZW5zYWJsZSBxdWUgbCdhZHJlc3NlIGZvdXJuaWUgbHVpIHNvaXQgYWNjZXNzaWJsZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICAgZXJyb3Jsb2MgNDAwIC9iYWRyZXF1ZXN0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDMgL2ZvcmJpZGRlbi5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDA4IC90b29sb25nLmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDAgaHR0cDovL2hhcHJveHkuZG9tYWluLm5ldC9idWdyZXBvcnQuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMiBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwMyBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwNCBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAoKTm90ZTogbGEgUkZDMjYxNiBzdGlwdWxlIHF1J3VuIGNsaWVudCBkb2l0IHLpdXRpbGlzZXIgbGEgbeptZSBt6XRob2RlIHBvdXIKYWNj6WRlciDgIGwnVVJMIGRlIHJlZGlyZWN0aW9uIHF1ZSBjZWxsZSBxdWkgbCdhIHJldG91cm7pZSwgY2UgcXVpIHBvc2UgZGVzCnByb2Js6G1lcyBhdmVjIGxlcyByZXF16nRlcyBQT1NULiBMZSBjb2RlIGRlIHJldG91ciAzMDMgYSDpdOkgY3Lp6SBleHBy6HMgcG91cgpy6WdsZXIgY2UgcHJvYmzobWUsIGluZGlxdWFudCBhdSBjbGllbnQgcXUnaWwgZG9pdCBhY2PpZGVyIOAgbCdVUkwgcmV0b3VybullCmRhbnMgbGUgY2hhbXAgTG9jYXRpb24gYXZlYyBsYSBt6XRob2RlIEdFVCB1bmlxdWVtZW50LiBTZXVsZW1lbnQsIGNlcnRhaW5zCm5hdmlnYXRldXJzIGFudOlyaWV1cnMg4CBIVFRQLzEuMSBuZSBjb25uYWlzc2VudCBwYXMgY2UgY29kZSBkZSByZXRvdXIuIERlCnBsdXMsIGxhIHBsdXBhcnQgZGVzIG5hdmlnYXRldXJzIHNlIGNvbXBvcnRlbnQgZOlq4CBhdmVjIGxlIGNvZGUgMzAyIGNvbW1lIGlscwpkZXZyYWllbnQgbGUgZmFpcmUgYXZlYyBsZSAzMDMuIERvbmMsIGRhbnMgbGUgYnV0IGRlIGxhaXNzZXIgbGUgY2hvaXgg4ApsJ3V0aWxpc2F0ZXVyLCBsZXMgdmVyc2lvbnMgMS4xLjMxIGV0IDEuMi41IGFwcG9ydGVudCBkZXV4IG5vdXZlbGxlcyBjb21tYW5kZXMKdmlzYW50IOAgcmVtcGxhY2VyICdlcnJvcmxvYycgOiAnZXJyb3Jsb2MzMDInIGV0ICdlcnJvcmxvYzMwMycuCgpMZXVyIHVzYWdlIG5vbiBhbWJpZ/wgZXN0IHJlY29tbWFuZOkg4CBsYSBwbGFjZSBkZSBsYSBjb21tYW5kZSAnZXJyb3Jsb2MnIChxdWkKdXRpbGlzZSB0b3Vqb3VycyAzMDIpLiBEYW5zIGxlIGRvdXRlLCBwculm6XJleiBsJ3V0aWxpc2F0aW9uIGRlICdlcnJvcmxvYzMwMycKZOhzIHF1ZSB2b3VzIHNhdmV6IHF1ZSB2b3MgY2xpZW50cyBzdXBwb3J0ZW50IGxlIGNvZGUgZGUgcmV0b3VyIEhUVFAgMzAzLgoKNC42LjIpIEZpY2hpZXJzIGxvY2F1eAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhcmZvaXMgaWwgZXN0IHNvdWhhaXRhYmxlIGRlIGNoYW5nZXIgbCdlcnJldXIgcmV0b3VybullIHNhbnMgcmVjb3VyaXIg4CBkZXMKcmVkaXJlY3Rpb25zLiBMYSBzZWNvbmRlIG3pdGhvZGUgY29uc2lzdGUg4CBjaGFyZ2VyIGRlcyBmaWNoaWVycyBsb2NhdXggbG9ycwpkdSBk6W1hcnJhZ2UgZXQg4CBsZXMgZW52b3llciBlbiBndWlzZSBkZSBwdXIgY29udGVudSBIVFRQIGVuIGNhcyBkJ2VycmV1ci4KQydlc3QgY2UgcXVlIGZhaXQgbGUgbW90IGNs6SAnZXJyb3JmaWxlJy4KCkF0dGVudGlvbiwgaWwgeSBhIGRlcyBwaehnZXMg4CBwcmVuZHJlIGVuIGNvbXB0ZSA6CiAtIGxlcyBmaWNoaWVycyBzb250IGNoYXJn6XMgZHVyYW50IGwnYW5hbHlzZSBkZSBsYSBjb25maWd1cmF0aW9uLCBhdmFudCBkZQogICBmYWlyZSBsZSBjaHJvb3QoKS4gRG9uYyBpbHMgc29udCByZWxhdGlmcyBhdSBzeXN06G1lIGRlIGZpY2hpZXJzIHLpZWwuIFBvdXIKICAgY2V0dGUgcmFpc29uLCBpbCBlc3QgcmVjb21tYW5k6SBkZSB0b3Vqb3VycyBwYXNzZXIgdW4gY2hlbWluIGFic29sdSB2ZXJzIGNlcwogICBmaWNoaWVycy4KCiAtIGxlIGNvbnRlbnUgZGUgY2VzIGZpY2hpZXJzIG4nZXN0IHBhcyBkdSBIVE1MIG1haXMgdnJhaW1lbnQgZHUgcHJvdG9jb2xlIEhUVFAKICAgYXZlYyBwb3RlbnRpZWxsZW1lbnQgdW4gY29ycHMgSFRNTC4gRG9uYyBsYSBwcmVtaehyZSBsaWduZSBldCBsZXMgZW4tdOp0ZXMKICAgc29udCBvYmxpZ2F0b2lyZXMuIElk6WFsZW1lbnQsIGNoYXF1ZSBsaWduZSBkYW5zIGxhIHBhcnRpZSBIVFRQIGRldnJhaXQgc2UKICAgdGVybWluZXIgcGFyIHVuIENSLUxGIHBvdXIgdW4gbWF4aW11bSBkZSBjb21wYXRpYmlsaXTpLgoKIC0gbGVzIHLpcG9uc2VzIHNvbnQgbGltaXTpZXMg4CB1bmUgdGFpbGxlIGRlIGJ1ZmZlciAoQlVGU0laRSksIGfpbulyYWxlbWVudCA4CiAgIG91IDE2IGtvLgoKIC0gbGVzIHLpcG9uc2VzIG5lIGRldnJhaWVudCBwYXMgaW5jbHVyZSBkZSBy6WbpcmVuY2VzIGF1eCBzZXJ2ZXVycyBsb2NhdXgsCiAgIGFmaW4gZGUgbmUgcGFzIHJpc3F1ZXIgZGUgY3LpZXIgZGVzIGJvdWNsZXMgaW5maW5pZXMgc3VyIGxlIG5hdmlnYXRldXIgZGFucwogICBsZSBjYXMgZCd1bmUgcGFubmUgbG9jYWxlLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgIGVycm9yZmlsZSA0MDAgL2V0Yy9oYXByb3h5L2Vycm9yZmlsZXMvNDAwYmFkcmVxLmh0dHAKICAgICAgICBlcnJvcmZpbGUgNDAzIC9ldGMvaGFwcm94eS9lcnJvcmZpbGVzLzQwM2ZvcmJpZC5odHRwCiAgICAgICAgZXJyb3JmaWxlIDUwMyAvZXRjL2hhcHJveHkvZXJyb3JmaWxlcy81MDNzb3JyeS5odHRwCgoKNC43KSBDaGFuZ2VtZW50IGRlcyB2YWxldXJzIHBhciBk6WZhdXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsYSB2ZXJzaW9uIDEuMS4yMiBlc3QgYXBwYXJ1ZSBsYSBub3Rpb24gZGUgdmFsZXVycyBwYXIgZOlmYXV0LCBjZSBxdWkK6XZpdGUgZGUgculw6XRlciBkZXMgcGFyYW3odHJlcyBjb21tdW5zIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMsIHRlbHMgcXVlIGxlcwp0aW1lb3V0cywgYWRyZXNzZXMgZGUgbG9nLCBtb2RlcyBkZSBmb25jdGlvbm5lbWVudCwgZXRjLgoKTGVzIHZhbGV1cnMgcGFyIGTpZmF1dCBzb250IHBvc2l0aW9ubullcyBkYW5zIGxhIGRlcm5p6HJlIHNlY3Rpb24gJ2RlZmF1bHRzJwpwculj6WRlbnQgbCdpbnN0YW5jZSBxdWkgbGVzIHV0aWxpc2VyYS4gT24gcGV1dCBkb25jIG1ldHRyZSBhdXRhbnQgZGUgc2VjdGlvbnMKJ2RlZmF1bHRzJyBxdWUgbCdvbiB2ZXV0LiBJbCBmYXV0IGp1c3RlIHNlIHJhcHBlbGVyIHF1ZSBsYSBwculzZW5jZSBkJ3VuZSB0ZWxsZQpzZWN0aW9uIGltcGxpcXVlIHVuZSBhbm51bGF0aW9uIGRlIHRvdXMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBwb3NpdGlvbm7pcwpwculj6WRlbW1lbnQsIGRhbnMgbGUgYnV0IGRlIGxlcyByZW1wbGFjZXIuCgpMYSBzZWN0aW9uICdkZWZhdWx0cycgdXRpbGlzZSBsYSBt6m1lIHN5bnRheGUgcXVlIGxhIHNlY3Rpb24gJ2xpc3RlbicsIGF1eApwYXJhbeh0cmVzIHBy6HMgcXVpIG5lIHNvbnQgcGFzIHN1cHBvcnTpcy4gTGUgbW90IGNs6SAnZGVmYXVsdHMnIHBldXQgYWNjZXB0ZXIKdW4gY29tbWVudGFpcmUgZW4gZ3Vpc2UgcGFyYW3odHJlLgoKRGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSwgc2V1bHMgbGVzIHBhcmFt6HRyZXMgc3VpdmFudHMgcGV1dmVudCDqdHJlCnBvc2l0aW9ubulzIGRhbnMgdW5lIHNlY3Rpb24gJ2RlZmF1bHRzJyA6CiAgLSBsb2cgKGxlIHByZW1pZXIgZXQgbGUgc2Vjb25kKQogIC0gbW9kZSB7IHRjcCwgaHR0cCwgaGVhbHRoIH0KICAtIGJhbGFuY2UgeyByb3VuZHJvYmluIH0KICAtIGRpc2FibGVkIChwb3VyIGTpc2FjdGl2ZXIgdG91dGVzIGxlcyBpbnN0YW5jZXMgcXVpIHN1aXZlbnQpCiAgLSBlbmFibGVkIChwb3VyIGZhaXJlIGwnb3DpcmF0aW9uIGludmVyc2UsIG1haXMgYydlc3QgbGUgY2FzIHBhciBk6WZhdXQpCiAgLSBjb250aW1lb3V0LCBjbGl0aW1lb3V0LCBzcnZ0aW1lb3V0LCBncmFjZSwgcmV0cmllcywgbWF4Y29ubgogIC0gb3B0aW9uIHsgcmVkaXNwYXRjaCwgdHJhbnNwYXJlbnQsIGtlZXBhbGl2ZSwgZm9yd2FyZGZvciwgbG9nYXNhcCwgaHR0cGNsb3NlLAogICAgICAgICAgICAgY2hlY2tjYWNoZSwgaHR0cGxvZywgdGNwbG9nLCBkb250bG9nbnVsbCwgcGVyc2lzdCwgaHR0cGNoayB9CiAgLSByZWRpc3BhdGNoLCByZWRpc3AsIHRyYW5zcGFyZW50LCBzb3VyY2UgeyBhZGRyOnBvcnQgfQogIC0gY29va2llLCBjYXB0dXJlCiAgLSBlcnJvcmxvYwoKTmUgc29udCBwYXMgc3VwcG9ydOlzIGRhbnMgY2V0dGUgdmVyc2lvbiwgbGVzIGFkcmVzc2VzIGRlIGRpc3BhdGNoIGV0IGxlcwpjb25maWd1cmF0aW9ucyBkZSBzZXJ2ZXVycywgYWluc2kgcXVlIHRvdXMgbGVzIGZpbHRyZXMgYmFz6XMgc3VyIGxlcwpleHByZXNzaW9ucyBy6Wd1bGnocmVzIDoKICAtIGRpc3BhdGNoLCBzZXJ2ZXIsCiAgLSByZXEqLCByc3AqCgpFbmZpbiwgaWwgbid5IGEgcGFzIGxlIG1veWVuLCBwb3VyIGxlIG1vbWVudCwgZCdpbnZhbGlkZXIgdW4gcGFyYW3odHJlIGJvb2zpZW4KcG9zaXRpb25u6SBwYXIgZOlmYXV0LiBEb25jIHNpIHVuZSBvcHRpb24gZXN0IHNw6WNpZmnpZSBkYW5zIGxlcyBwYXJhbeh0cmVzIHBhcgpk6WZhdXQsIGxlIHNldWwgbW95ZW4gZGUgbGEgZOlzYWN0aXZlciBwb3VyIHVuZSBpbnN0YW5jZSwgYydlc3QgZGUgY2hhbmdlciBsZXMKcGFyYW3odHJlcyBwYXIgZOlmYXV0IGF2YW50IGxhIGTpY2xhcmF0aW9uIGRlIGwnaW5zdGFuY2UuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBUQ1AKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjbGl0aW1lb3V0IDE4MDAwMAogICAgICAgIHNydnRpbWVvdXQgMTgwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCiAgICAgICAgcmVkaXNwYXRjaAoKICAgIGxpc3RlbiBhcHBfdGNwMSAxMC4wLjAuMTo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiAgICBsaXN0ZW4gYXBwX3RjcDIgMTAuMC4wLjI6NjAwMC02MDYzCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjEgY2hlY2sgcG9ydCA2MDAwIGludGVyIDEwMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4yLjIgYmFja3VwCiAgICAKICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBIVFRQCiAgICAgICAgbG9nIGdsb2JhbAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjbGl0aW1lb3V0IDIwMDAwCiAgICAgICAgc3J2dGltZW91dCAyMDAwMAogICAgICAgIGNvbnRpbWVvdXQgNDAwMAogICAgICAgIHJldHJpZXMgMwoKICAgIGxpc3RlbiBhcHBfaHR0cDEgMTAuMC4wLjE6ODAtODEKICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgY2FwdHVyZSBjb29raWUgdXNlcmlkPSBsZW4gMTAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTorODAwMCBjb29raWUgc3J2MSBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4yOis4MDAwIGNvb2tpZSBzcnYyIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCgogICAgZGVmYXVsdHMKICAgICAgICAjIHNlY3Rpb24gdmlkZSBxdWkgYW5udWxlIHRvdXMgbGVzIHBhcmFt6HRlcyBwYXIgZOlmYXV0LgoKCjQuOCkgUmFwcG9ydCBkJ+l0YXQgc291cyBmb3JtZSBkZSBwYWdlIEhUTUwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxhIHZlcnNpb24gMS4yLjE0LCBpbCBkZXZpZW50IHBvc3NpYmxlIHBvdXIgaGFwcm94eSBkJ2ludGVyY2VwdHJlIGRlcwpyZXF16nRlcyBwb3VyIHVuZSBVUkkgcGFydGljdWxp6HJlIGV0IGRlIHJldG91cm5lciB1biByYXBwb3J0IGNvbXBsZXQgZCfpdGF0IGRlCmwnYWN0aXZpdOkgZHUgcHJveHksIGV0IGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyBzZXJ2ZXVycy4gQ2VjaSBlc3QgZGlzcG9uaWJsZQp2aWEgbGUgbW90IGNs6SAic3RhdHMiIGFzc29jaekg4CBuJ2ltcG9ydGUgbGFxdWVsbGUgZGUgY2VzIG9wdGlvbnMgOgoKICAgLSBzdGF0cyBlbmFibGUKICAgLSBzdGF0cyB1cmkgPHVyaSBwcmVmaXg+CiAgIC0gc3RhdHMgcmVhbG0gPGF1dGhlbnRpY2F0aW9uIHJlYWxtPgogICAtIHN0YXRzIGF1dGggPHVzZXI6cGFzc3dvcmQ+CiAgIC0gc3RhdHMgc2NvcGUgPHByb3h5X2lkPiB8ICcuJwoKClBhciBk6WZhdXQsIGxlIHJhcHBvcnQgZXN0IGTpc2FjdGl26S4gTGUgZmFpdCBkZSBzcOljaWZpZXIgdW5lIGRlcyBjb21iaW5haXNpb24KY2ktZGVzc3VzIGFjdGl2ZSBsZSByYXBwb3J0IHBvdXIgbCdpbnN0YW5jZSBkZSBwcm94eSBxdWkgbGUgculm6XJlbmNlLiBMYQpzb2x1dGlvbiBsYSBwbHVzIHNpbXBsZSBlc3QgZCd1dGlsaXNlciAic3RhdHMgZW5hYmxlIiBxdWkgYWN0aXZlcmEgbGUgcmFwcG9ydAphdmVjIGxlcyBwYXJhbeh0cmVzIHBhciBk6WZhdXQgc3VpdmFudCA6CgogICAtIGRlZmF1bHQgVVJJICAgOiAiL2hhcHJveHk/c3RhdHMiICAgICAgICAoQ09ORklHX1NUQVRTX0RFRkFVTFRfVVJJKQogICAtIGRlZmF1bHQgYXV0aCAgOiBub24gc3DpY2lmaekgKHBhcyBkJ2F1dGhlbnRpY2F0aW9uKQogICAtIGRlZmF1bHQgcmVhbG0gOiAiSEFQcm94eSBTdGF0aXN0aWNzIiAgICAoQ09ORklHX1NUQVRTX0RFRkFVTFRfUkVBTE0pCiAgIC0gZGVmYXVsdCBzY29wZSA6IG5vbiBzcGVjaWZp6SAoYWNj6HMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcykKCkwnb3B0aW9uICJzdGF0cyB1cmkgPHVyaV9wcmVmaXg+IiBwZXJtZXQgZCdpbnRlcmNlcHRlciB1biBhdXRyZSBwculmaXhlIGQnVVJJCnF1ZSBjZWx1aSBwYXIgZOlmYXV0LiBOb3RlciBxdWUgbidpbXBvcnRlIHF1ZWxsZSBVUkkgcXVpIENPTU1FTkNFIGF2ZWMgY2V0dGUKY2hh7m5lIHNlcmEgdmFsaWTpZS4gUGFyIGV4ZW1wbGUsIHVuZSBpbnN0YW5jZSBwb3VycmFpdCDqdHJlIGTpZGnpZSDgIGxhIHBhZ2UKZCfpdGF0IHNldWxlbWVudCBldCBy6XBvbmRyZSDgIHRvdXRlIFVSSS4KCkV4YW1wbGUgOgotLS0tLS0tLS0KICAgICMgaW50ZXJjZXB0ZSBuJ2ltcG9ydGUgcXVlbGxlIFVSSSBldCByZXRvdXJuZSBsYSBwYWdlIGQn6XRhdC4KICAgIGxpc3RlbiBzdGF0cyA6ODA4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHN0YXRzIHVyaSAvCgoKTCdvcHRpb24gInN0YXRzIGF1dGggPHVzZXI6cGFzc3dvcmQ+IiBhY3RpdmUgbCdhdXRoZW50aWZpY2F0aW9uICJCYXNpYyIgZXQKYWpvdXRlIHVuIGNvdXBsZSAidXNlcjpwYXNzd29yZCIgdmFsaWRlIOAgbGEgbGlzdGUgZGVzIGNvbXB0ZXMgYXV0b3Jpc+lzLgpMJ3V0aWxpc2F0ZXVyIDx1c2VyPiBldCBsZSBtb3QgZGUgcGFzc2UgPHBhc3N3b3JkPiBkb2l2ZW50IOp0cmUgcHLpY2lz6XMKZW4gY2xhaXIgZGFucyBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24sIGV0IGNvbW1lIGNlY2kgZXN0IGRlCmwnYXV0aGVudGlmaWNhdGlvbiBIVFRQICJCYXNpYyIsIGlsIGZhdXQg6nRyZSBjb25zY2llbnQgcXUnaWxzIHRyYW5zaXRlbnQgZW4KY2xhaXIgc3VyIGxlIHLpc2VhdSwgZG9uYyBpbCBuZSBmYXV0IHBhcyB1dGlsaXNlciBkZSBjb21wdGUgc2Vuc2libGUuIExhIGxpc3RlCmVzdCBpbGxpbWl06WUgZGFucyBsZSBidXQgZGUgcG91dm9pciBmb3VybmlyIGRlcyBhY2PocyBmYWNpbGVtZW50IOAgZGVzCmTpdmVsb3BwZXVycyBvdSDgIGRlcyBjbGllbnRzLgoKTCdvcHRpb24gInN0YXRzIHJlYWxtIDxyZWFsbT4iIGTpZmluaXQgbGUgImRvbWFpbmUiICgicmVhbG0iKSBkZSB2YWxpZGl06SBkdQptb3QgZGUgcGFzc2UgcXVpIHNlcmEgcHLpc2VudOkgZGFucyBsYSBib+50ZSBkZSBkaWFsb2d1ZSBkdSBuYXZpZ2F0ZXVyCmxvcnNxdSdpbCBkZW1hbmRlcmEgdW4gY29tcHRlIHV0aWxpc2F0ZXVyIGV0IHVuIG1vdCBkZSBwYXNzZS4gSWwgZXN0IGltcG9ydGFudApkZSBzJ2Fzc3VyZXIgcXVlIGNlbHVpLWNpIHNvaXQgZGlmZulyZW50IGRlIGNldXggdXRpbGlz6XMgcGFyIGwnYXBwbGljYXRpb24sCmF1dHJlbWVudCBsZSBuYXZpZ2F0ZXVyIHRlbnRlcmEgZCdlbiB1dGlsaXNlciB1biBjYWNo6SBkZXB1aXMgbCdhcHBsaWNhdGlvbi4KTm90ZXIgcXVlIGxlcyBlc3BhY2VzIGRhbnMgbGUgbm9tIGRlICJyZWFsbSIgZG9pdmVudCDqdHJlIHByb3TpZ+lzIHBhciB1bgpiYWNrc2xhc2ggKCdcJykuCgpMJ29wdGlvbiAic3RhdHMgc2NvcGUgPHByb3h5X2lkPiIgbGltaXRlIGxhIHBvcnTpZSBkdSByYXBwb3J0IGQn6XRhdC4gUGFyCmTpZmF1dCwgdG91dGVzIGxlcyBpbnN0YW5jZXMgcHJveHkgc29udCBsaXN06WVzLiBNYWlzIGRhbnMgY2VydGFpbmVzCmNpcmNvbnN0YW5jZXMsIGlsIHNlcmFpdCBwculm6XJhYmxlIGRlIG5lIGxpc3RlciBxdWUgY2VydGFpbnMgcHJveGllcyBvdQpzaW1wbGVtZW50IGxlIHByb3h5IGNvdXJhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGNldHRlIG9wdGlvbi4gTGUgbm9tIHNw6WNpYWwgIi4iCih1biBzaW1wbGUgcG9pbnQpIHLpZulyZW5jZSBsZSBwcm94eSBjb3VyYW50LiBDZXR0ZSBvcHRpb24gcGV1dCDqdHJlIHLpcOl06WUKYXV0YW50IGRlIGZvaXMgcXVlIG7pY2Vzc2FpcmUgcG91ciBhdXRvcmlzZXIgZCdhdXRyZXMgcHJveGllcywgbeptZSBwb3VyIGRlcwpub21zIHLpZulyZW5j6XMgcGx1cyBsb2luIGRhbnMgbGEgY29uZmlndXJhdGlvbiBvdSBiaWVuIGRlcyBub21zIHF1aSBuJ2V4aXN0ZW50CnBhcyBlbmNvcmUuIExlIG5vbSBwculjaXPpIGVzdCBjZWx1aSBxdWkgYXBwYXJhaXQgYXBy6HMgbGUgbW90IGNs6SAibGlzdGVuIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgc2ltcGxlIGFwcGxpY2F0aW9uIGVtYmFycXVhbnQgbGEgcGFnZSBkJ+l0YXQgYXV0aGVudGlmaellCiAgICBsaXN0ZW4gYXBwMSAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MDgwIGNvb2tpZSBzcnYxIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjo4MDgwIGNvb2tpZSBzcnYyIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gU3RhdGlzdGljc1wgZm9yXCBNeUFwcDEtMgogICAgICAgIHN0YXRzIGF1dGggZ3Vlc3Q6Z3Vlc3QKICAgICAgICBzdGF0cyBhdXRoIGFkbWluOkFkTWlOMTIzCiAgICAgICAgc3RhdHMgc2NvcGUgLgogICAgICAgIHN0YXRzIHNjb3BlIGFwcDIKCiAgICAjIHNpbXBsZSBhcHBsaWNhdGlvbiBlbWJhcnF1YW50IGxhIHBhZ2UgZCfpdGF0IHNhbnMgYXV0aGVudGlmaWNhdGlvbgogICAgbGlzdGVuIGFwcDIgMTkyLjE2OC4yLjEwMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjE6ODA4MCBjb29raWUgc3J2MSBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjI6ODA4MCBjb29raWUgc3J2MiBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIFN0YXRpc3RpY3NcIGZvclwgTXlBcHAyCiAgICAgICAgc3RhdHMgc2NvcGUgLgoKICAgIGxpc3RlbiBhZG1pbl9wYWdlIDo4MDgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIEdsb2JhbFwgc3RhdGlzdGljcwogICAgICAgIHN0YXRzIGF1dGggYWRtaW46QWRNaU4xMjMKCk5vdGVzIDoKLS0tLS0tLQogIC0gbGVzIG9wdGlvbnMgInN0YXRzIiBwZXV2ZW50IGF1c3NpIOp0cmUgc3DpY2lmaellcyBkYW5zIHVuZSBzZWN0aW9uCiAgICAiZGVmYXVsdHMiLCBhdXF1ZWwgY2FzIGxhIG3qbWUgY29uZmlndXJhdGlvbiBleGFjdGVtZW50IHNlcmEgZm91cm5pZSDgCiAgICB0b3V0ZXMgbGVzIGluc3RhbmNlcyBzdWl2YW50ZXMsIGQnb/kgbCd1dGlsaXTpIGR1IHNjb3BlICIuIi4gVG91dGVmb2lzLCBzaQogICAgdW5lIGluc3RhbmNlIHJlZOlmaW5pdCBuJ2ltcG9ydGUgcXVlbCBwYXJhbeh0cmUgInN0YXRzIiwgYWxvcnMgbGVzIGTpZmF1dHMKICAgIG5lIGx1aSBzZXJvbnQgcGFzIGFwcGxpcXXpcy4KCiAgLSBsJ2F1dGhlbnRpZmljYXRpb24gIkJhc2ljIiBlc3QgdHLocyBzaW1wbGlzdGUgZXQgbm9uIHPpY3VyaXPpZSBjb250cmUgbGEKICAgIGNhcHR1cmUgculzZWF1LiBBdWN1biBtb3QgZGUgcGFzc2Ugc2Vuc2libGUgbmUgZG9pdCDqdHJlIHV0aWxpc+ksIGV0IGlsCiAgICBlc3QgYm9uIGRlIHNhdm9pciBxdSdpbCBuJ2V4aXN0ZSBwYXMgZGUgbW95ZW4gZGUgbGUgc3VwcHJpbWVyIGR1IG5hdmlnYXRldXIKICAgIGFwcuhzIHVzYWdlLCBkb25jIGlsIHNlcmEgZW52b3npIHRlbCBxdWVsIOAgbCdhcHBsaWNhdGlvbiBhdSBjb3VycyBkZXMKICAgIGFjY+hzIHN1Y2Nlc3NpZnMuCgogIC0gSWwgZXN0IHRy6HMgaW1wb3J0YW50IGRlIHBy6WNpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLCBzaW5vbiBsZSBwcm94eSBuZQogICAgc2VyYSBwYXMgZW4gbWVzdXJlIGRlIGTpdGVjdGVyIGxlcyBVUkkgZGFucyBsZXMgc2Vzc2lvbnMga2VlcC1hbGl2ZQogICAgbWFpbnRlbnVlcyBlbnRyZSBsZSBuYXZpZ2F0ZXVyIGV0IGxlcyBzZXJ2ZXVycywgZG9uYyBsZXMgVVJJIGRlIHN0YXRzCiAgICBzZXJvbnQgdHJhbnNtaXNlcyB0ZWxsZXMgcXVlbGxlcyBhdXggc2VydmV1cnMgY29tbWUgc2kgbCdvcHRpb24gbifpdGFpdAogICAgcGFzIHBy6WNpc+llLgoKCjUpIExpc3RlcyBkJ2FjY+hzCj09PT09PT09PT09PT09PT09CgpBdmVjIGxhIHZlcnNpb24gMS4zLjEwLCB1biBub3V2ZWF1IGNvbmNlcHQgZGUgbGlzdGVzIGQnYWNj6HMgKEFDTCkgYSB2dSBsZQpqb3VyLiBDb21tZSBpbCBuJ+l0YWl0IHBhcyBu6WNlc3NhaXJlIGRlIHLpaW52ZW50ZXIgbGEgcm91ZSwgZXQgZHUgZmFpdCBxdWUKdG91dGVzIGxlcyBy6WZsZXhpb25zIHBhc3PpZXMgYWJvdXRpc3NhaWVudCDgIGRlcyBwcm9wb3NpdGlvbnMgbm9uCnNhdGlzZmFpc2FudGVzLCBpbCBhIGZpbmFsZW1lbnQg6XTpIGTpY2lk6SBxdWUgcXVlbHF1ZSBjaG9zZSBkZSBwcm9jaGUgZGUgY2UKcXVlIFNxdWlkIG9mZnJlIHNlcmFpdCB1biBib24gY29tcHJvbWlzIGVudHJlIHVuZSByaWNoZXNzZSBmb25jdGlvbm5lbGxlIGV0IHVuZQpmYWNpbGl06SBkJ3V0aWxpc2F0aW9uCgpMZSBwcmluY2lwZSBlc3QgdHLocyBzaW1wbGUgOiBsZXMgQUNMcyBzb250IGTpY2xhcullcyBhdmVjIHVuIG5vbSwgdW4gdGVzdCBldAp1bmUgbGlzdGUgZGUgdmFsZXVycyB2YWxpZGVzIOAgdGVzdGVyLiBEZXMgY29uZGl0aW9ucyBzb250IGFwcGxpcXXpZXMgc3VyCmRpdmVyc2VzIGFjdGlvbnMsIGV0IGNlcyBjb25kaXRpb25zIGVmZmVjdHVlbnQgdW4gRVQgbG9naXF1ZSBlbnRyZSBsZXMgQUNMcy4gTGEKY29uZGl0aW9uIG4nZXN0IGRvbmMgdmFsaWTpZSBxdWUgc2kgdG91dGVzIGxlcyBBQ0xzIHNvbnQgdnJhaWVzLgoKSWwgZXN0IOlnYWxlbWVudCBwb3NzaWJsZSBkJ3V0aWxpc2VyIGxlIG1vdCBy6XNlcnbpICJPUiIgZGFucyBsZXMgY29uZGl0aW9ucywKZXQgaWwgZXN0IHBvc3NpYmxlIHBvdXIgdW5lIEFDTCBkJ+p0cmUgc3DpY2lmaellIHBsdXNpZXVycyBmb2lzLCBt6m1lIGF2ZWMgZGVzCnRlc3RzIGRpZmbpcmVudHMsIGF1cXVlbCBjYXMgbGUgcHJlbWllciB0ZXN0IHLpdXNzaSB2YWxpZGVyYSBsJ0FDTC4KCkF1IHN0YWRlIGRlIGxhIHZlcnNpb24gMS4zLjEyLCBzZXVscyBsZXMgdGVzdHMgc3VpdmFudHMgb250IOl06SBpbXBs6W1lbnTpcyA6CgogICBOaXZlYXV4IDMvNCA6CiAgICAgc3JjICAgICAgIDxpcHY0X2FkZHJlc3M+Wy9tYXNrXSAuLi4gOiBtYXRjaCBJUHY0IHNvdXJjZSBhZGRyZXNzCiAgICAgZHN0ICAgICAgIDxpcHY0X2FkZHJlc3M+Wy9tYXNrXSAuLi4gOiBtYXRjaCBJUHY0IGRlc3RpbmF0aW9uIGFkZHJlc3MKICAgICBzcmNfcG9ydCAgPHJhbmdlPiAuLi4gICAgICAgICAgICAgICA6IG1hdGNoIHNvdXJjZSBwb3J0IHJhbmdlCiAgICAgZHN0X3BvcnQgIDxyYW5nZT4gLi4uICAgICAgICAgICAgICAgOiBtYXRjaCBkZXN0aW5hdGlvbiBwb3J0IHJhbmdlCiAgICAgZHN0X2Nvbm4gIDxyYW5nZT4gLi4uICAgICAgICAgICAgICAgOiBtYXRjaCAjY29ubmVjdGlvbnMgb24gZnJvbnRlbmQKCiAgIE5pdmVhdSA3IDoKICAgICBtZXRob2QgICAgPEhUVFAgbWV0aG9kPiAuLi4gIDogbWF0Y2ggSFRUUCBtZXRob2QKICAgICByZXFfdmVyICAgPDEuMHwxLjE+IC4uLiAgICAgIDogbWF0Y2ggSFRUUCByZXF1ZXN0IHZlcnNpb24KICAgICByZXNwX3ZlciAgPDEuMHwxLjE+IC4uLiAgICAgIDogbWF0Y2ggSFRUUCByZXNwb25zZSB2ZXJzaW9uCiAgICAgc3RhdHVzICAgIDxyYW5nZT4gLi4uICAgICAgICA6IG1hdGNoIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgaW4gcmFuZ2UKICAgICB1cmwgICAgICAgPHN0cmluZz4gLi4uIDogZXhhY3Qgc3RyaW5nIG1hdGNoIG9uIFVSSQogICAgIHVybF9yZWcgICA8cmVnZXg+ICAuLi4gOiByZWdleCBzdHJpbmcgbWF0Y2ggb24gVVJJCiAgICAgdXJsX2JlZyAgIDxzdHJpbmc+IC4uLiA6IHRydWUgaWYgVVJJIGJlZ2lucyB3aXRoIDxzdHJpbmc+CiAgICAgdXJsX2VuZCAgIDxzdHJpbmc+IC4uLiA6IHRydWUgaWYgVVJJIGVuZHMgd2l0aCA8c3RyaW5nPgogICAgIHVybF9zdWIgICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBjb250YWlucyA8c3RyaW5nPgogICAgIHVybF9kaXIgICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBjb250YWlucyA8c3RyaW5nPiBiZXR3ZWVuIHNsYXNoZXMKICAgICB1cmxfZG9tICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgY29udGFpbnMgPHN0cmluZz4gYmV0d2VlbiBzbGFzaGVzIG9yIGRvdHMKClVuZSBwbGFnZSAoJ3JhbmdlJykgZXN0IGNvbnN0aXR16WUgZCd1biBvdSBkZXV4IGVudGllcnMgcXVpIHBldXZlbnQg6nRyZQpwculmaXjpcyBkJ3VuIG9w6XJhdGV1ci4gTGEgc3ludGF4ZSBlc3QgOgoKICBbPG9wPl0gPG1pbj5bOjxtYXg+XQoKQXZlYyA8b3A+IHBvdXZhbnQg6nRyZSA6CiAgJ2VxJyA6IGxhIHZhbGV1ciBkb2l0IOlnYWxlciA8bWluPiBvdSDqdHJlIGNvbXByaXNlIGVudHJlIDxtaW4+IGV0IDxtYXg+CiAgJ2xlJyA6IGxhIHZhbGV1ciBkb2l0IOp0cmUgaW5m6XJpZXVyZSBvdSDpZ2FsZSDgIDxtaW4+CiAgJ2x0JyA6IGxhIHZhbGV1ciBkb2l0IOp0cmUgc3RyaWN0ZW1lbnQgaW5m6XJpZXVyZSDgIDxtaW4+CiAgJ2dlJyA6IGxhIHZhbGV1ciBkb2l0IOp0cmUgc3Vw6XJpZXVyZSBvdSDpZ2FsZSDgIDxtaW4+CiAgJ2d0JyA6IGxhIHZhbGV1ciBkb2l0IOp0cmUgc3RyaWN0ZW1lbnQgc3Vw6XJpZXVyZSDgIDxtaW4+CgpMb3JzcXUnYXVjdW4gb3DpcmF0ZXVyIG4nZXN0IGTpZmluaSwgJ2VxJyBlc3QgZW1wbG956S4gTm90ZXIgcXVlIGxvcnNxdSd1bgpvcOlyYXRldXIgZXN0IHNw6WNpZmnpLCBpbCBzJ2FwcGxpcXVlIOAgdG91dGVzIGxlcyBwbGFnZXMgZGUgdmFsZXVycyBzdWl2YW50ZXMKanVzcXUn4CBsYSBmaW4gZGUgbGEgbGlnbmUgb3UgYmllbiBqdXNxdSfgIGNlIHF1J3VuIG5vdXZlbCBvcOlyYXRldXIgc29pdApwculjaXPpLiBFeGVtcGxlIDoKCiAgYWNsIHN0YXR1c19lcnJvciAgc3RhdHVzICAgNDAwOjU5OQogIGFjbCBzYXR1cmF0ZWRfZnJ0IGRzdF9jb25uIGdlIDEwMDAKICBhY2wgaW52YWxpZF9wb3J0cyBzcmNfcG9ydCBsdCA1MTIgZ2UgNjU1MzUKCkQnYXV0cmVzIHRlc3RzIGFycml2ZW50IChlbnTqdGVzLCBjb29raWVzLCBoZXVyZSwgYXV0aGVudGlmaWNhdGlvbiksIGMnZXN0Cmp1c3RlIHVuZSBxdWVzdGlvbiBkZSB0ZW1wcy4gSWwgZXN0IGF1c3NpIHBy6XZ1IGRlIHBlcm1ldHRyZSBkZSBsaXJlIGxlcwp2YWxldXJzIGRlcHVpcyB1biBmaWNoaWVyLCBhaW5zaSBxdWUgZCdpZ25vcmVyIGxhIGNhc3NlIHBvdXIgY2VydGFpbnMgdGVzdHMuCgpMYSBzZXVsZSBjb21tYW5kZSBzdXBwb3J0YW50IGxlcyBjb25kaXRpb25zIGQnQUNMIOAgY2Ugam91ciBlc3QgbGEgbm91dmVsbGUKY29tbWFuZGUgImJsb2NrIiBxdWkgYmxvcXVlIHVuZSByZXF16nRlIGV0IHJldG91cm5lIHVuIHN0YXR1dCA0MDMgc2kgc2EKY29uZGl0aW9uIGVzdCB2YWxpZOllIChjYXMgZHUgImlmIikgb3UgaW52YWxpZOllIChjYXMgZHUgInVubGVzcyIpLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGFjbCBvcHRpb25zX3VyaXMgIHVybCAqCiAgICBhY2wgbWV0aF9vcHRpb24gICBtZXRob2QgT1BUSU9OUwogICAgYWNsIGh0dHBfMS4xICAgICAgcmVxX3ZlciAxLjEKICAgIGFjbCBhbGxvd2VkX21ldGggIG1ldGhvZCBHRVQgSEVBRCBQT1NUIE9QVElPTlMgQ09OTkVDVAogICAgYWNsIGNvbm5lY3RfbWV0aCAgbWV0aG9kIENPTk5FQ1QKICAgIGFjbCBwcm94eV91cmwgICAgIHVybF9iZWcgaHR0cDovLwoKICAgICMgYmxvY2sgaWYgcmVzZXJ2ZWQgVVJJICIqIiB1c2VkIHdpdGggYSBtZXRob2Qgb3RoZXIgdGhhbiAiT1BUSU9OUyIKICAgIGJsb2NrIGlmIG9wdGlvbnNfdXJpcyAhbWV0aF9vcHRpb24KCiAgICAjIGJsb2NrIGlmIHRoZSBPUFRJT05TIG1ldGhvZCBpcyB1c2VkIHdpdGggSFRUUCAxLjAKICAgIGJsb2NrIGlmIG1ldGhfb3B0aW9uICFodHRwXzEuMQoKICAgICMgYWxsb3cgbm9uLXByb3h5IHVybCB3aXRoIGFueXRoaW5nIGJ1dCB0aGUgQ09OTkVDVCBtZXRob2QKICAgIGJsb2NrIGlmICFjb25uZWN0X21ldGggIXByb3h5X3VybAoKICAgICMgYmxvY2sgYWxsIHVua25vd24gbWV0aG9kcwogICAgYmxvY2sgdW5sZXNzIGFsbG93ZWRfbWV0aAoKTm90ZTogQ2V0dGUgZG9jdW1lbnRhdGlvbiBlc3QgZW1icnlvbm5haXJlIG1haXMgZG9pdCBwZXJtZXR0cmUgZGUgZOltYXJyZXIgZXQKc3VydG91dCBkJ2F2YW5jZXIgc3VyIGxlIHByb2pldCBzYW5zIOp0cmUgdHJvcCByYWxlbnRpIHBhciBsYSBkb2N1bWVudGF0aW9uLgoKCj09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3pdHJhZ2Ugc3lzdOhtZSB8Cj09PT09PT09PT09PT09PT09PT09PT09CgpTb3VzIExpbnV4IDIuNAo9PT09PT09PT09PT09PQoKLS0gY3V0IGhlcmUgLS0KIyEvYmluL3NoCiMgc2V0IHRoaXMgdG8gYWJvdXQgMjU2LzRNICgxNjM4NCBmb3IgMjU2TSBtYWNoaW5lKQpNQVhGSUxFUz0xNjM4NAplY2hvICRNQVhGSUxFUyA+IC9wcm9jL3N5cy9mcy9maWxlLW1heAp1bGltaXQgLW4gJE1BWEZJTEVTCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4IF07IHRoZW4KICAgICAgICBlY2hvIDY1NTM2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXgKZmkKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdCBdOyB0aGVuCiAgICAgICAgIyAzMCBzZWNvbmRzIGZvciBmaW4sIDE1IGZvciB0aW1lIHdhaXQKICAgICAgICBlY2hvIDMwMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0CiAgICAgICAgZWNobyAxNTAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF90aW1lX3dhaXQKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfaW52YWxpZF9zY2FsZQogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19vdXRfb2Zfd2luZG93CmZpCgplY2hvIDEwMjQgNjA5OTkgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfbG9jYWxfcG9ydF9yYW5nZQplY2hvIDMwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9maW5fdGltZW91dAplY2hvIDQwOTYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9zeW5fYmFja2xvZwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3R3X2J1Y2tldHMKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9vcnBoYW5zCmVjaG8gMzAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9rZWVwYWxpdmVfdGltZQplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3R3X3JlY3ljbGUKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90aW1lc3RhbXBzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZWNuCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfc2FjawplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2RzYWNrCgojIGF1dG8tdHVuZWQgb24gMi40CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX21heAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9kZWZhdWx0CgplY2hvIDE2Mzg0IDY1NTM2IDUyNDI4OCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfcm1lbQplY2hvIDE2Mzg0IDM0OTUyMCA2OTkwNDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3dtZW0KCi0tIGN1dCBoZXJlIC0tCgpTb3VzIEZyZWVCU0QKPT09PT09PT09PT09CgpVbiBwb3J0IGRlIEhBLVByb3h5IHNvdXMgRnJlZUJTRCBlc3QgZOlzb3JtYWlzIGRpc3BvbmlibGUsIGdy4mNlIOAKQ2xlbWVudCBMYWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz4uCgpQb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMgOgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS91cmwuY2dpP3BvcnRzL25ldC9oYXByb3h5L3BrZy1kZXNjcgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9jdnN3ZWIuY2dpL3BvcnRzL25ldC9oYXByb3h5LwpodHRwOi8vd3d3LmZyZXNocG9ydHMub3JnL25ldC9oYXByb3h5CgoKLS0gZmluIC0tCg==