Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iiILw-0007wd-6D for pgadmin-hackers@arkaria.postgresql.org; Fri, 20 Dec 2019 13:30:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iiILu-0005Z0-PB for pgadmin-hackers@arkaria.postgresql.org; Fri, 20 Dec 2019 13:29:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iiILt-0005Vj-Hf for pgadmin-hackers@lists.postgresql.org; Fri, 20 Dec 2019 13:29:58 +0000 Received: from mail-io1-xd31.google.com ([2607:f8b0:4864:20::d31]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1iiILm-000605-8U for pgadmin-hackers@postgresql.org; Fri, 20 Dec 2019 13:29:56 +0000 Received: by mail-io1-xd31.google.com with SMTP id i11so9351203ioi.12 for ; Fri, 20 Dec 2019 05:29:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=gMr3ut7W6kac2ckcLoZDeABEyPEBAJ/6LnTuu1SNk7k=; b=zhr60gYfYguI8sWMvR4N9mSebCMkz3nDarHgCX0hFhk3sVrACcK13pZvj8TAXs+yaH UMpre2/8LvceK3C45tzK30aLjjx06wSVLtlJ2k9XBWCzOqpVrfoedqRrlo3ixZURkhF+ d6DwJmVSP3JVvpnFck1JZjqYgG4ojF8dBODEyBpcZAgtuZs/UT10e42tIypZBbOv/KAS nh9fPvz4qY9HMihojDYaHPaOtfwV9bavv+9vUOoipomXvDj1Pm+B4dGC7VZ/b8cliLFn bqyaessKSCTWWNM6DqkGNVA+rji+fOZb1Zbwj59jjy8FRosC5896n36dW/wHMXIKMs00 QEyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=gMr3ut7W6kac2ckcLoZDeABEyPEBAJ/6LnTuu1SNk7k=; b=fVejDKpFEk6+XkSHJkihzXhpIBQtpkZ6d+MjzMQGjOaN0aieSjx/seQ1N6M39nxpth RHXDvY3H67ceBRz96vYR0RUmN9Y2oRPbmfwXpq9NZ6xdRKwTFsA6yb9X4+w+eCUPd5/S sVi4Sk9ojLPKQylYuoL3rKFXiASxyg2AJcYX2Q9pxyFpxgZAahWGhHI5ysStIx3u0UEX Pbu0IHYIg/J02jpUeKtQGqjwPN2qnzf+WcUkcf7/8CFdIIXjhH2MMau5bIX8hJFRhaQZ SwK/GcZNp0a00sMuAdCJFLBbtTOMpqCL3zWRAMn9BEKFeIBAT7H/+pbd+umBCKCB/kmx +anQ== X-Gm-Message-State: APjAAAV6+OIue9m757uu0wswXk5GHbrgM3F9+LeDgAtVwLufdAOd62Ez 4fMqTgiiAR9POwE/JcKd4sDWfB4uiV4D+lCutW/Xcr5OWvTbBsSKUZDSIz4Gy6GMurq/y4a77ao p9+1P8+c+ozpBnEFbIJeVk9U0aYuGAzEXwDinN9emIFc5OB5xBkQzrMuO37hFagFn8+HLvNbOyG 0m3fjYSranmTKvOuU6AxegltfMVEqgEPrtfZMQ7cQpzH9h4MUEpHcFUA== X-Google-Smtp-Source: APXvYqy1WdU+b9/m2vVcWktuHXX5OkVPLnCVAoXM+4GZX5I6MSCAuvO7vftzGwjxLIGsAnYkEA9ajoqAyRmtsL5vWzM= X-Received: by 2002:a5d:8854:: with SMTP id t20mr9916621ios.121.1576848588529; Fri, 20 Dec 2019 05:29:48 -0800 (PST) MIME-Version: 1.0 From: Akshay Joshi Date: Fri, 20 Dec 2019 18:59:37 +0530 Message-ID: Subject: [Feature-3452] Schema diff tool with Table, View, Materialized View, Functions and Procedures To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000fc4016059a22ab61" X-CLOUD-SEC-AV-Info: edb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000fc4016059a22ab61 Content-Type: multipart/alternative; boundary="000000000000fc4014059a22ab5f" --000000000000fc4014059a22ab5f Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the implementation of the new feature Schema Diff Tool. Initial work(backend code to compare the objects) has been done by me and then most of the task has been completed by *Khushboo Vashi. *Sending the patch on behalf of her*.* Currently, this tool only supports Tables, Views, Materialized Views, Functions and Procedures node. Please review and test it thoroughly. Suggestions are welcome to improve the tool. -- *Thanks & Regards* *Akshay Joshi* *Sr. Software Architect* *EnterpriseDB Software India Private Limited* *Mobile: +91 976-788-8246* --000000000000fc4014059a22ab5f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,=C2=A0

Attached is the imple= mentation of the new feature Schema Diff Tool. Initial=C2=A0work(backend co= de to compare the objects) has been done by me and then most of the task ha= s been completed by Khushboo Vashi. Sending the patch on behalf of h= er.

Currently, this tool only suppor= ts Tables, Views, Materialized=C2=A0Views, Functions=C2=A0and Procedures no= de.

Please review and test it thoroughly. Suggesti= ons are=C2=A0welcome to improve the tool.

--
<= div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature= ">
Thanks & Regards
Akshay Joshi
= Sr. Software Architec= t
= EnterpriseDB Software= India Private Limited
Mobile: +91 976-788-8246
--000000000000fc4014059a22ab5f-- --000000000000fc4016059a22ab61 Content-Type: application/octet-stream; name="RM_3452.patch" Content-Disposition: attachment; filename="RM_3452.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k4e6u3dj0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvX19p bml0X18ucHkKaW5kZXggYTgxM2Y3YTdjLi4yOGNhYjgzM2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5CisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5CkBAIC0yOCw2 ICsyOCw3IEBAIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgZGIsIFNlcnZlciwgU2VydmVyR3Jv dXAsIFVzZXIKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZy b20gcGdhZG1pbi51dGlscy5tYXN0ZXJfcGFzc3dvcmQgaW1wb3J0IGdldF9jcnlwdF9rZXkKIGZy b20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IENyeXB0S2V5TWlzc2luZworZnJvbSBw Z2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLm5vZGVfcmVnaXN0cnkgaW1wb3J0IFNjaGVtYURpZmZS ZWdpc3RyeQogZnJvbSBwc3ljb3BnMiBpbXBvcnQgRXJyb3IgYXMgcHN5Y29wZzJfRXJyb3IsIE9w ZXJhdGlvbmFsRXJyb3IKIAogCkBAIC0xNjI3LDQgKzE2MjgsNSBAQCBjbGFzcyBTZXJ2ZXJOb2Rl KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICkKIAogCitTY2hlbWFEaWZmUmVnaXN0cnkoJ3Nl cnZlcicsIFNlcnZlck5vZGUpCiBTZXJ2ZXJOb2RlLnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJp bnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvX19pbml0X18ucHkKaW5kZXggYzRjYjcxYTExLi40OTMyYTc5 NzEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvX19pbml0X18ucHkKQEAgLTMwLDYgKzMwLDggQEAgZnJv bSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAogICAgIG1h a2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCB1bmF1 dGhvcml6ZWQKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZy b20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMucXVlcnlfaGlzdG9yeSBpbXBvcnQgUXVl cnlIaXN0b3J5CisKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5ub2RlX3JlZ2lzdHJ5 IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0cnkKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgU2Vy dmVyCiAKIApAQCAtMTExMSw0ICsxMTEzLDUgQEAgY2xhc3MgRGF0YWJhc2VWaWV3KFBHQ2hpbGRO b2RlVmlldyk6CiAgICAgICAgICkKIAogCitTY2hlbWFEaWZmUmVnaXN0cnkoJ2RhdGFiYXNlJywg RGF0YWJhc2VWaWV3KQogRGF0YWJhc2VWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL19faW5pdF9fLnB5CmluZGV4IDcyYzJk ZjVhOS4uN2QwYjg5NjBmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9fX2lu aXRfXy5weQpAQCAtMjMsNiArMjMsNyBAQCBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBv cnQgUEdDaGlsZE5vZGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNl IGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUsIGJhZF9yZXF1ZXN0CiBmcm9tIHBnYWRtaW4udXRpbHMu ZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYu bm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lzdHJ5CiAKICIiIgogICAgIFRoaXMg bW9kdWxlIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHR3byBub2RlcwpAQCAtMTAyMyw1 ICsxMDI0LDYgQEAgSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFub3RoZXIgdXNlci4KICAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMLnN0cmlwKCJcbiIpKQogCiAK K1NjaGVtYURpZmZSZWdpc3RyeSgnc2NoZW1hJywgU2NoZW1hVmlldykKIFNjaGVtYVZpZXcucmVn aXN0ZXJfbm9kZV92aWV3KHNjaGVtYV9ibHVlcHJpbnQpCiBDYXRhbG9nVmlldy5yZWdpc3Rlcl9u b2RlX3ZpZXcoY2F0YWxvZ19ibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jb2xsYXRpb25zL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy9fX2luaXRfXy5weQppbmRleCBkZDYwNjQ1NzMuLmZh YzE4NGZkNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy9fX2luaXRfXy5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9j b2xsYXRpb25zL19faW5pdF9fLnB5CkBAIC0yNSw2ICsyNSw4IEBAIGZyb20gcGdhZG1pbi51dGls cy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwg XAogICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQogZnJvbSBwZ2FkbWlu LnV0aWxzLmNvbXBpbGVfdGVtcGxhdGVfbmFtZSBpbXBvcnQgY29tcGlsZV90ZW1wbGF0ZV9wYXRo CiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIHBnYWRt aW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lz dHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQgU2NoZW1h RGlmZk9iamVjdENvbXBhcmUKIAogIyBJZiB3ZSBhcmUgaW4gUHl0aG9uMwogaWYgbm90IElTX1BZ MjoKQEAgLTkyLDcgKzk0LDcgQEAgY2xhc3MgQ29sbGF0aW9uTW9kdWxlKFNjaGVtYUNoaWxkTW9k dWxlKToKIGJsdWVwcmludCA9IENvbGxhdGlvbk1vZHVsZShfX25hbWVfXykKIAogCi1jbGFzcyBD b2xsYXRpb25WaWV3KFBHQ2hpbGROb2RlVmlldyk6CitjbGFzcyBDb2xsYXRpb25WaWV3KFBHQ2hp bGROb2RlVmlldywgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUpOgogICAgICIiIgogICAgIFRoaXMg Y2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgcm91dGVzIGZvciBDb2xsYXRpb24g bm9kZQogCkBAIC0xNDQsNiArMTQ2LDEwIEBAIGNsYXNzIENvbGxhdGlvblZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKICAgICAqIGRlcGVuZGVudChnaWQsIHNpZCwgZGlkLCBzY2lkKToKICAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4g ZGVwZW5kZW50CiAgICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBDb2xsYXRpb24gbm9kZS4K KworICAgICogY29tcGFyZSgqKmt3YXJncyk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBj b21wYXJlIHRoZSBjb2xsYXRpb24gbm9kZXMgZnJvbSB0d28gZGlmZmVyZW50CisgICAgICAgIHNj aGVtYXMuCiAgICAgIiIiCiAKICAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCkBA IC0xNzIsNyArMTc4LDggQEAgY2xhc3MgQ29sbGF0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcpOgog ICAgICAgICAnZGVwZW5kZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCiAgICAgICAg ICdkZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKICAgICAgICAgJ2dldF9jb2xs YXRpb25zJzogW3snZ2V0JzogJ2dldF9jb2xsYXRpb24nfSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsnZ2V0JzogJ2dldF9jb2xsYXRpb24nfV0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsnZ2V0JzogJ2dldF9jb2xsYXRpb24nfV0sCisgICAgICAgICdjb21wYXJlJzogW3snZ2V0 JzogJ2NvbXBhcmUnfSwgeydnZXQnOiAnY29tcGFyZSd9XQogICAgIH0pCiAKICAgICBkZWYgY2hl Y2tfcHJlY29uZGl0aW9uKGYpOgpAQCAtMzE4LDIzICszMjUsMzYgQEAgY2xhc3MgQ29sbGF0aW9u VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgSlNPTiBvZiBzZWxlY3RlZCBjb2xs YXRpb24gbm9kZQogICAgICAgICAiIiIKIAorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuX2Zl dGNoX3Byb3BlcnRpZXMoc2NpZCwgY29pZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQor CisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIHNjaWQsIGNvaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBmZXRjaCB0aGUgcHJvcGVydGllcyBmb3IgdGhlIHNw ZWNpZmllZCBvYmplY3QuCisKKyAgICAgICAgOnBhcmFtIHNjaWQ6IFNjaGVtYSBJRAorICAgICAg ICA6cGFyYW0gY29pZDogQ29sbGF0aW9uIElECisgICAgICAgICIiIgorCiAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgY29pZD1jb2lkKQogICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQogCiAgICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKIAogICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAg ICAgICAgICByZXR1cm4gZ29uZSgKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCJDb3VsZCBub3Qg ZmluZCB0aGUgY29sbGF0aW9uIG9iamVjdCBpbiB0aGUgZGF0YWJhc2UuIikKLSAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZ29uZShnZXR0ZXh0KCJDb3VsZCBub3QgZmlu ZCB0aGUgY29sbGF0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJvYmplY3QgaW4gdGhlIGRhdGFiYXNlLiIpKQogCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCi0gICAgICAgICAgICBz dGF0dXM9MjAwCi0gICAgICAgICkKKyAgICAgICAgcmV0dXJuIFRydWUsIHJlc1sncm93cyddWzBd CiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF9jb2xsYXRpb24oc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgY29pZD1Ob25lKToKQEAgLTc0OCw1ICs3NjgsMzAgQEAgY2xh c3MgQ29sbGF0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc3RhdHVzPTIw MAogICAgICAgICApCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGZldGNoX29i amVjdHNfdG9fY29tcGFyZShzZWxmLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgYWxsIHRoZSBjb2xsYXRp b25zIGZvcgorICAgICAgICBzcGVjaWZpZWQgc2NoZW1hIGlkLgorCisgICAgICAgIDpwYXJhbSBz aWQ6IFNlcnZlciBJZAorICAgICAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICA6 cGFyYW0gc2NpZDogU2NoZW1hIElkCisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIiIgorICAg ICAgICByZXMgPSBkaWN0KCkKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ25vZGVzLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgc3RhdHVzLCBkYXRh ID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhzY2lkLCByb3dbJ29pZCddKQorICAgICAgICAgICAg aWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJlc1tyb3dbJ25hbWUnXV0gPSBkYXRhCisKKyAg ICAgICAgcmV0dXJuIHJlcworCiAKIENvbGxhdGlvblZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJs dWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L19faW5pdF9fLnB5CmluZGV4IDIwZTQ3Nzk4Ni4uNmZkY2FjZTg0IDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18ucHkKQEAgLTI3LDYg KzI3LDggQEAgZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25z ZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBcCiAgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jl c3BvbnNlLCBnb25lCiBmcm9tIHBnYWRtaW4udXRpbHMuY29tcGlsZV90ZW1wbGF0ZV9uYW1lIGlt cG9ydCBjb21waWxlX3RlbXBsYXRlX3BhdGgKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1w b3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5ub2RlX3JlZ2lz dHJ5IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0cnkKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFf ZGlmZi5jb21wYXJlIGltcG9ydCBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZQogCiAjIElmIHdlIGFy ZSBpbiBQeXRob24zCiBpZiBub3QgSVNfUFkyOgpAQCAtNzksNyArODEsNyBAQCBjbGFzcyBEb21h aW5Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgogYmx1ZXByaW50ID0gRG9tYWluTW9kdWxlKF9f bmFtZV9fKQogCiAKLWNsYXNzIERvbWFpblZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJl YWRlcik6CitjbGFzcyBEb21haW5WaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIs IFNjaGVtYURpZmZPYmplY3RDb21wYXJlKToKICAgICAiIiIKICAgICBjbGFzcyBEb21haW5WaWV3 CiAKQEAgLTEzOCw2ICsxNDAsMTAgQEAgY2xhc3MgRG9tYWluVmlldyhQR0NoaWxkTm9kZVZpZXcs IERhdGFUeXBlUmVhZGVyKToKIAogICAgICogdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm5p ZD1Ob25lKToKICAgICAgIC0gUmV0dXJucyBEYXRhIFR5cGVzLgorCisgICAgKiBjb21wYXJlKCoq a3dhcmdzKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGNvbXBhcmUgdGhlIGRvbWFpbiBu b2RlcyBmcm9tIHR3byBkaWZmZXJlbnQKKyAgICAgICAgc2NoZW1hcy4KICAgICAiIiIKIAogICAg IG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKQEAgLTE2OSw3ICsxNzUsOCBAQCBjbGFz cyBEb21haW5WaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAgICAn Z2V0X2NvbGxhdGlvbnMnOiBbCiAgICAgICAgICAgICB7J2dldCc6ICdnZXRfY29sbGF0aW9ucyd9 LAogICAgICAgICAgICAgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfQotICAgICAgICBdCisgICAg ICAgIF0sCisgICAgICAgICdjb21wYXJlJzogW3snZ2V0JzogJ2NvbXBhcmUnfSwgeydnZXQnOiAn Y29tcGFyZSd9XQogICAgIH0pCiAKICAgICBkZWYgdmFsaWRhdGVfcmVxdWVzdChmKToKQEAgLTM2 OSwxNSArMzc2LDMxIEBAIGNsYXNzIERvbWFpblZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlw ZVJlYWRlcik6CiAgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKICAgICAgICAgICAgIGRvaWQ6 IERvbWFpbiBJZAogICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLl9mZXRj aF9wcm9wZXJ0aWVzKGRpZCwgc2NpZCwgZG9pZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAg ICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQogCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIGRpZCwgc2NpZCwgZG9pZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZmVjdGggdGhlIHBy b3BlcnRpZXMgb2Ygc3BlY2lmaWVkIG9iamVjdC4KKyAgICAgICAgOnBhcmFtIGRpZDoKKyAgICAg ICAgOnBhcmFtIHNjaWQ6CisgICAgICAgIDpwYXJhbSBkb2lkOgorICAgICAgICA6cmV0dXJuOgor ICAgICAgICAiIiIKICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQogICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAg ICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAK ICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIGdv bmUoZ2V0dGV4dCgiIiIKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZ29uZShnZXR0ZXh0KCIi IgogQ291bGQgbm90IGZpbmQgdGhlIGRvbWFpbiBpbiB0aGUgZGF0YWJhc2UuCiBJdCBtYXkgaGF2 ZSBiZWVuIHJlbW92ZWQgYnkgYW5vdGhlciB1c2VyIG9yIG1vdmVkIHRvIGFub3RoZXIgc2NoZW1h LgogIiIiKSkKQEAgLTM5Myw3ICs0MTYsNyBAQCBJdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgYnkg YW5vdGhlciB1c2VyIG9yIG1vdmVkIHRvIGFub3RoZXIgc2NoZW1hLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9pZD1kb2lkKQogICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICBy ZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKICAgICAg ICAgZGF0YVsnY29uc3RyYWludHMnXSA9IHJlc1sncm93cyddCiAKQEAgLTQwNiwxMCArNDI5LDcg QEAgSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFub3RoZXIgdXNlciBvciBtb3ZlZCB0byBh bm90aGVyIHNjaGVtYS4KICAgICAgICAgaWYgZG9pZCA8PSBzZWxmLm1hbmFnZXIuZGJfaW5mb1tk aWRdWydkYXRsYXN0c3lzb2lkJ106CiAgICAgICAgICAgICBkYXRhWydzeXNkb21haW4nXSA9IFRy dWUKIAotICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJlc3BvbnNl PWRhdGEsCi0gICAgICAgICAgICBzdGF0dXM9MjAwCi0gICAgICAgICkKKyAgICAgICAgcmV0dXJu IFRydWUsIGRhdGEKIAogICAgIGRlZiBfcGFyc2VfdHlwZShzZWxmLCBiYXNldHlwZSk6CiAgICAg ICAgICIiIgpAQCAtNjY0LDcgKzY4NCw3IEBAIEFORCByZWxraW5kICE9ICdjJykpIiIiCiAgICAg ICAgICkKIAogICAgIEBjaGVja19wcmVjb25kaXRpb24KLSAgICBkZWYgc3FsKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkLCBkb2lkPU5vbmUsIHJldHVybl9hamF4X3Jlc3BvbnNlPVRydWUpOgogICAgICAg ICAiIiIKICAgICAgICAgUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIG9iamVjdC4KIApA QCAtNjc0LDYgKzY5NCw3IEBAIEFORCByZWxraW5kICE9ICdjJykpIiIiCiAgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElkCiAgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKICAgICAgICAgICAg IGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAgICAgcmV0dXJuX2FqYXhfcmVzcG9uc2U6CiAgICAg ICAgICIiIgogCiAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLApAQCAtNzE2LDYgKzczNyw5IEBAIEFORCByZWxraW5kICE9ICdjJykpIiIi CiAiIiIuZm9ybWF0KHNlbGYucXRJZGVudChzZWxmLmNvbm4sIGRhdGFbJ2Jhc2Vuc3AnXSwgZGF0 YVsnbmFtZSddKSkKICAgICAgICAgU1FMID0gc3FsX2hlYWRlciArIFNRTAogCisgICAgICAgIGlm IG5vdCByZXR1cm5fYWpheF9yZXNwb25zZToKKyAgICAgICAgICAgIHJldHVybiBTUUwuc3RyaXAo J1xuJykKKwogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwuc3RyaXAo J1xuJykpCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCkBAIC04NDYsNSArODcwLDQwIEBAIEFO RCByZWxraW5kICE9ICdjJykpIiIiCiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkK IAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZmV0Y2hfb2JqZWN0c190b19jb21w YXJlKHNlbGYsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBhbGwgdGhlIGRvbWFpbnMgZm9yCisgICAgICAg IHNwZWNpZmllZCBzY2hlbWEgaWQuCisKKyAgICAgICAgOnBhcmFtIHNpZDogU2VydmVyIElkCisg ICAgICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIDpwYXJhbSBzY2lkOiBTY2hl bWEgSWQKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IGRpY3Qo KQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZS5zcWwn XSksIHNjaWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf MmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3By b3BlcnRpZXMoZGlkLCBzY2lkLCByb3dbJ29pZCddKQorCisgICAgICAgICAgICBpZiBzdGF0dXM6 CisgICAgICAgICAgICAgICAgaWYgJ2NvbnN0cmFpbnRzJyBpbiBkYXRhIGFuZCBsZW4oZGF0YVsn Y29uc3RyYWludHMnXSkgPiAwOgorICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBkYXRh Wydjb25zdHJhaW50cyddOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUga2V5cyB0 aGF0IHNob3VsZCBub3QgYmUgdGhlIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgb2Yg Y29tcGFyaXNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnY29ub2lkJyBpbiBpdGVt OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9wKCdjb25vaWQnKQorICAgICAg ICAgICAgICAgICAgICAgICAgaWYgJ25zcG5hbWUnIGluIGl0ZW06CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXRlbS5wb3AoJ25zcG5hbWUnKQorCisgICAgICAgICAgICAgICAgcmVzW3Jv d1snbmFtZSddXSA9IGRhdGEKKworICAgICAgICByZXR1cm4gcmVzCisKIAogRG9tYWluVmlldy5y ZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKaW5k ZXggZGY5NTZiZjlhLi42NzZjNWE2ZTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApAQCAt OCw3ICs4LDcgQEAgSk9JTgogSk9JTgogICAgIHBnX25hbWVzcGFjZSBubCBPTiBubC5vaWQ9dHlw bmFtZXNwYWNlCiBMRUZUIE9VVEVSIEpPSU4KLSAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRl cy5vYmpvaWQ9dC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNz KQorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNs YXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCiBXSEVSRQogICAgIGNvbnR5cGUgPSAn YycgQU5EIGNvbnR5cGlkID0gIHt7ZG9pZH19OjpvaWQKIE9SREVSIEJZCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC9kZWZhdWx0L2dldF9jb25zdHJhaW50cy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC9kZWZhdWx0L2dldF9jb25zdHJh aW50cy5zcWwKaW5kZXggODk3ZmIyNDc3Li5iOTlmODU1YTggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsL2RlZmF1bHQvZ2V0X2NvbnN0cmFpbnRzLnNxbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC9kZWZhdWx0L2dldF9jb25zdHJhaW50 cy5zcWwKQEAgLTgsNyArOCw3IEBAIEpPSU4KIEpPSU4KICAgICBwZ19uYW1lc3BhY2UgbmwgT04g bmwub2lkPXR5cG5hbWVzcGFjZQogTEVGVCBPVVRFUiBKT0lOCi0gICAgcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFpbnQn OjpyZWdjbGFzcykKKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQogV0hFUkUKICAgICBj b250eXBlID0gJ2MnCiAgICAgQU5EIGNvbnR5cGlkID0gIHt7ZG9pZH19OjpvaWQKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvX19p bml0X18ucHkKaW5kZXggNzU3MDJhNTU3Li4xYmU3NmM5MDYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL19faW5pdF9fLnB5 CkBAIC0zMiw2ICszMiw4IEBAIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pz b25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2VfcmVzcG9uc2Ug YXMgYWpheF9yZXNwb25zZSwgZ29uZQogZnJvbSBwZ2FkbWluLnV0aWxzLmNvbXBpbGVfdGVtcGxh dGVfbmFtZSBpbXBvcnQgY29tcGlsZV90ZW1wbGF0ZV9wYXRoCiBmcm9tIHBnYWRtaW4udXRpbHMu ZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYu bm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lzdHJ5Citmcm9tIHBnYWRtaW4udG9v bHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUKIAog IyBJZiB3ZSBhcmUgaW4gUHl0aG9uMwogaWYgbm90IElTX1BZMjoKQEAgLTkzLDcgKzk1LDggQEAg Y2xhc3MgRm9yZWlnblRhYmxlTW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxlKToKIGJsdWVwcmludCA9 IEZvcmVpZ25UYWJsZU1vZHVsZShfX25hbWVfXykKIAogCi1jbGFzcyBGb3JlaWduVGFibGVWaWV3 KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgorY2xhc3MgRm9yZWlnblRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAg ICBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZSk6CiAgICAgIiIiCiAgICAgY2xhc3MgRm9yZWlnblRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcpCiAKQEAgLTE3NCw2ICsxNzcsOSBAQCBjbGFzcyBGb3Jl aWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAgICogZGVs ZXRlX3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToKICAgICAgIC0gUmV0dXJucyBzcWwg Zm9yIFNjcmlwdAogCisgICAgKiBjb21wYXJlKCoqa3dhcmdzKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGNvbXBhcmUgdGhlIGZvcmVpZ24gdGFibGUgbm9kZXMgZnJvbSB0d28gZGlmZmVy ZW50CisgICAgICAgIHNjaGVtYXMuCiAgICAgIiIiCiAKICAgICBub2RlX3R5cGUgPSBibHVlcHJp bnQubm9kZV90eXBlCkBAIC0yMTMsNyArMjE5LDggQEAgY2xhc3MgRm9yZWlnblRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgJ3NlbGVjdF9zcWwnOiBb eydnZXQnOiAnc2VsZWN0X3NxbCd9XSwKICAgICAgICAgJ2luc2VydF9zcWwnOiBbeydnZXQnOiAn aW5zZXJ0X3NxbCd9XSwKICAgICAgICAgJ3VwZGF0ZV9zcWwnOiBbeydnZXQnOiAndXBkYXRlX3Nx bCd9XSwKLSAgICAgICAgJ2RlbGV0ZV9zcWwnOiBbeydnZXQnOiAnZGVsZXRlX3NxbCd9XQorICAg ICAgICAnZGVsZXRlX3NxbCc6IFt7J2dldCc6ICdkZWxldGVfc3FsJ31dLAorICAgICAgICAnY29t cGFyZSc6IFt7J2dldCc6ICdjb21wYXJlJ30sIHsnZ2V0JzogJ2NvbXBhcmUnfV0KICAgICB9KQog CiAgICAgZGVmIHZhbGlkYXRlX3JlcXVlc3QoZik6CkBAIC00NDcsMTEgKzQ1NCw5IEBAIGNsYXNz IEZvcmVpZ25UYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSWQKICAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUg SWQKICAgICAgICAgIiIiCi0gICAgICAgIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpCi0gICAgICAgIGlmIGRhdGEgaXMgRmFsc2U6Ci0gICAg ICAgICAgICByZXR1cm4gZ29uZSgKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCJDb3VsZCBub3Qg ZmluZCB0aGUgZm9yZWlnbiB0YWJsZSBvbiB0aGUgc2VydmVyLiIpCi0gICAgICAgICAgICApCisg ICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgZm9pZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBkYXRhCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAgICAgICByZXNw b25zZT1kYXRhLApAQCAtODE0LDExICs4MTksMTAgQEAgY2xhc3MgRm9yZWlnblRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAogICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAogICAgICAgICAiIiIKLSAg ICAgICAgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg Zm9pZCwgaW5oZXJpdHM9VHJ1ZSkKLSAgICAgICAgaWYgZGF0YSBpcyBGYWxzZToKLSAgICAgICAg ICAgIHJldHVybiBnb25lKAotICAgICAgICAgICAgICAgIGdldHRleHQoIkNvdWxkIG5vdCBmaW5k IHRoZSBmb3JlaWduIHRhYmxlIG9uIHRoZSBzZXJ2ZXIuIikKLSAgICAgICAgICAgICkKKyAgICAg ICAgc3RhdHVzLCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBz Y2lkLCBmb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluaGVyaXRzPVRydWUpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gZGF0YQogCiAgICAgICAgIGNvbF9kYXRhID0gW10KICAgICAgICAgZm9yIGMgaW4gZGF0YVsn Y29sdW1ucyddOgpAQCAtODkxLDEyICs4OTUsMTAgQEAgY2xhc3MgRm9yZWlnblRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgICAgIGZvaWQ6IEZvcmVp Z24gVGFibGUgSWQKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGZvaWQgaXMgbm90IE5vbmU6Ci0g ICAgICAgICAgICBvbGRfZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgZm9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbmhlcml0cz1UcnVlKQotICAgICAgICAgICAgaWYgb2xkX2RhdGEgaXMgRmFsc2U6Ci0g ICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCi0gICAgICAgICAgICAgICAgICAgIGdldHRleHQo IkNvdWxkIG5vdCBmaW5kIHRoZSBmb3JlaWduIHRhYmxlIG9uIHRoZSBzZXJ2ZXIuIikKLSAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIG9sZF9kYXRhID0gc2VsZi5fZmV0Y2hf cHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9pZCwgaW5oZXJpdHM9VHJ1ZSkKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9sZF9kYXRhCiAK ICAgICAgICAgICAgICMgUHJlcGFyZSBkaWN0IG9mIGNvbHVtbnMgd2l0aCBrZXkgPSBjb2x1bW4n cyBhdHRudW0KICAgICAgICAgICAgICMgV2lsbCB1c2UgdGhpcyBpbiB0aGUgdXBkYXRlIHRlbXBs YXRlIHdoZW4gYW55IGNvbHVtbiBpcwpAQCAtMTA1MSwxMCArMTA1MywxMCBAQCBjbGFzcyBGb3Jl aWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCBmb2lkPWZvaWQpCiAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKIAogICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAgICAgICAg ICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgRmFsc2UKIAogICAgICAg ICBkYXRhID0gcmVzWydyb3dzJ11bMF0KIApAQCAtMTA2NCw3ICsxMDY2LDcgQEAgY2xhc3MgRm9y ZWlnblRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb2lkPWZvaWQpCiAgICAgICAgICAgICBzdGF0dXMs IGFjbHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPWFjbHJlcykKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1hY2xyZXMpCiAKICAgICAgICAgICAgICMgR2V0IEZvcm1hdHRl ZCBQcml2aWxlZ2VzCiAgICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxmLl9mb3JtYXRfcHJvYWNs X2Zyb21fZGIoYWNscmVzWydyb3dzJ10pKQpAQCAtMTA4Miw3ICsxMDg0LDcgQEAgY2xhc3MgRm9y ZWlnblRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRzLnNxbCddKSwg Zm9pZD1mb2lkKQogICAgICAgICBzdGF0dXMsIGNvbnMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y29ucykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwg aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNvbnMpCiAKICAgICAgICAgaWYgY29ucyBh bmQgJ3Jvd3MnIGluIGNvbnM6CiAgICAgICAgICAgICBkYXRhWydjb25zdHJhaW50cyddID0gY29u c1sncm93cyddCkBAIC0xMDkxLDcgKzEwOTMsNyBAQCBjbGFzcyBGb3JlaWduVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfY29sdW1ucy5zcWwnXSksIGZvaWQ9Zm9pZCkKICAgICAgICAg c3RhdHVzLCBjb2xzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPWNvbHMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1jb2xzKQogCiAgICAgICAgICMgVGhlIExlbmd0aCBhbmQgdGhlIHByZWNpc2lv biBvZiB0aGUgRGF0YXR5cGUgc2hvdWxkIGJlIHNlcGFyYXRlZC4KICAgICAgICAgIyBUaGUgRm9y bWF0IHdlIGdldHRpbmcgZnJvbSBkYXRhYmFzZSBpczogbnVtZXJpYygxLDEpCkBAIC0xMTI4LDEy ICsxMTMwLDEyIEBAIGNsYXNzIEZvcmVpZ25UYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRh VHlwZVJlYWRlcik6CiAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKIAogICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCiAKICAgICAgICAgICAgICAgICBpZiAnaW5oZXJpdHMnIGluIHJlc1sncm93 cyddWzBdOgogICAgICAgICAgICAgICAgICAgICBkYXRhWydpbmhlcml0cyddID0gcmVzWydyb3dz J11bMF1bJ2luaGVyaXRzJ10KIAotICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICByZXR1cm4g VHJ1ZSwgZGF0YQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBjb252ZXJ0X3ByZWNpc2lv bl90b19pbnQodHlwbGVuKToKQEAgLTEyMjIsMTEgKzEyMjQsOSBAQCBjbGFzcyBGb3JlaWduVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAgICBSZXR1cm5z OgogICAgICAgICAgICAgU0VMRUNUIFNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKICAgICAgICAg IiIiCi0gICAgICAgIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQs IHNjaWQsIGZvaWQpCi0gICAgICAgIGlmIGRhdGEgaXMgRmFsc2U6Ci0gICAgICAgICAgICByZXR1 cm4gZ29uZSgKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCJDb3VsZCBub3QgZmluZCB0aGUgZm9y ZWlnbiB0YWJsZSBvbiB0aGUgc2VydmVyLiIpCi0gICAgICAgICAgICApCisgICAgICAgIHN0YXR1 cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9p ZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBkYXRhCiAKICAg ICAgICAgY29sdW1ucyA9IFtdCiAgICAgICAgIGZvciBjIGluIGRhdGFbJ2NvbHVtbnMnXToKQEAg LTEyNTksMTEgKzEyNTksOSBAQCBjbGFzcyBGb3JlaWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgSU5TRVJU IFNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKICAgICAgICAgIiIiCi0gICAgICAgIGRhdGEgPSBz ZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpCi0gICAgICAg IGlmIGRhdGEgaXMgRmFsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZ29uZSgKLSAgICAgICAgICAg ICAgICBnZXR0ZXh0KCJDb3VsZCBub3QgZmluZCB0aGUgZm9yZWlnbiB0YWJsZSBvbiB0aGUgc2Vy dmVyLiIpCi0gICAgICAgICAgICApCisgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNo X3Byb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICAgICAgY29sdW1ucyA9IFtdCiAg ICAgICAgIHZhbHVlcyA9IFtdCkBAIC0xMzAxLDExICsxMjk5LDkgQEAgY2xhc3MgRm9yZWlnblRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgUmV0dXJu czoKICAgICAgICAgICAgIFVQREFURSBTY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CiAgICAgICAg ICIiIgotICAgICAgICBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhnaWQsIHNpZCwgZGlk LCBzY2lkLCBmb2lkKQotICAgICAgICBpZiBkYXRhIGlzIEZhbHNlOgotICAgICAgICAgICAgcmV0 dXJuIGdvbmUoCi0gICAgICAgICAgICAgICAgZ2V0dGV4dCgiQ291bGQgbm90IGZpbmQgdGhlIGZv cmVpZ24gdGFibGUgb24gdGhlIHNlcnZlci4iKQotICAgICAgICAgICAgKQorICAgICAgICBzdGF0 dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZv aWQpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gZGF0YQogCiAg ICAgICAgIGNvbHVtbnMgPSBbXQogCkBAIC0xMzQ2LDExICsxMzQyLDkgQEAgY2xhc3MgRm9yZWln blRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgUmV0 dXJuczoKICAgICAgICAgICAgIERFTEVURSBTY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CiAgICAg ICAgICIiIgotICAgICAgICBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhnaWQsIHNpZCwg ZGlkLCBzY2lkLCBmb2lkKQotICAgICAgICBpZiBkYXRhIGlzIEZhbHNlOgotICAgICAgICAgICAg cmV0dXJuIGdvbmUoCi0gICAgICAgICAgICAgICAgZ2V0dGV4dCgiQ291bGQgbm90IGZpbmQgdGhl IGZvcmVpZ24gdGFibGUgb24gdGhlIHNlcnZlci4iKQotICAgICAgICAgICAgKQorICAgICAgICBz dGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IGZvaWQpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gZGF0YQog CiAgICAgICAgIHNxbCA9IHUiREVMRVRFIEZST00gezB9XG5cdFdIRVJFIDxjb25kaXRpb24+OyIu Zm9ybWF0KAogICAgICAgICAgICAgc2VsZi5xdElkZW50KHNlbGYuY29ubiwgZGF0YVsnYmFzZW5z cCddLCBkYXRhWyduYW1lJ10pCkBAIC0xMzU4LDUgKzEzNTIsMzcgQEAgY2xhc3MgRm9yZWlnblRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKIAogICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwpCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFyZShzZWxmLCBzaWQsIGRpZCwgc2NpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qg b2YgYWxsIHRoZSBmb3JlaWduIHRhYmxlcyBmb3IKKyAgICAgICAgc3BlY2lmaWVkIHNjaGVtYSBp ZC4KKworICAgICAgICA6cGFyYW0gc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgOnBhcmFtIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICA6cmV0 dXJuOgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gZGljdCgpCisgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2RlLnNxbCddKSwgc2NpZD1zY2lkKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgc3RhdHVzLCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcygwLCBzaWQsIGRp ZCwgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcm93WydvaWQnXSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICBp ZiAnY29uc3RyYWludHMnIGluIGRhdGEgYW5kIGRhdGFbJ2NvbnN0cmFpbnRzJ10gaXMgbm90IE5v bmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxlbihkYXRhWydjb25zdHJhaW50cydd KSA+IDA6CisgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGRhdGFbJ2NvbnN0cmFpbnRz J106CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnY29ub2lkJyBpbiBpdGVtOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9wKCdjb25vaWQnKQorCisgICAgICAgICAgICAg ICAgcmVzW3Jvd1snbmFtZSddXSA9IGRhdGEKKworICAgICAgICByZXR1cm4gcmVzCisKIAogRm9y ZWlnblRhYmxlVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25z L19faW5pdF9fLnB5CmluZGV4IDRhYTZjYzJiNC4uNGU2NTk2MWRlIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dHNfY29uZmlndXJhdGlvbnMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25z L19faW5pdF9fLnB5CkBAIC0yNCw2ICsyNCw4IEBAIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQg SVNfUFkyCiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNl LCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVz cG9uc2UsIGdvbmUKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIK K2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5ub2RlX3JlZ2lzdHJ5IGltcG9ydCBTY2hl bWFEaWZmUmVnaXN0cnkKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5jb21wYXJlIGlt cG9ydCBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZQogCiAjIElmIHdlIGFyZSBpbiBQeXRob24zCiBp ZiBub3QgSVNfUFkyOgpAQCAtOTMsNyArOTUsNyBAQCBjbGFzcyBGdHNDb25maWd1cmF0aW9uTW9k dWxlKFNjaGVtYUNoaWxkTW9kdWxlKToKIGJsdWVwcmludCA9IEZ0c0NvbmZpZ3VyYXRpb25Nb2R1 bGUoX19uYW1lX18pCiAKIAotY2xhc3MgRnRzQ29uZmlndXJhdGlvblZpZXcoUEdDaGlsZE5vZGVW aWV3KToKK2NsYXNzIEZ0c0NvbmZpZ3VyYXRpb25WaWV3KFBHQ2hpbGROb2RlVmlldywgU2NoZW1h RGlmZk9iamVjdENvbXBhcmUpOgogICAgICIiIgogICAgIGNsYXNzIEZ0c0NvbmZpZ3VyYXRpb25W aWV3KFBHQ2hpbGROb2RlVmlldykKIApAQCAtMTY3LDYgKzE2OSw5IEBAIGNsYXNzIEZ0c0NvbmZp Z3VyYXRpb25WaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgKiBkZXBlbmRlbmNpZXMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIGdldCB0 aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZSBmb3Igbm9kZS4KIAorICAg ICogY29tcGFyZSgqKmt3YXJncyk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjb21wYXJl IHRoZSBmdHMgY29uZmlndXJhdGlvbiBub2RlcyBmcm9tIHR3bworICAgICAgICBkaWZmZXJlbnQg c2NoZW1hcy4KICAgICAiIiIKIAogICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUK QEAgLTIwMiw2ICsyMDcsNyBAQCBjbGFzcyBGdHNDb25maWd1cmF0aW9uVmlldyhQR0NoaWxkTm9k ZVZpZXcpOgogICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdjb3B5Q29uZmlnJ31dLAog ICAgICAgICAndG9rZW5zJzogW3snZ2V0JzogJ3Rva2Vucyd9LCB7J2dldCc6ICd0b2tlbnMnfV0s CiAgICAgICAgICdkaWN0aW9uYXJpZXMnOiBbe30sIHsnZ2V0JzogJ2RpY3Rpb25hcmllcyd9XSwK KyAgICAgICAgJ2NvbXBhcmUnOiBbeydnZXQnOiAnY29tcGFyZSd9LCB7J2dldCc6ICdjb21wYXJl J31dCiAgICAgfSkKIAogICAgIGRlZiBfaW5pdF8oc2VsZiwgKiprd2FyZ3MpOgpAQCAtMzQzLDcg KzM0OSwyMiBAQCBjbGFzcyBGdHNDb25maWd1cmF0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcpOgog ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCiAgICAgICAgICAgICBjZmdpZDogZnRzIENvbmZp Z3VyYXRpb24gaWQKICAgICAgICAgIiIiCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5fZmV0 Y2hfcHJvcGVydGllcyhzY2lkLCBjZmdpZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQog CisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCBwcm9wZXJ0eSBvZiBz cGVjaWZpZWQgb2JqZWN0LgorICAgICAgICA6cGFyYW0gc2NpZDoKKyAgICAgICAgOnBhcmFtIGNm Z2lkOgorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAogICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgc2NpZD1zY2lkLApAQCAtMzUyLDEwICszNzMs MTAgQEAgY2xhc3MgRnRzQ29uZmlndXJhdGlvblZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKIAogICAgICAgICBp ZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCiAKICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgot ICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdvbmUo CiAgICAgICAgICAgICAgICAgXygKICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBmaW5k IHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlIGluIHRoZSAiCiAgICAgICAgICAgICAgICAgICAg ICJkYXRhYmFzZSBub2RlLiIpCkBAIC0zNzAsMTQgKzM5MSwxMSBAQCBjbGFzcyBGdHNDb25maWd1 cmF0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKIAogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorICAgICAg ICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkK IAogICAgICAgICByZXNbJ3Jvd3MnXVswXVsndG9rZW5zJ10gPSByc2V0Wydyb3dzJ10KIAotICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93 cyddWzBdLAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCisgICAgICAgIHJldHVy biBUcnVlLCByZXNbJ3Jvd3MnXVswXQogCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRl ZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CkBAIC05MjcsNSArOTQ1LDMwIEBA IGNsYXNzIEZ0c0NvbmZpZ3VyYXRpb25WaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAg ICBzdGF0dXM9MjAwCiAgICAgICAgICkKIAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZmV0Y2hfb2JqZWN0c190b19jb21wYXJlKHNlbGYsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBhbGwg dGhlIGZ0cyBjb25maWd1cmF0aW9ucyBmb3IKKyAgICAgICAgc3BlY2lmaWVkIHNjaGVtYSBpZC4K KworICAgICAgICA6cGFyYW0gc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgOnBhcmFtIGRpZDogRGF0 YWJhc2UgSWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICA6cmV0dXJu OgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gZGljdCgpCisgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHNjaWQ9c2NpZCkKKyAgICAg ICAgc3RhdHVzLCBmdHNfY2ZnID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIGZ0c19jZmdbJ3Jvd3MnXToK KyAgICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwg cm93WydvaWQnXSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXNb cm93WyduYW1lJ11dID0gZGF0YQorCisgICAgICAgIHJldHVybiByZXMKKwogCiBGdHNDb25maWd1 cmF0aW9uVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2RpY3Rpb25hcmllcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9uYXJpZXMvX19pbml0 X18ucHkKaW5kZXggZjY5ZjNhZjdmLi4zNTg4ODJjZGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0 aW9uYXJpZXMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2RpY3Rpb25hcmllcy9fX2luaXRfXy5w eQpAQCAtMjQsNiArMjQsOCBAQCBmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IElTX1BZMgogZnJv bSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgaW50ZXJuYWxf c2VydmVyX2Vycm9yLCBcCiAgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBnb25l CiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIHBnYWRt aW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lz dHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQgU2NoZW1h RGlmZk9iamVjdENvbXBhcmUKIAogIyBJZiB3ZSBhcmUgaW4gUHl0aG9uMwogaWYgbm90IElTX1BZ MjoKQEAgLTkxLDcgKzkzLDcgQEAgY2xhc3MgRnRzRGljdGlvbmFyeU1vZHVsZShTY2hlbWFDaGls ZE1vZHVsZSk6CiBibHVlcHJpbnQgPSBGdHNEaWN0aW9uYXJ5TW9kdWxlKF9fbmFtZV9fKQogCiAK LWNsYXNzIEZ0c0RpY3Rpb25hcnlWaWV3KFBHQ2hpbGROb2RlVmlldyk6CitjbGFzcyBGdHNEaWN0 aW9uYXJ5VmlldyhQR0NoaWxkTm9kZVZpZXcsIFNjaGVtYURpZmZPYmplY3RDb21wYXJlKToKICAg ICAiIiIKICAgICBjbGFzcyBGdHNEaWN0aW9uYXJ5VmlldyhQR0NoaWxkTm9kZVZpZXcpCiAKQEAg LTE1OSw2ICsxNjEsOSBAQCBjbGFzcyBGdHNEaWN0aW9uYXJ5VmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICogZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRjaWQpOgog ICAgICAgLSBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWph eCByZXNwb25zZSBmb3Igbm9kZS4KIAorICAgICogY29tcGFyZSgqKmt3YXJncyk6CisgICAgICAt IFRoaXMgZnVuY3Rpb24gd2lsbCBjb21wYXJlIHRoZSBmdHMgZGljdGlvbmFyaWVzIG5vZGVzIGZy b20gdHdvCisgICAgICAgIGRpZmZlcmVudCBzY2hlbWFzLgogICAgICIiIgogCiAgICAgbm9kZV90 eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQpAQCAtMTg5LDcgKzE5NCw3IEBAIGNsYXNzIEZ0c0Rp Y3Rpb25hcnlWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICdkZXBlbmRlbmN5JzogW3sn Z2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKICAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdk ZXBlbmRlbnRzJ31dLAogICAgICAgICAnZmV0Y2hfdGVtcGxhdGVzJzogW3snZ2V0JzogJ2ZldGNo X3RlbXBsYXRlcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0JzogJ2ZldGNo X3RlbXBsYXRlcyd9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdmZXRj aF90ZW1wbGF0ZXMnfV0KICAgICB9KQogCiAgICAgZGVmIF9pbml0XyhzZWxmLCAqKmt3YXJncyk6 CkBAIC0zNTMsNyArMzU4LDIzIEBAIGNsYXNzIEZ0c0RpY3Rpb25hcnlWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKICAgICAgICAgICAgIGRjaWQ6IGZ0 cyBkaWN0aW9uYXJ5IGlkCiAgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu X2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwgZGNpZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAg ICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQorCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIHNjaWQsIGRjaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZldGNoIHRoZSBwcm9wZXJ0 aWVzIG9mIHNwZWNpZmllZCBvYmplY3QuCiAKKyAgICAgICAgOnBhcmFtIHNjaWQ6CisgICAgICAg IDpwYXJhbSBkY2lkOgorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgc2NpZD1zY2lkLApAQCAtMzYy LDEwICszODMsMTAgQEAgY2xhc3MgRnRzRGljdGlvbmFyeVZpZXcoUEdDaGlsZE5vZGVWaWV3KToK ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKIAogICAg ICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9 PSAwOgotICAgICAgICAgICAgcmV0dXJuIGdvbmUoXygKKyAgICAgICAgICAgIHJldHVybiBGYWxz ZSwgZ29uZShfKAogICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZmluZCB0aGUgRlRTIERpY3Rp b25hcnkgbm9kZSBpbiB0aGUgZGF0YWJhc2Ugbm9kZS4iCiAgICAgICAgICAgICApKQogCkBAIC0z ODIsMTAgKzQwMyw3IEBAIGNsYXNzIEZ0c0RpY3Rpb25hcnlWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CiAgICAgICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ29wdGlvbnMnXQogICAgICAgICAgICAg KQogCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9 cmVzWydyb3dzJ11bMF0sCi0gICAgICAgICAgICBzdGF0dXM9MjAwCi0gICAgICAgICkKKyAgICAg ICAgcmV0dXJuIFRydWUsIHJlc1sncm93cyddWzBdCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9u CiAgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKQEAgLTg1NCw1ICs4 NzIsMzAgQEAgY2xhc3MgRnRzRGljdGlvbmFyeVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBmZXRjaF9vYmplY3RzX3RvX2NvbXBhcmUoc2VsZiwgc2lkLCBkaWQsIHNjaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHRoZSBsaXN0IG9m IGFsbCB0aGUgZnRzIGRpY3Rpb25hcmllcyBmb3IKKyAgICAgICAgc3BlY2lmaWVkIHNjaGVtYSBp ZC4KKworICAgICAgICA6cGFyYW0gc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgOnBhcmFtIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICA6cmV0 dXJuOgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gZGljdCgpCisgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHNjaWQ9c2NpZCkKKyAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwgcm93 WydvaWQnXSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXNbcm93 WyduYW1lJ11dID0gZGF0YQorCisgICAgICAgIHJldHVybiByZXMKKwogCiBGdHNEaWN0aW9uYXJ5 Vmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3Bh cnNlcnMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2Vycy9fX2luaXRfXy5weQppbmRleCAzODRh ZTYyZTguLjA5YTQ0NTcyMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3BhcnNlcnMvX19pbml0X18ucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX3BhcnNlcnMvX19pbml0X18ucHkKQEAgLTI0LDYgKzI0LDggQEAgZnJvbSBw Z2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9y dCBtYWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2Vf cmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLm5vZGVf cmVnaXN0cnkgaW1wb3J0IFNjaGVtYURpZmZSZWdpc3RyeQorZnJvbSBwZ2FkbWluLnRvb2xzLnNj aGVtYV9kaWZmLmNvbXBhcmUgaW1wb3J0IFNjaGVtYURpZmZPYmplY3RDb21wYXJlCiAKICMgSWYg d2UgYXJlIGluIFB5dGhvbjMKIGlmIG5vdCBJU19QWTI6CkBAIC04NCw3ICs4Niw3IEBAIGNsYXNz IEZ0c1BhcnNlck1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CiBibHVlcHJpbnQgPSBGdHNQYXJz ZXJNb2R1bGUoX19uYW1lX18pCiAKIAotY2xhc3MgRnRzUGFyc2VyVmlldyhQR0NoaWxkTm9kZVZp ZXcpOgorY2xhc3MgRnRzUGFyc2VyVmlldyhQR0NoaWxkTm9kZVZpZXcsIFNjaGVtYURpZmZPYmpl Y3RDb21wYXJlKToKICAgICAiIiIKICAgICBjbGFzcyBGdHNQYXJzZXJWaWV3KFBHQ2hpbGROb2Rl VmlldykKIApAQCAtMTYxLDYgKzE2Myw5IEBAIGNsYXNzIEZ0c1BhcnNlclZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQg cmV0dXJuIGFqYXggcmVzcG9uc2UgZm9yCiAgICAgICAgIEZUUyBQYXJzZXIgbm9kZS4KIAorICAg ICogY29tcGFyZSgqKmt3YXJncyk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjb21wYXJl IHRoZSBmdHMgcGFyc2VyIG5vZGVzIGZyb20gdHdvCisgICAgICAgIGRpZmZlcmVudCBzY2hlbWFz LgogICAgICIiIgogCiAgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQpAQCAtMTk4 LDcgKzIwMyw3IEBAIGNsYXNzIEZ0c1BhcnNlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgJ2xleHR5cGVfZnVuY3Rpb25zJzogW3snZ2V0JzogJ2xleHR5cGVfZnVuY3Rpb25zJ30sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdsZXh0eXBlX2Z1bmN0aW9ucyd9 XSwKICAgICAgICAgJ2hlYWRsaW5lX2Z1bmN0aW9ucyc6IFt7J2dldCc6ICdoZWFkbGluZV9mdW5j dGlvbnMnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdoZWFkbGlu ZV9mdW5jdGlvbnMnfV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydnZXQnOiAn aGVhZGxpbmVfZnVuY3Rpb25zJ31dCiAgICAgfSkKIAogICAgIGRlZiBfaW5pdF8oc2VsZiwgKipr d2FyZ3MpOgpAQCAtMzAzLDYgKzMwOCwzMiBAQCBjbGFzcyBGdHNQYXJzZXJWaWV3KFBHQ2hpbGRO b2RlVmlldyk6CiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIHByb3BlcnRpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcGlkKToKKyAgICAgICAgIiIiCisKKyAgICAgICAg OnBhcmFtIGdpZDoKKyAgICAgICAgOnBhcmFtIHNpZDoKKyAgICAgICAgOnBhcmFtIGRpZDoKKyAg ICAgICAgOnBhcmFtIHNjaWQ6CisgICAgICAgIDpwYXJhbSBwaWQ6CisgICAgICAgIDpyZXR1cm46 CisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuX2ZldGNoX3Byb3BlcnRp ZXMoc2NpZCwgcGlkKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IHJlcworCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9u c2U9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBkZWYgX2Zl dGNoX3Byb3BlcnRpZXMoc2VsZiwgc2NpZCwgcGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0aGUgcHJvcGVydGllcyBvZiBzcGVjaWZpZWQg b2JqZWN0LgorCisgICAgICAgIDpwYXJhbSBzY2lkOgorICAgICAgICA6cGFyYW0gcGlkOgorICAg ICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRl KAogICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMu c3FsJ10pLAogICAgICAgICAgICAgc2NpZD1zY2lkLApAQCAtMzExLDE2ICszNDIsMTMgQEAgY2xh c3MgRnRzUGFyc2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQogCiAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0g ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKIAogICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAgICAgICAgICByZXR1 cm4gZ29uZSgKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZ29uZSgKICAgICAgICAgICAgICAg ICBfKCJDb3VsZCBub3QgZmluZCB0aGUgRlRTIFBhcnNlciBub2RlIGluIHRoZSBkYXRhYmFzZSBu b2RlLiIpKQogCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICAgICAgcmVz cG9uc2U9cmVzWydyb3dzJ11bMF0sCi0gICAgICAgICAgICBzdGF0dXM9MjAwCi0gICAgICAgICkK KyAgICAgICAgcmV0dXJuIFRydWUsIHJlc1sncm93cyddWzBdCiAKICAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKQEAgLTg2 Miw1ICs4OTAsMzAgQEAgY2xhc3MgRnRzUGFyc2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAg ICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFyZShzZWxmLCBzaWQsIGRpZCwgc2NpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qg b2YgYWxsIHRoZSBmdHMgcGFyc2VycyBmb3IKKyAgICAgICAgc3BlY2lmaWVkIHNjaGVtYSBpZC4K KworICAgICAgICA6cGFyYW0gc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgOnBhcmFtIGRpZDogRGF0 YWJhc2UgSWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICA6cmV0dXJu OgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gZGljdCgpCisgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHNjaWQ9c2NpZCkKKyAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAg ICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwgcm93Wydv aWQnXSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXNbcm93Wydu YW1lJ11dID0gZGF0YQorCisgICAgICAgIHJldHVybiByZXMKKwogCiBGdHNQYXJzZXJWaWV3LnJl Z2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVz L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRlcy9fX2luaXRfXy5weQppbmRleCA4ZTk1MmQ5 MTIuLjZiNzYyN2RiMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRlcy9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfdGVtcGxhdGVzL19faW5pdF9fLnB5CkBAIC0yNCw2ICsyNCw4IEBAIGZyb20g cGdhZG1pbi51dGlscyBpbXBvcnQgSVNfUFkyCiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBv cnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtl X3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUKIGZyb20gcGdhZG1pbi51dGlscy5kcml2 ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5ub2Rl X3JlZ2lzdHJ5IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0cnkKK2Zyb20gcGdhZG1pbi50b29scy5z Y2hlbWFfZGlmZi5jb21wYXJlIGltcG9ydCBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZQogCiAjIElm IHdlIGFyZSBpbiBQeXRob24zCiBpZiBub3QgSVNfUFkyOgpAQCAtOTAsNyArOTIsNyBAQCBjbGFz cyBGdHNUZW1wbGF0ZU1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CiBibHVlcHJpbnQgPSBGdHNU ZW1wbGF0ZU1vZHVsZShfX25hbWVfXykKIAogCi1jbGFzcyBGdHNUZW1wbGF0ZVZpZXcoUEdDaGls ZE5vZGVWaWV3KToKK2NsYXNzIEZ0c1RlbXBsYXRlVmlldyhQR0NoaWxkTm9kZVZpZXcsIFNjaGVt YURpZmZPYmplY3RDb21wYXJlKToKICAgICAiIiIKICAgICBjbGFzcyBGdHNUZW1wbGF0ZVZpZXco UEdDaGlsZE5vZGVWaWV3KQogCkBAIC0xNTQsNiArMTU2LDkgQEAgY2xhc3MgRnRzVGVtcGxhdGVW aWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBl bmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlIGZvciB0aGUKICAgICAgIEZUUyBUZW1w bGF0ZSBub2RlLgogCisgICAgKiBjb21wYXJlKCoqa3dhcmdzKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGNvbXBhcmUgdGhlIGZ0cyB0ZW1wbGF0ZSBub2RlcyBmcm9tIHR3bworICAgICAg ICBkaWZmZXJlbnQgc2NoZW1hcy4KICAgICAiIiIKIAogICAgIG5vZGVfdHlwZSA9IGJsdWVwcmlu dC5ub2RlX3R5cGUKQEAgLTE4NCw3ICsxODksNyBAQCBjbGFzcyBGdHNUZW1wbGF0ZVZpZXcoUEdD aGlsZE5vZGVWaWV3KToKICAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydnZXQnOiAnZGVwZW5kZW5j aWVzJ31dLAogICAgICAgICAnZGVwZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCiAg ICAgICAgICdnZXRfbGV4aXplJzogW3snZ2V0JzogJ2dldF9sZXhpemUnfSwgeydnZXQnOiAnZ2V0 X2xleGl6ZSd9XSwKLSAgICAgICAgJ2dldF9pbml0JzogW3snZ2V0JzogJ2dldF9pbml0J30sIHsn Z2V0JzogJ2dldF9pbml0J31dLAorICAgICAgICAnZ2V0X2luaXQnOiBbeydnZXQnOiAnZ2V0X2lu aXQnfSwgeydnZXQnOiAnZ2V0X2luaXQnfV0KICAgICB9KQogCiAgICAgZGVmIF9pbml0XyhzZWxm LCAqKmt3YXJncyk6CkBAIC0yODEsMjUgKzI4Niw0NyBAQCBjbGFzcyBGdHNUZW1wbGF0ZVZpZXco UEdDaGlsZE5vZGVWaWV3KToKIAogICAgIEBjaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgcHJv cGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKwor ICAgICAgICA6cGFyYW0gZ2lkOgorICAgICAgICA6cGFyYW0gc2lkOgorICAgICAgICA6cGFyYW0g ZGlkOgorICAgICAgICA6cGFyYW0gc2NpZDoKKyAgICAgICAgOnBhcmFtIHRpZDoKKyAgICAgICAg OnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5fZmV0Y2hf cHJvcGVydGllcyhzY2lkLCB0aWQpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gcmVzCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICByZXNwb25zZT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAg IGRlZiBfZmV0Y2hfcHJvcGVydGllcyhzZWxmLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZldGNoIHRoZSBwcm9wZXJ0aWVzIG9mIHNw ZWNpZmllZCBvYmplY3QuCisKKyAgICAgICAgOnBhcmFtIHNjaWQ6CisgICAgICAgIDpwYXJhbSBw aWQ6CisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIiIgogICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoCiAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksCiAgICAgICAgICAgICBzY2lkPXNjaWQsCiAgICAgICAgICAgICB0aWQ9 dGlkCiAgICAgICAgICkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKLQogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gRmFs c2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKICAgICAgICAgaWYgbGVu KHJlc1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAg ICByZXR1cm4gRmFsc2UsIGdvbmUoCiAgICAgICAgICAgICAgICAgZ2V0dGV4dCgiQ291bGQgbm90 IGZpbmQgdGhlIHJlcXVlc3RlZCBGVFMgdGVtcGxhdGUuIikKICAgICAgICAgICAgICkKIAotICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93 cyddWzBdLAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCisgICAgICAgIHJldHVy biBUcnVlLCByZXNbJ3Jvd3MnXVswXQogCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRl ZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CkBAIC03MzQsNSArNzYxLDMwIEBA IGNsYXNzIEZ0c1RlbXBsYXRlVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc3Rh dHVzPTIwMAogICAgICAgICApCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGZl dGNoX29iamVjdHNfdG9fY29tcGFyZShzZWxmLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgYWxsIHRoZSBm dHMgdGVtcGxhdGVzIGZvcgorICAgICAgICBzcGVjaWZpZWQgc2NoZW1hIGlkLgorCisgICAgICAg IDpwYXJhbSBzaWQ6IFNlcnZlciBJZAorICAgICAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICA6cGFyYW0gc2NpZDogU2NoZW1hIElkCisgICAgICAgIDpyZXR1cm46CisgICAgICAg ICIiIgorICAgICAgICByZXMgPSBkaWN0KCkKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgc3Rh dHVzLCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhzY2lkLCByb3dbJ29pZCddKQorICAg ICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJlc1tyb3dbJ25hbWUnXV0gPSBk YXRhCisKKyAgICAgICAgcmV0dXJuIHJlcworCiAKIEZ0c1RlbXBsYXRlVmlldy5yZWdpc3Rlcl9u b2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL19faW5pdF9fLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnVuY3Rpb25zL19faW5pdF9fLnB5CmluZGV4IGE2NmUyMjE1ZC4uZWYyZGRhNGYxIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL19f aW5pdF9fLnB5CkBAIC0yMSw3ICsyMSw3IEBAIGZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1w bGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlmeSwgXAogICAgIGN1cnJlbnRfYXBw CiBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGlscyBpbXBvcnQgXAot ICAgIFNjaGVtYUNoaWxkTW9kdWxlLCBEYXRhVHlwZVJlYWRlcgorICAgIFNjaGVtYUNoaWxkTW9k dWxlLCBEYXRhVHlwZVJlYWRlciwgZ2V0X3NjaGVtYQogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy51dGlscyBpbXBvcnQgXAogICAgIHBhcnNlX3Nl Y19sYWJlbHNfZnJvbV9kYiwgcGFyc2VfdmFyaWFibGVzX2Zyb21fZGIKIGZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGlscyBpbXBvcnQgcGFyc2VfcHJpdl9mcm9t X2RiLCBcCkBAIC0zMCw4ICszMCwxMCBAQCBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBv cnQgUEdDaGlsZE5vZGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNl IGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0 IGdldF9kcml2ZXIKLQogZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9t IHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlm ZlJlZ2lzdHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubW9kZWwgaW1wb3J0IFNj aGVtYURpZmZNb2RlbAorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLmNvbXBhcmUgaW1w b3J0IFNjaGVtYURpZmZPYmplY3RDb21wYXJlCiAKIAogY2xhc3MgRnVuY3Rpb25Nb2R1bGUoU2No ZW1hQ2hpbGRNb2R1bGUpOgpAQCAtMTE1LDcgKzExNyw3IEBAIGNsYXNzIEZ1bmN0aW9uTW9kdWxl KFNjaGVtYUNoaWxkTW9kdWxlKToKIGJsdWVwcmludCA9IEZ1bmN0aW9uTW9kdWxlKF9fbmFtZV9f KQogCiAKLWNsYXNzIEZ1bmN0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy KToKK2NsYXNzIEZ1bmN0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBT Y2hlbWFEaWZmT2JqZWN0Q29tcGFyZSk6CiAgICAgIiIiCiAgICAgY2xhc3MgRnVuY3Rpb25WaWV3 KFBHQ2hpbGROb2RlVmlldykKIApAQCAtMTc3LDYgKzE3OSwxMCBAQCBjbGFzcyBGdW5jdGlvblZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAKICAgICAqIGV4ZWNfc3FsKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZuaWQpOgogICAgICAgLSBSZXR1cm5zIHNxbCBmb3IgU2NyaXB0 CisKKyAgICAqIGNvbXBhcmUoKiprd2FyZ3MpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwg Y29tcGFyZSB0aGUgZnVuY3Rpb24gbm9kZXMgZnJvbSB0d28KKyAgICAgICAgZGlmZmVyZW50IHNj aGVtYXMuCiAgICAgIiIiCiAKICAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCkBA IC0yMTMsNiArMjE5LDkgQEAgY2xhc3MgRnVuY3Rpb25WaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0 YVR5cGVSZWFkZXIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0Jzog J2dldF9zdXBwb3J0X2Z1bmN0aW9ucyd9XQogICAgIH0pCiAKKyAgICBrZXlzX3RvX2lnbm9yZSA9 IFsnb2lkJywgJ3Byb293bmVyJywgJ3R5cG5zcCcsICd4bWluJywgJ3Byb2tpbmQnLAorICAgICAg ICAgICAgICAgICAgICAgICdwcm9pc2FnZycsICdwcm9uYW1lc3BhY2UnLCAncHJvYXJnZGVmYXVs dHMnXQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJlcXVpcmVkX2FyZ3Moc2VsZik6CiAgICAg ICAgICIiIgpAQCAtNzg5LDcgKzc5OCw3IEBAIGNsYXNzIEZ1bmN0aW9uVmlldyhQR0NoaWxkTm9k ZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgKQogCiAgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgotICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm5pZD1Ob25l KToKKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZuaWQ9Tm9uZSwg b25seV9zcWw9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgRHJvcCB0aGUgRnVuY3Rpb24u CiAKQEAgLTg0MCw2ICs4NDksOCBAQCBjbGFzcyBGdW5jdGlvblZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZ1bmNfYXJncz1yZXNbJ3Jvd3MnXVswXVsnZnVuY19hcmdzJ10sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5zcG5hbWU9cmVzWydyb3dzJ11bMF1bJ25zcG5hbWUnXSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlKQor ICAgICAgICAgICAgICAgIGlmIG9ubHlfc3FsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g U1FMCiAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoU1FMKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtOTE0LDcg KzkyNSw4IEBAIGNsYXNzIEZ1bmN0aW9uVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVh ZGVyKToKICAgICAgICAgICAgICkKIAogICAgIEBjaGVja19wcmVjb25kaXRpb24KLSAgICBkZWYg c3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZuaWQ9Tm9uZSk6CisgICAgZGVmIHNxbChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmbmlkPU5vbmUsIGRpZmZfc2NoZW1hPU5vbmUsCisg ICAgICAgICAgICBqc29uX3Jlc3A9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm5z IHRoZSBTUUwgZm9yIHRoZSBGdW5jdGlvbiBvYmplY3QuCiAKQEAgLTk4OCw2ICsxMDAwLDggQEAg Y2xhc3MgRnVuY3Rpb25WaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKIAorICAgICAgICAgICAgaWYgZGlmZl9zY2hlbWE6 CisgICAgICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ25zcG5hbWUnXSA9IGRpZmZfc2NoZW1h CiAgICAgICAgICAgICBuYW1lX3dpdGhfZGVmYXVsdF9hcmdzID0gc2VsZi5xdElkZW50KAogICAg ICAgICAgICAgICAgIHNlbGYuY29ubiwKICAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVswXVsn bnNwbmFtZSddLApAQCAtMTAzOSw2ICsxMDUzLDEwIEBAIGNsYXNzIEZ1bmN0aW9uVmlldyhQR0No aWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCiAKKyAgICAgICAgICAgIGlmIGRpZmZfc2NoZW1hOgorICAgICAgICAgICAgICAgIHJlc1sn cm93cyddWzBdWyduc3BuYW1lJ10gPSBkaWZmX3NjaGVtYQorICAgICAgICAgICAgICAgIHJlc3Bf ZGF0YVsncHJvbmFtZXNwYWNlJ10gPSBkaWZmX3NjaGVtYQorCiAgICAgICAgICAgICBuYW1lX3dp dGhfZGVmYXVsdF9hcmdzID0gc2VsZi5xdElkZW50KAogICAgICAgICAgICAgICAgIHNlbGYuY29u biwKICAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVswXVsnbnNwbmFtZSddLApAQCAtMTA3MCw2 ICsxMDg4LDkgQEAgY2xhc3MgRnVuY3Rpb25WaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIpOgogICAgICAgICAgICAgICAgcmVzcF9kYXRhWydwcm9uYW1lJ10pLAogICAgICAgICAg ICByZXNwX2RhdGFbJ3Byb2FyZ3R5cGVuYW1lcyddLmxzdHJpcCgnKCcpLnJzdHJpcCgnKScpKQog CisgICAgICAgIGlmIG5vdCBqc29uX3Jlc3A6CisgICAgICAgICAgICByZXR1cm4gcmUuc3ViKCdc bnsyLH0nLCAnXG5cbicsIGZ1bmNfZGVmKQorCiAgICAgICAgIFNRTCA9IHNxbF9oZWFkZXIgKyBm dW5jX2RlZgogICAgICAgICBTUUwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgU1FMKQogCkBA IC0xNTk2LDcgKzE2MTcsNjYgQEAgY2xhc3MgRnVuY3Rpb25WaWV3KFBHQ2hpbGROb2RlVmlldywg RGF0YVR5cGVSZWFkZXIpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKKyAg ICBkZWYgZ2V0X3NxbF9mcm9tX2RpZmYoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgb2lkLCBk YXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc2NoZW1hPU5vbmUsIGRy b3Bfc3FsPUZhbHNlKToKKyAgICAgICAgc3FsID0gJycKKyAgICAgICAgaWYgZGF0YToKKyAgICAg ICAgICAgIGlmIGRpZmZfc2NoZW1hOgorICAgICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0g ZGlmZl9zY2hlbWEKKyAgICAgICAgICAgIHN0YXR1cywgc3FsID0gc2VsZi5fZ2V0X3NxbChnaWQs IHNpZCwgZGlkLCBzY2lkLCBkYXRhLCBvaWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBp ZiBkcm9wX3NxbDoKKyAgICAgICAgICAgICAgICBzcWwgPSBzZWxmLmRlbGV0ZShnaWQ9Z2lkLCBz aWQ9c2lkLCBkaWQ9ZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9 c2NpZCwgZm5pZD1vaWQsIG9ubHlfc3FsPVRydWUpCisgICAgICAgICAgICBlbGlmIGRpZmZfc2No ZW1hOgorICAgICAgICAgICAgICAgIHNxbCA9IHNlbGYuc3FsKGdpZD1naWQsIHNpZD1zaWQsIGRp ZD1kaWQsIHNjaWQ9c2NpZCwgZm5pZD1vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGlmZl9zY2hlbWE9ZGlmZl9zY2hlbWEsIGpzb25fcmVzcD1GYWxzZSkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgc3FsID0gc2VsZi5zcWwoZ2lkPWdpZCwgc2lkPXNpZCwg ZGlkPWRpZCwgc2NpZD1zY2lkLCBmbmlkPW9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBqc29uX3Jlc3A9RmFsc2UpCisgICAgICAgIHJldHVybiBzcWwKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZmV0Y2hfb2JqZWN0c190b19jb21wYXJlKHNlbGYsIHNpZCwg ZGlkLCBzY2lkLCBvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgYWxsIHRoZSBmdW5jdGlvbnMgZm9yCisgICAgICAgIHNw ZWNpZmllZCBzY2hlbWEgaWQuCisKKyAgICAgICAgOnBhcmFtIHNpZDogU2VydmVyIElkCisgICAg ICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIDpwYXJhbSBzY2lkOiBTY2hlbWEg SWQKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IGRpY3QoKQor ICAgICAgICBzZXJ2ZXJfdHlwZSA9IHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZQorICAgICAgICBz ZXJ2ZXJfdmVyc2lvbiA9IHNlbGYubWFuYWdlci5zdmVyc2lvbgorCisgICAgICAgIGlmIHNlcnZl cl90eXBlID09ICdwZycgYW5kIHNlbGYuYmx1ZXByaW50Lm1pbl92ZXIgaXMgbm90IE5vbmUgYW5k IFwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfdmVyc2lvbiA8IHNlbGYuYmx1ZXByaW50Lm1pbl92 ZXI6CisgICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgIGlmIHNlcnZlcl90eXBlID09ICdw cGFzJyBhbmQgc2VsZi5ibHVlcHJpbnQubWluX3BwYXN2ZXIgaXMgbm90IE5vbmUgXAorICAgICAg ICAgICAgICAgIGFuZCBzZXJ2ZXJfdmVyc2lvbiA8IHNlbGYuYmx1ZXByaW50Lm1pbl9wcGFzdmVy OgorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIGlmIG5vdCBvaWQ6CisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuc3FsX3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2RlLnNx bCddKSwgc2NpZD1zY2lkKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICBkYXRhID0g c2VsZi5fZmV0Y2hfcHJvcGVydGllcygwLCBzaWQsIGRpZCwgc2NpZCwgcm93WydvaWQnXSkKKyAg ICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGRpY3QpOgorICAgICAgICAgICAgICAg ICAgICByZXNbcm93WyduYW1lJ11dID0gZGF0YQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg ZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoMCwgc2lkLCBkaWQsIHNjaWQsIG9pZCkKKyAg ICAgICAgICAgIHJlcyA9IGRhdGEKKworICAgICAgICByZXR1cm4gcmVzCisKIAorU2NoZW1hRGlm ZlJlZ2lzdHJ5KCdmdW5jdGlvbicsIEZ1bmN0aW9uVmlldykKIEZ1bmN0aW9uVmlldy5yZWdpc3Rl cl9ub2RlX3ZpZXcoYmx1ZXByaW50KQogCiAKQEAgLTE2OTcsNiArMTc3Nyw3IEBAIGNsYXNzIFBy b2NlZHVyZVZpZXcoRnVuY3Rpb25WaWV3KToKICAgICAgICAgICAgICAgICAncHJvc3JjJ10KIAog CitTY2hlbWFEaWZmUmVnaXN0cnkoJ3Byb2NlZHVyZScsIFByb2NlZHVyZVZpZXcpCiBQcm9jZWR1 cmVWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhwcm9jZWR1cmVfYmx1ZXByaW50KQogCiAKQEAgLTE3 OTUsNCArMTg3Niw1IEBAIGNsYXNzIFRyaWdnZXJGdW5jdGlvblZpZXcoRnVuY3Rpb25WaWV3KToK ICAgICAgICAgICAgICAgICAncHJvc3JjJ10KIAogCitTY2hlbWFEaWZmUmVnaXN0cnkoJ3RyaWdn ZXJfZnVuY3Rpb24nLCBUcmlnZ2VyRnVuY3Rpb25WaWV3KQogVHJpZ2dlckZ1bmN0aW9uVmlldy5y ZWdpc3Rlcl9ub2RlX3ZpZXcodHJpZ2dlcl9mdW5jdGlvbl9ibHVlcHJpbnQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9wYWNrYWdlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3BhY2thZ2VzL19faW5pdF9fLnB5CmluZGV4 IDcwZjk5ZTkxZS4uNGMwYTVhMzgyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9fX2luaXRfXy5w eQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9wYWNrYWdlcy9fX2luaXRfXy5weQpAQCAtMjcsNiArMjcsOCBAQCBmcm9tIHBn YWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCiAgICAgbWFrZV9y ZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBw cmVjb25kaXRpb25fcmVxdWlyZWQsIGdvbmUKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1w b3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5ub2RlX3JlZ2lz dHJ5IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0cnkKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFf ZGlmZi5jb21wYXJlIGltcG9ydCBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZQogCiAjIElmIHdlIGFy ZSBpbiBQeXRob24zCiBpZiBub3QgSVNfUFkyOgpAQCAtODMsNyArODUsNyBAQCBjbGFzcyBQYWNr YWdlTW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxlKToKIGJsdWVwcmludCA9IFBhY2thZ2VNb2R1bGUo X19uYW1lX18pCiAKIAotY2xhc3MgUGFja2FnZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKK2NsYXNz IFBhY2thZ2VWaWV3KFBHQ2hpbGROb2RlVmlldywgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUpOgog ICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKIAogICAgIHBhcmVudF9pZHMgPSBb CkBAIC0xMTEsNiArMTEzLDggQEAgY2xhc3MgUGFja2FnZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToK ICAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dCiAgICAgfSkKIAor ICAgIGtleXNfdG9faWdub3JlID0gWydvaWQnLCAnc2NoZW1hJywgJ3htaW4nXQorCiAgICAgZGVm IGNoZWNrX3ByZWNvbmRpdGlvbihhY3Rpb249Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tz CkBAIC0yOTcsMTYgKzMwMSwzMiBAQCBjbGFzcyBQYWNrYWdlVmlldyhQR0NoaWxkTm9kZVZpZXcp OgogCiAgICAgICAgIFJldHVybnM6CiAKKyAgICAgICAgIiIiCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhzY2lkLCBwa2dpZCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgKQorCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIHNjaWQsIHBrZ2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0 aGUgcHJvcGVydGllcyBvZiBzcGVjaWZpZWQgb2JqZWN0LgorICAgICAgICA6cGFyYW0gc2NpZDoK KyAgICAgICAgOnBhcmFtIHBrZ2lkOgorICAgICAgICA6cmV0dXJuOgogICAgICAgICAiIiIKICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9 c2NpZCwgcGtnaWQ9cGtnaWQpCiAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCiAKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGlm IGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAg ICAgICAgcmV0dXJuIEZhbHNlLCBnb25lKAogICAgICAgICAgICAgICAgIGVycm9ybXNnPV8oIkNv dWxkIG5vdCBmaW5kIHRoZSBwYWNrYWdlIGluIHRoZSBkYXRhYmFzZS4iKQogICAgICAgICAgICAg KQogCkBAIC0zMjEsMTYgKzM0MSwxMyBAQCBjbGFzcyBQYWNrYWdlVmlldyhQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICBzdGF0dXMsIHJzZXQxID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwp CiAKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldDEpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0MSkKIAogICAgICAgICBmb3Igcm93IGlu IHJzZXQxWydyb3dzJ106CiAgICAgICAgICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2RiKHJv dykKICAgICAgICAgICAgIHJlc1sncm93cyddWzBdLnNldGRlZmF1bHQocm93WydkZWZ0eXBlJ10s IFtdKS5hcHBlbmQocHJpdikKIAotICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAg ICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAotICAgICAgICAgICAgc3RhdHVzPTIwMAot ICAgICAgICApCisgICAgICAgIHJldHVybiBUcnVlLCByZXNbJ3Jvd3MnXVswXQogCiAgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbihhY3Rpb249ImNyZWF0ZSIpCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkKToKQEAgLTM5Niw3ICs0MTMsNyBAQCBjbGFzcyBQYWNrYWdlVmll dyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICApCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9u KGFjdGlvbj0nZGVsZXRlJykKLSAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIHBrZ2lkPU5vbmUpOgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgcGtnaWQ9Tm9uZSwgb25seV9zcWw9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGRyb3AgdGhlIG9iamVjdAogCkBAIC00NTMsNiArNDcwLDkgQEAgY2xh c3MgUGFja2FnZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3MnXVswXSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlKQogCisgICAgICAgICAgICAgICAgaWYg b25seV9zcWw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTUUwKKwogICAgICAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKICAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKQEAgLTU1Miw3ICs1NzIsOCBAQCBjbGFzcyBQ YWNrYWdlVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAg ICAgICApCiAKLSAgICBkZWYgZ2V0U1FMKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGRhdGEsIHNjaWQs IHBrZ2lkPU5vbmUsIHNxbHRhYj1GYWxzZSk6CisgICAgZGVmIGdldFNRTChzZWxmLCBnaWQsIHNp ZCwgZGlkLCBkYXRhLCBzY2lkLCBwa2dpZD1Ob25lLCBzcWx0YWI9RmFsc2UsCisgICAgICAgICAg ICAgICBkaWZmX3NjaGVtYT1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhLgogCkBAIC02MjEsNiArNjQyLDkg QEAgY2xhc3MgUGFja2FnZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICBp ZiBhcmcgbm90IGluIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgIGRhdGFbYXJnXSA9IG9sZF9k YXRhW2FyZ10KIAorICAgICAgICAgICAgaWYgZGlmZl9zY2hlbWE6CisgICAgICAgICAgICAgICAg ZGF0YVsnc2NoZW1hJ10gPSBkaWZmX3NjaGVtYQorCiAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2Rh dGEsIGNvbm49c2VsZi5jb25uKQogICAgICAgICAgICAgcmV0dXJuIFNRTCwgZGF0YVsnbmFtZSdd IGlmICduYW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFbJ25hbWUnXQpAQCAtNjM1LDcgKzY1OSw4 IEBAIGNsYXNzIFBhY2thZ2VWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICByZXR1 cm4gU1FMLCBkYXRhWyduYW1lJ10KIAogICAgIEBjaGVja19wcmVjb25kaXRpb24oYWN0aW9uPSJz cWwiKQotICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcGtnaWQpOgorICAg IGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcGtnaWQsIGRpZmZfc2NoZW1hPU5v bmUsCisgICAgICAgICAgICBqc29uX3Jlc3A9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKIApAQCAtNjQ1LDYg KzY3MCw4IEBAIGNsYXNzIFBhY2thZ2VWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIElECiAgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKICAgICAgICAg ICAgIHBrZ2lkOiBQYWNrYWdlIElECisgICAgICAgICAgICBkaWZmX3NjaGVtYTogIFNjaGVtYSBk aWZmIHRhcmdldCBzY2hlbWEgbmFtZQorICAgICAgICAgICAganNvbl9yZXNwOiBqc29uIHJlc3Bv bnNlIG9yIHBsYWluIHRleHQgcmVzcG9uc2UKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKQEAgLTY3NiwxMyArNzAzLDE4IEBAIGNs YXNzIFBhY2thZ2VWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAgICAgcmVzWydy b3dzJ11bMF0uc2V0ZGVmYXVsdChyb3dbJ2RlZnR5cGUnXSwgW10pLmFwcGVuZChwcml2KQogCiAg ICAgICAgICAgICByZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgc3FsLCBuYW1l ID0gc2VsZi5nZXRTUUwoZ2lkLCBzaWQsIGRpZCwgcmVzdWx0LCBzY2lkLCBwa2dpZCwgVHJ1ZSkK KyAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lkLCBkaWQsIHJlc3Vs dCwgc2NpZCwgcGtnaWQsIFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaWZmX3NjaGVtYSkKICAgICAgICAgICAgICMgTW9zdCBwcm9iYWJseSB0aGlzIGlzIGR1ZSB0 byBlcnJvcgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2Rl KSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNxbAogCiAgICAgICAgICAgICBzcWwgPSBzcWwu c3RyaXAoJ1xuJykuc3RyaXAoJyAnKQogCisgICAgICAgICAgICAjIFJldHVybiBzcWwgZm9yIHNj aGVtYSBkaWZmCisgICAgICAgICAgICBpZiBub3QganNvbl9yZXNwOgorICAgICAgICAgICAgICAg IHJldHVybiBzcWwKKwogICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUiLS0gUGFja2FnZToge31c blxuLS0gIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgc2VsZi5xdElkZW50KHNlbGYuY29ubiwg c2VsZi5zY2hlbWEsIHJlc3VsdFsnbmFtZSddKQogICAgICAgICAgICAgKQpAQCAtNzU2LDUgKzc4 OCw1NCBAQCBjbGFzcyBQYWNrYWdlVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogCiAgICAgICAgIHJl dHVybiBzcWxbc3RhcnQ6ZW5kXS5zdHJpcCgiXG4iKQogCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bihhY3Rpb249ImZldGNoX29iamVjdHNfdG9fY29tcGFyZSIpCisgICAgZGVmIGZldGNoX29iamVj dHNfdG9fY29tcGFyZShzZWxmLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgYWxsIHRoZSBwYWNrYWdlcyBm b3IKKyAgICAgICAgc3BlY2lmaWVkIHNjaGVtYSBpZC4KKworICAgICAgICA6cGFyYW0gc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgOnBhcmFtIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgOnBhcmFt IHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAg cmVzID0gZGljdCgpCisgICAgICAgIGlmIHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZSAhPSAncHBh cyc6CisgICAgICAgICAgICByZXR1cm4gcmVzCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAg c3RhdHVzLCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhzY2lkLCByb3dbJ29pZCddKQor ICAgICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJlc1tyb3dbJ25hbWUnXV0g PSBkYXRhCisKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgZGVmIGdldF9zcWxfZnJvbV9kaWZm KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIG9pZCwgZGF0YT1Ob25lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBkaWZmX3NjaGVtYT1Ob25lLCBkcm9wX3NxbD1GYWxzZSk6CisgICAgICAg IHNxbCA9ICcnCisgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICBpZiBkaWZmX3NjaGVtYToK KyAgICAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IGRpZmZfc2NoZW1hCisgICAgICAgICAg ICBzdGF0dXMsIHNxbCA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lkLCBkaWQsIGRhdGEsIHNjaWQsIG9p ZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGRyb3Bfc3FsOgorICAgICAgICAgICAg ICAgIHNxbCA9IHNlbGYuZGVsZXRlKGdpZD1naWQsIHNpZD1zaWQsIGRpZD1kaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCBwa2dpZD1vaWQsIG9ubHlfc3Fs PVRydWUpCisKKyAgICAgICAgICAgIGVsaWYgZGlmZl9zY2hlbWE6CisgICAgICAgICAgICAgICAg c3FsID0gc2VsZi5zcWwoZ2lkPWdpZCwgc2lkPXNpZCwgZGlkPWRpZCwgc2NpZD1zY2lkLCBwa2dp ZD1vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9zY2hlbWE9ZGlmZl9z Y2hlbWEsIGpzb25fcmVzcD1GYWxzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgc3FsID0gc2VsZi5zcWwoZ2lkPWdpZCwgc2lkPXNpZCwgZGlkPWRpZCwgc2NpZD1zY2lkLCBw a2dpZD1vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9yZXNwPUZhbHNl KQorICAgICAgICByZXR1cm4gc3FsCisKIAorU2NoZW1hRGlmZlJlZ2lzdHJ5KCdwYWNrYWdlJywg UGFja2FnZVZpZXcpCiBQYWNrYWdlVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvZWRiZnVuY3MvX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdl cy9lZGJmdW5jcy9fX2luaXRfXy5weQppbmRleCA0ODA5YmU4NWIuLmY5Nzk5NDQ2OCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvcGFja2FnZXMvZWRiZnVuY3MvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMv ZWRiZnVuY3MvX19pbml0X18ucHkKQEAgLTE2MSw2ICsxNjEsOCBAQCBjbGFzcyBFZGJGdW5jVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAqIGRlcGVuZGVuY2llcyhn aWQsIHNpZCwgZGlkLCBzY2lkLCBwa2dpZCwgZWRiZm5pZCk6CiAgICAgICAtIFJldHVybnMgdGhl IGRlcGVuZGVuY2llcyBmb3IgdGhlIEZ1bmN0aW9ucyBvYmplY3QuCiAKKyAgICAqIGNvbXBhcmUo Kiprd2FyZ3MpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY29tcGFyZSB0aGUgbm9kZXMg ZnJvbSB0d28gZGlmZmVyZW50IHNjaGVtYXMuCiAgICAgIiIiCiAKICAgICBub2RlX3R5cGUgPSBi bHVlcHJpbnQubm9kZV90eXBlCkBAIC0xODQsNyArMTg2LDggQEAgY2xhc3MgRWRiRnVuY1ZpZXco UEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAgICAgICAgICdub2Rlcyc6IFt7J2dl dCc6ICdub2Rlcyd9LCB7J2dldCc6ICdub2Rlcyd9XSwKICAgICAgICAgJ3NxbCc6IFt7J2dldCc6 ICdzcWwnfV0sCiAgICAgICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9 XSwKLSAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dCisgICAgICAg ICdkZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ2NvbXBhcmUn OiBbeydnZXQnOiAnY29tcGFyZSd9LCB7J2dldCc6ICdjb21wYXJlJ31dCiAgICAgfSkKIAogICAg IGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJ2 YXJzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvZWRidmFycy9fX2luaXRfXy5weQppbmRleCBk ZGNlMTlhNjUuLmU4MjY2MGRkZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvZWRidmFycy9fX2lu aXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJ2YXJzL19faW5pdF9fLnB5CkBAIC0xMzcsNiAr MTM3LDggQEAgY2xhc3MgRWRiVmFyVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy KToKICAgICAqIHNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBwa2dpZCwgdmFyaWQpOgogICAgICAg LSBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBGdW5jdGlvbnMgb2JqZWN0LgogCisgICAgKiBjb21w YXJlKCoqa3dhcmdzKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGNvbXBhcmUgdGhlIG5v ZGVzIGZyb20gdHdvIGRpZmZlcmVudCBzY2hlbWFzLgogICAgICIiIgogCiAgICAgbm9kZV90eXBl ID0gYmx1ZXByaW50Lm5vZGVfdHlwZQpAQCAtMTU4LDcgKzE2MCw4IEBAIGNsYXNzIEVkYlZhclZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAgICAgICAgICAgICB7J2dldCc6 ICdsaXN0J30KICAgICAgICAgXSwKICAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGVzJ30s IHsnZ2V0JzogJ25vZGVzJ31dLAotICAgICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9XQorICAg ICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ2NvbXBhcmUnOiBbeydnZXQn OiAnY29tcGFyZSd9LCB7J2dldCc6ICdjb21wYXJlJ31dCiAgICAgfSkKIAogICAgIGRlZiBjaGVj a19wcmVjb25kaXRpb24oZik6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvX19pbml0X18ucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9zZXF1ZW5jZXMvX19pbml0X18ucHkKaW5kZXggZWZmM2Q5ZTg1Li4zZGJlNzQyMmUgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvX19p bml0X18ucHkKQEAgLTI0LDYgKzI0LDkgQEAgZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0 IG1ha2VfanNvbl9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBcCiBmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCiBmcm9tIGNvbmZpZyBpbXBvcnQgUEdf REVGQVVMVF9EUklWRVIKIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgSVNfUFkyCitmcm9tIHBn YWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJl Z2lzdHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQgU2No ZW1hRGlmZk9iamVjdENvbXBhcmUKKwogIyBJZiB3ZSBhcmUgaW4gUHl0aG9uMwogaWYgbm90IElT X1BZMjoKICAgICB1bmljb2RlID0gc3RyCkBAIC04OCw3ICs5MSw3IEBAIGNsYXNzIFNlcXVlbmNl TW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxlKToKIGJsdWVwcmludCA9IFNlcXVlbmNlTW9kdWxlKF9f bmFtZV9fKQogCiAKLWNsYXNzIFNlcXVlbmNlVmlldyhQR0NoaWxkTm9kZVZpZXcpOgorY2xhc3Mg U2VxdWVuY2VWaWV3KFBHQ2hpbGROb2RlVmlldywgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUpOgog ICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKIAogICAgIHBhcmVudF9pZHMgPSBb CkBAIC0yNzMsNiArMjc2LDIzIEBAIGNsYXNzIFNlcXVlbmNlVmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgICBSZXR1cm5zOgogCiAgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwgc2VpZCkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgKQorCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIHNjaWQsIHNlaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZldGNoIHRoZSBw cm9wZXJ0aWVzIG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0LgorICAgICAgICA6cGFyYW0gc2NpZDoK KyAgICAgICAgOnBhcmFtIHNlaWQ6CisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIiIgorCiAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAgICAgIHNjaWQ9c2Np ZCwgc2VpZD1zZWlkCkBAIC0yODAsMTAgKzMwMCwxMSBAQCBjbGFzcyBTZXF1ZW5jZVZpZXcoUEdD aGlsZE5vZGVWaWV3KToKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKIAogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gRmFs c2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKICAgICAgICAgaWYgbGVu KHJlc1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIGdvbmUoXygiQ291bGQgbm90 IGZpbmQgdGhlIHNlcXVlbmNlIGluIHRoZSBkYXRhYmFzZS4iKSkKKyAgICAgICAgICAgIHJldHVy biBGYWxzZSwgZ29uZSgKKyAgICAgICAgICAgICAgICBfKCJDb3VsZCBub3QgZmluZCB0aGUgc2Vx dWVuY2UgaW4gdGhlIGRhdGFiYXNlLiIpKQogCiAgICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dz J106CiAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCkBAIC0yOTIsNyArMzEzLDcg QEAgY2xhc3MgU2VxdWVuY2VWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICApCiAg ICAgICAgICAgICBzdGF0dXMsIHJzZXQxID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldDEpCiAKICAgICAgICAgICAg IHJvd1snY3VycmVudF92YWx1ZSddID0gcnNldDFbJ3Jvd3MnXVswXVsnbGFzdF92YWx1ZSddCiAg ICAgICAgICAgICByb3dbJ21pbmltdW0nXSA9IHJzZXQxWydyb3dzJ11bMF1bJ21pbl92YWx1ZSdd CkBAIC0zMTksNyArMzQwLDcgQEAgY2xhc3MgU2VxdWVuY2VWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CiAgICAgICAgICkKICAgICAgICAgc3RhdHVzLCBkYXRhY2xyZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGZvciBy b3cgaW4gZGF0YWNscmVzWydyb3dzJ106CiAgICAgICAgICAgICBwcml2ID0gcGFyc2VfcHJpdl9m cm9tX2RiKHJvdykKQEAgLTMyOCwxMCArMzQ5LDcgQEAgY2xhc3MgU2VxdWVuY2VWaWV3KFBHQ2hp bGROb2RlVmlldyk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlc1sncm93 cyddWzBdW3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQogCi0gICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCi0gICAgICAgICAg ICBzdGF0dXM9MjAwCi0gICAgICAgICkKKyAgICAgICAgcmV0dXJuIFRydWUsIHJlc1sncm93cydd WzBdCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uKGFjdGlvbj0iY3JlYXRlIikKICAgICBkZWYg Y3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgpAQCAtODY5LDUgKzg4NywzMCBAQCBj bGFzcyBTZXF1ZW5jZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIHN0YXR1cz0y MDAKICAgICAgICAgKQogCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbihhY3Rpb249ImZldGNoX29i amVjdHNfdG9fY29tcGFyZSIpCisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFyZShzZWxm LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZmV0Y2ggdGhlIGxpc3Qgb2YgYWxsIHRoZSBzZXF1ZW5jZXMgZm9yCisgICAgICAgIHNwZWNp ZmllZCBzY2hlbWEgaWQuCisKKyAgICAgICAgOnBhcmFtIHNpZDogU2VydmVyIElkCisgICAgICAg IDpwYXJhbSBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIDpwYXJhbSBzY2lkOiBTY2hlbWEgSWQK KyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IGRpY3QoKQorICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCBz Y2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0 Wydyb3dzJ106CisgICAgICAgICAgICBzdGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0 aWVzKHNjaWQsIHJvd1snb2lkJ10pCisgICAgICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmVzW3Jvd1snbmFtZSddXSA9IGRhdGEKKworICAgICAgICByZXR1cm4gcmVzCisKIAog U2VxdWVuY2VWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zeW5vbnltcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N5bm9ueW1zL19faW5pdF9fLnB5CmluZGV4IDdm M2M2ODBkNy4uMTQ1Y2NmNjliIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9zeW5vbnltcy9fX2luaXRfXy5weQpAQCAtMjQsNiArMjQsOCBAQCBmcm9tIHBnYWRt aW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVkCiBmcm9tIHBnYWRtaW4u dXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCiBmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVG QVVMVF9EUklWRVIKIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgSVNfUFkyCitmcm9tIHBnYWRt aW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9yZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lz dHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQgU2NoZW1h RGlmZk9iamVjdENvbXBhcmUKIAogIyBJZiB3ZSBhcmUgaW4gUHl0aG9uMwogaWYgbm90IElTX1BZ MjoKQEAgLTkxLDcgKzkzLDcgQEAgY2xhc3MgU3lub255bU1vZHVsZShTY2hlbWFDaGlsZE1vZHVs ZSk6CiBibHVlcHJpbnQgPSBTeW5vbnltTW9kdWxlKF9fbmFtZV9fKQogCiAKLWNsYXNzIFN5bm9u eW1WaWV3KFBHQ2hpbGROb2RlVmlldyk6CitjbGFzcyBTeW5vbnltVmlldyhQR0NoaWxkTm9kZVZp ZXcsIFNjaGVtYURpZmZPYmplY3RDb21wYXJlKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlz IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgU3lub255bSBub2RlCiAKQEAg LTE0Myw2ICsxNDUsMTAgQEAgY2xhc3MgU3lub255bVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAg ICAqIGRlcGVuZGVudChnaWQsIHNpZCwgZGlkLCBzY2lkKToKICAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGdlbmVyYXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50CiAg ICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBTeW5vbnltIG5vZGUuCisKKyAgICAqIGNvbXBh cmUoKiprd2FyZ3MpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY29tcGFyZSB0aGUgc3lu b255bXMgbm9kZXMgZnJvbSB0d28KKyAgICAgICAgZGlmZmVyZW50IHNjaGVtYXMuCiAgICAgIiIi CiAKICAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCkBAIC0zODUsMjYgKzM5MSwz NiBAQCBjbGFzcyBTeW5vbnltVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBSZXR1cm5z OgogICAgICAgICAgICAgSlNPTiBvZiBzZWxlY3RlZCBzeW5vbnltIG5vZGUKICAgICAgICAgIiIi CisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhzY2lkLCBzeWlk KQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIHJlcwogCisgICAg ICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAorICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBkZWYgX2ZldGNoX3Byb3BlcnRp ZXMoc2VsZiwgc2NpZCwgc3lpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgdG8gZmV0Y2ggdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QK KyAgICAgICAgOnBhcmFtIHNjaWQ6CisgICAgICAgIDpwYXJhbSBzeWlkOgorICAgICAgICA6cmV0 dXJuOgorICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHN5aWQ9c3lpZCkKICAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0KICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCi0gICAgICAgICAgICBpZiBsZW4ocmVz Wydyb3dzJ10pID4gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAg ICAgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCi0gICAgICAgICAgICAg ICAgICAgIHN0YXR1cz0yMDAKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBlbHNlOgot ICAgICAgICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93 cyddKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZ29uZSgKICAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgnVGhlIHNwZWNpZmllZCBzeW5vbnltIGNvdWxkIG5vdCBiZSBm b3VuZC4nKQogICAgICAgICAgICAgICAgICkKIAorICAgICAgICAgICAgcmV0dXJuIFRydWUsIHJl c1sncm93cyddWzBdCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCkBAIC03MDcs NSArNzIzLDMzIEBAIGNsYXNzIFN5bm9ueW1WaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAg ICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgZmV0Y2hfb2JqZWN0c190b19jb21wYXJlKHNlbGYsIHNpZCwgZGlkLCBzY2lkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBh bGwgdGhlIHN5bm9ueW1zIGZvcgorICAgICAgICBzcGVjaWZpZWQgc2NoZW1hIGlkLgorCisgICAg ICAgIDpwYXJhbSBzaWQ6IFNlcnZlciBJZAorICAgICAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICA6cGFyYW0gc2NpZDogU2NoZW1hIElkCisgICAgICAgIDpyZXR1cm46CisgICAg ICAgICIiIgorICAgICAgICByZXMgPSBkaWN0KCkKKyAgICAgICAgaWYgc2VsZi5tYW5hZ2VyLnNl cnZlcl90eXBlICE9ICdwcGFzJzoKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksIHNj aWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eShTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJzZXRb J3Jvd3MnXToKKyAgICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRp ZXMoc2NpZCwgcm93WyduYW1lJ10pCisgICAgICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmVzW3Jvd1snbmFtZSddXSA9IGRhdGEKKworICAgICAgICByZXR1cm4gcmVzCisKIAog U3lub255bVZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weQppbmRleCAzZmVmNmUw MjUuLjE0ZTEzZWQyZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5pdF9fLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9fX2luaXRfXy5weQpAQCAtMTEsOSArMTEsMTEgQEAKIAogaW1wb3J0IHNpbXBsZWpz b24gYXMganNvbgogaW1wb3J0IHJlCitpbXBvcnQgY29weQoraW1wb3J0IHJhbmRvbQogCiBpbXBv cnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0 YWJhc2UKLWZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgcmVxdWVzdCwganNvbmlm eSwgdXJsX2ZvcgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBq c29uaWZ5LCB1cmxfZm9yLCBjdXJyZW50X2FwcAogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBn ZXR0ZXh0CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJh c2VzLnNjaGVtYXMudXRpbHMgXAogICAgIGltcG9ydCBTY2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5 cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzCkBAIC0yMiw4ICsyNCwxNSBAQCBmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUKIGZyb20gLnV0 aWxzIGltcG9ydCBCYXNlVGFibGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5jZXMg aW1wb3J0IFByZWZlcmVuY2VzCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9y ZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lzdHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2No ZW1hX2RpZmYuZGlyZWN0b3J5X2NvbXBhcmUgaW1wb3J0IGNvbXBhcmVfZGljdGlvbmFyaWVzLFwK KyAgICBkaXJlY3RvcnlfZGlmZgorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLm1vZGVs IGltcG9ydCBTY2hlbWFEaWZmTW9kZWwKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0 IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgogZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRh Ymxlcy5cCiAgICAgY29uc3RyYWludHMuZm9yZWlnbl9rZXkgaW1wb3J0IHV0aWxzIGFzIGZrZXlf dXRpbHMKK2Zyb20gLnNjaGVtYV9kaWZmX3V0aWxzIGltcG9ydCBTY2hlbWFEaWZmVGFibGVDb21w YXJlCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnNjaGVtYXMudGFibGVzLlwKICAgICBjb2x1bW5zIGltcG9ydCB1dGlscyBhcyBjb2x1bW5fdXRp bHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy50YWJsZXMuXApAQCAtMTMyLDcgKzE0MSw4IEBAIGNsYXNzIFRhYmxlTW9kdWxlKFNj aGVtYUNoaWxkTW9kdWxlKToKIGJsdWVwcmludCA9IFRhYmxlTW9kdWxlKF9fbmFtZV9fKQogCiAK LWNsYXNzIFRhYmxlVmlldyhCYXNlVGFibGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0 dGluZ3MpOgorY2xhc3MgVGFibGVWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBW YWN1dW1TZXR0aW5ncywKKyAgICAgICAgICAgICAgICBTY2hlbWFEaWZmVGFibGVDb21wYXJlKToK ICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHJv dXRlcyBmb3IgVGFibGUgbm9kZQogCkBAIC0yMjksNiArMjM5LDEwIEBAIGNsYXNzIFRhYmxlVmll dyhCYXNlVGFibGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogCiAgICAg KiBkZWxldGVfc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgogICAgICAgLSBSZXR1cm5z IHNxbCBmb3IgU2NyaXB0CisKKyAgICAqIGNvbXBhcmUoKiprd2FyZ3MpOgorICAgICAgLSBUaGlz IGZ1bmN0aW9uIHdpbGwgY29tcGFyZSB0aGUgdGFibGUgbm9kZXMgZnJvbSB0d28KKyAgICAgICAg ZGlmZmVyZW50IHNjaGVtYXMuCiAiIiIKIAogICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2Rl X3R5cGUKQEAgLTI3Nyw3ICsyOTEsOCBAQCBjbGFzcyBUYWJsZVZpZXcoQmFzZVRhYmxlVmlldywg RGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgJ2luc2VydF9zcWwnOiBb eydnZXQnOiAnaW5zZXJ0X3NxbCd9XSwKICAgICAgICAgJ3VwZGF0ZV9zcWwnOiBbeydnZXQnOiAn dXBkYXRlX3NxbCd9XSwKICAgICAgICAgJ2RlbGV0ZV9zcWwnOiBbeydnZXQnOiAnZGVsZXRlX3Nx bCd9XSwKLSAgICAgICAgJ2NvdW50X3Jvd3MnOiBbeydnZXQnOiAnY291bnRfcm93cyd9XQorICAg ICAgICAnY291bnRfcm93cyc6IFt7J2dldCc6ICdjb3VudF9yb3dzJ31dLAorICAgICAgICAnY29t cGFyZSc6IFt7J2dldCc6ICdjb21wYXJlJ30sIHsnZ2V0JzogJ2NvbXBhcmUnfV0KICAgICB9KQog CiAgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCkBAIC00NjQsOSArNDc5LDkg QEAgY2xhc3MgVGFibGVWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1T ZXR0aW5ncyk6CiAgICAgICAgICAgLSBzZXR0aW5nCiAgICAgICAgIHZhbHVlcwogICAgICAgICAi IiIKLSAgICAgICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RhYmxlX3NldHRpbmdzKHNlbGYuY29u bikKKyAgICAgICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RhYmxlX3NldHRpbmdzKHNlbGYuY29u biwgc2lkKQogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJlc3Bv bnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAogICAgICAgICAgICAg c3RhdHVzPTIwMAogICAgICAgICApCiAKQEAgLTQ4MCw5ICs0OTUsOSBAQCBjbGFzcyBUYWJsZVZp ZXcoQmFzZVRhYmxlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAg ICAgICAtIHNldHRpbmcKICAgICAgICAgdmFsdWVzCiAgICAgICAgICIiIgotICAgICAgICByZXMg PSBzZWxmLmdldF92YWN1dW1fdG9hc3Rfc2V0dGluZ3Moc2VsZi5jb25uKQorICAgICAgICByZXMg PSBzZWxmLmdldF92YWN1dW1fdG9hc3Rfc2V0dGluZ3Moc2VsZi5jb25uLCBzaWQpCiAgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10s CisgICAgICAgICAgICByZXNwb25zZT1yZXMsCiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAg ICAgICkKIApAQCAtNTgyLDcgKzU5NywyMiBAQCBjbGFzcyBUYWJsZVZpZXcoQmFzZVRhYmxlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgUmV0dXJuczoKICAg ICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQgdGFibGUgbm9kZQogICAgICAgICAiIiIKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGRpZCwgc2NpZCwgdGlkKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIHJlcwogCisgICAgICAg IHJldHVybiBzdXBlcihUYWJsZVZpZXcsIHNlbGYpLnByb3BlcnRpZXMoCisgICAgICAgICAgICBn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHJlcworICAgICAgICApCisKKyAgICBkZWYgX2ZldGNo X3Byb3BlcnRpZXMoc2VsZiwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZldGNoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzcGVj aWZpZWQgb2JqZWN0CisgICAgICAgIDpwYXJhbSBkaWQ6CisgICAgICAgIDpwYXJhbSBzY2lkOgor ICAgICAgICA6cGFyYW0gdGlkOgorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFi bGVfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgZGlkPWRp ZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLApAQCAtNTkwLDEwICs2MjAsMTEgQEAgY2xhc3MgVGFibGVW aWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAg ICAgICkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK ICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3Mn XSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIlRoZSBzcGVjaWZpZWQg dGFibGUgY291bGQgbm90IGJlIGZvdW5kLiIpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBn b25lKAorICAgICAgICAgICAgICAgIGdldHRleHQoIlRoZSBzcGVjaWZpZWQgdGFibGUgY291bGQg bm90IGJlIGZvdW5kLiIpKQogCiAgICAgICAgICMgV2Ugd2lsbCBjaGVjayB0aGUgdGhyZXNob2xk IHNldCBieSB1c2VyIGJlZm9yZSBleGVjdXRpbmcKICAgICAgICAgIyB0aGUgcXVlcnkgYmVjYXVz ZSB0aGF0IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMKQEAgLTYyMCw3ICs2NTEsNyBAQCBj bGFzcyBUYWJsZVZpZXcoQmFzZVRhYmxlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRp bmdzKToKICAgICAgICAgICAgIHN0YXR1cywgY291bnQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoU1FMKQogCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y291bnQpCisgICAgICAgICAgICAg ICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y291bnQpCiAK ICAgICAgICAgICAgIHJlc1sncm93cyddWzBdWydyb3dzX2NudCddID0gY291bnQKIApAQCAtNjI4 LDkgKzY1OSw3IEBAIGNsYXNzIFRhYmxlVmlldyhCYXNlVGFibGVWaWV3LCBEYXRhVHlwZVJlYWRl ciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBlbGlmIG5vdCBlc3RpbWF0ZWRfcm93X2NvdW50 OgogICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ3Jvd3NfY250J10gPSBlc3RpbWF0ZWRfcm93 X2NvdW50CiAKLSAgICAgICAgcmV0dXJuIHN1cGVyKFRhYmxlVmlldywgc2VsZikucHJvcGVydGll cygKLSAgICAgICAgICAgIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcmVzCi0gICAgICAgICkK KyAgICAgICAgcmV0dXJuIFRydWUsIHJlcwogCiAgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJl Y29uZGl0aW9uCiAgICAgZGVmIHR5cGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1O b25lLCBjbGlkPU5vbmUpOgpAQCAtMTE2OCw2ICsxMTk3LDcyIEBAIGNsYXNzIFRhYmxlVmlldyhC YXNlVGFibGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAi IiIKICAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcucmVzZXRfc3RhdGlzdGljcyhzZWxmLCBz Y2lkLCB0aWQpCiAKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X3NxbF9mcm9tX3RhYmxlX2RpZmYoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBzcWwgb24gdGhlIGJhc2lzIHRoZSBk aWZmZXJlbmNlIG9mIDIgdGFibGVzCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gZGljdCgp CisgICAgICAgIHJlcyA9IE5vbmUKKyAgICAgICAgc2lkID0ga3dhcmdzWydzaWQnXQorICAgICAg ICBkaWQgPSBrd2FyZ3NbJ2RpZCddCisgICAgICAgIHNjaWQgPSBrd2FyZ3NbJ3NjaWQnXQorICAg ICAgICB0aWQgPSBrd2FyZ3NbJ3RpZCddCisgICAgICAgIGRpZmZfZGF0YSA9IGt3YXJnc1snZGlm Zl9kYXRhJ10gaWYgJ2RpZmZfZGF0YScgaW4ga3dhcmdzIGVsc2UgTm9uZQorICAgICAgICBqc29u X3Jlc3AgPSBrd2FyZ3NbJ2pzb25fcmVzcCddIGlmICdqc29uX3Jlc3AnIGluIGt3YXJncyBlbHNl IFRydWUKKyAgICAgICAgZGlmZl9zY2hlbWEgPSBrd2FyZ3NbJ2RpZmZfc2NoZW1hJ10gaWYgJ2Rp ZmZfc2NoZW1hJyBpbiBrd2FyZ3MgZWxzZVwKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgc2No ZW1hX2RpZmZfdGFibGUgPSBrd2FyZ3NbJ3NjaGVtYV9kaWZmX3RhYmxlJ10gaWZcCisgICAgICAg ICAgICAnc2NoZW1hX2RpZmZfdGFibGUnIGluIGt3YXJncyBlbHNlIE5vbmUKKworICAgICAgICBp ZiBkaWZmX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmV0Y2hfc3FsKGRpZCwgc2Np ZCwgdGlkLCBkaWZmX2RhdGEsIGpzb25fcmVzcCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg IG1haW5fc3FsID0gW10KKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQs CisgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQKKyAgICAg ICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBpZiBs ZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoZ2V0dGV4 dCgiVGhlIHNwZWNpZmllZCB0YWJsZSBjb3VsZCBub3QgYmUgZm91bmQuIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICAgICAgaWYgc3RhdHVzOgorICAg ICAgICAgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgICAgICMgZGF0 YSA9IHN1cGVyKFRhYmxlVmlldywgc2VsZikucHJvcGVydGllcygKKyAgICAgICAgICAgICAgICAj ICAgICAwLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCByZXMsIEZhbHNlCisgICAgICAgICAgICAgICAg IyApCisKKyAgICAgICAgICAgIGlmIGRpZmZfc2NoZW1hOgorICAgICAgICAgICAgICAgIGRhdGFb J3NjaGVtYSddID0gZGlmZl9zY2hlbWEKKworICAgICAgICAgICAgaWYgc2NoZW1hX2RpZmZfdGFi bGU6CisgICAgICAgICAgICAgICAgZGF0YVsnb3JpZ19uYW1lJ10gPSBkYXRhWyduYW1lJ10KKyAg ICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSAnc2NoZW1hX2RpZmZfdGVtcF97MH0nLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisKKyAg ICAgICAgICAgICAgICBzcWwsIHBhcnRpdGlvbl9zcWwgPSBCYXNlVGFibGVWaWV3LmdldF9yZXZl cnNlX2VuZ2luZWVyZWRfc3FsKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCBkaWQsIHNjaWQs IHRpZCwgbWFpbl9zcWwsIGRhdGEsIGpzb25fcmVzcCwKKyAgICAgICAgICAgICAgICAgICAgZGlm Zl9wYXJ0aXRpb25fc3FsPVRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IHNxbCwgcGFydGl0aW9uX3NxbCA9IEJhc2VUYWJsZVZpZXcuZ2V0X3JldmVyc2VfZW5naW5lZXJl ZF9zcWwoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBtYWluX3Nx bCwgZGF0YSwganNvbl9yZXNwKQorCisgICAgICAgICAgICBpZiBzY2hlbWFfZGlmZl90YWJsZToK KyAgICAgICAgICAgICAgICAjIElmIHBhcnRpdGlvbiB0YWJsZXMgaGF2ZSBkaWZmZXJlbnQgcGFy dGl0aW9ucworICAgICAgICAgICAgICAgIHNxbCArPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdzY2hlbWFf ZGlmZi5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBkYXRhPWRh dGEsIHBhcnRpdGlvbl9zcWw9cGFydGl0aW9uX3NxbAorICAgICAgICAgICAgICAgICkKKworICAg ICAgICAgICAgcmV0dXJuIHNxbAorCiAgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0 aW9uCiAgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgog ICAgICAgICAiIiIKQEAgLTExODEsNyArMTI3Niw3IEBAIGNsYXNzIFRhYmxlVmlldyhCYXNlVGFi bGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICB0aWQ6 IFRhYmxlIElECiAgICAgICAgICIiIgogICAgICAgICBkYXRhID0gZGljdCgpCi0gICAgICAgIHJl cyA9IE5vbmUKKyAgICAgICAgU1FMID0gJycKICAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5h cmdzLml0ZW1zKCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBjb21tZW50 cyBzaG91bGQgYmUgdGFrZW4gYXMgaXMgYmVjYXVzZSBpZiB1c2VyIGVudGVycyBhCkBAIC0xMTkz LDYgKzEyODgsMTEgQEAgY2xhc3MgVGFibGVWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVh ZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5 cGVFcnJvciwgS2V5RXJyb3IpOgogICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CiAKKyAgICAg ICAgcmV0dXJuIHNlbGYuX2ZldGNoX3NxbChkaWQsIHNjaWQsIHRpZCwgZGF0YSkKKworICAgIGRl ZiBfZmV0Y2hfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBkYXRhLCBqc29uX3Jlc3A9VHJ1ZSk6 CisgICAgICAgIHJlcyA9IE5vbmUKKwogICAgICAgICBpZiB0aWQgaXMgbm90IE5vbmU6CiAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLApAQCAtMTIwMSwx MyArMTMwMSwxOCBAQCBjbGFzcyBUYWJsZVZpZXcoQmFzZVRhYmxlVmlldywgRGF0YVR5cGVSZWFk ZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgICkKICAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9U1FMKQogCiAgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQs IHRpZCwgZGF0YSwgcmVzKQogICAgICAgICBTUUwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywg U1FMKQogICAgICAgICBTUUwgPSBTUUwuc3RyaXAoJ1xuJykKKworICAgICAgICBpZiBub3QganNv bl9yZXNwOgorICAgICAgICAgICAgcmV0dXJuIFNRTAorCiAgICAgICAgIGlmIFNRTCA9PSAnJzoK ICAgICAgICAgICAgIFNRTCA9ICItLW1vZGlmaWVkIFNRTCIKKwogICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgZGF0YT1TUUwsCiAgICAgICAgICAgICBzdGF0 dXM9MjAwCkBAIC0xNDE5LDcgKzE1MjQsNyBAQCBjbGFzcyBUYWJsZVZpZXcoQmFzZVRhYmxlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UocmVzcG9uc2U9c3FsKQogCiAgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29u ZGl0aW9uCi0gICAgZGVmIGRlbGV0ZV9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk KToKKyAgICBkZWYgZGVsZXRlX3NxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGpz b25fcmVzcD1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIERFTEVURSBzY3JpcHQgc3FsIGZv ciB0aGUgb2JqZWN0CiAKQEAgLTE0NDgsNiArMTU1Myw5IEBAIGNsYXNzIFRhYmxlVmlldyhCYXNl VGFibGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAg c2VsZi5xdElkZW50KHNlbGYuY29ubiwgZGF0YVsnc2NoZW1hJ10sIGRhdGFbJ25hbWUnXSkKICAg ICAgICAgKQogCisgICAgICAgIGlmIG5vdCBqc29uX3Jlc3A6CisgICAgICAgICAgICByZXR1cm4g c3FsCisKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9c3FsKQogCiAgICAg QEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCkBAIC0xNTAyLDUgKzE2MTAsNjAgQEAg Y2xhc3MgVGFibGVWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0 aW5ncyk6CiAgICAgICAgICAgICBkYXRhPXsndG90YWxfcm93cyc6IGNvdW50fQogICAgICAgICAp CiAKKyAgICBkZWYgZ2V0X2RlbGV0ZV9zcWwoc2VsZiwgcmVzKToKKyAgICAgICAgc2VsZi5jbWQg PSAnZGVsZXRlJworICAgICAgICBzcWwgPSBzdXBlcihUYWJsZVZpZXcsIHNlbGYpLmdldF9kZWxl dGVfc3FsKHJlcykKKyAgICAgICAgc2VsZi5jbWQgPSBOb25lCisgICAgICAgIHJldHVybiBzcWwK KworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBmZXRjaF90 YWJsZXMoc2VsZiwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lLCBrZXlzX3RvX3JlbW92ZT1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlz dCBvZiBhbGwgdGhlIHRhYmxlcworICAgICAgICBhbmQgd2lsbCBiZSB1c2VkIGJ5IHNjaGVtYSBk aWZmLgorCisgICAgICAgIDpwYXJhbSBzaWQ6IFNlcnZlciBJZAorICAgICAgICA6cGFyYW0gZGlk OiBEYXRhYmFzZSBJZAorICAgICAgICA6cGFyYW0gc2NpZDogU2NoZW1hIElkCisgICAgICAgIDpw YXJhbSB0aWQ6IFRhYmxlIElkCisgICAgICAgIDpwYXJhbSBrZXlzX3RvX3JlbW92ZTogVGFibGUg Y29sdW1ucyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFzZXQKKyAgICAgICAgOnJldHVybjog VGFibGUgZGF0YXNldAorICAgICAgICAiIiIKKyAgICAgICAgaWYgdGlkOgorICAgICAgICAgICAg c3RhdHVzLCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhkaWQsIHNjaWQsIHRpZCkKKwor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5s b2dnZXIuZXJyb3IoZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg ICAgICAgZGF0YSA9IHN1cGVyKFRhYmxlVmlldywgc2VsZikucHJvcGVydGllcygKKyAgICAgICAg ICAgICAgICAwLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBkYXRhLCBGYWxzZQorICAgICAgICAgICAg KQorICAgICAgICAgICAgc2VsZi5yZW1vdmVfa2V5c19mb3JfY29tcGFyaXNpb24oZGF0YSwga2V5 c190b19yZW1vdmUpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICByZXMgPSBkaWN0KCkKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCBzY2lkPXNjaWQpCisgICAg ICAgICAgICBzdGF0dXMsIHRhYmxlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5s b2dnZXIuZXJyb3IodGFibGVzKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg ICAgICAgICBmb3Igcm93IGluIHRhYmxlc1sncm93cyddOgorICAgICAgICAgICAgICAgIHN0YXR1 cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZGlkLCBzY2lkLCByb3dbJ29pZCddKQor CisgICAgICAgICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0g c3VwZXIoVGFibGVWaWV3LCBzZWxmKS5wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgICAgICAg ICAgMCwgc2lkLCBkaWQsIHNjaWQsIHJvd1snb2lkJ10sIGRhdGEsIEZhbHNlCisgICAgICAgICAg ICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZV9rZXlzX2Zvcl9j b21wYXJpc2lvbihkYXRhLCBrZXlzX3RvX3JlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAgcmVz W3Jvd1snbmFtZSddXSA9IGRhdGEKKworICAgICAgICAgICAgcmV0dXJuIHJlcworCiAKK1NjaGVt YURpZmZSZWdpc3RyeSgndGFibGUnLCBUYWJsZVZpZXcpCiBUYWJsZVZpZXcucmVnaXN0ZXJfbm9k ZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW5zL19faW5pdF9f LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbHVtbnMvX19pbml0X18ucHkKaW5kZXggYzBjNDBlNDE3Li4zMzQ2 YWY4ZDggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW5zL19faW5pdF9fLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb2x1bW5zL19faW5pdF9fLnB5CkBAIC0yOSw2ICsyOSw3IEBAIGZyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKIGZyb20gcGdh ZG1pbi51dGlscy5hamF4IGltcG9ydCBDb2xQYXJhbXNKU09ORGVjb2RlcgorCiAjIElmIHdlIGFy ZSBpbiBQeXRob24zCiBpZiBub3QgSVNfUFkyOgogICAgIHVuaWNvZGUgPSBzdHIKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vycy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b21wb3VuZF90cmlnZ2Vycy9fX2luaXRfXy5weQppbmRleCA2MTE5ZmYxMzguLjgzZDg3YmQ1YSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbXBvdW5kX3RyaWdnZXJzL19faW5pdF9fLnB5CisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vycy9fX2luaXRfXy5weQpAQCAtMjYsNiArMjYsMTAg QEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5z Y2hlbWFzLnV0aWxzIFwKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2 ZXIKIGZyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLnV0 aWxzIGltcG9ydCBJU19QWTIKK2Zyb20gcGdhZG1pbi51dGlscy5jb21waWxlX3RlbXBsYXRlX25h bWUgaW1wb3J0IGNvbXBpbGVfdGVtcGxhdGVfcGF0aAorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVt YV9kaWZmLm5vZGVfcmVnaXN0cnkgaW1wb3J0IFNjaGVtYURpZmZSZWdpc3RyeQorZnJvbSBwZ2Fk bWluLnRvb2xzLnNjaGVtYV9kaWZmLmNvbXBhcmUgaW1wb3J0IFNjaGVtYURpZmZPYmplY3RDb21w YXJlCisKICMgSWYgd2UgYXJlIGluIFB5dGhvbjMKIGlmIG5vdCBJU19QWTI6CiAgICAgdW5pY29k ZSA9IHN0cgpAQCAtMTU1LDcgKzE1OSw3IEBAIGNsYXNzIENvbXBvdW5kVHJpZ2dlck1vZHVsZShD b2xsZWN0aW9uTm9kZU1vZHVsZSk6CiBibHVlcHJpbnQgPSBDb21wb3VuZFRyaWdnZXJNb2R1bGUo X19uYW1lX18pCiAKIAotY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcp OgorY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcsIFNjaGVtYURpZmZP YmplY3RDb21wYXJlKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZv ciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgQ29tcG91bmQgVHJpZ2dlciBub2RlCiAKQEAgLTI0NSw2 ICsyNDksMTAgQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgog ICAgICAgICAnZW5hYmxlJzogW3sncHV0JzogJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXInfV0KICAg ICB9KQogCisgICAgIyBTY2hlbWEgRGlmZjogS2V5cyB0byBpZ25vcmUgd2hpbGUgY29tcGFyaW5n CisgICAga2V5c190b19pZ25vcmUgPSBbJ29pZCcsICd4bWluJywgJ25zcG5hbWUnLCAndGZ1bmN0 aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAndGdyZWxpZCcsICd0Z2ZvaWQnXQorCiAgICAg ZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKQEAgLTI2 Nyw2ICsyNzUsMTIgQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgICAgICAgXVsnZGF0bGFzdHN5c29pZCddIGlmIHNlbGYubWFuYWdlci5kYl9pbmZv IGlzIG5vdCBOb25lIGFuZCBcCiAgICAgICAgICAgICAgICAga3dhcmdzWydkaWQnXSBpbiBzZWxm Lm1hbmFnZXIuZGJfaW5mbyBlbHNlIDAKIAorICAgICAgICAgICAgc2VsZi50YWJsZV90ZW1wbGF0 ZV9wYXRoID0gY29tcGlsZV90ZW1wbGF0ZV9wYXRoKAorICAgICAgICAgICAgICAgICd0YWJsZXMv c3FsJywKKyAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUsCisgICAgICAg ICAgICAgICAgc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgICkKKwogICAgICAgICAg ICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cwogICAgICAgICAg ICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2NvbXBvdW5kX3RyaWdnZXJzL3NxbC97MH0vI3sxfSMn LmZvcm1hdCgKICAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUsIHNlbGYu bWFuYWdlci52ZXJzaW9uKQpAQCAtNDE3LDYgKzQzMSwxOCBAQCBjbGFzcyBDb21wb3VuZFRyaWdn ZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBKU09OIG9mIHNlbGVjdGVkIGNv bXBvdW5kIHRyaWdnZXIgbm9kZQogICAgICAgICAiIiIKIAorICAgICAgICBkYXRhID0gc2VsZi5f ZmV0Y2hfcHJvcGVydGllcyh0aWQsIHRyaWQpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisg ICAgICAgICAgICByZXNwb25zZT1kYXRhLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICApCisKKyAgICBkZWYgX2ZldGNoX3Byb3BlcnRpZXMoc2VsZiwgdGlkLCB0cmlkKToKKwogICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwn XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXRyaWQsCkBA IC00NDAsMTAgKzQ2Niw3IEBAIGNsYXNzIENvbXBvdW5kVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVW aWV3KToKIAogICAgICAgICBkYXRhID0gdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEpCiAKLSAgICAg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0gICAgICAgICAgICByZXNwb25zZT1kYXRhLAotICAg ICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCisgICAgICAgIHJldHVybiBUcnVlLCBkYXRh CiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQpOgpAQCAtNTE5LDcgKzU0Miw3IEBAIGNsYXNzIENvbXBvdW5kVHJp Z2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgot ICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkPU5vbmUp OgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkPU5v bmUsIG9ubHlfc3FsPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCB1cGRhdGVzIGV4aXN0aW5nIHRoZSBjb21wb3VuZCB0cmlnZ2VyIG9iamVjdAogCkBAIC01 NzksNiArNjAyLDkgQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBp ZiBvbmx5X3NxbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNRTAorCiAgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQogICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtODQ2LDUgKzg3MiwxMDkgQEAgY2xh c3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc3Rh dHVzPTIwMAogICAgICAgICApCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdl dF9zcWxfZnJvbV9kaWZmKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgb2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPU5vbmUsIGRpZmZfc2NoZW1hPU5vbmUsIGRyb3Bf c3FsPUZhbHNlKToKKyAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNl bGYuZ2V0X3NxbChzY2lkLCB0aWQsIG9pZCwgZGF0YSkKKyAgICAgICAgICAgIGlmIG5vdCBpc2lu c3RhbmNlKHNxbCwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBzcWwK KyAgICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICBpZiBkcm9wX3NxbDoKKyAgICAgICAgICAgICAgICBTUUwgPSBzZWxm LmRlbGV0ZShnaWQ9Z2lkLCBzaWQ9c2lkLCBkaWQ9ZGlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0cmlkPW9pZCwgb25seV9zcWw9VHJ1ZSkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRpZD10aWQsIHRyaWQ9b2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93 cyddKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KCIiIkNv dWxkIG5vdCBmaW5kIHRoZSBjb21wb3VuZAorICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBp biB0aGUgdGFibGUuIiIiKSkKKworICAgICAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93 cyddWzBdKQorICAgICAgICAgICAgICAgICMgQWRkaW5nIHBhcmVudCBpbnRvIGRhdGEgZGljdCwK KyAgICAgICAgICAgICAgICAjIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCisg ICAgICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICAgICAg ICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCisKKyAgICAgICAgICAgICAgICBpZiBsZW4o ZGF0YVsndGdhdHRyJ10pID49IDE6CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAn LmpvaW4oZGF0YVsndGdhdHRyJ10uc3BsaXQoJyAnKSkKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnY29sdW1ucyddID0gc2VsZi5fY29sdW1uX2RldGFpbHModGlkLCBjb2x1bW5zKQorCisgICAg ICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3RyaWdnZXJfZGVmaW5pdGlvbihkYXRhKQorCisgICAg ICAgICAgICAgICAgaWYgZGlmZl9zY2hlbWE6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3Nj aGVtYSddID0gZGlmZl9zY2hlbWEKKworICAgICAgICAgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYu Z2V0X3NxbChzY2lkLCB0aWQsIE5vbmUsIGRhdGEpCisKKyAgICAgICAgICAgICAgICBzcWxfaGVh ZGVyID0gdSItLSBDb21wb3VuZCBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQoCisgICAgICAg ICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSkKKworICAgICAgICAgICAgICAgIHNxbF9oZWFkZXIg Kz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgICAgICBTUUwgPSBzcWxfaGVh ZGVyICsgJ1xuXG4nICsgU1FMLnN0cmlwKCdcbicpCisKKyAgICAgICAgICAgICAgICAjIElmIGNv bXBvdW5kIHRyaWdnZXIgaXMgZGlzYmFsZWQgdGhlbiBhZGQgc3FsCisgICAgICAgICAgICAgICAg IyBjb2RlIGZvciB0aGUgc2FtZQorICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhWydpc19lbmFi bGVfdHJpZ2dlciddOgorICAgICAgICAgICAgICAgICAgICBTUUwgKz0gJ1xuXG4nCisgICAgICAg ICAgICAgICAgICAgIFNRTCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWworICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICByZXR1cm4gU1FMCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFyZShz ZWxmLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBvaWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlnbm9yZV9rZXlzPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBhbGwgdGhlIHRyaWdnZXJzIGZvcgor ICAgICAgICBzcGVjaWZpZWQgc2NoZW1hIGlkLgorCisgICAgICAgIDpwYXJhbSBzaWQ6IFNlcnZl ciBJZAorICAgICAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICA6cGFyYW0gc2Np ZDogU2NoZW1hIElkCisgICAgICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElkCisgICAgICAgIDpyZXR1 cm46CisgICAgICAgICIiIgorICAgICAgICByZXMgPSBkaWN0KCkKKworICAgICAgICBpZiBvaWQ6 CisgICAgICAgICAgICBzdGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKHRpZCwg b2lkKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBjdXJyZW50 X2FwcC5sb2dnZXIuZXJyb3IoZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg ICAgICAgICAgIHJlcyA9IGRhdGEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkKQor ICAgICAgICAgICAgc3RhdHVzLCB0cmlnZ2VycyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXko U1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBjdXJyZW50 X2FwcC5sb2dnZXIuZXJyb3IodHJpZ2dlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl CisKKyAgICAgICAgICAgIGZvciByb3cgaW4gdHJpZ2dlcnNbJ3Jvd3MnXToKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKHRpZCwgcm93WydvaWQn XSkKKyAgICAgICAgICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGln bm9yZV9rZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiBzZWxmLmtleXNf dG9faWdub3JlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkYXRhOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtrZXldCisgICAgICAgICAg ICAgICAgICAgIHJlc1tyb3dbJ25hbWUnXV0gPSBkYXRhCisKKyAgICAgICAgcmV0dXJuIHJlcwor CiAKK1NjaGVtYURpZmZSZWdpc3RyeSgnY29tcG91bmRfdHJpZ2dlcicsIENvbXBvdW5kVHJpZ2dl clZpZXcsICd0YWJsZScpCiBDb21wb3VuZFRyaWdnZXJWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhi bHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3Ry YWludC91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3V0 aWxzLnB5CmluZGV4IDQ3YmFlZTliMy4uMDQyMzdkNjQ1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvaW5kZXhfY29uc3RyYWludC91dGlscy5weQpAQCAtMTUyLDcgKzE1Miw4IEBAIGRl ZiBnZXRfaW5kZXhfY29uc3RyYWludF9zcWwoY29ubiwgZGlkLCB0aWQsIGRhdGEsIHRlbXBsYXRl X3BhdGg9Tm9uZSk6CiAKICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRfc3FsLCBuYW1lID0g Z2V0X3NxbChjb25uLCBjLCBkaWQsIHRpZCwgY3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY1snb2lkJ10pCi0gICAgICAgICAgICAgICAgICAg IHNxbC5hcHBlbmQobW9kaWZpZWRfc3FsLnN0cmlwKCdcbicpKQorICAgICAgICAgICAgICAgICAg ICBpZiBtb2RpZmllZF9zcWw6CisgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKG1v ZGlmaWVkX3NxbC5zdHJpcCgnXG4nKSkKIAogICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25z dHJhaW50OgogICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVkJ106CkBA IC0xODMsNiArMTg0LDcgQEAgZGVmIGdldF9zcWwoY29ubiwgZGF0YSwgZGlkLCB0aWQsIGN0eXBl LCBjaWQ9Tm9uZSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKICAgICA6cmV0dXJuOgogICAgICIiIgog ICAgIG5hbWUgPSBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBOb25lCisgICAg c3FsID0gTm9uZQogICAgIGlmIGNpZCBpcyBub3QgTm9uZToKICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBjaWQ9Y2lkLApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5k ZXhlcy9fX2luaXRfXy5weQppbmRleCA3ZjE5ZTk1M2EuLjZjZGU2MDg0MyAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19p bml0X18ucHkKQEAgLTEzLDcgKzEzLDcgQEAgaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgogZnJv bSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKIGltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFzZQotZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZsYXNrIGltcG9ydCByZW5k ZXJfdGVtcGxhdGUsIHJlcXVlc3QsIGpzb25pZnksIGN1cnJlbnRfYXBwCiBmcm9tIGZsYXNrX2Jh YmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1w b3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKQEAgLTI1LDggKzI1LDE0IEBA IGZyb20gcGdhZG1pbi51dGlscy5jb21waWxlX3RlbXBsYXRlX25hbWUgaW1wb3J0IGNvbXBpbGVf dGVtcGxhdGVfcGF0aAogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZl cgogZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCiBmcm9tIHBnYWRtaW4udXRp bHMgaW1wb3J0IElTX1BZMgorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLm5vZGVfcmVn aXN0cnkgaW1wb3J0IFNjaGVtYURpZmZSZWdpc3RyeQorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVt YV9kaWZmLmRpcmVjdG9yeV9jb21wYXJlIGltcG9ydCBjb21wYXJlX2RpY3Rpb25hcmllcyxcCisg ICAgZGlyZWN0b3J5X2RpZmYKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5tb2RlbCBp bXBvcnQgU2NoZW1hRGlmZk1vZGVsCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29t cGFyZSBpbXBvcnQgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUKIGZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy4gXAogICAgIHRhYmxlcy5p bmRleGVzIGltcG9ydCB1dGlscyBhcyBpbmRleF91dGlscworCiAjIElmIHdlIGFyZSBpbiBQeXRo b24zCiBpZiBub3QgSVNfUFkyOgogICAgIHVuaWNvZGUgPSBzdHIKQEAgLTEzNSw3ICsxNDEsNyBA QCBjbGFzcyBJbmRleGVzTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKIGJsdWVwcmludCA9 IEluZGV4ZXNNb2R1bGUoX19uYW1lX18pCiAKIAotY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKK2NsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldywgU2NoZW1hRGlmZk9i amVjdENvbXBhcmUpOgogICAgICIiIgogICAgIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9y IGdlbmVyYXRpbmcgcm91dGVzIGZvciBJbmRleCBub2RlCiAKQEAgLTIyNyw2ICsyMzMsMTEgQEAg Y2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAg ICAgICB7J2dldCc6ICdnZXRfb3BfY2xhc3MnfV0KICAgICB9KQogCisgICAgIyBTY2hlbWEgRGlm ZjogS2V5cyB0byBpZ25vcmUgd2hpbGUgY29tcGFyaW5nCisgICAga2V5c190b19pZ25vcmUgPSBb J29pZCcsICdyZWxvd25lcicsICdzY2hlbWEnLAorICAgICAgICAgICAgICAgICAgICAgICdpbmRy ZWxpZCcsICduc3BuYW1lJworICAgICAgICAgICAgICAgICAgICAgIF0KKwogICAgIGRlZiBjaGVj a19wcmVjb25kaXRpb24oZik6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCkBAIC0yNDgsNiArMjU5 LDEyIEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBd WydkYXRsYXN0c3lzb2lkJ10gaWYgc2VsZi5tYW5hZ2VyLmRiX2luZm8gaXMgbm90IE5vbmUgYW5k IFwKICAgICAgICAgICAgICAgICBrd2FyZ3NbJ2RpZCddIGluIHNlbGYubWFuYWdlci5kYl9pbmZv IGVsc2UgMAogCisgICAgICAgICAgICBzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGggPSBjb21waWxl X3RlbXBsYXRlX3BhdGgoCisgICAgICAgICAgICAgICAgJ3RhYmxlcy9zcWwnLAorICAgICAgICAg ICAgICAgIHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZSwKKyAgICAgICAgICAgICAgICBzZWxmLm1h bmFnZXIudmVyc2lvbgorICAgICAgICAgICAgKQorCiAgICAgICAgICAgICAjIHdlIHdpbGwgc2V0 IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRl X3BhdGggPSBjb21waWxlX3RlbXBsYXRlX3BhdGgoCiAgICAgICAgICAgICAgICAgJ2luZGV4ZXMv c3FsLycsCkBAIC00ODUsMTkgKzUwMiwzNSBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxkTm9k ZVZpZXcpOgogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgSlNPTiBvZiBzZWxlY3RlZCBz Y2hlbWEgbm9kZQogICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCBkYXRhID0gc2VsZi5fZmV0 Y2hfcHJvcGVydGllcyhkaWQsIHRpZCwgaWR4KQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGRhdGEKIAorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAg ICAgICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICkKKworICAgIGRlZiBfZmV0Y2hfcHJvcGVydGllcyhzZWxmLCBkaWQsIHRpZCwgaWR4KToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0aGUgcHJv cGVydGllcyBvZiBzcGVjaWZpZWQgb2JqZWN0LgorICAgICAgICA6cGFyYW0gZGlkOgorICAgICAg ICA6cGFyYW0gdGlkOgorICAgICAgICA6cGFyYW0gaWR4OgorICAgICAgICA6cmV0dXJuOgorICAg ICAgICAiIiIKICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAg ICAgZGlkPWRpZCwgdGlkPXRpZCwgaWR4PWlkeCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3Rz eXNvaWQKICAgICAgICAgKQogCiAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCi0KICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGlm IGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQo IiIiQ291bGQgbm90IGZpbmQgdGhlIGluZGV4IGluIHRoZSB0YWJsZS4iIiIpKQorICAgICAgICAg ICAgcmV0dXJuIEZhbHNlLCBnb25lKAorICAgICAgICAgICAgICAgIGdldHRleHQoIiIiQ291bGQg bm90IGZpbmQgdGhlIGluZGV4IGluIHRoZSB0YWJsZS4iIiIpKQogCiAgICAgICAgICMgTWFraW5n IGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCiAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sn cm93cyddWzBdKQpAQCAtNTA5LDEwICs1NDIsNyBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxk Tm9kZVZpZXcpOgogICAgICAgICBpZiBzZWxmLm1hbmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6CiAg ICAgICAgICAgICBkYXRhID0gaW5kZXhfdXRpbHMuZ2V0X2luY2x1ZGVfZGV0YWlscyhzZWxmLmNv bm4sIGlkeCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAg ICAgIHJlc3BvbnNlPWRhdGEsCi0gICAgICAgICAgICBzdGF0dXM9MjAwCi0gICAgICAgICkKKyAg ICAgICAgcmV0dXJuIFRydWUsIGRhdGEKIAogICAgIEBjaGVja19wcmVjb25kaXRpb24KICAgICBk ZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CkBAIC02MjAsNyArNjUw LDggQEAgY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCiAgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgotICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCBpZHg9Tm9uZSk6CisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCB0aWQsIGlkeD1Ob25lLAorICAgICAgICAgICAgICAgb25seV9zcWw9RmFsc2UpOgogICAgICAg ICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZXMgZXhpc3RpbmcgdGhlIHNj aGVtYSBvYmplY3QKIApAQCAtNjc2LDYgKzcwNyw5IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hp bGROb2RlVmlldyk6CiAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdkZWxldGUuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNv bm49c2VsZi5jb25uLCBjYXNjYWRlPWNhc2NhZGUKICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgICAgICBpZiBvbmx5X3NxbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNRTAog ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNR TCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKQEAgLTc5Miw2ICs4MjYs MzIgQEAgY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKIAogICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGdldF9zcWxfZnJvbV9pbmRleF9kaWZmKHNlbGYsIHNpZCwgZGlkLCBzY2lkLCB0 aWQsIGlkeCwgZGF0YT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZm X3NjaGVtYT1Ob25lLCBkcm9wX3JlcT1GYWxzZSk6CisKKyAgICAgICAgdG1wX2lkeCA9IGlkeAor ICAgICAgICBzY2hlbWEgPSAnJworICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgc2NoZW1h ID0gc2VsZi5zY2hlbWEKKyAgICAgICAgZWxpZiBkaWZmX3NjaGVtYToKKyAgICAgICAgICAgIHNj aGVtYSA9IGRpZmZfc2NoZW1hCisKKyAgICAgICAgc3FsID0gaW5kZXhfdXRpbHMuZ2V0X3JldmVy c2VfZW5naW5lZXJlZF9zcWwoCisgICAgICAgICAgICBzZWxmLmNvbm4sIHNjaGVtYSwKKyAgICAg ICAgICAgIHNlbGYudGFibGUsIGRpZCwgdGlkLCBpZHgsCisgICAgICAgICAgICBzZWxmLmRhdGxh c3RzeXNvaWQsCisgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoPU5vbmUsIHdpdGhfaGVhZGVyPUZh bHNlKQorCisgICAgICAgIGRyb3Bfc3FsID0gJycKKyAgICAgICAgaWYgZHJvcF9yZXE6CisgICAg ICAgICAgICBkcm9wX3NxbCA9ICdcbicgKyByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorCisgICAg ICAgIHJldHVybiBkcm9wX3NxbCArICdcblxuJyArIHNxbAorCiAgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg aWR4KToKICAgICAgICAgIiIiCkBAIC05MTQsNSArOTc0LDEyOSBAQCBjbGFzcyBJbmRleGVzVmll dyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFy ZShzZWxmLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBvaWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlnbm9yZV9rZXlzPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBhbGwgdGhlIGluZGV4ZXMgZm9y CisgICAgICAgIHNwZWNpZmllZCBzY2hlbWEgaWQuCisKKyAgICAgICAgOnBhcmFtIHNpZDogU2Vy dmVyIElkCisgICAgICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIDpwYXJhbSBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisKKyAgICAgICAg cmVzID0gZGljdCgpCisKKyAgICAgICAgaWYgbm90IG9pZDoKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkKQor ICAgICAgICAgICAgc3RhdHVzLCBpbmRleGVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIGN1cnJlbnRf YXBwLmxvZ2dlci5lcnJvcihpbmRleGVzKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQor CisgICAgICAgICAgICBmb3Igcm93IGluIGluZGV4ZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICBzdGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGRpZCwgdGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93WydvaWQn XSkKKyAgICAgICAgICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGln bm9yZV9rZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiBzZWxmLmtleXNf dG9faWdub3JlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkYXRhOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtrZXldCisgICAgICAgICAg ICAgICAgICAgIHJlc1tyb3dbJ25hbWUnXV0gPSBkYXRhCisgICAgICAgIGVsc2U6CisgICAgICAg ICAgICBzdGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGRpZCwgdGlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dl ci5lcnJvcihkYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAg cmVzID0gZGF0YQorCisgICAgICAgIHJldHVybiByZXMKKworICAgIGRlZiBkZGxfY29tcGFyZShz ZWxmLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg Y29tcGFyZSBpbmRleCBwcm9wZXJ0aWVzIGFuZAorICAgICAgICAgcmV0dXJuIHRoZSBkaWZmZXJl bmNlIG9mIFNRTAorICAgICAgICAiIiIKKworICAgICAgICBzcmNfc2lkID0ga3dhcmdzLmdldCgn c291cmNlX3NpZCcpCisgICAgICAgIHNyY19kaWQgPSBrd2FyZ3MuZ2V0KCdzb3VyY2VfZGlkJykK KyAgICAgICAgc3JjX3NjaWQgPSBrd2FyZ3MuZ2V0KCdzb3VyY2Vfc2NpZCcpCisgICAgICAgIHNy Y190aWQgPSBrd2FyZ3MuZ2V0KCdzb3VyY2VfdGlkJykKKyAgICAgICAgc3JjX29pZCA9IGt3YXJn cy5nZXQoJ3NvdXJjZV9vaWQnKQorICAgICAgICB0YXJfc2lkID0ga3dhcmdzLmdldCgndGFyZ2V0 X3NpZCcpCisgICAgICAgIHRhcl9kaWQgPSBrd2FyZ3MuZ2V0KCd0YXJnZXRfZGlkJykKKyAgICAg ICAgdGFyX3NjaWQgPSBrd2FyZ3MuZ2V0KCd0YXJnZXRfc2NpZCcpCisgICAgICAgIHRhcl90aWQg PSBrd2FyZ3MuZ2V0KCd0YXJnZXRfdGlkJykKKyAgICAgICAgdGFyX29pZCA9IGt3YXJncy5nZXQo J3RhcmdldF9vaWQnKQorICAgICAgICBjb21wX3N0YXR1cyA9IGt3YXJncy5nZXQoJ2NvbXBfc3Rh dHVzJykKKworICAgICAgICBzb3VyY2UgPSAnJworICAgICAgICB0YXJnZXQgPSAnJworICAgICAg ICBkaWZmID0gJycKKworICAgICAgICBzdGF0dXMsIHRhcmdldF9zY2hlbWEgPSBzZWxmLmdldF9z Y2hlbWEodGFyX3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcl9kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJfc2NpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10YXJnZXRfc2NoZW1hKQorCisgICAgICAgIGlm IGNvbXBfc3RhdHVzID09IFNjaGVtYURpZmZNb2RlbC5DT01QQVJJU09OX1NUQVRVU1snc291cmNl X29ubHknXToKKyAgICAgICAgICAgIGRpZmYgPSBzZWxmLmdldF9zcWxfZnJvbV9pbmRleF9kaWZm KHNpZD1zcmNfc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGlkPXNyY19kaWQsIHNjaWQ9c3JjX3NjaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9c3JjX3RpZCwgaWR4PXNyY19vaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX3NjaGVtYT10 YXJnZXRfc2NoZW1hKQorCisgICAgICAgIGVsaWYgY29tcF9zdGF0dXMgPT0gU2NoZW1hRGlmZk1v ZGVsLkNPTVBBUklTT05fU1RBVFVTWyd0YXJnZXRfb25seSddOgorICAgICAgICAgICAgZGlmZiA9 IHNlbGYuZGVsZXRlKGdpZD0xLCBzaWQ9dGFyX3NpZCwgZGlkPXRhcl9kaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NpZD10YXJfc2NpZCwgdGlkPXRhcl90aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWR4PXRhcl9vaWQsIG9ubHlfc3FsPVRydWUpCisKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZmV0Y2hfb2JqZWN0c190b19j b21wYXJlKHNpZD1zcmNfc2lkLCBkaWQ9c3JjX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c3JjX3NjaWQsIHRpZD1zcmNfdGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkPXNy Y19vaWQpCisgICAgICAgICAgICB0YXJnZXQgPSBzZWxmLmZldGNoX29iamVjdHNfdG9fY29tcGFy ZShzaWQ9dGFyX3NpZCwgZGlkPXRhcl9kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXRhcl9zY2lkLCB0aWQ9dGFyX3RpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZD10YXJfb2lk KQorCisgICAgICAgICAgICBpZiBub3QgKHNvdXJjZSBvciB0YXJnZXQpOgorICAgICAgICAgICAg ICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIGRpZmZfZGljdCA9IGRpcmVjdG9yeV9kaWZm KAorICAgICAgICAgICAgICAgIHNvdXJjZSwgdGFyZ2V0LCBpZ25vcmVfa2V5cz1zZWxmLmtleXNf dG9faWdub3JlLAorICAgICAgICAgICAgICAgIGRpZmZlcmVuY2U9e30KKyAgICAgICAgICAgICkK KworICAgICAgICAgICAgcmVxdWlyZWRfY3JlYXRlX2tleXMgPSBbJ2NvbHVtbnMnXQorICAgICAg ICAgICAgY3JlYXRlX3JlcSA9IEZhbHNlCisKKyAgICAgICAgICAgIGZvciBrZXkgaW4gcmVxdWly ZWRfY3JlYXRlX2tleXM6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIGRpZmZfZGljdDoKKyAg ICAgICAgICAgICAgICAgICAgY3JlYXRlX3JlcSA9IFRydWUKKworICAgICAgICAgICAgaWYgY3Jl YXRlX3JlcToKKyAgICAgICAgICAgICAgICBkaWZmID0gc2VsZi5nZXRfc3FsX2Zyb21faW5kZXhf ZGlmZihzaWQ9c3JjX3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkaWQ9c3JjX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNyY19zY2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1zcmNfdGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeD1zcmNfb2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZf c2NoZW1hPXRhcmdldF9zY2hlbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZHJvcF9yZXE9VHJ1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgZGlmZiA9IHNlbGYuZ2V0X3NxbF9mcm9tX2luZGV4X2RpZmYoc2lkPXRhcl9z aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGlkPXRhcl9kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NpZD10YXJfc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGFyX3RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHg9dGFyX29pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRpZmZfZGljdCkKKwor ICAgICAgICByZXR1cm4gZGlmZgorCiAKK1NjaGVtYURpZmZSZWdpc3RyeSgnaW5kZXgnLCBJbmRl eGVzVmlldywgJ3RhYmxlJykKIEluZGV4ZXNWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJp bnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy91dGlscy5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9p bmRleGVzL3V0aWxzLnB5CmluZGV4IDQ0NTM0YWM2ZS4uZWI5MDAxZjBhIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvaW5kZXhlcy91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy91dGlscy5w eQpAQCAtMjYsNyArMjYsNyBAQCBkZWYgZ2V0X3RlbXBsYXRlX3BhdGgoZik6CiAgICAgZGVmIHdy YXAoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBob2xkIHRo ZSBjb25uZWN0aW9uIG9iamVjdAogICAgICAgICBjb25uX29iaiA9IGFyZ3NbMF0KLSAgICAgICAg aWYgJ3RlbXBsYXRlX3BhdGgnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgIGlmICd0ZW1wbGF0ZV9w YXRoJyBub3QgaW4ga3dhcmdzIG9yIGt3YXJnc1sndGVtcGxhdGVfcGF0aCddIGlzIE5vbmU6CiAg ICAgICAgICAgICBrd2FyZ3NbJ3RlbXBsYXRlX3BhdGgnXSA9IFwKICAgICAgICAgICAgICAgICAn aW5kZXhlcy9zcWwvI3swfSMnLmZvcm1hdChjb25uX29iai5tYW5hZ2VyLnZlcnNpb24pCiAKQEAg LTIyOSw3ICsyMjksNyBAQCBkZWYgZ2V0X3NxbChjb25uLCBkYXRhLCBkaWQsIHRpZCwgaWR4LCBk YXRsYXN0c3lzb2lkLAogQGdldF90ZW1wbGF0ZV9wYXRoCiBkZWYgZ2V0X3JldmVyc2VfZW5naW5l ZXJlZF9zcWwoY29ubiwgc2NoZW1hLCB0YWJsZSwgZGlkLCB0aWQsIGlkeCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGVtcGxhdGVfcGF0aD1Ob25lLCB3aXRoX2hlYWRlcj1UcnVlKToKICAgICAiIiIKICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHJldmVyc2UgZW5naW5lZXJlZCBzcWwgZm9yIHNw ZWNpZmllZCB0cmlnZ2VyLgogCkBAIC0yNDAsNiArMjQwLDggQEAgZGVmIGdldF9yZXZlcnNlX2Vu Z2luZWVyZWRfc3FsKGNvbm4sIHNjaGVtYSwgdGFibGUsIGRpZCwgdGlkLCBpZHgsCiAgICAgOnBh cmFtIGlkeDogSW5kZXggSUQKICAgICA6cGFyYW0gZGF0bGFzdHN5c29pZDoKICAgICA6cGFyYW0g dGVtcGxhdGVfcGF0aDogT3B0aW9uYWwgdGVtcGxhdGUgcGF0aAorICAgIDpwYXJhbSB3aXRoX2hl YWRlcjogT3B0aW9uYWwgcGFyYW1ldGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBTUUwgd2lsbCBi ZQorICAgICByZXR1cm5lZCB3aXRoIGhlYWRlciBvciBub3QKICAgICA6cmV0dXJuOgogICAgICIi IgogICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLApAQCAtMjY3LDExICsyNjksMTIgQEAgZGVmIGdldF9yZXZlcnNlX2Vu Z2luZWVyZWRfc3FsKGNvbm4sIHNjaGVtYSwgdGFibGUsIGRpZCwgdGlkLCBpZHgsCiAKICAgICBT UUwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGRhdGEsIGRpZCwgdGlkLCBOb25lLCBkYXRsYXN0c3lz b2lkKQogCi0gICAgc3FsX2hlYWRlciA9IHUiLS0gSW5kZXg6IHswfVxuXG4tLSAiLmZvcm1hdChk YXRhWyduYW1lJ10pCisgICAgaWYgd2l0aF9oZWFkZXI6CisgICAgICAgIHNxbF9oZWFkZXIgPSB1 Ii0tIEluZGV4OiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQogCi0gICAgc3FsX2hl YWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdkZWxldGUu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1jb25uKQorICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb dGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1jb25uKQogCi0gICAgU1FMID0gc3FsX2hlYWRl ciArICdcblxuJyArIFNRTAorICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgU1FM CiAKICAgICByZXR1cm4gU1FMCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2lu aXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL19faW5pdF9fLnB5CmluZGV4IGFhNjY5NGEz OS4uNDQzOGM4OWRmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2luaXRfXy5w eQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2luaXRfXy5weQpAQCAtMjQsNiArMjQsMTEg QEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVN b2R1bGUKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2Us IHByZWNvbmRpdGlvbl9yZXF1aXJlZAogZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJ VkVSCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE1vZHVsZQorZnJv bSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLm5vZGVfcmVnaXN0cnkgaW1wb3J0IFNjaGVtYURp ZmZSZWdpc3RyeQorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLmRpcmVjdG9yeV9jb21w YXJlIGltcG9ydCBjb21wYXJlX2RpY3Rpb25hcmllcyxcCisgICAgZGlyZWN0b3J5X2RpZmYKK2Zy b20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5tb2RlbCBpbXBvcnQgU2NoZW1hRGlmZk1vZGVs Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQgU2NoZW1hRGlm Zk9iamVjdENvbXBhcmUKIAogCiBkZWYgYmFja2VuZF9zdXBwb3J0ZWQobW9kdWxlLCBtYW5hZ2Vy LCAqKmt3YXJncyk6CkBAIC0xNTIsNyArMTU3LDggQEAgY2xhc3MgUGFydGl0aW9uc01vZHVsZShD b2xsZWN0aW9uTm9kZU1vZHVsZSk6CiBibHVlcHJpbnQgPSBQYXJ0aXRpb25zTW9kdWxlKF9fbmFt ZV9fKQogCiAKLWNsYXNzIFBhcnRpdGlvbnNWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVh ZGVyLCBWYWN1dW1TZXR0aW5ncyk6CitjbGFzcyBQYXJ0aXRpb25zVmlldyhCYXNlVGFibGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICBT Y2hlbWFEaWZmT2JqZWN0Q29tcGFyZSk6CiAgICAgIiIiCiAgICAgVGhpcyBjbGFzcyBpcyByZXNw b25zaWJsZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9yIFBhcnRpdGlvbiBub2RlCiAKQEAgLTIw MCw2ICsyMDYsMTAgQEAgY2xhc3MgUGFydGl0aW9uc1ZpZXcoQmFzZVRhYmxlVmlldywgRGF0YVR5 cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAgIH0pCiAKKyAgICAjIFNjaGVtYSBEaWZm OiBLZXlzIHRvIGlnbm9yZSB3aGlsZSBjb21wYXJpbmcKKyAgICBrZXlzX3RvX2lnbm9yZSA9IFsn b2lkJywgJ3NjaGVtYScsICd2YWN1dW1fdGFibGUnLAorICAgICAgICAgICAgICAgICAgICAgICd2 YWN1dW1fdG9hc3QnLCAnZWRpdF90eXBlcyddCisKICAgICBkZWYgY2hpbGRyZW4oc2VsZiwgKipr d2FyZ3MpOgogICAgICAgICAiIiJCdWlsZCBhIGxpc3Qgb2YgdHJlZXZpZXcgbm9kZXMgZnJvbSB0 aGUgY2hpbGQgbm9kZXMuIiIiCiAKQEAgLTM2Nyw2ICszNzcsNjMgQEAgY2xhc3MgUGFydGl0aW9u c1ZpZXcoQmFzZVRhYmxlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAg ICAgICAgcmV0dXJuIHN1cGVyKFBhcnRpdGlvbnNWaWV3LCBzZWxmKS5wcm9wZXJ0aWVzKAogICAg ICAgICAgICAgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcHRpZCwgcmVzKQogCisgICAgQEJhc2VUYWJs ZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFy ZShzZWxmLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBwdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHRoZSBsaXN0IG9mIGFsbCB0aGUgdGFibGVz IGZvcgorICAgICAgICBzcGVjaWZpZWQgc2NoZW1hIGlkLgorCisgICAgICAgIDpwYXJhbSBzaWQ6 IFNlcnZlciBJZAorICAgICAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICA6cGFy YW0gc2NpZDogU2NoZW1hIElkCisgICAgICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElkCisgICAgICAg IDpwYXJhbSBwdGlmOiBQYXJ0aXRpb24gdGFibGUgSWQKKyAgICAgICAgOnJldHVybjoKKyAgICAg ICAgIiIiCisgICAgICAgIHJlcyA9IHt9CisKKyAgICAgICAgaWYgcHRpZDoKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQs IHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dGlkPXB0aWQsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICAgICAg c3RhdHVzLCByZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmVycm9y KHJlc3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgcmVz ID0gc3VwZXIoUGFydGl0aW9uc1ZpZXcsIHNlbGYpLnByb3BlcnRpZXMoCisgICAgICAgICAgICAg ICAgMCwgc2lkLCBkaWQsIHNjaWQsIHB0aWQsIHJlc3VsdCkKKworICAgICAgICBlbHNlOgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3Rh dHVzLCBwYXJ0aXRpb25zID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5l cnJvcihwYXJ0aXRpb25zKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg ICAgICBmb3Igcm93IGluIHBhcnRpdGlvbnNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1k aWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHRpZD1yb3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgICAgICBz dGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmVycm9yKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAg ICAgICAgICAgICAgICBkYXRhID0gc3VwZXIoUGFydGl0aW9uc1ZpZXcsIHNlbGYpLnByb3BlcnRp ZXMoCisgICAgICAgICAgICAgICAgICAgIDAsIHNpZCwgZGlkLCBzY2lkLCByb3dbJ29pZCddLCBy ZXN1bHQsIEZhbHNlCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlc1tyb3db J25hbWUnXV0gPSBkYXRhCisKKyAgICAgICAgICAgIHJldHVybiByZXMKKwogICAgIEBCYXNlVGFi bGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkLCBwdGlkKToKICAgICAgICAgIiIiCkBAIC00MDAsNiArNDY3LDYyIEBAIGNs YXNzIFBhcnRpdGlvbnNWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1T ZXR0aW5ncyk6CiAgICAgICAgIHJldHVybiBCYXNlVGFibGVWaWV3LmdldF9yZXZlcnNlX2VuZ2lu ZWVyZWRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgcHRpZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9zcWwsIGRhdGEpCiAKKyAgICBA QmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3NxbF9mcm9tX2Rp ZmYoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIGNyZWF0ZSBzcWwgb24gdGhlIGJhc2lzIHRoZSBkaWZmZXJlbmNlIG9mIDIgdGFibGVzCisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0gZGljdCgpCisgICAgICAgIHJlcyA9IE5vbmUKKyAg ICAgICAgc2lkID0ga3dhcmdzWydzaWQnXQorICAgICAgICBkaWQgPSBrd2FyZ3NbJ2RpZCddCisg ICAgICAgIHNjaWQgPSBrd2FyZ3NbJ3NjaWQnXQorICAgICAgICB0aWQgPSBrd2FyZ3NbJ3RpZCdd CisgICAgICAgIHB0aWQgPSBrd2FyZ3NbJ3B0aWQnXQorICAgICAgICBkaWZmX2RhdGEgPSBrd2Fy Z3NbJ2RpZmZfZGF0YSddIGlmICdkaWZmX2RhdGEnIGluIGt3YXJncyBlbHNlIE5vbmUKKyAgICAg ICAganNvbl9yZXNwID0ga3dhcmdzWydqc29uX3Jlc3AnXSBpZiAnanNvbl9yZXNwJyBpbiBrd2Fy Z3MgZWxzZSBUcnVlCisgICAgICAgIGRpZmZfc2NoZW1hID0ga3dhcmdzWydkaWZmX3NjaGVtYSdd IGlmICdkaWZmX3NjaGVtYScgaW4ga3dhcmdzIGVsc2VcCisgICAgICAgICAgICBOb25lCisKKyAg ICAgICAgaWYgZGlmZl9kYXRhOgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aWQ9cHRpZCwgZGF0bGFzdHN5c29pZD1z ZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRfc3FsKGRpZCwgc2NpZCwgcHRpZCwgZGlmZl9kYXRh LCByZXMpCisgICAgICAgICAgICBTUUwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgU1FMKQor ICAgICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicpCisgICAgICAgICAgICByZXR1cm4gU1FM CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYWluX3NxbCA9IFtdCisKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQs IHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dGlkPXB0aWQsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoK KyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAg ICAiVGhlIHNwZWNpZmllZCBwYXJ0aXRpb25lZCB0YWJsZSBjb3VsZCBub3QgYmUgZm91bmQuIikp CisKKyAgICAgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBpZiBk aWZmX3NjaGVtYToKKyAgICAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IGRpZmZfc2NoZW1h CisgICAgICAgICAgICAgICAgZGF0YVsncGFyZW50X3NjaGVtYSddID0gZGlmZl9zY2hlbWEKKwor ICAgICAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9z cWwoc2VsZiwgZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NpZCwgcHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fc3FsLCBkYXRhLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFs c2UpCisKICAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZGV0 YWNoKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZCk6CiAgICAgICAgICIiIgpA QCAtNjAxLDcgKzcyNCw3IEBAIGNsYXNzIFBhcnRpdGlvbnNWaWV3KEJhc2VUYWJsZVZpZXcsIERh dGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAogICAgIEBCYXNlVGFibGVWaWV3LmNo ZWNrX3ByZWNvbmRpdGlvbgotICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCBwdGlkPU5vbmUpOgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdGlkLCBwdGlkPU5vbmUsIG9ubHlfc3FsPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgdGhlIHRhYmxlIG9iamVjdAogCkBAIC02NTYs NSArNzc5LDYxIEBAIGNsYXNzIFBhcnRpdGlvbnNWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBl UmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQogCisgICAgZGVmIGRkbF9jb21wYXJlKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjb21wYXJlIGluZGV4IHByb3BlcnRpZXMgYW5kCisg ICAgICAgIHJldHVybiB0aGUgZGlmZmVyZW5jZSBvZiBTUUwKKyAgICAgICAgIiIiCisKKyAgICAg ICAgc3JjX3NpZCA9IGt3YXJncy5nZXQoJ3NvdXJjZV9zaWQnKQorICAgICAgICBzcmNfZGlkID0g a3dhcmdzLmdldCgnc291cmNlX2RpZCcpCisgICAgICAgIHNyY19zY2lkID0ga3dhcmdzLmdldCgn c291cmNlX3NjaWQnKQorICAgICAgICBzcmNfdGlkID0ga3dhcmdzLmdldCgnc291cmNlX3RpZCcp CisgICAgICAgIHNyY19vaWQgPSBrd2FyZ3MuZ2V0KCdzb3VyY2Vfb2lkJykKKyAgICAgICAgdGFy X3NpZCA9IGt3YXJncy5nZXQoJ3RhcmdldF9zaWQnKQorICAgICAgICB0YXJfZGlkID0ga3dhcmdz LmdldCgndGFyZ2V0X2RpZCcpCisgICAgICAgIHRhcl9zY2lkID0ga3dhcmdzLmdldCgndGFyZ2V0 X3NjaWQnKQorICAgICAgICB0YXJfdGlkID0ga3dhcmdzLmdldCgndGFyZ2V0X3RpZCcpCisgICAg ICAgIHRhcl9vaWQgPSBrd2FyZ3MuZ2V0KCd0YXJnZXRfb2lkJykKKyAgICAgICAgY29tcF9zdGF0 dXMgPSBrd2FyZ3MuZ2V0KCdjb21wX3N0YXR1cycpCisKKyAgICAgICAgc291cmNlID0gJycKKyAg ICAgICAgdGFyZ2V0ID0gJycKKyAgICAgICAgZGlmZiA9ICcnCisKKyAgICAgICAgc3RhdHVzLCB0 YXJnZXRfc2NoZW1hID0gc2VsZi5nZXRfc2NoZW1hX2Zvcl9zY2hlbWFfZGlmZih0YXJfc2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcl9kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyX3NjaWQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXRhcmdldF9zY2hlbWEpCisKKyAgICAgICAgaWYgY29tcF9zdGF0dXMgPT0gU2NoZW1hRGlm Zk1vZGVsLkNPTVBBUklTT05fU1RBVFVTWydzb3VyY2Vfb25seSddOgorICAgICAgICAgICAgZGlm ZiA9IHNlbGYuZ2V0X3NxbF9mcm9tX2RpZmYoc2lkPXNyY19zaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9c3JjX2RpZCwgc2NpZD1zcmNfc2NpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1zcmNfdGlkLCBwdGlk PXNyY19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZm X3NjaGVtYT10YXJnZXRfc2NoZW1hKQorCisgICAgICAgIGVsaWYgY29tcF9zdGF0dXMgPT0gU2No ZW1hRGlmZk1vZGVsLkNPTVBBUklTT05fU1RBVFVTWyd0YXJnZXRfb25seSddOgorICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRp ZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0aWQ9cHRpZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg IGRpZD10YXJfZGlkLCBzY2lkPXRhcl9zY2lkLCB0aWQ9dGFyX29pZCwKKyAgICAgICAgICAgICAg ICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAgICAgICAgKQorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAg ICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICBzZWxmLmNtZCA9ICdkZWxldGUnCisgICAg ICAgICAgICAgICAgZGlmZiA9IHN1cGVyKFBhcnRpdGlvbnNWaWV3LCBzZWxmKS5nZXRfZGVsZXRl X3NxbChyZXMpCisgICAgICAgICAgICAgICAgc2VsZi5jbWQgPSBOb25lCisKKyAgICAgICAgcmV0 dXJuIGRpZmYKKwogCitTY2hlbWFEaWZmUmVnaXN0cnkoJ3BhcnRpdGlvbicsIFBhcnRpdGlvbnNW aWV3LCAndGFibGUnKQogUGFydGl0aW9uc1ZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmlu dCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9y dWxlcy9fX2luaXRfXy5weQppbmRleCAwNzA4NzVlOGYuLjQ3OWVkZjc4ZSAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3J1bGVzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9fX2luaXRf Xy5weQpAQCAtMTMsNyArMTMsOCBAQCBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCiBmcm9tIGZ1 bmN0b29scyBpbXBvcnQgd3JhcHMKIAogaW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMgYXMgc2NoZW1hcwotZnJvbSBmbGFzayBpbXBv cnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QsIGpz b25pZnksXAorICAgIGN1cnJlbnRfYXBwCiBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRl eHQKIGZyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2Rl TW9kdWxlCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJh c2VzLnNjaGVtYXMudXRpbHMgaW1wb3J0IFwKQEAgLTIzLDcgKzI0LDExIEBAIGZyb20gcGdhZG1p bi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9l cnJvciwgXAogICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQogZnJvbSBw Z2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgogZnJvbSBjb25maWcgaW1wb3J0 IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuY29tcGlsZV90ZW1wbGF0ZV9u YW1lIGltcG9ydCBjb21waWxlX3RlbXBsYXRlX3BhdGgKIGZyb20gcGdhZG1pbi51dGlscyBpbXBv cnQgSVNfUFkyCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9yZWdpc3RyeSBp bXBvcnQgU2NoZW1hRGlmZlJlZ2lzdHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYu Y29tcGFyZSBpbXBvcnQgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUKKwogIyBJZiB3ZSBhcmUgaW4g UHl0aG9uMwogaWYgbm90IElTX1BZMjoKICAgICB1bmljb2RlID0gc3RyCkBAIC0xMzQsNyArMTM5 LDcgQEAgY2xhc3MgUnVsZU1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CiBibHVlcHJpbnQg PSBSdWxlTW9kdWxlKF9fbmFtZV9fKQogCiAKLWNsYXNzIFJ1bGVWaWV3KFBHQ2hpbGROb2RlVmll dyk6CitjbGFzcyBSdWxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIFNjaGVtYURpZmZPYmplY3RDb21w YXJlKToKICAgICAiIiIKICAgICBUaGlzIGlzIGEgY2xhc3MgZm9yIHJ1bGUgbm9kZSB3aGljaCBp bmhlcml0cyB0aGUKICAgICBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGZyb20gUEdDaGlsZE5vZGVW aWV3IGNsYXNzIGFuZCBkZWZpbmUKQEAgLTE3OCw2ICsxODMsOSBAQCBjbGFzcyBSdWxlVmlldyhQ R0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAnY29uZmlncyc6IFt7J2dldCc6ICdjb25maWdzJ31d CiAgICAgfSkKIAorICAgICMgU2NoZW1hIERpZmY6IEtleXMgdG8gaWdub3JlIHdoaWxlIGNvbXBh cmluZworICAgIGtleXNfdG9faWdub3JlID0gWydvaWQnLCAnc2NoZW1hJywgJ2RlZmluaXRpb24n XQorCiAgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKICAgICAgICAgIiIiCiAgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVj ayB0aGUKQEAgLTE5Nyw2ICsyMDUsMTIgQEAgY2xhc3MgUnVsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgICAgIF1bJ2RhdGxhc3RzeXNvaWQnXSBpZiBzZWxmLm1hbmFnZXIuZGJfaW5m byBpcyBub3QgTm9uZSBhbmQgXAogICAgICAgICAgICAgICAgIGt3YXJnc1snZGlkJ10gaW4gc2Vs Zi5tYW5hZ2VyLmRiX2luZm8gZWxzZSAwCiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGgg PSAncnVsZXMvc3FsJworICAgICAgICAgICAgc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoID0gY29t cGlsZV90ZW1wbGF0ZV9wYXRoKAorICAgICAgICAgICAgICAgICd0YWJsZXMvc3FsJywKKyAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUsCisgICAgICAgICAgICAgICAgc2Vs Zi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgICkKKwogICAgICAgICAgICAgcmV0dXJuIGYo KmFyZ3MsICoqa3dhcmdzKQogCiAgICAgICAgIHJldHVybiB3cmFwCkBAIC0yNzgsNiArMjkyLDIx IEBAIGNsYXNzIFJ1bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICIiIgogICAgICAg ICBGZXRjaCB0aGUgcHJvcGVydGllcyBvZiBhbiBpbmRpdmlkdWFsIHJ1bGUgYW5kIHJlbmRlciBp biBwcm9wZXJ0aWVzIHRhYgogCisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIGRhdGEgPSBz ZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKHJpZCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBkYXRhCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAg ICAgICAgICByZXNwb25zZT1kYXRhLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAp CisKKyAgICBkZWYgX2ZldGNoX3Byb3BlcnRpZXMoc2VsZiwgcmlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0aGUgcHJvcGVydGllcyBvZiB0 aGUgc3BlY2lmaWVkIG9iamVjdAorICAgICAgICA6cGFyYW0gcmlkOgorICAgICAgICA6cmV0dXJu OgogICAgICAgICAiIiIKICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAog ICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10KQEAgLTI4 NSwxNSArMzE0LDEzIEBAIGNsYXNzIFJ1bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAKICAgICAgICAgaWYg bm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAg ICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIiIiQ291bGQgbm90IGZpbmQgdGhlIHJ1bGUg aW4gdGhlIHRhYmxlLiIiIikpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdvbmUoCisgICAg ICAgICAgICAgICAgZ2V0dGV4dCgiIiJDb3VsZCBub3QgZmluZCB0aGUgcnVsZSBpbiB0aGUgdGFi bGUuIiIiKSkKIAotICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJl c3BvbnNlPXBhcnNlX3J1bGVfZGVmaW5pdGlvbihyZXMpLAotICAgICAgICAgICAgc3RhdHVzPTIw MAotICAgICAgICApCisgICAgICAgIHJldHVybiBUcnVlLCBwYXJzZV9ydWxlX2RlZmluaXRpb24o cmVzKQogCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKQEAgLTM2OSw3ICszOTYsNyBAQCBjbGFzcyBSdWxlVmll dyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCi0gICAgZGVm IGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHJpZD1Ob25lKToKKyAgICBk ZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcmlkPU5vbmUsIG9ubHlf c3FsPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9w IGEgcnVsZSBvYmplY3QKICAgICAgICAgIiIiCkBAIC00MTIsNiArNDM5LDggQEAgY2xhc3MgUnVs ZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgbnNwbmFtZT1yc2V0 Wyduc3BuYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgIGNhc2NhZGU9Y2FzY2FkZQogICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBvbmx5X3NxbDoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIFNRTAogICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKFNRTCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKQEAgLTQ4OSw2ICs1MTgsNDQgQEAgY2xhc3MgUnVsZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToK ICAgICAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwgZGF0 YT1kYXRhKQogICAgICAgICByZXR1cm4gU1FMLCBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRh dGEgZWxzZSBvbGRfZGF0YVsnbmFtZSddCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGdldF9zcWxfZnJvbV9kaWZmKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgb2lk LCBkYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc2NoZW1hPU5vbmUs IGRyb3Bfc3FsPUZhbHNlKToKKworICAgICAgICBpZiBkcm9wX3NxbDoKKyAgICAgICAgICAgIFNR TCA9IHNlbGYuZGVsZXRlKGdpZD1naWQsIHNpZD1zaWQsIGRpZD1kaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByaWQ9b2lkLCBvbmx5X3NxbD1UcnVlKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgIFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgcmlkPW9pZCkKKyAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAw OgorICAgICAgICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgICAgICAgICBnZXR0 ZXh0KCIiIkNvdWxkIG5vdCBmaW5kIHRoZSBydWxlIGluIHRoZSB0YWJsZS4iIiIpCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgcmVzX2RhdGEgPSBwYXJzZV9ydWxlX2RlZmluaXRpb24o cmVzKQorCisgICAgICAgICAgICBTUUwgPSAnJworCisgICAgICAgICAgICBpZiBkYXRhOgorICAg ICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzX2RhdGEKKyAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEs IG9fZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgaWYgZGlmZl9zY2hlbWE6CisgICAgICAgICAgICAgICAgICAgIHJlc19k YXRhWydzY2hlbWEnXSA9IGRpZmZfc2NoZW1hCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRl X3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlc19kYXRh LCBkaXNwbGF5X2NvbW1lbnRzPVRydWUpCisKKyAgICAgICAgcmV0dXJuIFNRTAorCiAgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZCwgcmlkKToKICAgICAgICAgIiIiCkBAIC01MjcsNSArNTk0LDQ3IEBAIGNsYXNz IFJ1bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAg ICAgICkKIAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZmV0Y2hfb2JqZWN0c190 b19jb21wYXJlKHNlbGYsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIG9pZD1Ob25lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlX2tleXM9RmFsc2UpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHRoZSBsaXN0IG9mIGFsbCB0aGUgcnVs ZXMgZm9yCisgICAgICAgIHNwZWNpZmllZCBzY2hlbWEgaWQuCisKKyAgICAgICAgOnBhcmFtIHNp ZDogU2VydmVyIElkCisgICAgICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIDpw YXJhbSBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgOnBhcmFtIHRpZDogVGFibGUgSWQKKyAgICAg ICAgOnJldHVybjoKKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVzID0ge30KKyAgICAgICAgaWYg b2lkOgorICAgICAgICAgICAgc3RhdHVzLCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhv aWQpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIGN1cnJlbnRf YXBwLmxvZ2dlci5lcnJvcihkYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg ICAgICAgICAgICByZXMgPSBkYXRhCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorICAgICAgICAgICAgc3RhdHVzLCBy dWxlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IocnVsZXMp CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZvciByb3cgaW4g cnVsZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICBzdGF0dXMsIGRhdGEgPSBzZWxmLl9mZXRj aF9wcm9wZXJ0aWVzKHJvd1snb2lkJ10pCisgICAgICAgICAgICAgICAgaWYgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICBpZiBpZ25vcmVfa2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAg IGZvciBrZXkgaW4gc2VsZi5rZXlzX3RvX2lnbm9yZToKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBrZXkgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs IGRhdGFba2V5XQorICAgICAgICAgICAgICAgICAgICByZXNbcm93WyduYW1lJ11dID0gZGF0YQor ICAgICAgICByZXR1cm4gcmVzCisKIAorU2NoZW1hRGlmZlJlZ2lzdHJ5KCdydWxlJywgUnVsZVZp ZXcsICd0YWJsZScpCiBSdWxlVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3NjaGVtYV9kaWZmX3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3NjaGVt YV9kaWZmX3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uN2E5 Y2ZmNmZhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3NjaGVtYV9kaWZmX3V0aWxzLnB5 CkBAIC0wLDAgKzEsNTA3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiIgSW1wbGVt ZW50cyBVdGlsaXR5IGNsYXNzIGZvciBUYWJsZSBhbmQgUGFydGl0aW9uZWQgVGFibGUuICIiIgor CitpbXBvcnQgY29weQorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUKK2Zyb20g cGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9y dCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLmRpcmVj dG9yeV9jb21wYXJlIGltcG9ydCBjb21wYXJlX2RpY3Rpb25hcmllcyxcCisgICAgZGlyZWN0b3J5 X2RpZmYKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5tb2RlbCBpbXBvcnQgU2NoZW1h RGlmZk1vZGVsCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuY29tcGFyZSBpbXBvcnQg U2NoZW1hRGlmZk9iamVjdENvbXBhcmUKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5u b2RlX3JlZ2lzdHJ5IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0cnkKKworCitjbGFzcyBTY2hlbWFE aWZmVGFibGVDb21wYXJlKFNjaGVtYURpZmZPYmplY3RDb21wYXJlKToKKworICAgIGtleXNfdG9f aWdub3JlID0gWydvaWQnLCAnc2NoZW1hJywgJ3ZhY3V1bV90YWJsZScsCisgICAgICAgICAgICAg ICAgICAgICAgJ3ZhY3V1bV90b2FzdCcsICdlZGl0X3R5cGVzJywgJ2F0dG51bScsICdjb2xfdHlw ZScsCisgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXMnLCAncmVsdHVwbGVzJywgJ3Jv d3NfY250J10KKworICAgIGtleXNfdG9faWdub3JlX2RkbF9jb21wID0gWydvaWQnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdzY2hlbWEnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjb2x1bW5zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRp dF90eXBlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjbHVkZV9jb25zdHJhaW50JywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tfY29uc3RyYWludCcsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcmVpZ25fa2V5JywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncmVsdHVwbGVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAncm93c19jbnQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorCisgICAga2V5 c190b19yZW1vdmUgPSB7CisgICAgICAgICdjb2x1bW5zJzogWydyZWxuYW1lJywgJ25zcG5hbWUn LCAncGFyZW50X3RibCcsICdhdHRyZWxpZCcsICdhZHJlbGlkJ10sCisgICAgICAgICdwcmltYXJ5 X2tleSc6IFsnb2lkJ10sCisgICAgICAgICd1bmlxdWVfY29uc3RyYWludCc6IFsnb2lkJ10sCisg ICAgICAgICdjaGVja19jb25zdHJhaW50JzogWydvaWQnLCAnbnNwbmFtZSddLAorICAgICAgICAn Zm9yZWlnbl9rZXknOiBbJ29pZCcsICdma25zcCcsICdjb25mcmVsaWQnXSwKKyAgICAgICAgJ2V4 Y2x1ZGVfY29uc3RyYWludCc6IFsnb2lkJ10sCisgICAgICAgICdwYXJ0aXRpb25zJzogWydvaWQn XSwKKyAgICB9CisKKyAgICBrZXlzX3RvX3JlbW92ZV9kZGxfY29tcCA9IHsKKyAgICAgICAgJ2Nv bHVtbnMnOiBbJ3JlbG5hbWUnLCAnbnNwbmFtZScsICdwYXJlbnRfdGJsJywgJ2F0dHJlbGlkJywg J2FkcmVsaWQnXSwKKyAgICAgICAgJ2NoZWNrX2NvbnN0cmFpbnQnOiBbJ25zcG5hbWUnXSwKKyAg ICAgICAgJ2ZvcmVpZ25fa2V5JzogWydma25zcCcsICdjb25mcmVsaWQnXQorICAgIH0KKworICAg IGRlZiBjb21wYXJlKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byBjb21wYXJlIGFsbCB0aGUgdGFibGUgb2JqZWN0cworICAgICAg ICBmcm9tIHR3byBkaWZmZXJlbnQgc2NoZW1hcy4KKworICAgICAgICA6cmV0dXJuOiBDb21wYXJp c29uIERpY3Rpb25hcnkKKyAgICAgICAgIiIiCisgICAgICAgIHNyY19zaWQgPSBrd2FyZ3MuZ2V0 KCdzb3VyY2Vfc2lkJykKKyAgICAgICAgc3JjX2RpZCA9IGt3YXJncy5nZXQoJ3NvdXJjZV9kaWQn KQorICAgICAgICBzcmNfc2NpZCA9IGt3YXJncy5nZXQoJ3NvdXJjZV9zY2lkJykKKyAgICAgICAg dGFyX3NpZCA9IGt3YXJncy5nZXQoJ3RhcmdldF9zaWQnKQorICAgICAgICB0YXJfZGlkID0ga3dh cmdzLmdldCgndGFyZ2V0X2RpZCcpCisgICAgICAgIHRhcl9zY2lkID0ga3dhcmdzLmdldCgndGFy Z2V0X3NjaWQnKQorICAgICAgICBzdWJfbW9kdWxlcyA9IFsnaW5kZXgnLCAncnVsZScsICd0cmln Z2VyJ10KKworICAgICAgICBzb3VyY2VfdGFibGVzID0gc2VsZi5mZXRjaF90YWJsZXMoc2lkPXNy Y19zaWQsIGRpZD1zcmNfZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NpZD1zcmNfc2NpZCkKKworICAgICAgICB0YXJnZXRfdGFibGVzID0gc2VsZi5mZXRj aF90YWJsZXMoc2lkPXRhcl9zaWQsIGRpZD10YXJfZGlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NpZD10YXJfc2NpZCkKKworICAgICAgICBpZiBzZWxmLm1h bmFnZXIudmVyc2lvbiA+PSAxMjAwMDA6CisgICAgICAgICAgICBzdWJfbW9kdWxlcy5hcHBlbmQo J2NvbXBvdW5kX3RyaWdnZXInKQorCisgICAgICAgICMgSWYgYm90aCB0aGUgZGljdCBoYXZlIG5v IGl0ZW1zIHRoZW4gcmV0dXJuIE5vbmUuCisgICAgICAgIGlmIG5vdCAoc291cmNlX3RhYmxlcyBv ciB0YXJnZXRfdGFibGVzKSBvciAoCisgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV90YWJsZXMp IDw9IDAgYW5kIGxlbih0YXJnZXRfdGFibGVzKSA8PSAwKToKKyAgICAgICAgICAgIHJldHVybiBO b25lCisKKyAgICAgICAgc3JjX3NlcnZlcl90eXBlLCB0YXJfc2VydmVyX3R5cGUgPSBzZWxmLmdl dF9zZXJ2ZXJfdHlwZShzcmNfc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9zaWQpCisgICAgICAgIGZvciBtb2R1 bGUgaW4gc3ViX21vZHVsZXM6CisKKyAgICAgICAgICAgIG1vZHVsZV92aWV3ID0gU2NoZW1hRGlm ZlJlZ2lzdHJ5LmdldF9ub2RlX3ZpZXcoCisgICAgICAgICAgICAgICAgbW9kdWxlKQorCisgICAg ICAgICAgICAjIEdldCBzdWIgbW9kdWxlIGRhdGEgZm9yIHNvdXJjZSB0YWJsZXMKKyAgICAgICAg ICAgIGlmIG1vZHVsZV92aWV3LmJsdWVwcmludC5zZXJ2ZXJfdHlwZSBpcyBOb25lIG9yIFwKKyAg ICAgICAgICAgICAgICAgICAgc3JjX3NlcnZlcl90eXBlIGluIG1vZHVsZV92aWV3LmJsdWVwcmlu dC5zZXJ2ZXJfdHlwZToKKyAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc291cmNlX3Rh Ymxlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtb2R1bGVfdmlldy5m ZXRjaF9vYmplY3RzX3RvX2NvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgICAgICBzaWQ9c3Jj X3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1zcmNfZGlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgc2NpZD1zcmNfc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpZD12 YWxbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgb2lkPU5vbmUsCisgICAgICAgICAg ICAgICAgICAgICAgICBpZ25vcmVfa2V5cz1UcnVlCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICAgICAgc291cmNlX3RhYmxlc1trZXldW21vZHVsZV0gPSBzb3VyY2UKKwor ICAgICAgICAgICAgIyBHZXQgc3ViIG1vZHVsZSBkYXRhIGZvciB0YXJnZXQgdGFibGVzCisgICAg ICAgICAgICBpZiBtb2R1bGVfdmlldy5ibHVlcHJpbnQuc2VydmVyX3R5cGUgaXMgTm9uZSBvciBc CisgICAgICAgICAgICAgICAgICAgIHRhcl9zZXJ2ZXJfdHlwZSBpbiBtb2R1bGVfdmlldy5ibHVl cHJpbnQuc2VydmVyX3R5cGU6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsIGluIHRhcmdl dF90YWJsZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gbW9kdWxlX3Zp ZXcuZmV0Y2hfb2JqZWN0c190b19jb21wYXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgc2lk PXRhcl9zaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9dGFyX2RpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9dGFyX3NjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICB0 aWQ9dmFsWydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9pZD1Ob25lLAorICAgICAg ICAgICAgICAgICAgICAgICAgaWdub3JlX2tleXM9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgICAgIHRhcmdldF90YWJsZXNba2V5XVttb2R1bGVdID0gdGFyZ2V0 CisKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVfZGljdGlvbmFyaWVzKHNvdXJjZV90YWJsZXMsIHRh cmdldF90YWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5v ZGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXBy aW50LkNPTExFQ1RJT05fTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmtleXNfdG9faWdub3JlKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRf c2VydmVyX3R5cGUoc3JjX2lkLCB0YXJfaWQpOgorICAgICAgICAiIiJHZXQgc2VydmVyIHR5cGVz IG9mIHNvdXJjZSBhbmQgdGFyZ2V0IHNlcnZlcnMuIiIiCisgICAgICAgIGRyaXZlciA9IGdldF9k cml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisgICAgICAgIHNyY19tYW5hZ2VyID0gZHJpdmVyLmNv bm5lY3Rpb25fbWFuYWdlcihzcmNfaWQpCisgICAgICAgIHRhcl9tYW5hZ2VyID0gZHJpdmVyLmNv bm5lY3Rpb25fbWFuYWdlcih0YXJfaWQpCisKKyAgICAgICAgcmV0dXJuIHNyY19tYW5hZ2VyLnNl cnZlcl90eXBlLCB0YXJfbWFuYWdlci5zZXJ2ZXJfdHlwZQorCisgICAgZGVmIGRkbF9jb21wYXJl KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBjb21wYXJlIHByb3BlcnRpZXMgb2YgMiB0YWJsZXMgYW5kCisgICAgICAgIHJldHVybiB0aGUg c291cmNlIERETCwgdGFyZ2V0IERETCBhbmQgRGlmZmVyZW5jZSBvZiB0aGVtLgorICAgICAgICAi IiIKKworICAgICAgICBzcmNfc2lkID0ga3dhcmdzLmdldCgnc291cmNlX3NpZCcpCisgICAgICAg IHNyY19kaWQgPSBrd2FyZ3MuZ2V0KCdzb3VyY2VfZGlkJykKKyAgICAgICAgc3JjX3NjaWQgPSBr d2FyZ3MuZ2V0KCdzb3VyY2Vfc2NpZCcpCisgICAgICAgIHNyY19vaWQgPSBrd2FyZ3MuZ2V0KCdz b3VyY2Vfb2lkJykKKyAgICAgICAgdGFyX3NpZCA9IGt3YXJncy5nZXQoJ3RhcmdldF9zaWQnKQor ICAgICAgICB0YXJfZGlkID0ga3dhcmdzLmdldCgndGFyZ2V0X2RpZCcpCisgICAgICAgIHRhcl9z Y2lkID0ga3dhcmdzLmdldCgndGFyZ2V0X3NjaWQnKQorICAgICAgICB0YXJfb2lkID0ga3dhcmdz LmdldCgndGFyZ2V0X29pZCcpCisgICAgICAgIGNvbXBfc3RhdHVzID0ga3dhcmdzLmdldCgnY29t cF9zdGF0dXMnKQorICAgICAgICBnZW5lcmF0ZV9zY3JpcHQgPSBGYWxzZQorCisgICAgICAgIGlm ICdnZW5lcmF0ZV9zY3JpcHQnIGluIGt3YXJncyBhbmQga3dhcmdzWydnZW5lcmF0ZV9zY3JpcHQn XToKKyAgICAgICAgICAgIGdlbmVyYXRlX3NjcmlwdCA9IFRydWUKKworICAgICAgICBzb3VyY2Ug PSAnJworICAgICAgICB0YXJnZXQgPSAnJworICAgICAgICBkaWZmID0gJycKKyAgICAgICAgaWdu b3JlX3N1Yl9tb2R1bGVzID0gWydjb2x1bW4nLCAnY29uc3RyYWludHMnXQorCisgICAgICAgIHNy Y19zZXJ2ZXJfdHlwZSwgdGFyX3NlcnZlcl90eXBlID0gc2VsZi5nZXRfc2VydmVyX3R5cGUoc3Jj X3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YXJfc2lkKQorCisgICAgICAgIHN0YXR1cywgdGFyZ2V0X3NjaGVtYSA9 IHNlbGYuZ2V0X3NjaGVtYSh0YXJfc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcl9zY2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9dGFyZ2V0X3NjaGVtYSkK KworICAgICAgICBpZiBjb21wX3N0YXR1cyA9PSBTY2hlbWFEaWZmTW9kZWwuQ09NUEFSSVNPTl9T VEFUVVNbJ3NvdXJjZV9vbmx5J106CisgICAgICAgICAgICBpZiBub3QgZ2VuZXJhdGVfc2NyaXB0 OgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X3NxbF9mcm9tX3RhYmxlX2RpZmYo c2lkPXNyY19zaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaWQ9c3JjX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c3JjX3NjaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9c3JjX29pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25fcmVzcD1G YWxzZSkKKyAgICAgICAgICAgIGRpZmYgPSBzZWxmLmdldF9zcWxfZnJvbV90YWJsZV9kaWZmKHNp ZD1zcmNfc2lkLCBkaWQ9c3JjX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9c3JjX3NjaWQsIHRpZD1zcmNfb2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9zY2hlbWE9dGFyZ2V0X3Nj aGVtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpz b25fcmVzcD1GYWxzZSkKKworICAgICAgICBlbGlmIGNvbXBfc3RhdHVzID09IFNjaGVtYURpZmZN b2RlbC5DT01QQVJJU09OX1NUQVRVU1sndGFyZ2V0X29ubHknXToKKyAgICAgICAgICAgIGlmIG5v dCBnZW5lcmF0ZV9zY3JpcHQ6CisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gc2VsZi5nZXRfc3Fs X2Zyb21fdGFibGVfZGlmZihzaWQ9dGFyX3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD10YXJfZGlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD10YXJfc2NpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 YXJfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAganNvbl9yZXNwPUZhbHNlKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkaWQ9dGFyX2RpZCwgc2NpZD10YXJf c2NpZCwgdGlkPXRhcl9vaWQsCisgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRh dGxhc3RzeXNvaWQKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAg ICAgICAgICAgICBkaWZmID0gc2VsZi5nZXRfZGVsZXRlX3NxbChyZXMpCisKKyAgICAgICAgZWxp ZiBjb21wX3N0YXR1cyA9PSBTY2hlbWFEaWZmTW9kZWwuQ09NUEFSSVNPTl9TVEFUVVNbJ2RpZmZl cmVudCddOgorICAgICAgICAgICAgc291cmNlID0gc2VsZi5mZXRjaF90YWJsZXMoCisgICAgICAg ICAgICAgICAgc2lkPXNyY19zaWQsIGRpZD1zcmNfZGlkLAorICAgICAgICAgICAgICAgIHNjaWQ9 c3JjX3NjaWQsIHRpZD1zcmNfb2lkLAorICAgICAgICAgICAgICAgIGtleXNfdG9fcmVtb3ZlPXNl bGYua2V5c190b19yZW1vdmVfZGRsX2NvbXAKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHRh cmdldCA9IHNlbGYuZmV0Y2hfdGFibGVzKAorICAgICAgICAgICAgICAgIHNpZD10YXJfc2lkLCBk aWQ9dGFyX2RpZCwKKyAgICAgICAgICAgICAgICBzY2lkPXRhcl9zY2lkLCB0aWQ9dGFyX29pZCwK KyAgICAgICAgICAgICAgICBrZXlzX3RvX3JlbW92ZT1zZWxmLmtleXNfdG9fcmVtb3ZlX2RkbF9j b21wCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9u IDwgMTAwMDAwOgorICAgICAgICAgICAgICAgIGlnbm9yZV9zdWJfbW9kdWxlcy5hcHBlbmQoJ3Bh cnRpdGlvbicpCisKKyAgICAgICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uIDwgMTIwMDAw OgorICAgICAgICAgICAgICAgIGlnbm9yZV9zdWJfbW9kdWxlcy5hcHBlbmQoJ2NvbXBvdW5kX3Ry aWdnZXInKQorCisgICAgICAgICAgICAjIEluIGNhc2Ugb2YgZXJyb3IgcmV0dXJuIE5vbmUKKyAg ICAgICAgICAgIGlmIG5vdCAoc291cmNlIG9yIHRhcmdldCk6CisgICAgICAgICAgICAgICAgcmV0 dXJuIE5vbmUKKworICAgICAgICAgICAgZGlmZl9kaWN0ID0gZGlyZWN0b3J5X2RpZmYoCisgICAg ICAgICAgICAgICAgc291cmNlLCB0YXJnZXQsIGlnbm9yZV9rZXlzPXNlbGYua2V5c190b19pZ25v cmVfZGRsX2NvbXAsCisgICAgICAgICAgICAgICAgZGlmZmVyZW5jZT17fQorICAgICAgICAgICAg KQorCisgICAgICAgICAgICAjIENvbHVtbiBjb21wYXJpc29uCisgICAgICAgICAgICBjb2xfZGlm ZiA9IHNlbGYudGFibGVfY29sX2RkbF9jb21wKHNvdXJjZSwgdGFyZ2V0KQorICAgICAgICAgICAg ZGlmZl9kaWN0LnVwZGF0ZShjb2xfZGlmZikKKworICAgICAgICAgICAgIyBDb25zdHJhaW50IGNv bXBhcmlzb24KKyAgICAgICAgICAgIHBrX2RpZmYgPSBzZWxmLmNvbnN0cmFpbnRfZGRsX2NvbXAo c291cmNlLCB0YXJnZXQpCisgICAgICAgICAgICBkaWZmX2RpY3QudXBkYXRlKHBrX2RpZmYpCisK KyAgICAgICAgICAgIGRpZmZfZGljdFsncmVsYWNsJ10gPSBzZWxmLnBhcmNlX2FjbChzb3VyY2Us IHRhcmdldCkKKworICAgICAgICAgICAgaWYgbm90IGdlbmVyYXRlX3NjcmlwdDoKKyAgICAgICAg ICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9zcWxfZnJvbV90YWJsZV9kaWZmKHNpZD1zcmNfc2lk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGlkPXNyY19kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzY2lkPXNyY19zY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXNyY19vaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uX3Jlc3A9RmFsc2UpCisgICAg ICAgICAgICAgICAgdGFyZ2V0ID0gc2VsZi5nZXRfc3FsX2Zyb21fdGFibGVfZGlmZihzaWQ9dGFy X3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD10YXJfZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NpZD10YXJfc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10YXJfb2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9yZXNwPUZhbHNlKQor ICAgICAgICAgICAgZGlmZiA9IHNlbGYuZ2V0X3NxbF9mcm9tX3RhYmxlX2RpZmYoc2lkPXRhcl9z aWQsIGRpZD10YXJfZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NpZD10YXJfc2NpZCwgdGlkPXRhcl9vaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX2RhdGE9ZGlmZl9kaWN0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9yZXNwPUZhbHNl KQorCisgICAgICAgICAgICBmb3IgbW9kdWxlIGluIHNlbGYuYmx1ZXByaW50LnN1Ym1vZHVsZXM6 CisgICAgICAgICAgICAgICAgaWYgbW9kdWxlLk5PREVfVFlQRSBub3QgaW4gaWdub3JlX3N1Yl9t b2R1bGVzOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdmlldyA9IFNjaGVtYURpZmZSZWdp c3RyeS5nZXRfbm9kZV92aWV3KAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLk5PREVf VFlQRSkKKworICAgICAgICAgICAgICAgICAgICBpZiBtb2R1bGVfdmlldy5ibHVlcHJpbnQuc2Vy dmVyX3R5cGUgYW5kICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2VydmVyX3R5 cGUgbm90IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3ZpZXcuYmx1ZXBy aW50LnNlcnZlcl90eXBlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9zZXJ2 ZXJfdHlwZSBub3QgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdmlldy5i bHVlcHJpbnQuc2VydmVyX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbW9kdWxlX3Zp ZXcuYmx1ZXByaW50LnNlcnZlcl90eXBlIGFuZCAoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNyY19zZXJ2ZXJfdHlwZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1 bGVfdmlldy5ibHVlcHJpbnQuc2VydmVyX3R5cGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcl9zZXJ2ZXJfdHlwZSBub3QgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbW9kdWxlX3ZpZXcuYmx1ZXByaW50LnNlcnZlcl90eXBlKSBvciAoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3JjX3NlcnZlcl90eXBlIG5vdCBpbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1vZHVsZV92aWV3LmJsdWVwcmludC5zZXJ2ZXJfdHlwZSBhbmQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YXJfc2VydmVyX3R5cGUgaW4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtb2R1bGVfdmlldy5ibHVlcHJpbnQuc2VydmVyX3R5cGUpCisgICAgICAgICAg ICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCA9IG1vZHVsZV92aWV3LmNvbXBhcmUoCisgICAgICAgICAgICAg ICAgICAgICAgICBzb3VyY2Vfc2lkPXNyY19zaWQsIHNvdXJjZV9kaWQ9c3JjX2RpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zY2lkPXNyY19zY2lkLCBzb3VyY2VfdGlkPXNyY19v aWQsCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfc2lkPXRhcl9zaWQsIHRhcmdldF9k aWQ9dGFyX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9zY2lkPXRhcl9zY2lk LCB0YXJnZXRfdGlkPXRhcl9vaWQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICAgICBpZiByZXN1bHQgYW5kIG1vZHVsZS5OT0RFX1RZUEUgIT0gJ3BhcnRpdGlvbic6Cisg ICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9kaWZmID0gJycKKyAgICAgICAgICAgICAgICAg ICAgICAgIGZvciByZXMgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IHJlc1snc3RhdHVzJ10gPT0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U2NoZW1hRGlmZk1vZGVsLkNPTVBBUklTT05fU1RBVFVTWworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQnXToKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc291cmNlX29pZCA9IHJlc1snc291cmNlX29pZCddCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhcmdldF9vaWQgPSByZXNbJ3RhcmdldF9vaWQnXQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNvdXJjZV9vaWQgPSByZXNbJ29pZCddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF9vaWQgPSByZXNbJ29pZCddCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiByZXNbJ3N0YXR1cyddICE9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNjaGVtYURpZmZNb2RlbC5DT01QQVJJU09OX1NUQVRVU1sKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnaWRlbnRpY2FsJ106CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoaWxkX2RpZmYgPSBtb2R1bGVfdmlldy5kZGxfY29tcGFyZSgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zaWQ9c3JjX3NpZCwgc291cmNlX2Rp ZD1zcmNfZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3Nj aWQ9c3JjX3NjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Vf b2lkPXNvdXJjZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy Y2VfdGlkPXNyY19vaWQsIHRhcmdldF9zaWQ9dGFyX3NpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhcmdldF9kaWQ9dGFyX2RpZCwgdGFyZ2V0X3NjaWQ9dGFyX3NjaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdGlkPXRhcl9vaWQs IHRhcmdldF9vaWQ9dGFyZ2V0X29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbXBfc3RhdHVzPXJlc1snc3RhdHVzJ10KKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoaWxkX2RpZmY6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmICs9IGNoaWxkX2RpZmYK KyAgICAgICAgICAgICAgICAgICAgZWxpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg ICAjIEZvciBwYXJ0aXRpb24gbW9kdWxlCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlj YWwgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX29ubHkgPSBGYWxzZQor ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X29ubHkgPSBGYWxzZQorICAgICAgICAgICAg ICAgICAgICAgICAgZGlmZmVyZW50ID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv ciByZXMgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc1snc3Rh dHVzJ10gPT0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NoZW1hRGlm Zk1vZGVsLkNPTVBBUklTT05fU1RBVFVTWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdpZGVudGljYWwnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWRlbnRpY2FsID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcmVzWydz dGF0dXMnXSA9PSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlbWFE aWZmTW9kZWwuQ09NUEFSSVNPTl9TVEFUVVNbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ3NvdXJjZV9vbmx5J106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNvdXJjZV9vbmx5ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYg cmVzWydzdGF0dXMnXSA9PSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT Y2hlbWFEaWZmTW9kZWwuQ09NUEFSSVNPTl9TVEFUVVNbCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3RhcmdldF9vbmx5J106CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhcmdldF9vbmx5ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCA9IFRydWUK KworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaWRlbnRpY2FsOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKHNvdXJjZV9v bmx5IG9yIHRhcmdldF9vbmx5KSBhbmQgbm90IGRpZmZlcmVudDoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgcmVzIGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc291cmNlX29pZCA9IHJlc1snb2lkJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0X29pZCA9IHJlc1snb2lkJ10KKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGlsZF9kaWZmID0gbW9kdWxlX3ZpZXcuZGRsX2NvbXBhcmUoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Vfc2lkPXNyY19zaWQsIHNvdXJjZV9kaWQ9 c3JjX2RpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zY2lk PXNyY19zY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX29p ZD1zb3VyY2Vfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl X3RpZD1zcmNfb2lkLCB0YXJnZXRfc2lkPXRhcl9zaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YXJnZXRfZGlkPXRhcl9kaWQsIHRhcmdldF9zY2lkPXRhcl9zY2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3RpZD10YXJfb2lkLCB0 YXJnZXRfb2lkPXRhcmdldF9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb21wX3N0YXR1cz1yZXNbJ3N0YXR1cyddCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZGxfY29tcGFyZToK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgKz0gY2hpbGRfZGlmZgor ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaWZmID0gc2VsZi5nZXRfc3FsX2Zyb21fdGFibGVfZGlmZigKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2lkPXNyY19zaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1zcmNfZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNy Y19zY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9c3JjX29pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9zY2hlbWE9dGFyZ2V0X3NjaGVtYSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9yZXNwPUZhbHNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWFfZGlmZl90YWJsZT1UcnVlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc291cmNl ID0gc2VsZi5nZXRfc3FsX2Zyb21fdGFibGVfZGlmZihzaWQ9c3JjX3NpZCwgZGlkPXNyY19kaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9 c3JjX3NjaWQsIHRpZD1zcmNfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBqc29uX3Jlc3A9RmFsc2UpCisgICAgICAgICAgICB0YXJnZXQgPSBz ZWxmLmdldF9zcWxfZnJvbV90YWJsZV9kaWZmKHNpZD10YXJfc2lkLCBkaWQ9dGFyX2RpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD10YXJf c2NpZCwgdGlkPXRhcl9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGpzb25fcmVzcD1GYWxzZSkKKworICAgICAgICByZXR1cm4geydzb3VyY2Vf ZGRsJzogc291cmNlLAorICAgICAgICAgICAgICAgICd0YXJnZXRfZGRsJzogdGFyZ2V0LAorICAg ICAgICAgICAgICAgICdkaWZmX2RkbCc6IGRpZmYKKyAgICAgICAgICAgICAgICB9CisKKyAgICBA c3RhdGljbWV0aG9kCisgICAgZGVmIHRhYmxlX2NvbF9kZGxfY29tcChzb3VyY2UsIHRhcmdldCk6 CisgICAgICAgICIiIgorICAgICAgICBUYWJsZSBDb2x1bW4gY29tcGFyaXNvbgorICAgICAgICA6 cGFyYW0gc291cmNlOiBTb3VyY2UgY29sdW1ucworICAgICAgICA6cGFyYW0gdGFyZ2V0OiBUYXJn ZXQgY29sdW1ucworICAgICAgICA6cmV0dXJuOiBEaWZmZXJlbmNlIG9mIHRoZSBjb2x1bW5zCisg ICAgICAgICIiIgorICAgICAgICBzb3VyY2VfY29scyA9IHNvdXJjZVsnY29sdW1ucyddCisgICAg ICAgIHRhcmdldF9jb2xzID0gY29weS5kZWVwY29weSh0YXJnZXRbJ2NvbHVtbnMnXSkKKyAgICAg ICAgYWRkZWQgPSBbXQorICAgICAgICB1cGRhdGVkID0gW10KKyAgICAgICAgZGlmZmVyZW50ID0g eydjb2x1bW5zJzoge319CisKKyAgICAgICAgZm9yIHNvdXJjZSBpbiBzb3VyY2VfY29sczoKKyAg ICAgICAgICAgIGlmICduYW1lJyBpbiBzb3VyY2U6CisgICAgICAgICAgICAgICAgaWYgdHlwZSh0 YXJnZXRfY29scykgaXMgbGlzdCBhbmQgbGVuKAorICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0X2NvbHMpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgdG1wID0gTm9uZQorICAgICAgICAg ICAgICAgICAgICBmb3IgaXRlbSBpbiB0YXJnZXRfY29sczoKKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIGl0ZW1bJ25hbWUnXSA9PSBzb3VyY2VbJ25hbWUnXToKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0bXAgPSBjb3B5LmRlZXBjb3B5KGl0ZW0pCisgICAgICAgICAgICAgICAgICAg IGlmIHRtcCBhbmQgc291cmNlICE9IHRtcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcF91 cGRhdGVkID0gY29weS5kZWVwY29weShzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAj IFByZXNlcnZlIHRoZSBjb2x1bW4gbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICB0bXBf dXBkYXRlZFsnYXR0bnVtJ10gPSB0bXBbJ2F0dG51bSddCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiBpdGVtWyd0eXBuYW1lJ10gbm90IGluIHRtcF91cGRhdGVkWydlZGl0X3R5cGVzJ106Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX3VwZGF0ZWRbJ2NvbF90eXBlX2NvbnZlcnNp b24nXSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkLmFwcGVuZCh0bXBf dXBkYXRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9jb2xzLnJlbW92ZSh0bXAp CisgICAgICAgICAgICAgICAgICAgIGVsaWYgdG1wIGFuZCBzb3VyY2UgPT0gdG1wOgorICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NvbHMucmVtb3ZlKHRtcCkKKyAgICAgICAgICAgICAg ICAgICAgZWxpZiB0bXAgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkLmFw cGVuZChzb3VyY2UpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg YWRkZWQuYXBwZW5kKHNvdXJjZSkKKyAgICAgICAgICAgIGRpZmZlcmVudFsnY29sdW1ucyddWydh ZGRlZCddID0gYWRkZWQKKyAgICAgICAgICAgIGRpZmZlcmVudFsnY29sdW1ucyddWydjaGFuZ2Vk J10gPSB1cGRhdGVkCisKKyAgICAgICAgaWYgdGFyZ2V0X2NvbHMgYW5kIGxlbih0YXJnZXRfY29s cykgPiAwOgorICAgICAgICAgICAgZGlmZmVyZW50Wydjb2x1bW5zJ11bJ2RlbGV0ZWQnXSA9IHRh cmdldF9jb2xzCisKKyAgICAgICAgcmV0dXJuIGRpZmZlcmVudAorCisgICAgQHN0YXRpY21ldGhv ZAorICAgIGRlZiBjb25zdHJhaW50X2RkbF9jb21wKHNvdXJjZV90YWJsZSwgdGFyZ2V0X3RhYmxl KToKKyAgICAgICAgIiIiCisgICAgICAgIFRhYmxlIENvbnN0cmFpbnQgRERMIGNvbXBhcmlzb24K KyAgICAgICAgOnBhcmFtIHNvdXJjZTogU291cmNlIFRhYmxlCisgICAgICAgIDpwYXJhbSB0YXJn ZXQ6IFRhcmdldCBUYWJsZQorICAgICAgICA6cmV0dXJuOiBEaWZmZXJlbmNlIG9mIGNvbnN0cmFp bnRzCisgICAgICAgICIiIgorICAgICAgICBkaWZmZXJlbnQgPSB7fQorICAgICAgICBub25fZWRp dGFibGVfa2V5cyA9IHt9CisKKyAgICAgICAgbm9uX2VkaXRhYmxlX2tleXMgPSB7J3ByaW1hcnlf a2V5JzogWydjb2xfY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2NvbmRlZmVycmFibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NvbmRlZmZlcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjb2x1bW5zJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdjaGVja19jb25zdHJhaW50JzogWydjb25zcmMnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2V4Y2x1ZGVfY29uc3RyYWludCc6IFsnYW1uYW1lJywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5kY29uc3RyYWludCcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbHVt bnMnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgZm9yIGNvbnN0 cmFpbnQgaW4gWydwcmltYXJ5X2tleScsICdjaGVja19jb25zdHJhaW50JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICdleGNsdWRlX2NvbnN0cmFpbnQnXToKKyAgICAgICAgICAgIHNvdXJj ZV9jb2xzID0gc291cmNlX3RhYmxlW2NvbnN0cmFpbnRdIGlmIFwKKyAgICAgICAgICAgICAgICBj b25zdHJhaW50IGluIHNvdXJjZV90YWJsZSBlbHNlIFtdCisgICAgICAgICAgICB0YXJnZXRfY29s cyA9IGNvcHkuZGVlcGNvcHkodGFyZ2V0X3RhYmxlW2NvbnN0cmFpbnRdKSBpZlwKKyAgICAgICAg ICAgICAgICBjb25zdHJhaW50IGluIHRhcmdldF90YWJsZSBlbHNlIFtdCisgICAgICAgICAgICBh ZGRlZCA9IFtdCisgICAgICAgICAgICB1cGRhdGVkID0gW10KKyAgICAgICAgICAgIGRlbGV0ZWQg PSBbXQorCisgICAgICAgICAgICBkaWZmZXJlbnRbY29uc3RyYWludF0gPSB7fQorICAgICAgICAg ICAgZm9yIHNvdXJjZSBpbiBzb3VyY2VfY29sczoKKyAgICAgICAgICAgICAgICBpZiAnbmFtZScg aW4gc291cmNlOgorICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHRhcmdldF9jb2xzKSBpcyBs aXN0IGFuZCBsZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NvbHMpID4g MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9zcmMgPSBjb3B5LmRlZXBjb3B5KHNvdXJj ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9zcmMucG9wKCdvaWQnKQorICAgICAgICAg ICAgICAgICAgICAgICAgdG1wX3RhciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRt cCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHRhcmdldF9jb2xz OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1bJ25hbWUnXSA9PSBzb3VyY2Vb J25hbWUnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX3RhciA9IGNvcHku ZGVlcGNvcHkoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gY29w eS5kZWVwY29weShpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfdGFy LnBvcCgnb2lkJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRtcF90YXIgYW5kIHRtcF9z cmMgIT0gdG1wX3RhcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfdXBkYXRlZCA9 IGNvcHkuZGVlcGNvcHkoc291cmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBr ZXkgaW4gbm9uX2VkaXRhYmxlX2tleXNbY29uc3RyYWludF06CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIGtleSBpbiB0bXBfdXBkYXRlZCBhbmQgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcF91cGRhdGVkW2tleV0gIT0gdG1wX3RhcltrZXld OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWQuYXBwZW5kKHNvdXJj ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWQuYXBwZW5kKHRt cF91cGRhdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX3VwZGF0 ZWQgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRtcF91cGRhdGVkOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0bXBfdXBkYXRlZFsnb2lkJ10gPSB0bXBfdGFyWydvaWQnXQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkLmFwcGVuZCh0bXBfdXBkYXRlZCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfY29scy5yZW1vdmUodG1wKQorICAg ICAgICAgICAgICAgICAgICAgICAgZWxpZiB0bXBfdGFyIGFuZCB0bXBfc3JjID09IHRtcF90YXI6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NvbHMucmVtb3ZlKHRtcCkKKyAg ICAgICAgICAgICAgICAgICAgICAgIGVsaWYgdG1wX3RhciBpcyBOb25lOgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkZGVkLmFwcGVuZChzb3VyY2UpCisgICAgICAgICAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZC5hcHBlbmQoc291cmNlKQorICAg ICAgICAgICAgICAgIGRpZmZlcmVudFtjb25zdHJhaW50XVsnYWRkZWQnXSA9IGFkZGVkCisgICAg ICAgICAgICAgICAgZGlmZmVyZW50W2NvbnN0cmFpbnRdWydjaGFuZ2VkJ10gPSB1cGRhdGVkCisg ICAgICAgICAgICAgICAgZGlmZmVyZW50W2NvbnN0cmFpbnRdWydkZWxldGVkJ10gPSBkZWxldGVk CisKKyAgICAgICAgICAgIGlmIHRhcmdldF9jb2xzIGFuZCBsZW4odGFyZ2V0X2NvbHMpID4gMDoK KyAgICAgICAgICAgICAgICBkaWZmZXJlbnRbY29uc3RyYWludF1bJ2RlbGV0ZWQnXSA9IHRhcmdl dF9jb2xzCisKKyAgICAgICAgcmV0dXJuIGRpZmZlcmVudAorCisgICAgZGVmIHJlbW92ZV9rZXlz X2Zvcl9jb21wYXJpc2lvbihzZWxmLCBkYXRhLCBrZXlzPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSBzcGVjaWZpYyBrZXlzIGZyb20g ZGF0YQorICAgICAgICAiIiIKKworICAgICAgICBrZXlzX3RvX3JlbW92ZSA9IGtleXMgaWYga2V5 cyBlbHNlIHNlbGYua2V5c190b19yZW1vdmUKKworICAgICAgICBmb3IgcF9rZXksIHBfdmFsIGlu IGtleXNfdG9fcmVtb3ZlLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwX2tleSBpbiBkYXRhIGFu ZCBkYXRhW3Bfa2V5XSBpcyBub3QgTm9uZSBcCisgICAgICAgICAgICAgICAgICAgIGFuZCBsZW4o ZGF0YVtwX2tleV0pID4gMDoKKyAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBkYXRhW3Bfa2V5 XToKKyAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUga2V5cyB0aGF0IHNob3VsZCBub3QgYmUg dGhlIHBhcnQgb2YgY29tcGFyaXNpb24uCisgICAgICAgICAgICAgICAgICAgIGZvciBrZXkgaW4g cF92YWw6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gaXRlbToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpdGVtLnBvcChrZXkpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2NvbHVtbnMvc3FsLzEwX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvY29sdW1ucy9zcWwvMTBfcGx1cy9jcmVhdGUuc3FsCmluZGV4IDM2ZWI3ZmY4ZS4uYzE4 OWE3NDg4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbnMvc3FsLzEwX3Bs dXMvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbnMvc3FsLzEwX3Bs dXMvY3JlYXRlLnNxbApAQCAtMjEsNyArMjEsNyBAQCBDQUNIRSB7e2RhdGEuc2VxY2FjaGV8aW50 fX0geyUgZW5kaWYgJX0KIHslIGVuZGlmICV9eyUgZW5kaWYgJX07CiAKIHsjIyMgIEFkZCBjb21t ZW50cyAjIyN9Ci17JSBpZiBkYXRhIGFuZCBkYXRhLmRlc2NyaXB0aW9uICV9Cit7JSBpZiBkYXRh IGFuZCBkYXRhLmRlc2NyaXB0aW9uIGFuZCBkYXRhLmRlc2NyaXB0aW9uICE9IE5vbmUgJX0KIENP TU1FTlQgT04gQ09MVU1OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBk YXRhLm5hbWUpfX0KICAgICBJUyB7e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07CiAKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1ucy9zcWwvMTBfcGx1cy91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW5zL3NxbC8xMF9wbHVzL3VwZGF0ZS5zcWwK aW5kZXggNGI5NDNkZWZiLi40ZThiOTgyZmQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY29sdW1ucy9zcWwvMTBfcGx1cy91cGRhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY29sdW1ucy9zcWwvMTBfcGx1cy91cGRhdGUuc3FsCkBAIC0xMCw4ICsxMCwxNCBAQCBBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQogeyUgZW5k aWYgJX0KIHsjIyMgIEFsdGVyIGNvbHVtbiB0eXBlIGFuZCBjb2xsYXRpb24gIyMjfQogeyUgaWYg KGRhdGEuY2x0eXBlIGFuZCBkYXRhLmNsdHlwZSAhPSBvX2RhdGEuY2x0eXBlKSBvciAoZGF0YS5h dHRsZW4gaXMgZGVmaW5lZCBhbmQgZGF0YS5hdHRsZW4gIT0gb19kYXRhLmF0dGxlbikgb3IgKGRh dGEuYXR0cHJlY2lzaW9uIGlzIGRlZmluZWQgYW5kIGRhdGEuYXR0cHJlY2lzaW9uICE9IG9fZGF0 YS5hdHRwcmVjaXNpb24pIG9yIChkYXRhLmNvbGxzcGNuYW1lIGFuZCBkYXRhLmNvbGxzcGNuYW1l ICE9IG9fZGF0YS5jb2xsc3BjbmFtZSklfQotQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEudGFibGUpfX0KLSAgICBBTFRFUiBDT0xVTU4geyUgaWYgZGF0YS5uYW1l ICV9e3tjb25ufHF0VHlwZUlkZW50KGRhdGEubmFtZSl9fXslIGVsc2UgJX17e2Nvbm58cXRUeXBl SWRlbnQob19kYXRhLm5hbWUpfX17JSBlbmRpZiAlfSBUWVBFIHt7IEdFVF9UWVBFLlVQREFURV9U WVBFX1NRTChjb25uLCBkYXRhLCBvX2RhdGEpIH19eyUgaWYgZGF0YS5jb2xsc3BjbmFtZSBhbmQg ZGF0YS5jb2xsc3BjbmFtZSAhPSBvX2RhdGEuY29sbHNwY25hbWUgJX0KK3slIGlmIGRhdGEuY29s X3R5cGVfY29udmVyc2lvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLmNvbF90eXBlX2NvbnZlcnNpb24g PT0gRmFsc2UgJX0KKy0tIFdBUk5JTkc6CistLSBUaGUgU1FMIHN0YXRlbWVudCBiZWxvdyB3b3Vs ZCBub3JtYWxseSBiZSB1c2VkIHRvIGFsdGVyIHRoZSBkYXRhdHlwZSBmb3IgdGhlIHt7b19kYXRh Lm5hbWV9fSBjb2x1bW4sIGhvd2V2ZXIsCistLSB0aGUgY3VycmVudCBkYXRhdHlwZSBjYW5ub3Qg YmUgY2FzdCB0byB0aGUgdGFyZ2V0IGRhdGF0eXBlIHNvIHRoaXMgY29udmVyc2lvbiBjYW5ub3Qg YmUgbWFkZSBhdXRvbWF0aWNhbGx5LgorCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2xfdHlw ZV9jb252ZXJzaW9uIGlzIGRlZmluZWQgYW5kIGRhdGEuY29sX3R5cGVfY29udmVyc2lvbiA9PSBG YWxzZSAlfSAtLSB7JSBlbmRpZiAlfUFMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2No ZW1hLCBkYXRhLnRhYmxlKX19Cit7JSBpZiBkYXRhLmNvbF90eXBlX2NvbnZlcnNpb24gaXMgZGVm aW5lZCBhbmQgZGF0YS5jb2xfdHlwZV9jb252ZXJzaW9uID09IEZhbHNlICV9IC0tIHslIGVuZGlm ICV9ICAgIEFMVEVSIENPTFVNTiB7JSBpZiBkYXRhLm5hbWUgJX17e2Nvbm58cXRUeXBlSWRlbnQo ZGF0YS5uYW1lKX19eyUgZWxzZSAlfXt7Y29ubnxxdFR5cGVJZGVudChvX2RhdGEubmFtZSl9fXsl IGVuZGlmICV9IFRZUEUge3sgR0VUX1RZUEUuVVBEQVRFX1RZUEVfU1FMKGNvbm4sIGRhdGEsIG9f ZGF0YSkgfX17JSBpZiBkYXRhLmNvbGxzcGNuYW1lIGFuZCBkYXRhLmNvbGxzcGNuYW1lICE9IG9f ZGF0YS5jb2xsc3BjbmFtZSAlfQogIENPTExBVEUge3tkYXRhLmNvbGxzcGNuYW1lfX17JSBlbGlm IG9fZGF0YS5jb2xsc3BjbmFtZSAlfSBDT0xMQVRFIHt7b19kYXRhLmNvbGxzcGNuYW1lfX17JSBl bmRpZiAlfTsKIHslIGVuZGlmICV9CiB7IyMjICBBbHRlciBjb2x1bW4gZGVmYXVsdCB2YWx1ZSAj IyN9CkBAIC05NSw3ICsxMDEsNyBAQCBDT01NRU5UIE9OIENPTFVNTiB7e2Nvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS50YWJsZSwgb19kYXRhLm5hbWUpfX0KIAogeyUgZW5kaWYgJX0KIHsj IyMgVXBkYXRlIGNvbHVtbiB2YXJpYWJsZXMgIyMjfQoteyUgaWYgJ2F0dG9wdGlvbnMnIGluIGRh dGEgYW5kIGRhdGEuYXR0b3B0aW9uc3xsZW5ndGggPiAwICV9Cit7JSBpZiAnYXR0b3B0aW9ucycg aW4gZGF0YSBhbmQgZGF0YS5hdHRvcHRpb25zIGFuZCBkYXRhLmF0dG9wdGlvbnN8bGVuZ3RoID4g MCAlfQogeyUgc2V0IHZhcmlhYmxlcyA9IGRhdGEuYXR0b3B0aW9ucyAlfQogeyUgaWYgJ2RlbGV0 ZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFibGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQogQUxU RVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpfX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1ucy9zcWwvMTJfcGx1cy9jcmVhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW5zL3NxbC8xMl9wbHVzL2NyZWF0ZS5zcWwKaW5k ZXggNzFkZTQzNjU4Li4xOWUyNmYyYzIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv Y29sdW1ucy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv Y29sdW1ucy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsCkBAIC0yMSw3ICsyMSw3IEBAIENBQ0hFIHt7 ZGF0YS5zZXFjYWNoZXxpbnR9fSB7JSBlbmRpZiAlfQogeyUgZW5kaWYgJX17JSBlbmRpZiAlfXsl IGlmIGRhdGEuY29sY29uc3R5cGUgPT0gJ2cnIGFuZCBkYXRhLmdlbmV4cHIgYW5kIGRhdGEuZ2Vu ZXhwciAhPSAnJyAlfSBHRU5FUkFURUQgQUxXQVlTIEFTICh7e2RhdGEuZ2VuZXhwcn19KSBTVE9S RUR7JSBlbmRpZiAlfTsKIAogeyMjIyAgQWRkIGNvbW1lbnRzICMjI30KLXslIGlmIGRhdGEgYW5k IGRhdGEuZGVzY3JpcHRpb24gJX0KK3slIGlmIGRhdGEgYW5kIGRhdGEuZGVzY3JpcHRpb24gYW5k IGRhdGEuZGVzY3JpcHRpb24gIT0gTm9uZSAlfQogQ09NTUVOVCBPTiBDT0xVTU4ge3tjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUsIGRhdGEubmFtZSl9fQogICAgIElTIHt7ZGF0 YS5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jb2x1bW5zL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9jb2x1bW5zL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsCmluZGV4IGQyNzczNDQwMS4uZGZiNzU1 NWMxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbnMvc3FsLzkuMl9wbHVz L3VwZGF0ZS5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW5zL3NxbC85LjJfcGx1 cy91cGRhdGUuc3FsCkBAIC02LDYgKzYsMTIgQEAKIHslIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5u YW1lICE9IG9fZGF0YS5uYW1lICV9CiBBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS50YWJsZSl9fQogICAgIFJFTkFNRSB7e2Nvbm58cXRJZGVudChvX2RhdGEubmFt ZSl9fSBUTyB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX07Cit7JSBlbmRpZiAlfQoreyUgaWYg ZGF0YS5jb2xfdHlwZV9jb252ZXJzaW9uIGlzIGRlZmluZWQgYW5kIGRhdGEuY29sX3R5cGVfY29u dmVyc2lvbiA9PSBGYWxzZSAlfQorLS0gV0FSTklORzoKKy0tIFRoZSBTUUwgc3RhdGVtZW50IGJl bG93IHdvdWxkIG5vcm1hbGx5IGJlIHVzZWQgdG8gYWx0ZXIgdGhlIGRhdGF0eXBlIGZvciB0aGUg e3tvX2RhdGEubmFtZX19IGNvbHVtbiwgaG93ZXZlciwKKy0tIHRoZSBjdXJyZW50IGRhdGF0eXBl IGNhbm5vdCBiZSBjYXN0IHRvIHRoZSB0YXJnZXQgZGF0YXR5cGUgc28gdGhpcyBjb252ZXJzaW9u IGNhbm5vdCBiZSBtYWRlIGF1dG9tYXRpY2FsbHkuCisKIHslIGVuZGlmICV9CiB7IyMjICBBbHRl ciBjb2x1bW4gdHlwZSBhbmQgY29sbGF0aW9uICMjI30KIHslIGlmIChkYXRhLmNsdHlwZSBhbmQg ZGF0YS5jbHR5cGUgIT0gb19kYXRhLmNsdHlwZSkgb3IgKGRhdGEuYXR0bGVuIGlzIGRlZmluZWQg YW5kIGRhdGEuYXR0bGVuICE9IG9fZGF0YS5hdHRsZW4pIG9yIChkYXRhLmF0dHByZWNpc2lvbiBp cyBkZWZpbmVkIGFuZCBkYXRhLmF0dHByZWNpc2lvbiAhPSBvX2RhdGEuYXR0cHJlY2lzaW9uKSBv ciAoZGF0YS5jb2xsc3BjbmFtZSBhbmQgZGF0YS5jb2xsc3BjbmFtZSAhPSBvX2RhdGEuY29sbHNw Y25hbWUpJX0KQEAgLTQ1LDcgKzUxLDcgQEAgUExBSU57JSBlbGlmIGRhdGEuYXR0c3RvcmFnZSA9 PSAnbSclfU1BSU57JSBlbGlmIGRhdGEuYXR0c3RvcmFnZSA9PSAnZSclfQogRVhURVJOQUx7JSBl bGlmIGRhdGEuYXR0c3RvcmFnZSA9PSAneCclfUVYVEVOREVEeyUgZW5kaWYgJX07CiAKIHslIGVu ZGlmICV9Ci17JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGlzIGRlZmluZWQgJX0KK3slIGlmIGRhdGEu ZGVzY3JpcHRpb24gaXMgZGVmaW5lZCBhbmQgZGF0YS5kZXNjcmlwdGlvbiAhPSBOb25lICV9CiB7 JSBpZiBkYXRhLm5hbWUgJX0KIENPTU1FTlQgT04gQ09MVU1OIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUpfX0KIHslIGVsc2UgJX0KQEAgLTU1LDcgKzYx LDcgQEAgQ09NTUVOVCBPTiBDT0xVTU4ge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu dGFibGUsIG9fZGF0YS5uYW1lKX19CiAKIHslIGVuZGlmICV9CiB7IyMjIFVwZGF0ZSBjb2x1bW4g dmFyaWFibGVzICMjI30KLXslIGlmICdhdHRvcHRpb25zJyBpbiBkYXRhIGFuZCBkYXRhLmF0dG9w dGlvbnN8bGVuZ3RoID4gMCAlfQoreyUgaWYgJ2F0dG9wdGlvbnMnIGluIGRhdGEgYW5kIGRhdGEu YXR0b3B0aW9ucyAhPSBOb25lIGFuZCBkYXRhLmF0dG9wdGlvbnN8bGVuZ3RoID4gMCAlfQogeyUg c2V0IHZhcmlhYmxlcyA9IGRhdGEuYXR0b3B0aW9ucyAlfQogeyUgaWYgJ2RlbGV0ZWQnIGluIHZh cmlhYmxlcyBhbmQgdmFyaWFibGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQogQUxURVIgVEFCTEUg e3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpfX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1ucy9zcWwvZGVmYXVsdC9jcmVhdGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9jb2x1bW5zL3NxbC9kZWZhdWx0L2NyZWF0ZS5zcWwKaW5kZXggYWZmZDg4 OTA2Li5lZDdmNWYxYzYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1ucy9z cWwvZGVmYXVsdC9jcmVhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1ucy9z cWwvZGVmYXVsdC9jcmVhdGUuc3FsCkBAIC0xMiw3ICsxMiw3IEBAIEFMVEVSIFRBQkxFIHt7Y29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKX19CiAKIHslIGVuZGlmICV9CiB7IyMj ICBBZGQgY29tbWVudHMgIyMjfQoteyUgaWYgZGF0YSBhbmQgZGF0YS5kZXNjcmlwdGlvbiAlfQor eyUgaWYgZGF0YSBhbmQgZGF0YS5kZXNjcmlwdGlvbiBhbmQgZGF0YS5kZXNjcmlwdGlvbiAhPSBO b25lICV9CiBDT01NRU5UIE9OIENPTFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS50YWJsZSwgZGF0YS5uYW1lKX19CiAgICAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJh bH19OwogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbnMvc3FsL2RlZmF1 bHQvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1ucy9zcWwvZGVmYXVsdC91 cGRhdGUuc3FsCmluZGV4IGFjMGFmZThkMS4uM2M2YWUwYTkxIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2NvbHVtbnMvc3FsL2RlZmF1bHQvdXBkYXRlLnNxbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2NvbHVtbnMvc3FsL2RlZmF1bHQvdXBkYXRlLnNxbApAQCAtOSw5ICs5LDE1 IEBAIEFMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKX19 CiAKIHslIGVuZGlmICV9CiB7IyMjICBBbHRlciBjb2x1bW4gdHlwZSBhbmQgY29sbGF0aW9uICMj I30KLXslIGlmIChkYXRhLmNsdHlwZSBhbmQgZGF0YS5jbHR5cGUgIT0gb19kYXRhLmNsdHlwZSkg b3IgKGRhdGEuYXR0bGVuIGlzIGRlZmluZWQgYW5kIGRhdGEuYXR0bGVuICE9IG9fZGF0YS5hdHRs ZW4pIG9yIChkYXRhLmF0dHByZWNpc2lvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLmF0dHByZWNpc2lv biAhPSBvX2RhdGEuYXR0cHJlY2lzaW9uKSAgb3IgKGRhdGEuY29sbHNwY25hbWUgYW5kIGRhdGEu Y29sbHNwY25hbWUgIT0gb19kYXRhLmNvbGxzcGNuYW1lKSAlfQotQUxURVIgVEFCTEUge3tjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpfX0KLSAgICBBTFRFUiBDT0xVTU4geyUg aWYgZGF0YS5uYW1lICV9e3tjb25ufHF0VHlwZUlkZW50KGRhdGEubmFtZSl9fXslIGVsc2UgJX17 e2Nvbm58cXRUeXBlSWRlbnQob19kYXRhLm5hbWUpfX17JSBlbmRpZiAlfSBUWVBFIHt7IEdFVF9U WVBFLlVQREFURV9UWVBFX1NRTChjb25uLCBkYXRhLCBvX2RhdGEpIH19eyUgaWYgZGF0YS5jb2xs c3BjbmFtZSBhbmQgZGF0YS5jb2xsc3BjbmFtZSAhPSBvX2RhdGEuY29sbHNwY25hbWUgJX0KK3sl IGlmIChkYXRhLmNsdHlwZSBhbmQgZGF0YS5jbHR5cGUgIT0gb19kYXRhLmNsdHlwZSkgb3IgKGRh dGEuYXR0bGVuIGlzIGRlZmluZWQgYW5kIGRhdGEuYXR0bGVuICE9IG9fZGF0YS5hdHRsZW4pIG9y IChkYXRhLmF0dHByZWNpc2lvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLmF0dHByZWNpc2lvbiAhPSBv X2RhdGEuYXR0cHJlY2lzaW9uKSBvciAoZGF0YS5jb2xsc3BjbmFtZSBhbmQgZGF0YS5jb2xsc3Bj bmFtZSAhPSBvX2RhdGEuY29sbHNwY25hbWUpJX0KK3slIGlmIGRhdGEuY29sX3R5cGVfY29udmVy c2lvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLmNvbF90eXBlX2NvbnZlcnNpb24gPT0gRmFsc2UgJX0K Ky0tIFdBUk5JTkc6CistLSBUaGUgU1FMIHN0YXRlbWVudCBiZWxvdyB3b3VsZCBub3JtYWxseSBi ZSB1c2VkIHRvIGFsdGVyIHRoZSBkYXRhdHlwZSBmb3IgdGhlIFhYWCBjb2x1bW4sIGhvd2V2ZXIs CistLSB0aGUgY3VycmVudCBkYXRhdHlwZSBjYW5ub3QgYmUgY2FzdCB0byB0aGUgdGFyZ2V0IGRh dGF0eXBlIHNvIHRoaXMgY29udmVyc2lvbiBjYW5ub3QgYmUgbWFkZSBhdXRvbWF0aWNhbGx5Lgor Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2xfdHlwZV9jb252ZXJzaW9uIGlzIGRlZmluZWQg YW5kIGRhdGEuY29sX3R5cGVfY29udmVyc2lvbiA9PSBGYWxzZSAlfSAtLSB7JSBlbmRpZiAlfUFM VEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKX19Cit7JSBp ZiBkYXRhLmNvbF90eXBlX2NvbnZlcnNpb24gaXMgZGVmaW5lZCBhbmQgZGF0YS5jb2xfdHlwZV9j b252ZXJzaW9uID09IEZhbHNlICV9IC0tIHslIGVuZGlmICV9ICAgIEFMVEVSIENPTFVNTiB7JSBp ZiBkYXRhLm5hbWUgJX17e2Nvbm58cXRUeXBlSWRlbnQoZGF0YS5uYW1lKX19eyUgZWxzZSAlfXt7 Y29ubnxxdFR5cGVJZGVudChvX2RhdGEubmFtZSl9fXslIGVuZGlmICV9IFRZUEUge3sgR0VUX1RZ UEUuVVBEQVRFX1RZUEVfU1FMKGNvbm4sIGRhdGEsIG9fZGF0YSkgfX17JSBpZiBkYXRhLmNvbGxz cGNuYW1lIGFuZCBkYXRhLmNvbGxzcGNuYW1lICE9IG9fZGF0YS5jb2xsc3BjbmFtZSAlfQogIENP TExBVEUge3tkYXRhLmNvbGxzcGNuYW1lfX17JSBlbGlmIG9fZGF0YS5jb2xsc3BjbmFtZSAlfSBD T0xMQVRFIHt7b19kYXRhLmNvbGxzcGNuYW1lfX17JSBlbmRpZiAlfTsKIHslIGVuZGlmICV9CiB7 IyMjICBBbHRlciBjb2x1bW4gZGVmYXVsdCB2YWx1ZSAjIyN9CkBAIC00Niw3ICs1Miw3IEBAIFBM QUlOeyUgZWxpZiBkYXRhLmF0dHN0b3JhZ2UgPT0gJ20nJX1NQUlOeyUgZWxpZiBkYXRhLmF0dHN0 b3JhZ2UgPT0gJ2UnJX0KIEVYVEVSTkFMeyUgZWxpZiBkYXRhLmF0dHN0b3JhZ2UgPT0gJ3gnJX1F WFRFTkRFRHslIGVuZGlmICV9OwogCiB7JSBlbmRpZiAlfQoteyUgaWYgZGF0YS5kZXNjcmlwdGlv biBpcyBkZWZpbmVkICV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGlzIGRlZmluZWQgYW5kIGRh dGEuZGVzY3JpcHRpb24gIT0gTm9uZSAlfQogeyUgaWYgZGF0YS5uYW1lICV9CiBDT01NRU5UIE9O IENPTFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSwgZGF0YS5uYW1l KX19CiB7JSBlbHNlICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlv bnMvc3FsL3BnLzEwX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0 aW9ucy9zcWwvcGcvMTBfcGx1cy9jcmVhdGUuc3FsCmluZGV4IDZkYjU0NTJiNS4uMDFmOWJmYmFi IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbnMvc3FsL3BnLzEwX3Bs dXMvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbnMvc3FsL3Bn LzEwX3BsdXMvY3JlYXRlLnNxbApAQCAtMyw2ICszLDcgQEAKIHsjPT09PT09IE1BSU4gVEFCTEUg VEVNUExBVEUgU1RBUlRTIEhFUkUgPT09PT09I30KIHsjPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSN9CiB7IyMjIENSRUFURSBUQUJMRSBTVEFURU1FTlQgRk9SIHBh cnRpdGlvbnMgIyMjfQorCiBDUkVBVEUgeyUgaWYgZGF0YS5yZWxwZXJzaXN0ZW5jZSAlfVVOTE9H R0VEIHslIGVuZGlmICV9VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSl9fXslIGlmIGRhdGEucmVsaXNwYXJ0aXRpb24gaXMgZGVmaW5lZCBhbmQgZGF0YS5yZWxpc3Bh cnRpdGlvbiAlfSBQQVJUSVRJT04gT0Yge3tjb25ufHF0SWRlbnQoZGF0YS5wYXJlbnRfc2NoZW1h LCBkYXRhLnBhcnRpdGlvbmVkX3RhYmxlX25hbWUpfX17JSBlbmRpZiAlfQogCiB7IyBNYWNybyB0 byByZW5kZXIgZm9yIGNvbnN0cmFpbnRzICN9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9zY2hlbWFfZGlmZi5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9zY2hlbWFfZGlmZi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi5lYmQ0YWU2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9zY2hlbWFfZGlmZi5zcWwKQEAgLTAsMCAr MSwxNCBAQAorCisKK0lOU0VSVCBJTlRPIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpfX0oCit7JSBpZiBkYXRhLmNvbHVtbnMgYW5kIGRhdGEuY29sdW1uc3xsZW5ndGggPiAw ICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMgJX17e2MubmFtZX19eyUgaWYgbm90IGxvb3Au bGFzdCAlfSx7JSBlbmRpZiAlfXslIGVuZGZvciAlfXslIGVuZGlmICV9KQorU0VMRUNUIHslIGlm IGRhdGEuY29sdW1ucyBhbmQgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgJX17JSBmb3IgYyBpbiBk YXRhLmNvbHVtbnMgJX17e2MubmFtZX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSx7JSBlbmRpZiAl fXslIGVuZGZvciAlfXslIGVuZGlmICV9CisgRlJPTSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5vcmlnX25hbWUpfX07CisKK0RST1AgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEub3JpZ19uYW1lKX19OworCit7e3BhcnRpdGlvbl9zcWx9fQorCitBTFRFUiBU QUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgUkVOQU1F IFRPIHt7Y29ubnxxdElkZW50KGRhdGEub3JpZ19uYW1lKX19OwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RyaWdnZXJzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL19faW5pdF9fLnB5 CmluZGV4IGQ2ZjY4NjdlMC4uOTdkZDAwZjA3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dl cnMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL19faW5pdF9fLnB5CkBAIC0x Myw3ICsxMyw3IEBAIGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KIGZyb20gZnVuY3Rvb2xzIGlt cG9ydCB3cmFwcwogCiBpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMgYXMgZGF0YWJhc2UKLWZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0 ZSwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBy ZXF1ZXN0LCBqc29uaWZ5LCBjdXJyZW50X2FwcAogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBn ZXR0ZXh0CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9u Tm9kZU1vZHVsZQogZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2Rl VmlldwpAQCAtMjUsNyArMjUsMTEgQEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0aWxzIFwKICAgICBpbXBvcnQgdHJpZ2dlcl9k ZWZpbml0aW9uCiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCiBm cm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1pbi51dGlscy5j b21waWxlX3RlbXBsYXRlX25hbWUgaW1wb3J0IGNvbXBpbGVfdGVtcGxhdGVfcGF0aAogZnJvbSBw Z2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlm Zi5ub2RlX3JlZ2lzdHJ5IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0cnkKK2Zyb20gcGdhZG1pbi50 b29scy5zY2hlbWFfZGlmZi5jb21wYXJlIGltcG9ydCBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZQor CiAjIElmIHdlIGFyZSBpbiBQeXRob24zCiBpZiBub3QgSVNfUFkyOgogICAgIHVuaWNvZGUgPSBz dHIKQEAgLTE1MSw3ICsxNTUsNyBAQCBjbGFzcyBUcmlnZ2VyTW9kdWxlKENvbGxlY3Rpb25Ob2Rl TW9kdWxlKToKIGJsdWVwcmludCA9IFRyaWdnZXJNb2R1bGUoX19uYW1lX18pCiAKIAotY2xhc3Mg VHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKK2NsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGRO b2RlVmlldywgU2NoZW1hRGlmZk9iamVjdENvbXBhcmUpOgogICAgICIiIgogICAgIFRoaXMgY2xh c3MgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgcm91dGVzIGZvciBUcmlnZ2VyIG5vZGUK IApAQCAtMjQ0LDYgKzI0OCwxMCBAQCBjbGFzcyBUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgICAnZW5hYmxlJzogW3sncHV0JzogJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXInfV0K ICAgICB9KQogCisgICAgIyBTY2hlbWEgRGlmZjogS2V5cyB0byBpZ25vcmUgd2hpbGUgY29tcGFy aW5nCisgICAga2V5c190b19pZ25vcmUgPSBbJ29pZCcsICd4bWluJywgJ25zcG5hbWUnLCAndGZ1 bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAndGdyZWxpZCcsICd0Z2ZvaWQnLCAncHJv c3JjJ10KKwogICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CiAgICAgICAgICIiIgogICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwg Y2hlY2tzCkBAIC0yNjcsNiArMjc1LDExIEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgICAgICAgICAga3dhcmdzWydkaWQnXSBpbiBzZWxmLm1hbmFnZXIuZGJf aW5mbyBlbHNlIDAKIAogICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZv ciBzcWwgc2NyaXB0cworICAgICAgICAgICAgc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoID0gY29t cGlsZV90ZW1wbGF0ZV9wYXRoKAorICAgICAgICAgICAgICAgICd0YWJsZXMvc3FsJywKKyAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUsCisgICAgICAgICAgICAgICAgc2Vs Zi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgICkKICAgICAgICAgICAgIHNlbGYudGVtcGxh dGVfcGF0aCA9ICd0cmlnZ2Vycy9zcWwvezB9LyN7MX0jJy5mb3JtYXQoCiAgICAgICAgICAgICAg ICAgc2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlLCBzZWxmLm1hbmFnZXIudmVyc2lvbikKICAgICAg ICAgICAgICMgU3RvcmUgc2VydmVyIHR5cGUKQEAgLTQ1MCw3ICs0NjMsMjIgQEAgY2xhc3MgVHJp Z2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAg IEpTT04gb2Ygc2VsZWN0ZWQgdHJpZ2dlciBub2RlCiAgICAgICAgICIiIgorICAgICAgICBzdGF0 dXMsIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKHRpZCwgdHJpZCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1kYXRhLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCiAKKyAgICBkZWYgX2ZldGNoX3Byb3BlcnRpZXMoc2VsZiwgdGlk LCB0cmlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBm ZXRjaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdAorICAgICAgICA6cGFy YW0gdGlkOgorICAgICAgICA6cGFyYW0gdHJpZDoKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAg IiIiCiAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0 aWVzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHRyaWQ9 dHJpZCwKQEAgLTQ1OSwxMCArNDg3LDEwIEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwp CiAKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGlmIGxlbihyZXNbJ3Jv d3MnXSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCBnb25lKAogICAgICAgICAgICAgICAgIGdldHRleHQoIiIiQ291bGQgbm90IGZpbmQg dGhlIHRyaWdnZXIgaW4gdGhlIHRhYmxlLiIiIikpCiAKICAgICAgICAgIyBNYWtpbmcgY29weSBv ZiBvdXRwdXQgZm9yIGZ1dHVyZSB1c2UKQEAgLTQ3MiwxMCArNTAwLDcgQEAgY2xhc3MgVHJpZ2dl clZpZXcoUEdDaGlsZE5vZGVWaWV3KToKIAogICAgICAgICBkYXRhID0gdHJpZ2dlcl9kZWZpbml0 aW9uKGRhdGEpCiAKLSAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0gICAgICAgICAgICBy ZXNwb25zZT1kYXRhLAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCisgICAgICAg IHJldHVybiBUcnVlLCBkYXRhCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGNy ZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgpAQCAtNTUyLDcgKzU3Nyw3IEBA IGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAogICAgIEBjaGVja19wcmVj b25kaXRpb24KLSAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg dHJpZD1Ob25lKToKKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCwgdHJpZD1Ob25lLCBvbmx5X3NxbD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlz IGZ1bmN0aW9uIHdpbGwgdXBkYXRlcyBleGlzdGluZyB0aGUgdHJpZ2dlciBvYmplY3QKIApAQCAt NjEwLDYgKzYzNSw4IEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNjYWRlPWNhc2NhZGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIG9ubHlf c3FsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1FMCiAgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQogICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtNzYxLDYgKzc4OCwzNSBAQCBjbGFzcyBUcmlnZ2Vy VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogCiAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJl c3BvbnNlPVNRTCkKIAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3NxbF9m cm9tX2RpZmYoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBvaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE9Tm9uZSwgZGlmZl9zY2hlbWE9Tm9uZSwgZHJvcF9zcWw9RmFs c2UpOgorICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgU1FMLCBuYW1lID0gdHJpZ2dlcl91 dGlscy5nZXRfc3FsKHNlbGYuY29ubiwgZGF0YSwgdGlkLCBvaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lzb2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50LnNo b3dfc3lzdGVtX29iamVjdHMpCisKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKFNRTCwg KHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBTUUwKKyAgICAgICAgICAg IFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCisgICAgICAgIGVsc2U6CisgICAgICAg ICAgICBpZiBkcm9wX3NxbDoKKyAgICAgICAgICAgICAgICBTUUwgPSBzZWxmLmRlbGV0ZShnaWQ9 Z2lkLCBzaWQ9c2lkLCBkaWQ9ZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjaWQ9c2NpZCwgdGlkPXRpZCwgdHJpZD1vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb25seV9zcWw9VHJ1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgc2NoZW1hID0gc2VsZi5zY2hlbWEKKyAgICAgICAgICAgICAgICBpZiBkaWZmX3NjaGVtYToK KyAgICAgICAgICAgICAgICAgICAgc2NoZW1hID0gZGlmZl9zY2hlbWEKKyAgICAgICAgICAgICAg ICBTUUwgPSB0cmlnZ2VyX3V0aWxzLmdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKAorICAgICAg ICAgICAgICAgICAgICBzZWxmLmNvbm4sIHNjaGVtYSwKKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi50YWJsZSwgdGlkLCBvaWQsCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29p ZCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0 cywKKyAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfcGF0aD1Ob25lLCB3aXRoX2hlYWRlcj1G YWxzZSkKKworICAgICAgICByZXR1cm4gU1FMCisKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAg ICAgZGVmIGVuYWJsZV9kaXNhYmxlX3RyaWdnZXIoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCB0cmlkKToKICAgICAgICAgIiIiCkBAIC04NzUsNSArOTMxLDQ2IEBAIGNsYXNzIFRyaWdn ZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAg ICkKIAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZmV0Y2hfb2JqZWN0c190b19j b21wYXJlKHNlbGYsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIG9pZD1Ob25lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWdub3JlX2tleXM9RmFsc2UpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHRoZSBsaXN0IG9mIGFsbCB0aGUgdHJpZ2dl cnMgZm9yCisgICAgICAgIHNwZWNpZmllZCBzY2hlbWEgaWQuCisKKyAgICAgICAgOnBhcmFtIHNp ZDogU2VydmVyIElkCisgICAgICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIDpw YXJhbSBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgOnBhcmFtIHRpZDogVGFibGUgSWQKKyAgICAg ICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IGRpY3QoKQorCisgICAgICAg IGlmIG9pZDoKKyAgICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRp ZXModGlkLCBvaWQpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihkYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZQorICAgICAgICAgICAgcmVzID0gZGF0YQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHRp ZD10aWQpCisgICAgICAgICAgICBzdGF0dXMsIHRyaWdnZXJzID0gc2VsZi5jb25uLmV4ZWN1dGVf MmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcih0cmlnZ2VycykKKyAgICAgICAgICAgICAgICByZXR1 cm4gRmFsc2UKKworICAgICAgICAgICAgZm9yIHJvdyBpbiB0cmlnZ2Vyc1sncm93cyddOgorICAg ICAgICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXModGlkLCBy b3dbJ29pZCddKQorICAgICAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICAg ICAgaWYgaWdub3JlX2tleXM6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHNl bGYua2V5c190b19pZ25vcmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5IGlu IGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBkYXRhW2tleV0KKyAg ICAgICAgICAgICAgICAgICAgcmVzW3Jvd1snbmFtZSddXSA9IGRhdGEKKworICAgICAgICByZXR1 cm4gcmVzCisKIAorU2NoZW1hRGlmZlJlZ2lzdHJ5KCd0cmlnZ2VyJywgVHJpZ2dlclZpZXcsICd0 YWJsZScpCiBUcmlnZ2VyVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3V0 aWxzLnB5CmluZGV4IDE2NmQyYTE0Yy4uMjIxZjQ4ZDUyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dHJpZ2dlcnMvdXRpbHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3V0aWxzLnB5CkBAIC0z MCw3ICszMCw3IEBAIGRlZiBnZXRfdGVtcGxhdGVfcGF0aChmKToKICAgICBkZWYgd3JhcCgqYXJn cywgKiprd2FyZ3MpOgogICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgdGhlIGNvbm5l Y3Rpb24gb2JqZWN0CiAgICAgICAgIGNvbm5fb2JqID0gYXJnc1swXQotICAgICAgICBpZiAndGVt cGxhdGVfcGF0aCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgaWYgJ3RlbXBsYXRlX3BhdGgnIG5v dCBpbiBrd2FyZ3Mgb3Iga3dhcmdzWyd0ZW1wbGF0ZV9wYXRoJ10gaXMgTm9uZToKICAgICAgICAg ICAgIGt3YXJnc1sndGVtcGxhdGVfcGF0aCddID0gJ3RyaWdnZXJzL3NxbC97MH0vI3sxfSMnLmZv cm1hdCgKICAgICAgICAgICAgICAgICBjb25uX29iai5tYW5hZ2VyLnNlcnZlcl90eXBlLCBjb25u X29iai5tYW5hZ2VyLnZlcnNpb24pCiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBkZWYgZ2V0X3NxbChj b25uLCBkYXRhLCB0aWQsIHRyaWQsIGRhdGxhc3RzeXNvaWQsCiBAZ2V0X3RlbXBsYXRlX3BhdGgK IGRlZiBnZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbChjb25uLCBzY2hlbWEsIHRhYmxlLCB0aWQs IHRyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZCwgc2hv d19zeXN0ZW1fb2JqZWN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0 ZV9wYXRoPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX3Bh dGg9Tm9uZSwgd2l0aF9oZWFkZXI9VHJ1ZSk6CiAgICAgIiIiCiAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiByZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBzcGVjaWZpZWQgdHJpZ2dlci4K IApAQCAtMjEzLDYgKzIxMyw4IEBAIGRlZiBnZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbChjb25u LCBzY2hlbWEsIHRhYmxlLCB0aWQsIHRyaWQsCiAgICAgOnBhcmFtIGRhdGxhc3RzeXNvaWQ6CiAg ICAgOnBhcmFtIHNob3dfc3lzdGVtX29iamVjdHM6IFNob3cgU3lzdGVtIE9iamVjdCB2YWx1ZSBU cnVlIG9yIEZhbHNlCiAgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFsIHRlbXBsYXRl IHBhdGgKKyAgICA6cGFyYW0gd2l0aF9oZWFkZXI6IE9wdGlvbmFsIHBhcmFtZXRlciB0byBkZWNp ZGUgd2hldGhlciB0aGUgU1FMIHdpbGwgYmUKKyAgICAgcmV0dXJuZWQgd2l0aCBoZWFkZXIgb3Ig bm90CiAgICAgOnJldHVybjoKICAgICAiIiIKICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKQEAgLTI0MCwxMiArMjQy LDE1IEBAIGRlZiBnZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbChjb25uLCBzY2hlbWEsIHRhYmxl LCB0aWQsIHRyaWQsCiAgICAgU1FMLCBuYW1lID0gZ2V0X3NxbChjb25uLCBkYXRhLCB0aWQsIE5v bmUsIGRhdGxhc3RzeXNvaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9v YmplY3RzKQogCi0gICAgc3FsX2hlYWRlciA9IHUiLS0gVHJpZ2dlcjogezB9XG5cbi0tICIuZm9y bWF0KGRhdGFbJ25hbWUnXSkKKyAgICBpZiB3aXRoX2hlYWRlcjoKKyAgICAgICAgc3FsX2hlYWRl ciA9IHUiLS0gVHJpZ2dlcjogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKIAotICAg IHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAn ZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRh dGEsIGNvbm49Y29ubikKKyAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3RlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubikKIAotICAgIFNRTCA9IHNx bF9oZWFkZXIgKyAnXG5cbicgKyBTUUwuc3RyaXAoJ1xuJykKKyAgICAgICAgU1FMID0gc3FsX2hl YWRlciArICdcblxuJyArIFNRTC5zdHJpcCgnXG4nKQorICAgIGVsc2U6CisgICAgICAgIFNRTCA9 IFNRTC5zdHJpcCgnXG4nKQogCiAgICAgIyBJZiB0cmlnZ2VyIGlzIGRpc2FibGVkIHRoZW4gYWRk IHNxbCBjb2RlIGZvciB0aGUgc2FtZQogICAgIGlmIGRhdGFbJ2lzX2VuYWJsZV90cmlnZ2VyJ10g IT0gJ08nOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3V0aWxz LnB5CmluZGV4IDE1OTlkMzVlMi4uMzI0N2QyZmM3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRp bHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3V0aWxzLnB5CkBAIC0xMCw2ICsxMCw3IEBACiAiIiIgSW1w bGVtZW50cyBVdGlsaXR5IGNsYXNzIGZvciBUYWJsZSBhbmQgUGFydGl0aW9uZWQgVGFibGUuICIi IgogCiBpbXBvcnQgcmUKK2ltcG9ydCBjb3B5CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMK IGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KIGZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1w bGF0ZSwganNvbmlmeSwgcmVxdWVzdApAQCAtMTc5LDggKzE4MCwxMCBAQCBjbGFzcyBCYXNlVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgICAg ICAgICBkYXRhW3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQogCiAgICAgICAgICMgV2Ugd2lsbCBh ZGQgQXV0byB2YWN1dW0gZGVmYXVsdHMgd2l0aCBvdXQgcmVzdWx0IGZvciBncmlkCi0gICAgICAg IGRhdGFbJ3ZhY3V1bV90YWJsZSddID0gc2VsZi5wYXJzZV92YWN1dW1fZGF0YShzZWxmLmNvbm4s IGRhdGEsICd0YWJsZScpCi0gICAgICAgIGRhdGFbJ3ZhY3V1bV90b2FzdCddID0gc2VsZi5wYXJz ZV92YWN1dW1fZGF0YShzZWxmLmNvbm4sIGRhdGEsICd0b2FzdCcpCisgICAgICAgIGRhdGFbJ3Zh Y3V1bV90YWJsZSddID0gY29weS5kZWVwY29weSgKKyAgICAgICAgICAgIHNlbGYucGFyc2VfdmFj dXVtX2RhdGEoc2VsZi5jb25uLCBkYXRhLCAndGFibGUnKSkKKyAgICAgICAgZGF0YVsndmFjdXVt X3RvYXN0J10gPSBjb3B5LmRlZXBjb3B5KAorICAgICAgICAgICAgc2VsZi5wYXJzZV92YWN1dW1f ZGF0YShzZWxmLmNvbm4sIGRhdGEsICd0b2FzdCcpKQogCiAgICAgICAgICMgRmV0Y2ggY29sdW1u cyBmb3IgdGhlIHRhYmxlIGxvZ2ljCiAgICAgICAgICMKQEAgLTQwNSw3ICs0MDgsOCBAQCBjbGFz cyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAg ICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAgZGVmIGdldF9yZXZlcnNlX2Vu Z2luZWVyZWRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBtYWluX3NxbCwgZGF0YSk6CisgICAg ZGVmIGdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBtYWlu X3NxbCwgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9yZXNw PVRydWUsIGRpZmZfcGFydGl0aW9uX3NxbD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyByZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvcgogICAg ICAgICB0aGUgdGFibGUgb2JqZWN0CkBAIC00MTYsNiArNDIwLDkgQEAgY2xhc3MgQmFzZVRhYmxl VmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgICAgIHRp ZDogVGFibGUgSUQKICAgICAgICAgICAgbWFpbl9zcWw6IExpc3QgY29udGFpbnMgYWxsIHRoZSBy ZXZlcnNlZCBlbmdpbmVlcmVkIHNxbAogICAgICAgICAgICBkYXRhOiBUYWJsZSdzIERhdGEKKyAg ICAgICAgICAganNvbl9yZXNwOiBKc29uIHJlc3BvbnNlIG9yIHBsYWluIFNRTAorICAgICAgICAg ICBkaWZmX3BhcnRpdGlvbl9zcWw6IEluIFNjaGVtYSBkaWZmLCB0aGUgUGFydGl0aW9uIHNxbCBz aG91bGQgYmUKKyAgICAgICAgICAgcmV0dXJuIHNlcGFyYXRlbHkgdG8gcGVyZm9ybSBmdXJ0aGVy IHRhc2sKICAgICAgICAgIiIiCiAgICAgICAgICIiIgogICAgICAgICAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00MjcsNiArNDM0LDcgQEAgY2xhc3MgQmFzZVRhYmxl VmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgIHNjaGVt YSA9IGRhdGFbJ3NjaGVtYSddCiAgICAgICAgIHRhYmxlID0gZGF0YVsnbmFtZSddCiAgICAgICAg IGlzX3BhcnRpdGlvbmVkID0gJ2lzX3BhcnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19w YXJ0aXRpb25lZCddCisgICAgICAgIHNxbF9oZWFkZXIgPSAnJwogCiAgICAgICAgIGRhdGEgPSBz ZWxmLl9mb3JtYXR0ZXIoZGlkLCBzY2lkLCB0aWQsIGRhdGEpCiAKQEAgLTQ0NCwxOCArNDUyLDIw IEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFydGl0aW9uVGFi bGUpOgogICAgICAgICAgICAgICAgICAgICBjWydjbHR5cGUnXSwgY1snaGFzU3FyQnJhY2tldCdd ID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3V0aWxzLnR5cGVfZm9ybWF0dGVy KGNbJ2NsdHlwZSddKQogCi0gICAgICAgIHNxbF9oZWFkZXIgPSB1Ii0tIFRhYmxlOiB7MH1cblxu LS0gIi5mb3JtYXQoCi0gICAgICAgICAgICBzZWxmLnF0SWRlbnQoc2VsZi5jb25uLCBkYXRhWydz Y2hlbWEnXSwgZGF0YVsnbmFtZSddKSkKKyAgICAgICAgaWYganNvbl9yZXNwOgorICAgICAgICAg ICAgc3FsX2hlYWRlciA9IHUiLS0gVGFibGU6IHswfVxuXG4tLSAiLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICBzZWxmLnF0SWRlbnQoc2VsZi5jb25uLCBkYXRhWydzY2hlbWEnXSwgZGF0YVsnbmFt ZSddKSkKIAotICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBz cWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKIAotICAgICAgICBzcWxfaGVhZGVyID0g c3FsX2hlYWRlci5zdHJpcCgnXG4nKQotICAgICAgICBzcWxfaGVhZGVyICs9ICdcbicKKyAgICAg ICAgICAgIHNxbF9oZWFkZXIgPSBzcWxfaGVhZGVyLnN0cmlwKCdcbicpCisgICAgICAgICAgICBz cWxfaGVhZGVyICs9ICdcbicKIAotICAgICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCi0gICAgICAg IG1haW5fc3FsLmFwcGVuZChzcWxfaGVhZGVyKQorICAgICAgICAgICAgIyBBZGQgaW50byBtYWlu IHNxbAorICAgICAgICAgICAgbWFpbl9zcWwuYXBwZW5kKHNxbF9oZWFkZXIpCisgICAgICAgIHBh cnRpdGlvbl9tYWluX3NxbCA9ICIiCiAKICAgICAgICAgIyBQYXJzZSBwcml2aWxlZ2UgZGF0YQog ICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgpAQCAtNDkzLDEyICs1MDMsMTQgQEAgY2xhc3Mg QmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAg ICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgogICAgICAgICAgICAgaW5kZXhfc3FsID0gaW5k ZXhfdXRpbHMuZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoCiAgICAgICAgICAgICAgICAgc2Vs Zi5jb25uLCBzY2hlbWEsIHRhYmxlLCBkaWQsIHRpZCwgcm93WydvaWQnXSwKLSAgICAgICAgICAg ICAgICBzZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lz b2lkLAorICAgICAgICAgICAgICAgIHRlbXBsYXRlX3BhdGg9Tm9uZSwgd2l0aF9oZWFkZXI9anNv bl9yZXNwKQogICAgICAgICAgICAgaW5kZXhfc3FsID0gdSJcbiIgKyBpbmRleF9zcWwKIAogICAg ICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAogICAgICAgICAgICAgaW5kZXhfc3FsID0gcmUu c3ViKCdcbnsyLH0nLCAnXG5cbicsIGluZGV4X3NxbCkKLSAgICAgICAgICAgIG1haW5fc3FsLmFw cGVuZChpbmRleF9zcWwpCisKKyAgICAgICAgICAgIG1haW5fc3FsLmFwcGVuZChpbmRleF9zcWwu c3RyaXAoJ1xuJykpCiAKICAgICAgICAgIiIiCiAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTUxNCw3ICs1MjYsOCBAQCBjbGFzcyBCYXNlVGFibGVW aWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CiAgICAgICAgICAgICB0cmlnZ2VyX3NxbCA9IHRyaWdnZXJfdXRp bHMuZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoCiAgICAgICAgICAgICAgICAgc2VsZi5jb25u LCBzY2hlbWEsIHRhYmxlLCB0aWQsIHJvd1snb2lkJ10sCi0gICAgICAgICAgICAgICAgc2VsZi5k YXRsYXN0c3lzb2lkLCBzZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQorICAgICAg ICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCwgc2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1f b2JqZWN0cywKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoPU5vbmUsIHdpdGhfaGVhZGVy PWpzb25fcmVzcCkKICAgICAgICAgICAgIHRyaWdnZXJfc3FsID0gdSJcbiIgKyB0cmlnZ2VyX3Nx bAogCiAgICAgICAgICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCkBAIC01NzEsMTAgKzU4NCwxMyBA QCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxl KToKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKKyAgICAgICAgICAgIGRpc3BsYXlf Y29tbWVudHMgPSBUcnVlCisgICAgICAgICAgICBpZiBub3QganNvbl9yZXNwOgorICAgICAgICAg ICAgICAgIGRpc3BsYXlfY29tbWVudHMgPSBGYWxzZQogICAgICAgICAgICAgcmVzX2RhdGEgPSBw YXJzZV9ydWxlX2RlZmluaXRpb24ocmVzKQogICAgICAgICAgICAgcnVsZXNfc3FsICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKICAgICAgICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1wbGF0 ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICBkYXRhPXJlc19kYXRhLCBk aXNwbGF5X2NvbW1lbnRzPVRydWUpCisgICAgICAgICAgICAgICAgZGF0YT1yZXNfZGF0YSwgZGlz cGxheV9jb21tZW50cz1kaXNwbGF5X2NvbW1lbnRzKQogCiAgICAgICAgICAgICAjIEFkZCBpbnRv IG1haW4gc3FsCiAgICAgICAgICAgICBydWxlc19zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxu JywgcnVsZXNfc3FsKQpAQCAtNTk0LDEzICs2MTAsMTcgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQogCiAgICAgICAgICAgICBp ZiBsZW4ocnNldFsncm93cyddKToKLSAgICAgICAgICAgICAgICBzcWxfaGVhZGVyID0gdSJcbi0t IFBhcnRpdGlvbnMgU1FMIgorICAgICAgICAgICAgICAgIGlmIGpzb25fcmVzcDoKKyAgICAgICAg ICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4tLSBQYXJ0aXRpb25zIFNRTCIKICAgICAgICAg ICAgICAgICBwYXJ0aXRpb25fc3FsID0gJycKICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJz ZXRbJ3Jvd3MnXToKICAgICAgICAgICAgICAgICAgICAgcGFydF9kYXRhID0gZGljdCgpCi0gICAg ICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0aW9uZWRfdGFibGVfbmFtZSddID0gdGFi bGUKLSAgICAgICAgICAgICAgICAgICAgcGFydF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBzY2hl bWEKLSAgICAgICAgICAgICAgICAgICAgcGFydF9kYXRhWydzY2hlbWEnXSA9IHJvd1snc2NoZW1h X25hbWUnXQorICAgICAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3BhcnRpdGlvbmVkX3RhYmxl X25hbWUnXSA9IGRhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3Bh cmVudF9zY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGlmIG5v dCBqc29uX3Jlc3A6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3NjaGVtYSdd ID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBhcnRfZGF0YVsnc2NoZW1hJ10gPSByb3dbJ3NjaGVtYV9uYW1lJ10KICAg ICAgICAgICAgICAgICAgICAgcGFydF9kYXRhWydyZWxpc3BhcnRpdGlvbiddID0gVHJ1ZQogICAg ICAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ25hbWUnXSA9IHJvd1snbmFtZSddCiAgICAgICAg ICAgICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0aW9uX3ZhbHVlJ10gPSByb3dbJ3BhcnRpdGlv bl92YWx1ZSddCkBAIC02MTIsMTMgKzYzMiwxOCBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hp bGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9cGFydF9kYXRhLCBjb25uPXNlbGYuY29ubikKIAogICAgICAgICAgICAgICAgICMgQWRk IGludG8gbWFpbiBzcWwKLSAgICAgICAgICAgICAgICBwYXJ0aXRpb25fc3FsID0gcmUuc3ViKCdc bnsyLH0nLCAnXG5cbicsIHBhcnRpdGlvbl9zcWwpCi0gICAgICAgICAgICAgICAgbWFpbl9zcWwu YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBzcWxfaGVhZGVyICsgJ1xuXG4nICsgcGFydGl0 aW9uX3NxbC5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBw YXJ0aXRpb25fc3FsID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIHBhcnRpdGlvbl9zcWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKKyAgICAg ICAgICAgICAgICBwYXJ0aXRpb25fbWFpbl9zcWwgPSBwYXJ0aXRpb25fc3FsLnN0cmlwKCdcbicp CisgICAgICAgICAgICAgICAgaWYgbm90IGRpZmZfcGFydGl0aW9uX3NxbDoKKyAgICAgICAgICAg ICAgICAgICAgbWFpbl9zcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgc3FsX2hl YWRlciArICdcblxuJyArIHBhcnRpdGlvbl9tYWluX3NxbAorICAgICAgICAgICAgICAgICAgICAp CiAKICAgICAgICAgc3FsID0gJ1xuJy5qb2luKG1haW5fc3FsKQogCisgICAgICAgIGlmIG5vdCBq c29uX3Jlc3A6CisgICAgICAgICAgICByZXR1cm4gc3FsLCBwYXJ0aXRpb25fbWFpbl9zcWwKICAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9c3FsLnN0cmlwKCdcbicpKQogCiAg ICAgZGVmIHJlc2V0X3N0YXRpc3RpY3Moc2VsZiwgc2NpZCwgdGlkKToKQEAgLTkwNyw3ICs5MzIs OCBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRh YmxlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAo J1xuJykgKyAnXG5cbicKIAogICAgICAgICAgICAgICAgICMgSWYgcGFydGl0aW9uKHMpIGlzL2Fy ZSBhZGRlZAotICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gcGFydGl0aW9uczoKKyAgICAg ICAgICAgICAgICBpZiAnYWRkZWQnIGluIHBhcnRpdGlvbnMgYW5kICdwYXJ0aXRpb25fc2NoZW1l JyBpbiBvbGRfZGF0YVwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbGRfZGF0YVsncGFy dGl0aW9uX3NjaGVtZSddICE9ICcnOgogICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGEgPSBk aWN0KCkKICAgICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhWydzY2hlbWEnXSA9IGRhdGFbJ3Nj aGVtYSddCiAgICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YVsnbmFtZSddID0gZGF0YVsnbmFt ZSddCkBAIC0xMTMzLDcgKzExNTksOCBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2Rl VmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCiAKLSAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQs IHJlcyk6CisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk LCByZXMsCisgICAgICAgICAgICAgICAgICAgcmV0dXJuX2FqYXhfcmVzcG9uc2U9VHJ1ZSk6CiAg ICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGll cyBvZiB0aGUgc2VsZWN0ZWQgdGFibGUgbm9kZS4KIApAQCAtMTE0NSw2ICsxMTcyLDcgQEAgY2xh c3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKICAgICAgICAgICAgIHRpZDogVGFibGUgSUQKICAg ICAgICAgICAgIHJlczogVGFibGUvUGFydGl0aW9uIHRhYmxlIHByb3BlcnRpZXMKKyAgICAgICAg ICAgIHJldHVybl9hamF4X3Jlc3BvbnNlOiBJZiBUcnVlIHRoZW4gcmV0dXJuIHRoZSBhamF4IHJl c3BvbnNlCiAKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQg dGFibGUgbm9kZQpAQCAtMTI0Miw2ICsxMjcwLDkgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0No aWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAKICAgICAgICAgICAgIGRhdGFbJ3Bh cnRpdGlvbnMnXSA9IHBhcnRpdGlvbnMKIAorICAgICAgICBpZiBub3QgcmV0dXJuX2FqYXhfcmVz cG9uc2U6CisgICAgICAgICAgICByZXR1cm4gZGF0YQorCiAgICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKAogICAgICAgICAgICAgcmVzcG9uc2U9ZGF0YSwKICAgICAgICAgICAgIHN0YXR1cz0y MDAKQEAgLTEzNTksMTggKzEzOTAsNyBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2Rl VmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgICAgIH0KICAgICAgICAgKQogCi0g ICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHJlcyk6Ci0gICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIHRoZSB0YWJsZSBvYmpl Y3QKLQotICAgICAgICAgQXJnczoKLSAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKLSAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKLSAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAotICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSUQKLSAgICAgICAgICAgdGlkOiBUYWJsZSBJRAotICAgICAg ICAiIiIKLQorICAgIGRlZiBnZXRfZGVsZXRlX3NxbChzZWxmLCByZXMpOgogICAgICAgICAjIEJl bG93IHdpbGwgZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUg Y2FsbAogICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKICAgICAgICAgICAgICMgVGhp cyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCkBAIC0xMzgwLDExICsxNDAwLDI2IEBAIGNsYXNzIEJh c2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFydGl0aW9uVGFibGUpOgogCiAgICAg ICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQogCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAogICAgICAgICAgICAg ZGF0YT1kYXRhLCBjYXNjYWRlPWNhc2NhZGUsCiAgICAgICAgICAgICBjb25uPXNlbGYuY29ubgog ICAgICAgICApCisKKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCwgcmVzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUg dGhlIHRhYmxlIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRh YmxlIElECisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9IHNlbGYuZ2V0X2RlbGV0ZV9zcWwo cmVzKQorCiAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNR TCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIHJl cwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy9fX2luaXRfXy5w eQppbmRleCBiNTBlNmQ3ZDcuLmIxNzNhNDA1OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0X18ucHkKQEAgLTI2LDYgKzI2LDggQEAgZnJvbSBw Z2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9y dCBtYWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2Vf cmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLm5vZGVf cmVnaXN0cnkgaW1wb3J0IFNjaGVtYURpZmZSZWdpc3RyeQorZnJvbSBwZ2FkbWluLnRvb2xzLnNj aGVtYV9kaWZmLmNvbXBhcmUgaW1wb3J0IFNjaGVtYURpZmZPYmplY3RDb21wYXJlCiAKICMgSWYg d2UgYXJlIGluIFB5dGhvbjMKIGlmIG5vdCBJU19QWTI6CkBAIC05NCw3ICs5Niw3IEBAIGNsYXNz IFR5cGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgogYmx1ZXByaW50ID0gVHlwZU1vZHVsZShf X25hbWVfXykKIAogCi1jbGFzcyBUeXBlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVh ZGVyKToKK2NsYXNzIFR5cGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFNj aGVtYURpZmZPYmplY3RDb21wYXJlKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlzIHJlc3Bv bnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgVHlwZSBub2RlCiAKQEAgLTE3Myw2ICsx NzUsMTAgQEAgY2xhc3MgVHlwZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6 CiAgICAgKiBnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zX2xpc3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkKToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGV4dGVybmFs IGZ1bmN0aW9ucwogICAgICAgICBpbiBhamF4IHJlc3BvbnNlCisKKyAgICAqIGNvbXBhcmUoKipr d2FyZ3MpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY29tcGFyZSB0aGUgdHlwZSBub2Rl cyBmcm9tIHR3bworICAgICAgICBkaWZmZXJlbnQgc2NoZW1hcy4KICAgICAiIiIKIAogICAgIG5v ZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKQEAgLTU1OSw2ICs1NjUsMjIgQEAgY2xhc3Mg VHlwZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAgICAgICAgIFJldHVy bnM6CiAgICAgICAgICAgICBKU09OIG9mIHNlbGVjdGVkIHR5cGUgbm9kZQogICAgICAgICAiIiIK KyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKHNjaWQsIHRpZCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAg ICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVz KHNlbGYsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlz IHVzZWQgdG8gZmVjdGggdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuCisg ICAgICAgIDpwYXJhbSBzY2lkOgorICAgICAgICA6cGFyYW0gdGlkOgorICAgICAgICA6cmV0dXJu OgorICAgICAgICAiIiIKIAogICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLApAQCAtNTY5LDEwICs1OTEsMTAgQEAg Y2xhc3MgVHlwZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAgICAgICAg ICkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKICAg ICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkg PT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBnb25lKAogICAgICAgICAgICAgICAgIGdldHRleHQoIiIiQ291bGQgbm90IGZpbmQgdGhlIHR5 cGUgaW4gdGhlIGRhdGFiYXNlLiIiIikpCiAKICAgICAgICAgIyBNYWtpbmcgY29weSBvZiBvdXRw dXQgZm9yIGZ1dHVyZSB1c2UKQEAgLTU4Myw3ICs2MDUsNyBAQCBjbGFzcyBUeXBlVmlldyhQR0No aWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCkKICAgICAgICAgc3RhdHVzLCBhY2wgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9YWNsKQorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9YWNsKQogCiAgICAgICAg ICMgV2Ugd2lsbCBzZXQgZ2V0IHByaXZpbGVnZXMgZnJvbSBhY2wgc3FsIHNvIHdlIGRvbid0IG5l ZWQKICAgICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMgc3FsCkBAIC01OTksMTAgKzYyMSw3IEBA IGNsYXNzIFR5cGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAg ICAjIENhbGxpbmcgZnVuY3Rpb24gdG8gY2hlY2sgYW5kIGFkZGl0aW9uYWwgcHJvcGVydGllcyBp ZiBhdmFpbGFibGUKICAgICAgICAgY29weV9kaWN0LnVwZGF0ZShzZWxmLmFkZGl0aW9uYWxfcHJv cGVydGllcyhjb3B5X2RpY3QsIHRpZCkpCiAKLSAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo Ci0gICAgICAgICAgICByZXNwb25zZT1jb3B5X2RpY3QsCi0gICAgICAgICAgICBzdGF0dXM9MjAw Ci0gICAgICAgICkKKyAgICAgICAgcmV0dXJuIFRydWUsIGNvcHlfZGljdAogCiAgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRfY29sbGF0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQ9Tm9uZSk6CkBAIC0xNDI4LDUgKzE0NDcsMzEgQEAgY2xhc3MgVHlwZVZpZXco UEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6CiAgICAgICAgICAgICBzdGF0dXM9MjAw CiAgICAgICAgICkKIAorICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZmV0Y2hfb2Jq ZWN0c190b19jb21wYXJlKHNlbGYsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBhbGwgdGhlIHR5cGVzIGZv cgorICAgICAgICBzcGVjaWZpZWQgc2NoZW1hIGlkLgorCisgICAgICAgIDpwYXJhbSBzaWQ6IFNl cnZlciBJZAorICAgICAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICA6cGFyYW0g c2NpZDogU2NoZW1hIElkCisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIiIgorICAgICAgICBy ZXMgPSBkaWN0KCkKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwg ZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICBzdGF0dXMsIGRh dGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKHNjaWQsIHJvd1snb2lkJ10pCisgICAgICAgICAg ICBpZiBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmVzW3Jvd1snbmFtZSddXSA9IGRhdGEKKwor ICAgICAgICByZXR1cm4gcmVzCisKIAogVHlwZVZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVw cmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdXRpbHMucHkKaW5kZXggMTNkYTY2 ZTM1Li5lZTg3ZDk2OTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3V0aWxzLnB5 CkBAIC0xNSw2ICsxNSw4IEBAIGZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZQogCiBm cm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVs ZQogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvcgor ZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBjb25maWcg aW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCiAKIAogY2xhc3MgU2NoZW1hQ2hpbGRNb2R1bGUoQ29s bGVjdGlvbk5vZGVNb2R1bGUpOgpAQCAtNDg1LDQ0ICs0ODcsNTAgQEAgY2xhc3MgVmFjdXVtU2V0 dGluZ3M6CiAgICAgICAgICogdHlwZSAtIHRhYmxlL3RvYXN0IHZhY3V1bSB0eXBlCiAKICAgICAi IiIKKyAgICB2YWN1dW1fc2V0dGluZ3MgPSBkaWN0KCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxm KToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIGdldF92YWN1dW1fdGFibGVfc2V0dGluZ3Moc2Vs ZiwgY29ubik6CisgICAgZGVmIGZldGNoX2RlZmF1bHRfdmFjdXVtX3NldHRpbmdzKHNlbGYsIGNv bm4sIHNpZCwgc2V0dGluZ190eXBlKToKICAgICAgICAgIiIiCi0gICAgICAgIEZldGNoIHRoZSBk ZWZhdWx0IHZhbHVlcyBmb3IgYXV0b3ZhY3V1bQotICAgICAgICBmaWVsZHMsIHJldHVybiBhbiBh cnJheSBvZgotICAgICAgICAgIC0gbGFiZWwKLSAgICAgICAgICAtIG5hbWUKLSAgICAgICAgICAt IHNldHRpbmcKLSAgICAgICAgdmFsdWVzCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0 byBmZXRjaCBhbmQgY2FjaGVkIHRoZSBkZWZhdWx0IHZhY3V1bSBzZXR0aW5ncworICAgICAgICBm b3Igc3BlY2lmaWVkIHNlcnZlciBpZC4KKyAgICAgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24g T2JqZWN0CisgICAgICAgIDpwYXJhbSBzaWQ6ICBTZXJ2ZXIgSUQKKyAgICAgICAgOnBhcmFtIHNl dHRpbmdfdHlwZTogVHlwZSAodGFibGUgb3IgdG9hc3QpCisgICAgICAgIDpyZXR1cm46CiAgICAg ICAgICIiIgorICAgICAgICBpZiBzaWQgaW4gVmFjdXVtU2V0dGluZ3MudmFjdXVtX3NldHRpbmdz OgorICAgICAgICAgICAgaWYgc2V0dGluZ190eXBlIGluIFZhY3V1bVNldHRpbmdzLnZhY3V1bV9z ZXR0aW5nc1tzaWRdOgorICAgICAgICAgICAgICAgIHJldHVybiBWYWN1dW1TZXR0aW5ncy52YWN1 dW1fc2V0dGluZ3Nbc2lkXVtzZXR0aW5nX3R5cGVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICBWYWN1dW1TZXR0aW5ncy52YWN1dW1fc2V0dGluZ3Nbc2lkXSA9IGRpY3QoKQogCiAgICAgICAg ICMgcmV0dXJucyBhbiBhcnJheSBvZiBuYW1lICYgbGFiZWwgdmFsdWVzCiAgICAgICAgIHZhY3V1 bV9maWVsZHMgPSByZW5kZXJfdGVtcGxhdGUoInZhY3V1bV9zZXR0aW5ncy92YWN1dW1fZmllbGRz Lmpzb24iKQotCiAgICAgICAgIHZhY3V1bV9maWVsZHMgPSBqc29uLmxvYWRzKHZhY3V1bV9maWVs ZHMpCiAKICAgICAgICAgIyByZXR1cm5zIGFuIGFycmF5IG9mIHNldHRpbmcgJiBuYW1lIHZhbHVl cwogICAgICAgICB2YWN1dW1fZmllbGRzX2tleXMgPSAiJyIgKyAiJywnIi5qb2luKAotICAgICAg ICAgICAgdmFjdXVtX2ZpZWxkc1sndGFibGUnXS5rZXlzKCkpICsgIiciCisgICAgICAgICAgICB2 YWN1dW1fZmllbGRzW3NldHRpbmdfdHlwZV0ua2V5cygpKSArICInIgogICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoJ3ZhY3V1bV9zZXR0aW5ncy9zcWwvdmFjdXVtX2RlZmF1bHRzLnNxbCcs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXZhY3V1bV9maWVsZHNfa2V5 cykKLSAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChTUUwpCiAKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgIGlmIG5vdCBz dGF0dXM6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKIAogICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgogICAgICAgICAgICAgcm93 X25hbWUgPSByb3dbJ25hbWUnXQotICAgICAgICAgICAgcm93WyduYW1lJ10gPSB2YWN1dW1fZmll bGRzWyd0YWJsZSddW3Jvd19uYW1lXVswXQotICAgICAgICAgICAgcm93WydsYWJlbCddID0gdmFj dXVtX2ZpZWxkc1sndGFibGUnXVtyb3dfbmFtZV1bMV0KLSAgICAgICAgICAgIHJvd1snY29sdW1u X3R5cGUnXSA9IHZhY3V1bV9maWVsZHNbJ3RhYmxlJ11bcm93X25hbWVdWzJdCisgICAgICAgICAg ICByb3dbJ25hbWUnXSA9IHZhY3V1bV9maWVsZHNbc2V0dGluZ190eXBlXVtyb3dfbmFtZV1bMF0K KyAgICAgICAgICAgIHJvd1snbGFiZWwnXSA9IHZhY3V1bV9maWVsZHNbc2V0dGluZ190eXBlXVty b3dfbmFtZV1bMV0KKyAgICAgICAgICAgIHJvd1snY29sdW1uX3R5cGUnXSA9IHZhY3V1bV9maWVs ZHNbc2V0dGluZ190eXBlXVtyb3dfbmFtZV1bMl0KIAotICAgICAgICByZXR1cm4gcmVzCisgICAg ICAgIFZhY3V1bVNldHRpbmdzLnZhY3V1bV9zZXR0aW5nc1tzaWRdW3NldHRpbmdfdHlwZV0gPSBy ZXNbJ3Jvd3MnXQorICAgICAgICByZXR1cm4gVmFjdXVtU2V0dGluZ3MudmFjdXVtX3NldHRpbmdz W3NpZF1bc2V0dGluZ190eXBlXQogCi0gICAgZGVmIGdldF92YWN1dW1fdG9hc3Rfc2V0dGluZ3Mo c2VsZiwgY29ubik6CisgICAgZGVmIGdldF92YWN1dW1fdGFibGVfc2V0dGluZ3Moc2VsZiwgY29u biwgc2lkKToKICAgICAgICAgIiIiCiAgICAgICAgIEZldGNoIHRoZSBkZWZhdWx0IHZhbHVlcyBm b3IgYXV0b3ZhY3V1bQogICAgICAgICBmaWVsZHMsIHJldHVybiBhbiBhcnJheSBvZgpAQCAtNTMx LDI5ICs1MzksMTggQEAgY2xhc3MgVmFjdXVtU2V0dGluZ3M6CiAgICAgICAgICAgLSBzZXR0aW5n CiAgICAgICAgIHZhbHVlcwogICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuZmV0Y2hf ZGVmYXVsdF92YWN1dW1fc2V0dGluZ3MoY29ubiwgc2lkLCAndGFibGUnKQogCi0gICAgICAgICMg cmV0dXJucyBhbiBhcnJheSBvZiBuYW1lICYgbGFiZWwgdmFsdWVzCi0gICAgICAgIHZhY3V1bV9m aWVsZHMgPSByZW5kZXJfdGVtcGxhdGUoInZhY3V1bV9zZXR0aW5ncy92YWN1dW1fZmllbGRzLmpz b24iKQotCi0gICAgICAgIHZhY3V1bV9maWVsZHMgPSBqc29uLmxvYWRzKHZhY3V1bV9maWVsZHMp Ci0KLSAgICAgICAgIyByZXR1cm5zIGFuIGFycmF5IG9mIHNldHRpbmcgJiBuYW1lIHZhbHVlcwot ICAgICAgICB2YWN1dW1fZmllbGRzX2tleXMgPSAiJyIgKyAiJywnIi5qb2luKAotICAgICAgICAg ICAgdmFjdXVtX2ZpZWxkc1sndG9hc3QnXS5rZXlzKCkpICsgIiciCi0gICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgndmFjdXVtX3NldHRpbmdzL3NxbC92YWN1dW1fZGVmYXVsdHMuc3FsJywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9dmFjdXVtX2ZpZWxkc19rZXlz KQotICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLQotICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAg ICAgICAgIHJvd19uYW1lID0gcm93WyduYW1lJ10KLSAgICAgICAgICAgIHJvd1snbmFtZSddID0g dmFjdXVtX2ZpZWxkc1sndG9hc3QnXVtyb3dfbmFtZV1bMF0KLSAgICAgICAgICAgIHJvd1snbGFi ZWwnXSA9IHZhY3V1bV9maWVsZHNbJ3RvYXN0J11bcm93X25hbWVdWzFdCi0gICAgICAgICAgICBy b3dbJ2NvbHVtbl90eXBlJ10gPSB2YWN1dW1fZmllbGRzWyd0YWJsZSddW3Jvd19uYW1lXVsyXQot Ci0gICAgICAgIHJldHVybiByZXMKKyAgICBkZWYgZ2V0X3ZhY3V1bV90b2FzdF9zZXR0aW5ncyhz ZWxmLCBjb25uLCBzaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgRmV0Y2ggdGhlIGRlZmF1bHQg dmFsdWVzIGZvciBhdXRvdmFjdXVtCisgICAgICAgIGZpZWxkcywgcmV0dXJuIGFuIGFycmF5IG9m CisgICAgICAgICAgLSBsYWJlbAorICAgICAgICAgIC0gbmFtZQorICAgICAgICAgIC0gc2V0dGlu ZworICAgICAgICB2YWx1ZXMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLmZldGNo X2RlZmF1bHRfdmFjdXVtX3NldHRpbmdzKGNvbm4sIHNpZCwgJ3RvYXN0JykKIAogICAgIGRlZiBw YXJzZV92YWN1dW1fZGF0YShzZWxmLCBjb25uLCByZXN1bHQsIHR5cGUpOgogICAgICAgICAiIiIK QEAgLTU2Nyw0NyArNTY0LDQ2IEBAIGNsYXNzIFZhY3V1bVNldHRpbmdzOgogICAgICAgICAqIHR5 cGUgLSB0YWJsZS90b2FzdCB2YWN1dW0gdHlwZQogICAgICAgICAiIiIKIAotICAgICAgICAjIHJl dHVybnMgYW4gYXJyYXkgb2YgbmFtZSAmIGxhYmVsIHZhbHVlcwotICAgICAgICB2YWN1dW1fZmll bGRzID0gcmVuZGVyX3RlbXBsYXRlKCJ2YWN1dW1fc2V0dGluZ3MvdmFjdXVtX2ZpZWxkcy5qc29u IikKKyAgICAgICAgdmFjdXVtX3NldHRpbmdzX3RtcCA9IHNlbGYuZmV0Y2hfZGVmYXVsdF92YWN1 dW1fc2V0dGluZ3MoCisgICAgICAgICAgICBjb25uLCBzZWxmLm1hbmFnZXIuc2lkLCB0eXBlKQog Ci0gICAgICAgIHZhY3V1bV9maWVsZHMgPSBqc29uLmxvYWRzKHZhY3V1bV9maWVsZHMpCisgICAg ICAgIGZvciByb3cgaW4gdmFjdXVtX3NldHRpbmdzX3RtcDoKKyAgICAgICAgICAgIHJvd19uYW1l ID0gcm93WyduYW1lJ10KKyAgICAgICAgICAgIGlmIHR5cGUgaXMgJ3RvYXN0JzoKKyAgICAgICAg ICAgICAgICByb3dfbmFtZSA9ICd0b2FzdF97MH0nLmZvcm1hdChyb3dbJ25hbWUnXSkKKyAgICAg ICAgICAgIGlmIHJvd19uYW1lIGluIHJlc3VsdCBhbmQgcmVzdWx0W3Jvd19uYW1lXSBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgICAgICBpZiByb3dbJ2NvbHVtbl90eXBlJ10gPT0gJ251bWJlcic6 CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmxvYXQocmVzdWx0W3Jvd19uYW1lXSkKKyAg ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludChyZXN1 bHRbcm93X25hbWVdKQorICAgICAgICAgICAgICAgIHJvd1sndmFsdWUnXSA9IHZhbHVlCisgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmICd2YWx1ZScgaW4gcm93OgorICAgICAg ICAgICAgICAgICAgICByb3cucG9wKCd2YWx1ZScpCiAKLSAgICAgICAgIyByZXR1cm5zIGFuIGFy cmF5IG9mIHNldHRpbmcgJiBuYW1lIHZhbHVlcwotICAgICAgICB2YWN1dW1fZmllbGRzX2tleXMg PSAiJyIgKyAiJywnIi5qb2luKAotICAgICAgICAgICAgdmFjdXVtX2ZpZWxkc1t0eXBlXS5rZXlz KCkpICsgIiciCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgndmFjdXVtX3NldHRpbmdz L3NxbC92YWN1dW1fZGVmYXVsdHMuc3FsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbHVtbnM9dmFjdXVtX2ZpZWxkc19rZXlzKQotICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgcmV0dXJuIHZhY3V1bV9zZXR0aW5nc190bXAKIAot ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKLSAgICAgICAgaWYgdHlwZSBpcyAndGFibGUnOgotICAg ICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICByb3dfbmFt ZSA9IHJvd1snbmFtZSddCi0gICAgICAgICAgICAgICAgcm93WyduYW1lJ10gPSB2YWN1dW1fZmll bGRzW3R5cGVdW3Jvd19uYW1lXVswXQotICAgICAgICAgICAgICAgIHJvd1snbGFiZWwnXSA9IHZh Y3V1bV9maWVsZHNbdHlwZV1bcm93X25hbWVdWzFdCi0gICAgICAgICAgICAgICAgcm93Wydjb2x1 bW5fdHlwZSddID0gdmFjdXVtX2ZpZWxkc1t0eXBlXVtyb3dfbmFtZV1bMl0KLSAgICAgICAgICAg ICAgICBpZiByZXN1bHRbcm93WyduYW1lJ11dIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAg ICAgICBpZiByb3dbJ2NvbHVtbl90eXBlJ10gPT0gJ251bWJlcic6Ci0gICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZSA9IGZsb2F0KHJlc3VsdFtyb3dbJ25hbWUnXV0pCi0gICAgICAgICAgICAg ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludChyZXN1bHRb cm93WyduYW1lJ11dKQotICAgICAgICAgICAgICAgICAgICByb3dbJ3ZhbHVlJ10gPSByb3dbJ3Nl dHRpbmcnXSA9IHZhbHVlCi0KLSAgICAgICAgZWxpZiB0eXBlIGlzICd0b2FzdCc6Ci0gICAgICAg ICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgotICAgICAgICAgICAgICAgIHJvd19vbGRfbmFt ZSA9IHJvd1snbmFtZSddCi0gICAgICAgICAgICAgICAgcm93X25hbWUgPSAndG9hc3RfezB9Jy5m b3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHZhY3V1bV9maWVsZHNbdHlwZV1bcm93X29sZF9u YW1lXVswXSkKLSAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSA9IHZhY3V1bV9maWVsZHNbdHlw ZV1bcm93X29sZF9uYW1lXVswXQotICAgICAgICAgICAgICAgIHJvd1snbGFiZWwnXSA9IHZhY3V1 bV9maWVsZHNbdHlwZV1bcm93X29sZF9uYW1lXVsxXQotICAgICAgICAgICAgICAgIHJvd1snY29s dW1uX3R5cGUnXSA9IHZhY3V1bV9maWVsZHNbdHlwZV1bcm93X29sZF9uYW1lXVsyXQotICAgICAg ICAgICAgICAgIGlmIHJlc3VsdFtyb3dfbmFtZV0gYW5kIHJlc3VsdFtyb3dfbmFtZV0gaXMgbm90 IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHJvd1snY29sdW1uX3R5cGUnXSA9PSAnbnVt YmVyJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmxvYXQocmVzdWx0W3Jvd19u YW1lXSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlID0gaW50KHJlc3VsdFtyb3dfbmFtZV0pCi0gICAgICAgICAgICAgICAgICAgIHJvd1sn dmFsdWUnXSA9IHJvd1snc2V0dGluZyddID0gdmFsdWUKK2RlZiBnZXRfc2NoZW1hKHNpZCwgZGlk LCBzY2lkKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBzY2hl bWEgbmFtZS4KKyAgICAiIiIKKworICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9E UklWRVIpCisgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2lkKQorICAg IGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWRpZCkKKworICAgIHZlciA9IG1hbmFnZXIu dmVyc2lvbgorICAgIHNlcnZlcl90eXBlID0gbWFuYWdlci5zZXJ2ZXJfdHlwZQorCisgICAgIyBG ZXRjaCBzY2hlbWEgbmFtZQorICAgIHN0YXR1cywgc2NoZW1hX25hbWUgPSBjb25uLmV4ZWN1dGVf c2NhbGFyKAorICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWydzY2hlbWFzJywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezB9LyN7MX0jJy5mb3JtYXQoc2VydmVy X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NxbC9nZXRfbmFt ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uPWNvbm4sIHNjaWQ9c2NpZAor ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICkKIAotICAgICAgICByZXR1cm4gcmVzWydy b3dzJ10KKyAgICByZXR1cm4gc3RhdHVzLCBzY2hlbWFfbmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9fX2luaXRfXy5weQppbmRleCA0YmMzNTdjODMuLjM4 N2VlOTY2MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv X19pbml0X18ucHkKQEAgLTksNiArOSw3IEBACiAKICIiIkltcGxlbWVudHMgVmlldyBhbmQgTWF0 ZXJpYWxpemVkIFZpZXcgTm9kZSIiIgogCitpbXBvcnQgY29weQogZnJvbSBmdW5jdG9vbHMgaW1w b3J0IHdyYXBzCiAKIGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KQEAgLTE4LDEzICsxOSwxNiBA QCBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGltcG9ydCBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFzZXMKIGZyb20gY29u ZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0aWxzIGltcG9ydCBcCi0gICAgU2No ZW1hQ2hpbGRNb2R1bGUsIHBhcnNlX3J1bGVfZGVmaW5pdGlvbiwgVmFjdXVtU2V0dGluZ3MKKyAg ICBTY2hlbWFDaGlsZE1vZHVsZSwgcGFyc2VfcnVsZV9kZWZpbml0aW9uLCBWYWN1dW1TZXR0aW5n cywgZ2V0X3NjaGVtYQogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LnV0aWxzIGltcG9ydCBwYXJzZV9wcml2X2Zyb21fZGIsIFwKICAgICBwYXJzZV9wcml2X3RvX2Ri CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3CiBmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUK IGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1p bi50b29scy5zY2hlbWFfZGlmZi5ub2RlX3JlZ2lzdHJ5IGltcG9ydCBTY2hlbWFEaWZmUmVnaXN0 cnkKK2Zyb20gcGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5jb21wYXJlIGltcG9ydCBTY2hlbWFE aWZmT2JqZWN0Q29tcGFyZQorCiAKICIiIgogICAgIFRoaXMgbW9kdWxlIGlzIHJlc3BvbnNpYmxl IGZvciBnZW5lcmF0aW5nIHR3byBub2RlcwpAQCAtMTk3LDcgKzIwMSw3IEBAIGRlZiBjaGVja19w cmVjb25kaXRpb24oZik6CiAgICAgcmV0dXJuIHdyYXAKIAogCi1jbGFzcyBWaWV3Tm9kZShQR0No aWxkTm9kZVZpZXcsIFZhY3V1bVNldHRpbmdzKToKK2NsYXNzIFZpZXdOb2RlKFBHQ2hpbGROb2Rl VmlldywgVmFjdXVtU2V0dGluZ3MsIFNjaGVtYURpZmZPYmplY3RDb21wYXJlKToKICAgICAiIiIK ICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3Ig dmlldyBub2RlLgogCkBAIC0yNTAsNiArMjU0LDEwIEBAIGNsYXNzIFZpZXdOb2RlKFBHQ2hpbGRO b2RlVmlldywgVmFjdXVtU2V0dGluZ3MpOgogICAgICogZGVwZW5kZW50KGdpZCwgc2lkLCBkaWQs IHNjaWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgZGVwZW5kZW50IGxp c3QgdG8gc2hvdyBpdCBpbiBkZXBlbmRlbnQKICAgICAgICAgcGFuZSBmb3IgdGhlIHNlbGVjdGVk IHZpZXcgbm9kZS4KKworICAgICogY29tcGFyZSgqKmt3YXJncyk6CisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBjb21wYXJlIHRoZSB2aWV3IG5vZGVzIGZyb20gdHdvCisgICAgICAgIGRpZmZl cmVudCBzY2hlbWFzLgogICAgICIiIgogICAgIG5vZGVfdHlwZSA9IHZpZXdfYmx1ZXByaW50Lm5v ZGVfdHlwZQogCkBAIC0yOTAsNiArMjk4LDggQEAgY2xhc3MgVmlld05vZGUoUEdDaGlsZE5vZGVW aWV3LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICB7J2dldCc6ICdnZXRfdG9hc3RfdGFi bGVfdmFjdXVtJ31dCiAgICAgfSkKIAorICAgIGtleXNfdG9faWdub3JlID0gWydvaWQnLCAnc2No ZW1hJywgJ3htaW4nXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6 CiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplIHRoZSB2YXJpYWJsZXMgdXNlZCBieSBt ZXRob2RzIG9mIFZpZXdOb2RlLgpAQCAtNDAwLDIxICs0MTAsMzcgQEAgY2xhc3MgVmlld05vZGUo UEdDaGlsZE5vZGVWaWV3LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIEZldGNoZXMgdGhlIHBy b3BlcnRpZXMgb2YgYW4gaW5kaXZpZHVhbCB2aWV3CiAgICAgICAgIGFuZCByZW5kZXIgaW4gdGhl IHByb3BlcnRpZXMgdGFiCiAgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu X2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwgdmlkKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAg ICAgICAgICAgcmVzcG9uc2U9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAp CisKKyAgICBkZWYgX2ZldGNoX3Byb3BlcnRpZXMoc2VsZiwgc2NpZCwgdmlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0aGUgcHJvcGVydGll cyBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdAorICAgICAgICA6cGFyYW0gc2NpZDoKKyAgICAgICAg OnBhcmFtIHZpZDoKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCiAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdzcWwvcHJvcGVydGllcy5zcWwnXQogICAgICAgICApLCB2aWQ9dmlkLCBkYXRsYXN0c3lz b2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAg IGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRl eHQoIiIiQ291bGQgbm90IGZpbmQgdGhlIHZpZXcuIiIiKSkKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgZ29uZShnZXR0ZXh0KCIiIkNvdWxkIG5vdCBmaW5kIHRoZSB2aWV3LiIiIikpCiAKICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAogICAgICAgICAgICAgW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ3NxbC9hY2wuc3FsJ10pLCB2aWQ9dmlkKQogICAgICAgICBzdGF0dXMs IGRhdGFjbHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICBpZiBub3Qg c3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCiAKICAgICAgICAgZm9yIHJvdyBpbiBkYXRhY2xyZXNbJ3Jvd3MnXToKICAg ICAgICAgICAgIHByaXYgPSBwYXJzZV9wcml2X2Zyb21fZGIocm93KQpAQCAtNDI4LDEwICs0NTQs NyBAQCBjbGFzcyBWaWV3Tm9kZShQR0NoaWxkTm9kZVZpZXcsIFZhY3V1bVNldHRpbmdzKToKICAg ICAgICAgIyBtZXJnaW5nIGZvcm1hdGVkIHJlc3VsdCB3aXRoIG1haW4gcmVzdWx0IGFnYWluCiAg ICAgICAgIHJlc3VsdC51cGRhdGUoZnJtdGRfcmVzbHQpCiAKLSAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCi0gICAgICAgICAgICByZXNwb25zZT1yZXN1bHQsCi0gICAgICAgICAgICBzdGF0 dXM9MjAwCi0gICAgICAgICkKKyAgICAgICAgcmV0dXJuIFRydWUsIHJlc3VsdAogCiAgICAgQHN0 YXRpY21ldGhvZAogICAgIGRlZiBmb3JtYXR0ZXIocmVzdWx0KToKQEAgLTU1Niw3ICs1NzksNyBA QCBjbGFzcyBWaWV3Tm9kZShQR0NoaWxkTm9kZVZpZXcsIFZhY3V1bVNldHRpbmdzKToKICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCiAg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgotICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdmlkPU5vbmUpOgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdmlkPU5vbmUsIG9ubHlfc3FsPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCBkcm9wIGEgdmlldyBvYmplY3QKICAgICAgICAgIiIiCkBAIC02MDQs NiArNjI3LDEwIEBAIGNsYXNzIFZpZXdOb2RlKFBHQ2hpbGROb2RlVmlldywgVmFjdXVtU2V0dGlu Z3MpOgogICAgICAgICAgICAgICAgICAgICBuc3BuYW1lPXJlc19kYXRhWydyb3dzJ11bMF1bJ3Nj aGVtYSddLAogICAgICAgICAgICAgICAgICAgICBuYW1lPXJlc19kYXRhWydyb3dzJ11bMF1bJ25h bWUnXSwgY2FzY2FkZT1jYXNjYWRlCiAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAg ICAgaWYgb25seV9zcWw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTUUwKKwogICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKICAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKQEAgLTg0MCw3ICs4NjcsNyBAQCBj bGFzcyBWaWV3Tm9kZShQR0NoaWxkTm9kZVZpZXcsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAg ICByZXR1cm4gY29sdW1ucwogCi0gICAgZGVmIGdldF9ydWxlX3NxbChzZWxmLCB2aWQpOgorICAg IGRlZiBnZXRfcnVsZV9zcWwoc2VsZiwgdmlkLCBkaXNwbGF5X2NvbW1lbnRzPVRydWUpOgogICAg ICAgICAiIiIKICAgICAgICAgR2V0IGFsbCBub24gc3lzdGVtIHJ1bGVzIG9mIHZpZXcgbm9kZSwK ICAgICAgICAgZ2VuZXJhdGUgdGhlaXIgc3FsIGFuZCByZW5kZXIKQEAgLTg2OSwxMiArODk2LDEy IEBAIGNsYXNzIFZpZXdOb2RlKFBHQ2hpbGROb2RlVmlldywgVmFjdXVtU2V0dGluZ3MpOgogICAg ICAgICAgICAgICAgIHJlcyA9IHBhcnNlX3J1bGVfZGVmaW5pdGlvbihyZXMpCiAgICAgICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAogICAgICAgICAgICAgICAgICAg ICBbc2VsZi5ydWxlX3RlbXBfcGF0aCwgJ3NxbC9jcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICBkYXRhPXJlcywgZGlzcGxheV9jb21tZW50cz1UcnVlKQorICAgICAgICAgICAgICAg ICAgICBkYXRhPXJlcywgZGlzcGxheV9jb21tZW50cz1kaXNwbGF5X2NvbW1lbnRzKQogICAgICAg ICAgICAgICAgIFNRTF9kYXRhICs9ICdcbicKICAgICAgICAgICAgICAgICBTUUxfZGF0YSArPSBT UUwKICAgICAgICAgcmV0dXJuIFNRTF9kYXRhCiAKLSAgICBkZWYgZ2V0X2NvbXBvdW5kX3RyaWdn ZXJfc3FsKHNlbGYsIHZpZCk6CisgICAgZGVmIGdldF9jb21wb3VuZF90cmlnZ2VyX3NxbChzZWxm LCB2aWQsIGRpc3BsYXlfY29tbWVudHM9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBHZXQg YWxsIGNvbXBvdW5kIHRyaWdnZXIgbm9kZXMgYXNzb2NpYXRlZCB3aXRoIHZpZXcgbm9kZSwKICAg ICAgICAgZ2VuZXJhdGUgdGhlaXIgc3FsIGFuZCByZW5kZXIgaW50byBzcWwgdGFiCkBAIC05NDUs MTMgKzk3MiwxMyBAQCBjbGFzcyBWaWV3Tm9kZShQR0NoaWxkTm9kZVZpZXcsIFZhY3V1bVNldHRp bmdzKToKICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY3RfdHJpZ2dlcl90ZW1wX3BhdGgsCiAg ICAgICAgICAgICAgICAgICAgICAnc3FsL3swfS8jezF9Iy9jcmVhdGUuc3FsJy5mb3JtYXQoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlLCBzZWxmLm1h bmFnZXIudmVyc2lvbildKSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXNfcm93cywgZGlz cGxheV9jb21tZW50cz1UcnVlKQorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlc19yb3dzLCBk aXNwbGF5X2NvbW1lbnRzPWRpc3BsYXlfY29tbWVudHMpCiAgICAgICAgICAgICAgICAgU1FMX2Rh dGEgKz0gJ1xuJwogICAgICAgICAgICAgICAgIFNRTF9kYXRhICs9IFNRTAogCiAgICAgICAgIHJl dHVybiBTUUxfZGF0YQogCi0gICAgZGVmIGdldF90cmlnZ2VyX3NxbChzZWxmLCB2aWQpOgorICAg IGRlZiBnZXRfdHJpZ2dlcl9zcWwoc2VsZiwgdmlkLCBkaXNwbGF5X2NvbW1lbnRzPVRydWUpOgog ICAgICAgICAiIiIKICAgICAgICAgR2V0IGFsbCB0cmlnZ2VyIG5vZGVzIGFzc29jaWF0ZWQgd2l0 aCB2aWV3IG5vZGUsCiAgICAgICAgIGdlbmVyYXRlIHRoZWlyIHNxbCBhbmQgcmVuZGVyCkBAIC0x MDM4LDEzICsxMDY1LDEzIEBAIGNsYXNzIFZpZXdOb2RlKFBHQ2hpbGROb2RlVmlldywgVmFjdXVt U2V0dGluZ3MpOgogICAgICAgICAgICAgICAgIFtzZWxmLnRyaWdnZXJfdGVtcF9wYXRoLAogICAg ICAgICAgICAgICAgICAnc3FsL3swfS8jezF9Iy9jcmVhdGUuc3FsJy5mb3JtYXQoCiAgICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUsIHNlbGYubWFuYWdlci52ZXJz aW9uKV0pLAotICAgICAgICAgICAgICAgIGRhdGE9cmVzX3Jvd3MsIGRpc3BsYXlfY29tbWVudHM9 VHJ1ZSkKKyAgICAgICAgICAgICAgICBkYXRhPXJlc19yb3dzLCBkaXNwbGF5X2NvbW1lbnRzPWRp c3BsYXlfY29tbWVudHMpCiAgICAgICAgICAgICBTUUxfZGF0YSArPSAnXG4nCiAgICAgICAgICAg ICBTUUxfZGF0YSArPSBTUUwKIAogICAgICAgICByZXR1cm4gU1FMX2RhdGEKIAotICAgIGRlZiBn ZXRfaW5kZXhfc3FsKHNlbGYsIGRpZCwgdmlkKToKKyAgICBkZWYgZ2V0X2luZGV4X3NxbChzZWxm LCBkaWQsIHZpZCwgZGlzcGxheV9jb21tZW50cz1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAg IEdldCBhbGwgaW5kZXggYXNzb2NpYXRlZCB3aXRoIHZpZXcgbm9kZSwKICAgICAgICAgZ2VuZXJh dGUgdGhlaXIgc3FsIGFuZCByZW5kZXIKQEAgLTEwODQsMTcgKzExMTEsMjMgQEAgY2xhc3MgVmll d05vZGUoUEdDaGlsZE5vZGVWaWV3LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCiAgICAgICAgICAgICAgICAgW3NlbGYuaW5kZXhf dGVtcF9wYXRoLAogICAgICAgICAgICAgICAgICAnc3FsLyN7MH0jL2NyZWF0ZS5zcWwnLmZvcm1h dChzZWxmLm1hbmFnZXIudmVyc2lvbildKSwKLSAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGRp c3BsYXlfY29tbWVudHM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGRpc3BsYXlf Y29tbWVudHM9ZGlzcGxheV9jb21tZW50cykKICAgICAgICAgICAgIFNRTF9kYXRhICs9ICdcbicK ICAgICAgICAgICAgIFNRTF9kYXRhICs9IFNRTAogICAgICAgICByZXR1cm4gU1FMX2RhdGEKIAog ICAgIEBjaGVja19wcmVjb25kaXRpb24KLSAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHZpZCk6CisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB2aWQs IGRpZmZfc2NoZW1hPU5vbmUsCisgICAgICAgICAgICBqc29uX3Jlc3A9VHJ1ZSk6CiAgICAgICAg ICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHJlbmRlciBp bnRvIHRoZSBzcWwgcGFuZWwKICAgICAgICAgIiIiCiAKKyAgICAgICAgZGlzcGxheV9jb21tZW50 cyA9IFRydWUKKworICAgICAgICBpZiBub3QganNvbl9yZXNwOgorICAgICAgICAgICAgZGlzcGxh eV9jb21tZW50cyA9IEZhbHNlCisKICAgICAgICAgU1FMX2RhdGEgPSAnJwogICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCiAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnc3FsL3Byb3BlcnRpZXMuc3FsJ10pLApAQCAtMTExMSw2ICsxMTQ0LDkgQEAgY2xhc3Mg Vmlld05vZGUoUEdDaGlsZE5vZGVWaWV3LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAp CiAKICAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgaWYgZGlmZl9zY2hl bWE6CisgICAgICAgICAgICByZXN1bHRbJ3NjaGVtYSddID0gZGlmZl9zY2hlbWEKKwogICAgICAg ICAjIHNlbmRpbmcgcmVzdWx0IHRvIGZvcm10dGVyCiAgICAgICAgIGZybXRkX3Jlc2x0ID0gc2Vs Zi5mb3JtYXR0ZXIocmVzdWx0KQogCkBAIC0xMTUyLDE4ICsxMTg4LDIwIEBAIGNsYXNzIFZpZXdO b2RlKFBHQ2hpbGROb2RlVmlldywgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ3NxbC9jcmVhdGUuc3FsJ10pLAogICAgICAgICAgICAgZGF0YT1yZXN1 bHQsCiAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwKLSAgICAgICAgICAgIGRpc3BsYXlfY29t bWVudHM9VHJ1ZQorICAgICAgICAgICAgZGlzcGxheV9jb21tZW50cz1kaXNwbGF5X2NvbW1lbnRz CiAgICAgICAgICkKICAgICAgICAgU1FMICs9ICJcbiIKICAgICAgICAgU1FMICs9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbigKICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwv Z3JhbnQuc3FsJ10pLCBkYXRhPXJlc3VsdCkKIAogICAgICAgICBTUUxfZGF0YSArPSBTUUwKLSAg ICAgICAgU1FMX2RhdGEgKz0gc2VsZi5nZXRfcnVsZV9zcWwodmlkKQotICAgICAgICBTUUxfZGF0 YSArPSBzZWxmLmdldF90cmlnZ2VyX3NxbCh2aWQpCi0gICAgICAgIFNRTF9kYXRhICs9IHNlbGYu Z2V0X2NvbXBvdW5kX3RyaWdnZXJfc3FsKHZpZCkKLSAgICAgICAgU1FMX2RhdGEgKz0gc2VsZi5n ZXRfaW5kZXhfc3FsKGRpZCwgdmlkKQorICAgICAgICBTUUxfZGF0YSArPSBzZWxmLmdldF9ydWxl X3NxbCh2aWQsIGRpc3BsYXlfY29tbWVudHMpCisgICAgICAgIFNRTF9kYXRhICs9IHNlbGYuZ2V0 X3RyaWdnZXJfc3FsKHZpZCwgZGlzcGxheV9jb21tZW50cykKKyAgICAgICAgU1FMX2RhdGEgKz0g c2VsZi5nZXRfY29tcG91bmRfdHJpZ2dlcl9zcWwodmlkLCBkaXNwbGF5X2NvbW1lbnRzKQorICAg ICAgICBTUUxfZGF0YSArPSBzZWxmLmdldF9pbmRleF9zcWwoZGlkLCB2aWQsIGRpc3BsYXlfY29t bWVudHMpCiAKKyAgICAgICAgaWYgbm90IGpzb25fcmVzcDoKKyAgICAgICAgICAgIHJldHVybiBT UUxfZGF0YQogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUxfZGF0YSkK IAogICAgIEBjaGVja19wcmVjb25kaXRpb24KQEAgLTEzNTcsNiArMTM5NSw2MCBAQCBjbGFzcyBW aWV3Tm9kZShQR0NoaWxkTm9kZVZpZXcsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwpCiAKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGZldGNoX29iamVjdHNfdG9fY29tcGFyZShzZWxmLCBzaWQsIGRpZCwgc2NpZCwg b2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNo IHRoZSBsaXN0IG9mIGFsbCB0aGUgdmlld3MgZm9yCisgICAgICAgIHNwZWNpZmllZCBzY2hlbWEg aWQuCisKKyAgICAgICAgOnBhcmFtIHNpZDogU2VydmVyIElkCisgICAgICAgIDpwYXJhbSBkaWQ6 IERhdGFiYXNlIElkCisgICAgICAgIDpwYXJhbSBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgOnJl dHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IGRpY3QoKQorCisgICAgICAgIGlmIG5v dCBvaWQ6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3NxbC9ub2Rlcy5zcWwnXSksIGRpZD1kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NpZD1zY2lkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAg ICAgICAgICAgIHN0YXR1cywgdmlld3MgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgY3VycmVudF9hcHAu bG9nZ2VyLmVycm9yKHZpZXdzKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg ICAgICAgICBmb3Igcm93IGluIHZpZXdzWydyb3dzJ106CisgICAgICAgICAgICAgICAgc3RhdHVz LCBkYXRhID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhzY2lkLCByb3dbJ29pZCddKQorICAgICAg ICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmVzW3Jvd1snbmFtZSdd XSA9IGRhdGEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0YXR1cywgZGF0YSA9IHNlbGYu X2ZldGNoX3Byb3BlcnRpZXMoc2NpZCwgb2lkKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoZGF0YSkKKyAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJlcyA9IGRhdGEKKworICAgICAgICBy ZXR1cm4gcmVzCisKKyAgICBkZWYgZ2V0X3NxbF9mcm9tX2RpZmYoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgb2lkLCBkYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZf c2NoZW1hPU5vbmUsIGRyb3Bfc3FsPUZhbHNlKToKKyAgICAgICAgc3FsID0gJycKKyAgICAgICAg aWYgZGF0YToKKyAgICAgICAgICAgIGlmIGRpZmZfc2NoZW1hOgorICAgICAgICAgICAgICAgIGRh dGFbJ3NjaGVtYSddID0gZGlmZl9zY2hlbWEKKyAgICAgICAgICAgIHNxbCwgbmFtZU9yRXJyb3Ig PSBzZWxmLmdldFNRTChnaWQsIHNpZCwgZGlkLCBkYXRhLCBvaWQpCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBpZiBkcm9wX3NxbDoKKyAgICAgICAgICAgICAgICBzcWwgPSBzZWxmLmRlbGV0 ZShnaWQ9Z2lkLCBzaWQ9c2lkLCBkaWQ9ZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNjaWQ9c2NpZCwgdmlkPW9pZCwgb25seV9zcWw9VHJ1ZSkKKyAgICAgICAgICAgIGVs aWYgZGlmZl9zY2hlbWE6CisgICAgICAgICAgICAgICAgc3FsID0gc2VsZi5zcWwoZ2lkPWdpZCwg c2lkPXNpZCwgZGlkPWRpZCwgc2NpZD1zY2lkLCB2aWQ9b2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRpZmZfc2NoZW1hPWRpZmZfc2NoZW1hLCBqc29uX3Jlc3A9RmFsc2UpCisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNxbCA9IHNlbGYuc3FsKGdpZD1naWQs IHNpZD1zaWQsIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdmlkPW9pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBqc29uX3Jlc3A9RmFsc2UpCisgICAgICAgIHJldHVybiBzcWwKKwogCiAj IE92ZXJyaWRlIHRoZSBvcGVyYXRpb25zIGZvciBtYXRlcmlhbGl6ZWQgdmlldwogbXZpZXdfb3Bl cmF0aW9ucyA9IHsKQEAgLTE2MzEsMTEgKzE3MjMsMTcgQEAgY2xhc3MgTVZpZXdOb2RlKFZpZXdO b2RlLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIHJldHVybiBTUUwsIGRhdGFbJ25hbWUnXSBp ZiAnbmFtZScgaW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10KIAogICAgIEBjaGVja19wcmVj b25kaXRpb24KLSAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHZpZCk6Cisg ICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB2aWQsIGRpZmZfc2NoZW1hPU5v bmUsCisgICAgICAgICAgICBqc29uX3Jlc3A9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHJlbmRlciBpbnRvIHRoZSBzcWwgcGFu ZWwKICAgICAgICAgIiIiCiAKKyAgICAgICAgZGlzcGxheV9jb21tZW50cyA9IFRydWUKKworICAg ICAgICBpZiBub3QganNvbl9yZXNwOgorICAgICAgICAgICAgZGlzcGxheV9jb21tZW50cyA9IEZh bHNlCisKICAgICAgICAgU1FMX2RhdGEgPSAnJwogICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCiAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL3Byb3Bl cnRpZXMuc3FsJ10pLApAQCAtMTY1NCw2ICsxNzUyLDkgQEAgY2xhc3MgTVZpZXdOb2RlKFZpZXdO b2RlLCBWYWN1dW1TZXR0aW5ncyk6CiAKICAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11bMF0K IAorICAgICAgICBpZiBkaWZmX3NjaGVtYToKKyAgICAgICAgICAgIHJlc3VsdFsnc2NoZW1hJ10g PSBkaWZmX3NjaGVtYQorCiAgICAgICAgICMgc2VuZGluZyByZXN1bHQgdG8gZm9ybXR0ZXIKICAg ICAgICAgZnJtdGRfcmVzbHQgPSBzZWxmLmZvcm1hdHRlcihyZXN1bHQpCiAKQEAgLTE3MzIsMTcg KzE4MzMsMjAgQEAgY2xhc3MgTVZpZXdOb2RlKFZpZXdOb2RlLCBWYWN1dW1TZXR0aW5ncyk6CiAg ICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2NyZWF0ZS5zcWwnXSksCiAgICAg ICAgICAgICBkYXRhPXJlc3VsdCwKICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAotICAgICAg ICAgICAgZGlzcGxheV9jb21tZW50cz1UcnVlCisgICAgICAgICAgICBkaXNwbGF5X2NvbW1lbnRz PWRpc3BsYXlfY29tbWVudHMKICAgICAgICAgKQogICAgICAgICBTUUwgKz0gIlxuIgogICAgICAg ICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAogICAgICAgICAgICAgW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3NxbC9ncmFudC5zcWwnXSksIGRhdGE9cmVzdWx0KQogCiAgICAgICAgIFNR TF9kYXRhICs9IFNRTAotICAgICAgICBTUUxfZGF0YSArPSBzZWxmLmdldF9ydWxlX3NxbCh2aWQp Ci0gICAgICAgIFNRTF9kYXRhICs9IHNlbGYuZ2V0X3RyaWdnZXJfc3FsKHZpZCkKLSAgICAgICAg U1FMX2RhdGEgKz0gc2VsZi5nZXRfaW5kZXhfc3FsKGRpZCwgdmlkKQorICAgICAgICBTUUxfZGF0 YSArPSBzZWxmLmdldF9ydWxlX3NxbCh2aWQsIGRpc3BsYXlfY29tbWVudHMpCisgICAgICAgIFNR TF9kYXRhICs9IHNlbGYuZ2V0X3RyaWdnZXJfc3FsKHZpZCwgZGlzcGxheV9jb21tZW50cykKKyAg ICAgICAgU1FMX2RhdGEgKz0gc2VsZi5nZXRfaW5kZXhfc3FsKGRpZCwgdmlkLCBkaXNwbGF5X2Nv bW1lbnRzKQogICAgICAgICBTUUxfZGF0YSA9IFNRTF9kYXRhLnN0cmlwKCdcbicpCisKKyAgICAg ICAgaWYgbm90IGpzb25fcmVzcDoKKyAgICAgICAgICAgIHJldHVybiBTUUxfZGF0YQogICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUxfZGF0YSkKIAogICAgIEBjaGVja19w cmVjb25kaXRpb24KQEAgLTE3NTYsOSArMTg2MCw5IEBAIGNsYXNzIE1WaWV3Tm9kZShWaWV3Tm9k ZSwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICB2YWx1ZXMKICAgICAgICAgIiIiCiAKLSAgICAg ICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RhYmxlX3NldHRpbmdzKHNlbGYuY29ubikKKyAgICAg ICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RhYmxlX3NldHRpbmdzKHNlbGYuY29ubiwgc2lkKQog ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sn cm93cyddLAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAogICAgICAgICAgICAgc3RhdHVzPTIw MAogICAgICAgICApCiAKQEAgLTE3NzIsMTAgKzE4NzYsMTAgQEAgY2xhc3MgTVZpZXdOb2RlKFZp ZXdOb2RlLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgLSBzZXR0aW5nCiAgICAgICAgIHZh bHVlcwogICAgICAgICAiIiIKLSAgICAgICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RvYXN0X3Nl dHRpbmdzKHNlbGYuY29ubikKKyAgICAgICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RvYXN0X3Nl dHRpbmdzKHNlbGYuY29ubiwgc2lkKQogCiAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAot ICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICByZXNwb25zZT1y ZXMsCiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIApAQCAtMTc4NSwyMSArMTg4 OSwzOSBAQCBjbGFzcyBNVmlld05vZGUoVmlld05vZGUsIFZhY3V1bVNldHRpbmdzKToKICAgICAg ICAgRmV0Y2hlcyB0aGUgcHJvcGVydGllcyBvZiBhbiBpbmRpdmlkdWFsIHZpZXcKICAgICAgICAg YW5kIHJlbmRlciBpbiB0aGUgcHJvcGVydGllcyB0YWIKICAgICAgICAgIiIiCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5fZmV0Y2hfcHJvcGVydGllcyhkaWQsIHNjaWQsIHZpZCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYs IGRpZCwgc2NpZCwgdmlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBmZXRjaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdAorICAg ICAgICA6cGFyYW0gZGlkOgorICAgICAgICA6cGFyYW0gc2NpZDoKKyAgICAgICAgOnBhcmFtIHZp ZDoKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCiAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbigKICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwv cHJvcGVydGllcy5zcWwnXQogICAgICAgICApLCBkaWQ9ZGlkLCB2aWQ9dmlkLCBkYXRsYXN0c3lz b2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogCiAgICAgICAg IGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRl eHQoIiIiQ291bGQgbm90IGZpbmQgdGhlIG1hdGVyaWFsaXplZCB2aWV3LiIiIikpCisgICAgICAg ICAgICByZXR1cm4gRmFsc2UsIGdvbmUoCisgICAgICAgICAgICAgICAgZ2V0dGV4dCgiIiJDb3Vs ZCBub3QgZmluZCB0aGUgbWF0ZXJpYWxpemVkIHZpZXcuIiIiKSkKIAogICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCiAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnc3FsL2FjbC5zcWwnXSksIHZpZD12aWQpCiAgICAgICAgIHN0YXR1cywgZGF0YWNscmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAg ICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK IAogICAgICAgICBmb3Igcm93IGluIGRhdGFjbHJlc1sncm93cyddOgogICAgICAgICAgICAgcHJp diA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCkBAIC0xODE4LDEwICsxOTQwLDcgQEAgY2xhc3Mg TVZpZXdOb2RlKFZpZXdOb2RlLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIHJlc3VsdFsndmFj dXVtX3RvYXN0J10gPSBzZWxmLnBhcnNlX3ZhY3V1bV9kYXRhKAogICAgICAgICAgICAgc2VsZi5j b25uLCByZXN1bHQsICd0b2FzdCcpCiAKLSAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0g ICAgICAgICAgICByZXNwb25zZT1yZXN1bHQsCi0gICAgICAgICAgICBzdGF0dXM9MjAwCi0gICAg ICAgICkKKyAgICAgICAgcmV0dXJuIFRydWUsIHJlc3VsdAogCiAgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiByZWZyZXNoX2RhdGEoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdmlk KToKQEAgLTE4NzMsNiArMTk5MiwzNCBAQCBjbGFzcyBNVmlld05vZGUoVmlld05vZGUsIFZhY3V1 bVNldHRpbmdzKToKICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkK ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQogCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBmZXRjaF9vYmplY3RzX3RvX2Nv bXBhcmUoc2VsZiwgc2lkLCBkaWQsIHNjaWQsIG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBhbGwgdGhlIG12aWV3cyBm b3IKKyAgICAgICAgc3BlY2lmaWVkIHNjaGVtYSBpZC4KKworICAgICAgICA6cGFyYW0gc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgOnBhcmFtIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgOnBhcmFt IHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAg cmVzID0gZGljdCgpCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdzcWwvbm9kZXMuc3FsJ10pLCBkaWQ9ZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2NpZD1zY2lkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAg ICAgIHN0YXR1cywgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZGlkLCBzY2lkLCByb3db J29pZCddKQorICAgICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJlc1tyb3db J25hbWUnXV0gPSBkYXRhCisKKyAgICAgICAgcmV0dXJuIHJlcworCiAKK1NjaGVtYURpZmZSZWdp c3RyeSgndmlldycsIFZpZXdOb2RlKQogVmlld05vZGUucmVnaXN0ZXJfbm9kZV92aWV3KHZpZXdf Ymx1ZXByaW50KQorU2NoZW1hRGlmZlJlZ2lzdHJ5KCdtdmlldycsIE1WaWV3Tm9kZSkKIE1WaWV3 Tm9kZS5yZWdpc3Rlcl9ub2RlX3ZpZXcobXZpZXdfYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXdzL3BnLzkuMl9wbHVzL3NxbC91cGRhdGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXdzL3BnLzkuMl9wbHVzL3NxbC91cGRhdGUuc3FsCmluZGV4IDM4NjA2 Y2MwYi4uZDQ5ZjdmYjlmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlld3MvcGcv OS4yX3BsdXMvc3FsL3VwZGF0ZS5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXdzL3Bn LzkuMl9wbHVzL3NxbC91cGRhdGUuc3FsCkBAIC0xOSw3ICsxOSw3IEBAIEFMVEVSIFRBQkxFIHt7 IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQogeyUgZW5kaWYgJX0KIHsl IGlmIGRlZiBhbmQgZGVmICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpICV9CiBDUkVB VEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1l KSB9fQotICAgIFdJVEggKHNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0eV9iYXJyaWVy fGxvd2VyIGlmIGRhdGEuc2VjdXJpdHlfYmFycmllciBlbHNlIG9fZGF0YS5zZWN1cml0eV9iYXJy aWVyfGRlZmF1bHQoJ2ZhbHNlJywgJ3RydWUnKXxsb3dlciB9fSkKKyAgICBXSVRIIChzZWN1cml0 eV9iYXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciBpZiBkYXRhLnNlY3VyaXR5 X2JhcnJpZXIgaXMgZGVmaW5lZCBlbHNlIG9fZGF0YS5zZWN1cml0eV9iYXJyaWVyfGRlZmF1bHQo J2ZhbHNlJywgJ3RydWUnKXxsb3dlciB9fSkKICAgICBBUwogICAgIHt7IGRlZiB9fTsKIHslIGVs c2UgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3cy9wZy85LjNfcGx1cy9z cWwvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3cy9wZy85LjNfcGx1cy9zcWwv dXBkYXRlLnNxbAppbmRleCAzODYwNmNjMGIuLmQ0OWY3ZmI5ZiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXdzL3BnLzkuM19wbHVzL3NxbC91cGRhdGUuc3FsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Zp ZXdzL3RlbXBsYXRlcy92aWV3cy9wZy85LjNfcGx1cy9zcWwvdXBkYXRlLnNxbApAQCAtMTksNyAr MTksNyBAQCBBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFt ZSkgfX0KIHslIGVuZGlmICV9CiB7JSBpZiBkZWYgYW5kIGRlZiAhPSBvX2RhdGEuZGVmaW5pdGlv bi5yc3RyaXAoJzsnKSAlfQogQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyB7eyBjb25ufHF0SWRlbnQo dmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KLSAgICBXSVRIIChzZWN1cml0eV9iYXJyaWVyPXt7 IGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciBpZiBkYXRhLnNlY3VyaXR5X2JhcnJpZXIgZWxz ZSBvX2RhdGEuc2VjdXJpdHlfYmFycmllcnxkZWZhdWx0KCdmYWxzZScsICd0cnVlJyl8bG93ZXIg fX0pCisgICAgV0lUSCAoc2VjdXJpdHlfYmFycmllcj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8 bG93ZXIgaWYgZGF0YS5zZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgZWxzZSBvX2RhdGEuc2Vj dXJpdHlfYmFycmllcnxkZWZhdWx0KCdmYWxzZScsICd0cnVlJyl8bG93ZXIgfX0pCiAgICAgQVMK ICAgICB7eyBkZWYgfX07CiB7JSBlbHNlICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvdmlld3MvcGcvOS40X3BsdXMvc3FsL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlld3MvcGcvOS40X3BsdXMvc3FsL3VwZGF0ZS5zcWwKaW5kZXggNDIzNWY1YzkwLi44MDVjNjU4 ZDEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3cy9wZy85LjRfcGx1cy9zcWwv dXBkYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlld3MvcGcvOS40X3BsdXMvc3Fs L3VwZGF0ZS5zcWwKQEAgLTE5LDcgKzE5LDcgQEAgQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50 KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CiB7JSBlbmRpZiAlfQogeyUgaWYgZGVmIGFuZCBk ZWYgIT0gb19kYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7JykgJX0KIENSRUFURSBPUiBSRVBMQUNF IFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19Ci0gICAgV0lU SCAoeyUgaWYgKGRhdGEuY2hlY2tfb3B0aW9uIG9yIG9fZGF0YS5jaGVja19vcHRpb24pICV9Y2hl Y2tfb3B0aW9uPXt7IGRhdGEuY2hlY2tfb3B0aW9uIGlmIGRhdGEuY2hlY2tfb3B0aW9uIGVsc2Ug b19kYXRhLmNoZWNrX29wdGlvbiB9fXt7JywgJyB9fXslIGVuZGlmICV9c2VjdXJpdHlfYmFycmll cj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgaWYgZGF0YS5zZWN1cml0eV9iYXJyaWVy IGVsc2Ugb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8ZGVmYXVsdCgnZmFsc2UnLCAndHJ1ZScpfGxv d2VyIH19KQorICAgIFdJVEggKHslIGlmIChkYXRhLmNoZWNrX29wdGlvbiBvciBvX2RhdGEuY2hl Y2tfb3B0aW9uKSAlfWNoZWNrX29wdGlvbj17eyBkYXRhLmNoZWNrX29wdGlvbiBpZiBkYXRhLmNo ZWNrX29wdGlvbiBlbHNlIG9fZGF0YS5jaGVja19vcHRpb24gfX17eycsICcgfX17JSBlbmRpZiAl fXNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0eV9iYXJyaWVyfGxvd2VyIGlmIGRhdGEu c2VjdXJpdHlfYmFycmllciBpcyBkZWZpbmVkIGVsc2Ugb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8 ZGVmYXVsdCgnZmFsc2UnLCAndHJ1ZScpfGxvd2VyIH19KQogICAgIEFTCiAgICAge3sgZGVmIH19 OwogeyUgZWxzZSAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3RlbXBsYXRlcy9kYXRhYmFzZXMvY3NzL2RhdGFiYXNlLmNz cyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90 ZW1wbGF0ZXMvZGF0YWJhc2VzL2Nzcy9kYXRhYmFzZS5jc3MKaW5kZXggZjBiMTJlMzA2Li4wYzlh ZTEwZGQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy90ZW1wbGF0ZXMvZGF0YWJhc2VzL2Nzcy9kYXRhYmFzZS5jc3MKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3RlbXBs YXRlcy9kYXRhYmFzZXMvY3NzL2RhdGFiYXNlLmNzcwpAQCAtMTEsNCArMTEsOSBAQAogICBiYWNr Z3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtZGF0YWJhc2Uuc3RhdGljJywgZmls ZW5hbWU9J2ltZy9kYXRhYmFzZWJhZC5zdmcnKSB9fScpICFpbXBvcnRhbnQ7CiAgIGJvcmRlci1y YWRpdXM6IDEwcHg7CiAgIGJhY2tncm91bmQtc2l6ZTogMjBweCAhaW1wb3J0YW50OworICBiYWNr Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBh bGlnbi1jb250ZW50OiBjZW50ZXI7CisgIGhlaWdodDogMS4zZW07CisKIH0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3N0YXRpYy9idW5kbGUvc2xpY2tncmlkLmpzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2J1bmRsZS9zbGlja2dyaWQuanMKaW5kZXggNzMxYjQyMDI2Li4yMDY3MGI5ODEgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9idW5kbGUvc2xpY2tncmlkLmpzCisrKyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9idW5kbGUvc2xpY2tncmlkLmpzCkBAIC0xNCw5ICsxNCwxMiBAQCBpbXBv cnQgJ3NsaWNrZ3JpZC9zbGljay5ncmlkJzsKIGltcG9ydCAnc2xpY2tncmlkL3NsaWNrLmRhdGF2 aWV3JzsKIGltcG9ydCAnc2xpY2tncmlkL3NsaWNrLmVkaXRvcnMnOwogaW1wb3J0ICdzbGlja2dy aWQvc2xpY2suZm9ybWF0dGVycyc7CitpbXBvcnQgJ3NsaWNrZ3JpZC9zbGljay5ncm91cGl0ZW1t ZXRhZGF0YXByb3ZpZGVyJzsKIGltcG9ydCAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2suYXV0b3Rv b2x0aXBzJzsKIGltcG9ydCAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2suY2VsbHJhbmdlZGVjb3Jh dG9yJzsKIGltcG9ydCAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2suY2VsbHJhbmdlc2VsZWN0b3In OworaW1wb3J0ICdzbGlja2dyaWQvcGx1Z2lucy9zbGljay5jaGVja2JveHNlbGVjdGNvbHVtbic7 CitpbXBvcnQgJ3NsaWNrZ3JpZC9wbHVnaW5zL3NsaWNrLnJvd3NlbGVjdGlvbm1vZGVsJzsKIGlt cG9ydCAnc291cmNlcy9zbGlja2dyaWQvY3VzdG9tX2hlYWRlcl9idXR0b25zJzsKIAogZXhwb3J0 IGRlZmF1bHQgd2luZG93LlNsaWNrOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L2JhY2tmb3JtLnBnYWRtaW4uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdh ZG1pbi5qcwppbmRleCBlYjA4MjEyODQuLmQ0ZGJiZDlkOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKQEAgLTgxNyw3ICs4MTcsNyBAQCBkZWZpbmUoWwogICAg IH0sCiAgIH0pOwogCi0gIEJhY2tmb3JtLkFjY29yZGlhbiA9IEJhY2tmb3JtLkRpYWxvZy5leHRl bmQoeworICBCYWNrZm9ybS5BY2NvcmRpYW4gICA9IEJhY2tmb3JtLkRpYWxvZy5leHRlbmQoewog ICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICByZXR1cm4gJ3NldC1ncm91cCBwZy1l bC0xMic7CiAgICAgfSwKQEAgLTIxMjksNyArMjEyOSw5IEBAIGRlZmluZShbCiAKICAgICBmb3Jt YXR0ZXI6IFNlbGVjdDJGb3JtYXR0ZXIsCiAgICAgdGVtcGxhdGU6IF8udGVtcGxhdGUoWwotICAg ICAgJzxsYWJlbCBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4iIGZv cj0iPCU9Y0lkJT4iPjwlPWxhYmVsJT48L2xhYmVsPicsCisgICAgICAnPCUgaWYobGFiZWwgPT0g ZmFsc2UpIHt9IGVsc2UgeyU+JywKKyAgICAgICcgIDxsYWJlbCBjbGFzcz0iPCU9QmFja2Zvcm0u Y29udHJvbExhYmVsQ2xhc3NOYW1lJT4iIGZvcj0iPCU9Y0lkJT4iPjwlPWxhYmVsJT48L2xhYmVs PicsCisgICAgICAnPCUgfSU+JywKICAgICAgICc8ZGl2IGNsYXNzPSI8JT1CYWNrZm9ybS5jb250 cm9sc0NsYXNzTmFtZSU+Ij4nLAogICAgICAgJyA8c2VsZWN0IGlkPSI8JT1jSWQlPiIgY2xhc3M9 IjwlPUJhY2tmb3JtLmNvbnRyb2xDbGFzc05hbWUlPiA8JT1leHRyYUNsYXNzZXMuam9pbihcJyBc JyklPiInLAogICAgICAgJyAgbmFtZT0iPCU9bmFtZSU+IiB2YWx1ZT0iPCUtdmFsdWUlPiIgPCU9 ZGlzYWJsZWQgPyAiZGlzYWJsZWQiIDogIiIlPicsCkBAIC0yMTYxLDcgKzIxNjMsNiBAQCBkZWZp bmUoWwogICAgICAgJzwvZGl2PicsCiAgICAgXS5qb2luKCdcbicpKSwKICAgICByZW5kZXI6IGZ1 bmN0aW9uKCkgewotCiAgICAgICBpZiAodGhpcy4kc2VsICYmIHRoaXMuJHNlbC5zZWxlY3QyICYm CiAgICAgICAgIHRoaXMuJHNlbC5zZWxlY3QyLmhhc093blByb3BlcnR5KCdkZXN0cm95JykpIHsK ICAgICAgICAgdGhpcy4kc2VsLnNlbGVjdDIoJ2Rlc3Ryb3knKTsKQEAgLTI0NjUsNyArMjQ2Niw3 IEBAIGRlZmluZShbCiAgICAgICAgIHNlbGYuc3FsQ3RybC5zZXRPcHRpb24oJ2F1dG9DbG9zZUJy YWNrZXRzJywgc3FsRWRpdFByZWZlcmVuY2VzLmluc2VydF9wYWlyX2JyYWNrZXRzKTsKICAgICAg ICAgc2VsZi5zcWxDdHJsLnNldE9wdGlvbignbWF0Y2hCcmFja2V0cycsIHNxbEVkaXRQcmVmZXJl bmNlcy5icmFjZV9tYXRjaGluZyk7CiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgc2VsZi5zcWxDdHJsLnJlZnJlc2goKTsKKyAgICAgICAgICBpZiAoc2VsZi5zcWxD dHJsKSBzZWxmLnNxbEN0cmwucmVmcmVzaCgpOwogICAgICAgICB9LCA1MDApOwogICAgICAgfQog ICAgIH0sCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9yZXNvdXJjZXMvX2Rl ZmF1bHQudmFyaWFibGVzLnNjc3MgYi93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9yZXNvdXJjZXMv X2RlZmF1bHQudmFyaWFibGVzLnNjc3MKaW5kZXggZjc2OWU1MGIzLi5lMTNjZjA4YmEgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL3Jlc291cmNlcy9fZGVmYXVsdC52YXJpYWJs ZXMuc2NzcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9yZXNvdXJjZXMvX2RlZmF1bHQu dmFyaWFibGVzLnNjc3MKQEAgLTI1Niw0ICsyNTYsMTEgQEAgJGxvYWRpbmctYmcgOiByZ2JhKCRi bGFjaywwLjYpOwogJGxvYWRpbmctZmcgOiAkd2hpdGU7CiAKICRsb2FkZXItaWNvbiA6IHVybCgi ZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNjP3htbCB2ZXJzaW9uPScxLjAnIGVu Y29kaW5nPSd1dGYtOCc/JTNlJTNjc3ZnIHZlcnNpb249JzEuMScgaWQ9J0xheWVyXzEnIHhtbG5z PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMu b3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyB2aWV3Qm94PScwIDAgMzggMzgnIHN0eWxl PSdlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4OycgeG1sOnNwYWNlPSdwcmVzZXJ2ZScl M2UlM2NzdHlsZSB0eXBlPSd0ZXh0L2NzcyclM2UgLnN0MCU3YmZpbGw6bm9uZTtzdHJva2U6JTIz ZWJlZWYzO3N0cm9rZS13aWR0aDoyOyU3ZCAuc3QxJTdiZmlsbDpub25lO3N0cm9rZTolMjMzMjY2 OTA7c3Ryb2tlLXdpZHRoOjI7JTdkICUzYy9zdHlsZSUzZSUzY2clM2UlM2NnIHRyYW5zZm9ybT0n dHJhbnNsYXRlKDEgMSknJTNlJTNjY2lyY2xlIGNsYXNzPSdzdDAnIGN4PScxOCcgY3k9JzE4JyBy PScxOCcvJTNlJTNjcGF0aCBjbGFzcz0nc3QxJyBkPSdNMzYsMThjMC05LjktOC4xLTE4LTE4LTE4 ICclM2UlM2NhbmltYXRlVHJhbnNmb3JtIGFjY3VtdWxhdGU9J25vbmUnIGFkZGl0aXZlPSdyZXBs YWNlJyBhdHRyaWJ1dGVOYW1lPSd0cmFuc2Zvcm0nIGNhbGNNb2RlPSdsaW5lYXInIGR1cj0nMC43 cycgZmlsbD0ncmVtb3ZlJyBmcm9tPScwIDE4IDE4JyByZXBlYXRDb3VudD0naW5kZWZpbml0ZScg cmVzdGFydD0nYWx3YXlzJyB0bz0nMzYwIDE4IDE4JyB0eXBlPSdyb3RhdGUnJTNlJTNjL2FuaW1h dGVUcmFuc2Zvcm0lM2UlM2MvcGF0aCUzZSUzYy9nJTNlJTNjL2clM2UlM2Mvc3ZnJTNlICIpICFk ZWZhdWx0OworCiAkbG9hZGVyLWljb24tc21hbGw6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUz QyUzRnhtbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCclM0YlM0UlM0MhLS0gR2VuZXJh dG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4xLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBW ZXJzaW9uOiA2LjAwIEJ1aWxkIDApIC0tJTNFJTNDc3ZnIHZlcnNpb249JzEuMScgaWQ9J0xheWVy XzEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6 Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyB2aWV3Qm94PScwIDAgMzgg MzgnIHN0eWxlPSdlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4OycgeG1sOnNwYWNlPSdw cmVzZXJ2ZSclM0UlM0NzdHlsZSB0eXBlPSd0ZXh0L2NzcyclM0UgLnN0MCU3QmZpbGw6bm9uZTtz dHJva2U6JTIzRUJFRUYzO3N0cm9rZS13aWR0aDo1OyU3RCAuc3QxJTdCZmlsbDpub25lO3N0cm9r ZTolMjMzMjY2OTA7c3Ryb2tlLXdpZHRoOjU7JTdEJTBBJTNDL3N0eWxlJTNFJTNDZyUzRSUzQ2cg dHJhbnNmb3JtPSd0cmFuc2xhdGUoMSAxKSclM0UlM0NjaXJjbGUgY2xhc3M9J3N0MCcgY3g9JzE4 JyBjeT0nMTgnIHI9JzE2Jy8lM0UlM0NwYXRoIGNsYXNzPSdzdDEnIGQ9J00zNCwxOGMwLTguOC03 LjItMTYtMTYtMTYgJyUzRSUzQ2FuaW1hdGVUcmFuc2Zvcm0gYWNjdW11bGF0ZT0nbm9uZScgYWRk aXRpdmU9J3JlcGxhY2UnIGF0dHJpYnV0ZU5hbWU9J3RyYW5zZm9ybScgY2FsY01vZGU9J2xpbmVh cicgZHVyPScwLjdzJyBmaWxsPSdyZW1vdmUnIGZyb209JzAgMTggMTgnIHJlcGVhdENvdW50PSdp bmRlZmluaXRlJyByZXN0YXJ0PSdhbHdheXMnIHRvPSczNjAgMTggMTgnIHR5cGU9J3JvdGF0ZScl M0UlM0MvYW5pbWF0ZVRyYW5zZm9ybSUzRSUzQy9wYXRoJTNFJTNDL2clM0UlM0MvZyUzRSUzQy9z dmclM0UlMEEiKSAhZGVmYXVsdDsKKworLyoqKioqKioqKioqKioqKi8KKworJHNjaGVtYWRpZmYt ZGlmZi1yb3ctY29sb3I6ICNmZmY5YzQ7Ciskc2NoZW1hZGlmZi1zb3VyY2Utcm93LWNvbG9yOiAj ZmZlYmVlOworJHNjaGVtYWRpZmYtdGFyZ2V0LXJvdy1jb2xvcjogI2ZiZTNiZjsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wu anMgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29s LmpzCmluZGV4IGI3YThkMDMzOC4uMjRiNDRmM2UzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKQEAgLTExLDYg KzExLDcgQEAgaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRl eHQnOwogaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9mb3In OwogaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8u Li8uLi8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CiBpbXBvcnQge2dldFBh bmVsVGl0bGV9IGZyb20gJy4vZGF0YWdyaWRfcGFuZWxfdGl0bGUnOworaW1wb3J0IHtnZXRSYW5k b21JbnR9IGZyb20gJ3NvdXJjZXMvdXRpbHMnOwogCiBmdW5jdGlvbiBoYXNEYXRhYmFzZUluZm9y bWF0aW9uKHBhcmVudERhdGEpIHsKICAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJhc2U7CkBAIC02 NiwzICs2NywyMSBAQCBleHBvcnQgZnVuY3Rpb24gc2hvd1F1ZXJ5VG9vbChkYXRhZ3JpZCwgcGdC cm93c2VyLCBhbGVydGlmeSwgdXJsLCBhY2lUcmVlSWRlbnRpZgogCiAgIGRhdGFncmlkLmxhdW5j aF9ncmlkKHRyYW5zSWQsIGdyaWRVcmwsIHRydWUsIHF1ZXJ5VG9vbFRpdGxlLCBzVVJMKTsKIH0K KworZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU2NyaXB0KHBhcmVudERhdGEsIGRhdGFncmlkKSB7 CisgIGNvbnN0IHF1ZXJ5VG9vbFRpdGxlID0gYCR7cGFyZW50RGF0YS5kYXRhYmFzZX0vJHtwYXJl bnREYXRhLnVzZXJ9QCR7cGFyZW50RGF0YS5zZXJ2ZXJ9YDsKKyAgY29uc3QgdHJhbnNJZCA9IGdl dFJhbmRvbUludCgxLCA5OTk5OTk5KTsKKworICBsZXQgdXJsX2VuZHBvaW50ID0gdXJsX2Zvcign ZGF0YWdyaWQucGFuZWwnLCB7CisgICAgJ3RyYW5zX2lkJzogdHJhbnNJZCwKKyAgfSk7CisKKyAg dXJsX2VuZHBvaW50ICs9IGA/aXNfcXVlcnlfdG9vbD0ke3RydWV9YAorICAgICtgJnNnaWQ9JHtw YXJlbnREYXRhLnNnaWR9YAorICAgICtgJnNpZD0ke3BhcmVudERhdGEuc2lkfWAKKyAgICArYCZz ZXJ2ZXJfdHlwZT0ke3BhcmVudERhdGEuc3R5cGV9YAorICAgICtgJmRpZD0ke3BhcmVudERhdGEu ZGlkfWA7CisKKyAgZGF0YWdyaWQubGF1bmNoX2dyaWQodHJhbnNJZCwgdXJsX2VuZHBvaW50LCB0 cnVlLCBxdWVyeVRvb2xUaXRsZSwgJycpOworCit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQvaW5kZXguaHRtbCBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCmluZGV4IDc3Zjhm MzFmMy4uYmE1ZjcxZmMzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90 ZW1wbGF0ZXMvZGF0YWdyaWQvaW5kZXguaHRtbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRh Z3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQvaW5kZXguaHRtbApAQCAtNDQzLDYgKzQ0MywxMiBAQCBy ZXF1aXJlKFsnc291cmNlcy9nZW5lcmF0ZWQvYnJvd3Nlcl9ub2RlcycsICdzb3VyY2VzL2dlbmVy YXRlZC9jb2RlbWlycm9yJywgJ3NvdQogICAgICAgICAgICAge3sgdXJsX3BhcmFtc3xzYWZlfX0s CiAgICAgICAgICAgICAne3sgbGF5b3V0fHNhZmUgfX0nCiAgICAgICAgICk7CisKKyAgICAgICAg Ly8gSWYgb3BlbmluZyBmcm9tIHNjaGVtYSBkaWZmLCBzZXQgdGhlIGdlbmVyYXRlZCBzY3JpcHQg dG8gdGhlIFNRTCBFZGl0b3IKKyAgICAgICAgdmFyIHNjaGVtYV9kZGxfZGlmZiA9ICh3aW5kb3cu b3BlbmVyICE9PSBudWxsKSA/IHdpbmRvdy5vcGVuZXIucGdBZG1pbi5kZGxfZGlmZiA6IHdpbmRv dy50b3AucGdBZG1pbi5kZGxfZGlmZjsKKyAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlci5zZXRf dmFsdWVfdG9fZWRpdG9yKHNjaGVtYV9kZGxfZGlmZik7CisgICAgICAgIGlmICh3aW5kb3cudG9w ICE9PSBudWxsKSB3aW5kb3cudG9wLnBnQWRtaW4uZGRsX2RpZmYgPSAnJzsKKyAgICAgICAgaWYg KHdpbmRvdy5vcGVuZXIgIT09IG51bGwpIHdpbmRvdy5vcGVuZXIucGdBZG1pbi5kZGxfZGlmZiA9 ICcnOwogICAgIH0pOwogfSk7CiB7JSBlbmRibG9jayAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvc2NoZW1hX2RpZmYvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9zY2hl bWFfZGlmZi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LmFjZDA2YzNmMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9k aWZmL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNjEzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisiIiJBIGJsdWVwcmludCBtb2R1bGUgaW1wbGVtZW50aW5nIHRoZSBzY2hlbWFfZGlmZiBm cmFtZS4iIiIKK01PRFVMRV9OQU1FID0gJ3NjaGVtYV9kaWZmJworCitpbXBvcnQgc2ltcGxlanNv biBhcyBqc29uCitpbXBvcnQgcGlja2xlCitpbXBvcnQgcmFuZG9tCisKK2Zyb20gZmxhc2sgaW1w b3J0IFJlc3BvbnNlLCBzZXNzaW9uLCB1cmxfZm9yLCByZXF1ZXN0Citmcm9tIGZsYXNrIGltcG9y dCByZW5kZXJfdGVtcGxhdGUsIGN1cnJlbnRfYXBwIGFzIGFwcAorZnJvbSBmbGFza19zZWN1cml0 eSBpbXBvcnQgY3VycmVudF91c2VyLCBsb2dpbl9yZXF1aXJlZAorZnJvbSBmbGFza19iYWJlbGV4 IGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IFBnQWRtaW5Nb2R1bGUK K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGJhZF9y ZXF1ZXN0LCBcCisgICAgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBnb25lLCBtYWtlX3Jlc3BvbnNl IGFzIGFqYXhfcmVzcG9uc2UsIFwKKyAgICBub3RfaW1wbGVtZW50ZWQKK2Zyb20gcGdhZG1pbi5t b2RlbCBpbXBvcnQgU2VydmVyCitmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9y ZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lzdHJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc2No ZW1hX2RpZmYubW9kZWwgaW1wb3J0IFNjaGVtYURpZmZNb2RlbAorZnJvbSBjb25maWcgaW1wb3J0 IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRf ZHJpdmVyCisKKworY2xhc3MgU2NoZW1hRGlmZk1vZHVsZShQZ0FkbWluTW9kdWxlKToKKyAgICAi IiIKKyAgICBjbGFzcyBTY2hlbWFEaWZmTW9kdWxlKFBnQWRtaW5Nb2R1bGUpCisKKyAgICAgICAg QSBtb2R1bGUgY2xhc3MgZm9yIFNjaGVtYSBEaWZmIGRlcml2ZWQgZnJvbSBQZ0FkbWluTW9kdWxl LgorICAgICIiIgorCisgICAgTEFCRUwgPSAiU2NoZW1hIERpZmYiCisKKyAgICBkZWYgZ2V0X293 bl9tZW51aXRlbXMoc2VsZik6CisgICAgICAgIHJldHVybiB7fQorCisgICAgZGVmIGdldF9vd25f amF2YXNjcmlwdHMoc2VsZik6CisgICAgICAgIHJldHVybiBbeworICAgICAgICAgICAgJ25hbWUn OiAncGdhZG1pbi5zY2hlbWFfZGlmZicsCisgICAgICAgICAgICAncGF0aCc6IHVybF9mb3IoJ3Nj aGVtYV9kaWZmLmluZGV4JykgKyAic2NoZW1hX2RpZmYiLAorICAgICAgICAgICAgJ3doZW4nOiBO b25lCisgICAgICAgIH1dCisKKyAgICBkZWYgZ2V0X3BhbmVscyhzZWxmKToKKyAgICAgICAgcmV0 dXJuIFtdCisKKyAgICBkZWYgZ2V0X2V4cG9zZWRfdXJsX2VuZHBvaW50cyhzZWxmKToKKyAgICAg ICAgIiIiCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBsaXN0OiBVUkwgZW5kcG9pbnRz IGZvciBTY2hlbWEgRGlmZiBtb2R1bGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBbCisg ICAgICAgICAgICAnc2NoZW1hX2RpZmYuaW5pdGlhbGl6ZScsCisgICAgICAgICAgICAnc2NoZW1h X2RpZmYucGFuZWwnLAorICAgICAgICAgICAgJ3NjaGVtYV9kaWZmLnNlcnZlcnMnLAorICAgICAg ICAgICAgJ3NjaGVtYV9kaWZmLmRhdGFiYXNlcycsCisgICAgICAgICAgICAnc2NoZW1hX2RpZmYu c2NoZW1hcycsCisgICAgICAgICAgICAnc2NoZW1hX2RpZmYuY29tcGFyZScsCisgICAgICAgICAg ICAnc2NoZW1hX2RpZmYucG9sbCcsCisgICAgICAgICAgICAnc2NoZW1hX2RpZmYuZGRsX2NvbXBh cmUnLAorICAgICAgICAgICAgJ3NjaGVtYV9kaWZmLmNvbm5lY3Rfc2VydmVyJywKKyAgICAgICAg ICAgICdzY2hlbWFfZGlmZi5jb25uZWN0X2RhdGFiYXNlJywKKyAgICAgICAgICAgICdzY2hlbWFf ZGlmZi5nZXRfc2VydmVyJywKKyAgICAgICAgICAgICdzY2hlbWFfZGlmZi5nZW5lcmF0ZV9zY3Jp cHQnCisgICAgICAgIF0KKworICAgIGRlZiByZWdpc3Rlcl9wcmVmZXJlbmNlcyhzZWxmKToKKyAg ICAgICAgc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAorICAgICAgICAgICAgJ2Rpc3BsYXknLCAn c2NoZW1hX2RpZmZfbmV3X2Jyb3dzZXJfdGFiJywKKyAgICAgICAgICAgIGdldHRleHQoIk9wZW4g aW4gbmV3IGJyb3dzZXIgdGFiIiksICdib29sZWFuJywgRmFsc2UsCisgICAgICAgICAgICBjYXRl Z29yeV9sYWJlbD1nZXR0ZXh0KCdEaXNwbGF5JyksCisgICAgICAgICAgICBoZWxwX3N0cj1nZXR0 ZXh0KCdJZiBzZXQgdG8gVHJ1ZSwgdGhlIFNjaGVtYSBEaWZmICcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ3dpbGwgYmUgb3BlbmVkIGluIGEgbmV3IGJyb3dzZXIgdGFiLicpCisgICAg ICAgICkKKworCitibHVlcHJpbnQgPSBTY2hlbWFEaWZmTW9kdWxlKE1PRFVMRV9OQU1FLCBfX25h bWVfXywgc3RhdGljX3VybF9wYXRoPScvc3RhdGljJykKKworCitAYmx1ZXByaW50LnJvdXRlKCIv IikKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIGluZGV4KCk6CisgICAgcmV0dXJuIGJhZF9yZXF1ZXN0 KAorICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KCdUaGlzIFVSTCBjYW5ub3QgYmUgcmVxdWVzdGVk IGRpcmVjdGx5LicpCisgICAgKQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9wYW5lbC88 aW50OnRyYW5zX2lkPi88cGF0aDplZGl0b3JfdGl0bGU+JywKKyAgICBtZXRob2RzPVsiR0VUIl0s CisgICAgZW5kcG9pbnQ9J3BhbmVsJworKQorZGVmIHBhbmVsKHRyYW5zX2lkLCBlZGl0b3JfdGl0 bGUpOgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGNhbGxzIGluZGV4Lmh0bWwgdG8gcmVuZGVy IHRoZSBzY2hlbWEgZGlmZi4KKworICAgIEFyZ3M6CisgICAgICAgIGVkaXRvcl90aXRsZTogVGl0 bGUgb2YgdGhlIGVkaXRvcgorICAgICIiIgorICAgICMgSWYgdGl0bGUgaGFzIHNsYXNoKGVzKSBp biBpdCB0aGVuIHJlcGxhY2UgaXQKKyAgICBpZiByZXF1ZXN0LmFyZ3MgYW5kIHJlcXVlc3QuYXJn c1snZnNsYXNoZXMnXSAhPSAnJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnNsYXNoZXNM aXN0ID0gcmVxdWVzdC5hcmdzWydmc2xhc2hlcyddLnNwbGl0KCcsJykKKyAgICAgICAgICAgIGZv ciBpZHggaW4gZnNsYXNoZXNMaXN0OgorICAgICAgICAgICAgICAgIGlkeCA9IGludChpZHgpCisg ICAgICAgICAgICAgICAgZWRpdG9yX3RpdGxlID0gZWRpdG9yX3RpdGxlWzppZHhdICsgJy8nICsg ZWRpdG9yX3RpdGxlW2lkeDpdCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGU6CisgICAg ICAgICAgICBhcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQorCisgICAgcmV0dXJuIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgInNjaGVtYV9kaWZmL2luZGV4Lmh0bWwiLAorICAgICAgICBfPWdldHRl eHQsCisgICAgICAgIHRyYW5zX2lkPXRyYW5zX2lkLAorICAgICAgICBlZGl0b3JfdGl0bGU9ZWRp dG9yX3RpdGxlCisgICAgKQorCisKK0BibHVlcHJpbnQucm91dGUoIi9zY2hlbWFfZGlmZi5qcyIp CitAbG9naW5fcmVxdWlyZWQKK2RlZiBzY3JpcHQoKToKKyAgICAiIiJyZW5kZXIgdGhlIHJlcXVp cmVkIGphdmFzY3JpcHQiIiIKKyAgICByZXR1cm4gUmVzcG9uc2UoCisgICAgICAgIHJlc3BvbnNl PXJlbmRlcl90ZW1wbGF0ZSgic2NoZW1hX2RpZmYvanMvc2NoZW1hX2RpZmYuanMiLCBfPWdldHRl eHQpLAorICAgICAgICBzdGF0dXM9MjAwLAorICAgICAgICBtaW1ldHlwZT0iYXBwbGljYXRpb24v amF2YXNjcmlwdCIKKyAgICApCisKKworZGVmIGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFu c19pZCk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBpZAorICAgIGlzIGF2YWlsYWJsZSBpbiB0aGUgc2Vzc2lvbiBvYmplY3QuCisK KyAgICBBcmdzOgorICAgICAgICB0cmFuc19pZDoKKyAgICAiIiIKKworICAgIGlmICdzY2hlbWFE aWZmJyBub3QgaW4gc2Vzc2lvbjoKKyAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0KAorICAg ICAgICAgICAgJ1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nCisgICAg ICAgICksIE5vbmUsIE5vbmUKKworICAgIHNjaGVtYV9kaWZmX2RhdGEgPSBzZXNzaW9uWydzY2hl bWFEaWZmJ10KKworICAgICMgUmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uIGlmIHRyYW5zYWN0aW9u IGlkIG5vdCBmb3VuZAorICAgIGlmIHN0cih0cmFuc19pZCkgbm90IGluIHNjaGVtYV9kaWZmX2Rh dGE6CisgICAgICAgIHJldHVybiBGYWxzZSwgZ2V0dGV4dCgKKyAgICAgICAgICAgICdUcmFuc2Fj dGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJworICAgICAgICApLCBOb25lLCBOb25l CisKKyAgICAjIEZldGNoIHRoZSBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQgdHJhbnNhY3Rpb24g aWQuCisgICAgIyBVc2UgcGlja2xlLmxvYWRzIGZ1bmN0aW9uIHRvIGdldCB0aGUgbW9kZWwgb2Jq ZWN0CisgICAgc2Vzc2lvbl9vYmogPSBzY2hlbWFfZGlmZl9kYXRhW3N0cih0cmFuc19pZCldCisg ICAgZGlmZl9tb2RlbF9vYmogPSBwaWNrbGUubG9hZHMoc2Vzc2lvbl9vYmpbJ2RpZmZfbW9kZWxf b2JqJ10pCisKKyAgICByZXR1cm4gVHJ1ZSwgTm9uZSwgZGlmZl9tb2RlbF9vYmosIHNlc3Npb25f b2JqCisKKworZGVmIHVwZGF0ZV9zZXNzaW9uX2RpZmZfdHJhbnNhY3Rpb24odHJhbnNfaWQsIHNl c3Npb25fb2JqLCBkaWZmX21vZGVsX29iaik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHVwZGF0ZSB0aGUgZGlmZiBtb2RlbCBpbnRvIHRoZSBzZXNzaW9uLgorICAgIDpw YXJhbSB0cmFuc19pZDoKKyAgICA6cGFyYW0gc2Vzc2lvbl9vYmo6CisgICAgOnBhcmFtIGRpZmZf bW9kZWxfb2JqOgorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgc2Vzc2lvbl9vYmpbJ2RpZmZf bW9kZWxfb2JqJ10gPSBwaWNrbGUuZHVtcHMoZGlmZl9tb2RlbF9vYmosIC0xKQorCisgICAgaWYg J3NjaGVtYURpZmYnIGluIHNlc3Npb246CisgICAgICAgIHNjaGVtYV9kaWZmX2RhdGEgPSBzZXNz aW9uWydzY2hlbWFEaWZmJ10KKyAgICAgICAgc2NoZW1hX2RpZmZfZGF0YVtzdHIodHJhbnNfaWQp XSA9IHNlc3Npb25fb2JqCisgICAgICAgIHNlc3Npb25bJ3NjaGVtYURpZmYnXSA9IHNjaGVtYV9k aWZmX2RhdGEKKworCitAYmx1ZXByaW50LnJvdXRlKAorICAgICcvaW5pdGlhbGl6ZScsCisgICAg bWV0aG9kcz1bIkdFVCJdLAorICAgIGVuZHBvaW50PSJpbml0aWFsaXplIgorKQorQGxvZ2luX3Jl cXVpcmVkCitkZWYgaW5pdGlhbGl6ZSgpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBpbml0aWFsaXplIHRoZSBzY2hlbWEgZGlmZiBhbmQgcmV0dXJuIHRoZSBsaXN0CisgICAgb2Yg YWxsIHRoZSBzZXJ2ZXIncy4KKyAgICAiIiIKKyAgICB0cmFuc19pZCA9IE5vbmUKKyAgICB0cnk6 CisgICAgICAgICMgQ3JlYXRlIGEgdW5pcXVlIGlkIGZvciB0aGUgdHJhbnNhY3Rpb24KKyAgICAg ICAgdHJhbnNfaWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisKKyAgICAgICAg aWYgJ3NjaGVtYURpZmYnIG5vdCBpbiBzZXNzaW9uOgorICAgICAgICAgICAgc2NoZW1hX2RpZmZf ZGF0YSA9IGRpY3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2NoZW1hX2RpZmZfZGF0 YSA9IHNlc3Npb25bJ3NjaGVtYURpZmYnXQorCisgICAgICAgICMgVXNlIHBpY2tsZSB0byBzdG9y ZSB0aGUgU2NoZW1hIERpZmYgTW9kZWwgd2hpY2ggd2lsbCBiZSB1c2VkCisgICAgICAgICMgbGF0 ZXIgYnkgdGhlIGRpZmYgbW9kdWxlLgorICAgICAgICBzY2hlbWFfZGlmZl9kYXRhW3RyYW5zX2lk XSA9IHsKKyAgICAgICAgICAgICdkaWZmX21vZGVsX29iaic6IHBpY2tsZS5kdW1wcyhTY2hlbWFE aWZmTW9kZWwoKSwgLTEpCisgICAgICAgIH0KKworICAgICAgICAjIFN0b3JlIHRoZSBzY2hlbWEg ZGlmZiBkaWN0aW9uYXJ5IGludG8gdGhlIHNlc3Npb24gdmFyaWFibGUKKyAgICAgICAgc2Vzc2lv blsnc2NoZW1hRGlmZiddID0gc2NoZW1hX2RpZmZfZGF0YQorCisgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICBhcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQorCisgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgZGF0YT17J3NjaGVtYURpZmZUcmFuc0lkJzogdHJh bnNfaWR9KQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9zZXJ2ZXJzJywKKyAgICBtZXRo b2RzPVsiR0VUIl0sCisgICAgZW5kcG9pbnQ9InNlcnZlcnMiCispCitAbG9naW5fcmVxdWlyZWQK K2RlZiBzZXJ2ZXJzKCk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0 aGUgbGlzdCBvZiBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWVkCisgICAgc2VydmVyIGlkLgorICAg ICIiIgorICAgIHJlcyA9IFtdCisgICAgdHJ5OgorICAgICAgICAiIiJSZXR1cm4gYSBKU09OIGRv Y3VtZW50IGxpc3RpbmcgdGhlIHNlcnZlciBncm91cHMgZm9yIHRoZSB1c2VyIiIiCisgICAgICAg IGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisKKyAgICAgICAgZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzIGltcG9ydFwKKyAgICAgICAgICAg IHNlcnZlcl9pY29uX2FuZF9iYWNrZ3JvdW5kCisKKyAgICAgICAgZm9yIHNlcnZlciBpbiBTZXJ2 ZXIucXVlcnkuZmlsdGVyX2J5KHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkKToKKyAgICAgICAgICAg IG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlcnZlci5pZCkKKyAgICAgICAg ICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oKQorICAgICAgICAgICAgY29ubmVjdGVkID0g Y29ubi5jb25uZWN0ZWQoKQorCisgICAgICAgICAgICByZXMuYXBwZW5kKHsKKyAgICAgICAgICAg ICAgICAidmFsdWUiOiBzZXJ2ZXIuaWQsCisgICAgICAgICAgICAgICAgImxhYmVsIjogc2VydmVy Lm5hbWUsCisgICAgICAgICAgICAgICAgImltYWdlIjogc2VydmVyX2ljb25fYW5kX2JhY2tncm91 bmQoY29ubmVjdGVkLCBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlciksCisgICAgICAgICAgICAgICAgIl9pZCI6IHNlcnZl ci5pZCwKKyAgICAgICAgICAgICAgICAiY29ubmVjdGVkIjogY29ubmVjdGVkLAorICAgICAgICAg ICAgfSkKKworICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYXBwLmxvZ2dlci5l eGNlcHRpb24oZSkKKworICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT1yZXMpCisK KworQGJsdWVwcmludC5yb3V0ZSgKKyAgICAnL2dldF9zZXJ2ZXIvPGludDpzaWQ+LzxpbnQ6ZGlk PicsCisgICAgbWV0aG9kcz1bIkdFVCJdLAorICAgIGVuZHBvaW50PSJnZXRfc2VydmVyIgorKQor QGxvZ2luX3JlcXVpcmVkCitkZWYgZ2V0X3NlcnZlcihzaWQsIGRpZCk6CisgICAgIiIiCisgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgc2VydmVyIGRldGFpbHMgZm9yIHRoZSBzcGVj aWZpZWQKKyAgICBzZXJ2ZXIgaWQuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICAiIiJSZXR1 cm4gYSBKU09OIGRvY3VtZW50IGxpc3RpbmcgdGhlIHNlcnZlciBncm91cHMgZm9yIHRoZSB1c2Vy IiIiCisgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisKKyAg ICAgICAgc2VydmVyID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieShpZD1zaWQpLmZpcnN0KCkKKyAg ICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2lkKQorICAgICAgICBj b25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1kaWQpCisgICAgICAgIGNvbm5lY3RlZCA9IGNv bm4uY29ubmVjdGVkKCkKKworICAgICAgICByZXMgPSB7CisgICAgICAgICAgICAic2lkIjogc2lk LAorICAgICAgICAgICAgIm5hbWUiOiBzZXJ2ZXIubmFtZSwKKyAgICAgICAgICAgICJ1c2VyIjog c2VydmVyLnVzZXJuYW1lLAorICAgICAgICAgICAgImdpZCI6IHNlcnZlci5zZXJ2ZXJncm91cF9p ZCwKKyAgICAgICAgICAgICJ0eXBlIjogbWFuYWdlci5zZXJ2ZXJfdHlwZSwKKyAgICAgICAgICAg ICJjb25uZWN0ZWQiOiBjb25uZWN0ZWQsCisgICAgICAgICAgICAiZGF0YWJhc2UiOiBjb25uLmRi CisgICAgICAgIH0KKworICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYXBwLmxv Z2dlci5leGNlcHRpb24oZSkKKworICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT1y ZXMpCisKKworQGJsdWVwcmludC5yb3V0ZSgKKyAgICAnL3NlcnZlci9jb25uZWN0LzxpbnQ6c2lk PicsCisgICAgbWV0aG9kcz1bIlBPU1QiXSwKKyAgICBlbmRwb2ludD0iY29ubmVjdF9zZXJ2ZXIi CispCitAbG9naW5fcmVxdWlyZWQKK2RlZiBjb25uZWN0X3NlcnZlcihzaWQpOgorICAgIHNlcnZl ciA9IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoaWQ9c2lkKS5maXJzdCgpCisgICAgdmlldyA9IFNj aGVtYURpZmZSZWdpc3RyeS5nZXRfbm9kZV92aWV3KCdzZXJ2ZXInKQorICAgIHJldHVybiB2aWV3 LmNvbm5lY3Qoc2VydmVyLnNlcnZlcmdyb3VwX2lkLCBzaWQpCisKKworQGJsdWVwcmludC5yb3V0 ZSgKKyAgICAnL2RhdGFiYXNlL2Nvbm5lY3QvPGludDpzaWQ+LzxpbnQ6ZGlkPicsCisgICAgbWV0 aG9kcz1bIlBPU1QiXSwKKyAgICBlbmRwb2ludD0iY29ubmVjdF9kYXRhYmFzZSIKKykKK0Bsb2dp bl9yZXF1aXJlZAorZGVmIGNvbm5lY3RfZGF0YWJhc2Uoc2lkLCBkaWQpOgorICAgIHNlcnZlciA9 IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoaWQ9c2lkKS5maXJzdCgpCisgICAgdmlldyA9IFNjaGVt YURpZmZSZWdpc3RyeS5nZXRfbm9kZV92aWV3KCdkYXRhYmFzZScpCisgICAgcmV0dXJuIHZpZXcu Y29ubmVjdChzZXJ2ZXIuc2VydmVyZ3JvdXBfaWQsIHNpZCwgZGlkKQorCisKK0BibHVlcHJpbnQu cm91dGUoCisgICAgJy9kYXRhYmFzZXMvPGludDpzaWQ+JywKKyAgICBtZXRob2RzPVsiR0VUIl0s CisgICAgZW5kcG9pbnQ9ImRhdGFiYXNlcyIKKykKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIGRhdGFi YXNlcyhzaWQpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGxp c3Qgb2YgZGF0YWJhc2VzIGZvciB0aGUgc3BlY2lmaWVkCisgICAgc2VydmVyIGlkLgorICAgICIi IgorICAgIHJlcyA9IFtdCisgICAgdHJ5OgorICAgICAgICB2aWV3ID0gU2NoZW1hRGlmZlJlZ2lz dHJ5LmdldF9ub2RlX3ZpZXcoJ2RhdGFiYXNlJykKKworICAgICAgICBzZXJ2ZXIgPSBTZXJ2ZXIu cXVlcnkuZmlsdGVyX2J5KGlkPXNpZCkuZmlyc3QoKQorICAgICAgICByZXNwb25zZSA9IHZpZXcu bm9kZXMoZ2lkPXNlcnZlci5zZXJ2ZXJncm91cF9pZCwgc2lkPXNpZCkKKyAgICAgICAgZGF0YWJh c2VzID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhKVsnZGF0YSddCisgICAgICAgIGZvciBkYiBp biBkYXRhYmFzZXM6CisgICAgICAgICAgICByZXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAi dmFsdWUiOiBkYlsnX2lkJ10sCisgICAgICAgICAgICAgICAgImxhYmVsIjogZGJbJ2xhYmVsJ10s CisgICAgICAgICAgICAgICAgIl9pZCI6IGRiWydfaWQnXSwKKyAgICAgICAgICAgICAgICAiY29u bmVjdGVkIjogZGJbJ2Nvbm5lY3RlZCddLAorICAgICAgICAgICAgICAgICJhbGxvd0Nvbm4iOiBk YlsnYWxsb3dDb25uJ10sCisgICAgICAgICAgICAgICAgImltYWdlIjogZGJbJ2ljb24nXSwKKyAg ICAgICAgICAgICAgICAiY2FuRGlzY29ubiI6IGRiWydjYW5EaXNjb25uJ10KKyAgICAgICAgICAg IH0pCisKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGFwcC5sb2dnZXIuZXhj ZXB0aW9uKGUpCisKKyAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKGRhdGE9cmVzKQorCisK K0BibHVlcHJpbnQucm91dGUoCisgICAgJy9zY2hlbWFzLzxpbnQ6c2lkPi88aW50OmRpZD4nLAor ICAgIG1ldGhvZHM9WyJHRVQiXSwKKyAgICBlbmRwb2ludD0ic2NoZW1hcyIKKykKK0Bsb2dpbl9y ZXF1aXJlZAorZGVmIHNjaGVtYXMoc2lkLCBkaWQpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rp b24gd2lsbCByZXR1cm4gdGhlIGxpc3Qgb2Ygc2NoZW1hcyBmb3IgdGhlIHNwZWNpZmllZAorICAg IHNlcnZlciBpZCBhbmQgZGF0YWJhc2UgaWQuCisgICAgIiIiCisgICAgcmVzID0gW10KKyAgICB0 cnk6CisgICAgICAgIHZpZXcgPSBTY2hlbWFEaWZmUmVnaXN0cnkuZ2V0X25vZGVfdmlldygnc2No ZW1hJykKKyAgICAgICAgc2VydmVyID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieShpZD1zaWQpLmZp cnN0KCkKKyAgICAgICAgcmVzcG9uc2UgPSB2aWV3Lm5vZGVzKGdpZD1zZXJ2ZXIuc2VydmVyZ3Jv dXBfaWQsIHNpZD1zaWQsIGRpZD1kaWQpCisgICAgICAgIHNjaGVtYXMgPSBqc29uLmxvYWRzKHJl c3BvbnNlLmRhdGEpWydkYXRhJ10KKyAgICAgICAgZm9yIHNjaCBpbiBzY2hlbWFzOgorICAgICAg ICAgICAgcmVzLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgInZhbHVlIjogc2NoWydfaWQnXSwK KyAgICAgICAgICAgICAgICAibGFiZWwiOiBzY2hbJ2xhYmVsJ10sCisgICAgICAgICAgICAgICAg Il9pZCI6IHNjaFsnX2lkJ10sCisgICAgICAgICAgICAgICAgImltYWdlIjogc2NoWydpY29uJ10s CisgICAgICAgICAgICB9KQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYXBw LmxvZ2dlci5leGNlcHRpb24oZSkKKworICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0 YT1yZXMpCisKKworQGJsdWVwcmludC5yb3V0ZSgKKyAgICAnL2NvbXBhcmUvPGludDp0cmFuc19p ZD4vPGludDpzb3VyY2Vfc2lkPi88aW50OnNvdXJjZV9kaWQ+LycKKyAgICAnPGludDpzb3VyY2Vf c2NpZD4vPGludDp0YXJnZXRfc2lkPi88aW50OnRhcmdldF9kaWQ+LzxpbnQ6dGFyZ2V0X3NjaWQ+ JywKKyAgICBtZXRob2RzPVsiR0VUIl0sCisgICAgZW5kcG9pbnQ9ImNvbXBhcmUiCispCitAbG9n aW5fcmVxdWlyZWQKK2RlZiBjb21wYXJlKHRyYW5zX2lkLCBzb3VyY2Vfc2lkLCBzb3VyY2VfZGlk LCBzb3VyY2Vfc2NpZCwKKyAgICAgICAgICAgIHRhcmdldF9zaWQsIHRhcmdldF9kaWQsIHRhcmdl dF9zY2lkKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY29tcGFyZSB0aGUgdHdv IHNjaGVtYXMuCisgICAgIiIiCisgICAgIyBDaGVjayB0aGUgdHJhbnNhY3Rpb24gYW5kIGNvbm5l Y3Rpb24gc3RhdHVzCisgICAgc3RhdHVzLCBlcnJvcl9tc2csIGRpZmZfbW9kZWxfb2JqLCBzZXNz aW9uX29iaiA9IFwKKyAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQor CisgICAgaWYgZXJyb3JfbXNnID09IGdldHRleHQoJ1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBp biB0aGUgc2Vzc2lvbi4nKToKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShzdWNj ZXNzPTAsIGVycm9ybXNnPWVycm9yX21zZywgc3RhdHVzPTQwNCkKKworICAgIGlmIG5vdCBjaGVj a192ZXJzaW9uX2NvbXBhdGliaWxpdHkoc291cmNlX3NpZCwgdGFyZ2V0X3NpZCk6CisgICAgICAg IHJldHVybiBub3RfaW1wbGVtZW50ZWQoZXJyb3Jtc2c9Z2V0dGV4dCgiVmVyc2lvbiBtaXNtYXRj aC4iKSkKKworICAgIGNvbXBhcmlzb25fcmVzdWx0ID0gW10KKworICAgIGRpZmZfbW9kZWxfb2Jq LnNldF9jb21wYXJpc29uX2luZm8oIkNvbXBhcmluZyBvYmplY3RzLi4uIiwgMCkKKyAgICB1cGRh dGVfc2Vzc2lvbl9kaWZmX3RyYW5zYWN0aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfbW9kZWxfb2JqKQorCisgICAgdHJ5 OgorICAgICAgICBhbGxfcmVnaXN0ZXJlZF9ub2RlcyA9IFNjaGVtYURpZmZSZWdpc3RyeS5nZXRf cmVnaXN0ZXJlZF9ub2RlcygpCisgICAgICAgIG5vZGVfcGVyY2VudCA9IHJvdW5kKDEwMCAvIGxl bihhbGxfcmVnaXN0ZXJlZF9ub2RlcykpCisgICAgICAgIHRvdGFsX3BlcmNlbnQgPSAwCisKKyAg ICAgICAgZm9yIG5vZGVfbmFtZSwgbm9kZV92aWV3IGluIGFsbF9yZWdpc3RlcmVkX25vZGVzLml0 ZW1zKCk6CisgICAgICAgICAgICB2aWV3ID0gU2NoZW1hRGlmZlJlZ2lzdHJ5LmdldF9ub2RlX3Zp ZXcobm9kZV9uYW1lKQorICAgICAgICAgICAgaWYgaGFzYXR0cih2aWV3LCAnY29tcGFyZScpOgor ICAgICAgICAgICAgICAgIG1zZyA9ICJDb21wYXJpbmcgIiArIHZpZXcuYmx1ZXByaW50LkNPTExF Q1RJT05fTEFCRUwgKyAiIC4uLiIKKyAgICAgICAgICAgICAgICBkaWZmX21vZGVsX29iai5zZXRf Y29tcGFyaXNvbl9pbmZvKG1zZywgdG90YWxfcGVyY2VudCkKKyAgICAgICAgICAgICAgICAjIFVw ZGF0ZSB0aGUgbWVzc2FnZSBhbmQgdG90YWwgcGVyY2VudGFnZSBpbiBzZXNzaW9uIG9iamVjdAor ICAgICAgICAgICAgICAgIHVwZGF0ZV9zZXNzaW9uX2RpZmZfdHJhbnNhY3Rpb24odHJhbnNfaWQs IHNlc3Npb25fb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGlmZl9tb2RlbF9vYmopCisKKyAgICAgICAgICAgICAgICByZXMgPSB2aWV3LmNvbXBh cmUoc291cmNlX3NpZD1zb3VyY2Vfc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzb3VyY2VfZGlkPXNvdXJjZV9kaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNvdXJjZV9zY2lkPXNvdXJjZV9zY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfc2lkPXRhcmdldF9zaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldF9kaWQ9dGFyZ2V0X2RpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3NjaWQ9dGFyZ2V0X3NjaWQpCisKKyAgICAgICAgICAgICAg ICBpZiByZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbXBhcmlzb25fcmVz dWx0ID0gY29tcGFyaXNvbl9yZXN1bHQgKyByZXMKKyAgICAgICAgICAgIHRvdGFsX3BlcmNlbnQg PSB0b3RhbF9wZXJjZW50ICsgbm9kZV9wZXJjZW50CisKKyAgICAgICAgbXNnID0gIlN1Y2Nlc3Nm dWxseSBjb21wYXJlIHRoZSBzcGVjaWZpZWQgc2NoZW1hcy4iCisgICAgICAgIHRvdGFsX3BlcmNl bnQgPSAxMDAKKyAgICAgICAgZGlmZl9tb2RlbF9vYmouc2V0X2NvbXBhcmlzb25faW5mbyhtc2cs IHRvdGFsX3BlcmNlbnQpCisgICAgICAgICMgVXBkYXRlIHRoZSBtZXNzYWdlIGFuZCB0b3RhbCBw ZXJjZW50YWdlIGRvbmUgaW4gc2Vzc2lvbiBvYmplY3QKKyAgICAgICAgdXBkYXRlX3Nlc3Npb25f ZGlmZl90cmFuc2FjdGlvbih0cmFuc19pZCwgc2Vzc2lvbl9vYmosIGRpZmZfbW9kZWxfb2JqKQor CisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBhcHAubG9nZ2VyLmV4Y2VwdGlv bihlKQorCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPWNvbXBhcmlzb25fcmVz dWx0KQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9wb2xsLzxpbnQ6dHJhbnNfaWQ+Jywg bWV0aG9kcz1bIkdFVCJdLCBlbmRwb2ludD0icG9sbCIKKykKK0Bsb2dpbl9yZXF1aXJlZAorZGVm IHBvbGwodHJhbnNfaWQpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBj aGVjayB0aGUgc2NoZW1hIGNvbXBhcmlzb24gaXMgY29tcGxldGVkIG9yIG5vdC4KKyAgICA6cGFy YW0gdHJhbnNfaWQ6CisgICAgOnJldHVybjoKKyAgICAiIiIKKworICAgICMgQ2hlY2sgdGhlIHRy YW5zYWN0aW9uIGFuZCBjb25uZWN0aW9uIHN0YXR1cworICAgIHN0YXR1cywgZXJyb3JfbXNnLCBk aWZmX21vZGVsX29iaiwgc2Vzc2lvbl9vYmogPSBcCisgICAgICAgIGNoZWNrX3RyYW5zYWN0aW9u X3N0YXR1cyh0cmFuc19pZCkKKworICAgIGlmIGVycm9yX21zZyA9PSBnZXR0ZXh0KCdUcmFuc2Fj dGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyk6CisgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2Uoc3VjY2Vzcz0wLCBlcnJvcm1zZz1lcnJvcl9tc2csIHN0YXR1cz00MDQp CisKKyAgICBtc2csIGRpZmZfcGVyY2VudGFnZSA9IGRpZmZfbW9kZWxfb2JqLmdldF9jb21wYXJp c29uX2luZm8oKQorCisgICAgaWYgZGlmZl9wZXJjZW50YWdlID09IDEwMDoKKyAgICAgICAgZGlm Zl9tb2RlbF9vYmouc2V0X2NvbXBhcmlzb25faW5mbygiQ29tcGFyaW5nIG9iamVjdHMuLi4iLCAw KQorICAgICAgICB1cGRhdGVfc2Vzc2lvbl9kaWZmX3RyYW5zYWN0aW9uKHRyYW5zX2lkLCBzZXNz aW9uX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX21v ZGVsX29iaikKKworICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J2NvbXBhcmVf bXNnJzogbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZmZfcGVy Y2VudGFnZSc6IGRpZmZfcGVyY2VudGFnZX0pCisKKworQGJsdWVwcmludC5yb3V0ZSgKKyAgICAn L2dlbmVyYXRlX3NjcmlwdC88aW50OnRyYW5zX2lkPi8nLAorICAgIG1ldGhvZHM9WyJQT1NUIl0s CisgICAgZW5kcG9pbnQ9ImdlbmVyYXRlX3NjcmlwdCIKKykKK2RlZiBnZW5lcmF0ZV9zY3JpcHQo dHJhbnNfaWQpOgorICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSB0aGUgc2NyaXB0 cyBmb3IgdGhlIHNlbGVjdGVkIG9iamVjdHMuIiIiCisgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBp ZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAgICByZXF1ZXN0LmRhdGEsIGVu Y29kaW5nPSd1dGYtOCcKKyAgICApCisKKyAgICBzdGF0dXMsIGVycm9yX21zZywgZGlmZl9tb2Rl bF9vYmosIHNlc3Npb25fb2JqID0gXAorICAgICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0dXMo dHJhbnNfaWQpCisKKyAgICBpZiBlcnJvcl9tc2cgPT0gZ2V0dGV4dCgnVHJhbnNhY3Rpb24gSUQg bm90IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKHN1Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLCBzdGF0dXM9NDA0KQorCisgICAg c291cmNlX3NpZCA9IGludChkYXRhWydzb3VyY2Vfc2lkJ10pCisgICAgc291cmNlX2RpZCA9IGlu dChkYXRhWydzb3VyY2VfZGlkJ10pCisgICAgc291cmNlX3NjaWQgPSBpbnQoZGF0YVsnc291cmNl X3NjaWQnXSkKKyAgICB0YXJnZXRfc2lkID0gaW50KGRhdGFbJ3RhcmdldF9zaWQnXSkKKyAgICB0 YXJnZXRfZGlkID0gaW50KGRhdGFbJ3RhcmdldF9kaWQnXSkKKyAgICB0YXJnZXRfc2NpZCA9IGlu dChkYXRhWyd0YXJnZXRfc2NpZCddKQorICAgIGRpZmZfZGRsID0gJycKKworICAgIGZvciBkIGlu IGRhdGFbJ3NlbF9yb3dzJ106CisgICAgICAgIG5vZGVfdHlwZSA9IGRbJ25vZGVfdHlwZSddCisg ICAgICAgIHNvdXJjZV9vaWQgPSBpbnQoZFsnc291cmNlX29pZCddKQorICAgICAgICB0YXJnZXRf b2lkID0gaW50KGRbJ3RhcmdldF9vaWQnXSkKKyAgICAgICAgY29tcF9zdGF0dXMgPSBkWydjb21w X3N0YXR1cyddCisKKyAgICAgICAgdmlldyA9IFNjaGVtYURpZmZSZWdpc3RyeS5nZXRfbm9kZV92 aWV3KG5vZGVfdHlwZSkKKyAgICAgICAgaWYgdmlldyBhbmQgaGFzYXR0cih2aWV3LCAnZGRsX2Nv bXBhcmUnKSBhbmQgXAorICAgICAgICAgICAgICAgIGNvbXBfc3RhdHVzICE9IFNjaGVtYURpZmZN b2RlbC5DT01QQVJJU09OX1NUQVRVU1snaWRlbnRpY2FsJ106CisgICAgICAgICAgICBzcWwgPSB2 aWV3LmRkbF9jb21wYXJlKHNvdXJjZV9zaWQ9c291cmNlX3NpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc291cmNlX2RpZD1zb3VyY2VfZGlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzb3VyY2Vfc2NpZD1zb3VyY2Vfc2NpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3NpZD10YXJnZXRfc2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfZGlkPXRhcmdldF9kaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9zY2lkPXRhcmdldF9zY2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Vfb2lkPXNvdXJjZV9vaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9vaWQ9dGFyZ2V0X29pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcF9zdGF0dXM9Y29tcF9zdGF0 dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX3NjcmlwdD1U cnVlKQorCisgICAgICAgICAgICBkaWZmX2RkbCArPSBzcWxbJ2RpZmZfZGRsJ10KKworICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICBzdGF0dXM9MjAwLAorICAgICAgICByZXNwb25z ZT17J2RpZmZfZGRsJzogZGlmZl9kZGx9CisgICAgKQorCisKK0BibHVlcHJpbnQucm91dGUoCisg ICAgJy9kZGxfY29tcGFyZS88aW50OnRyYW5zX2lkPi88aW50OnNvdXJjZV9zaWQ+LzxpbnQ6c291 cmNlX2RpZD4vJworICAgICc8aW50OnNvdXJjZV9zY2lkPi88aW50OnRhcmdldF9zaWQ+LzxpbnQ6 dGFyZ2V0X2RpZD4vPGludDp0YXJnZXRfc2NpZD4vJworICAgICc8aW50OnNvdXJjZV9vaWQ+Lzxp bnQ6dGFyZ2V0X29pZD4vPG5vZGVfdHlwZT4vPGNvbXBfc3RhdHVzPi8nLAorICAgIG1ldGhvZHM9 WyJHRVQiXSwKKyAgICBlbmRwb2ludD0iZGRsX2NvbXBhcmUiCispCitAbG9naW5fcmVxdWlyZWQK K2RlZiBkZGxfY29tcGFyZSh0cmFuc19pZCwgc291cmNlX3NpZCwgc291cmNlX2RpZCwgc291cmNl X3NjaWQsCisgICAgICAgICAgICAgICAgdGFyZ2V0X3NpZCwgdGFyZ2V0X2RpZCwgdGFyZ2V0X3Nj aWQsIHNvdXJjZV9vaWQsCisgICAgICAgICAgICAgICAgdGFyZ2V0X29pZCwgbm9kZV90eXBlLCBj b21wX3N0YXR1cyk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbXBh cmUgdGhlIHNwZWNpZmllZCBvYmplY3QgYW5kIHJldHVybiB0aGUKKyAgICBEREwgY29tcGFyaXNv bi4KKyAgICAiIiIKKyAgICAjIENoZWNrIHRoZSB0cmFuc2FjdGlvbiBhbmQgY29ubmVjdGlvbiBz dGF0dXMKKyAgICBzdGF0dXMsIGVycm9yX21zZywgZGlmZl9tb2RlbF9vYmosIHNlc3Npb25fb2Jq ID0gXAorICAgICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCisKKyAgICBp ZiBlcnJvcl9tc2cgPT0gZ2V0dGV4dCgnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBz ZXNzaW9uLicpOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKHN1Y2Nlc3M9MCwg ZXJyb3Jtc2c9ZXJyb3JfbXNnLCBzdGF0dXM9NDA0KQorCisgICAgc291cmNlX2RkbCA9ICcnCisg ICAgdGFyZ2V0X2RkbCA9ICcnCisgICAgZGlmZl9kZGwgPSAnJworCisgICAgdmlldyA9IFNjaGVt YURpZmZSZWdpc3RyeS5nZXRfbm9kZV92aWV3KG5vZGVfdHlwZSkKKyAgICBpZiB2aWV3IGFuZCBo YXNhdHRyKHZpZXcsICdkZGxfY29tcGFyZScpOgorICAgICAgICBzcWwgPSB2aWV3LmRkbF9jb21w YXJlKHNvdXJjZV9zaWQ9c291cmNlX3NpZCwgc291cmNlX2RpZD1zb3VyY2VfZGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zY2lkPXNvdXJjZV9zY2lkLCB0YXJnZXRf c2lkPXRhcmdldF9zaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2Rp ZD10YXJnZXRfZGlkLCB0YXJnZXRfc2NpZD10YXJnZXRfc2NpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzb3VyY2Vfb2lkPXNvdXJjZV9vaWQsIHRhcmdldF9vaWQ9dGFyZ2V0X29p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wX3N0YXR1cz1jb21wX3N0YXR1 cykKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICBzdGF0dXM9MjAw LAorICAgICAgICAgICAgcmVzcG9uc2U9eydzb3VyY2VfZGRsJzogc3FsWydzb3VyY2VfZGRsJ10s CisgICAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9kZGwnOiBzcWxbJ3RhcmdldF9kZGwnXSwK KyAgICAgICAgICAgICAgICAgICAgICAnZGlmZl9kZGwnOiBzcWxbJ2RpZmZfZGRsJ119CisgICAg ICAgICkKKworICAgIG1zZyA9IGdldHRleHQoJ1NlbGVjdGVkIG9iamVjdCBpcyBub3Qgc3VwcG9y dGVkIGZvciBEREwgY29tcGFyaXNvbi4nKQorCisgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisg ICAgICAgIHN0YXR1cz0yMDAsCisgICAgICAgIHJlc3BvbnNlPXsnc291cmNlX2RkbCc6IG1zZywK KyAgICAgICAgICAgICAgICAgICd0YXJnZXRfZGRsJzogbXNnLAorICAgICAgICAgICAgICAgICAg J2RpZmZfZGRsJzogbXNnCisgICAgICAgICAgICAgICAgICB9CisgICAgKQorCisKK2RlZiBjaGVj a192ZXJzaW9uX2NvbXBhdGliaWxpdHkoc2lkLCB0aWQpOgorICAgICIiIkNoZWNrIHRoZSB2ZXJz aW9uIGNvbXBhdGliaWxpdHkgb2Ygc291cmNlIGFuZCB0YXJnZXQgc2VydmVycy4iIiIKKworICAg IGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisgICAgc3JjX3NlcnZlciA9 IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoaWQ9c2lkKS5maXJzdCgpCisgICAgc3JjX21hbmFnZXIg PSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNyY19zZXJ2ZXIuaWQpCisKKyAgICB0YXJfc2Vy dmVyID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieShpZD10aWQpLmZpcnN0KCkKKyAgICB0YXJfbWFu YWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIodGFyX3NlcnZlci5pZCkKKworICAgIHNy Y19zZXJ2ZXJfdmVyc2lvbiA9IHNyY19tYW5hZ2VyLnZlcnNpb24KKyAgICB0YXJfc2VydmVyX3Zl cnNpb24gPSB0YXJfbWFuYWdlci52ZXJzaW9uCisKKyAgICBzZXJ2ZXJfdmVyc2lvbnMgPSBbMTIw MDAwLCAxMTAwMDAsIDEwMDAwMCwgOTA2MDAsIDkwNTAwLCA5MDQwMCwKKyAgICAgICAgICAgICAg ICAgICAgICAgOTAzMDAsIDkwMjAwLCA5MDEwMCwgOTAwMDBdCisKKyAgICBmb3IgdmVyc2lvbiBp biBzZXJ2ZXJfdmVyc2lvbnM6CisgICAgICAgIGlmIHZlcnNpb24gPiBzcmNfc2VydmVyX3ZlcnNp b246CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHNyY19zZXJ2ZXJfdmVyc2lvbiA9 IHZlcnNpb24KKyAgICAgICAgYnJlYWsKKworICAgIGZvciB2ZXJzaW9uIGluIHNlcnZlcl92ZXJz aW9uczoKKyAgICAgICAgaWYgdmVyc2lvbiA+IHRhcl9zZXJ2ZXJfdmVyc2lvbjoKKyAgICAgICAg ICAgIGNvbnRpbnVlCisKKyAgICAgICAgdGFyX3NlcnZlcl92ZXJzaW9uID0gdmVyc2lvbgorICAg ICAgICBicmVhaworCisgICAgaWYgc3JjX3NlcnZlcl92ZXJzaW9uID09IHRhcl9zZXJ2ZXJfdmVy c2lvbjoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL2NvbXBhcmUucHkgYi93ZWIvcGdhZG1pbi90 b29scy9zY2hlbWFfZGlmZi9jb21wYXJlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uNDI0ZTIyOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c2NoZW1hX2RpZmYvY29tcGFyZS5weQpAQCAtMCwwICsxLDIxMiBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIiIiIEltcGxlbWVudHMgVXRpbGl0eSBjbGFzcyBmb3IgVGFibGUgYW5kIFBh cnRpdGlvbmVkIFRhYmxlLiAiIiIKKworaW1wb3J0IGNvcHkKKworZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlCitmcm9tIHBnYWRtaW4udXRpbHMuY29tcGlsZV90ZW1wbGF0ZV9uYW1l IGltcG9ydCBjb21waWxlX3RlbXBsYXRlX3BhdGgKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIg aW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgor ZnJvbSBwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmLmRpcmVjdG9yeV9jb21wYXJlIGltcG9ydCBj b21wYXJlX2RpY3Rpb25hcmllcyxcCisgICAgZGlyZWN0b3J5X2RpZmYKK2Zyb20gcGdhZG1pbi50 b29scy5zY2hlbWFfZGlmZi5tb2RlbCBpbXBvcnQgU2NoZW1hRGlmZk1vZGVsCitmcm9tIGFiYyBp bXBvcnQgYWJzdHJhY3RtZXRob2QKKworCitjbGFzcyBTY2hlbWFEaWZmT2JqZWN0Q29tcGFyZSgp OgorCisgICAga2V5c190b19pZ25vcmUgPSBbJ29pZCcsICdzY2hlbWEnXQorCisgICAgQHN0YXRp Y21ldGhvZAorICAgIGRlZiBnZXRfc2NoZW1hKHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHNjaGVtYSBuYW1lLgorICAg ICAgICAiIiIKKworICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVS KQorICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihzaWQpCisgICAg ICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWRpZCkKKworICAgICAgICB2ZXIgPSBt YW5hZ2VyLnZlcnNpb24KKyAgICAgICAgc2VydmVyX3R5cGUgPSBtYW5hZ2VyLnNlcnZlcl90eXBl CisKKyAgICAgICAgIyBGZXRjaCBzY2hlbWEgbmFtZQorICAgICAgICBzdGF0dXMsIHNjaGVtYV9u YW1lID0gY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbJ3NjaGVtYXMnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAnezB9LyN7MX0jJy5mb3JtYXQoc2VydmVyX3R5cGUsIHZlciksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICdzcWwvZ2V0X25hbWUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNv bm49Y29ubiwgc2NpZD1zY2lkCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBy ZXR1cm4gc3RhdHVzLCBzY2hlbWFfbmFtZQorCisgICAgZGVmIGNvbXBhcmUoc2VsZiwgKiprd2Fy Z3MpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbXBh cmUgYWxsIHRoZSBvYmplY3RzCisgICAgICAgIGZyb20gdHdvIGRpZmZlcmVudCBzY2hlbWFzLgor CisgICAgICAgIDpwYXJhbSBrd2FyZ3M6CisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIiIgor CisgICAgICAgIHNvdXJjZV9wYXJhbXMgPSB7J3NpZCc6IGt3YXJncy5nZXQoJ3NvdXJjZV9zaWQn KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzoga3dhcmdzLmdldCgnc291cmNlX2Rp ZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzY2lkJzoga3dhcmdzLmdldCgnc291cmNl X3NjaWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICB0YXJnZXRfcGFy YW1zID0geydzaWQnOiBrd2FyZ3MuZ2V0KCd0YXJnZXRfc2lkJyksCisgICAgICAgICAgICAgICAg ICAgICAgICAgJ2RpZCc6IGt3YXJncy5nZXQoJ3RhcmdldF9kaWQnKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAnc2NpZCc6IGt3YXJncy5nZXQoJ3RhcmdldF9zY2lkJykKKyAgICAgICAgICAg ICAgICAgICAgICAgICB9CisKKyAgICAgICAgaWYgJ3NvdXJjZV90aWQnIGluIGt3YXJnczoKKyAg ICAgICAgICAgIHNvdXJjZV9wYXJhbXNbJ3RpZCddID0ga3dhcmdzWydzb3VyY2VfdGlkJ10KKyAg ICAgICAgaWYgJ3RhcmdldF90aWQnIGluIGt3YXJnczoKKyAgICAgICAgICAgIHRhcmdldF9wYXJh bXNbJ3RpZCddID0ga3dhcmdzWyd0YXJnZXRfdGlkJ10KKworICAgICAgICBzb3VyY2UgPSBzZWxm LmZldGNoX29iamVjdHNfdG9fY29tcGFyZSgqKnNvdXJjZV9wYXJhbXMpCisKKyAgICAgICAgdGFy Z2V0ID0gc2VsZi5mZXRjaF9vYmplY3RzX3RvX2NvbXBhcmUoKip0YXJnZXRfcGFyYW1zKQorCisg ICAgICAgICMgSWYgYm90aCB0aGUgZGljdCBoYXZlIG5vIGl0ZW1zIHRoZW4gcmV0dXJuIE5vbmUu CisgICAgICAgIGlmIG5vdCAoc291cmNlIG9yIHRhcmdldCkgb3IgKAorICAgICAgICAgICAgICAg IGxlbihzb3VyY2UpIDw9IDAgYW5kIGxlbih0YXJnZXQpIDw9IDApOgorICAgICAgICAgICAgcmV0 dXJuIE5vbmUKKworICAgICAgICByZXR1cm4gY29tcGFyZV9kaWN0aW9uYXJpZXMoc291cmNlLCB0 YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5vZGVfdHlw ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50LkNP TExFQ1RJT05fTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmtleXNfdG9faWdub3JlKQorCisgICAgZGVmIGRkbF9jb21wYXJlKHNlbGYsICoqa3dhcmdzKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjb21wYXJlIGluZGV4IHBy b3BlcnRpZXMgYW5kCisgICAgICAgICByZXR1cm4gdGhlIGRpZmZlcmVuY2Ugb2YgU1FMCisgICAg ICAgICIiIgorCisgICAgICAgIHNvdXJjZSA9ICcnCisgICAgICAgIHRhcmdldCA9ICcnCisgICAg ICAgIGRpZmYgPSAnJworICAgICAgICBjb21wX3N0YXR1cyA9IGt3YXJncy5nZXQoJ2NvbXBfc3Rh dHVzJykKKyAgICAgICAgb25seV9kaWZmID0gRmFsc2UKKyAgICAgICAgZ2VuZXJhdGVfc2NyaXB0 ID0gRmFsc2UKKworICAgICAgICBzb3VyY2VfcGFyYW1zID0geydnaWQnOiAxLAorICAgICAgICAg ICAgICAgICAgICAgICAgICdzaWQnOiBrd2FyZ3MuZ2V0KCdzb3VyY2Vfc2lkJyksCisgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RpZCc6IGt3YXJncy5nZXQoJ3NvdXJjZV9kaWQnKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IGt3YXJncy5nZXQoJ3NvdXJjZV9zY2lkJyksCisg ICAgICAgICAgICAgICAgICAgICAgICAgJ29pZCc6IGt3YXJncy5nZXQoJ3NvdXJjZV9vaWQnKQor ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICB0YXJnZXRfcGFyYW1zID0geydn aWQnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBrd2FyZ3MuZ2V0KCd0YXJn ZXRfc2lkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGt3YXJncy5nZXQoJ3Rh cmdldF9kaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IGt3YXJncy5nZXQo J3RhcmdldF9zY2lkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29pZCc6IGt3YXJncy5n ZXQoJ3RhcmdldF9vaWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICBp ZiAnc291cmNlX3RpZCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgc291cmNlX3BhcmFtc1sndGlk J10gPSBrd2FyZ3NbJ3NvdXJjZV90aWQnXQorICAgICAgICAgICAgb25seV9kaWZmID0gVHJ1ZQor ICAgICAgICBpZiAndGFyZ2V0X3RpZCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgdGFyZ2V0X3Bh cmFtc1sndGlkJ10gPSBrd2FyZ3NbJ3RhcmdldF90aWQnXQorICAgICAgICAgICAgb25seV9kaWZm ID0gVHJ1ZQorCisgICAgICAgIGlmICdnZW5lcmF0ZV9zY3JpcHQnIGluIGt3YXJncyBhbmQga3dh cmdzWydnZW5lcmF0ZV9zY3JpcHQnXToKKyAgICAgICAgICAgIGdlbmVyYXRlX3NjcmlwdCA9IFRy dWUKKworICAgICAgICBzb3VyY2VfcGFyYW1zX2FkdiA9IGNvcHkuZGVlcGNvcHkoc291cmNlX3Bh cmFtcykKKyAgICAgICAgdGFyZ2V0X3BhcmFtc19hZHYgPSBjb3B5LmRlZXBjb3B5KHRhcmdldF9w YXJhbXMpCisKKyAgICAgICAgZGVsIHNvdXJjZV9wYXJhbXNfYWR2WydnaWQnXQorICAgICAgICBk ZWwgdGFyZ2V0X3BhcmFtc19hZHZbJ2dpZCddCisKKyAgICAgICAgc3RhdHVzLCB0YXJnZXRfc2No ZW1hID0gc2VsZi5nZXRfc2NoZW1hKGt3YXJncy5nZXQoJ3RhcmdldF9zaWQnKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncy5nZXQoJ3Rhcmdl dF9kaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGt3YXJncy5nZXQoJ3RhcmdldF9zY2lkJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9dGFyZ2V0X3NjaGVtYSkKKwor ICAgICAgICBpZiBjb21wX3N0YXR1cyA9PSBTY2hlbWFEaWZmTW9kZWwuQ09NUEFSSVNPTl9TVEFU VVNbJ3NvdXJjZV9vbmx5J106CisgICAgICAgICAgICBpZiBub3QgZ2VuZXJhdGVfc2NyaXB0Ogor ICAgICAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X3NxbF9mcm9tX2RpZmYoKipzb3VyY2Vf cGFyYW1zKQorICAgICAgICAgICAgc291cmNlX3BhcmFtcy51cGRhdGUoeworICAgICAgICAgICAg ICAgICdkaWZmX3NjaGVtYSc6IHRhcmdldF9zY2hlbWEKKyAgICAgICAgICAgIH0pCisgICAgICAg ICAgICBkaWZmID0gc2VsZi5nZXRfc3FsX2Zyb21fZGlmZigqKnNvdXJjZV9wYXJhbXMpCisKKyAg ICAgICAgZWxpZiBjb21wX3N0YXR1cyA9PSBTY2hlbWFEaWZmTW9kZWwuQ09NUEFSSVNPTl9TVEFU VVNbJ3RhcmdldF9vbmx5J106CisgICAgICAgICAgICBpZiBub3QgZ2VuZXJhdGVfc2NyaXB0Ogor ICAgICAgICAgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0X3NxbF9mcm9tX2RpZmYoKip0YXJnZXRf cGFyYW1zKQorICAgICAgICAgICAgdGFyZ2V0X3BhcmFtcy51cGRhdGUoCisgICAgICAgICAgICAg ICAgeydkcm9wX3NxbCc6IFRydWV9KQorICAgICAgICAgICAgZGlmZiA9IHNlbGYuZ2V0X3NxbF9m cm9tX2RpZmYoKip0YXJnZXRfcGFyYW1zKQorCisgICAgICAgIGVsaWYgY29tcF9zdGF0dXMgPT0g U2NoZW1hRGlmZk1vZGVsLkNPTVBBUklTT05fU1RBVFVTWydkaWZmZXJlbnQnXToKKyAgICAgICAg ICAgIHNvdXJjZSA9IHNlbGYuZmV0Y2hfb2JqZWN0c190b19jb21wYXJlKCoqc291cmNlX3BhcmFt c19hZHYpCisgICAgICAgICAgICB0YXJnZXQgPSBzZWxmLmZldGNoX29iamVjdHNfdG9fY29tcGFy ZSgqKnRhcmdldF9wYXJhbXNfYWR2KQorCisgICAgICAgICAgICBpZiBub3QgKHNvdXJjZSBvciB0 YXJnZXQpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIGRpZmZf ZGljdCA9IGRpcmVjdG9yeV9kaWZmKHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlnbm9yZV9rZXlzPXNlbGYua2V5c190b19pZ25vcmUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlPXt9CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGRpZmZfZGljdC51cGRhdGUoc2VsZi5w YXJjZV9hY2woc291cmNlLCB0YXJnZXQpKQorCisgICAgICAgICAgICBpZiBub3QgZ2VuZXJhdGVf c2NyaXB0OgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X3NxbF9mcm9tX2RpZmYo Kipzb3VyY2VfcGFyYW1zKQorICAgICAgICAgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0X3NxbF9m cm9tX2RpZmYoKip0YXJnZXRfcGFyYW1zKQorCisgICAgICAgICAgICB0YXJnZXRfcGFyYW1zLnVw ZGF0ZSgKKyAgICAgICAgICAgICAgICB7J2RhdGEnOiBkaWZmX2RpY3R9KQorICAgICAgICAgICAg ZGlmZiA9IHNlbGYuZ2V0X3NxbF9mcm9tX2RpZmYoKip0YXJnZXRfcGFyYW1zKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgc291cmNlID0gc2VsZi5nZXRfc3FsX2Zyb21fZGlmZigqKnNvdXJj ZV9wYXJhbXMpCisgICAgICAgICAgICB0YXJnZXQgPSBzZWxmLmdldF9zcWxfZnJvbV9kaWZmKCoq dGFyZ2V0X3BhcmFtcykKKworICAgICAgICBpZiBvbmx5X2RpZmY6CisgICAgICAgICAgICByZXR1 cm4gZGlmZgorCisgICAgICAgIHJldHVybiB7J3NvdXJjZV9kZGwnOiBzb3VyY2UsCisgICAgICAg ICAgICAgICAgJ3RhcmdldF9kZGwnOiB0YXJnZXQsCisgICAgICAgICAgICAgICAgJ2RpZmZfZGRs JzogZGlmZgorICAgICAgICAgICAgICAgIH0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg cGFyY2VfYWNsKHNvdXJjZSwgdGFyZ2V0KToKKyAgICAgICAga2V5ID0gJ2FjbCcKKworICAgICAg ICBpZiAnZGF0YWNsJyBpbiBzb3VyY2U6CisgICAgICAgICAgICBrZXkgPSAnZGF0YWNsJworICAg ICAgICBlbGlmICdyZWxhY2wnIGluIHNvdXJjZToKKyAgICAgICAgICAgIGtleSA9ICdyZWxhY2wn CisKKyAgICAgICAgdG1wX3NvdXJjZSA9IHNvdXJjZVtrZXldIGlmXAorICAgICAgICAgICAga2V5 IGluIHNvdXJjZSBhbmQgc291cmNlW2tleV0gaXMgbm90IE5vbmUgZWxzZSBbXQorICAgICAgICB0 bXBfdGFyZ2V0ID0gY29weS5kZWVwY29weSh0YXJnZXRba2V5XSkgaWZcCisgICAgICAgICAgICBr ZXkgaW4gdGFyZ2V0IGFuZCB0YXJnZXRba2V5XSBpcyBub3QgTm9uZSBlbHNlIFtdCisKKyAgICAg ICAgZGlmZiA9IHsnYWRkZWQnOiBbXSwgJ2RlbGV0ZWQnOiBbXX0KKyAgICAgICAgZm9yIGFjbCBp biB0bXBfc291cmNlOgorICAgICAgICAgICAgaWYgYWNsIGluIHRtcF90YXJnZXQ6CisgICAgICAg ICAgICAgICAgdG1wX3RhcmdldC5yZW1vdmUoYWNsKQorICAgICAgICAgICAgZWxpZiBhY2wgbm90 IGluIHRtcF90YXJnZXQ6CisgICAgICAgICAgICAgICAgZGlmZlsnYWRkZWQnXS5hcHBlbmQoYWNs KQorICAgICAgICBkaWZmWydkZWxldGVkJ10gPSB0bXBfdGFyZ2V0CisKKyAgICAgICAgcmV0dXJu IHtrZXk6IGRpZmZ9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9k aXJlY3RvcnlfY29tcGFyZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL2RpcmVj dG9yeV9jb21wYXJlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZWVi NDk1ZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYv ZGlyZWN0b3J5X2NvbXBhcmUucHkKQEAgLTAsMCArMSwyNzkgQEAKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyIiIkRpcmVjdG9yeSBjb21wYXJpc29uIiIiCisKK2ltcG9ydCBjb3B5Citmcm9t IHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubW9kZWwgaW1wb3J0IFNjaGVtYURpZmZNb2RlbAor Citjb3VudCA9IDEKKworCitkZWYgY29tcGFyZV9kaWN0aW9uYXJpZXMoc291cmNlX2RpY3QsIHRh cmdldF9kaWN0LCBub2RlLCBub2RlX2xhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGln bm9yZV9rZXlzPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjb21wYXJl IHRoZSB0d28gZGljdGlvbmFyaWVzLgorCisgICAgOnBhcmFtIHNvdXJjZV9kaWN0OiBGaXJzdCBE aWN0aW9uYXJ5CisgICAgOnBhcmFtIHRhcmdldF9kaWN0OiBTZWNvbmQgRGljdGlvbmFyeQorICAg IDpwYXJhbSBub2RlOiBub2RlIHR5cGUKKyAgICA6cGFyYW0gaWdub3JlX2tleXM6IExpc3Qgb2Yg a2V5cyB0aGF0IHdpbGwgYmUgaWdub3JlZCB3aGlsZSBjb21wYXJpbmcKKyAgICA6cmV0dXJuOgor ICAgICIiIgorCisgICAgZGljdDEgPSBjb3B5LmRlZXBjb3B5KHNvdXJjZV9kaWN0KQorICAgIGRp Y3QyID0gY29weS5kZWVwY29weSh0YXJnZXRfZGljdCkKKworICAgICMgRmluZCB0aGUgZHVwbGlj YXRlIGtleXMgaW4gYm90aCB0aGUgZGljdGlvbmFyaWVzCisgICAgZGljdDFfa2V5cyA9IHNldChk aWN0MS5rZXlzKCkpCisgICAgZGljdDJfa2V5cyA9IHNldChkaWN0Mi5rZXlzKCkpCisgICAgaW50 ZXJzZWN0X2tleXMgPSBkaWN0MV9rZXlzLmludGVyc2VjdGlvbihkaWN0Ml9rZXlzKQorCisgICAg IyBLZXlzIHRoYXQgYXJlIGF2YWlsYWJsZSBpbiBzb3VyY2UgYW5kIG1pc3NpbmcgaW4gdGFyZ2V0 LgorICAgIHNvdXJjZV9vbmx5ID0gW10KKyAgICBhZGRlZCA9IGRpY3QxX2tleXMgLSBkaWN0Ml9r ZXlzCisgICAgZ2xvYmFsIGNvdW50CisgICAgZm9yIGl0ZW0gaW4gYWRkZWQ6CisgICAgICAgIHNv dXJjZV9vbmx5LmFwcGVuZCh7CisgICAgICAgICAgICAnaWQnOiBjb3VudCwKKyAgICAgICAgICAg ICd0eXBlJzogbm9kZSwKKyAgICAgICAgICAgICdsYWJlbCc6IG5vZGVfbGFiZWwsCisgICAgICAg ICAgICAndGl0bGUnOiBpdGVtLAorICAgICAgICAgICAgJ29pZCc6IHNvdXJjZV9kaWN0W2l0ZW1d WydvaWQnXSwKKyAgICAgICAgICAgICdzdGF0dXMnOiBTY2hlbWFEaWZmTW9kZWwuQ09NUEFSSVNP Tl9TVEFUVVNbJ3NvdXJjZV9vbmx5J10KKyAgICAgICAgfSkKKyAgICAgICAgY291bnQgKz0gMQor CisgICAgdGFyZ2V0X29ubHkgPSBbXQorICAgICMgS2V5cyB0aGF0IGFyZSBhdmFpbGFibGUgaW4g dGFyZ2V0IGFuZCBtaXNzaW5nIGluIHNvdXJjZS4KKyAgICByZW1vdmVkID0gZGljdDJfa2V5cyAt IGRpY3QxX2tleXMKKyAgICBmb3IgaXRlbSBpbiByZW1vdmVkOgorICAgICAgICB0YXJnZXRfb25s eS5hcHBlbmQoeworICAgICAgICAgICAgJ2lkJzogY291bnQsCisgICAgICAgICAgICAndHlwZSc6 IG5vZGUsCisgICAgICAgICAgICAnbGFiZWwnOiBub2RlX2xhYmVsLAorICAgICAgICAgICAgJ3Rp dGxlJzogaXRlbSwKKyAgICAgICAgICAgICdvaWQnOiB0YXJnZXRfZGljdFtpdGVtXVsnb2lkJ10s CisgICAgICAgICAgICAnc3RhdHVzJzogU2NoZW1hRGlmZk1vZGVsLkNPTVBBUklTT05fU1RBVFVT Wyd0YXJnZXRfb25seSddCisgICAgICAgIH0pCisgICAgICAgIGNvdW50ICs9IDEKKworICAgICMg Q29tcGFyZSB0aGUgdmFsdWVzIG9mIGR1cGxpY2F0ZXMga2V5cy4KKyAgICBpZGVudGljYWwgPSBb XQorICAgIGRpZmZlcmVudCA9IFtdCisgICAgZm9yIGtleSBpbiBpbnRlcnNlY3Rfa2V5czoKKyAg ICAgICAgIyBpZ25vcmUgdGhlIGtleXMgaWYgYXZhaWxhYmxlLgorICAgICAgICBmb3IgaWdfa2V5 IGluIGlnbm9yZV9rZXlzOgorICAgICAgICAgICAgaWYgaWdfa2V5IGluIGRpY3QxW2tleV06Cisg ICAgICAgICAgICAgICAgZGljdDFba2V5XS5wb3AoaWdfa2V5KQorICAgICAgICAgICAgaWYgaWdf a2V5IGluIGRpY3QyW2tleV06CisgICAgICAgICAgICAgICAgZGljdDJba2V5XS5wb3AoaWdfa2V5 KQorCisgICAgICAgICMgUmVjdXJzaXZlbHkgQ29tcGFyZSB0aGUgdHdvIGRpY3Rpb25hcnkKKyAg ICAgICAgaWYgYXJlX2RpY3Rpb25hcmllc19pZGVudGljYWwoZGljdDFba2V5XSwgZGljdDJba2V5 XSwgaWdub3JlX2tleXMpOgorICAgICAgICAgICAgaWRlbnRpY2FsLmFwcGVuZCh7CisgICAgICAg ICAgICAgICAgJ2lkJzogY291bnQsCisgICAgICAgICAgICAgICAgJ3R5cGUnOiBub2RlLAorICAg ICAgICAgICAgICAgICdsYWJlbCc6IG5vZGVfbGFiZWwsCisgICAgICAgICAgICAgICAgJ3RpdGxl Jzoga2V5LAorICAgICAgICAgICAgICAgICdvaWQnOiBzb3VyY2VfZGljdFtrZXldWydvaWQnXSwK KyAgICAgICAgICAgICAgICAnc291cmNlX29pZCc6IHNvdXJjZV9kaWN0W2tleV1bJ29pZCddLAor ICAgICAgICAgICAgICAgICd0YXJnZXRfb2lkJzogdGFyZ2V0X2RpY3Rba2V5XVsnb2lkJ10sCisg ICAgICAgICAgICAgICAgJ3N0YXR1cyc6IFNjaGVtYURpZmZNb2RlbC5DT01QQVJJU09OX1NUQVRV U1snaWRlbnRpY2FsJ10KKyAgICAgICAgICAgIH0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICBkaWZmZXJlbnQuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAnaWQnOiBjb3VudCwKKyAgICAg ICAgICAgICAgICAndHlwZSc6IG5vZGUsCisgICAgICAgICAgICAgICAgJ2xhYmVsJzogbm9kZV9s YWJlbCwKKyAgICAgICAgICAgICAgICAndGl0bGUnOiBrZXksCisgICAgICAgICAgICAgICAgJ29p ZCc6IHNvdXJjZV9kaWN0W2tleV1bJ29pZCddLAorICAgICAgICAgICAgICAgICdzb3VyY2Vfb2lk Jzogc291cmNlX2RpY3Rba2V5XVsnb2lkJ10sCisgICAgICAgICAgICAgICAgJ3RhcmdldF9vaWQn OiB0YXJnZXRfZGljdFtrZXldWydvaWQnXSwKKyAgICAgICAgICAgICAgICAnc3RhdHVzJzogU2No ZW1hRGlmZk1vZGVsLkNPTVBBUklTT05fU1RBVFVTWydkaWZmZXJlbnQnXQorICAgICAgICAgICAg fSkKKyAgICAgICAgY291bnQgKz0gMQorCisgICAgcmV0dXJuIHNvdXJjZV9vbmx5ICsgdGFyZ2V0 X29ubHkgKyBkaWZmZXJlbnQgKyBpZGVudGljYWwKKworCitkZWYgYXJlX2xpc3RzX2lkZW50aWNh bChzb3VyY2VfbGlzdCwgdGFyZ2V0X2xpc3QsIGlnbm9yZV9rZXlzKToKKyAgICAiIiIKKyAgICBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29tcGFyZSB0d28gbGlzdC4KKyAgICA6cGFyYW0gc291 cmNlX2xpc3Q6CisgICAgOnBhcmFtIHRhcmdldF9saXN0OgorICAgIDpyZXR1cm46CisgICAgIiIi CisgICAgaWYgc291cmNlX2xpc3QgaXMgTm9uZSBvciB0YXJnZXRfbGlzdCBpcyBOb25lIG9yIFwK KyAgICAgICAgICAgIGxlbihzb3VyY2VfbGlzdCkgIT0gbGVuKHRhcmdldF9saXN0KToKKyAgICAg ICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgZm9yIGluZGV4IGluIHJhbmdlKGxl bihzb3VyY2VfbGlzdCkpOgorICAgICAgICAgICAgIyBDaGVjayB0aGUgdHlwZSBvZiB0aGUgdmFs dWUgaWYgaXQgaXMgYW4gZGljdGlvbmFyeSB0aGVuCisgICAgICAgICAgICAjIGNhbGwgYXJlX2Rp Y3Rpb25hcmllc19pZGVudGljYWwoKSBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmIHR5cGUoc291 cmNlX2xpc3RbaW5kZXhdKSBpcyBkaWN0OgorICAgICAgICAgICAgICAgIGlmIG5vdCBhcmVfZGlj dGlvbmFyaWVzX2lkZW50aWNhbChzb3VyY2VfbGlzdFtpbmRleF0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9saXN0W2luZGV4XSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlX2tl eXMpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgaWYgc291cmNlX2xpc3RbaW5kZXhdICE9IHRhcmdldF9saXN0W2lu ZGV4XToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUK KworCitkZWYgYXJlX2RpY3Rpb25hcmllc19pZGVudGljYWwoc291cmNlX2RpY3QsIHRhcmdldF9k aWN0LCBpZ25vcmVfa2V5cyk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRv IHJlY3Vyc2l2ZWx5IGNvbXBhcmUgdHdvIGRpY3Rpb25hcmllcyB3aXRoCisgICAgc2FtZSBrZXlz LgorICAgIDpwYXJhbSBzb3VyY2VfZGljdDoKKyAgICA6cGFyYW0gdGFyZ2V0X2RpY3Q6CisgICAg OnJldHVybjoKKyAgICAiIiIKKworICAgIHNyY19rZXlzID0gc2V0KHNvdXJjZV9kaWN0LmtleXMo KSkKKyAgICB0YXJfa2V5cyA9IHNldCh0YXJnZXRfZGljdC5rZXlzKCkpCisKKyAgICAjIGlnbm9y ZSB0aGUga2V5cyBpZiBhdmFpbGFibGUuCisgICAgZm9yIGlnX2tleSBpbiBpZ25vcmVfa2V5czoK KyAgICAgICAgaWYgaWdfa2V5IGluIHNyY19rZXlzOgorICAgICAgICAgICAgc291cmNlX2RpY3Qu cG9wKGlnX2tleSkKKyAgICAgICAgaWYgaWdfa2V5IGluIHRhcmdldF9kaWN0OgorICAgICAgICAg ICAgdGFyZ2V0X2RpY3QucG9wKGlnX2tleSkKKworICAgICMgS2V5cyB0aGF0IGFyZSBhdmFpbGFi bGUgaW4gc291cmNlIGFuZCBtaXNzaW5nIGluIHRhcmdldC4KKyAgICBzcmNfb25seSA9IHNyY19r ZXlzIC0gdGFyX2tleXMKKyAgICAjIEtleXMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRhcmdldCBh bmQgbWlzc2luZyBpbiBzb3VyY2UuCisgICAgdGFyX29ubHkgPSB0YXJfa2V5cyAtIHNyY19rZXlz CisKKyAgICAjIElmIG51bWJlciBvZiBrZXlzIGFyZSBkaWZmZXJlbnQgaW4gc291cmNlIGFuZCB0 YXJnZXQgdGhlbgorICAgICMgcmV0dXJuIEZhbHNlCisgICAgaWYgbGVuKHNyY19vbmx5KSAhPSBs ZW4odGFyX29ubHkpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICAj IElmIG51bWJlciBvZiBrZXlzIGFyZSBzYW1lIGJ1dCBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGFy Z2V0IHRoZW4KKyAgICAgICAgIyByZXR1cm4gRmFsc2UKKyAgICAgICAgZm9yIGtleSBpbiBzcmNf b25seToKKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gdGFyX29ubHk6CisgICAgICAgICAgICAg ICAgcmV0dXJuIEZhbHNlCisKKyAgICBmb3Iga2V5IGluIHNvdXJjZV9kaWN0LmtleXMoKToKKyAg ICAgICAgaWYgdHlwZShzb3VyY2VfZGljdFtrZXldKSBpcyBkaWN0OgorICAgICAgICAgICAgaWYg bm90IGFyZV9kaWN0aW9uYXJpZXNfaWRlbnRpY2FsKHNvdXJjZV9kaWN0W2tleV0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2RpY3Rba2V5XSwg aWdub3JlX2tleXMpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbGlm IHR5cGUoc291cmNlX2RpY3Rba2V5XSkgaXMgbGlzdDoKKyAgICAgICAgICAgIGlmIG5vdCBhcmVf bGlzdHNfaWRlbnRpY2FsKHNvdXJjZV9kaWN0W2tleV0sIHRhcmdldF9kaWN0W2tleV0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfa2V5cyk6CisgICAgICAg ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzb3Vy Y2VfZGljdFtrZXldICE9IHRhcmdldF9kaWN0W2tleV06CisgICAgICAgICAgICAgICAgcmV0dXJu IEZhbHNlCisKKyAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBkaXJlY3RvcnlfZGlmZihzb3VyY2Vf ZGljdCwgdGFyZ2V0X2RpY3QsIGlnbm9yZV9rZXlzPVtdLCBkaWZmZXJlbmNlPXt9KToKKyAgICAi IiIKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVjdXJzaXZlbHkgY29tcGFyZSB0d28g ZGljdGlvbmFyaWVzIGFuZAorICAgIHJldHVybiB0aGUgZGlmZmVyZW5jZS4KKyAgICBUaGUgZGlm ZmVyZW5jZSBpcyBmcm9tIHNvdXJjZSB0byB0YXJnZXQKKyAgICA6cGFyYW0gc291cmNlX2RpY3Q6 IHNvdXJjZSBkaWN0CisgICAgOnBhcmFtIHRhcmdldF9kaWN0OiB0YXJnZXQgZGljdAorICAgIDpw YXJhbSBpZ25vcmVfa2V5czogaWdub3JlIGtleXMgdG8gY29tcGFyZQorICAgICIiIgorCisgICAg c3JjX2tleXMgPSBzZXQoc291cmNlX2RpY3Qua2V5cygpKQorICAgIHRhcl9rZXlzID0gc2V0KHRh cmdldF9kaWN0LmtleXMoKSkKKworICAgICMgS2V5cyB0aGF0IGFyZSBhdmFpbGFibGUgaW4gc291 cmNlIGFuZCBtaXNzaW5nIGluIHRhcmdldC4KKyAgICBzcmNfb25seSA9IHNyY19rZXlzIC0gdGFy X2tleXMKKyAgICAjIEtleXMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRhcmdldCBhbmQgbWlzc2lu ZyBpbiBzb3VyY2UuCisgICAgdGFyX29ubHkgPSB0YXJfa2V5cyAtIHNyY19rZXlzCisKKyAgICBm b3Iga2V5IGluIHNvdXJjZV9kaWN0LmtleXMoKToKKyAgICAgICAgYWRkZWQgPSBbXQorICAgICAg ICBkZWxldGVkID0gW10KKyAgICAgICAgdXBkYXRlZCA9IFtdCisgICAgICAgIHNvdXJjZSA9IE5v bmUKKworICAgICAgICAjIGlnbm9yZSB0aGUga2V5cyBpZiBhdmFpbGFibGUuCisgICAgICAgIGlm IGtleSBpbiBpZ25vcmVfa2V5czoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiBrZXkg aW4gdGFyX29ubHk6CisgICAgICAgICAgICB0YXJnZXRfb25seVtrZXldID0gdGFyZ2V0X2RpY3Rb a2V5XQorICAgICAgICAgICAgIyBUYXJnZXQgb25seSB2YWx1ZXMgaW4gZGVsZXRlZCBsaXN0Cisg ICAgICAgICAgICBkaWZmZXJlbmNlW2tleV1bJ2RlbGV0ZWQnXSA9IHRhcmdldF9kaWN0W2tleV0K KyAgICAgICAgZWxpZiBrZXkgaW4gc3JjX29ubHk6CisgICAgICAgICAgICAjIFNvdXJjZSBvbmx5 IHZhbHVlcyBpbiB0aGUgbmV3bHkgYWRkZWQgbGlzdAorICAgICAgICAgICAgaWYgdHlwZShzb3Vy Y2VfZGljdFtrZXldKSBpcyBsaXN0OgorICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Vba2V5XSA9 IHt9CisgICAgICAgICAgICAgICAgZGlmZmVyZW5jZVtrZXldWydhZGRlZCddID0gc291cmNlX2Rp Y3Rba2V5XQorICAgICAgICBlbGlmIHR5cGUoc291cmNlX2RpY3Rba2V5XSkgaXMgZGljdDoKKyAg ICAgICAgICAgIGRpcmVjdG9yeV9kaWZmKHNvdXJjZV9kaWN0W2tleV0sIHRhcmdldF9kaWN0W2tl eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfa2V5cywgZGlmZmVyZW5jZSkK KyAgICAgICAgZWxpZiB0eXBlKHNvdXJjZV9kaWN0W2tleV0pIGlzIGxpc3Q6CisgICAgICAgICAg ICB0bXBfdGFyZ2V0ID0gTm9uZQorICAgICAgICAgICAgZm9yIGluZGV4IGluIHJhbmdlKGxlbihz b3VyY2VfZGljdFtrZXldKSk6CisgICAgICAgICAgICAgICAgc291cmNlID0gY29weS5kZWVwY29w eShzb3VyY2VfZGljdFtrZXldW2luZGV4XSkKKyAgICAgICAgICAgICAgICBpZiB0eXBlKHNvdXJj ZSkgaXMgbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPCisgICAgICAgICAgICAgICAg ICAgIHBhc3MKKyAgICAgICAgICAgICAgICBlbGlmIHR5cGUoc291cmNlKSBpcyBkaWN0OgorICAg ICAgICAgICAgICAgICAgICBpZiAnbmFtZScgaW4gc291cmNlIG9yICdjb2xuYW1lJyBpbiBzb3Vy Y2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHRhcmdldF9kaWN0W2tleV0pIGlz IGxpc3QgYW5kIGxlbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2Rp Y3Rba2V5XSkgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5vbmUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfdGFyZ2V0ID0gY29weS5kZWVwY29weSh0YXJn ZXRfZGljdFtrZXldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHRt cF90YXJnZXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgaW4gaXRlbSBhbmQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWyduYW1lJ10gPT0gc291cmNl WyduYW1lJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBvciAoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG5hbWUnIGluIGl0ZW0gYW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnY29sbmFtZSddID09 IHNvdXJjZVsnY29sbmFtZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBjb3B5LmRlZXBjb3B5KGl0 ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG1wIGFuZCBzb3VyY2UgIT0gdG1w OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkLmFwcGVuZChjb3B5LmRl ZXBjb3B5KHNvdXJjZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcF90YXJn ZXQucmVtb3ZlKHRtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHRtcCBhbmQg c291cmNlID09IHRtcDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX3Rhcmdl dC5yZW1vdmUodG1wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgdG1wIGlzIE5v bmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkLmFwcGVuZChzb3VyY2Up CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkZGVkLmFwcGVuZChzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Vb a2V5XSA9IHt9CisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Vba2V5XVsnYWRkZWQnXSA9 IGFkZGVkCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Vba2V5XVsnY2hhbmdlZCddID0g dXBkYXRlZAorICAgICAgICAgICAgICAgIGVsaWYgdGFyZ2V0X2RpY3Rba2V5XSBpcyBOb25lIG9y IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKHRhcmdldF9kaWN0W2tleV0pIGlzIGxp c3QgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRhcmdldF9kaWN0W2tleV0pIDwg aW5kZXggYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlICE9IHRhcmdldF9kaWN0 W2tleV1baW5kZXhdKToKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZVtrZXldID0gc291 cmNlCisgICAgICAgICAgICAgICAgZWxpZiB0eXBlKHRhcmdldF9kaWN0W2tleV0pIGlzIGxpc3Qg YW5kXAorICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRhcmdldF9kaWN0W2tleV0pID4gaW5k ZXg6CisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Vba2V5XSA9IHNvdXJjZQorCisgICAg ICAgICAgICBpZiB0eXBlKHNvdXJjZSkgaXMgZGljdCBhbmQgdG1wX3RhcmdldCBhbmQga2V5IGlu IHRtcF90YXJnZXQgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgdG1wX3RhcmdldFtrZXldIGFu ZCBsZW4odG1wX3RhcmdldFtrZXldKSA+IDA6CisgICAgICAgICAgICAgICAgaWYgdHlwZSh0bXBf dGFyZ2V0W2tleV0pIGlzIGxpc3QgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUo dG1wX3RhcmdldFtrZXldWzBdKSBpcyBkaWN0OgorICAgICAgICAgICAgICAgICAgICBkZWxldGVk ID0gZGVsZXRlZCArIHRtcF90YXJnZXRba2V5XQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgICAgIGRlbGV0ZWQuYXBwZW5kKHtrZXk6IHRtcF90YXJnZXRba2V5XX0pCisg ICAgICAgICAgICAgICAgZGlmZmVyZW5jZVtrZXldWydkZWxldGVkJ10gPSBkZWxldGVkCisgICAg ICAgICAgICBlbGlmIHRtcF90YXJnZXQgYW5kIHR5cGUodG1wX3RhcmdldCkgaXMgbGlzdDoKKyAg ICAgICAgICAgICAgICBkaWZmZXJlbmNlW2tleV1bJ2RlbGV0ZWQnXSA9IHRtcF90YXJnZXQKKwor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc291cmNlX2RpY3Rba2V5XSAhPSB0YXJnZXRf ZGljdFtrZXldOgorICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Vba2V5XSA9IHNvdXJjZV9kaWN0 W2tleV0KKworICAgIHJldHVybiBkaWZmZXJlbmNlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9zY2hlbWFfZGlmZi9tb2RlbC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZm L21vZGVsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNGZhYzIxMDA3 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvbW9kZWwu cHkKQEAgLTAsMCArMSw3NiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE5LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitjbGFzcyBT Y2hlbWFEaWZmTW9kZWwob2JqZWN0KToKKyAgICAiIiIKKyAgICBTY2hlbWFEaWZmTW9kZWwKKyAg ICAiIiIKKworICAgIENPTVBBUklTT05fU1RBVFVTID0geworICAgICAgICAnc291cmNlX29ubHkn OiAnU291cmNlIE9ubHknLAorICAgICAgICAndGFyZ2V0X29ubHknOiAnVGFyZ2V0IE9ubHknLAor ICAgICAgICAnZGlmZmVyZW50JzogJ0RpZmZlcmVudCcsCisgICAgICAgICdpZGVudGljYWwnOiAn SWRlbnRpY2FsJworICAgIH0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhl IGNsYXNzIGFuZAorICAgICAgICBjcmVhdGUgYSBwcm9wZXIgb2JqZWN0IG5hbWUgd2hpY2ggd2ls bCBiZSB1c2VkCisgICAgICAgIHRvIGZldGNoIHRoZSBkYXRhIHVzaW5nIG5hbWVzcGFjZSBuYW1l IGFuZCBvYmplY3QgbmFtZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgKiprd2FyZ3Mg OiBOIG51bWJlciBvZiBwYXJhbWV0ZXJzCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jb21w YXJpc29uX3Jlc3VsdCA9IGRpY3QoKQorICAgICAgICBzZWxmLl9jb21wYXJpc29uX21zZyA9ICdD b21wYXJpc2lvbiBzdGFydGVkLi4uJworICAgICAgICBzZWxmLl9jb21wYXJpc29uX3BlcmNlbnRh Z2UgPSAwCisKKyAgICBkZWYgY2xlYXJfZGF0YShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gY2xlYXIgdGhlIG1vZGVsIGRhdGEuCisgICAgICAgICIiIgorICAgICAg ICBzZWxmLl9jb21wYXJpc29uX3Jlc3VsdC5jbGVhcigpCisKKyAgICBkZWYgc2V0X3Jlc3VsdChz ZWxmLCBub2RlX25hbWUsIGNvbXBhcmVfcmVzdWx0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgbWV0aG9kIHNldCB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc2lvbiBiYXNlZCBvbiBub2Rl cy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NvbXBhcmlzb25fcmVzdWx0W25vZGVfbmFt ZV0gPSBjb21wYXJlX3Jlc3VsdAorCisgICAgZGVmIGdldF9yZXN1bHQoc2VsZiwgbm9kZV9uYW1l PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0 aGUgcmVzdWx0IGZvciB0aGUgbm9kZSBpZiBzcGVjaWZpZWQKKyAgICAgICAgZWxzZSByZXR1cm4g dGhlIGNvbXBsZXRlIHJlc3VsdC4KKyAgICAgICAgOnBhcmFtIG5vZGVfbmFtZTogTmFtZSBvZiB0 aGUgbm9kZSBleDogRGF0YWJhc2UsIFNjaGVtYSwgZXRjLi4KKyAgICAgICAgOnJldHVybjoKKyAg ICAgICAgIiIiCisKKyAgICAgICAgaWYgbm9kZV9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuX2NvbXBhcmlzb25fcmVzdWx0W25vZGVfbmFtZV0KKworICAgICAgICBy ZXR1cm4gc2VsZi5fY29tcGFyaXNvbl9yZXN1bHQKKworICAgIGRlZiBnZXRfY29tcGFyaXNvbl9p bmZvKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRv IGdldCB0aGUgY29tcGFyaXNvbiBpbmZvcm1hdGlvbi4KKyAgICAgICAgOnJldHVybjoKKyAgICAg ICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wYXJpc29uX21zZywgc2VsZi5fY29tcGFy aXNvbl9wZXJjZW50YWdlCisKKyAgICBkZWYgc2V0X2NvbXBhcmlzb25faW5mbyhzZWxmLCBtc2cs IHBlcmNlbnRhZ2UpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIHNldCB0aGUgY29tcGFyaXNvbiBpbmZvcm1hdGlvbi4KKyAgICAgICAgOnBhcmFtIG1zZzoK KyAgICAgICAgOnBhcmFtIHBlcmNlbnRhZ2U6CisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIi IgorICAgICAgICBzZWxmLl9jb21wYXJpc29uX21zZyA9IG1zZworICAgICAgICBzZWxmLl9jb21w YXJpc29uX3BlcmNlbnRhZ2UgPSBwZXJjZW50YWdlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9zY2hlbWFfZGlmZi9ub2RlX3JlZ2lzdHJ5LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc2No ZW1hX2RpZmYvbm9kZV9yZWdpc3RyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAuLjllN2UyNTUzMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nj aGVtYV9kaWZmL25vZGVfcmVnaXN0cnkucHkKQEAgLTAsMCArMSw2MSBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworCitjbGFzcyBTY2hlbWFEaWZmUmVnaXN0cnkob2JqZWN0KToKKyAgICAi IiIKKyAgICBTY2hlbWFEaWZmUmVnaXN0cnkKKworICAgIEl0IGlzIG1vcmUgb2YgYSByZWdpc3Ry eSBmb3IgZGlmZmVyZW50IHR5cGUgb2Ygbm9kZXMgZm9yIHNjaGVtYSBkaWZmLgorICAgICIiIgor ICAgIF9yZWdpc3RlcmVkX25vZGVzID0gZGljdCgpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg bm9kZV9uYW1lLCBub2RlX3ZpZXcsIHBhcmVudF9ub2RlPSdzY2hlbWEnKToKKyAgICAgICAgaWYg bm9kZV9uYW1lIG5vdCBpbiBTY2hlbWFEaWZmUmVnaXN0cnkuX3JlZ2lzdGVyZWRfbm9kZXM6Cisg ICAgICAgICAgICBTY2hlbWFEaWZmUmVnaXN0cnkuX3JlZ2lzdGVyZWRfbm9kZXNbbm9kZV9uYW1l XSA9IHsKKyAgICAgICAgICAgICAgICAndmlldyc6IG5vZGVfdmlldywKKyAgICAgICAgICAgICAg ICAncGFyZW50JzogcGFyZW50X25vZGUKKyAgICAgICAgICAgIH0KKworICAgIEBjbGFzc21ldGhv ZAorICAgIGRlZiBnZXRfcmVnaXN0ZXJlZF9ub2RlcyhjbHMsIG5vZGVfbmFtZT1Ob25lLCBwYXJl bnRfbm9kZT0nc2NoZW1hJyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIHRoZSBub2RlJ3MgdmlldyBvYmplY3QgaWYgbm9kZSBuYW1lCisgICAgICAgIGlz IHNwZWNpZmllZCBvciByZXR1cm4gdGhlIGNvbXBsZXRlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBub2Rl cy4KKworICAgICAgICA6cGFyYW0gbm9kZV9uYW1lOiBOYW1lIG9mIHRoZSBub2RlIGV4OiBEYXRh YmFzZSwgU2NoZW1hLCBldGMuLgorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAg ICAgaWYgbm9kZV9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbm9kZV9uYW1lIGlu IGNscy5fcmVnaXN0ZXJlZF9ub2RlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xzLl9yZWdp c3RlcmVkX25vZGVzW25vZGVfbmFtZV1bJ3ZpZXcnXQorICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJlZ2lzdGVyZWRfbm9kZXMgPSB7fQor ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjbHMuX3JlZ2lzdGVyZWRfbm9kZXMuaXRlbXMoKToK KyAgICAgICAgICAgIGlmIHZhbHVlWydwYXJlbnQnXSA9PSBwYXJlbnRfbm9kZToKKyAgICAgICAg ICAgICAgICByZWdpc3RlcmVkX25vZGVzW2tleV0gPSB2YWx1ZVsndmlldyddCisKKyAgICAgICAg cmV0dXJuIHJlZ2lzdGVyZWRfbm9kZXMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRf bm9kZV92aWV3KGNscywgbm9kZV9uYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCByZXR1cm4gdGhlIHZpZXcgb2JqZWN0IGZvciB0aGUgIm5vZGVzIgorICAgICAg ICBjb21tYW5kIGFzIHBlciB0aGUgc3BlY2lmaWVkIG5vZGUgbmFtZS4KKworICAgICAgICA6cGFy YW0gbm9kZV9uYW1lOiBOYW1lIG9mIHRoZSBub2RlIGV4OiBEYXRhYmFzZSwgU2NoZW1hLCBldGMu LgorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAgY21kID0geyJjbWQiOiAi bm9kZXMsIGNvbXBhcmUsIGRkbF9jb21wYXJlIn0KKyAgICAgICAgbW9kdWxlID0gU2NoZW1hRGlm ZlJlZ2lzdHJ5LmdldF9yZWdpc3RlcmVkX25vZGVzKG5vZGVfbmFtZSkKKyAgICAgICAgaWYgbm90 IG1vZHVsZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBtb2R1bGUo KipjbWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMv Y3NzL3NjaGVtYV9kaWZmLmNzcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3N0YXRp Yy9jc3Mvc2NoZW1hX2RpZmYuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MC4uYWY5YWUzYTdmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1h X2RpZmYvc3RhdGljL2Nzcy9zY2hlbWFfZGlmZi5jc3MKQEAgLTAsMCArMSwxODkgQEAKKy5pY29u LXNjaGVtYS1kaWZmIHsKKyAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICBhbGlnbi1jb250ZW50 OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisgIGhlaWdodDogMThweDsKKyAg d2lkdGg6IDE4cHg7CisgIGJhY2tncm91bmQtc2l6ZTogMjBweCAhaW1wb3J0YW50OworICBiYWNr Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGNlbnRl cjsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiBjZW50ZXI7CisgIGJhY2tncm91bmQtaW1hZ2U6 IHVybCgnLi4vaW1nL2NvbXBhcmUuc3ZnJykgIWltcG9ydGFudDsKK30KKworLmljb24tc2NoZW1h LWRpZmYtd2hpdGUgeworICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgIGFsaWduLWNvbnRlbnQ6 IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0OiAxOHB4OworICB3 aWR0aDogMThweDsKKyAgYmFja2dyb3VuZC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7CisgIGJhY2tn cm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2VudGVy OworICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjsKKyAgYmFja2dyb3VuZC1pbWFnZTog dXJsKCcuLi9pbWcvY29tcGFyZS13aGl0ZS5zdmcnKSAhaW1wb3J0YW50OworfQorCisuaWNvbi1z Y3JpcHQgeworICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgIGFsaWduLWNvbnRlbnQ6IGNlbnRl cjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0OiAxOHB4OworICB3aWR0aDog MThweDsKKyAgYmFja2dyb3VuZC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7CisgIGJhY2tncm91bmQt cmVwZWF0OiBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2VudGVyOworICBi YWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcu Li9pbWcvc2NyaXB0LnN2ZycpICFpbXBvcnRhbnQ7Cit9CisKKy5yZWFsbHlIaWRkZW4geworICBk aXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cit9CisKKyNzY2hlbWEtZGlmZi1oZWFkZXIgeworICBt YXJnaW4tdG9wOiAycHg7Cit9CisKKyNzY2hlbWEtZGlmZi1oZWFkZXIgLmNvbnRyb2wtbGFiZWwg eworICB3aWR0aDogMTIwcHggIWltcG9ydGFudDsKKyAgcGFkZGluZzogNXB4IDVweCAhaW1wb3J0 YW50OworfQorCisjc2NoZW1hLWRpZmYtZ3JpZCB7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBv dXRsaW5lOiAwOworICBmb250LXNpemU6IDlwdDsKKyAgbWFyZ2luLXRvcDogMjhweDsKK30KKwor LnNsaWNrLWhlYWRlci1jb2x1bW4udWktc3RhdGUtZGVmYXVsdCB7CisgICAgaGVpZ2h0OiAzMnB4 ICFpbXBvcnRhbnQ7Cit9CisKKyNzY2hlbWEtZGlmZi1ncmlkIC5ncmlkLWhlYWRlciBsYWJlbCB7 CisgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgIG1hcmdp bjogYXV0byBhdXRvIGF1dG8gNnB4OworfQorCisuZ3JpZC1oZWFkZXIgLnVpLWljb24geworICBt YXJnaW46IDRweCA0cHggYXV0byA2cHg7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50 OworICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworfQorCisuc2xpY2stcm93IC5jZWxsLWFj dGlvbnMgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisvKiBTbGljay5FZGl0b3JzLlRleHQs IFNsaWNrLkVkaXRvcnMuRGF0ZSAqLworI3NjaGVtYS1kaWZmLWdyaWQgLnNsaWNrLWhlYWRlciA+ IGlucHV0LmVkaXRvci10ZXh0IHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAg Ym9yZGVyOiAwOworICBtYXJnaW46IDA7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworICBv dXRsaW5lOiAwOworICBwYWRkaW5nOiAwOworfQorCisvKiBTbGljay5FZGl0b3JzLkNoZWNrYm94 ICovCisjc2NoZW1hLWRpZmYtZ3JpZCAuc2xpY2staGVhZGVyID4gaW5wdXQuZWRpdG9yLWNoZWNr Ym94IHsKKyAgbWFyZ2luOiAwOworICBoZWlnaHQ6IDEwMCU7CisgIHBhZGRpbmc6IDA7CisgIGJv cmRlcjogMDsKK30KKworLnNsaWNrLXJvdy5zZWxlY3RlZCAuY2VsbC1zZWxlY3Rpb24geworICBi YWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogc2hvdyBkZWZhdWx0IHNlbGVjdGVkIHJv dyBiYWNrZ3JvdW5kICovCit9CisKKyNzY2hlbWEtZGlmZi1ncmlkIC5zbGljay1oZWFkZXIgLnVp LXN0YXRlLWRlZmF1bHQsCisjc2NoZW1hLWRpZmYtZ3JpZCAuc2xpY2staGVhZGVyIC51aS13aWRn ZXQtY29udGVudC51aS1zdGF0ZS1kZWZhdWx0LAorI3NjaGVtYS1kaWZmLWdyaWQgLnNsaWNrLWhl YWRlciAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdCB7CisgIGJhY2tncm91bmQ6 IG5vbmU7Cit9CisKKyNzY2hlbWEtZGlmZi1ncmlkIC5zbGljay1oZWFkZXIgLnNsaWNrLWhlYWRl ci1jb2x1bW4geworICBmb250LXdlaWdodDogYm9sZDsKKyAgZGlzcGxheTogYmxvY2s7Cit9CisK KworLnNsaWNrLWdyb3VwLXRvZ2dsZS5jb2xsYXBzZWQgeworICB3aWR0aDogMzBweDsKKyAgYmFj a2dyb3VuZDogdXJsKC4uLy4uLy4uLy4uL3N0YXRpYy9pbWcvY29sbGFwc2VfZXhwYW5kLnN2Zykg MTBweCAxcHggbm8tcmVwZWF0ICFpbXBvcnRhbnQ7Cit9CisKKy5zbGljay1ncm91cC10b2dnbGUu ZXhwYW5kZWQgeworICB3aWR0aDogMzBweDsKKyAgYmFja2dyb3VuZDogdXJsKC4uLy4uLy4uLy4u L3N0YXRpYy9pbWcvY29sbGFwc2VfZXhwYW5kLnN2ZykgLTEwcHggMXB4IG5vLXJlcGVhdCAhaW1w b3J0YW50OworfQorCisKKy5zbGljay1ncm91cC10b2dnbGUgeworICBtYXJnaW4tcmlnaHQ6IDBw eCAhaW1wb3J0YW50OworICBoZWlnaHQ6IDExcHggIWltcG9ydGFudDsKK30KKworI3NjaGVtYS1k aWZmLWRkbC1jb21wIC5iYWRnZSAuY2FyZXQgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK KyAgICBtYXJnaW4tbGVmdDogMnB4OworICAgIG1hcmdpbi1yaWdodDogNHB4OworICAgIHdpZHRo OiAwLjdyZW07Cit9CisKKyNzY2hlbWEtZGlmZi1kZGwtY29tcCAuYmFkZ2UgLmNhcmV0OjpiZWZv cmUgeworICBmb250LWZhbWlseTogIkZvbnRBd2Vzb21lIjsKKyAgY29udGVudDogIlxmMDc4IjsK KyAgZm9udC1zaXplOiAwLjdyZW07CisgIG1hcmdpbi1sZWZ0OiAwcmVtOworfQorCisjc2NoZW1h LWRpZmYtZGRsLWNvbXAgLmJhZGdlIHsKKyAgZm9udC1zaXplOiBpbmhlcml0OworICBwYWRkaW5n OiA3cHg7Cit9CisKKyNzY2hlbWEtZGlmZi1kZGwtY29tcCAuYWNjb3JkaWFuLWdyb3VwIHsKKyAg cGFkZGluZzogMHB4OworfQorCisjZGRsX2NvbXBfZmV0Y2hpbmdfZGF0YS5wZy1zcC1jb250YWlu ZXIgeworICBtaW4taGVpZ2h0OiA0NSU7CisgIGJvdHRvbTogMTBweDsKKworICAucGctc3AtY29u dGVudCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxMDAlOworICB9Cit9 CisKKy5kZGwtY29weSB7CisgIHotaW5kZXg6IDEwOworICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg IHJpZ2h0OiAxcHg7CisgIHRvcDogMXB4OworfQorCisjc2NoZW1hLWRpZmYtZ3JpZCAucGctcGFu ZWwtbWVzc2FnZSB7CisgIGZvbnQtc2l6ZTogMC44NzVyZW07Cit9CisKKworI3NjaGVtYS1kaWZm LWRkbC1jb21wIC5zcWxfZmllbGRfbGF5b3V0IHsKKyAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFu dDsKKyAgaGVpZ2h0OiAxMDAlOworfQorCisjc2NoZW1hLWRpZmYtZGRsLWNvbXAgLnNvdXJjZV9k ZGwsICNzY2hlbWEtZGlmZi1kZGwtY29tcCAudGFyZ2V0X2RkbCwgI3NjaGVtYS1kaWZmLWRkbC1j b21wIC5kaWZmX2RkbCB7CisgIGhlaWdodDogMzAwcHg7CisgIG92ZXJmbG93OiBoaWRkZW47Cit9 CisKKy50YXJnZXQtYnV0dG9ucyB7CisgIGZsZXgtd3JhcDogd3JhcDsKKyAgbWF4LXdpZHRoOiA0 MCUgIWltcG9ydGFudDsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9k aWZmL3N0YXRpYy9pbWcvY29tcGFyZS13aGl0ZS5zdmcgYi93ZWIvcGdhZG1pbi90b29scy9zY2hl bWFfZGlmZi9zdGF0aWMvaW1nL2NvbXBhcmUtd2hpdGUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uNDdiOTViZTAzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvc2NoZW1hX2RpZmYvc3RhdGljL2ltZy9jb21wYXJlLXdoaXRlLnN2ZwpAQCAtMCww ICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBH ZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4g U1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLQ odC70L7QuV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKKwkgdmlld0Jv eD0iMCAwIDI2IDI2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNiAyNjsiIHht bDpzcGFjZT0icHJlc2VydmUiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkuc3Qwe2ZpbGw6 I0ZGRkZGRjt9Cis8L3N0eWxlPgorPHBhdGggY2xhc3M9InN0MCIgZD0iTTIxLjUsMmgtOWMtMS4x LDAtMiwwLjktMiwydjNoLTZjLTEuMSwwLTIsMC45LTIsMnYxM2MwLDEuMSwwLjksMiwyLDJoOGMx LjEsMCwyLTAuOSwyLTJ2LTNoN2MxLjEsMCwyLTAuOSwyLTIKKwlWNEMyMy41LDIuOSwyMi42LDIs MjEuNSwyeiBNMTIuNSwxNC44SDguOWwxLTFjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjNzMC0wLjIt MC4xLTAuM2wtMC4zLTAuM2MtMC4xLTAuMS0wLjItMC4xLTAuMy0wLjEKKwljLTAuMSwwLTAuMiww LTAuMywwLjFsLTIuMywyLjNjLTAuMSwwLjEtMC4xLDAuMi0wLjEsMC4zYzAsMC4xLDAsMC4yLDAu MSwwLjNMOSwxOC4xYzAuMSwwLjEsMC4yLDAuMSwwLjMsMC4xYzAuMSwwLDAuMiwwLDAuMy0wLjEK KwlsMC4zLTAuM2MwLjEtMC4xLDAuMS0wLjIsMC4xLTAuM2MwLTAuMSwwLTAuMi0wLjEtMC4zbC0x LTFoMy42bDAsNS44aC04VjloOEwxMi41LDE0Ljh6IE0yMS41LDkuOGgtMy42bDEtMQorCWMwLjEt MC4xLDAuMS0wLjIsMC4xLTAuM3MwLTAuMi0wLjEtMC4zbC0wLjMtMC4zYy0wLjEtMC4xLTAuMi0w LjEtMC4zLTAuMWMtMC4xLDAtMC4yLDAtMC4zLDAuMWwtMi4zLDIuM2MtMC4xLDAuMS0wLjEsMC4y LTAuMSwwLjMKKwljMCwwLjEsMCwwLjIsMC4xLDAuM2wyLjMsMi4zYzAuMSwwLjEsMC4yLDAuMSww LjMsMC4xYzAuMSwwLDAuMiwwLDAuMy0wLjFsMC4zLTAuM2MwLjEtMC4xLDAuMS0wLjIsMC4xLTAu M2MwLTAuMSwwLTAuMi0wLjEtMC4zCisJbC0xLTFoMy42bDAsNS44aC03VjljMC0xLjEtMC45LTIt Mi0yVjRoOUwyMS41LDkuOHoiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvc2NoZW1hX2RpZmYvc3RhdGljL2ltZy9jb21wYXJlLnN2ZyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3NjaGVtYV9kaWZmL3N0YXRpYy9pbWcvY29tcGFyZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi4xMzY2ZjUwYTUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvaW1nL2NvbXBhcmUuc3ZnCkBAIC0wLDAgKzEsMTUg QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIEdlbmVyYXRv cjogQWRvYmUgSWxsdXN0cmF0b3IgMjMuMC4yLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVy c2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgaWQ9ItCh0LvQvtC5 XzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6 Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgorCSB2aWV3Qm94PSIwIDAg MjYgMjYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI2IDI2OyIgeG1sOnNwYWNl PSJwcmVzZXJ2ZSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCS5zdDB7ZmlsbDojMjIyMjIy O30KKzwvc3R5bGU+Cis8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjEuNSwyaC05Yy0xLjEsMC0yLDAu OS0yLDJ2M2gtNmMtMS4xLDAtMiwwLjktMiwydjEzYzAsMS4xLDAuOSwyLDIsMmg4YzEuMSwwLDIt MC45LDItMnYtM2g3YzEuMSwwLDItMC45LDItMgorCVY0QzIzLjUsMi45LDIyLjYsMiwyMS41LDJ6 IE0xMi41LDE0LjhIOC45bDEtMWMwLjEtMC4xLDAuMS0wLjIsMC4xLTAuM3MwLTAuMi0wLjEtMC4z bC0wLjMtMC4zYy0wLjEtMC4xLTAuMi0wLjEtMC4zLTAuMQorCWMtMC4xLDAtMC4yLDAtMC4zLDAu MWwtMi4zLDIuM2MtMC4xLDAuMS0wLjEsMC4yLTAuMSwwLjNjMCwwLjEsMCwwLjIsMC4xLDAuM0w5 LDE4LjFjMC4xLDAuMSwwLjIsMC4xLDAuMywwLjFjMC4xLDAsMC4yLDAsMC4zLTAuMQorCWwwLjMt MC4zYzAuMS0wLjEsMC4xLTAuMiwwLjEtMC4zYzAtMC4xLDAtMC4yLTAuMS0wLjNsLTEtMWgzLjZs MCw1LjhoLThWOWg4TDEyLjUsMTQuOHogTTIxLjUsOS44aC0zLjZsMS0xCisJYzAuMS0wLjEsMC4x LTAuMiwwLjEtMC4zczAtMC4yLTAuMS0wLjNsLTAuMy0wLjNjLTAuMS0wLjEtMC4yLTAuMS0wLjMt MC4xYy0wLjEsMC0wLjIsMC0wLjMsMC4xbC0yLjMsMi4zYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAu MworCWMwLDAuMSwwLDAuMiwwLjEsMC4zbDIuMywyLjNjMC4xLDAuMSwwLjIsMC4xLDAuMywwLjFj MC4xLDAsMC4yLDAsMC4zLTAuMWwwLjMtMC4zYzAuMS0wLjEsMC4xLTAuMiwwLjEtMC4zYzAtMC4x LDAtMC4yLTAuMS0wLjMKKwlsLTEtMWgzLjZsMCw1LjhoLTdWOWMwLTEuMS0wLjktMi0yLTJWNGg5 TDIxLjUsOS44eiIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hl bWFfZGlmZi9zdGF0aWMvaW1nL3NjcmlwdC5zdmcgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFf ZGlmZi9zdGF0aWMvaW1nL3NjcmlwdC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwLi40ODhiOTExYzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9z Y2hlbWFfZGlmZi9zdGF0aWMvaW1nL3NjcmlwdC5zdmcKQEAgLTAsMCArMSwxOSBAQAorPD94bWwg dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJ bGx1c3RyYXRvciAyMy4wLjIsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAw IEJ1aWxkIDApICAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0 dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv MTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCisJIHZpZXdCb3g9IjAgMCA1MCA1MCIgc3R5bGU9 ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAgNTA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4K KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJLnN0MHtmaWxsOiMyMjIyMjI7fQorPC9zdHlsZT4K KzxnPgorCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MCwzNVYxMWMwLTMuOS0zLjEtNy03LTdIN2Mt My45LDAtNywzLjEtNyw3YzAsMy4xLDIuMSw1LjgsNSw2LjdWMzljMCwzLjksMy4xLDcsNyw3aDMx YzMuOSwwLDctMy4xLDctN3YtNAorCQlINDB6IE00Myw0MmMtMC44LDAtMS44LTEuNC0yLjUtM2g1 QzQ0LjksNDAuNSw0My44LDQyLDQzLDQyeiBNNyw4aDE5LjZDMjYuMiw4LjksMjYsOS45LDI2LDEx YzAsMSwwLjIsMiwwLjcsM0g3Yy0xLjcsMC0zLTEuMy0zLTMKKwkJUzUuMyw4LDcsOHogTTM2Ljcs NDJIMTJjLTEuNywwLTMtMS4zLTMtM1YxOGgyNXYtNGgtMWMtMS43LDAtMy0xLjMtMy0zczEuMy0z LDMtM3MzLDEuMywzLDN2MjhDMzYsNDAsMzYuMiw0MSwzNi43LDQyeiIvPgorCTxyZWN0IHg9IjEz IiB5PSIyMSIgY2xhc3M9InN0MCIgd2lkdGg9IjQiIGhlaWdodD0iNCIvPgorCTxyZWN0IHg9IjE5 IiB5PSIyMSIgY2xhc3M9InN0MCIgd2lkdGg9IjEzIiBoZWlnaHQ9IjQiLz4KKwk8cmVjdCB4PSIx MyIgeT0iMjgiIGNsYXNzPSJzdDAiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiLz4KKwk8cmVjdCB4PSIx OSIgeT0iMjgiIGNsYXNzPSJzdDAiIHdpZHRoPSIxMyIgaGVpZ2h0PSI0Ii8+CisJPHJlY3QgeD0i MTMiIHk9IjM1IiBjbGFzcz0ic3QwIiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ii8+CisJPHJlY3QgeD0i MTkiIHk9IjM1IiBjbGFzcz0ic3QwIiB3aWR0aD0iMTMiIGhlaWdodD0iNCIvPgorPC9nPgorPC9z dmc+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvanMv c2NoZW1hX2RpZmYuYmFja2Zvcm0uanMgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9z dGF0aWMvanMvc2NoZW1hX2RpZmYuYmFja2Zvcm0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwLi5hZDIzYzQ5ODEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvanMvc2NoZW1hX2RpZmYuYmFja2Zvcm0uanMKQEAgLTAs MCArMSw1MDAgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisv LworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKK2ltcG9ydCBCYWNr Ym9uZSBmcm9tICdiYWNrYm9uZSc7CitpbXBvcnQgQmFja2Zvcm0gZnJvbSAncGdhZG1pbi5iYWNr Zm9ybSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOworaW1wb3J0IGNs aXBib2FyZCBmcm9tICdzb3VyY2VzL3NlbGVjdGlvbi9jbGlwYm9hcmQnOworCit2YXIgZm9ybWF0 Tm9kZSA9IGZ1bmN0aW9uIChvcHQpIHsKKyAgaWYgKCFvcHQuaWQpIHsKKyAgICByZXR1cm4gb3B0 LnRleHQ7CisgIH0KKworICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVtZW50KS5kYXRhKCdpbWFn ZScpOworCisgIGlmICghb3B0aW1hZ2UpIHsKKyAgICByZXR1cm4gb3B0LnRleHQ7CisgIH0gZWxz ZSB7CisgICAgcmV0dXJuICQoJzxzcGFuPjwvc3Bhbj4nKS5hcHBlbmQoCisgICAgICAkKCc8c3Bh bj48L3NwYW4+JywgeworICAgICAgICBjbGFzczogJ3djVGFiSWNvbiAnICsgb3B0aW1hZ2UsCisg ICAgICB9KQorICAgICkuYXBwZW5kKCQoJzxzcGFuPjwvc3Bhbj4nKS50ZXh0KG9wdC50ZXh0KSk7 CisgIH0KK307CisKK2xldCBTY2hlbWFEaWZmU3FsQ29udHJvbCA9CisgIEJhY2tmb3JtLlNxbEZp ZWxkQ29udHJvbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICBsYWJlbDogJycsCisg ICAgICBleHRyYUNsYXNzZXM6IFtdLCAvLyBBZGQgZGVmYXVsdCBjb250cm9sIGhlaWdodAorICAg ICAgaGVscE1lc3NhZ2U6IG51bGwsCisgICAgICBtYXhsZW5ndGg6IDQwOTYsCisgICAgICByb3dz OiB1bmRlZmluZWQsCisgICAgICBjb3B5UmVxdWlyZWQ6IGZhbHNlLAorICAgIH0sCisKKyAgICB0 ZW1wbGF0ZTogXy50ZW1wbGF0ZShbCisgICAgICAnPCUgaWYgKGNvcHlSZXF1aXJlZCkgeyAlPjxi dXR0b24gY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5IGRkbC1jb3B5IGQtbm9uZSI+Q29weTwvYnV0 dG9uPiA8JSB9ICU+JywKKyAgICAgICc8ZGl2IGNsYXNzPSJwZ2FkbWluLWNvbnRyb2xzIHBnLWVs LTkgcGctZWwtMTIgc3FsX2ZpZWxkX2xheW91dCA8JT1leHRyYUNsYXNzZXMuam9pbihcJyBcJykl PiI+JywKKyAgICAgICcgIDx0ZXh0YXJlYSAnLAorICAgICAgJyAgICBjbGFzcz0iPCU9QmFja2Zv cm0uY29udHJvbENsYXNzTmFtZSU+ICIgbmFtZT0iPCU9bmFtZSU+IicsCisgICAgICAnICAgIG1h eGxlbmd0aD0iPCU9bWF4bGVuZ3RoJT4iIHBsYWNlaG9sZGVyPSI8JS1wbGFjZWhvbGRlciU+IiA8 JT1kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+JywKKyAgICAgICcgICAgcm93cz08JT1yb3dz JT4nLAorICAgICAgJyAgICA8JT1yZXF1aXJlZCA/ICJyZXF1aXJlZCIgOiAiIiU+PjwlLXZhbHVl JT48L3RleHRhcmVhPicsCisgICAgICAnICA8JSBpZiAoaGVscE1lc3NhZ2UgJiYgaGVscE1lc3Nh Z2UubGVuZ3RoKSB7ICU+JywKKyAgICAgICcgICAgPHNwYW4gY2xhc3M9IjwlPUJhY2tmb3JtLmhl bHBNZXNzYWdlQ2xhc3NOYW1lJT4iPjwlPWhlbHBNZXNzYWdlJT48L3NwYW4+JywKKyAgICAgICcg IDwlIH0gJT4nLAorICAgICAgJzwvZGl2PicsCisgICAgXS5qb2luKCdcbicpKSwKKyAgICBpbml0 aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgIEJhY2tmb3JtLlRleHRhcmVhQ29udHJvbC5wcm90 b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgdGhpcy5zcWxD dHJsID0gbnVsbDsKKworICAgICAgXy5iaW5kQWxsKHRoaXMsICdvbkZvY3VzJywgJ29uQmx1cics ICdyZWZyZXNoVGV4dEFyZWEnLCAnY29weURhdGEnLCk7CisgICAgfSwKKyAgICByZW5kZXI6IGZ1 bmN0aW9uKCkgeworICAgICAgbGV0IG9iaiA9IEJhY2tmb3JtLlNxbEZpZWxkQ29udHJvbC5wcm90 b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICBpZih0aGlzLiRlbC5m aW5kKCcuZGRsLWNvcHknKSkgdGhpcy4kZWwuZmluZCgnLmRkbC1jb3B5Jykub24oJ2NsaWNrJywg dGhpcy5jb3B5RGF0YSk7CisgICAgICByZXR1cm4gb2JqOworICAgIH0sCisgICAgY29weURhdGEo KSB7CisgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgIGNsaXBib2FyZC5jb3B5 VGV4dFRvQ2xpcGJvYXJkKHRoaXMubW9kZWwuZ2V0KCdkaWZmX2RkbCcpKTsKKyAgICAgIHJldHVy biBmYWxzZTsKKyAgICB9LAorICAgIG9uRm9jdXM6IGZ1bmN0aW9uKCkgeworICAgICAgbGV0ICRj dHJsID0gdGhpcy4kZWwuZmluZCgnLnBnYWRtaW4tY29udHJvbHMnKS5maXJzdCgpLAorICAgICAg ICAkY29weSA9IHRoaXMuJGVsLmZpbmQoJy5kZGwtY29weScpOworICAgICAgaWYgKCEkY3RybC5o YXNDbGFzcygnZm9jdXNlZCcpKSAkY3RybC5hZGRDbGFzcygnZm9jdXNlZCcpOworICAgICAgaWYg KCRjb3B5Lmhhc0NsYXNzKCdkLW5vbmUnKSkgJGNvcHkucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwor CisgICAgfSwKKyAgICBvbkJsdXI6IGZ1bmN0aW9uKCkgeworICAgICAgbGV0ICRjb3B5ID0gdGhp cy4kZWwuZmluZCgnLmRkbC1jb3B5Jyk7CisgICAgICBpZiAoISQoZXZlbnQucmVsYXRlZFRhcmdl dCkuaGFzQ2xhc3MoJ2RkbC1jb3B5JykpIHsKKyAgICAgICAgaWYgKCEkY29weS5oYXNDbGFzcygn ZC1ub25lJykpICRjb3B5LmFkZENsYXNzKCdkLW5vbmUnKTsKKyAgICAgICAgdGhpcy4kZWwuZmlu ZCgnLnBnYWRtaW4tY29udHJvbHMnKS5maXJzdCgpLnJlbW92ZUNsYXNzKCdmb2N1c2VkJyk7Cisg ICAgICB9CisgICAgfSwKKworICB9KTsKKworbGV0IFNjaGVtYURpZmZTZWxlY3QyQ29udHJvbCA9 CisgIEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IF8uZXh0 ZW5kKEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLnByb3RvdHlwZS5kZWZhdWx0cywgeworICAgICAg dXJsOiB1bmRlZmluZWQsCisgICAgICB0cmFuc2Zvcm06IHVuZGVmaW5lZCwKKyAgICAgIHVybF93 aXRoX2lkOiBmYWxzZSwKKyAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgYWxsb3dDbGVhcjogdHJ1 ZSwKKyAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ1NlbGVjdCBhbiBpdGVtLi4uJyksCisg ICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAgICB0ZW1wbGF0ZVJlc3VsdDogZm9ybWF0Tm9k ZSwKKyAgICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdE5vZGUsCisgICAgICB9LAorICAg ICAgY29udHJvbHNDbGFzc05hbWU6ICdwZ2FkbWluLWNvbnRyb2xzIHBnLWVsLXNtLTExIHBnLWVs LTEyJywKKyAgICB9KSwKKyAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJu ICdwZ2FkbWluLWNvbnRyb2xzIHBnLWVsLXNtLTQnOworICAgIH0sCisgICAgZXZlbnRzOiB7Cisg ICAgICAnZm9jdXMgc2VsZWN0JzogJ2NsZWFySW52YWxpZCcsCisgICAgICAna2V5ZG93biA6aW5w dXQnOiAncHJvY2Vzc1RhYicsCisgICAgICAnc2VsZWN0MjpzZWxlY3QnOiAnb25TZWxlY3QnLAor ICAgICAgJ3NlbGVjdDI6c2VsZWN0aW5nJzogJ2JlZm9yZVNlbGVjdCcsCisgICAgICAnc2VsZWN0 MjpjbGVhcic6ICdvbkNoYW5nZScsCisgICAgfSwKKyAgICB0ZW1wbGF0ZTogXy50ZW1wbGF0ZShb CisgICAgICAnPCUgaWYobGFiZWwgPT0gZmFsc2UpIHt9IGVsc2UgeyU+JywKKyAgICAgICcgIDxs YWJlbCBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4iPjwlPWxhYmVs JT48L2xhYmVsPicsCisgICAgICAnPCUgfSU+JywKKyAgICAgICc8ZGl2IGNsYXNzPSI8JT1jb250 cm9sc0NsYXNzTmFtZSU+Ij4nLAorICAgICAgJyA8c2VsZWN0IGNsYXNzPSI8JT1CYWNrZm9ybS5j b250cm9sQ2xhc3NOYW1lJT4gPCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iJywKKyAgICAg ICcgIG5hbWU9IjwlPW5hbWUlPiIgdmFsdWU9IjwlLXZhbHVlJT4iIDwlPWRpc2FibGVkID8gImRp c2FibGVkIiA6ICIiJT4nLAorICAgICAgJyAgPCU9cmVxdWlyZWQgPyAicmVxdWlyZWQiIDogIiIl PjwlPSBzZWxlY3QyLm11bHRpcGxlID8gIiBtdWx0aXBsZT4iIDogIj4iICU+JywKKyAgICAgICcg IDwlPXNlbGVjdDIuZmlyc3RfZW1wdHkgPyAiIDxvcHRpb24+PC9vcHRpb24+IiA6ICIiJT4nLAor ICAgICAgJyAgPCUgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgeyU+JywK KyAgICAgICcgICA8JSB2YXIgb3B0aW9uID0gb3B0aW9uc1tpXTsgJT4nLAorICAgICAgJyAgIDxv cHRpb24gJywKKyAgICAgICcgICAgPCUgaWYgKG9wdGlvbi5pbWFnZSkgeyAlPiBkYXRhLWltYWdl PTwlPW9wdGlvbi5pbWFnZSU+IDwlfSU+JywKKyAgICAgICcgICAgPCUgaWYgKG9wdGlvbi5jb25u ZWN0ZWQpIHsgJT4gZGF0YS1jb25uZWN0ZWQ9Y29ubmVjdGVkIDwlfSU+JywKKyAgICAgICcgICAg dmFsdWU9PCUtIGZvcm1hdHRlci5mcm9tUmF3KG9wdGlvbi52YWx1ZSkgJT4nLAorICAgICAgJyAg ICA8JSBpZiAob3B0aW9uLnNlbGVjdGVkKSB7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiPCV9IGVsc2Ug eyU+JywKKyAgICAgICcgICAgPCUgaWYgKCFzZWxlY3QyLm11bHRpcGxlICYmIG9wdGlvbi52YWx1 ZSA9PT0gcmF3VmFsdWUpIHslPnNlbGVjdGVkPSJzZWxlY3RlZCI8JX0lPicsCisgICAgICAnICAg IDwlIGlmIChzZWxlY3QyLm11bHRpcGxlICYmIHJhd1ZhbHVlICYmIHJhd1ZhbHVlLmluZGV4T2Yo b3B0aW9uLnZhbHVlKSAhPSAtMSl7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiIGRhdGEtaW5kZXg9InJh d1ZhbHVlLmluZGV4T2Yob3B0aW9uLnZhbHVlKSI8JX0lPicsCisgICAgICAnICAgIDwlfSU+JywK KyAgICAgICcgICAgPCU9IGRpc2FibGVkID8gImRpc2FibGVkIiA6ICIiJT4+PCUtb3B0aW9uLmxh YmVsJT48L29wdGlvbj4nLAorICAgICAgJyAgPCV9JT4nLAorICAgICAgJyA8L3NlbGVjdD4nLAor ICAgICAgJyA8JSBpZiAoaGVscE1lc3NhZ2UgJiYgaGVscE1lc3NhZ2UubGVuZ3RoKSB7ICU+JywK KyAgICAgICcgPHNwYW4gY2xhc3M9IjwlPUJhY2tmb3JtLmhlbHBNZXNzYWdlQ2xhc3NOYW1lJT4i PjwlPWhlbHBNZXNzYWdlJT48L3NwYW4+JywKKyAgICAgICcgPCUgfSAlPicsCisgICAgICAnPC9k aXY+JywKKyAgICBdLmpvaW4oJ1xuJykpLAorICAgIGJlZm9yZVNlbGVjdDogZnVuY3Rpb24oKSB7 CisgICAgICB2YXIgc2VsVmFsID0gYXJndW1lbnRzWzBdLnBhcmFtcy5hcmdzLmRhdGEuaWQ7CisK KyAgICAgIGlmKHRoaXMuZmllbGQuZ2V0KCdjb25uZWN0JykgJiYgdGhpcy4kZWwuZmluZCgnb3B0 aW9uW3ZhbHVlPSInK3NlbFZhbCsnIl0nKS5hdHRyKCdkYXRhLWNvbm5lY3RlZCcpICE9PSAnY29u bmVjdGVkJykgeworICAgICAgICB0aGlzLmZpZWxkLmdldCgnY29ubmVjdCcpLmFwcGx5KHRoaXMs IFtzZWxWYWwsIHRoaXMuY2hhbmdlSWNvbi5iaW5kKHRoaXMpXSk7CisgICAgICB9IGVsc2Ugewor ICAgICAgICAkKHRoaXMuJHNlbCkudHJpZ2dlcignY2hhbmdlJyk7CisgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKXsgdGhpcy5vbkNoYW5nZS5hcHBseSh0aGlzKTsgfS5iaW5kKHRoaXMpLCAy MDApOworICAgICAgfQorICAgIH0sCisgICAgY2hhbmdlSWNvbjogZnVuY3Rpb24oZGF0YSkgewor ICAgICAgbGV0IHNwYW4gPSB0aGlzLiRlbC5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb24gLnNlbGVj dDItc2VsZWN0aW9uX19yZW5kZXJlZCBzcGFuLndjVGFiSWNvbicpLAorICAgICAgICBzZWxTcGFu ID0gdGhpcy4kZWwuZmluZCgnb3B0aW9uOnNlbGVjdGVkJyk7CisKKyAgICAgIGlmIChzcGFuLmhh c0NsYXNzKCdpY29uLXNlcnZlci1ub3QtY29ubmVjdGVkJykpIHsKKyAgICAgICAgbGV0IGljb24g PSAoZGF0YS5pY29uKSA/IGRhdGEuaWNvbiA6ICdpY29uLXBnJzsKKyAgICAgICAgc3Bhbi5yZW1v dmVDbGFzcygnaWNvbi1zZXJ2ZXItbm90LWNvbm5lY3RlZCcpOworICAgICAgICBzcGFuLmFkZENs YXNzKGljb24pOworICAgICAgICBzcGFuLmF0dHIoJ2RhdGEtY29ubmVjdGVkJywgJ2Nvbm5lY3Rl ZCcpOworCisgICAgICAgIHNlbFNwYW4uZGF0YSgpLmltYWdlID0gaWNvbjsKKyAgICAgICAgc2Vs U3Bhbi5hdHRyKCdkYXRhLWNvbm5lY3RlZCcsICdjb25uZWN0ZWQnKTsKKworICAgICAgICB0aGlz Lm9uQ2hhbmdlLmFwcGx5KHRoaXMpOworICAgICAgfQorICAgICAgZWxzZSBpZiAoc3Bhbi5oYXND bGFzcygnaWNvbi1kYXRhYmFzZS1ub3QtY29ubmVjdGVkJykpIHsKKyAgICAgICAgbGV0IGljb24g PSAoZGF0YS5pY29uKSA/IGRhdGEuaWNvbiA6ICdwZy1pY29uLWRhdGFiYXNlJzsKKworICAgICAg ICBzcGFuLnJlbW92ZUNsYXNzKCdpY29uLWRhdGFiYXNlLW5vdC1jb25uZWN0ZWQnKTsKKyAgICAg ICAgc3Bhbi5hZGRDbGFzcyhpY29uKTsKKyAgICAgICAgc3Bhbi5hdHRyKCdkYXRhLWNvbm5lY3Rl ZCcsICdjb25uZWN0ZWQnKTsKKworICAgICAgICBzZWxTcGFuLnJlbW92ZUNsYXNzKCdpY29uLWRh dGFiYXNlLW5vdC1jb25uZWN0ZWQnKTsKKyAgICAgICAgc2VsU3Bhbi5kYXRhKCkuaW1hZ2UgPSBp Y29uOworICAgICAgICBzZWxTcGFuLmF0dHIoJ2RhdGEtY29ubmVjdGVkJywgJ2Nvbm5lY3RlZCcp OworCisgICAgICAgIHRoaXMub25DaGFuZ2UuYXBwbHkodGhpcyk7CisgICAgICB9CisgICAgfSwK KyAgICBvbkNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVs LAorICAgICAgICBhdHRyQXJyID0gdGhpcy5maWVsZC5nZXQoJ25hbWUnKS5zcGxpdCgnLicpLAor ICAgICAgICBuYW1lID0gYXR0ckFyci5zaGlmdCgpLAorICAgICAgICBwYXRoID0gYXR0ckFyci5q b2luKCcuJyksCisgICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21ET00oKSwKKyAgICAg ICAgY2hhbmdlcyA9IHt9LAorICAgICAgICB0aGF0ID0gdGhpczsKKworICAgICAgaWYgKHRoaXMu bW9kZWwuZXJyb3JNb2RlbCBpbnN0YW5jZW9mIEJhY2tib25lLk1vZGVsKSB7CisgICAgICAgIGlm IChfLmlzRW1wdHkocGF0aCkpIHsKKyAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5z ZXQobmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFyIG5lc3RlZEVycm9yID0g dGhpcy5tb2RlbC5lcnJvck1vZGVsLmdldChuYW1lKTsKKyAgICAgICAgICBpZiAobmVzdGVkRXJy b3IpIHsKKyAgICAgICAgICAgIHRoaXMua2V5UGF0aFNldHRlcihuZXN0ZWRFcnJvciwgcGF0aCwg bnVsbCk7CisgICAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0KG5hbWUsIG5lc3Rl ZEVycm9yKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgY2hhbmdl c1tuYW1lXSA9IF8uaXNFbXB0eShwYXRoKSA/IHZhbHVlIDogXy5jbG9uZShtb2RlbC5nZXQobmFt ZSkpIHx8IHt9OworCisgICAgICBpZiAoIV8uaXNFbXB0eShwYXRoKSkgdGhhdC5rZXlQYXRoU2V0 dGVyKGNoYW5nZXNbbmFtZV0sIHBhdGgsIHZhbHVlKTsKKyAgICAgIHRoYXQuc3RvcExpc3Rlbmlu Zyh0aGF0Lm1vZGVsLCAnY2hhbmdlOicgKyBuYW1lLCB0aGF0LnJlbmRlcik7CisgICAgICBtb2Rl bC5zZXQoY2hhbmdlcyk7CisgICAgICB0aGF0Lmxpc3RlblRvKHRoYXQubW9kZWwsICdjaGFuZ2U6 JyArIG5hbWUsIHRoYXQucmVuZGVyKTsKKworICAgIH0sCisgICAgcmVuZGVyOiBmdW5jdGlvbigp IHsKKyAgICAgIC8qCisgICAgICAgKiBJbml0aWFsaXphdGlvbiBmcm9tIHRoZSBvcmlnaW5hbCBj b250cm9sLgorICAgICAgICovCisgICAgICB0aGlzLmZldGNoRGF0YSgpOworICAgICAgcmV0dXJu IEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcywgYXJn dW1lbnRzKTsKKworICAgIH0sCisgICAgZmV0Y2hEYXRhOiBmdW5jdGlvbigpIHsKKyAgICAgIC8q CisgICAgICAgKiBXZSdyZSBhYm91dCB0byBmZXRjaCB0aGUgb3B0aW9ucyByZXF1aXJlZCBmb3Ig dGhpcyBjb250cm9sLgorICAgICAgICovCisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAg IHVybCA9IHNlbGYuZmllbGQuZ2V0KCd1cmwnKSwKKyAgICAgICAgbSA9IHNlbGYubW9kZWw7CisK KyAgICAgIHVybCA9IF8uaXNGdW5jdGlvbih1cmwpID8gdXJsLmFwcGx5KG0pIDogdXJsOworCisg ICAgICBpZiAodXJsICYmIHNlbGYuZmllbGQuZ2V0KCdkZXBzJykpIHsKKyAgICAgICAgdXJsID0g dXJsLnJlcGxhY2UoJ3NpZCcsIG0uZ2V0KHNlbGYuZmllbGQuZ2V0KCdkZXBzJylbMF0pKTsKKyAg ICAgIH0KKworICAgICAgLy8gSG1tIC0gd2UgZm91bmQgdGhlIHVybCBvcHRpb24uCisgICAgICAv LyBUaGF0IG1lYW5zIC0gd2UgbmVlZHMgdG8gZmV0Y2ggdGhlIG9wdGlvbnMgZnJvbSB0aGF0IG5v ZGUuCisgICAgICBpZiAodXJsKSB7CisgICAgICAgIHZhciBkYXRhOworCisgICAgICAgIG0udHJp Z2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICQu YWpheCh7CisgICAgICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAgICAgIHVybDogdXJsLAorICAg ICAgICB9KQorICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgIC8qCisg ICAgICAgICAgICogV2Ugd2lsbCBjYWNoZSB0aGlzIGRhdGEgZm9yIHNob3J0IHBlcmlvZCBvZiB0 aW1lIGZvciBhdm9pZGluZworICAgICAgICAgICAqIHNhbWUgY2FsbHMuCisgICAgICAgICAgICov CisgICAgICAgICAgICBkYXRhID0gcmVzLmRhdGE7CisgICAgICAgICAgfSkKKyAgICAgICAgICAu ZmFpbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZl dGNoOmVycm9yJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgbS50 cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hlZCcsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAv LyBUbyBmZXRjaCBvbmx5IG9wdGlvbnMgZnJvbSBjYWNoZSwgd2UgZG8gbm90IG5lZWQgdGltZSBm cm9tICdhdCcKKyAgICAgICAgLy8gYXR0cmlidXRlIGJ1dCBvbmx5IG9wdGlvbnMuCisgICAgICAg IC8vCisKKyAgICAgICAgLyoKKyAgICAgICAgICogVHJhbnNmb3JtIHRoZSBkYXRhCisgICAgICAg ICAqLworICAgICAgICB2YXIgdHJhbnNmb3JtID0gdGhpcy5maWVsZC5nZXQoJ3RyYW5zZm9ybScp IHx8IHNlbGYuZGVmYXVsdHMudHJhbnNmb3JtOworICAgICAgICBpZiAodHJhbnNmb3JtICYmIF8u aXNGdW5jdGlvbih0cmFuc2Zvcm0pKSB7CisgICAgICAgICAgLy8gV2Ugd2lsbCB0cmFuc2Zvcm0g dGhlIGRhdGEgbGF0ZXIsIHdoZW4gcmVuZGVyaW5nLgorICAgICAgICAgIC8vIEl0IHdpbGwgYWxs b3cgdXMgdG8gZ2VuZXJhdGUgZGlmZmVyZW50IGRhdGEgYmFzZWQgb24gdGhlCisgICAgICAgICAg Ly8gZGVwZW5kZW5jaWVzLgorICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRpb25zJywgdHJh bnNmb3JtLmJpbmQoc2VsZiwgZGF0YSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHNl bGYuZmllbGQuc2V0KCdvcHRpb25zJywgZGF0YSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9 LAorICB9KTsKKworCitsZXQgU2NoZW1hRGlmZkhlYWRlclZpZXcgPSBCYWNrZm9ybS5Gb3JtLmV4 dGVuZCh7CisgIGxhYmVsOiAnJywKKyAgY2xhc3NOYW1lOiBmdW5jdGlvbigpIHsKKyAgICByZXR1 cm4gJ3BnLWVsLXNtLTEyIHBnLWVsLW1kLTEyIHBnLWVsLWxnLTEyIHBnLWVsLTEyJzsKKyAgfSwK KyAgdGFiUGFuZWxDbGFzc05hbWU6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBCYWNrZm9ybS50 YWJDbGFzc05hbWU7CisgIH0sCisgIHRhYkluZGV4OiAwLAorICBpbml0aWFsaXplOiBmdW5jdGlv bihvcHRzKSB7CisgICAgdGhpcy5sYWJlbCA9IG9wdHMubGFiZWw7CisgICAgQmFja2Zvcm0uRm9y bS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICB9LAorICB0 ZW1wbGF0ZTogXy50ZW1wbGF0ZShgCisgICAgPGRpdiBjbGFzcz0icm93IHBnYWRtaW4tY29udHJv bC1ncm91cCI+CisgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWxhYmVsIj5TZWxlY3QgU291cmNl PC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiBzb3VyY2Ugcm93Ij48L2Rpdj4KKyAgICA8 L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJyb3cgcGdhZG1pbi1jb250cm9sLWdyb3VwIj4KKyAgICAg IDxkaXYgY2xhc3M9ImNvbnRyb2wtbGFiZWwiPlNlbGVjdCBUYXJnZXQ8L2Rpdj4KKyAgICAgIDxk aXYgY2xhc3M9ImNvbC02IHRhcmdldCByb3ciPjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0iY29s LTUgdGFyZ2V0LWJ1dHRvbnMiPgorICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idG5zIGQt ZmxleCI+CisgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBtci1h dXRvIj48aSBjbGFzcz0iaWNvbi1zY2hlbWEtZGlmZi13aGl0ZSI+PC9pPiZuYnNwO0NvbXBhcmU8 L2J1dHRvbj4KKyAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iZ2VuZXJhdGUtc2NyaXB0IiBjbGFz cz0iYnRuIGJ0bi1zZWNvbmRhcnkgbXItMSIgZGlzYWJsZWQ+PGkgY2xhc3M9Imljb24tc2NyaXB0 Ij48L2k+Jm5ic3A7R2VuZXJhdGUgU2NyaXB0PC9idXR0b24+CisgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImJ0bi1ncm91cCBtci0xIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iIj4KKyAgICAg ICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZmlsdGVyIiB0eXBlPSJidXR0b24iIGNsYXNzPSJi dG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkiCisgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0i IgorICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNza2V5PSIiCisgICAgICAgICAgICAgICAg ICAgICAgICB0YWJpbmRleD0iMCI+CisgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBm YS1maWx0ZXIgc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7RmlsdGVy CisgICAgICAgICAgICAgICAgPC9idXR0b24+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0i YnRuLWZpbHRlci1kcm9wZG93biIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4t c2Vjb25kYXJ5IGRyb3Bkb3duLXRvZ2dsZSBkcm9wZG93bi10b2dnbGUtc3BsaXQiCisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRy dWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgorICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9 IiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2tleT0iIgorICAgICAgICAgICAgICAg ICAgICAgICAgdGFiaW5kZXg9IjAiPgorICAgICAgICAgICAgICAgIDwvYnV0dG9uPmAgKworICAg ICAgWworICAgICAgICAnPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IGZpbHRlciI+JywKKyAgICAg ICAgJzxsaT4nLAorICAgICAgICAnPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4taWRl bnRpY2FsIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+JywKKyAgICAgICAgJzxpIGNsYXNzPSJpZGVu dGljYWwgZmEgZmEtY2hlY2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+JywKKyAgICAgICAgJzxz cGFuPiAnICsgZ2V0dGV4dCgnSWRlbnRpY2FsJykgKyAnIDwvc3Bhbj4nLAorICAgICAgICAnPC9h PicsCisgICAgICAgICc8L2xpPicsCisgICAgICAgICc8bGk+JywKKyAgICAgICAgJzxhIGNsYXNz PSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWRpZmZlcmVudHQiIGhyZWY9IiMiIHRhYmluZGV4PSIw Ij4nLAorICAgICAgICAnPGkgY2xhc3M9ImRpZmZlcmVudCBmYSBmYS1jaGVjayIgYXJpYS1oaWRk ZW49InRydWUiPjwvaT4nLAorICAgICAgICAnPHNwYW4+ICcgKyBnZXR0ZXh0KCdEaWZmZXJlbnQn KSArICcgPC9zcGFuPicsCisgICAgICAgICc8L2E+JywKKyAgICAgICAgJzwvbGk+JywKKyAgICAg ICAgJzxsaT4nLAorICAgICAgICAnPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4tc291 cmNlLW9ubHkiIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4nLAorICAgICAgICAnPGkgY2xhc3M9InNv dXJjZS1vbmx5IGZhIGZhLWNoZWNrIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPicsCisgICAgICAg ICc8c3Bhbj4gJyArIGdldHRleHQoJ1NvdXJjZSBPbmx5JykgKyAnIDwvc3Bhbj4nLAorICAgICAg ICAnPC9hPicsCisgICAgICAgICc8L2xpPicsCisgICAgICAgICc8bGk+JywKKyAgICAgICAgJzxh IGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLXRhcmdldC1vbmx5IiBocmVmPSIjIiB0YWJp bmRleD0iMCI+JywKKyAgICAgICAgJzxpIGNsYXNzPSJ0YXJnZXQtb25seSBmYSBmYS1jaGVjayIg YXJpYS1oaWRkZW49InRydWUiPjwvaT4nLAorICAgICAgICAnPHNwYW4+ICcgKyBnZXR0ZXh0KCdU YXJnZXQgT25seScpICsgJyA8L3NwYW4+JywKKyAgICAgICAgJzwvYT4nLAorICAgICAgICAnPC9s aT4nLAorICAgICAgICAnPC91bD4nLAorICAgICAgICAnPC9kaXY+JywKKyAgICAgICAgJzwvZGl2 PicsCisgICAgICAgICc8L2Rpdj4nLAorICAgICAgICAnPC9kaXY+JywKKyAgICAgIF0uam9pbign XG4nKQorICApLAorICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuY2xlYW51cCgpOwor CisgICAgdmFyIGNvbnRyb2xzID0gdGhpcy5jb250cm9scywKKyAgICAgIG0gPSB0aGlzLm1vZGVs LAorICAgICAgc2VsZiA9IHRoaXMsCisgICAgICBpZHggPSAodGhpcy50YWJJbmRleCAqIDEwMCk7 CisKKyAgICB0aGlzLiRlbC5lbXB0eSgpOworCisgICAgJCh0aGlzLnRlbXBsYXRlKCkpLmFwcGVu ZFRvKHRoaXMuJGVsKTsKKworICAgIHRoaXMuZmllbGRzLmVhY2goZnVuY3Rpb24oZikgeworICAg ICAgdmFyIGNudHIgPSBuZXcoZi5nZXQoJ2NvbnRyb2wnKSkoeworICAgICAgICBmaWVsZDogZiwK KyAgICAgICAgbW9kZWw6IG0sCisgICAgICAgIGRpYWxvZzogc2VsZiwKKyAgICAgICAgdGFiSW5k ZXg6IGlkeCwKKyAgICAgIH0pOworCisgICAgICBpZiAoZi5nZXQoJ2dyb3VwJykgJiYgZi5nZXQo J2dyb3VwJykgPT0gJ3NvdXJjZScpIHsKKyAgICAgICAgc2VsZi4kZWwuZmluZCgnLnNvdXJjZScp LmFwcGVuZChjbnRyLnJlbmRlcigpLiRlbCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg ICAgc2VsZi4kZWwuZmluZCgnLnRhcmdldCcpLmFwcGVuZChjbnRyLnJlbmRlcigpLiRlbCk7Cisg ICAgICB9CisKKyAgICAgIGNvbnRyb2xzLnB1c2goY250cik7CisgICAgfSk7CisKKyAgICByZXR1 cm4gdGhpczsKKyAgfSwKKyAgcmVtb3ZlOiBmdW5jdGlvbihvcHRzKSB7CisgICAgaWYgKG9wdHMg JiYgb3B0cy5kYXRhKSB7CisgICAgICBpZiAodGhpcy5tb2RlbCkgeworICAgICAgICBpZiAodGhp cy5tb2RlbC5yZXNldCkgeworICAgICAgICAgIHRoaXMubW9kZWwucmVzZXQoeworICAgICAgICAg ICAgdmFsaWRhdGU6IGZhbHNlLAorICAgICAgICAgICAgc2lsZW50OiB0cnVlLAorICAgICAgICAg ICAgc3RvcDogdHJ1ZSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLm1v ZGVsLmNsZWFyKHsKKyAgICAgICAgICB2YWxpZGF0ZTogZmFsc2UsCisgICAgICAgICAgc2lsZW50 OiB0cnVlLAorICAgICAgICAgIHN0b3A6IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBkZWxl dGUodGhpcy5tb2RlbCk7CisgICAgICB9CisgICAgICBpZiAodGhpcy5lcnJvck1vZGVsKSB7Cisg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcih7CisgICAgICAgICAgdmFsaWRhdGU6IGZhbHNl LAorICAgICAgICAgIHNpbGVudDogdHJ1ZSwKKyAgICAgICAgICBzdG9wOiB0cnVlLAorICAgICAg ICB9KTsKKyAgICAgICAgZGVsZXRlKHRoaXMuZXJyb3JNb2RlbCk7CisgICAgICB9CisgICAgfQor ICAgIHRoaXMuY2xlYW51cCgpOworICAgIEJhY2tmb3JtLkZvcm0ucHJvdG90eXBlLnJlbW92ZS5h cHBseSh0aGlzLCBhcmd1bWVudHMpOworICB9LAorfSk7CisKK2xldCBTY2hlbWFEaWZmRm9vdGVy VmlldyA9IEJhY2tmb3JtLkZvcm0uZXh0ZW5kKHsKKyAgY2xhc3NOYW1lOiBmdW5jdGlvbigpIHsK KyAgICByZXR1cm4gJ3NldC1ncm91cCBwZy1lbC0xMic7CisgIH0sCisgIHRhYlBhbmVsQ2xhc3NO YW1lOiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gQmFja2Zvcm0udGFiQ2xhc3NOYW1lOworICB9 LAorICBsZWdlbmRDbGFzczogJ2JhZGdlJywKKyAgY29udGVudENsYXNzOiBCYWNrZm9ybS5hY2Nv cmRpYW5Db250ZW50Q2xhc3NOYW1lLAorICB0ZW1wbGF0ZTogeworICAgICdjb250ZW50JzogXy50 ZW1wbGF0ZShgCisgICAgICAgPGRpdiBjbGFzcz0icGctZWwtc20tMTIgcm93IDwlPWNvbnRlbnRD bGFzcyU+Ij4KKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBnLWVsLXNtLTQgZGRsLXNv dXJjZSI+U291cmNlPC9kaXY+CisgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZy1lbC1z bS00IGRkbC10YXJnZXQiPlRhcmdldDwvZGl2PgorICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz cz0icGctZWwtc20tNCBkZGwtZGlmZiI+RGlmZmVyZW5jZQorICAgICAgICAgICAgICAgICAgPC9k aXY+CisgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgYCksCisgIH0sCisg IGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICB0aGlzLmxhYmVsID0gb3B0cy5sYWJl bDsKKyAgICBCYWNrZm9ybS5Gb3JtLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFy Z3VtZW50cyk7CisgIH0sCisgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jbGVhbnVw KCk7CisKKyAgICBsZXQgbSA9IHRoaXMubW9kZWwsCisgICAgICAkZWwgPSB0aGlzLiRlbCwKKyAg ICAgIHRtcGwgPSB0aGlzLnRlbXBsYXRlLAorICAgICAgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xz LAorICAgICAgZGF0YSA9IHsKKyAgICAgICAgJ2NsYXNzTmFtZSc6IF8ucmVzdWx0KHRoaXMsICdj bGFzc05hbWUnKSwKKyAgICAgICAgJ2xlZ2VuZENsYXNzJzogXy5yZXN1bHQodGhpcywgJ2xlZ2Vu ZENsYXNzJyksCisgICAgICAgICdjb250ZW50Q2xhc3MnOiBfLnJlc3VsdCh0aGlzLCAnY29udGVu dENsYXNzJyksCisgICAgICAgICdjb2xsYXBzZSc6IF8ucmVzdWx0KHRoaXMsICdjb2xsYXBzZScp LAorICAgICAgfSwKKyAgICAgIGlkeCA9ICh0aGlzLnRhYkluZGV4ICogMTAwKTsKKworICAgIHRo aXMuJGVsLmVtcHR5KCk7CisKKyAgICBsZXQgZWwgPSAkKCh0bXBsWydjb250ZW50J10pKGRhdGEp KS5hcHBlbmRUbygkZWwpOworCisgICAgdGhpcy5maWVsZHMuZWFjaChmdW5jdGlvbihmKSB7Cisg ICAgICBsZXQgY250ciA9IG5ldyhmLmdldCgnY29udHJvbCcpKSh7CisgICAgICAgIGZpZWxkOiBm LAorICAgICAgICBtb2RlbDogbSwKKyAgICAgICAgZGlhbG9nOiBzZWxmLAorICAgICAgICB0YWJJ bmRleDogaWR4LAorICAgICAgICBuYW1lOiBmLmdldCgnbmFtZScpLAorICAgICAgfSk7CisKKyAg ICAgIGlmIChmLmdldCgnZ3JvdXAnKSAmJiBmLmdldCgnZ3JvdXAnKSA9PSAnZGRsLXNvdXJjZScp IHsKKyAgICAgICAgZWwuZmluZCgnLmRkbC1zb3VyY2UnKS5hcHBlbmQoY250ci5yZW5kZXIoKS4k ZWwpOworICAgICAgfQorICAgICAgZWxzZSBpZiAoZi5nZXQoJ2dyb3VwJykgJiYgZi5nZXQoJ2dy b3VwJykgPT0gJ2RkbC10YXJnZXQnKSB7CisgICAgICAgIGVsLmZpbmQoJy5kZGwtdGFyZ2V0Jyku YXBwZW5kKGNudHIucmVuZGVyKCkuJGVsKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg ICBlbC5maW5kKCcuZGRsLWRpZmYnKS5hcHBlbmQoY250ci5yZW5kZXIoKS4kZWwpOworICAgICAg fQorICAgICAgY29udHJvbHMucHVzaChjbnRyKTsKKyAgICB9KTsKKworICAgIGxldCAkZGlmZl9z YyA9IHRoaXMuJGVsLmZpbmQoJy5zb3VyY2VfZGRsJyksCisgICAgICAkZGlmZl90ciA9IHRoaXMu JGVsLmZpbmQoJy50YXJnZXRfZGRsJyksCisgICAgICAkZGlmZiA9IHRoaXMuJGVsLmZpbmQoJy5k aWZmX2RkbCcpLAorICAgICAgZm9vdGVyX2hlaWdodCA9IHRoaXMuJGVsLnBhcmVudCgpLmhlaWdo dCgpIC0gNTA7CisgICAgJGRpZmZfc2MuaGVpZ2h0KGZvb3Rlcl9oZWlnaHQpOworICAgICRkaWZm X3NjLmNzcyh7CisgICAgICAnaGVpZ2h0JzogZm9vdGVyX2hlaWdodCArICdweCcsCisgICAgfSk7 CisgICAgJGRpZmZfdHIuaGVpZ2h0KGZvb3Rlcl9oZWlnaHQpOworICAgICRkaWZmX3RyLmNzcyh7 CisgICAgICAnaGVpZ2h0JzogZm9vdGVyX2hlaWdodCArICdweCcsCisgICAgfSk7CisgICAgJGRp ZmYuaGVpZ2h0KGZvb3Rlcl9oZWlnaHQpOworICAgICRkaWZmLmNzcyh7CisgICAgICAnaGVpZ2h0 JzogZm9vdGVyX2hlaWdodCArICdweCcsCisgICAgfSk7CisKKworICAgIHJldHVybiB0aGlzOwor ICB9LAorfSk7CitleHBvcnQgeworICBTY2hlbWFEaWZmU2VsZWN0MkNvbnRyb2wsCisgIFNjaGVt YURpZmZIZWFkZXJWaWV3LAorICBTY2hlbWFEaWZmRm9vdGVyVmlldywKKyAgU2NoZW1hRGlmZlNx bENvbnRyb2wsCit9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYv c3RhdGljL2pzL3NjaGVtYV9kaWZmLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYv c3RhdGljL2pzL3NjaGVtYV9kaWZmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uYTU2NTAxOWJjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2No ZW1hX2RpZmYvc3RhdGljL2pzL3NjaGVtYV9kaWZmLmpzCkBAIC0wLDAgKzEsMTQ1IEBACisvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisKK2RlZmluZSgncGdhZG1pbi5zY2hlbWFkaWZmJywgWworICAnc291cmNlcy9nZXR0ZXh0Jywg J3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCisgICdzb3VyY2VzL3Bn YWRtaW4nLCAnc291cmNlcy9jc3JmJywgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywKK10sIGZ1bmN0 aW9uKAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBjc3JmVG9rZW4KKykgewor CisgIHZhciB3Y0RvY2tlciA9IHdpbmRvdy53Y0RvY2tlciwKKyAgICBwZ0Jyb3dzZXIgPSBwZ0Fk bWluLkJyb3dzZXI7CisgIC8qIFJldHVybiBiYWNrLCB0aGlzIGhhcyBiZWVuIGNhbGxlZCBtb3Jl IHRoYW4gb25jZSAqLworICBpZiAocGdCcm93c2VyLlNjaGVtYURpZmYpCisgICAgcmV0dXJuIHBn QnJvd3Nlci5TY2hlbWFEaWZmOworCisgIC8vIENyZWF0ZSBhbiBPYmplY3QgUmVzdG9yZSBvZiBw Z0Jyb3dzZXIgY2xhc3MKKyAgcGdCcm93c2VyLlNjaGVtYURpZmYgPSB7CisgICAgaW5pdDogZnVu Y3Rpb24oKSB7CisgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOwor CisgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgIGNzcmZUb2tlbi5zZXRQR0NT UkZUb2tlbihwZ0FkbWluLmNzcmZfdG9rZW5faGVhZGVyLCBwZ0FkbWluLmNzcmZfdG9rZW4pOwor CisKKyAgICAgIC8vIERlZmluZSB0aGUgbm9kZXMgb24gd2hpY2ggdGhlIG1lbnVzIHRvIGJlIGFw cGVhcgorICAgICAgdmFyIG1lbnVzID0gW3sKKyAgICAgICAgbmFtZTogJ3NjaGVtYV9kaWZmJywK KyAgICAgICAgbW9kdWxlOiB0aGlzLAorICAgICAgICBhcHBsaWVzOiBbJ3Rvb2xzJ10sCisgICAg ICAgIGNhbGxiYWNrOiAnc2hvd19zY2hlbWFfZGlmZl90b29sJywKKyAgICAgICAgcHJpb3JpdHk6 IDEsCisgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTY2hlbWEgRGlmZicpLAorICAgICAgICBlbmFi bGU6IHRydWUsCisgICAgICB9XTsKKworICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhtZW51cyk7 CisKKyAgICAgIC8vIENyZWF0aW5nIGEgbmV3IHBnQnJvd3NlciBmcmFtZSB0byBzaG93IHRoZSBk YXRhLgorICAgICAgdmFyIHNjaGVtYURpZmZGcmFtZVR5cGUgPSBuZXcgcGdCcm93c2VyLkZyYW1l KHsKKyAgICAgICAgbmFtZTogJ2ZybV9zY2hlbWFkaWZmJywKKyAgICAgICAgc2hvd1RpdGxlOiB0 cnVlLAorICAgICAgICBpc0Nsb3NlYWJsZTogdHJ1ZSwKKyAgICAgICAgaXNQcml2YXRlOiB0cnVl LAorICAgICAgICB1cmw6ICdhYm91dDpibGFuaycsCisgICAgICB9KTsKKworICAgICAgbGV0IHNl bGYgPSB0aGlzOworICAgICAgLyogQ2FjaGUgbWF5IHRha2UgdGltZSB0byBsb2FkIGZvciB0aGUg Zmlyc3QgdGltZQorICAgICAgICogS2VlcCB0cnlpbmcgdGlsbCBhdmFpbGFibGUKKyAgICAgICAq LworICAgICAgbGV0IGNhY2hlSW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewor ICAgICAgICBpZihwZ0Jyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9uKCkgPiAwKSB7CisgICAgICAg ICAgc2VsZi5wcmVmZXJlbmNlcyA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVs ZSgnc2NoZW1hX2RpZmYnKTsKKyAgICAgICAgICBjbGVhckludGVydmFsKGNhY2hlSW50ZXJ2YWxJ ZCk7CisgICAgICAgIH0KKyAgICAgIH0sMCk7CisKKyAgICAgIHBnQnJvd3Nlci5vblByZWZlcmVu Y2VzQ2hhbmdlKCdzY2hlbWFfZGlmZicsIGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLnByZWZl cmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdzY2hlbWFfZGlm ZicpOworICAgICAgfSk7CisKKyAgICAgIC8vIExvYWQgdGhlIG5ld2x5IGNyZWF0ZWQgZnJhbWUK KyAgICAgIHNjaGVtYURpZmZGcmFtZVR5cGUubG9hZChwZ0Jyb3dzZXIuZG9ja2VyKTsKKyAgICAg IHJldHVybiB0aGlzOworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGJhY2sgdG8gZHJhdyBzY2hl bWEgZGlmZiBmb3Igb2JqZWN0cworICAgIHNob3dfc2NoZW1hX2RpZmZfdG9vbDogZnVuY3Rpb24o KSB7CisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdz Y2hlbWFfZGlmZi5pbml0aWFsaXplJywgbnVsbCk7CisKKyAgICAgICQuYWpheCh7CisgICAgICAg IHVybDogYmFzZVVybCwKKyAgICAgICAgbWV0aG9kOiAnR0VUJywKKyAgICAgICAgZGF0YVR5cGU6 ICdqc29uJywKKyAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJywKKyAgICAg IH0pCisgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgIHNlbGYudHJhbnNf aWQgPSByZXMuZGF0YS5zY2hlbWFEaWZmVHJhbnNJZDsKKyAgICAgICAgICByZXMuZGF0YS5wYW5l bF90aXRsZSA9ICdTY2hlbWEgRGlmZic7IC8vVE9ETzogU2V0IHRoZSBwYW5lbCB0aXRsZQorICAg ICAgICAgIC8vIFRPRE86IEZvbGxvd2luZyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3QgdGhlIGZl dGNoaW5nIG9mIHRoZQorICAgICAgICAgIC8vIGRhdGFiYXNlcyB0aGlzIHNob3VsZCBiZSBtb3Zl ZCB0byBzZXJ2ZXIgc2VsZWN0aW9uIGV2ZW50IGxhdGVyLgorICAgICAgICAgIHNlbGYubGF1bmNo X3NjaGVtYV9kaWZmKHJlcy5kYXRhKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmZhaWwoZnVuY3Rp b24oeGhyKSB7CisgICAgICAgICAgc2VsZi5yYWlzZV9lcnJvcl9vbl9mYWlsKGdldHRleHQoJ1Nj aGVtYSBEaWZmIGluaXRpYWxpemUgZXJyb3InKSAsIHhocik7CisgICAgICAgIH0pOworICAgIH0s CisKKyAgICBsYXVuY2hfc2NoZW1hX2RpZmY6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgIHZhciBw YW5lbF90aXRsZSA9IGRhdGEucGFuZWxfdGl0bGUsCisgICAgICAgIHRyYW5zX2lkID0gZGF0YS5z Y2hlbWFEaWZmVHJhbnNJZCwKKyAgICAgICAgcGFuZWxfdG9vbHRpcCA9ICcnOworCisgICAgICB2 YXIgdXJsX3BhcmFtcyA9IHsKKyAgICAgICAgICAndHJhbnNfaWQnOiB0cmFuc19pZCwKKyAgICAg ICAgICAnZWRpdG9yX3RpdGxlJzogcGFuZWxfdGl0bGUsCisgICAgICAgIH0sCisgICAgICAgIGJh c2VVcmwgPSB1cmxfZm9yKCdzY2hlbWFfZGlmZi5wYW5lbCcsIHVybF9wYXJhbXMpOworCisgICAg ICBpZiAodGhpcy5wcmVmZXJlbmNlcy5zY2hlbWFfZGlmZl9uZXdfYnJvd3Nlcl90YWIpIHsKKyAg ICAgICAgd2luZG93Lm9wZW4oYmFzZVVybCwgJ19ibGFuaycpOworICAgICAgfSBlbHNlIHsKKwor ICAgICAgICB2YXIgcHJvcGVydGllc1BhbmVsID0gcGdCcm93c2VyLmRvY2tlci5maW5kUGFuZWxz KCdwcm9wZXJ0aWVzJyksCisgICAgICAgICAgc2NoZW1hRGlmZlBhbmVsID0gcGdCcm93c2VyLmRv Y2tlci5hZGRQYW5lbCgnZnJtX3NjaGVtYWRpZmYnLCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIHBy b3BlcnRpZXNQYW5lbFswXSk7CisKKyAgICAgICAgLy8gU2V0IHBhbmVsIHRpdGxlIGFuZCBpY29u CisgICAgICAgIHNjaGVtYURpZmZQYW5lbC50aXRsZSgnPHNwYW4gdGl0bGU9IicrcGFuZWxfdG9v bHRpcCsnIj4nK3BhbmVsX3RpdGxlKyc8L3NwYW4+Jyk7CisgICAgICAgIHNjaGVtYURpZmZQYW5l bC5pY29uKCdpY29uLXNjaGVtYS1kaWZmJyk7CisgICAgICAgIHNjaGVtYURpZmZQYW5lbC5mb2N1 cygpOworCisgICAgICAgIHZhciBvcGVuU2NoZW1hRGlmZlVSTCA9IGZ1bmN0aW9uKGopIHsKKyAg ICAgICAgICAvLyBhZGQgc3Bpbm5lciBlbGVtZW50CisgICAgICAgICAgJChqKS5kYXRhKCdlbWJl ZGRlZEZyYW1lJykuJGNvbnRhaW5lci5hcHBlbmQocGdCcm93c2VyLlNjaGVtYURpZmYuc3Bpbm5l cl9lbCk7CisgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZh ciBmcmFtZUluaXRpYWxpemVkID0gJChqKS5kYXRhKCdmcmFtZUluaXRpYWxpemVkJyk7CisgICAg ICAgICAgICBpZiAoZnJhbWVJbml0aWFsaXplZCkgeworICAgICAgICAgICAgICB2YXIgZnJhbWUg PSAkKGopLmRhdGEoJ2VtYmVkZGVkRnJhbWUnKTsKKyAgICAgICAgICAgICAgaWYgKGZyYW1lKSB7 CisgICAgICAgICAgICAgICAgZnJhbWUub3BlblVSTChiYXNlVXJsKTsKKyAgICAgICAgICAgICAg ICBmcmFtZS4kY29udGFpbmVyLmZpbmQoJy5wZy1zcC1jb250YWluZXInKS5kZWxheSgxMDAwKS5o aWRlKDEpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICBvcGVuU2NoZW1hRGlmZlVSTChqKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCAx MDApOworICAgICAgICB9OworCisgICAgICAgIG9wZW5TY2hlbWFEaWZmVVJMKHNjaGVtYURpZmZQ YW5lbCk7CisgICAgICB9CisKKyAgICB9LAorICB9OworCisgIHJldHVybiBwZ0Jyb3dzZXIuU2No ZW1hRGlmZjsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYv c3RhdGljL2pzL3NjaGVtYV9kaWZmX2hvb2suanMgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFf ZGlmZi9zdGF0aWMvanMvc2NoZW1hX2RpZmZfaG9vay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLjM0NjE2Y2YxMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3NjaGVtYV9kaWZmL3N0YXRpYy9qcy9zY2hlbWFfZGlmZl9ob29rLmpzCkBAIC0wLDAg KzEsNDIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLwor Ly8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKworZGVmaW5lKFsKKyAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2Vz L3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAorICAnYWxlcnRpZnknLCAnc291cmNl cy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsCisgICdiYWNrYm9uZScsICdwZ2FkbWluLmJh Y2tncmlkJywgJ2NvZGVtaXJyb3InLCAncGdhZG1pbi5iYWNrZm9ybScsCisgICdwZ2FkbWluLnRv b2xzLnNjaGVtYV9kaWZmX3VpJywnd2Nkb2NrZXInLCAncGdhZG1pbi5icm93c2VyLmZyYW1lJywK KyAgJ3BnYWRtaW4uZGF0YWdyaWQnLAorXSwgZnVuY3Rpb24oCisgIGdldHRleHQsIHVybF9mb3Is ICQsIF8sIEFsZXJ0aWZ5LCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwK KyAgQ29kZU1pcnJvciwgQmFja2Zvcm0sIFNjaGVtYURpZmZVSU1vZHVsZQorKSB7CisgIHZhciBw Z1Rvb2xzID0gcGdBZG1pbi5Ub29scyA9IHBnQWRtaW4uVG9vbHMgfHwge307CisgIHZhciBTY2hl bWFEaWZmVUkgPSBTY2hlbWFEaWZmVUlNb2R1bGUuZGVmYXVsdDsKKworICAvKiBSZXR1cm4gYmFj aywgdGhpcyBoYXMgYmVlbiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgKi8KKyAgaWYgKHBnVG9vbHMu U2NoZW1hRGlmZkhvb2spCisgICAgcmV0dXJuIHBnVG9vbHMuU2NoZW1hRGlmZkhvb2s7CisKKyAg cGdUb29scy5TY2hlbWFEaWZmSG9vayA9IHsKKyAgICBsb2FkOiBmdW5jdGlvbih0cmFuc19pZCkg eworICAgICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICQu YWpheCh7CisgICAgICAgICAgdXJsOiB1cmxfZm9yKCdzY2hlbWFkaWZmLmluZGV4JykgKyAnY2xv c2UvJyt0cmFuc19pZCwKKyAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAorICAgICAgICB9KTsK KyAgICAgIH07CisKKyAgICAgIGxldCBzY2hlbWFVaSA9IG5ldyBTY2hlbWFEaWZmVUkoJCgnI3Nj aGVtYS1kaWZmLWNvbnRhaW5lcicpLCB0cmFuc19pZCk7CisgICAgICBzY2hlbWFVaS5yZW5kZXIo KTsKKyAgICB9LAorICB9OworCisgIHJldHVybiBwZ1Rvb2xzLlNjaGVtYURpZmZIb29rOworfSk7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvanMvc2No ZW1hX2RpZmZfdWkuanMgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvanMv c2NoZW1hX2RpZmZfdWkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4w ZTEwZWMwNjMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlm Zi9zdGF0aWMvanMvc2NoZW1hX2RpZmZfdWkuanMKQEAgLTAsMCArMSw4MzYgQEAKKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v CisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwor aW1wb3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxfZm9yJzsKK2ltcG9ydCAkIGZyb20gJ2px dWVyeSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOworaW1wb3J0IEFs ZXJ0aWZ5IGZyb20gJ3BnYWRtaW4uYWxlcnRpZnlqcyc7CitpbXBvcnQgQmFja2JvbmUgZnJvbSAn YmFja2JvbmUnOworaW1wb3J0IFNsaWNrIGZyb20gJ3NvdXJjZXMvLi4vYnVuZGxlL3NsaWNrZ3Jp ZCc7CitpbXBvcnQgcGdBZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRtaW4nOworaW1wb3J0IHtzZXRQ R0NTUkZUb2tlbn0gZnJvbSAnc291cmNlcy9jc3JmJzsKK2ltcG9ydCB7Z2VuZXJhdGVTY3JpcHR9 IGZyb20gJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOworaW1wb3J0 ICdwZ2FkbWluLnNxbGVkaXRvcic7CisKK2ltcG9ydCB7U2NoZW1hRGlmZlNlbGVjdDJDb250cm9s LCBTY2hlbWFEaWZmSGVhZGVyVmlldywKKyAgU2NoZW1hRGlmZkZvb3RlclZpZXcsIFNjaGVtYURp ZmZTcWxDb250cm9sfSBmcm9tICcuL3NjaGVtYV9kaWZmLmJhY2tmb3JtJzsKKwordmFyIHdjRG9j a2VyID0gd2luZG93LndjRG9ja2VyOworCitleHBvcnQgZGVmYXVsdCBjbGFzcyBTY2hlbWFEaWZm VUkgeworICBjb25zdHJ1Y3Rvcihjb250YWluZXIsIHRyYW5zX2lkKSB7CisgICAgdmFyIHNlbGYg PSB0aGlzOworICAgIHRoaXMuJGNvbnRhaW5lciA9IGNvbnRhaW5lcjsKKyAgICB0aGlzLmhlYWRl ciA9IG51bGw7CisgICAgdGhpcy50cmFuc19pZCA9IHRyYW5zX2lkOworICAgIHRoaXMuZmlsdGVy cyA9IFsnSWRlbnRpY2FsJywgJ0RpZmZlcmVudCcsICdTb3VyY2UgT25seScsICdUYXJnZXQgT25s eSddOworICAgIHRoaXMuc2VsX2ZpbHRlcnMgPSBbJ0lkZW50aWNhbCcsICdEaWZmZXJlbnQnLCAn U291cmNlIE9ubHknLCAnVGFyZ2V0IE9ubHknXTsKKyAgICB0aGlzLmRhdGFWaWV3ID0gbnVsbDsK KyAgICB0aGlzLmdyaWQgPSBudWxsLAorICAgIHRoaXMuc2VsZWN0aW9uID0ge307CisKKyAgICB0 aGlzLm1vZGVsID0gbmV3IEJhY2tib25lLk1vZGVsKHsKKyAgICAgIHNvdXJjZV9zaWQ6IHVuZGVm aW5lZCwKKyAgICAgIHNvdXJjZV9kaWQ6IHVuZGVmaW5lZCwKKyAgICAgIHNvdXJjZV9zY2lkOiB1 bmRlZmluZWQsCisgICAgICB0YXJnZXRfc2lkOiB1bmRlZmluZWQsCisgICAgICB0YXJnZXRfZGlk OiB1bmRlZmluZWQsCisgICAgICB0YXJnZXRfc2NpZDogdW5kZWZpbmVkLAorICAgICAgc291cmNl X2RkbDogdW5kZWZpbmVkLAorICAgICAgdGFyZ2V0X2RkbDogdW5kZWZpbmVkLAorICAgICAgZGlm Zl9kZGw6IHVuZGVmaW5lZCwKKyAgICB9KTsKKworICAgIHNldFBHQ1NSRlRva2VuKHBnQWRtaW4u Y3NyZl90b2tlbl9oZWFkZXIsIHBnQWRtaW4uY3NyZl90b2tlbik7CisKKyAgICB0aGlzLmRvY2tl ciA9IG5ldyB3Y0RvY2tlcigKKyAgICAgIHRoaXMuJGNvbnRhaW5lciwgeworICAgICAgICBhbGxv d0NvbnRleHRNZW51OiBmYWxzZSwKKyAgICAgICAgYWxsb3dDb2xsYXBzZTogZmFsc2UsCisgICAg ICAgIGxvYWRpbmdDbGFzczogJ3BnLXNwLWljb24nLAorICAgICAgICB0aGVtZVBhdGg6IHVybF9m b3IoJ3N0YXRpYycsIHsKKyAgICAgICAgICAnZmlsZW5hbWUnOiAnY3NzJywKKyAgICAgICAgfSks CisgICAgICAgIHRoZW1lOiAnd2ViY2FiaW4ub3ZlcnJpZGVzLmNzcycsCisgICAgICB9CisgICAg KTsKKworICAgIHRoaXMuaGVhZGVyX3BhbmVsID0gbmV3IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7 CisgICAgICBuYW1lOiAnc2NoZW1hX2RpZmZfaGVhZGVyX3BhbmVsJywKKyAgICAgIHNob3dUaXRs ZTogZmFsc2UsCisgICAgICBpc0Nsb3NlYWJsZTogZmFsc2UsCisgICAgICBpc1ByaXZhdGU6IHRy dWUsCisgICAgICBjb250ZW50OiAnPGRpdiBpZD0ic2NoZW1hLWRpZmYtaGVhZGVyIiBjbGFzcz0i cGctZWwtY29udGFpbmVyIiBlbD0ic20iPjwvZGl2PjxkaXYgaWQ9InNjaGVtYS1kaWZmLWdyaWQi IGNsYXNzPSJwZy1lbC1jb250YWluZXIiIGVsPSJzbSI+PC9kaXY+JywKKyAgICAgIGVsQ29udGFp bmVyOiB0cnVlLAorICAgIH0pOworCisgICAgdGhpcy5mb290ZXJfcGFuZWwgPSBuZXcgcGdBZG1p bi5Ccm93c2VyLlBhbmVsKHsKKyAgICAgIG5hbWU6ICdzY2hlbWFfZGlmZl9mb290ZXJfcGFuZWwn LAorICAgICAgdGl0bGU6IGdldHRleHQoJ0RETCBDb21wYXJpc29uJyksCisgICAgICBpc0Nsb3Nl YWJsZTogZmFsc2UsCisgICAgICBpc1ByaXZhdGU6IHRydWUsCisgICAgICBoZWlnaHQ6ICc2MCcs CisgICAgICBjb250ZW50OiAnPGRpdiBpZD0ic2NoZW1hLWRpZmYtZGRsLWNvbXAiIGNsYXNzPSJw Zy1lbC1jb250YWluZXIiIGVsPSJzbSI+PC9kaXY+JywKKyAgICB9KTsKKworICAgIHRoaXMuaGVh ZGVyX3BhbmVsLmxvYWQodGhpcy5kb2NrZXIpOworICAgIHRoaXMuZm9vdGVyX3BhbmVsLmxvYWQo dGhpcy5kb2NrZXIpOworCisKKyAgICB0aGlzLnBhbmVsX29iaiA9IHRoaXMuZG9ja2VyLmFkZFBh bmVsKCdzY2hlbWFfZGlmZl9oZWFkZXJfcGFuZWwnLCB3Y0RvY2tlci5ET0NLLlRPUCwge3c6Jzk1 JScsIGg6JzUwJSd9KTsKKyAgICB0aGlzLmZvb3Rlcl9wYW5lbF9vYmogPSB0aGlzLmRvY2tlci5h ZGRQYW5lbCgnc2NoZW1hX2RpZmZfZm9vdGVyX3BhbmVsJywgd2NEb2NrZXIuRE9DSy5CT1RUT00s IHRoaXMucGFuZWxfb2JqLCB7dzonOTUlJywgaDonNTAlJ30pOworCisgICAgc2VsZi5mb290ZXJf cGFuZWxfb2JqLm9uKHdjRG9ja2VyLkVWRU5ULlZJU0lCSUxJVFlfQ0hBTkdFRCwgZnVuY3Rpb24o KSB7CisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnJlc2l6ZV9n cmlkKCk7CisgICAgICB9LmJpbmQoc2VsZiksIDIwMCk7CisgICAgfSk7CisKKyAgICBzZWxmLmZv b3Rlcl9wYW5lbF9vYmoub24od2NEb2NrZXIuRVZFTlQuUkVTSVpFX0VOREVELCBmdW5jdGlvbigp IHsKKyAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMucmVzaXplX3Bh bmVscygpOworICAgICAgfS5iaW5kKHNlbGYpLCAyMDApOworICAgIH0pOworCisgIH0KKworCisg IHJhaXNlX2Vycm9yX29uX2ZhaWwoYWxlcnRfdGl0bGUsIHhocikgeworICAgIHRyeSB7CisgICAg ICB2YXIgZXJyID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgIEFsZXJ0aWZ5 LmFsZXJ0KGFsZXJ0X3RpdGxlLCBlcnIuZXJyb3Jtc2cpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg ICAgIEFsZXJ0aWZ5LmFsZXJ0KGFsZXJ0X3RpdGxlLCBlLnN0YXR1c1RleHQpOworICAgIH0KKyAg fQorCisgIHJlc2l6ZV9wYW5lbHMoKSB7CisgICAgbGV0ICRzcmNfZGRsID0gJCgnI3NjaGVtYS1k aWZmLWRkbC1jb21wIC5zb3VyY2VfZGRsJyksCisgICAgICAkdGFyX2RkbCA9ICQoJyNzY2hlbWEt ZGlmZi1kZGwtY29tcCAudGFyZ2V0X2RkbCcpLAorICAgICAgJGRpZmZfZGRsID0gJCgnI3NjaGVt YS1kaWZmLWRkbC1jb21wIC5kaWZmX2RkbCcpLAorICAgICAgZm9vdGVyX2hlaWdodCA9ICQoJyNz Y2hlbWEtZGlmZi1kZGwtY29tcCcpLmhlaWdodCgpIC0gNTA7CisKKyAgICAkc3JjX2RkbC5oZWln aHQoZm9vdGVyX2hlaWdodCk7CisgICAgJHNyY19kZGwuY3NzKHsKKyAgICAgICdoZWlnaHQnOiBm b290ZXJfaGVpZ2h0ICsgJ3B4JywKKyAgICB9KTsKKyAgICAkdGFyX2RkbC5oZWlnaHQoZm9vdGVy X2hlaWdodCk7CisgICAgJHRhcl9kZGwuY3NzKHsKKyAgICAgICdoZWlnaHQnOiBmb290ZXJfaGVp Z2h0ICsgJ3B4JywKKyAgICB9KTsKKyAgICAkZGlmZl9kZGwuaGVpZ2h0KGZvb3Rlcl9oZWlnaHQp OworICAgICRkaWZmX2RkbC5jc3MoeworICAgICAgJ2hlaWdodCc6IGZvb3Rlcl9oZWlnaHQgKyAn cHgnLAorICAgIH0pOworCisgICAgdGhpcy5yZXNpemVfZ3JpZCgpOworICB9CisKKyAgY29tcGFy ZV9zY2hlbWFzKCkgeworICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgIHVybF9wYXJhbXMgPSBz ZWxmLm1vZGVsLnRvSlNPTigpOworCisgICAgaWYgKHVybF9wYXJhbXNbJ3NvdXJjZV9zaWQnXSA9 PSAnJyB8fCBfLmlzVW5kZWZpbmVkKHVybF9wYXJhbXNbJ3NvdXJjZV9zaWQnXSkgfHwKKyAgICAg IHVybF9wYXJhbXNbJ3NvdXJjZV9kaWQnXSA9PSAnJyB8fCBfLmlzVW5kZWZpbmVkKHVybF9wYXJh bXNbJ3NvdXJjZV9kaWQnXSkgfHwKKyAgICAgICB1cmxfcGFyYW1zWydzb3VyY2Vfc2NpZCddID09 ICcnIHx8IF8uaXNVbmRlZmluZWQodXJsX3BhcmFtc1snc291cmNlX3NjaWQnXSkgfHwKKyAgICAg ICB1cmxfcGFyYW1zWyd0YXJnZXRfc2lkJ10gPT0gJycgfHwgXy5pc1VuZGVmaW5lZCh1cmxfcGFy YW1zWyd0YXJnZXRfc2lkJ10pIHx8CisgICAgICAgdXJsX3BhcmFtc1sndGFyZ2V0X2RpZCddID09 ICcnIHx8IF8uaXNVbmRlZmluZWQodXJsX3BhcmFtc1sndGFyZ2V0X2RpZCddKSB8fAorICAgICAg IHVybF9wYXJhbXNbJ3RhcmdldF9zY2lkJ10gPT0gJycgfHwgXy5pc1VuZGVmaW5lZCh1cmxfcGFy YW1zWyd0YXJnZXRfc2NpZCddKQorICAgICkgeworICAgICAgQWxlcnRpZnkuYWxlcnQoZ2V0dGV4 dCgnU2VsZWN0aW9uIEVycm9yJyksIGdldHRleHQoJ1BsZWFzZSBzZWxlY3Qgc291cmNlIGFuZCB0 YXJnZXQuJykpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRoaXMuc2VsZWN0 aW9uID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh1cmxfcGFyYW1zKSk7CisKKyAgICB1cmxf cGFyYW1zWyd0cmFuc19pZCddID0gc2VsZi50cmFuc19pZDsKKworICAgIF8uZWFjaCh1cmxfcGFy YW1zLCBmdW5jdGlvbihrZXksIHZhbCkgeworICAgICAgdXJsX3BhcmFtc1trZXldID0gcGFyc2VJ bnQodmFsLCAxMCk7CisgICAgfSk7CisKKyAgICB2YXIgYmFzZVVybCA9IHVybF9mb3IoJ3NjaGVt YV9kaWZmLmNvbXBhcmUnLCB1cmxfcGFyYW1zKTsKKworICAgIHNlbGYubW9kZWwuc2V0KHsKKyAg ICAgICdzb3VyY2VfZGRsJzogdW5kZWZpbmVkLAorICAgICAgJ3RhcmdldF9kZGwnOiB1bmRlZmlu ZWQsCisgICAgICAnZGlmZl9kZGwnOiB1bmRlZmluZWQsCisgICAgfSk7CisKKyAgICBzZWxmLnJl bmRlcl9ncmlkKFtdKTsKKyAgICBzZWxmLmZvb3Rlci5yZW5kZXIoKTsKKyAgICBzZWxmLnN0YXJ0 RGlmZlBvbGxlcigpOworCisgICAgcmV0dXJuICQuYWpheCh7CisgICAgICB1cmw6IGJhc2VVcmws CisgICAgICBtZXRob2Q6ICdHRVQnLAorICAgICAgZGF0YVR5cGU6ICdqc29uJywKKyAgICAgIGNv bnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCisgICAgfSkKKyAgICAgIC5kb25lKGZ1bmN0 aW9uIChyZXMpIHsKKyAgICAgICAgc2VsZi5zdG9wRGlmZlBvbGxlcigpOworICAgICAgICBzZWxm LnJlbmRlcl9ncmlkKHJlcy5kYXRhKTsKKyAgICAgIH0pCisgICAgICAuZmFpbChmdW5jdGlvbiAo eGhyKSB7CisgICAgICAgIHNlbGYucmFpc2VfZXJyb3Jfb25fZmFpbChnZXR0ZXh0KCdTY2hlbWEg Y29tcGFyZSBlcnJvcicpLCB4aHIpOworICAgICAgICBzZWxmLnN0b3BEaWZmUG9sbGVyKCk7Cisg ICAgICB9KTsKKyAgfQorCisgIGdlbmVyYXRlX3NjcmlwdCgpIHsKKyAgICB2YXIgc2VsZiA9IHRo aXMsCisgICAgICBiYXNlU2VydmVyVXJsID0gdXJsX2Zvcignc2NoZW1hX2RpZmYuZ2V0X3NlcnZl cicsIHsnc2lkJzogc2VsZi5zZWxlY3Rpb25bJ3RhcmdldF9zaWQnXSwKKyAgICAgICAgJ2RpZCc6 IHNlbGYuc2VsZWN0aW9uWyd0YXJnZXRfZGlkJ119KSwKKyAgICAgIHNlbF9yb3dzID0gc2VsZi5n cmlkID8gc2VsZi5ncmlkLmdldFNlbGVjdGVkUm93cygpIDogW10sCisgICAgICBzZWxfcm93c19k YXRhID0gW10sCisgICAgICB1cmxfcGFyYW1zID0gc2VsZi5zZWxlY3Rpb24sCisgICAgICBnZW5l cmF0ZWRfc2NyaXB0ID0gdW5kZWZpbmVkLAorICAgICAgb3Blbl9xdWVyeV90b29sOworCisgICAg Xy5lYWNoKHVybF9wYXJhbXMsIGZ1bmN0aW9uKGtleSwgdmFsKSB7CisgICAgICB1cmxfcGFyYW1z W2tleV0gPSBwYXJzZUludCh2YWwsIDEwKTsKKyAgICB9KTsKKworICAgICQoJyNkaWZmX2ZldGNo aW5nX2RhdGEnKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7CisgICAgJCgnI2RpZmZfZmV0Y2hpbmdf ZGF0YScpLmZpbmQoJy5zY2hlbWEtZGlmZi1idXN5LXRleHQnKS50ZXh0KCdHZW5lcmF0aW5nIHNj cmlwdC4uLicpOworCisKKyAgICBvcGVuX3F1ZXJ5X3Rvb2wgPSBmdW5jdGlvbiBnZXRfc2VydmVy X2RldGFpbHMoKSB7CisgICAgICAkLmFqYXgoeworICAgICAgICB1cmw6IGJhc2VTZXJ2ZXJVcmws CisgICAgICAgIG1ldGhvZDogJ0dFVCcsCisgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCisgICAg ICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCisgICAgICB9KQorICAgICAgICAu ZG9uZShmdW5jdGlvbiAocmVzKSB7CisgICAgICAgICAgbGV0IGRhdGEgPSByZXMuZGF0YTsKKyAg ICAgICAgICBsZXQgc2VydmVyX2RhdGEgPSB7fTsKKyAgICAgICAgICBpZiAoZGF0YSkgeworICAg ICAgICAgICAgc2VydmVyX2RhdGFbJ3NnaWQnXSA9IGRhdGEuZ2lkOworICAgICAgICAgICAgc2Vy dmVyX2RhdGFbJ3NpZCddID0gZGF0YS5zaWQ7CisgICAgICAgICAgICBzZXJ2ZXJfZGF0YVsnc3R5 cGUnXSA9IGRhdGEudHlwZTsKKyAgICAgICAgICAgIHNlcnZlcl9kYXRhWydzZXJ2ZXInXSA9IGRh dGEubmFtZTsKKyAgICAgICAgICAgIHNlcnZlcl9kYXRhWyd1c2VyJ10gPSBkYXRhLnVzZXI7Cisg ICAgICAgICAgICBzZXJ2ZXJfZGF0YVsnZGlkJ10gPSBzZWxmLm1vZGVsLmdldCgndGFyZ2V0X2Rp ZCcpOworICAgICAgICAgICAgc2VydmVyX2RhdGFbJ2RhdGFiYXNlJ10gPSBkYXRhLmRhdGFiYXNl OworCisgICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChnZW5lcmF0ZWRfc2NyaXB0KSkKKyAg ICAgICAgICAgICAgZ2VuZXJhdGVkX3NjcmlwdCA9ICdCRUdJTjsnICsgJ1xuJyArIHNlbGYubW9k ZWwuZ2V0KCdkaWZmX2RkbCcpICsgJ1xuJyArICdFTkQ7JzsKKworICAgICAgICAgICAgbGV0IHBy ZWZlcmVuY2VzID0gKHdpbmRvdy5vcGVuZXIgIT09IG51bGwpID8gd2luZG93Lm9wZW5lci5wZ0Fk bWluLkJyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ3NjaGVtYV9kaWZmJykgOiB3 aW5kb3cudG9wLnBnQWRtaW4uQnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnc2No ZW1hX2RpZmYnKTsKKyAgICAgICAgICAgIGlmIChwcmVmZXJlbmNlcy5zY2hlbWFfZGlmZl9uZXdf YnJvd3Nlcl90YWIpIHsKKyAgICAgICAgICAgICAgd2luZG93Lm9wZW5lci5wZ0FkbWluLmRkbF9k aWZmID0gZ2VuZXJhdGVkX3NjcmlwdDsKKyAgICAgICAgICAgICAgZ2VuZXJhdGVTY3JpcHQoc2Vy dmVyX2RhdGEsIHdpbmRvdy5vcGVuZXIucGdBZG1pbi5EYXRhR3JpZCk7CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICB3aW5kb3cudG9wLnBnQWRtaW4uZGRsX2RpZmYgPSBnZW5l cmF0ZWRfc2NyaXB0OworICAgICAgICAgICAgICBnZW5lcmF0ZVNjcmlwdChzZXJ2ZXJfZGF0YSwg d2luZG93LnRvcC5wZ0FkbWluLkRhdGFHcmlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9 CisKKyAgICAgICAgICAkKCcjZGlmZl9mZXRjaGluZ19kYXRhJykuZmluZCgnLnNjaGVtYS1kaWZm LWJ1c3ktdGV4dCcpLnRleHQoJycpOworICAgICAgICAgICQoJyNkaWZmX2ZldGNoaW5nX2RhdGEn KS5hZGRDbGFzcygnZC1ub25lJyk7CisKKyAgICAgICAgfSkKKyAgICAgICAgLmZhaWwoZnVuY3Rp b24gKHhocikgeworICAgICAgICAgIHNlbGYucmFpc2VfZXJyb3Jfb25fZmFpbChnZXR0ZXh0KCdH ZW5lcmF0ZSBzY3JpcHQgZXJyb3InKSwgeGhyKTsKKyAgICAgICAgICAkKCcjZGlmZl9mZXRjaGlu Z19kYXRhJykuZmluZCgnLnNjaGVtYS1kaWZmLWJ1c3ktdGV4dCcpLnRleHQoJycpOworICAgICAg ICAgICQoJyNkaWZmX2ZldGNoaW5nX2RhdGEnKS5hZGRDbGFzcygnZC1ub25lJyk7CisgICAgICAg IH0pOworICAgIH07CisKKyAgICBpZiAoc2VsX3Jvd3MubGVuZ3RoID4gMCkgeworICAgICAgZm9y ICh2YXIgcm93ID0gMDsgcm93IDwgc2VsX3Jvd3MubGVuZ3RoOyByb3crKykgeworICAgICAgICBs ZXQgZGF0YSA9IHNlbGYuZ3JpZC5nZXREYXRhKCkuZ2V0SXRlbShzZWxfcm93c1tyb3ddKTsKKwor ICAgICAgICBpZiAoZGF0YS50eXBlKSB7CisgICAgICAgICAgbGV0IHRtcF9kYXRhID0geworICAg ICAgICAgICAgJ25vZGVfdHlwZSc6IGRhdGEudHlwZSwKKyAgICAgICAgICAgICdzb3VyY2Vfb2lk JzogcGFyc2VJbnQoZGF0YS5vaWQsIDEwKSwKKyAgICAgICAgICAgICd0YXJnZXRfb2lkJzogcGFy c2VJbnQoZGF0YS5vaWQsIDEwKSwKKyAgICAgICAgICAgICdjb21wX3N0YXR1cyc6IGRhdGEuc3Rh dHVzLAorICAgICAgICAgIH07CisKKyAgICAgICAgICBpZihkYXRhLnN0YXR1cyAmJiAoZGF0YS5z dGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZGlmZmVyZW50JyB8fCBkYXRhLnN0YXR1cy50b0xvd2Vy Q2FzZSgpID09ICdpZGVudGljYWwnKSkgeworICAgICAgICAgICAgdG1wX2RhdGFbJ3RhcmdldF9v aWQnXSA9IGRhdGEudGFyZ2V0X29pZDsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VsX3Jvd3Nf ZGF0YS5wdXNoKHRtcF9kYXRhKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICB1cmxfcGFy YW1zWydzZWxfcm93cyddID0gc2VsX3Jvd3NfZGF0YTsKKworICAgICAgbGV0IGJhc2VVcmwgPSB1 cmxfZm9yKCdzY2hlbWFfZGlmZi5nZW5lcmF0ZV9zY3JpcHQnLCB7J3RyYW5zX2lkJzogc2VsZi50 cmFuc19pZH0pOworCisgICAgICAkLmFqYXgoeworICAgICAgICB1cmw6IGJhc2VVcmwsCisgICAg ICAgIG1ldGhvZDogJ1BPU1QnLAorICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAorICAgICAgICBj b250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAorICAgICAgICBkYXRhOiBKU09OLnN0cmlu Z2lmeSh1cmxfcGFyYW1zKSwKKyAgICAgIH0pCisgICAgICAgIC5kb25lKGZ1bmN0aW9uIChyZXMp IHsKKyAgICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICBnZW5lcmF0ZWRfc2NyaXB0ID0g J0JFR0lOOycgKyAnXG4nICsgcmVzLmRpZmZfZGRsICsgJ1xuJyArICdFTkQ7JzsKKyAgICAgICAg ICB9CisgICAgICAgICAgb3Blbl9xdWVyeV90b29sKCk7CisgICAgICAgIH0pCisgICAgICAgIC5m YWlsKGZ1bmN0aW9uICh4aHIpIHsKKyAgICAgICAgICBzZWxmLnJhaXNlX2Vycm9yX29uX2ZhaWwo Z2V0dGV4dCgnR2VuZXJhdGUgc2NyaXB0IGVycm9yJyksIHhocik7CisgICAgICAgICAgJCgnI2Rp ZmZfZmV0Y2hpbmdfZGF0YScpLmFkZENsYXNzKCdkLW5vbmUnKTsKKyAgICAgICAgfSk7CisgICAg fSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChzZWxmLm1vZGVsLmdldCgnZGlmZl9kZGwnKSkpIHsK KyAgICAgIG9wZW5fcXVlcnlfdG9vbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0K KworICByZW5kZXJfZ3JpZChkYXRhKSB7CisKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgdmFy IGdyaWQ7CisKKyAgICBpZiAoc2VsZi5ncmlkKSB7CisgICAgICAvLyBPbmx5IHJlbmRlciB0aGUg ZGF0YQorICAgICAgc2VsZi5yZW5kZXJfZ3JpZF9kYXRhKGRhdGEpOworICAgICAgcmV0dXJuOwor ICAgIH0KKyAgICAvLyBDaGVja2JveCBDb2x1bW4KKyAgICB2YXIgY2hlY2tib3hTZWxlY3RvciA9 IG5ldyBTbGljay5DaGVja2JveFNlbGVjdENvbHVtbih7CisgICAgICBjc3NDbGFzczogJ3NsaWNr LWNlbGwtY2hlY2tib3hzZWwnLAorICAgICAgbWluV2lkdGg6IDMwLAorICAgIH0pOworCisgICAg Ly8gRm9ybWF0IFNjaGVtYSBvYmplY3QgdGl0bGUgd2l0aCBhcHByb3ByaWF0ZSBpY29uCisgICAg dmFyIGZvcm1hdENvbHVtblRpdGxlID0gZnVuY3Rpb24gKHJvdywgY2VsbCwgdmFsdWUsIGNvbHVt bkRlZiwgZGF0YUNvbnRleHQpIHsKKyAgICAgIGxldCBpY29uID0gJ2ljb24tJyArIGRhdGFDb250 ZXh0LnR5cGU7CisgICAgICByZXR1cm4gJzxpIGNsYXNzPSJtbC01IHdjVGFiSWNvbiAnKyBpY29u ICsnIj48L2k+PHNwYW4+JyArIHZhbHVlICsgJzwvc3Bhbj4nOworICAgIH07CisKKyAgICAvLyBH cmlkIENvbHVtbnMKKyAgICB2YXIgZ3JpZF93aWR0aCA9ICAoc2VsZi5ncmlkX3dpZHRoIC0gNDcp IC8gMiA7CisgICAgdmFyIGNvbHVtbnMgPSBbCisgICAgICBjaGVja2JveFNlbGVjdG9yLmdldENv bHVtbkRlZmluaXRpb24oKSwKKyAgICAgIHtpZDogJ3RpdGxlJywgbmFtZTogJ1NjaGVtYSBPYmpl Y3RzJywgZmllbGQ6ICd0aXRsZScsIG1pbldpZHRoOiBncmlkX3dpZHRoLCBmb3JtYXR0ZXI6IGZv cm1hdENvbHVtblRpdGxlfSwKKyAgICAgIHtpZDogJ3N0YXR1cycsIG5hbWU6ICdDb21wYXJpc29u IFJlc3VsdCcsIGZpZWxkOiAnc3RhdHVzJywgbWluV2lkdGg6IGdyaWRfd2lkdGh9LAorICAgICAg e2lkOiAnbGFiZWwnLCBuYW1lOiAnU2NoZW1hIE9iamVjdHMnLCBmaWVsZDogJ2xhYmVsJywgIHdp ZHRoOiAwLCBtaW5XaWR0aDogMCwgbWF4V2lkdGg6IDAsCisgICAgICAgIGNzc0NsYXNzOiAncmVh bGx5SGlkZGVuJywgaGVhZGVyQ3NzQ2xhc3M6ICdyZWFsbHlIaWRkZW4nfSwKKyAgICAgIHtpZDog J3R5cGUnLCBuYW1lOiAnU2NoZW1hIE9iamVjdHMnLCBmaWVsZDogJ3R5cGUnLCAgd2lkdGg6IDAs IG1pbldpZHRoOiAwLCBtYXhXaWR0aDogMCwKKyAgICAgICAgY3NzQ2xhc3M6ICdyZWFsbHlIaWRk ZW4nLCBoZWFkZXJDc3NDbGFzczogJ3JlYWxseUhpZGRlbid9LAorICAgICAge2lkOiAnaWQnLCBu YW1lOiAnaWQnLCBmaWVsZDogJ2lkJywgd2lkdGg6IDAsIG1pbldpZHRoOiAwLCBtYXhXaWR0aDog MCwKKyAgICAgICAgY3NzQ2xhc3M6ICdyZWFsbHlIaWRkZW4nLCBoZWFkZXJDc3NDbGFzczogJ3Jl YWxseUhpZGRlbicgfSwKKworICAgIF07CisKKyAgICAvLyBHcmlkIE9wdGlvbnMKKyAgICB2YXIg b3B0aW9ucyA9IHsKKyAgICAgIGVuYWJsZUNlbGxOYXZpZ2F0aW9uOiB0cnVlLAorICAgICAgZW5h YmxlQ29sdW1uUmVvcmRlcjogZmFsc2UsCisgICAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUs CisgICAgfTsKKworICAgIC8vIEdyb3VwaW5nIGJ5IFNjaGVtYSBPYmplY3QKKyAgICBzZWxmLmdy b3VwQnlTY2hlbWFPYmplY3QgPSBmdW5jdGlvbigpIHsKKyAgICAgIHNlbGYuZGF0YVZpZXcuc2V0 R3JvdXBpbmcoeworICAgICAgICBnZXR0ZXI6ICd0eXBlJywKKyAgICAgICAgZm9ybWF0dGVyOiBm dW5jdGlvbiAoZykgeworICAgICAgICAgIGxldCBpY29uID0gJ2ljb24tY29sbC0nICsgZy52YWx1 ZTsKKyAgICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJ3Y1RhYkljb24gJysgaWNvbiArJyI+PC9p PjxzcGFuPicgKyBnLnJvd3NbMF0ubGFiZWwgKyAnPC9zcGFuPic7CisgICAgICAgIH0sCisgICAg ICAgIGFnZ3JlZ2F0ZUNvbGxhcHNlZDogdHJ1ZSwKKyAgICAgICAgbGF6eVRvdGFsc0NhbGN1bGF0 aW9uOiB0cnVlLAorICAgICAgfSk7CisgICAgfTsKKworICAgIHZhciBncm91cEl0ZW1NZXRhZGF0 YVByb3ZpZGVyID0gbmV3IFNsaWNrLkRhdGEuR3JvdXBJdGVtTWV0YWRhdGFQcm92aWRlcih7IGNo ZWNrYm94U2VsZWN0OiB0cnVlLAorICAgICAgY2hlY2tib3hTZWxlY3RQbHVnaW46IGNoZWNrYm94 U2VsZWN0b3IgfSk7CisKKyAgICAvLyBEYXRhdmlldyBmb3IgZ3JpZAorICAgIHNlbGYuZGF0YVZp ZXcgPSBuZXcgU2xpY2suRGF0YS5EYXRhVmlldyh7CisgICAgICBncm91cEl0ZW1NZXRhZGF0YVBy b3ZpZGVyOiBncm91cEl0ZW1NZXRhZGF0YVByb3ZpZGVyLAorICAgICAgaW5saW5lRmlsdGVyczog ZmFsc2UsCisgICAgfSk7CisKKyAgICAvLyBXaXJlIHVwIG1vZGVsIGV2ZW50cyB0byBkcml2ZSB0 aGUgZ3JpZAorICAgIHNlbGYuZGF0YVZpZXcub25Sb3dDb3VudENoYW5nZWQuc3Vic2NyaWJlKGZ1 bmN0aW9uICgpIHsKKyAgICAgIGdyaWQudXBkYXRlUm93Q291bnQoKTsKKyAgICAgIGdyaWQucmVu ZGVyKCk7CisgICAgfSk7CisgICAgc2VsZi5kYXRhVmlldy5vblJvd3NDaGFuZ2VkLnN1YnNjcmli ZShmdW5jdGlvbiAoZSwgYXJncykgeworICAgICAgZ3JpZC5pbnZhbGlkYXRlUm93cyhhcmdzLnJv d3MpOworICAgICAgZ3JpZC5yZW5kZXIoKTsKKyAgICB9KTsKKworICAgIC8vIENoYW5nZSBSb3cg Y3NzIG9uIHRoZSBiYXNpcyBvZiBpdGVtIHN0YXR1cworICAgIHNlbGYuZGF0YVZpZXcuZ2V0SXRl bU1ldGFkYXRhID0gZnVuY3Rpb24ocm93KSB7CisgICAgICB2YXIgaXRlbSA9IHNlbGYuZGF0YVZp ZXcuZ2V0SXRlbShyb3cpOworICAgICAgaWYgKGl0ZW0uX19ncm91cCkgeworICAgICAgICByZXR1 cm4gZ3JvdXBJdGVtTWV0YWRhdGFQcm92aWRlci5nZXRHcm91cFJvd01ldGFkYXRhKGl0ZW0pOwor ICAgICAgfQorCisgICAgICBpZihpdGVtLnN0YXR1cyA9PT0gJ0RpZmZlcmVudCcpIHsKKyAgICAg ICAgcmV0dXJuIHsgY3NzQ2xhc3NlczogJ2RpZmZlcmVudCcgfTsKKyAgICAgIH0gZWxzZSBpZiAo aXRlbS5zdGF0dXMgPT09ICdTb3VyY2UgT25seScpIHsKKyAgICAgICAgcmV0dXJuIHsgY3NzQ2xh c3NlczogJ3NvdXJjZScgfTsKKyAgICAgIH0gZWxzZSBpZiAoaXRlbS5zdGF0dXMgPT09ICdUYXJn ZXQgT25seScpIHsKKyAgICAgICAgcmV0dXJuIHsgY3NzQ2xhc3NlczogJ3RhcmdldCcgfTsKKyAg ICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICAgfTsKKworICAgIC8vIEdyaWQgZmlsdGVy CisgICAgc2VsZi5maWx0ZXIgPSBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgbGV0IHNlbGYgPSB0 aGlzOworICAgICAgaWYgKHNlbGYuc2VsX2ZpbHRlcnMuaW5kZXhPZihpdGVtLnN0YXR1cykgIT09 IC0xKSByZXR1cm4gdHJ1ZTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgbGV0 ICRkYXRhX2dyaWQgPSAkKCcjc2NoZW1hLWRpZmYtZ3JpZCcpOworICAgIGdyaWQgPSB0aGlzLmdy aWQgPSBuZXcgU2xpY2suR3JpZCgkZGF0YV9ncmlkLCBzZWxmLmRhdGFWaWV3LCBjb2x1bW5zLCBv cHRpb25zKTsKKyAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKGdyb3VwSXRlbU1ldGFkYXRhUHJvdmlk ZXIpOworICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwobmV3IFNsaWNrLlJvd1NlbGVjdGlvbk1v ZGVsKHtzZWxlY3RBY3RpdmVSb3c6IGZhbHNlfSkpOworICAgIGdyaWQucmVnaXN0ZXJQbHVnaW4o Y2hlY2tib3hTZWxlY3Rvcik7CisKKyAgICBncmlkLm9uQ2xpY2suc3Vic2NyaWJlKGZ1bmN0aW9u KGUsIGFyZ3MpIHsKKyAgICAgIGlmIChhcmdzLnJvdykgeworICAgICAgICBkYXRhID0gYXJncy5n cmlkLmdldERhdGEoKS5nZXRJdGVtKGFyZ3Mucm93KTsKKyAgICAgICAgaWYgKGRhdGEuc3RhdHVz KSB0aGlzLmRkbENvbXBhcmUoZGF0YSk7CisgICAgICB9CisgICAgfS5iaW5kKHNlbGYpKTsKKwor ICAgIGdyaWQub25TZWxlY3RlZFJvd3NDaGFuZ2VkLnN1YnNjcmliZShzZWxmLmhhbmRsZV9nZW5l cmF0ZV9idXR0b24uYmluZChzZWxmKSk7CisKKyAgICBzZWxmLm1vZGVsLm9uKCdjaGFuZ2U6ZGlm Zl9kZGwnLCBzZWxmLmhhbmRsZV9nZW5lcmF0ZV9idXR0b24uYmluZChzZWxmKSk7CisKKyAgICAk KCcjc2NoZW1hLWRpZmYtZ3JpZCcpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKCkgeworICAgICAgaWYg KChldmVudC5rZXlDb2RlID09IDM4IHx8IGV2ZW50LmtleUNvZGUgPT00MCkgJiYgdGhpcy5ncmlk LmdldEFjdGl2ZUNlbGwoKS5yb3cpIHsKKyAgICAgICAgZGF0YSA9IHRoaXMuZ3JpZC5nZXREYXRh KCkuZ2V0SXRlbSh0aGlzLmdyaWQuZ2V0QWN0aXZlQ2VsbCgpLnJvdyk7CisgICAgICAgIHRoaXMu ZGRsQ29tcGFyZShkYXRhKTsKKyAgICAgIH0KKyAgICB9LmJpbmQoc2VsZikpOworCisgICAgc2Vs Zi5yZW5kZXJfZ3JpZF9kYXRhKGRhdGEpOworICB9CisKKworCisgIHJlbmRlcl9ncmlkX2RhdGEo ZGF0YSkgeworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICBzZWxmLmRhdGFWaWV3LmJlZ2luVXBk YXRlKCk7CisgICAgc2VsZi5kYXRhVmlldy5zZXRJdGVtcyhkYXRhKTsKKyAgICBzZWxmLmRhdGFW aWV3LnNldEZpbHRlcihzZWxmLmZpbHRlci5iaW5kKHNlbGYpKTsKKyAgICBzZWxmLmdyb3VwQnlT Y2hlbWFPYmplY3QoKTsKKyAgICBzZWxmLmRhdGFWaWV3LmVuZFVwZGF0ZSgpOworCisgICAgc2Vs Zi5yZXNpemVfZ3JpZCgpOworICB9CisKKyAgaGFuZGxlX2dlbmVyYXRlX2J1dHRvbigpeworICAg IGlmICh0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID4gMCB8fCAodGhpcy5tb2Rl bC5nZXQoJ2RpZmZfZGRsJykgIT0gJycgJiYgIV8uaXNVbmRlZmluZWQodGhpcy5tb2RlbC5nZXQo J2RpZmZfZGRsJykpKSkgeworICAgICAgdGhpcy5oZWFkZXIuJGVsLmZpbmQoJ2J1dHRvbiNnZW5l cmF0ZS1zY3JpcHQnKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpOworICAgIH0gZWxzZSB7CisgICAg ICB0aGlzLmhlYWRlci4kZWwuZmluZCgnYnV0dG9uI2dlbmVyYXRlLXNjcmlwdCcpLmF0dHIoJ2Rp c2FibGVkJywgdHJ1ZSk7CisgICAgfQorICB9CisKKyAgcmVzaXplX2dyaWQoKSB7CisgICAgbGV0 ICRkYXRhX2dyaWQgPSAkKCcjc2NoZW1hLWRpZmYtZ3JpZCcpLAorICAgICAgZ3JpZF9oZWlnaHQg PSAodGhpcy5wYW5lbF9vYmouaGVpZ2h0KCkgPiAwKSA/IHRoaXMucGFuZWxfb2JqLmhlaWdodCgp IC0gMTAwIDogdGhpcy5ncmlkX2hlaWdodCAtIDEwMDsKKworICAgICRkYXRhX2dyaWQuaGVpZ2h0 KGdyaWRfaGVpZ2h0KTsKKyAgICAkZGF0YV9ncmlkLmNzcyh7CisgICAgICAnaGVpZ2h0JzogZ3Jp ZF9oZWlnaHQgKyAncHgnLAorICAgIH0pOworICAgIGlmICh0aGlzLmdyaWQpIHRoaXMuZ3JpZC5y ZXNpemVDYW52YXMoKTsKKyAgfQorCisgIGdldENvbXBhcmVTdGF0dXMoKSB7CisgICAgdmFyIHNl bGYgPSB0aGlzLAorICAgICAgdXJsX3BhcmFtcyA9IHsndHJhbnNfaWQnOiBzZWxmLnRyYW5zX2lk fSwKKyAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdzY2hlbWFfZGlmZi5wb2xsJywgdXJsX3BhcmFt cyk7CisKKyAgICAkLmFqYXgoeworICAgICAgdXJsOiBiYXNlVXJsLAorICAgICAgbWV0aG9kOiAn R0VUJywKKyAgICAgIGRhdGFUeXBlOiAnanNvbicsCisgICAgICBjb250ZW50VHlwZTogJ2FwcGxp Y2F0aW9uL2pzb24nLAorICAgIH0pCisgICAgICAuZG9uZShmdW5jdGlvbiAocmVzKSB7CisgICAg ICAgIGxldCBtc2cgPSByZXMuZGF0YS5jb21wYXJlX21zZyArIHJlcy5kYXRhLmRpZmZfcGVyY2Vu dGFnZSArICclIGNvbXBsZXRlZCc7CisgICAgICAgICQoJyNkaWZmX2ZldGNoaW5nX2RhdGEnKS5m aW5kKCcuc2NoZW1hLWRpZmYtYnVzeS10ZXh0JykudGV4dChtc2cpOworICAgICAgfSkKKyAgICAg IC5mYWlsKGZ1bmN0aW9uICh4aHIpIHsKKyAgICAgICAgc2VsZi5yYWlzZV9lcnJvcl9vbl9mYWls KGdldHRleHQoJ1BvbGwgZXJyb3InKSwgeGhyKTsKKyAgICAgICAgc2VsZi5zdG9wRGlmZlBvbGxl cignZmFpbCcpOworICAgICAgfSk7CisgIH0KKworICBzdGFydERpZmZQb2xsZXIoKSB7CisgICAg JCgnI2RkbF9jb21wX2ZldGNoaW5nX2RhdGEnKS5hZGRDbGFzcygnZC1ub25lJyk7CisgICAgJCgn I2RpZmZfZmV0Y2hpbmdfZGF0YScpLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTsKKyAgICAvKiBFeGVj dXRlIG9uY2UgZm9yIHRoZSBmaXJzdCB0aW1lIGFzIHNldEludGVydmFsIHdpbGwgbm90IGRvICov CisgICAgdGhpcy5nZXRDb21wYXJlU3RhdHVzKCk7CisgICAgdGhpcy5kaWZmX3BvbGxlcl9pbnRf aWQgPSBzZXRJbnRlcnZhbCh0aGlzLmdldENvbXBhcmVTdGF0dXMuYmluZCh0aGlzKSwgMTAwMCk7 CisgIH0KKworICBzdG9wRGlmZlBvbGxlcihzdGF0dXMpIHsKKyAgICBjbGVhckludGVydmFsKHRo aXMuZGlmZl9wb2xsZXJfaW50X2lkKTsKKyAgICAvLyBUaGUgbGFzdCBwb2xsaW5nIGZvciBjb21w YXJpc29uCisgICAgaWYgKHN0YXR1cyAhPT0gJ2ZhaWwnKSB0aGlzLmdldENvbXBhcmVTdGF0dXMo KTsKKworICAgICQoJyNkaWZmX2ZldGNoaW5nX2RhdGEnKS5maW5kKCcuc2NoZW1hLWRpZmYtYnVz eS10ZXh0JykudGV4dCgnJyk7CisgICAgJCgnI2RpZmZfZmV0Y2hpbmdfZGF0YScpLmFkZENsYXNz KCdkLW5vbmUnKTsKKworICB9CisKKyAgZGRsQ29tcGFyZShkYXRhKSB7CisgICAgdmFyIHNlbGYg PSB0aGlzLAorICAgICAgbm9kZV90eXBlID0gZGF0YS50eXBlLAorICAgICAgc291cmNlX29pZCA9 IGRhdGEub2lkLAorICAgICAgdGFyZ2V0X29pZCA9IGRhdGEub2lkOworCisgICAgc2VsZi5tb2Rl bC5zZXQoeworICAgICAgJ3NvdXJjZV9kZGwnOiB1bmRlZmluZWQsCisgICAgICAndGFyZ2V0X2Rk bCc6IHVuZGVmaW5lZCwKKyAgICAgICdkaWZmX2RkbCc6IHVuZGVmaW5lZCwKKyAgICB9KTsKKwor ICAgIHZhciB1cmxfcGFyYW1zID0gc2VsZi5zZWxlY3Rpb247CisKKyAgICBpZihkYXRhLnN0YXR1 cyAmJiAoZGF0YS5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZGlmZmVyZW50JyB8fCBkYXRhLnN0 YXR1cy50b0xvd2VyQ2FzZSgpID09ICdpZGVudGljYWwnKSkgeworICAgICAgdGFyZ2V0X29pZCA9 IGRhdGEudGFyZ2V0X29pZDsKKyAgICB9CisKKyAgICB1cmxfcGFyYW1zWyd0cmFuc19pZCddID0g c2VsZi50cmFuc19pZDsKKyAgICB1cmxfcGFyYW1zWydzb3VyY2Vfb2lkJ10gPSBzb3VyY2Vfb2lk OworICAgIHVybF9wYXJhbXNbJ3RhcmdldF9vaWQnXSA9IHRhcmdldF9vaWQ7CisgICAgdXJsX3Bh cmFtc1snY29tcF9zdGF0dXMnXSA9IGRhdGEuc3RhdHVzOworICAgIHVybF9wYXJhbXNbJ25vZGVf dHlwZSddID0gbm9kZV90eXBlOworCisgICAgXy5lYWNoKHVybF9wYXJhbXMsIGZ1bmN0aW9uKGtl eSwgdmFsKSB7CisgICAgICB1cmxfcGFyYW1zW2tleV0gPSBwYXJzZUludCh2YWwsIDEwKTsKKyAg ICB9KTsKKworICAgICQoJyNkZGxfY29tcF9mZXRjaGluZ19kYXRhJykucmVtb3ZlQ2xhc3MoJ2Qt bm9uZScpOworCisgICAgdmFyIGJhc2VVcmwgPSB1cmxfZm9yKCdzY2hlbWFfZGlmZi5kZGxfY29t cGFyZScsIHVybF9wYXJhbXMpOworICAgIHNlbGYubW9kZWwudXJsID0gYmFzZVVybDsKKworICAg IHNlbGYubW9kZWwuZmV0Y2goeworICAgICAgc3VjY2VzczogZnVuY3Rpb24oKSB7CisgICAgICAg IHNlbGYuZm9vdGVyLnJlbmRlcigpOworICAgICAgICAkKCcjZGRsX2NvbXBfZmV0Y2hpbmdfZGF0 YScpLmFkZENsYXNzKCdkLW5vbmUnKTsKKyAgICAgIH0sCisgICAgICBlcnJvcjogZnVuY3Rpb24o KSB7CisgICAgICAgIHNlbGYuZm9vdGVyLnJlbmRlcigpOworICAgICAgICAkKCcjZGRsX2NvbXBf ZmV0Y2hpbmdfZGF0YScpLmFkZENsYXNzKCdkLW5vbmUnKTsKKyAgICAgIH0sCisgICAgfSk7Cisg IH0KKworICByZW5kZXIoKSB7CisgICAgbGV0IHNlbGYgPSB0aGlzOworICAgIGxldCBwYW5lbCA9 IHNlbGYuZG9ja2VyLmZpbmRQYW5lbHMoJ3NjaGVtYV9kaWZmX2hlYWRlcl9wYW5lbCcpWzBdOwor CisgICAgdmFyIGhlYWRlciA9IHBhbmVsLiRjb250YWluZXIuZmluZCgnI3NjaGVtYS1kaWZmLWhl YWRlcicpOworCisgICAgc2VsZi5oZWFkZXIgID0gbmV3IFNjaGVtYURpZmZIZWFkZXJWaWV3KHsK KyAgICAgIGVsOiBoZWFkZXIsCisgICAgICBtb2RlbDogdGhpcy5tb2RlbCwKKyAgICAgIGZpZWxk czogW3sKKyAgICAgICAgbmFtZTogJ3NvdXJjZV9zaWQnLCBsYWJlbDogZmFsc2UsCisgICAgICAg IGNvbnRyb2w6IFNjaGVtYURpZmZTZWxlY3QyQ29udHJvbCwKKyAgICAgICAgdXJsOiB1cmxfZm9y KCdzY2hlbWFfZGlmZi5zZXJ2ZXJzJyksCisgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICBh bGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdTZWxlY3Qg c2VydmVyLi4uJyksCisgICAgICAgIH0sCisgICAgICAgIGNvbm5lY3Q6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgIHNlbGYuY29ubmVjdF9zZXJ2ZXIoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0p OworICAgICAgICB9LAorICAgICAgICBncm91cDogJ3NvdXJjZScsCisgICAgICAgIGRpc2FibGVk OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0sCisgICAg ICB9LCB7CisgICAgICAgIG5hbWU6ICdzb3VyY2VfZGlkJywKKyAgICAgICAgZ3JvdXA6ICdzb3Vy Y2UnLAorICAgICAgICBkZXBzOiBbJ3NvdXJjZV9zaWQnXSwKKyAgICAgICAgY29udHJvbDogU2No ZW1hRGlmZlNlbGVjdDJDb250cm9sLAorICAgICAgICB1cmw6IGZ1bmN0aW9uKCkgeworICAgICAg ICAgIGlmICh0aGlzLmdldCgnc291cmNlX3NpZCcpKQorICAgICAgICAgICAgcmV0dXJuIHVybF9m b3IoJ3NjaGVtYV9kaWZmLmRhdGFiYXNlcycsIHsnc2lkJzogdGhpcy5nZXQoJ3NvdXJjZV9zaWQn KX0pOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgc2VsZWN0 MjogeworICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgcGxhY2Vob2xkZXI6 IGdldHRleHQoJ1NlbGVjdCBkYXRhYmFzZS4uLicpLAorICAgICAgICB9LAorICAgICAgICBkaXNh YmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChtLmdldCgn c291cmNlX3NpZCcpKSAmJiAhXy5pc051bGwobS5nZXQoJ3NvdXJjZV9zaWQnKSkpCisgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisg ICAgICAgIGNvbm5lY3Q6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHNlbGYuY29ubmVjdF9kYXRh YmFzZSh0aGlzLm1vZGVsLmdldCgnc291cmNlX3NpZCcpLCBhcmd1bWVudHNbMF0sIGFyZ3VtZW50 c1sxXSk7CisgICAgICAgIH0sCisgICAgICB9LCB7CisgICAgICAgIG5hbWU6ICdzb3VyY2Vfc2Np ZCcsCisgICAgICAgIGNvbnRyb2w6IFNjaGVtYURpZmZTZWxlY3QyQ29udHJvbCwKKyAgICAgICAg Z3JvdXA6ICdzb3VyY2UnLAorICAgICAgICBkZXBzOiBbJ3NvdXJjZV9zaWQnLCAnc291cmNlX2Rp ZCddLAorICAgICAgICB1cmw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmICh0aGlzLmdldCgn c291cmNlX3NpZCcpICYmIHRoaXMuZ2V0KCdzb3VyY2VfZGlkJykpCisgICAgICAgICAgICByZXR1 cm4gdXJsX2Zvcignc2NoZW1hX2RpZmYuc2NoZW1hcycsIHsnc2lkJzogdGhpcy5nZXQoJ3NvdXJj ZV9zaWQnKSwgJ2RpZCc6IHRoaXMuZ2V0KCdzb3VyY2VfZGlkJyl9KTsKKyAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICBhbGxv d0NsZWFyOiB0cnVlLAorICAgICAgICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdTZWxlY3Qgc2No ZW1hLi4uJyksCisgICAgICAgIH0sCisgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdzb3VyY2VfZGlkJykpICYmICFfLmlz TnVsbChtLmdldCgnc291cmNlX2RpZCcpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAgICAgbmFt ZTogJ3RhcmdldF9zaWQnLCBsYWJlbDogZmFsc2UsCisgICAgICAgIGNvbnRyb2w6IFNjaGVtYURp ZmZTZWxlY3QyQ29udHJvbCwKKyAgICAgICAgZ3JvdXA6ICd0YXJnZXQnLAorICAgICAgICB1cmw6 IHVybF9mb3IoJ3NjaGVtYV9kaWZmLnNlcnZlcnMnKSwKKyAgICAgICAgc2VsZWN0MjogeworICAg ICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQo J1NlbGVjdCBzZXJ2ZXIuLi4nKSwKKyAgICAgICAgfSwKKyAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgY29u bmVjdDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgc2VsZi5jb25uZWN0X3NlcnZlcihhcmd1bWVu dHNbMF0sIGFyZ3VtZW50c1sxXSk7CisgICAgICAgIH0sCisgICAgICB9LCB7CisgICAgICAgIG5h bWU6ICd0YXJnZXRfZGlkJywKKyAgICAgICAgY29udHJvbDogU2NoZW1hRGlmZlNlbGVjdDJDb250 cm9sLAorICAgICAgICBncm91cDogJ3RhcmdldCcsCisgICAgICAgIGRlcHM6IFsndGFyZ2V0X3Np ZCddLAorICAgICAgICB1cmw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmICh0aGlzLmdldCgn dGFyZ2V0X3NpZCcpKQorICAgICAgICAgICAgcmV0dXJuIHVybF9mb3IoJ3NjaGVtYV9kaWZmLmRh dGFiYXNlcycsIHsnc2lkJzogdGhpcy5nZXQoJ3RhcmdldF9zaWQnKX0pOworICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgc2VsZWN0MjogeworICAgICAgICAgIGFs bG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ1NlbGVjdCBk YXRhYmFzZS4uLicpLAorICAgICAgICB9LAorICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChtLmdldCgndGFyZ2V0X3NpZCcpKSAmJiAh Xy5pc051bGwobS5nZXQoJ3RhcmdldF9zaWQnKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGNvbm5lY3Q6IGZ1 bmN0aW9uKCkgeworICAgICAgICAgIHNlbGYuY29ubmVjdF9kYXRhYmFzZSh0aGlzLm1vZGVsLmdl dCgndGFyZ2V0X3NpZCcpLCBhcmd1bWVudHNbMF0sIGFyZ3VtZW50c1sxXSk7CisgICAgICAgIH0s CisgICAgICB9LCB7CisgICAgICAgIG5hbWU6ICd0YXJnZXRfc2NpZCcsCisgICAgICAgIGNvbnRy b2w6IFNjaGVtYURpZmZTZWxlY3QyQ29udHJvbCwKKyAgICAgICAgZ3JvdXA6ICd0YXJnZXQnLAor ICAgICAgICBkZXBzOiBbJ3RhcmdldF9zaWQnLCAndGFyZ2V0X2RpZCddLAorICAgICAgICB1cmw6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmICh0aGlzLmdldCgndGFyZ2V0X3NpZCcpICYmIHRo aXMuZ2V0KCd0YXJnZXRfZGlkJykpCisgICAgICAgICAgICByZXR1cm4gdXJsX2Zvcignc2NoZW1h X2RpZmYuc2NoZW1hcycsIHsnc2lkJzogdGhpcy5nZXQoJ3RhcmdldF9zaWQnKSwgJ2RpZCc6IHRo aXMuZ2V0KCd0YXJnZXRfZGlkJyl9KTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg IH0sCisgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLAorICAg ICAgICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdTZWxlY3Qgc2NoZW1hLi4uJyksCisgICAgICAg IH0sCisgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgaWYgKCFfLmlz VW5kZWZpbmVkKG0uZ2V0KCd0YXJnZXRfZGlkJykpICYmICFfLmlzTnVsbChtLmdldCgndGFyZ2V0 X2RpZCcpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgfSwKKyAgICAgIH1dLAorICAgIH0pOworCisgICAgc2VsZi5mb290ZXIgID0g bmV3IFNjaGVtYURpZmZGb290ZXJWaWV3KHsKKyAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLAorICAg ICAgZmllbGRzOiBbeworICAgICAgICBuYW1lOiAnc291cmNlX2RkbCcsIGxhYmVsOiBmYWxzZSwK KyAgICAgICAgY29udHJvbDogU2NoZW1hRGlmZlNxbENvbnRyb2wsCisgICAgICAgIGdyb3VwOiAn ZGRsLXNvdXJjZScsCisgICAgICB9LCB7CisgICAgICAgIG5hbWU6ICd0YXJnZXRfZGRsJywgbGFi ZWw6IGZhbHNlLAorICAgICAgICBjb250cm9sOiBTY2hlbWFEaWZmU3FsQ29udHJvbCwKKyAgICAg ICAgZ3JvdXA6ICdkZGwtdGFyZ2V0JywKKyAgICAgIH0sIHsKKyAgICAgICAgbmFtZTogJ2RpZmZf ZGRsJywgbGFiZWw6IGZhbHNlLAorICAgICAgICBjb250cm9sOiBTY2hlbWFEaWZmU3FsQ29udHJv bCwKKyAgICAgICAgZ3JvdXA6ICdkZGwtZGlmZicsIGNvcHlSZXF1aXJlZDogdHJ1ZSwKKyAgICAg IH1dLAorICAgIH0pOworCisgICAgc2VsZi5oZWFkZXIucmVuZGVyKCk7CisKKyAgICBzZWxmLmhl YWRlci4kZWwuZmluZCgnYnV0dG9uLmJ0bi1wcmltYXJ5Jykub24oJ2NsaWNrJywgc2VsZi5jb21w YXJlX3NjaGVtYXMuYmluZChzZWxmKSk7CisgICAgc2VsZi5oZWFkZXIuJGVsLmZpbmQoJ2J1dHRv biNnZW5lcmF0ZS1zY3JpcHQnKS5vbignY2xpY2snLCBzZWxmLmdlbmVyYXRlX3NjcmlwdC5iaW5k KHNlbGYpKTsKKyAgICBzZWxmLmhlYWRlci4kZWwuZmluZCgndWwuZmlsdGVyIGEuZHJvcGRvd24t aXRlbScpLm9uKCdjbGljaycsIHNlbGYucmVmcmVzaF9maWx0ZXJzLmJpbmQoc2VsZikpOworCisg ICAgbGV0IGZvb3Rlcl9wYW5lbCA9IHNlbGYuZG9ja2VyLmZpbmRQYW5lbHMoJ3NjaGVtYV9kaWZm X2Zvb3Rlcl9wYW5lbCcpWzBdLAorICAgICAgaGVhZGVyX3BhbmVsID0gc2VsZi5kb2NrZXIuZmlu ZFBhbmVscygnc2NoZW1hX2RpZmZfaGVhZGVyX3BhbmVsJylbMF07CisKKyAgICBmb290ZXJfcGFu ZWwuJGNvbnRhaW5lci5maW5kKCcjc2NoZW1hLWRpZmYtZGRsLWNvbXAnKS5hcHBlbmQoc2VsZi5m b290ZXIucmVuZGVyKCkuJGVsKTsKKyAgICBoZWFkZXJfcGFuZWwuJGNvbnRhaW5lci5maW5kKCcj c2NoZW1hLWRpZmYtZ3JpZCcpLmFwcGVuZChgPGRpdiBjbGFzcz0nb2JqX3Byb3BlcnRpZXMgY29u dGFpbmVyLWZsdWlkJz4KKyAgICA8ZGl2IGNsYXNzPSdhbGVydCBhbGVydC1pbmZvIHBnLXBhbmVs LW1lc3NhZ2UnPmAgKyBnZXR0ZXh0KCdTZWxlY3QgdGhlIHNlcnZlciwgZGF0YWJhc2UgYW5kIHNj aGVtYSBmb3IgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGFuZCBjbGljayA8Yj5Db21wYXJlPC9iPiB0 byBjb21wYXJlIHRoZW0uJykgKyAnPC9kaXY+PC9kaXY+Jyk7CisKKyAgICBzZWxmLmdyaWRfd2lk dGggPSAkKCcjc2NoZW1hLWRpZmYtZ3JpZCcpLndpZHRoKCk7CisgICAgc2VsZi5ncmlkX2hlaWdo dCA9IHRoaXMucGFuZWxfb2JqLmhlaWdodCgpOworICB9CisKKyAgcmVmcmVzaF9maWx0ZXJzKGV2 ZW50KSB7CisgICAgbGV0IHNlbGYgPSB0aGlzOworICAgIF8uZWFjaChzZWxmLmZpbHRlcnMsIGZ1 bmN0aW9uKGZpbHRlcikgeworICAgICAgbGV0IGluZGV4ID0gc2VsZi5zZWxfZmlsdGVycy5pbmRl eE9mKGZpbHRlcik7CisgICAgICBsZXQgZmlsdGVyX2NsYXNzID0gJy4nICsgZmlsdGVyLnJlcGxh Y2UoJyAnLCAnLScpLnRvTG93ZXJDYXNlKCk7CisgICAgICBpZiAoJChldmVudC5jdXJyZW50VGFy Z2V0KS5maW5kKGZpbHRlcl9jbGFzcykubGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKCQoZmls dGVyX2NsYXNzKS5oYXNDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKSA9PT0gdHJ1ZSkgeworICAg ICAgICAgICQoZmlsdGVyX2NsYXNzKS5yZW1vdmVDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsK KyAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSBzZWxmLnNlbF9maWx0ZXJzLnB1c2goZmlsdGVy KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAkKGZpbHRlcl9jbGFzcykuYWRkQ2xhc3Mo J3Zpc2liaWxpdHktaGlkZGVuJyk7CisgICAgICAgICAgaWYoaW5kZXggIT09IC0xICkgZGVsZXRl IHNlbGYuc2VsX2ZpbHRlcnNbaW5kZXhdOworICAgICAgICB9CisgICAgICB9CisgICAgfSk7Cisg ICAgLy8gUmVmcmVzaCB0aGUgZ3JpZAorICAgIHNlbGYuZGF0YVZpZXcucmVmcmVzaCgpOworICB9 CisKKyAgY29ubmVjdF9kYXRhYmFzZShzZXJ2ZXJfaWQsIGRiX2lkLCBjYWxsYmFjaykgeworICAg IHZhciB1cmwgPSB1cmxfZm9yKCdzY2hlbWFfZGlmZi5jb25uZWN0X2RhdGFiYXNlJywgeydzaWQn OiBzZXJ2ZXJfaWQsICdkaWQnOiBkYl9pZH0pOworICAgICQucG9zdCh1cmwpCisgICAgICAuZG9u ZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgaWYgKHJlcy5zdWNjZXNzICYmIHJlcy5kYXRhKSB7 CisgICAgICAgICAgY2FsbGJhY2socmVzLmRhdGEpOworICAgICAgICB9CisgICAgICB9KQorICAg ICAgLmZhaWwoZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEZhaWwKKyAgICAgIH0pOworCisgIH0K KworICBjb25uZWN0X3NlcnZlcihzZXJ2ZXJfaWQsIGNhbGxiYWNrKSB7CisgICAgdmFyICBvbkZh aWx1cmUgPSBmdW5jdGlvbigKKyAgICAgICAgeGhyLCBzdGF0dXMsIGVycm9yLCBzZXJ2ZXJfaWQs IGNhbGxiYWNrCisgICAgICApIHsKKyAgICAgICAgQWxlcnRpZnkucGdOb3RpZmllcignZXJyb3In LCB4aHIsIGVycm9yLCBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgQWxlcnRpZnkuZGxnU2VydmVyUGFzcygKKyAgICAgICAgICAg ICAgZ2V0dGV4dCgnQ29ubmVjdCB0byBTZXJ2ZXInKSwKKyAgICAgICAgICAgICAgbXNnLAorICAg ICAgICAgICAgICBzZXJ2ZXJfaWQsCisgICAgICAgICAgICAgIGNhbGxiYWNrCisgICAgICAgICAg ICApLnJlc2l6ZVRvKCk7CisgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSk7CisgICAgICB9 LAorICAgICAgb25TdWNjZXNzID0gZnVuY3Rpb24ocmVzLCBjYWxsYmFjaykgeworICAgICAgICBp ZiAocmVzICYmIHJlcy5kYXRhKSB7CisgICAgICAgICAgLy8gV2UncmUgbm90IHJlY29ubmVjdGlu ZworICAgICAgICAgIGNhbGxiYWNrKHJlcy5kYXRhKTsKKyAgICAgICAgfQorICAgICAgfTsKKwor CisgICAgLy8gQXNrIFBhc3N3b3JkIGFuZCBzZW5kIGl0IGJhY2sgdG8gdGhlIGNvbm5lY3Qgc2Vy dmVyCisgICAgaWYgKCFBbGVydGlmeS5kbGdTZXJ2ZXJQYXNzKSB7CisgICAgICBBbGVydGlmeS5k aWFsb2coJ2RsZ1NlcnZlclBhc3MnLCBmdW5jdGlvbiBmYWN0b3J5KCkgeworICAgICAgICByZXR1 cm4geworICAgICAgICAgIG1haW46IGZ1bmN0aW9uKAorICAgICAgICAgICAgdGl0bGUsIG1lc3Nh Z2UsIHNlcnZlcl9pZCwgc3VjY2Vzc19jYWxsYmFjaywgX29uU3VjY2VzcywgX29uRmFpbHVyZSwg X29uQ2FuY2VsCisgICAgICAgICAgKSB7CisgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0 aXRsZSk7CisgICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICAgICAg dGhpcy5zZXJ2ZXJfaWQgPSBzZXJ2ZXJfaWQ7CisgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NfY2Fs bGJhY2sgPSBzdWNjZXNzX2NhbGxiYWNrOworICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3MgPSBf b25TdWNjZXNzIHx8IG9uU3VjY2VzczsKKyAgICAgICAgICAgIHRoaXMub25GYWlsdXJlID0gX29u RmFpbHVyZSB8fCBvbkZhaWx1cmU7CisgICAgICAgICAgICB0aGlzLm9uQ2FuY2VsID0gX29uQ2Fu Y2VsIHx8IG9uQ2FuY2VsOworICAgICAgICAgIH0sCisgICAgICAgICAgc2V0dXA6ZnVuY3Rpb24o KSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICBidXR0b25zOlt7CisgICAg ICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksIGNsYXNzTmFtZTogJ2J0biBidG4t c2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICAgICAg ICAga2V5OiAyNywKKyAgICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgdGV4dDogZ2V0 dGV4dCgnT0snKSwga2V5OiAxMywgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWNo ZWNrIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAg ICBmb2N1czoge2VsZW1lbnQ6ICcjcGFzc3dvcmQnLCBzZWxlY3Q6IHRydWV9LAorICAgICAgICAg ICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAgICAgbW9kYWw6IDAsIHJlc2l6YWJsZTogZmFs c2UsIG1heGltaXphYmxlOiBmYWxzZSwgcGlubmFibGU6IGZhbHNlLAorICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGJ1aWxkOmZ1bmN0aW9u KCkge30sCisgICAgICAgICAgcHJlcGFyZTpmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRoaXMu c2V0Q29udGVudCh0aGlzLm1lc3NhZ2UpOworICAgICAgICAgIH0sCisgICAgICAgICAgY2FsbGJh Y2s6IGZ1bmN0aW9uKGNsb3NlRXZlbnQpIHsKKyAgICAgICAgICAgIHZhciBfb25GYWlsdXJlID0g dGhpcy5vbkZhaWx1cmUsCisgICAgICAgICAgICAgIF9vblN1Y2Nlc3MgPSB0aGlzLm9uU3VjY2Vz cywKKyAgICAgICAgICAgICAgX29uQ2FuY2VsID0gdGhpcy5vbkNhbmNlbCwKKyAgICAgICAgICAg ICAgX3N1Y2Nlc3NfY2FsbGJhY2sgPSB0aGlzLnN1Y2Nlc3NfY2FsbGJhY2s7CisKKyAgICAgICAg ICAgIGlmIChjbG9zZUV2ZW50LmJ1dHRvbi50ZXh0ID09IGdldHRleHQoJ09LJykpIHsKKworICAg ICAgICAgICAgICB2YXIgX3VybCA9IHVybF9mb3IoJ3NjaGVtYV9kaWZmLmNvbm5lY3Rfc2VydmVy JywgeydzaWQnOiB0aGlzLnNlcnZlcl9pZH0pOworCisgICAgICAgICAgICAgICQuYWpheCh7Cisg ICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDMw MDAwLAorICAgICAgICAgICAgICAgIHVybDogX3VybCwKKyAgICAgICAgICAgICAgICBkYXRhOiAk KCcjZnJtUGFzc3dvcmQnKS5zZXJpYWxpemUoKSwKKyAgICAgICAgICAgICAgfSkKKyAgICAgICAg ICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChyZXMu c3VjY2VzcyA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfb25TdWNjZXNzKHJl cywgX3N1Y2Nlc3NfY2FsbGJhY2spOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIH0pCisgICAgICAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9y KSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gX29uRmFpbHVyZSgKKyAgICAgICAgICAgICAg ICAgICAgeGhyLCBzdGF0dXMsIGVycm9yLCB0aGlzLnNlcnZlcl9pZCwgX3N1Y2Nlc3NfY2FsbGJh Y2sKKyAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICBfb25DYW5jZWwgJiYgdHlwZW9mKF9vbkNhbmNlbCkg PT0gJ2Z1bmN0aW9uJyAmJgorICAgICAgICAgICAgICAgIF9vbkNhbmNlbCgpOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgICB9KTsKKyAgICB9CisKKyAgICB2 YXIgb25DYW5jZWwgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Owor CisgICAgdmFyIHVybCA9IHVybF9mb3IoJ3NjaGVtYV9kaWZmLmNvbm5lY3Rfc2VydmVyJywgeydz aWQnOiBzZXJ2ZXJfaWR9KTsKKyAgICAkLnBvc3QodXJsKQorICAgICAgLmRvbmUoZnVuY3Rpb24o cmVzKSB7CisgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7CisgICAgICAgICAgcmV0dXJu IG9uU3VjY2VzcyhyZXMsIGNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgICAgfSkKKyAgICAgIC5m YWlsKGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAgICAgICByZXR1cm4gb25GYWls dXJlKAorICAgICAgICAgIHhociwgc3RhdHVzLCBlcnJvciwgc2VydmVyX2lkLCBjYWxsYmFjawor ICAgICAgICApOworICAgICAgfSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NjaGVtYV9kaWZmL3N0YXRpYy9zY3NzL19zY2hlbWFfZGlmZi5zY3NzIGIvd2ViL3BnYWRt aW4vdG9vbHMvc2NoZW1hX2RpZmYvc3RhdGljL3Njc3MvX3NjaGVtYV9kaWZmLnNjc3MKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mNDFmOWY4YjAKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvc2Nzcy9fc2NoZW1hX2Rp ZmYuc2NzcwpAQCAtMCwwICsxLDgxIEBACisjc2NoZW1hLWRpZmYtY29udGFpbmVyIHsKKyAgcG9z aXRpb246IGFic29sdXRlOworICBsZWZ0OiAwOworICByaWdodDogMDsKKyAgdG9wOiAwOworICBi b3R0b206IDA7CisgIHBhZGRpbmctdG9wOiAxMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29s b3ItZ3JheS1saWdodDsKK30KKworI3NjaGVtYS1kaWZmLWdyaWQgLnNsaWNrLWhlYWRlciAuc2xp Y2staGVhZGVyLWNvbHVtbnMgeworICBiYWNrZ3JvdW5kOiAkY29sb3ItYmc7CisgIGhlaWdodDog NDBweDsKKyAgYm9yZGVyLWJvdHRvbTogJHBhbmVsLWJvcmRlcjsKK30KKworI3NjaGVtYS1kaWZm LWdyaWQgLnNsaWNrLWhlYWRlciAuc2xpY2staGVhZGVyLWNvbHVtbi51aS1zdGF0ZS1kZWZhdWx0 IHsKKyAgcGFkZGluZzogNHB4IDAgM3B4IDZweDsKKyAgYm9yZGVyLWJvdHRvbTogJHBhbmVsLWJv cmRlcjsKKyAgYm9yZGVyLXJpZ2h0OiAkcGFuZWwtYm9yZGVyOworfQorCisuc2xpY2stcm93Omhv dmVyIC5zbGljay1jZWxseworICBib3JkZXItdG9wOiAkdGFibGUtaG92ZXItYm9yZGVyOworICBi b3JkZXItYm90dG9tOiAkdGFibGUtaG92ZXItYm9yZGVyOworICBiYWNrZ3JvdW5kLWNvbG9yOiAk dGFibGUtaG92ZXItYmctY29sb3I7Cit9CisKKyNzY2hlbWEtZGlmZi1ncmlkIC5zbGljay1oZWFk ZXIgLnNsaWNrLWhlYWRlci1jb2x1bW4uc2VsZWN0ZWQgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAk Y29sb3ItcHJpbWFyeTsKKyAgY29sb3I6ICRjb2xvci1wcmltYXJ5LWZnOworfQorLnNsaWNrLXJv dyAuc2xpY2stY2VsbCB7CisgIGJvcmRlci1ib3R0b206ICRwYW5lbC1ib3JkZXI7CisgIGJvcmRl ci1yaWdodDogJHBhbmVsLWJvcmRlcjsKKyAgei1pbmRleDogMDsKK30KKworI3NjaGVtYS1kaWZm LWdyaWQgeworICBiYWNrZ3JvdW5kOiBub25lOworICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3It Z3JheS1saWdodDsKK30KKworI3NjaGVtYS1kaWZmLWdyaWQgLnNsaWNrLXJvdyAuc2xpY2stY2Vs bC5sMC5yMC5zZWxlY3RlZCB7CisgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5Owor ICBjb2xvcjogJGNvbG9yLXByaW1hcnktZmc7Cit9CisKKyNzY2hlbWEtZGlmZi1ncmlkIC5zbGlj ay1yb3cgPiAuc2xpY2stY2VsbDpub3QoLmwwKTpub3QoLnIwKS5zZWxlY3RlZCB7CisgIGJhY2tn cm91bmQtY29sb3I6ICR0YWJsZS1ob3Zlci1iZy1jb2xvcjsKKyAgYm9yZGVyLXRvcDogJHRhYmxl LWhvdmVyLWJvcmRlcjsKKyAgYm9yZGVyLWJvdHRvbTogJHRhYmxlLWhvdmVyLWJvcmRlcjsKK30K KworI3NjaGVtYS1kaWZmLWdyaWQgZGl2LnNsaWNrLWhlYWRlci51aS1zdGF0ZS1kZWZhdWx0IHsK KyAgYmFja2dyb3VuZDogJGNvbG9yLWJnOworICBib3JkZXItYm90dG9tOiBub25lOworICBib3Jk ZXItcmlnaHQ6IG5vbmU7CisgIGJvcmRlci10b3A6IG5vbmU7Cit9CisKKyNzY2hlbWEtZGlmZi1n cmlkIC5kaWZmZXJlbnQgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2NoZW1hZGlmZi1kaWZmLXJv dy1jb2xvciAhaW1wb3J0YW50OworfQorI3NjaGVtYS1kaWZmLWdyaWQgLnNvdXJjZSB7CisgIGJh Y2tncm91bmQtY29sb3I6ICRzY2hlbWFkaWZmLXNvdXJjZS1yb3ctY29sb3IgIWltcG9ydGFudDsK K30KKyNzY2hlbWEtZGlmZi1ncmlkIC50YXJnZXQgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2No ZW1hZGlmZi10YXJnZXQtcm93LWNvbG9yICFpbXBvcnRhbnQ7Cit9CisKKyNzY2hlbWEtZGlmZi1n cmlkIC5zbGljay1yb3cuYWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmct c2VsZWN0ZWQgIWltcG9ydGFudDsKK30KKworI3NjaGVtYS1kaWZmLWRkbC1jb21wIHsKKyAgaGVp Z2h0OiAxMDAlOworICBib3R0b206IDEwcHg7CisgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1i ZyAhaW1wb3J0YW50OworICBvdmVyZmxvdy15OiBoaWRkZW47Cit9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZW1wbGF0ZXMvc2NoZW1hX2RpZmYvaW5kZXguaHRt bCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3RlbXBsYXRlcy9zY2hlbWFfZGlmZi9p bmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNjQxYmQ4NmM3 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvdGVtcGxh dGVzL3NjaGVtYV9kaWZmL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAoreyUgZXh0ZW5kcyAi YmFzZS5odG1sIiAlfQoreyUgYmxvY2sgaW5pdF9zY3JpcHQgJX0KK3RyeSB7CisgIHJlcXVpcmUo CisgICAgWydzb3VyY2VzL2dlbmVyYXRlZC9zY2hlbWFfZGlmZicsICdzb3VyY2VzL2dlbmVyYXRl ZC9zbGlja2dyaWQnLCAnc291cmNlcy9nZW5lcmF0ZWQvY29kZW1pcnJvcicsICdzb3VyY2VzL2dl bmVyYXRlZC9icm93c2VyX25vZGVzJ10sCisgICAgZnVuY3Rpb24ocGdTY2hlbWFEaWZmSG9vaykg eworICAgICAgdmFyIHBnU2NoZW1hRGlmZkhvb2sgPSBwZ1NjaGVtYURpZmZIb29rIHx8IHBnQWRt aW4uVG9vbHMuU2NoZW1hRGlmZkhvb2s7CisgICAgICBwZ1NjaGVtYURpZmZIb29rLmxvYWQoe3t0 cmFuc19pZH19KTsKKyAgICB9LAorICAgIGZ1bmN0aW9uKCkgeworICAgICAgY29uc29sZS5sb2co YXJndW1lbnRzKTsKKyAgICB9KTsKK30gY2F0Y2ggKGVycikgeworICBjb25zb2xlLmxvZyhlcnIp OworfQoreyUgZW5kYmxvY2sgJX0KK3slIGJsb2NrIGNzc19saW5rICV9Cis8bGluayB0eXBlPSJ0 ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7eyB1cmxfZm9yKCdicm93c2VyLmJyb3dz ZXJfY3NzJyl9fSIvPgoreyUgZW5kYmxvY2sgJX0KK3slIGJsb2NrIGJvZHkgJX0KKzxkaXYgaWQ9 InNjaGVtYS1kaWZmLWNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZGlmZl9mZXRjaGluZ19kYXRh IiBjbGFzcz0icGctc3AtY29udGFpbmVyIHNjaGVtYS1kaWZmLWJ1c3ktZmV0Y2hpbmcgZC1ub25l Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0icGctc3AtY29udGVudCI+CisgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJyb3ciPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiBwZy1zcC1p Y29uIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i cm93Ij48ZGl2IGNsYXNzPSJjb2wtMTIgcGctc3AtdGV4dCBzY2hlbWEtZGlmZi1idXN5LXRleHQi PjwvZGl2PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJk ZGxfY29tcF9mZXRjaGluZ19kYXRhIiBjbGFzcz0icGctc3AtY29udGFpbmVyIHNjaGVtYS1kaWZm LWJ1c3ktZmV0Y2hpbmcgZC1ub25lIj4KKyAgICAgICAgPGRpdiBjbGFzcz0icGctc3AtY29udGVu dCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImNvbC0xMiBwZy1zcC1pY29uIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAg ICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wtMTIgcGctc3AtdGV4dCI+ e3sgXygnQ29tcGFyaW5nIG9iamVjdHMuLi4nKSB9fTwvZGl2PjwvZGl2PgorICAgICAgICA8L2Rp dj4KKyAgICA8L2Rpdj4KKzwvZGl2PgoreyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4v dG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5lNjlkZTI5YmIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEwX3BsdXMvc291cmNlLnNxbCBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEwX3BsdXMvc291cmNlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjk5NzU3Y2ViMgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEwX3BsdXMvc291cmNlLnNxbApA QCAtMCwwICsxLDQ0MCBAQAorLS0KKy0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVtcAorLS0KKwor LS0gRHVtcGVkIGZyb20gZGF0YWJhc2UgdmVyc2lvbiAxMC43CistLSBEdW1wZWQgYnkgcGdfZHVt cCB2ZXJzaW9uIDEyYmV0YTIKKworLS0gU3RhcnRlZCBvbiAyMDE5LTExLTAxIDEyOjU0OjE1IElT VAorCitTRVQgc3RhdGVtZW50X3RpbWVvdXQgPSAwOworU0VUIGxvY2tfdGltZW91dCA9IDA7CitT RVQgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQgPSAwOworU0VUIGNsaWVudF9l bmNvZGluZyA9ICdVVEY4JzsKK1NFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3MgPSBvbjsK K1NFTEVDVCBwZ19jYXRhbG9nLnNldF9jb25maWcoJ3NlYXJjaF9wYXRoJywgJycsIGZhbHNlKTsK K1NFVCBjaGVja19mdW5jdGlvbl9ib2RpZXMgPSBmYWxzZTsKK1NFVCB4bWxvcHRpb24gPSBjb250 ZW50OworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOworU0VUIHJvd19zZWN1cml0 eSA9IG9mZjsKKworLS0KKy0tIFRPQyBlbnRyeSAxNyAoY2xhc3MgMjYxNSBPSUQgMTM5NzcwKQor LS0gTmFtZTogc291cmNlOyBUeXBlOiBTQ0hFTUE7IFNjaGVtYTogLTsgT3duZXI6IHBvc3RncmVz CistLQorCitDUkVBVEUgU0NIRU1BIHNvdXJjZTsKKworCitBTFRFUiBTQ0hFTUEgc291cmNlIE9X TkVSIFRPIHBvc3RncmVzOworCitTRVQgZGVmYXVsdF90YWJsZXNwYWNlID0gJyc7CisKKworQ1JF QVRFIEVYVEVOU0lPTiBidHJlZV9naXN0CisgICAgU0NIRU1BIHNvdXJjZTsKKworLS0KKy0tIFRP QyBlbnRyeSAxMjI3MiAoY2xhc3MgMTI1OSBPSUQgMTQ5MjA1KQorLS0gTmFtZTogdGFibGVfZm9y X3BhcnRpdGlvbjsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMK Ky0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3BhcnRpdGlvbiAoCisgICAgY29s MSBiaWdpbnQgTk9UIE5VTEwKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoY29sMSk7CisKKworQUxU RVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb24gT1dORVIgVE8gcG9zdGdyZXM7CisK Ky0tCistLSBUT0MgZW50cnkgMTIyNzMgKGNsYXNzIDEyNTkgT0lEIDE0OTIwOCkKKy0tIE5hbWU6 IHBhcnQxOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0K KworQ1JFQVRFIFRBQkxFIHNvdXJjZS5wYXJ0MSAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwK Kyk7CitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfcGFydGl0aW9uIEFUVEFDSCBQ QVJUSVRJT04gc291cmNlLnBhcnQxIEZPUiBWQUxVRVMgRlJPTSAoJzEnKSBUTyAoJzIzJyk7CisK KworQUxURVIgVEFCTEUgc291cmNlLnBhcnQxIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0g VE9DIGVudHJ5IDEyMjc0IChjbGFzcyAxMjU5IE9JRCAxNDkyMTMpCistLSBOYW1lOiB0YWJsZV9m b3JfcGFydGl0aW9uXzE7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3Rn cmVzCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSAoCisg ICAgY29sMSBiaWdpbnQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoY29sMSk7CisKKworQUxURVIg VEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSBPV05FUiBUTyBwb3N0Z3JlczsKKwor LS0KKy0tIFRPQyBlbnRyeSAxMjI3NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MjE2KQorLS0gTmFtZTog cGFydDM7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQor CitDUkVBVEUgVEFCTEUgc291cmNlLnBhcnQzICgKKyAgICBjb2wxIGJpZ2ludAorKTsKK0FMVEVS IFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSBBVFRBQ0ggUEFSVElUSU9O IHNvdXJjZS5wYXJ0MyBGT1IgVkFMVUVTIEZST00gKCcxJykgVE8gKCcxMCcpOworCisKK0FMVEVS IFRBQkxFIHNvdXJjZS5wYXJ0MyBPV05FUiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRy eSAxMjI3NiAoY2xhc3MgMTI1OSBPSUQgMTQ5MjE5KQorLS0gTmFtZTogcGFydDQ7IFR5cGU6IFRB QkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUg c291cmNlLnBhcnQ0ICgKKyAgICBjb2wxIGJpZ2ludAorKTsKK0FMVEVSIFRBQkxFIE9OTFkgc291 cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSBBVFRBQ0ggUEFSVElUSU9OIHNvdXJjZS5wYXJ0NCBG T1IgVkFMVUVTIEZST00gKCcxMScpIFRPICgnMjAnKTsKKworCitBTFRFUiBUQUJMRSBzb3VyY2Uu cGFydDQgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNTggKGNsYXNz IDEyNTkgT0lEIDE0ODk2MykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb2x1bW47IFR5cGU6IFRBQkxF OyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgc291 cmNlLnRhYmxlX2Zvcl9jb2x1bW4gKAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNv bDIgdGV4dCwKKyAgICBjb2wzIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxl X2Zvcl9jb2x1bW4gT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNTYg KGNsYXNzIDEyNTkgT0lEIDE0ODg5NSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50czsg VHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFU RSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzICgKKyAgICBjb2wxIGludGVnZXIg Tk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJs ZV9mb3JfY29uc3RyYWludHMgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkg NjEwNjYgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEyMjU2CistLSBOYW1lOiBU QUJMRSB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogc291cmNl OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gVEFCTEUgc291cmNlLnRhYmxlX2Zv cl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0tCistLSBUT0MgZW50cnkgMTIyNjIg KGNsYXNzIDEyNTkgT0lEIDE0OTAwNCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pZGVudGljYWw7IFR5 cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUg VEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pZGVudGljYWwgKAorICAgIGNvbDEgaW50ZWdlciBOT1Qg TlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zv cl9pZGVudGljYWwgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjAg KGNsYXNzIDEyNTkgT0lEIDE0ODk3NykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pbmRleDsgVHlwZTog VEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJM RSBzb3VyY2UudGFibGVfZm9yX2luZGV4ICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisg ICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfaW5kZXgg T1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjkgKGNsYXNzIDEyNTkg T0lEIDE0OTEyOCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleTsgVHlwZTogVEFCTEU7 IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJMRSBzb3Vy Y2UudGFibGVfZm9yX3ByaW1hcnlfa2V5ICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisg ICAgY29sMiB0ZXh0IE5PVCBOVUxMCispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9m b3JfcHJpbWFyeV9rZXkgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIy NjQgKGNsYXNzIDEyNTkgT0lEIDE0OTAyNCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9ydWxlOyBUeXBl OiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRB QkxFIHNvdXJjZS50YWJsZV9mb3JfcnVsZSAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwsCisg ICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfcnVsZSBP V05FUiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2NiAoY2xhc3MgMTI1OSBP SUQgMTQ5MDQ4KQorLS0gTmFtZTogdGFibGVfZm9yX3RyaWdnZXI7IFR5cGU6IFRBQkxFOyBTY2hl bWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRh YmxlX2Zvcl90cmlnZ2VyICgKKyAgICBjb2wxIGJpZ2ludCBOT1QgTlVMTCwKKyAgICBjb2wyIHRl eHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl90cmlnZ2VyIE9XTkVSIFRP IHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDU2ODkzIChjbGFzcyAyNjA2IE9JRCAxNDg5 MDQpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgRXhjbHVzaW9uOyBUeXBlOiBDT05T VFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJM RSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCAi RXhjbHVzaW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8PikgV0lUSCAoZmlsbGZh Y3Rvcj0nMTInKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJS RUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2NyAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVu ZGVuY2llczogNTY4OTMKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gdGFibGVf Zm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBv c3RncmVzCistLQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gc291cmNl LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0tCistLSBUT0MgZW50 cnkgNTY4OTEgKGNsYXNzIDI2MDYgT0lEIDE0ODkxMSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25z dHJhaW50cyBjaGVja19jb247IFR5cGU6IENIRUNLIENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNl OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfY29u c3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCBjaGVja19jb24gQ0hFQ0sgKChjb2wxID4gMTAp KSBOT1QgVkFMSUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xhc3MgMCBPSUQgMCkK Ky0tIERlcGVuZGVuY2llczogNTY4OTEKKy0tIE5hbWU6IENPTlNUUkFJTlQgY2hlY2tfY29uIE9O IHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVOVDsgU2NoZW1hOiBzb3VyY2U7IE93 bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5UIGNoZWNrX2NvbiBPTiBz b3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21lbnQnOworCisKKy0tCistLSBUT0Mg ZW50cnkgNTY4OTkgKGNsYXNzIDI2MDYgT0lEIDE0ODk3MCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9j b2x1bW4gdGFibGVfZm9yX2NvbHVtbl9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNv dXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJs ZV9mb3JfY29sdW1uCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2NvbHVtbl9wa2V5IFBS SU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODk1IChjbGFzcyAyNjA2 IE9JRCAxNDg5MDIpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgdGFibGVfZm9yX2Nv bnN0cmFpbnRzX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjog cG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9jb25zdHJh aW50cworICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9jb25zdHJhaW50c19wa2V5IFBSSU1B UlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTA0IChjbGFzcyAyNjA2IE9J RCAxNDg5ODQpCistLSBOYW1lOiB0YWJsZV9mb3JfaW5kZXggdGFibGVfZm9yX2luZGV4X3BrZXk7 IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisK K0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9pbmRleAorICAgIEFERCBDT05TVFJB SU5UIHRhYmxlX2Zvcl9pbmRleF9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0g VE9DIGVudHJ5IDU2OTEzIChjbGFzcyAyNjA2IE9JRCAxNDkxMzUpCistLSBOYW1lOiB0YWJsZV9m b3JfcHJpbWFyeV9rZXkgdGFibGVfZm9yX3ByaW1hcnlfa2V5X3BrZXk7IFR5cGU6IENPTlNUUkFJ TlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9O TFkgc291cmNlLnRhYmxlX2Zvcl9wcmltYXJ5X2tleQorICAgIEFERCBDT05TVFJBSU5UIHRhYmxl X2Zvcl9wcmltYXJ5X2tleV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyKTsKKworCistLQor LS0gVE9DIGVudHJ5IDU2OTA5IChjbGFzcyAyNjA2IE9JRCAxNDkwMzEpCistLSBOYW1lOiB0YWJs ZV9mb3JfcnVsZSB0YWJsZV9mb3JfcnVsZV9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6 IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50 YWJsZV9mb3JfcnVsZQorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9ydWxlX3BrZXkgUFJJ TUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDcgKGNsYXNzIDI2MDYg T0lEIDE0OTAxMSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pZGVudGljYWwgdGFibGVfZm9yX3RhYmxl X2Zvcl9pZGVudGljYWxfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93 bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2lk ZW50aWNhbAorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl90YWJsZV9mb3JfaWRlbnRpY2Fs X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MTEgKGNs YXNzIDI2MDYgT0lEIDE0OTA1NSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2VyIHRhYmxlX2Zv cl90cmlnZ2VyX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjog cG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl90cmlnZ2Vy CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3RyaWdnZXJfcGtleSBQUklNQVJZIEtFWSAo Y29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5NyAoY2xhc3MgMjYwNiBPSUQgMTQ4OTEz KQorLS0gTmFtZTogdGFibGVfZm9yX2NvbnN0cmFpbnRzIHVuaXF1ZTsgVHlwZTogQ09OU1RSQUlO VDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05M WSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzCisgICAgQUREIENPTlNUUkFJTlQgInVuaXF1 ZSIgVU5JUVVFIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDY5IChjbGFzcyAwIE9J RCAwKQorLS0gRGVwZW5kZW5jaWVzOiA1Njg5NworLS0gTmFtZTogQ09OU1RSQUlOVCAidW5pcXVl IiBPTiB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogc291cmNl OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gQ09OU1RSQUlOVCAidW5pcXVlIiBP TiBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjbW50JzsKKworCistLQorLS0gVE9D IGVudHJ5IDU2OTAwIChjbGFzcyAxMjU5IE9JRCAxNDkwMjMpCistLSBOYW1lOiBpbmRleDE7IFR5 cGU6IElOREVYOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUg SU5ERVggaW5kZXgxIE9OIHNvdXJjZS50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIg dmFyY2hhcl9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwNSAoY2xhc3Mg MTI1OSBPSUQgMTQ5MDEyKQorLS0gTmFtZTogaW5kZXhfaWRlbnRpY2FsOyBUeXBlOiBJTkRFWDsg U2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIElOREVYIGluZGV4 X2lkZW50aWNhbCBPTiBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbCBVU0lORyBidHJlZSAoY29s MiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAxIChjbGFzcyAx MjU5IE9JRCAxNDkyMTEpCistLSBOYW1lOiBpbmRleF9zYW1lOyBUeXBlOiBJTkRFWDsgU2NoZW1h OiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIElOREVYIGluZGV4X3NhbWUg T04gc291cmNlLnRhYmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5f b3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAyIChjbGFzcyAxMjU5IE9JRCAxNDkwMjIp CistLSBOYW1lOiBpbmRleF9zb3VyY2U7IFR5cGU6IElOREVYOyBTY2hlbWE6IHNvdXJjZTsgT3du ZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggaW5kZXhfc291cmNlIE9OIHNvdXJjZS50 YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKwor LS0KKy0tIFRPQyBlbnRyeSA2MTA0NCAoY2xhc3MgMjYxOCBPSUQgMTQ5MDMyKQorLS0gTmFtZTog dGFibGVfZm9yX3J1bGUgcnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjog cG9zdGdyZXMKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUxIEFTCisgICAgT04gVVBEQVRFIFRPIHNv dXJjZS50YWJsZV9mb3JfcnVsZSBETyBJTlNURUFEIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBl bnRyeSA2MTA3MCAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogNjEwNDQKKy0tIE5h bWU6IFJVTEUgcnVsZTEgT04gdGFibGVfZm9yX3J1bGU7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTog c291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gUlVMRSBydWxlMSBPTiBz b3VyY2UudGFibGVfZm9yX3J1bGUgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5 IDYxMDQ1IChjbGFzcyAyNjE4IE9JRCAxNDkwMzMpCistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZSBy dWxlMjsgVHlwZTogUlVMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKwor Q1JFQVRFIFJVTEUgcnVsZTIgQVMKKyAgICBPTiBJTlNFUlQgVE8gc291cmNlLnRhYmxlX2Zvcl9y dWxlIERPIE5PVEhJTkc7CisKKy0tCistLSBUT0MgZW50cnkgMTIyODMgKGNsYXNzIDEyNTkgT0lE IDM0NzgxOCkKKy0tIE5hbWU6IHRlc3QgdmlldzsgVHlwZTogVklFVzsgU2NoZW1hOiBzb3VyY2U7 IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFZJRVcgc291cmNlLiJ0ZXN0IHZpZXciIEFT CisgU0VMRUNUIHBnX2NsYXNzLnJlbG5hbWUsCisgICAgcGdfY2xhc3MucmVsbmFtZXNwYWNlLAor ICAgIHBnX2NsYXNzLnJlbHR5cGUsCisgICAgcGdfY2xhc3MucmVsb2Z0eXBlLAorICAgIHBnX2Ns YXNzLnJlbG93bmVyLAorICAgIHBnX2NsYXNzLnJlbGFtLAorICAgIHBnX2NsYXNzLnJlbGZpbGVu b2RlLAorICAgIHBnX2NsYXNzLnJlbHRhYmxlc3BhY2UsCisgICAgcGdfY2xhc3MucmVscGFnZXMs CisgICAgcGdfY2xhc3MucmVsdHVwbGVzLAorICAgIHBnX2NsYXNzLnJlbGFsbHZpc2libGUsCisg ICAgcGdfY2xhc3MucmVsdG9hc3RyZWxpZCwKKyAgICBwZ19jbGFzcy5yZWxoYXNpbmRleCwKKyAg ICBwZ19jbGFzcy5yZWxpc3NoYXJlZCwKKyAgICBwZ19jbGFzcy5yZWxwZXJzaXN0ZW5jZSwKKyAg ICBwZ19jbGFzcy5yZWxraW5kLAorICAgIHBnX2NsYXNzLnJlbG5hdHRzLAorICAgIHBnX2NsYXNz LnJlbGNoZWNrcywKKyAgICBwZ19jbGFzcy5yZWxoYXNvaWRzLAorICAgIHBnX2NsYXNzLnJlbGhh c3BrZXksCisgICAgcGdfY2xhc3MucmVsaGFzcnVsZXMsCisgICAgcGdfY2xhc3MucmVsaGFzdHJp Z2dlcnMsCisgICAgcGdfY2xhc3MucmVsaGFzc3ViY2xhc3MsCisgICAgcGdfY2xhc3MucmVscm93 c2VjdXJpdHksCisgICAgcGdfY2xhc3MucmVsZm9yY2Vyb3dzZWN1cml0eSwKKyAgICBwZ19jbGFz cy5yZWxpc3BvcHVsYXRlZCwKKyAgICBwZ19jbGFzcy5yZWxyZXBsaWRlbnQsCisgICAgcGdfY2xh c3MucmVsaXNwYXJ0aXRpb24sCisgICAgcGdfY2xhc3MucmVsZnJvemVueGlkLAorICAgIHBnX2Ns YXNzLnJlbG1pbm14aWQsCisgICAgcGdfY2xhc3MucmVsYWNsLAorICAgIHBnX2NsYXNzLnJlbG9w dGlvbnMsCisgICAgcGdfY2xhc3MucmVscGFydGJvdW5kCisgICBGUk9NIHBnX2NsYXNzCisgTElN SVQgMTA7CisKKworQUxURVIgVEFCTEUgc291cmNlLiJ0ZXN0IHZpZXciIE9XTkVSIFRPIHBvc3Rn cmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjg2IChjbGFzcyAxMjU5IE9JRCAzNDc4MzIpCist LSBOYW1lOiB0ZXN0IHZpZXcgZjsgVHlwZTogVklFVzsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBw b3N0Z3JlcworLS0KKworQ1JFQVRFIFZJRVcgc291cmNlLiJ0ZXN0IHZpZXcgZiIgV0lUSCAoc2Vj dXJpdHlfYmFycmllcj0nZmFsc2UnKSBBUworIFNFTEVDVCAyOworCisKK0FMVEVSIFRBQkxFIHNv dXJjZS4idGVzdCB2aWV3IGYiIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5 IDYxMTExIChjbGFzcyAwIE9JRCAwKQorLS0gRGVwZW5kZW5jaWVzOiAxMjI4NgorLS0gTmFtZTog VklFVyAidGVzdCB2aWV3IGYiOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6 IHBvc3RncmVzCistLQorCitDT01NRU5UIE9OIFZJRVcgc291cmNlLiJ0ZXN0IHZpZXcgZiIgSVMg J2Ntbic7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9w Zy8xMF9wbHVzL3RhcmdldC5zcWwgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0 cy9wZy8xMF9wbHVzL3RhcmdldC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi5jMzA0MmFiNjAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zY2hl bWFfZGlmZi90ZXN0cy9wZy8xMF9wbHVzL3RhcmdldC5zcWwKQEAgLTAsMCArMSw0MjkgQEAKKy0t CistLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGR1bXAKKy0tCisKKy0tIER1bXBlZCBmcm9tIGRhdGFi YXNlIHZlcnNpb24gMTAuNworLS0gRHVtcGVkIGJ5IHBnX2R1bXAgdmVyc2lvbiAxMmJldGEyCisK Ky0tIFN0YXJ0ZWQgb24gMjAxOS0xMS0wMSAxMjo1NToyMiBJU1QKKworU0VUIHN0YXRlbWVudF90 aW1lb3V0ID0gMDsKK1NFVCBsb2NrX3RpbWVvdXQgPSAwOworU0VUIGlkbGVfaW5fdHJhbnNhY3Rp b25fc2Vzc2lvbl90aW1lb3V0ID0gMDsKK1NFVCBjbGllbnRfZW5jb2RpbmcgPSAnVVRGOCc7CitT RVQgc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzID0gb247CitTRUxFQ1QgcGdfY2F0YWxvZy5z ZXRfY29uZmlnKCdzZWFyY2hfcGF0aCcsICcnLCBmYWxzZSk7CitTRVQgY2hlY2tfZnVuY3Rpb25f Ym9kaWVzID0gZmFsc2U7CitTRVQgeG1sb3B0aW9uID0gY29udGVudDsKK1NFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gd2FybmluZzsKK1NFVCByb3dfc2VjdXJpdHkgPSBvZmY7CisKKy0tCistLSBU T0MgZW50cnkgMTggKGNsYXNzIDI2MTUgT0lEIDEzOTc3MSkKKy0tIE5hbWU6IHRhcmdldDsgVHlw ZTogU0NIRU1BOyBTY2hlbWE6IC07IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFNDSEVN QSB0YXJnZXQ7CisKK0FMVEVSIFNDSEVNQSB0YXJnZXQgT1dORVIgVE8gcG9zdGdyZXM7CisKK1NF VCBkZWZhdWx0X3RhYmxlc3BhY2UgPSAnJzsKKworQ1JFQVRFIEVYVEVOU0lPTiBidHJlZV9naXN0 CisgICAgU0NIRU1BIHRhcmdldDsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI1MCAoY2xhc3MgMTI1 OSBPSUQgMTM5OTM4KQorLS0gTmFtZTogTVZpZXc7IFR5cGU6IE1BVEVSSUFMSVpFRCBWSUVXOyBT Y2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgTUFURVJJQUxJWkVE IFZJRVcgdGFyZ2V0LiJNVmlldyIgQVMKKyBTRUxFQ1QgJ3Rla3N0Jzo6dGV4dCBBUyB0ZXh0Cisg IFdJVEggTk8gREFUQTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQuIk1WaWV3IiBPV05FUiBUTyBw b3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI3NyAoY2xhc3MgMTI1OSBPSUQgMTQ5MjM0 KQorLS0gTmFtZTogdGFibGVfZm9yX3BhcnRpdGlvbl8xOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0 YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9m b3JfcGFydGl0aW9uXzEgKAorICAgIGNvbDEgYmlnaW50CispCitQQVJUSVRJT04gQlkgUkFOR0Ug KGNvbDEpOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcGFydGl0aW9uXzEgT1dO RVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzggKGNsYXNzIDEyNTkgT0lE IDE0OTIzNykKKy0tIE5hbWU6IHBhcnQzOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93 bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC5wYXJ0MyAoCisgICAgY29s MSBiaWdpbnQKKyk7CitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfcGFydGl0aW9u XzEgQVRUQUNIIFBBUlRJVElPTiB0YXJnZXQucGFydDMgRk9SIFZBTFVFUyBGUk9NICgnMTMnKSBU TyAoJzU2Jyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnBhcnQzIE9XTkVSIFRPIHBvc3RncmVz OworCistLQorLS0gVE9DIGVudHJ5IDEyMjU5IChjbGFzcyAxMjU5IE9JRCAxNDg5NzEpCistLSBO YW1lOiB0YWJsZV9mb3JfY29sdW1uOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfY29sdW1uICgK KyAgICBjb2wxIGJpZ2ludCwKKyAgICBjb2wyIGJpZ2ludCwKKyAgICBjb2w0IHRleHQKKyk7CisK KworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9jb2x1bW4gT1dORVIgVE8gcG9zdGdyZXM7 CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjggKGNsYXNzIDEyNTkgT0lEIDE0OTA4OSkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBP d25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2NvbnN0 cmFpbnRzICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0LAorICAg IENPTlNUUkFJTlQgY2hlY2tfY29uIENIRUNLICgoY29sMSA+IDMwKSkKKyk7CisKKworQUxURVIg VEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBPV05FUiBUTyBwb3N0Z3JlczsKKwor LS0KKy0tIFRPQyBlbnRyeSA2MTA2NiAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczog MTIyNjgKKy0tIE5hbWU6IFRBQkxFIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVO VDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBUQUJM RSB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21tZW50cyc7CisKKworLS0KKy0t IFRPQyBlbnRyeSA2MTA2NyAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogMTIyNjgK Ky0tIE5hbWU6IENPTlNUUkFJTlQgY2hlY2tfY29uIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50czsg VHlwZTogQ09NTUVOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09N TUVOVCBPTiBDT05TVFJBSU5UIGNoZWNrX2NvbiBPTiB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFp bnRzIElTICdjb21lbnQnOworCisKKy0tCistLSBUT0MgZW50cnkgMTIyNTcgKGNsYXNzIDEyNTkg T0lEIDE0ODk2MCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9kZWw7IFR5cGU6IFRBQkxFOyBTY2hlbWE6 IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxl X2Zvcl9kZWwgKAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2RlbCBPV05F UiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI3MSAoY2xhc3MgMTI1OSBPSUQg MTQ5MTcyKQorLS0gTmFtZTogdGFibGVfZm9yX2ZvcmVpZ25fa2V5OyBUeXBlOiBUQUJMRTsgU2No ZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50 YWJsZV9mb3JfZm9yZWlnbl9rZXkgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBj b2wyICJjaGFyIiwKKyAgICBjb2wzIGJpZ2ludAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQu dGFibGVfZm9yX2ZvcmVpZ25fa2V5IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVu dHJ5IDEyMjYzIChjbGFzcyAxMjU5IE9JRCAxNDkwMTMpCistLSBOYW1lOiB0YWJsZV9mb3JfaWRl bnRpY2FsOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0K KworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsICgKKyAgICBjb2wxIGlu dGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdl dC50YWJsZV9mb3JfaWRlbnRpY2FsIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVu dHJ5IDEyMjYxIChjbGFzcyAxMjU5IE9JRCAxNDg5ODYpCistLSBOYW1lOiB0YWJsZV9mb3JfaW5k ZXg7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitD UkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9pbmRleCAoCisgICAgY29sMSBpbnRlZ2VyIE5P VCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVf Zm9yX2luZGV4IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjcwIChj bGFzcyAxMjU5IE9JRCAxNDkxNDQpCistLSBOYW1lOiB0YWJsZV9mb3JfcHJpbWFyeV9rZXk7IFR5 cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUg VEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9wcmltYXJ5X2tleSAoCisgICAgY29sMSBpbnRlZ2VyIE5P VCBOVUxMLAorICAgIGNvbDIgdGV4dCBOT1QgTlVMTAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJn ZXQudGFibGVfZm9yX3ByaW1hcnlfa2V5IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9D IGVudHJ5IDEyMjY1IChjbGFzcyAxMjU5IE9JRCAxNDkwMzQpCistLSBOYW1lOiB0YWJsZV9mb3Jf cnVsZTsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisK K0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3J1bGUgKAorICAgIGNvbDEgYmlnaW50IE5P VCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVf Zm9yX3J1bGUgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjcgKGNs YXNzIDEyNTkgT0lEIDE0OTA2NikKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2VyOyBUeXBlOiBU QUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxF IHRhcmdldC50YWJsZV9mb3JfdHJpZ2dlciAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwsCisg ICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfdHJpZ2dl ciBPV05FUiBUTyBwb3N0Z3JlczsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTA2IChjbGFzcyAy NjA2IE9JRCAxNDkwOTcpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgRXhjbHVzaW9u OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQor CitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQg Q09OU1RSQUlOVCAiRXhjbHVzaW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8Pikg V0lUSCAoZmlsbGZhY3Rvcj0nMTUnKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklU SUFMTFkgREVGRVJSRUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xhc3MgMCBPSUQg MCkKKy0tIERlcGVuZGVuY2llczogNTY5MDYKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lv biIgT04gdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRhcmdl dDsgT3duZXI6IHBvc3RncmVzCistLQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgIkV4Y2x1c2lv biIgT04gdGFyZ2V0LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0t CistLSBUT0MgZW50cnkgNTY5MTAgKGNsYXNzIDI2MDYgT0lEIDE0OTE3NikKKy0tIE5hbWU6IHRh YmxlX2Zvcl9mb3JlaWduX2tleSB0YWJsZV9mb3JfZm9yZWlnbl9rZXlfcGtleTsgVHlwZTogQ09O U1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFC TEUgT05MWSB0YXJnZXQudGFibGVfZm9yX2ZvcmVpZ25fa2V5CisgICAgQUREIENPTlNUUkFJTlQg dGFibGVfZm9yX2ZvcmVpZ25fa2V5X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCist LSBUT0MgZW50cnkgNTY4OTcgKGNsYXNzIDI2MDYgT0lEIDE0ODk5MykKKy0tIE5hbWU6IHRhYmxl X2Zvcl9pbmRleCB0YWJsZV9mb3JfaW5kZXhfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1h OiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQu dGFibGVfZm9yX2luZGV4CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2luZGV4X3BrZXkg UFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDggKGNsYXNzIDI2 MDYgT0lEIDE0OTE1MSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleSB0YWJsZV9mb3Jf cHJpbWFyeV9rZXlfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9yX3ByaW1h cnlfa2V5CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3ByaW1hcnlfa2V5X3BrZXkgUFJJ TUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDIgKGNsYXNzIDI2MDYg T0lEIDE0OTA0MSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9ydWxlIHRhYmxlX2Zvcl9ydWxlX3BrZXk7 IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisK K0FMVEVSIFRBQkxFIE9OTFkgdGFyZ2V0LnRhYmxlX2Zvcl9ydWxlCisgICAgQUREIENPTlNUUkFJ TlQgdGFibGVfZm9yX3J1bGVfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRP QyBlbnRyeSA1NjkwMCAoY2xhc3MgMjYwNiBPSUQgMTQ5MDIwKQorLS0gTmFtZTogdGFibGVfZm9y X2lkZW50aWNhbCB0YWJsZV9mb3JfdGFibGVfZm9yX2lkZW50aWNhbF9wa2V5OyBUeXBlOiBDT05T VFJBSU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJM RSBPTkxZIHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsCisgICAgQUREIENPTlNUUkFJTlQgdGFi bGVfZm9yX3RhYmxlX2Zvcl9pZGVudGljYWxfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKwor LS0KKy0tIFRPQyBlbnRyeSA1NjkwNCAoY2xhc3MgMjYwNiBPSUQgMTQ5MDczKQorLS0gTmFtZTog dGFibGVfZm9yX3RyaWdnZXIgdGFibGVfZm9yX3RyaWdnZXJfcGtleTsgVHlwZTogQ09OU1RSQUlO VDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05M WSB0YXJnZXQudGFibGVfZm9yX3RyaWdnZXIKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3Jf dHJpZ2dlcl9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2 ODkzIChjbGFzcyAxMjU5IE9JRCAxNDg5OTQpCistLSBOYW1lOiBpbmRleDE7IFR5cGU6IElOREVY OyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggaW5k ZXgxIE9OIHRhcmdldC50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0 ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5NCAoY2xhc3MgMTI1OSBPSUQgMTQ4 OTk1KQorLS0gTmFtZTogaW5kZXgyOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIElOREVYIGluZGV4MiBPTiB0YXJnZXQudGFibGVfZm9y X2luZGV4IFVTSU5HIGJ0cmVlIChjb2wyIHRleHRfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBU T0MgZW50cnkgNTY4OTggKGNsYXNzIDEyNTkgT0lEIDE0OTAyMSkKKy0tIE5hbWU6IGluZGV4X2lk ZW50aWNhbDsgVHlwZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0t CisKK0NSRUFURSBJTkRFWCBpbmRleF9pZGVudGljYWwgT04gdGFyZ2V0LnRhYmxlX2Zvcl9pZGVu dGljYWwgVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRP QyBlbnRyeSA1Njg5NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MjEyKQorLS0gTmFtZTogaW5kZXhfc2Ft ZTsgVHlwZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NS RUFURSBJTkRFWCBpbmRleF9zYW1lIE9OIHRhcmdldC50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRy ZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5MiAo Y2xhc3MgMTI1OSBPSUQgMTM5OTQ1KQorLS0gTmFtZTogbXZpZXdfaW5kZXg7IFR5cGU6IElOREVY OyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggbXZp ZXdfaW5kZXggT04gdGFyZ2V0LiJNVmlldyIgVVNJTkcgYnRyZWUgKHRleHQgdGV4dF9wYXR0ZXJu X29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NSAoY2xhc3MgMjYxOCBPSUQgMTQ5MDQy KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogdGFy Z2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUxIEFTCisgICAgT04g VVBEQVRFIFRPIHRhcmdldC50YWJsZV9mb3JfcnVsZSBETyBJTlNURUFEIE5PVEhJTkc7CisKKwor LS0KKy0tIFRPQyBlbnRyeSA2MTA2OSAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczog NjEwNDUKKy0tIE5hbWU6IFJVTEUgcnVsZTEgT04gdGFibGVfZm9yX3J1bGU7IFR5cGU6IENPTU1F TlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gUlVM RSBydWxlMSBPTiB0YXJnZXQudGFibGVfZm9yX3J1bGUgSVMgJ2NvbW1lbnRzJzsKKworCistLQor LS0gVE9DIGVudHJ5IDYxMDQ2IChjbGFzcyAyNjE4IE9JRCAxNDkwNDMpCistLSBOYW1lOiB0YWJs ZV9mb3JfcnVsZSBydWxlMjsgVHlwZTogUlVMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0 Z3JlcworLS0KKworQ1JFQVRFIFJVTEUgcnVsZTIgQVMKKyAgICBPTiBVUERBVEUgVE8gdGFyZ2V0 LnRhYmxlX2Zvcl9ydWxlIERPIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NyAo Y2xhc3MgMjYxOCBPSUQgMTQ5MDQ0KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTM7IFR5 cGU6IFJVTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBS VUxFIHJ1bGUzIEFTCisgICAgT04gSU5TRVJUIFRPIHRhcmdldC50YWJsZV9mb3JfcnVsZSBETyBO T1RISU5HOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNTAgKGNsYXNzIDAgT0lEIDEzOTkzOCkK Ky0tIERlcGVuZGVuY2llczogMTIyNTAgNjEwNjIKKy0tIE5hbWU6IE1WaWV3OyBUeXBlOiBNQVRF UklBTElaRUQgVklFVyBEQVRBOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQor CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHRhcmdldC4iTVZpZXciOworCisKKy0tCistLSBU T0MgZW50cnkgMTIyODQgKGNsYXNzIDEyNTkgT0lEIDM0NzgyMykKKy0tIE5hbWU6IHRlc3Qgdmll dzsgVHlwZTogVklFVzsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JF QVRFIFZJRVcgdGFyZ2V0LiJ0ZXN0IHZpZXciIEFTCisgU0VMRUNUIHBnX2NsYXNzLnJlbG5hbWUs CisgICAgcGdfY2xhc3MucmVsbmFtZXNwYWNlLAorICAgIHBnX2NsYXNzLnJlbHR5cGUsCisgICAg cGdfY2xhc3MucmVsb2Z0eXBlLAorICAgIHBnX2NsYXNzLnJlbG93bmVyLAorICAgIHBnX2NsYXNz LnJlbGFtLAorICAgIHBnX2NsYXNzLnJlbGZpbGVub2RlLAorICAgIHBnX2NsYXNzLnJlbHRhYmxl c3BhY2UsCisgICAgcGdfY2xhc3MucmVscGFnZXMsCisgICAgcGdfY2xhc3MucmVsdHVwbGVzLAor ICAgIHBnX2NsYXNzLnJlbGFsbHZpc2libGUsCisgICAgcGdfY2xhc3MucmVsdG9hc3RyZWxpZCwK KyAgICBwZ19jbGFzcy5yZWxoYXNpbmRleCwKKyAgICBwZ19jbGFzcy5yZWxpc3NoYXJlZCwKKyAg ICBwZ19jbGFzcy5yZWxwZXJzaXN0ZW5jZSwKKyAgICBwZ19jbGFzcy5yZWxraW5kLAorICAgIHBn X2NsYXNzLnJlbG5hdHRzLAorICAgIHBnX2NsYXNzLnJlbGNoZWNrcywKKyAgICBwZ19jbGFzcy5y ZWxoYXNvaWRzLAorICAgIHBnX2NsYXNzLnJlbGhhc3BrZXksCisgICAgcGdfY2xhc3MucmVsaGFz cnVsZXMsCisgICAgcGdfY2xhc3MucmVsaGFzdHJpZ2dlcnMsCisgICAgcGdfY2xhc3MucmVsaGFz c3ViY2xhc3MsCisgICAgcGdfY2xhc3MucmVscm93c2VjdXJpdHksCisgICAgcGdfY2xhc3MucmVs Zm9yY2Vyb3dzZWN1cml0eSwKKyAgICBwZ19jbGFzcy5yZWxpc3BvcHVsYXRlZCwKKyAgICBwZ19j bGFzcy5yZWxyZXBsaWRlbnQsCisgICAgcGdfY2xhc3MucmVsaXNwYXJ0aXRpb24sCisgICAgcGdf Y2xhc3MucmVsZnJvemVueGlkLAorICAgIHBnX2NsYXNzLnJlbG1pbm14aWQsCisgICAgcGdfY2xh c3MucmVsYWNsLAorICAgIHBnX2NsYXNzLnJlbG9wdGlvbnMsCisgICAgcGdfY2xhc3MucmVscGFy dGJvdW5kCisgICBGUk9NIHBnX2NsYXNzCisgTElNSVQgMTA7CisKKworQUxURVIgVEFCTEUgdGFy Z2V0LiJ0ZXN0IHZpZXciIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEy Mjg1IChjbGFzcyAxMjU5IE9JRCAzNDc4MjgpCistLSBOYW1lOiB0ZXN0IHZpZXcgZjsgVHlwZTog VklFVzsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFZJRVcg dGFyZ2V0LiJ0ZXN0IHZpZXcgZiIgV0lUSCAoc2VjdXJpdHlfYmFycmllcj0ndHJ1ZScpIEFTCisg U0VMRUNUIDI7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LiJ0ZXN0IHZpZXcgZiIgT1dORVIgVE8g cG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgNjExMDUgKGNsYXNzIDAgT0lEIDApCistLSBE ZXBlbmRlbmNpZXM6IDEyMjg1CistLSBOYW1lOiBWSUVXICJ0ZXN0IHZpZXcgZiI7IFR5cGU6IENP TU1FTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04g VklFVyB0YXJnZXQuInRlc3QgdmlldyBmIiBJUyAnY21uJzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEyX3BsdXMvc291cmNlLnNxbCBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEyX3BsdXMvc291cmNlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjhlZjg3ZTNiYwotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEyX3BsdXMvc291 cmNlLnNxbApAQCAtMCwwICsxLDQ0MCBAQAorLS0KKy0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVt cAorLS0KKworLS0gRHVtcGVkIGZyb20gZGF0YWJhc2UgdmVyc2lvbiAxMC43CistLSBEdW1wZWQg YnkgcGdfZHVtcCB2ZXJzaW9uIDEyYmV0YTIKKworLS0gU3RhcnRlZCBvbiAyMDE5LTExLTAxIDEy OjU0OjE1IElTVAorCitTRVQgc3RhdGVtZW50X3RpbWVvdXQgPSAwOworU0VUIGxvY2tfdGltZW91 dCA9IDA7CitTRVQgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQgPSAwOworU0VU IGNsaWVudF9lbmNvZGluZyA9ICdVVEY4JzsKK1NFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmlu Z3MgPSBvbjsKK1NFTEVDVCBwZ19jYXRhbG9nLnNldF9jb25maWcoJ3NlYXJjaF9wYXRoJywgJycs IGZhbHNlKTsKK1NFVCBjaGVja19mdW5jdGlvbl9ib2RpZXMgPSBmYWxzZTsKK1NFVCB4bWxvcHRp b24gPSBjb250ZW50OworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOworU0VUIHJv d19zZWN1cml0eSA9IG9mZjsKKworLS0KKy0tIFRPQyBlbnRyeSAxNyAoY2xhc3MgMjYxNSBPSUQg MTM5NzcwKQorLS0gTmFtZTogc291cmNlOyBUeXBlOiBTQ0hFTUE7IFNjaGVtYTogLTsgT3duZXI6 IHBvc3RncmVzCistLQorCitDUkVBVEUgU0NIRU1BIHNvdXJjZTsKKworCitBTFRFUiBTQ0hFTUEg c291cmNlIE9XTkVSIFRPIHBvc3RncmVzOworCitTRVQgZGVmYXVsdF90YWJsZXNwYWNlID0gJyc7 CisKKworQ1JFQVRFIEVYVEVOU0lPTiBidHJlZV9naXN0CisgICAgU0NIRU1BIHNvdXJjZTsKKwor LS0KKy0tIFRPQyBlbnRyeSAxMjI3MiAoY2xhc3MgMTI1OSBPSUQgMTQ5MjA1KQorLS0gTmFtZTog dGFibGVfZm9yX3BhcnRpdGlvbjsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjog cG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3BhcnRpdGlvbiAo CisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoY29sMSk7 CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb24gT1dORVIgVE8gcG9z dGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzMgKGNsYXNzIDEyNTkgT0lEIDE0OTIwOCkK Ky0tIE5hbWU6IHBhcnQxOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0 Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHNvdXJjZS5wYXJ0MSAoCisgICAgY29sMSBiaWdpbnQg Tk9UIE5VTEwKKyk7CitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfcGFydGl0aW9u IEFUVEFDSCBQQVJUSVRJT04gc291cmNlLnBhcnQxIEZPUiBWQUxVRVMgRlJPTSAoJzEnKSBUTyAo JzIzJyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnBhcnQxIE9XTkVSIFRPIHBvc3RncmVzOwor CistLQorLS0gVE9DIGVudHJ5IDEyMjc0IChjbGFzcyAxMjU5IE9JRCAxNDkyMTMpCistLSBOYW1l OiB0YWJsZV9mb3JfcGFydGl0aW9uXzE7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3du ZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRp b25fMSAoCisgICAgY29sMSBiaWdpbnQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoY29sMSk7CisK KworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSBPV05FUiBUTyBwb3N0 Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI3NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MjE2KQor LS0gTmFtZTogcGFydDM7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3Rn cmVzCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnBhcnQzICgKKyAgICBjb2wxIGJpZ2ludAor KTsKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSBBVFRBQ0gg UEFSVElUSU9OIHNvdXJjZS5wYXJ0MyBGT1IgVkFMVUVTIEZST00gKCcxJykgVE8gKCcxMCcpOwor CisKK0FMVEVSIFRBQkxFIHNvdXJjZS5wYXJ0MyBPV05FUiBUTyBwb3N0Z3JlczsKKworLS0KKy0t IFRPQyBlbnRyeSAxMjI3NiAoY2xhc3MgMTI1OSBPSUQgMTQ5MjE5KQorLS0gTmFtZTogcGFydDQ7 IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVB VEUgVEFCTEUgc291cmNlLnBhcnQ0ICgKKyAgICBjb2wxIGJpZ2ludAorKTsKK0FMVEVSIFRBQkxF IE9OTFkgc291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSBBVFRBQ0ggUEFSVElUSU9OIHNvdXJj ZS5wYXJ0NCBGT1IgVkFMVUVTIEZST00gKCcxMScpIFRPICgnMjAnKTsKKworCitBTFRFUiBUQUJM RSBzb3VyY2UucGFydDQgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIy NTggKGNsYXNzIDEyNTkgT0lEIDE0ODk2MykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb2x1bW47IFR5 cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUg VEFCTEUgc291cmNlLnRhYmxlX2Zvcl9jb2x1bW4gKAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxM LAorICAgIGNvbDIgdGV4dCwKKyAgICBjb2wzIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291 cmNlLnRhYmxlX2Zvcl9jb2x1bW4gT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50 cnkgMTIyNTYgKGNsYXNzIDEyNTkgT0lEIDE0ODg5NSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25z dHJhaW50czsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0t CisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzICgKKyAgICBjb2wx IGludGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNv dXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBU T0MgZW50cnkgNjEwNjYgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEyMjU2Cist LSBOYW1lOiBUQUJMRSB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVt YTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gVEFCTEUgc291cmNl LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0tCistLSBUT0MgZW50 cnkgMTIyNjIgKGNsYXNzIDEyNTkgT0lEIDE0OTAwNCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pZGVu dGljYWw7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQor CitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pZGVudGljYWwgKAorICAgIGNvbDEgaW50 ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNl LnRhYmxlX2Zvcl9pZGVudGljYWwgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50 cnkgMTIyNjAgKGNsYXNzIDEyNTkgT0lEIDE0ODk3NykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pbmRl eDsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NS RUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2luZGV4ICgKKyAgICBjb2wxIGludGVnZXIgTk9U IE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9m b3JfaW5kZXggT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjkgKGNs YXNzIDEyNTkgT0lEIDE0OTEyOCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleTsgVHlw ZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBU QUJMRSBzb3VyY2UudGFibGVfZm9yX3ByaW1hcnlfa2V5ICgKKyAgICBjb2wxIGludGVnZXIgTk9U IE5VTEwsCisgICAgY29sMiB0ZXh0IE5PVCBOVUxMCispOworCisKK0FMVEVSIFRBQkxFIHNvdXJj ZS50YWJsZV9mb3JfcHJpbWFyeV9rZXkgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0Mg ZW50cnkgMTIyNjQgKGNsYXNzIDEyNTkgT0lEIDE0OTAyNCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9y dWxlOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKwor Q1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfcnVsZSAoCisgICAgY29sMSBiaWdpbnQgTk9U IE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9m b3JfcnVsZSBPV05FUiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2NiAoY2xh c3MgMTI1OSBPSUQgMTQ5MDQ4KQorLS0gTmFtZTogdGFibGVfZm9yX3RyaWdnZXI7IFR5cGU6IFRB QkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUg c291cmNlLnRhYmxlX2Zvcl90cmlnZ2VyICgKKyAgICBjb2wxIGJpZ2ludCBOT1QgTlVMTCwKKyAg ICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl90cmlnZ2Vy IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDU2ODkzIChjbGFzcyAyNjA2 IE9JRCAxNDg5MDQpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgRXhjbHVzaW9uOyBU eXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitB TFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09O U1RSQUlOVCAiRXhjbHVzaW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8PikgV0lU SCAoZmlsbGZhY3Rvcj0nMTInKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklUSUFM TFkgREVGRVJSRUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2NyAoY2xhc3MgMCBPSUQgMCkK Ky0tIERlcGVuZGVuY2llczogNTY4OTMKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIg T04gdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHNvdXJjZTsg T3duZXI6IHBvc3RncmVzCistLQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIg T04gc291cmNlLnRhYmxlX2Zvcl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0tCist LSBUT0MgZW50cnkgNTY4OTEgKGNsYXNzIDI2MDYgT0lEIDE0ODkxMSkKKy0tIE5hbWU6IHRhYmxl X2Zvcl9jb25zdHJhaW50cyBjaGVja19jb247IFR5cGU6IENIRUNLIENPTlNUUkFJTlQ7IFNjaGVt YTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJs ZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCBjaGVja19jb24gQ0hFQ0sgKChj b2wxID4gMTApKSBOT1QgVkFMSUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xhc3Mg MCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogNTY4OTEKKy0tIE5hbWU6IENPTlNUUkFJTlQgY2hl Y2tfY29uIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVOVDsgU2NoZW1hOiBz b3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5UIGNoZWNr X2NvbiBPTiBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21lbnQnOworCisKKy0t CistLSBUT0MgZW50cnkgNTY4OTkgKGNsYXNzIDI2MDYgT0lEIDE0ODk3MCkKKy0tIE5hbWU6IHRh YmxlX2Zvcl9jb2x1bW4gdGFibGVfZm9yX2NvbHVtbl9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBT Y2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNv dXJjZS50YWJsZV9mb3JfY29sdW1uCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2NvbHVt bl9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODk1IChj bGFzcyAyNjA2IE9JRCAxNDg5MDIpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgdGFi bGVfZm9yX2NvbnN0cmFpbnRzX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNl OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zv cl9jb25zdHJhaW50cworICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9jb25zdHJhaW50c19w a2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTA0IChjbGFz cyAyNjA2IE9JRCAxNDg5ODQpCistLSBOYW1lOiB0YWJsZV9mb3JfaW5kZXggdGFibGVfZm9yX2lu ZGV4X3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdy ZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9pbmRleAorICAgIEFE RCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9pbmRleF9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKwor CistLQorLS0gVE9DIGVudHJ5IDU2OTEzIChjbGFzcyAyNjA2IE9JRCAxNDkxMzUpCistLSBOYW1l OiB0YWJsZV9mb3JfcHJpbWFyeV9rZXkgdGFibGVfZm9yX3ByaW1hcnlfa2V5X3BrZXk7IFR5cGU6 IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVS IFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9wcmltYXJ5X2tleQorICAgIEFERCBDT05TVFJB SU5UIHRhYmxlX2Zvcl9wcmltYXJ5X2tleV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyKTsK KworCistLQorLS0gVE9DIGVudHJ5IDU2OTA5IChjbGFzcyAyNjA2IE9JRCAxNDkwMzEpCistLSBO YW1lOiB0YWJsZV9mb3JfcnVsZSB0YWJsZV9mb3JfcnVsZV9wa2V5OyBUeXBlOiBDT05TVFJBSU5U OyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZ IHNvdXJjZS50YWJsZV9mb3JfcnVsZQorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9ydWxl X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDcgKGNs YXNzIDI2MDYgT0lEIDE0OTAxMSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pZGVudGljYWwgdGFibGVf Zm9yX3RhYmxlX2Zvcl9pZGVudGljYWxfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBz b3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFi bGVfZm9yX2lkZW50aWNhbAorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl90YWJsZV9mb3Jf aWRlbnRpY2FsX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkg NTY5MTEgKGNsYXNzIDI2MDYgT0lEIDE0OTA1NSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2Vy IHRhYmxlX2Zvcl90cmlnZ2VyX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNl OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zv cl90cmlnZ2VyCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3RyaWdnZXJfcGtleSBQUklN QVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5NyAoY2xhc3MgMjYwNiBP SUQgMTQ4OTEzKQorLS0gTmFtZTogdGFibGVfZm9yX2NvbnN0cmFpbnRzIHVuaXF1ZTsgVHlwZTog Q09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIg VEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzCisgICAgQUREIENPTlNUUkFJ TlQgInVuaXF1ZSIgVU5JUVVFIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDY5IChj bGFzcyAwIE9JRCAwKQorLS0gRGVwZW5kZW5jaWVzOiA1Njg5NworLS0gTmFtZTogQ09OU1RSQUlO VCAidW5pcXVlIiBPTiB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVt YTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gQ09OU1RSQUlOVCAi dW5pcXVlIiBPTiBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjbW50JzsKKworCist LQorLS0gVE9DIGVudHJ5IDU2OTAwIChjbGFzcyAxMjU5IE9JRCAxNDkwMjMpCistLSBOYW1lOiBp bmRleDE7IFR5cGU6IElOREVYOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQor CitDUkVBVEUgSU5ERVggaW5kZXgxIE9OIHNvdXJjZS50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRy ZWUgKGNvbDIgdmFyY2hhcl9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njkw NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MDEyKQorLS0gTmFtZTogaW5kZXhfaWRlbnRpY2FsOyBUeXBl OiBJTkRFWDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIElO REVYIGluZGV4X2lkZW50aWNhbCBPTiBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbCBVU0lORyBi dHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAx IChjbGFzcyAxMjU5IE9JRCAxNDkyMTEpCistLSBOYW1lOiBpbmRleF9zYW1lOyBUeXBlOiBJTkRF WDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIElOREVYIGlu ZGV4X3NhbWUgT04gc291cmNlLnRhYmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB0ZXh0 X3BhdHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAyIChjbGFzcyAxMjU5IE9J RCAxNDkwMjIpCistLSBOYW1lOiBpbmRleF9zb3VyY2U7IFR5cGU6IElOREVYOyBTY2hlbWE6IHNv dXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggaW5kZXhfc291cmNlIE9O IHNvdXJjZS50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29w cyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NCAoY2xhc3MgMjYxOCBPSUQgMTQ5MDMyKQor LS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogc291cmNl OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUxIEFTCisgICAgT04gVVBE QVRFIFRPIHNvdXJjZS50YWJsZV9mb3JfcnVsZSBETyBJTlNURUFEIE5PVEhJTkc7CisKKworLS0K Ky0tIFRPQyBlbnRyeSA2MTA3MCAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogNjEw NDQKKy0tIE5hbWU6IFJVTEUgcnVsZTEgT04gdGFibGVfZm9yX3J1bGU7IFR5cGU6IENPTU1FTlQ7 IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gUlVMRSBy dWxlMSBPTiBzb3VyY2UudGFibGVfZm9yX3J1bGUgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0g VE9DIGVudHJ5IDYxMDQ1IChjbGFzcyAyNjE4IE9JRCAxNDkwMzMpCistLSBOYW1lOiB0YWJsZV9m b3JfcnVsZSBydWxlMjsgVHlwZTogUlVMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3Jl cworLS0KKworQ1JFQVRFIFJVTEUgcnVsZTIgQVMKKyAgICBPTiBJTlNFUlQgVE8gc291cmNlLnRh YmxlX2Zvcl9ydWxlIERPIE5PVEhJTkc7CisKKy0tCistLSBUT0MgZW50cnkgMTIyODMgKGNsYXNz IDEyNTkgT0lEIDM0NzgxOCkKKy0tIE5hbWU6IHRlc3QgdmlldzsgVHlwZTogVklFVzsgU2NoZW1h OiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFZJRVcgc291cmNlLiJ0ZXN0 IHZpZXciIEFTCisgU0VMRUNUIHBnX2NsYXNzLnJlbG5hbWUsCisgICAgcGdfY2xhc3MucmVsbmFt ZXNwYWNlLAorICAgIHBnX2NsYXNzLnJlbHR5cGUsCisgICAgcGdfY2xhc3MucmVsb2Z0eXBlLAor ICAgIHBnX2NsYXNzLnJlbG93bmVyLAorICAgIHBnX2NsYXNzLnJlbGFtLAorICAgIHBnX2NsYXNz LnJlbGZpbGVub2RlLAorICAgIHBnX2NsYXNzLnJlbHRhYmxlc3BhY2UsCisgICAgcGdfY2xhc3Mu cmVscGFnZXMKKyAgIEZST00gcGdfY2xhc3MKKyBMSU1JVCAxMDsKKworCitBTFRFUiBUQUJMRSBz b3VyY2UuInRlc3QgdmlldyIgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkg MTIyODYgKGNsYXNzIDEyNTkgT0lEIDM0NzgzMikKKy0tIE5hbWU6IHRlc3QgdmlldyBmOyBUeXBl OiBWSUVXOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVklF VyBzb3VyY2UuInRlc3QgdmlldyBmIiBXSVRIIChzZWN1cml0eV9iYXJyaWVyPSdmYWxzZScpIEFT CisgU0VMRUNUIDI7CisKKworQUxURVIgVEFCTEUgc291cmNlLiJ0ZXN0IHZpZXcgZiIgT1dORVIg VE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgNjExMTEgKGNsYXNzIDAgT0lEIDApCist LSBEZXBlbmRlbmNpZXM6IDEyMjg2CistLSBOYW1lOiBWSUVXICJ0ZXN0IHZpZXcgZiI7IFR5cGU6 IENPTU1FTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQg T04gVklFVyBzb3VyY2UuInRlc3QgdmlldyBmIiBJUyAnY21uJzsKKworLS0KKy0tIFRPQyBlbnRy eSAyMjMgKGNsYXNzIDEyNTUgT0lEIDY3MjA2KQorLS0gTmFtZTogZG9kYWpfa2xpamVudGEoY2hh cmFjdGVyIHZhcnlpbmcsIGNoYXJhY3RlciB2YXJ5aW5nLCBjaGFyYWN0ZXIgdmFyeWluZywgY2hh cmFjdGVyIHZhcnlpbmcsIGludGVnZXIsIGNoYXJhY3RlciB2YXJ5aW5nLCBjaGFyYWN0ZXIgdmFy eWluZywgY2hhcmFjdGVyIHZhcnlpbmcsIGJvb2xlYW4sIGJvb2xlYW4sIGNoYXJhY3RlciB2YXJ5 aW5nLCBjaGFyYWN0ZXIgdmFyeWluZywgY2hhcmFjdGVyIHZhcnlpbmcsIGNoYXJhY3RlciB2YXJ5 aW5nLCBudW1lcmljLCBjaGFyYWN0ZXIgdmFyeWluZyk7IFR5cGU6IFBST0NFRFVSRTsgU2NoZW1h OiBwdWJsaWM7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFBST0NFRFVSRSBzb3VyY2Uu ZG9kYWpfa2xpamVudGEodl9uYXppdiBjaGFyYWN0ZXIgdmFyeWluZywgdl9vaWIgY2hhcmFjdGVy IHZhcnlpbmcsIHZfcGR2X2lkIGNoYXJhY3RlciB2YXJ5aW5nLCB2X2FkcmVzYSBjaGFyYWN0ZXIg dmFyeWluZywgdl9tamVzdG8gaW50ZWdlciwgdl9kcnphdmEgY2hhcmFjdGVyIHZhcnlpbmcsIHZf dGlwX3Bfc3ViIGNoYXJhY3RlciB2YXJ5aW5nLCB2X3ZsYXNuaWsgY2hhcmFjdGVyIHZhcnlpbmcs IHZfcGR2IGJvb2xlYW4sIHZfZmlzayBib29sZWFuLCB2X2liYW4gY2hhcmFjdGVyIHZhcnlpbmcs IHZfa19vc29iYSBjaGFyYWN0ZXIgdmFyeWluZywgdl9lbWFpbCBjaGFyYWN0ZXIgdmFyeWluZywg dl9icl90ZWwgY2hhcmFjdGVyIHZhcnlpbmcsIHZfcmFkbmFfZ29kIG51bWVyaWMsIHZfc2NoZW1h IGNoYXJhY3RlciB2YXJ5aW5nKQorICAgIExBTkdVQUdFIHNxbAorICAgIEFTICQkc2VsZWN0IDE7 JCQ7CisKKworQUxURVIgUFJPQ0VEVVJFIHNvdXJjZS5kb2Rhal9rbGlqZW50YSh2X25heml2IGNo YXJhY3RlciB2YXJ5aW5nLCB2X29pYiBjaGFyYWN0ZXIgdmFyeWluZywgdl9wZHZfaWQgY2hhcmFj dGVyIHZhcnlpbmcsIHZfYWRyZXNhIGNoYXJhY3RlciB2YXJ5aW5nLCB2X21qZXN0byBpbnRlZ2Vy LCB2X2RyemF2YSBjaGFyYWN0ZXIgdmFyeWluZywgdl90aXBfcF9zdWIgY2hhcmFjdGVyIHZhcnlp bmcsIHZfdmxhc25payBjaGFyYWN0ZXIgdmFyeWluZywgdl9wZHYgYm9vbGVhbiwgdl9maXNrIGJv b2xlYW4sIHZfaWJhbiBjaGFyYWN0ZXIgdmFyeWluZywgdl9rX29zb2JhIGNoYXJhY3RlciB2YXJ5 aW5nLCB2X2VtYWlsIGNoYXJhY3RlciB2YXJ5aW5nLCB2X2JyX3RlbCBjaGFyYWN0ZXIgdmFyeWlu Zywgdl9yYWRuYV9nb2QgbnVtZXJpYywgdl9zY2hlbWEgY2hhcmFjdGVyIHZhcnlpbmcpIE9XTkVS IFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDIyMCAoY2xhc3MgMTI1NSBPSUQgNjcy MDUpCistLSBOYW1lOiBwcm9jMShiaWdpbnQpOyBUeXBlOiBQUk9DRURVUkU7IFNjaGVtYTogc291 cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBQUk9DRURVUkUgc291cmNlLnByb2Mx KGFyZzEgYmlnaW50KQorICAgIExBTkdVQUdFIHNxbAorICAgIEFTICQkc2VsZWN0IDE7JCQ7CisK KworQUxURVIgUFJPQ0VEVVJFIHNvdXJjZS5wcm9jMShhcmcxIGJpZ2ludCkgT1dORVIgVE8gcG9z dGdyZXM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9w Zy8xMl9wbHVzL3RhcmdldC5zcWwgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0 cy9wZy8xMl9wbHVzL3RhcmdldC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi5kNTc4NDE3NDQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zY2hl bWFfZGlmZi90ZXN0cy9wZy8xMl9wbHVzL3RhcmdldC5zcWwKQEAgLTAsMCArMSw0MTcgQEAKKy0t CistLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGR1bXAKKy0tCisKKy0tIER1bXBlZCBmcm9tIGRhdGFi YXNlIHZlcnNpb24gMTAuNworLS0gRHVtcGVkIGJ5IHBnX2R1bXAgdmVyc2lvbiAxMmJldGEyCisK Ky0tIFN0YXJ0ZWQgb24gMjAxOS0xMS0wMSAxMjo1NToyMiBJU1QKKworU0VUIHN0YXRlbWVudF90 aW1lb3V0ID0gMDsKK1NFVCBsb2NrX3RpbWVvdXQgPSAwOworU0VUIGlkbGVfaW5fdHJhbnNhY3Rp b25fc2Vzc2lvbl90aW1lb3V0ID0gMDsKK1NFVCBjbGllbnRfZW5jb2RpbmcgPSAnVVRGOCc7CitT RVQgc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzID0gb247CitTRUxFQ1QgcGdfY2F0YWxvZy5z ZXRfY29uZmlnKCdzZWFyY2hfcGF0aCcsICcnLCBmYWxzZSk7CitTRVQgY2hlY2tfZnVuY3Rpb25f Ym9kaWVzID0gZmFsc2U7CitTRVQgeG1sb3B0aW9uID0gY29udGVudDsKK1NFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gd2FybmluZzsKK1NFVCByb3dfc2VjdXJpdHkgPSBvZmY7CisKKy0tCistLSBU T0MgZW50cnkgMTggKGNsYXNzIDI2MTUgT0lEIDEzOTc3MSkKKy0tIE5hbWU6IHRhcmdldDsgVHlw ZTogU0NIRU1BOyBTY2hlbWE6IC07IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFNDSEVN QSB0YXJnZXQ7CisKK0FMVEVSIFNDSEVNQSB0YXJnZXQgT1dORVIgVE8gcG9zdGdyZXM7CisKK1NF VCBkZWZhdWx0X3RhYmxlc3BhY2UgPSAnJzsKKworQ1JFQVRFIEVYVEVOU0lPTiBidHJlZV9naXN0 CisgICAgU0NIRU1BIHRhcmdldDsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI1MCAoY2xhc3MgMTI1 OSBPSUQgMTM5OTM4KQorLS0gTmFtZTogTVZpZXc7IFR5cGU6IE1BVEVSSUFMSVpFRCBWSUVXOyBT Y2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgTUFURVJJQUxJWkVE IFZJRVcgdGFyZ2V0LiJNVmlldyIgQVMKKyBTRUxFQ1QgJ3Rla3N0Jzo6dGV4dCBBUyB0ZXh0Cisg IFdJVEggTk8gREFUQTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQuIk1WaWV3IiBPV05FUiBUTyBw b3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI3NyAoY2xhc3MgMTI1OSBPSUQgMTQ5MjM0 KQorLS0gTmFtZTogdGFibGVfZm9yX3BhcnRpdGlvbl8xOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0 YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9m b3JfcGFydGl0aW9uXzEgKAorICAgIGNvbDEgYmlnaW50CispCitQQVJUSVRJT04gQlkgUkFOR0Ug KGNvbDEpOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcGFydGl0aW9uXzEgT1dO RVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzggKGNsYXNzIDEyNTkgT0lE IDE0OTIzNykKKy0tIE5hbWU6IHBhcnQzOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93 bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC5wYXJ0MyAoCisgICAgY29s MSBiaWdpbnQKKyk7CitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfcGFydGl0aW9u XzEgQVRUQUNIIFBBUlRJVElPTiB0YXJnZXQucGFydDMgRk9SIFZBTFVFUyBGUk9NICgnMTMnKSBU TyAoJzU2Jyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnBhcnQzIE9XTkVSIFRPIHBvc3RncmVz OworCistLQorLS0gVE9DIGVudHJ5IDEyMjU5IChjbGFzcyAxMjU5IE9JRCAxNDg5NzEpCistLSBO YW1lOiB0YWJsZV9mb3JfY29sdW1uOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfY29sdW1uICgK KyAgICBjb2wxIGJpZ2ludCwKKyAgICBjb2wyIGJpZ2ludCwKKyAgICBjb2w0IHRleHQKKyk7CisK KworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9jb2x1bW4gT1dORVIgVE8gcG9zdGdyZXM7 CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjggKGNsYXNzIDEyNTkgT0lEIDE0OTA4OSkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBP d25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2NvbnN0 cmFpbnRzICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0LAorICAg IENPTlNUUkFJTlQgY2hlY2tfY29uIENIRUNLICgoY29sMSA+IDMwKSkKKyk7CisKKworQUxURVIg VEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBPV05FUiBUTyBwb3N0Z3JlczsKKwor LS0KKy0tIFRPQyBlbnRyeSA2MTA2NiAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczog MTIyNjgKKy0tIE5hbWU6IFRBQkxFIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVO VDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBUQUJM RSB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21tZW50cyc7CisKKworLS0KKy0t IFRPQyBlbnRyeSA2MTA2NyAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogMTIyNjgK Ky0tIE5hbWU6IENPTlNUUkFJTlQgY2hlY2tfY29uIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50czsg VHlwZTogQ09NTUVOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09N TUVOVCBPTiBDT05TVFJBSU5UIGNoZWNrX2NvbiBPTiB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFp bnRzIElTICdjb21lbnQnOworCisKKy0tCistLSBUT0MgZW50cnkgMTIyNTcgKGNsYXNzIDEyNTkg T0lEIDE0ODk2MCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9kZWw7IFR5cGU6IFRBQkxFOyBTY2hlbWE6 IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxl X2Zvcl9kZWwgKAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2RlbCBPV05F UiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI3MSAoY2xhc3MgMTI1OSBPSUQg MTQ5MTcyKQorLS0gTmFtZTogdGFibGVfZm9yX2ZvcmVpZ25fa2V5OyBUeXBlOiBUQUJMRTsgU2No ZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50 YWJsZV9mb3JfZm9yZWlnbl9rZXkgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBj b2wyICJjaGFyIiwKKyAgICBjb2wzIGJpZ2ludAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQu dGFibGVfZm9yX2ZvcmVpZ25fa2V5IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVu dHJ5IDEyMjYzIChjbGFzcyAxMjU5IE9JRCAxNDkwMTMpCistLSBOYW1lOiB0YWJsZV9mb3JfaWRl bnRpY2FsOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0K KworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsICgKKyAgICBjb2wxIGlu dGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdl dC50YWJsZV9mb3JfaWRlbnRpY2FsIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVu dHJ5IDEyMjYxIChjbGFzcyAxMjU5IE9JRCAxNDg5ODYpCistLSBOYW1lOiB0YWJsZV9mb3JfaW5k ZXg7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitD UkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9pbmRleCAoCisgICAgY29sMSBpbnRlZ2VyIE5P VCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVf Zm9yX2luZGV4IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjcwIChj bGFzcyAxMjU5IE9JRCAxNDkxNDQpCistLSBOYW1lOiB0YWJsZV9mb3JfcHJpbWFyeV9rZXk7IFR5 cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUg VEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9wcmltYXJ5X2tleSAoCisgICAgY29sMSBpbnRlZ2VyIE5P VCBOVUxMLAorICAgIGNvbDIgdGV4dCBOT1QgTlVMTAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJn ZXQudGFibGVfZm9yX3ByaW1hcnlfa2V5IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9D IGVudHJ5IDEyMjY1IChjbGFzcyAxMjU5IE9JRCAxNDkwMzQpCistLSBOYW1lOiB0YWJsZV9mb3Jf cnVsZTsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisK K0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3J1bGUgKAorICAgIGNvbDEgYmlnaW50IE5P VCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVf Zm9yX3J1bGUgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjcgKGNs YXNzIDEyNTkgT0lEIDE0OTA2NikKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2VyOyBUeXBlOiBU QUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxF IHRhcmdldC50YWJsZV9mb3JfdHJpZ2dlciAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwsCisg ICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfdHJpZ2dl ciBPV05FUiBUTyBwb3N0Z3JlczsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTA2IChjbGFzcyAy NjA2IE9JRCAxNDkwOTcpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgRXhjbHVzaW9u OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQor CitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQg Q09OU1RSQUlOVCAiRXhjbHVzaW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8Pikg V0lUSCAoZmlsbGZhY3Rvcj0nMTUnKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklU SUFMTFkgREVGRVJSRUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xhc3MgMCBPSUQg MCkKKy0tIERlcGVuZGVuY2llczogNTY5MDYKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lv biIgT04gdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRhcmdl dDsgT3duZXI6IHBvc3RncmVzCistLQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgIkV4Y2x1c2lv biIgT04gdGFyZ2V0LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0t CistLSBUT0MgZW50cnkgNTY5MTAgKGNsYXNzIDI2MDYgT0lEIDE0OTE3NikKKy0tIE5hbWU6IHRh YmxlX2Zvcl9mb3JlaWduX2tleSB0YWJsZV9mb3JfZm9yZWlnbl9rZXlfcGtleTsgVHlwZTogQ09O U1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFC TEUgT05MWSB0YXJnZXQudGFibGVfZm9yX2ZvcmVpZ25fa2V5CisgICAgQUREIENPTlNUUkFJTlQg dGFibGVfZm9yX2ZvcmVpZ25fa2V5X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCist LSBUT0MgZW50cnkgNTY4OTcgKGNsYXNzIDI2MDYgT0lEIDE0ODk5MykKKy0tIE5hbWU6IHRhYmxl X2Zvcl9pbmRleCB0YWJsZV9mb3JfaW5kZXhfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1h OiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQu dGFibGVfZm9yX2luZGV4CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2luZGV4X3BrZXkg UFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDggKGNsYXNzIDI2 MDYgT0lEIDE0OTE1MSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleSB0YWJsZV9mb3Jf cHJpbWFyeV9rZXlfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9yX3ByaW1h cnlfa2V5CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3ByaW1hcnlfa2V5X3BrZXkgUFJJ TUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDIgKGNsYXNzIDI2MDYg T0lEIDE0OTA0MSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9ydWxlIHRhYmxlX2Zvcl9ydWxlX3BrZXk7 IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisK K0FMVEVSIFRBQkxFIE9OTFkgdGFyZ2V0LnRhYmxlX2Zvcl9ydWxlCisgICAgQUREIENPTlNUUkFJ TlQgdGFibGVfZm9yX3J1bGVfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRP QyBlbnRyeSA1NjkwMCAoY2xhc3MgMjYwNiBPSUQgMTQ5MDIwKQorLS0gTmFtZTogdGFibGVfZm9y X2lkZW50aWNhbCB0YWJsZV9mb3JfdGFibGVfZm9yX2lkZW50aWNhbF9wa2V5OyBUeXBlOiBDT05T VFJBSU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJM RSBPTkxZIHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsCisgICAgQUREIENPTlNUUkFJTlQgdGFi bGVfZm9yX3RhYmxlX2Zvcl9pZGVudGljYWxfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKwor LS0KKy0tIFRPQyBlbnRyeSA1NjkwNCAoY2xhc3MgMjYwNiBPSUQgMTQ5MDczKQorLS0gTmFtZTog dGFibGVfZm9yX3RyaWdnZXIgdGFibGVfZm9yX3RyaWdnZXJfcGtleTsgVHlwZTogQ09OU1RSQUlO VDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05M WSB0YXJnZXQudGFibGVfZm9yX3RyaWdnZXIKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3Jf dHJpZ2dlcl9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2 ODkzIChjbGFzcyAxMjU5IE9JRCAxNDg5OTQpCistLSBOYW1lOiBpbmRleDE7IFR5cGU6IElOREVY OyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggaW5k ZXgxIE9OIHRhcmdldC50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0 ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5NCAoY2xhc3MgMTI1OSBPSUQgMTQ4 OTk1KQorLS0gTmFtZTogaW5kZXgyOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIElOREVYIGluZGV4MiBPTiB0YXJnZXQudGFibGVfZm9y X2luZGV4IFVTSU5HIGJ0cmVlIChjb2wyIHRleHRfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBU T0MgZW50cnkgNTY4OTggKGNsYXNzIDEyNTkgT0lEIDE0OTAyMSkKKy0tIE5hbWU6IGluZGV4X2lk ZW50aWNhbDsgVHlwZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0t CisKK0NSRUFURSBJTkRFWCBpbmRleF9pZGVudGljYWwgT04gdGFyZ2V0LnRhYmxlX2Zvcl9pZGVu dGljYWwgVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRP QyBlbnRyeSA1Njg5NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MjEyKQorLS0gTmFtZTogaW5kZXhfc2Ft ZTsgVHlwZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NS RUFURSBJTkRFWCBpbmRleF9zYW1lIE9OIHRhcmdldC50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRy ZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5MiAo Y2xhc3MgMTI1OSBPSUQgMTM5OTQ1KQorLS0gTmFtZTogbXZpZXdfaW5kZXg7IFR5cGU6IElOREVY OyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggbXZp ZXdfaW5kZXggT04gdGFyZ2V0LiJNVmlldyIgVVNJTkcgYnRyZWUgKHRleHQgdGV4dF9wYXR0ZXJu X29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NSAoY2xhc3MgMjYxOCBPSUQgMTQ5MDQy KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogdGFy Z2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUxIEFTCisgICAgT04g VVBEQVRFIFRPIHRhcmdldC50YWJsZV9mb3JfcnVsZSBETyBJTlNURUFEIE5PVEhJTkc7CisKKwor LS0KKy0tIFRPQyBlbnRyeSA2MTA2OSAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczog NjEwNDUKKy0tIE5hbWU6IFJVTEUgcnVsZTEgT04gdGFibGVfZm9yX3J1bGU7IFR5cGU6IENPTU1F TlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gUlVM RSBydWxlMSBPTiB0YXJnZXQudGFibGVfZm9yX3J1bGUgSVMgJ2NvbW1lbnRzJzsKKworCistLQor LS0gVE9DIGVudHJ5IDYxMDQ2IChjbGFzcyAyNjE4IE9JRCAxNDkwNDMpCistLSBOYW1lOiB0YWJs ZV9mb3JfcnVsZSBydWxlMjsgVHlwZTogUlVMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0 Z3JlcworLS0KKworQ1JFQVRFIFJVTEUgcnVsZTIgQVMKKyAgICBPTiBVUERBVEUgVE8gdGFyZ2V0 LnRhYmxlX2Zvcl9ydWxlIERPIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NyAo Y2xhc3MgMjYxOCBPSUQgMTQ5MDQ0KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTM7IFR5 cGU6IFJVTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBS VUxFIHJ1bGUzIEFTCisgICAgT04gSU5TRVJUIFRPIHRhcmdldC50YWJsZV9mb3JfcnVsZSBETyBO T1RISU5HOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNTAgKGNsYXNzIDAgT0lEIDEzOTkzOCkK Ky0tIERlcGVuZGVuY2llczogMTIyNTAgNjEwNjIKKy0tIE5hbWU6IE1WaWV3OyBUeXBlOiBNQVRF UklBTElaRUQgVklFVyBEQVRBOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQor CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHRhcmdldC4iTVZpZXciOworCistLQorLS0gVE9D IGVudHJ5IDEyMjg0IChjbGFzcyAxMjU5IE9JRCAzNDc4MjMpCistLSBOYW1lOiB0ZXN0IHZpZXc7 IFR5cGU6IFZJRVc7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFU RSBWSUVXIHRhcmdldC4idGVzdCB2aWV3IiBBUworIFNFTEVDVCBwZ19jbGFzcy5yZWxuYW1lLAor ICAgIHBnX2NsYXNzLnJlbG5hbWVzcGFjZSwKKyAgICBwZ19jbGFzcy5yZWx0eXBlLAorICAgIHBn X2NsYXNzLnJlbG9mdHlwZSwKKyAgICBwZ19jbGFzcy5yZWxvd25lciwKKyAgICBwZ19jbGFzcy5y ZWxhbSwKKyAgICBwZ19jbGFzcy5yZWxmaWxlbm9kZSwKKyAgICBwZ19jbGFzcy5yZWx0YWJsZXNw YWNlLAorICAgIHBnX2NsYXNzLnJlbHBhZ2VzCisgICBGUk9NIHBnX2NsYXNzCisgTElNSVQgMTA7 CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LiJ0ZXN0IHZpZXciIE9XTkVSIFRPIHBvc3RncmVzOwor CistLQorLS0gVE9DIGVudHJ5IDEyMjg1IChjbGFzcyAxMjU5IE9JRCAzNDc4MjgpCistLSBOYW1l OiB0ZXN0IHZpZXcgZjsgVHlwZTogVklFVzsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3Jl cworLS0KKworQ1JFQVRFIFZJRVcgdGFyZ2V0LiJ0ZXN0IHZpZXcgZiIgV0lUSCAoc2VjdXJpdHlf YmFycmllcj0ndHJ1ZScpIEFTCisgU0VMRUNUIDI7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LiJ0 ZXN0IHZpZXcgZiIgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgNjExMDUg KGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEyMjg1CistLSBOYW1lOiBWSUVXICJ0 ZXN0IHZpZXcgZiI7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdy ZXMKKy0tCisKK0NPTU1FTlQgT04gVklFVyB0YXJnZXQuInRlc3QgdmlldyBmIiBJUyAnY21uJzsK KworCistLQorLS0gVE9DIGVudHJ5IDQzNyAoY2xhc3MgMTI1NSBPSUQgMTEyOTA3KQorLS0gTmFt ZTogZG9kYWpfa2xpamVudGEoY2hhcmFjdGVyIHZhcnlpbmcsIGNoYXJhY3RlciB2YXJ5aW5nLCBj aGFyYWN0ZXIgdmFyeWluZywgY2hhcmFjdGVyIHZhcnlpbmcsIGludGVnZXIsIGNoYXJhY3RlciB2 YXJ5aW5nLCBjaGFyYWN0ZXIgdmFyeWluZywgY2hhcmFjdGVyIHZhcnlpbmcsIGJvb2xlYW4sIGJv b2xlYW4sIGNoYXJhY3RlciB2YXJ5aW5nLCBjaGFyYWN0ZXIgdmFyeWluZywgY2hhcmFjdGVyIHZh cnlpbmcsIGNoYXJhY3RlciB2YXJ5aW5nLCBudW1lcmljLCBjaGFyYWN0ZXIgdmFyeWluZyk7IFR5 cGU6IFBST0NFRFVSRTsgU2NoZW1hOiB0YXJnZXQgc2NoZW1hOyBPd25lcjogcG9zdGdyZXMKKy0t CisKK0NSRUFURSBQUk9DRURVUkUgdGFyZ2V0LmRvZGFqX2tsaWplbnRhKHZfbmF6aXYgY2hhcmFj dGVyIHZhcnlpbmcsIHZfb2liIGNoYXJhY3RlciB2YXJ5aW5nLCB2X3Bkdl9pZCBjaGFyYWN0ZXIg dmFyeWluZywgdl9hZHJlc2EgY2hhcmFjdGVyIHZhcnlpbmcsIHZfbWplc3RvIGludGVnZXIsIHZf ZHJ6YXZhIGNoYXJhY3RlciB2YXJ5aW5nLCB2X3RpcF9wX3N1YiBjaGFyYWN0ZXIgdmFyeWluZywg dl92bGFzbmlrIGNoYXJhY3RlciB2YXJ5aW5nLCB2X3BkdiBib29sZWFuLCB2X2Zpc2sgYm9vbGVh biwgdl9pYmFuIGNoYXJhY3RlciB2YXJ5aW5nLCB2X2tfb3NvYmEgY2hhcmFjdGVyIHZhcnlpbmcs IHZfZW1haWwgY2hhcmFjdGVyIHZhcnlpbmcsIHZfYnJfdGVsIGNoYXJhY3RlciB2YXJ5aW5nLCB2 X3JhZG5hX2dvZCBudW1lcmljLCB2X3NjaGVtYSBjaGFyYWN0ZXIgdmFyeWluZykKKyAgICBMQU5H VUFHRSBzcWwKKyAgICBBUyAkJHNlbGVjdCA0OyQkOworCisKK0FMVEVSIFBST0NFRFVSRSB0YXJn ZXQuZG9kYWpfa2xpamVudGEodl9uYXppdiBjaGFyYWN0ZXIgdmFyeWluZywgdl9vaWIgY2hhcmFj dGVyIHZhcnlpbmcsIHZfcGR2X2lkIGNoYXJhY3RlciB2YXJ5aW5nLCB2X2FkcmVzYSBjaGFyYWN0 ZXIgdmFyeWluZywgdl9tamVzdG8gaW50ZWdlciwgdl9kcnphdmEgY2hhcmFjdGVyIHZhcnlpbmcs IHZfdGlwX3Bfc3ViIGNoYXJhY3RlciB2YXJ5aW5nLCB2X3ZsYXNuaWsgY2hhcmFjdGVyIHZhcnlp bmcsIHZfcGR2IGJvb2xlYW4sIHZfZmlzayBib29sZWFuLCB2X2liYW4gY2hhcmFjdGVyIHZhcnlp bmcsIHZfa19vc29iYSBjaGFyYWN0ZXIgdmFyeWluZywgdl9lbWFpbCBjaGFyYWN0ZXIgdmFyeWlu Zywgdl9icl90ZWwgY2hhcmFjdGVyIHZhcnlpbmcsIHZfcmFkbmFfZ29kIG51bWVyaWMsIHZfc2No ZW1hIGNoYXJhY3RlciB2YXJ5aW5nKSBPV05FUiBUTyBwb3N0Z3JlczsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzkuMl9wbHVzL3NvdXJjZS5zcWwg Yi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wZy85LjJfcGx1cy9zb3VyY2Uu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYWY5MDU0ZWViCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMvcGcvOS4y X3BsdXMvc291cmNlLnNxbApAQCAtMCwwICsxLDMxMSBAQAorLS0KKy0tIFBvc3RncmVTUUwgZGF0 YWJhc2UgZHVtcAorLS0KKworLS0gRHVtcGVkIGZyb20gZGF0YWJhc2UgdmVyc2lvbiAxMC43Cist LSBEdW1wZWQgYnkgcGdfZHVtcCB2ZXJzaW9uIDEyYmV0YTIKKworLS0gU3RhcnRlZCBvbiAyMDE5 LTExLTAxIDEyOjU0OjE1IElTVAorCitTRVQgc3RhdGVtZW50X3RpbWVvdXQgPSAwOworU0VUIGxv Y2tfdGltZW91dCA9IDA7CitTRVQgY2xpZW50X2VuY29kaW5nID0gJ1VURjgnOworU0VUIHN0YW5k YXJkX2NvbmZvcm1pbmdfc3RyaW5ncyA9IG9uOworU0VMRUNUIHBnX2NhdGFsb2cuc2V0X2NvbmZp Zygnc2VhcmNoX3BhdGgnLCAnJywgZmFsc2UpOworU0VUIGNoZWNrX2Z1bmN0aW9uX2JvZGllcyA9 IGZhbHNlOworU0VUIHhtbG9wdGlvbiA9IGNvbnRlbnQ7CitTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9IHdhcm5pbmc7CisKKy0tCistLSBUT0MgZW50cnkgMTcgKGNsYXNzIDI2MTUgT0lEIDEzOTc3 MCkKKy0tIE5hbWU6IHNvdXJjZTsgVHlwZTogU0NIRU1BOyBTY2hlbWE6IC07IE93bmVyOiBwb3N0 Z3JlcworLS0KKworQ1JFQVRFIFNDSEVNQSBzb3VyY2U7CisKKworQUxURVIgU0NIRU1BIHNvdXJj ZSBPV05FUiBUTyBwb3N0Z3JlczsKKworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSA9ICcnOworCisK K0NSRUFURSBFWFRFTlNJT04gYnRyZWVfZ2lzdAorICAgIFNDSEVNQSBzb3VyY2U7CisKKworLS0K Ky0tIFRPQyBlbnRyeSAxMjI1OCAoY2xhc3MgMTI1OSBPSUQgMTQ4OTYzKQorLS0gTmFtZTogdGFi bGVfZm9yX2NvbHVtbjsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdy ZXMKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbHVtbiAoCisgICAgY29s MSBiaWdpbnQgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0LAorICAgIGNvbDMgdGV4dAorKTsKKwor CitBTFRFUiBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbHVtbiBPV05FUiBUTyBwb3N0Z3JlczsK KworLS0KKy0tIFRPQyBlbnRyeSAxMjI1NiAoY2xhc3MgMTI1OSBPSUQgMTQ4ODk1KQorLS0gTmFt ZTogdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93 bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfY29uc3Ry YWludHMgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisK KworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9jb25zdHJhaW50cyBPV05FUiBUTyBwb3N0 Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2NiAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVu ZGVuY2llczogMTIyNTYKKy0tIE5hbWU6IFRBQkxFIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlw ZTogQ09NTUVOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVO VCBPTiBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21tZW50cyc7CisK KworLS0KKy0tIFRPQyBlbnRyeSAxMjI2MiAoY2xhc3MgMTI1OSBPSUQgMTQ5MDA0KQorLS0gTmFt ZTogdGFibGVfZm9yX2lkZW50aWNhbDsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25l cjogcG9zdGdyZXM7CistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pZGVudGlj YWwgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKwor QUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pZGVudGljYWwgT1dORVIgVE8gcG9zdGdyZXM7 OworCistLQorLS0gVE9DIGVudHJ5IDEyMjYwIChjbGFzcyAxMjU5IE9JRCAxNDg5NzcpCistLSBO YW1lOiB0YWJsZV9mb3JfaW5kZXg7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6 IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pbmRleCAoCisg ICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBU QUJMRSBzb3VyY2UudGFibGVfZm9yX2luZGV4IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0g VE9DIGVudHJ5IDEyMjY5IChjbGFzcyAxMjU5IE9JRCAxNDkxMjgpCistLSBOYW1lOiB0YWJsZV9m b3JfcHJpbWFyeV9rZXk7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3Rn cmVzCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wcmltYXJ5X2tleSAoCisg ICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dCBOT1QgTlVMTAorKTsKKwor CitBTFRFUiBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3ByaW1hcnlfa2V5IE9XTkVSIFRPIHBvc3Rn cmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjY0IChjbGFzcyAxMjU5IE9JRCAxNDkwMjQpCist LSBOYW1lOiB0YWJsZV9mb3JfcnVsZTsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25l cjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3J1bGUgKAor ICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBU QUJMRSBzb3VyY2UudGFibGVfZm9yX3J1bGUgT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBU T0MgZW50cnkgMTIyNjYgKGNsYXNzIDEyNTkgT0lEIDE0OTA0OCkKKy0tIE5hbWU6IHRhYmxlX2Zv cl90cmlnZ2VyOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3Jlcwor LS0KKworQ1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfdHJpZ2dlciAoCisgICAgY29sMSBi aWdpbnQgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJj ZS50YWJsZV9mb3JfdHJpZ2dlciBPV05FUiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRy eSA1Njg5MyAoY2xhc3MgMjYwNiBPSUQgMTQ4OTA0KQorLS0gTmFtZTogdGFibGVfZm9yX2NvbnN0 cmFpbnRzIEV4Y2x1c2lvbjsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2NvbnN0 cmFpbnRzCisgICAgQUREIENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgRVhDTFVERSBVU0lORyBnaXN0 IChjb2wyIFdJVEggPD4pIFdJVEggKGZpbGxmYWN0b3I9JzEyJykgV0hFUkUgKChjb2wxID4gMSkp IERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOworCisKKy0tCistLSBUT0MgZW50cnkgNjEw NjcgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDU2ODkzCistLSBOYW1lOiBDT05T VFJBSU5UICJFeGNsdXNpb24iIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVO VDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBDT05T VFJBSU5UICJFeGNsdXNpb24iIE9OIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2Nv bW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODkxIChjbGFzcyAyNjA2IE9JRCAxNDg5 MTEpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgY2hlY2tfY29uOyBUeXBlOiBDSEVD SyBDT05TVFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRF UiBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzCisgICAgQUREIENPTlNUUkFJTlQg Y2hlY2tfY29uIENIRUNLICgoY29sMSA+IDEwKSkgTk9UIFZBTElEOworCisKKy0tCistLSBUT0Mg ZW50cnkgNjEwNjggKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDU2ODkxCistLSBO YW1lOiBDT05TVFJBSU5UIGNoZWNrX2NvbiBPTiB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6 IENPTU1FTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQg T04gQ09OU1RSQUlOVCBjaGVja19jb24gT04gc291cmNlLnRhYmxlX2Zvcl9jb25zdHJhaW50cyBJ UyAnY29tZW50JzsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODk5IChjbGFzcyAyNjA2IE9JRCAx NDg5NzApCistLSBOYW1lOiB0YWJsZV9mb3JfY29sdW1uIHRhYmxlX2Zvcl9jb2x1bW5fcGtleTsg VHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKwor QUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2NvbHVtbgorICAgIEFERCBDT05TVFJB SU5UIHRhYmxlX2Zvcl9jb2x1bW5fcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0t IFRPQyBlbnRyeSA1Njg5NSAoY2xhc3MgMjYwNiBPSUQgMTQ4OTAyKQorLS0gTmFtZTogdGFibGVf Zm9yX2NvbnN0cmFpbnRzIHRhYmxlX2Zvcl9jb25zdHJhaW50c19wa2V5OyBUeXBlOiBDT05TVFJB SU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBP TkxZIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJs ZV9mb3JfY29uc3RyYWludHNfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRP QyBlbnRyeSA1NjkwNCAoY2xhc3MgMjYwNiBPSUQgMTQ4OTg0KQorLS0gTmFtZTogdGFibGVfZm9y X2luZGV4IHRhYmxlX2Zvcl9pbmRleF9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNv dXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJs ZV9mb3JfaW5kZXgKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfaW5kZXhfcGtleSBQUklN QVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkxMyAoY2xhc3MgMjYwNiBP SUQgMTQ5MTM1KQorLS0gTmFtZTogdGFibGVfZm9yX3ByaW1hcnlfa2V5IHRhYmxlX2Zvcl9wcmlt YXJ5X2tleV9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBv c3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfcHJpbWFyeV9r ZXkKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfcHJpbWFyeV9rZXlfcGtleSBQUklNQVJZ IEtFWSAoY29sMSwgY29sMik7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwOSAoY2xhc3MgMjYw NiBPSUQgMTQ5MDMxKQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgdGFibGVfZm9yX3J1bGVfcGtl eTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0K KworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX3J1bGUKKyAgICBBREQgQ09OU1RS QUlOVCB0YWJsZV9mb3JfcnVsZV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0g VE9DIGVudHJ5IDU2OTA3IChjbGFzcyAyNjA2IE9JRCAxNDkwMTEpCistLSBOYW1lOiB0YWJsZV9m b3JfaWRlbnRpY2FsIHRhYmxlX2Zvcl90YWJsZV9mb3JfaWRlbnRpY2FsX3BrZXk7IFR5cGU6IENP TlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXM7CistLQorCitBTFRFUiBU QUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfaWRlbnRpY2FsCisgICAgQUREIENPTlNUUkFJTlQg dGFibGVfZm9yX3RhYmxlX2Zvcl9pZGVudGljYWxfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisK KworLS0KKy0tIFRPQyBlbnRyeSA1NjkxMSAoY2xhc3MgMjYwNiBPSUQgMTQ5MDU1KQorLS0gTmFt ZTogdGFibGVfZm9yX3RyaWdnZXIgdGFibGVfZm9yX3RyaWdnZXJfcGtleTsgVHlwZTogQ09OU1RS QUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUg T05MWSBzb3VyY2UudGFibGVfZm9yX3RyaWdnZXIKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9m b3JfdHJpZ2dlcl9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5 IDU2ODk3IChjbGFzcyAyNjA2IE9JRCAxNDg5MTMpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3Ry YWludHMgdW5pcXVlOyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBv c3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWlu dHMKKyAgICBBREQgQ09OU1RSQUlOVCAidW5pcXVlIiBVTklRVUUgKGNvbDEpOworCisKKy0tCist LSBUT0MgZW50cnkgNjEwNjkgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDU2ODk3 CistLSBOYW1lOiBDT05TVFJBSU5UICJ1bmlxdWUiIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50czsg VHlwZTogQ09NTUVOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09N TUVOVCBPTiBDT05TVFJBSU5UICJ1bmlxdWUiIE9OIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWlu dHMgSVMgJ2NtbnQnOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDAgKGNsYXNzIDEyNTkgT0lE IDE0OTAyMykKKy0tIE5hbWU6IGluZGV4MTsgVHlwZTogSU5ERVg7IFNjaGVtYTogc291cmNlOyBP d25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBJTkRFWCBpbmRleDEgT04gc291cmNlLnRhYmxl X2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB2YXJjaGFyX3BhdHRlcm5fb3BzKTsKKworCist LQorLS0gVE9DIGVudHJ5IDU2OTA1IChjbGFzcyAxMjU5IE9JRCAxNDkwMTIpCistLSBOYW1lOiBp bmRleF9pZGVudGljYWw7IFR5cGU6IElOREVYOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3Rn cmVzOworLS0KKworQ1JFQVRFIElOREVYIGluZGV4X2lkZW50aWNhbCBPTiBzb3VyY2UudGFibGVf Zm9yX2lkZW50aWNhbCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCist LQorLS0gVE9DIGVudHJ5IDU2OTAxIChjbGFzcyAxMjU5IE9JRCAxNDkyMTEpCistLSBOYW1lOiBp bmRleF9zYW1lOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBwb3N0Z3Jlcwor LS0KKworQ1JFQVRFIElOREVYIGluZGV4X3NhbWUgT04gc291cmNlLnRhYmxlX2Zvcl9pbmRleCBV U0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5 IDU2OTAyIChjbGFzcyAxMjU5IE9JRCAxNDkwMjIpCistLSBOYW1lOiBpbmRleF9zb3VyY2U7IFR5 cGU6IElOREVYOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUg SU5ERVggaW5kZXhfc291cmNlIE9OIHNvdXJjZS50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUg KGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NCAoY2xh c3MgMjYxOCBPSUQgMTQ5MDMyKQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTE7IFR5cGU6 IFJVTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBSVUxF IHJ1bGUxIEFTCisgICAgT04gVVBEQVRFIFRPIHNvdXJjZS50YWJsZV9mb3JfcnVsZSBETyBJTlNU RUFEIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA3MCAoY2xhc3MgMCBPSUQgMCkK Ky0tIERlcGVuZGVuY2llczogNjEwNDQKKy0tIE5hbWU6IFJVTEUgcnVsZTEgT04gdGFibGVfZm9y X3J1bGU7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogcG9zdGdyZXMKKy0t CisKK0NPTU1FTlQgT04gUlVMRSBydWxlMSBPTiBzb3VyY2UudGFibGVfZm9yX3J1bGUgSVMgJ2Nv bW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDQ1IChjbGFzcyAyNjE4IE9JRCAxNDkw MzMpCistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZSBydWxlMjsgVHlwZTogUlVMRTsgU2NoZW1hOiBz b3VyY2U7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFJVTEUgcnVsZTIgQVMKKyAgICBP TiBJTlNFUlQgVE8gc291cmNlLnRhYmxlX2Zvcl9ydWxlIERPIE5PVEhJTkc7CisKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzkuMl9wbHVzL3Rhcmdl dC5zcWwgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wZy85LjJfcGx1cy90 YXJnZXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZGRjNGZkYTI4 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMv cGcvOS4yX3BsdXMvdGFyZ2V0LnNxbApAQCAtMCwwICsxLDMzNyBAQAorLS0KKy0tIFBvc3RncmVT UUwgZGF0YWJhc2UgZHVtcAorLS0KKworLS0gRHVtcGVkIGZyb20gZGF0YWJhc2UgdmVyc2lvbiAx MC43CistLSBEdW1wZWQgYnkgcGdfZHVtcCB2ZXJzaW9uIDEyYmV0YTIKKworLS0gU3RhcnRlZCBv biAyMDE5LTExLTAxIDEyOjU1OjIyIElTVAorCitTRVQgc3RhdGVtZW50X3RpbWVvdXQgPSAwOwor U0VUIGxvY2tfdGltZW91dCA9IDA7CitTRVQgY2xpZW50X2VuY29kaW5nID0gJ1VURjgnOworU0VU IHN0YW5kYXJkX2NvbmZvcm1pbmdfc3RyaW5ncyA9IG9uOworU0VMRUNUIHBnX2NhdGFsb2cuc2V0 X2NvbmZpZygnc2VhcmNoX3BhdGgnLCAnJywgZmFsc2UpOworU0VUIGNoZWNrX2Z1bmN0aW9uX2Jv ZGllcyA9IGZhbHNlOworU0VUIHhtbG9wdGlvbiA9IGNvbnRlbnQ7CitTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyA9IHdhcm5pbmc7CisKKy0tCistLSBUT0MgZW50cnkgMTggKGNsYXNzIDI2MTUgT0lE IDEzOTc3MSkKKy0tIE5hbWU6IHRhcmdldDsgVHlwZTogU0NIRU1BOyBTY2hlbWE6IC07IE93bmVy OiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFNDSEVNQSB0YXJnZXQ7CisKKworQUxURVIgU0NIRU1B IHRhcmdldCBPV05FUiBUTyBwb3N0Z3JlczsKKworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSA9ICcn OworCitDUkVBVEUgRVhURU5TSU9OIGJ0cmVlX2dpc3QKKyAgICBTQ0hFTUEgdGFyZ2V0OworCist LQorLS0gVE9DIGVudHJ5IDEyMjUwIChjbGFzcyAxMjU5IE9JRCAxMzk5MzgpCistLSBOYW1lOiBN VmlldzsgVHlwZTogTUFURVJJQUxJWkVEIFZJRVc7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9z dGdyZXMKKy0tCisKK0NSRUFURSBNQVRFUklBTElaRUQgVklFVyB0YXJnZXQuIk1WaWV3IiBBUwor IFNFTEVDVCAndGVrc3QnOjp0ZXh0IEFTIHRleHQKKyAgV0lUSCBOTyBEQVRBOworCisKK0FMVEVS IFRBQkxFIHRhcmdldC4iTVZpZXciIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVu dHJ5IDEyMjU5IChjbGFzcyAxMjU5IE9JRCAxNDg5NzEpCistLSBOYW1lOiB0YWJsZV9mb3JfY29s dW1uOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKwor Q1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfY29sdW1uICgKKyAgICBjb2wxIGJpZ2ludCwK KyAgICBjb2wyIGJpZ2ludCwKKyAgICBjb2w0IHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgdGFy Z2V0LnRhYmxlX2Zvcl9jb2x1bW4gT1dORVIgVE8gcG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50 cnkgMTIyNjggKGNsYXNzIDEyNTkgT0lEIDE0OTA4OSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25z dHJhaW50czsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0t CisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRzICgKKyAgICBjb2wx IGludGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0LAorICAgIENPTlNUUkFJTlQgY2hlY2tf Y29uIENIRUNLICgoY29sMSA+IDMwKSkKKyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxl X2Zvcl9jb25zdHJhaW50cyBPV05FUiBUTyBwb3N0Z3JlczsKKworLS0KKy0tIFRPQyBlbnRyeSA2 MTA2NiAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogMTIyNjgKKy0tIE5hbWU6IFRB QkxFIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVOVDsgU2NoZW1hOiB0YXJnZXQ7 IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBUQUJMRSB0YXJnZXQudGFibGVfZm9y X2NvbnN0cmFpbnRzIElTICdjb21tZW50cyc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2NyAo Y2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogMTIyNjgKKy0tIE5hbWU6IENPTlNUUkFJ TlQgY2hlY2tfY29uIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVOVDsgU2No ZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5U IGNoZWNrX2NvbiBPTiB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21lbnQnOwor CisKKy0tCistLSBUT0MgZW50cnkgMTIyNTcgKGNsYXNzIDEyNTkgT0lEIDE0ODk2MCkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9kZWw7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBv c3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9kZWwgKAorKTsKKwor CitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2RlbCBPV05FUiBUTyBwb3N0Z3JlczsKKwor LS0KKy0tIFRPQyBlbnRyeSAxMjI3MSAoY2xhc3MgMTI1OSBPSUQgMTQ5MTcyKQorLS0gTmFtZTog dGFibGVfZm9yX2ZvcmVpZ25fa2V5OyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfZm9yZWlnbl9r ZXkgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyICJjaGFyIiwKKyAgICBj b2wzIGJpZ2ludAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2ZvcmVpZ25f a2V5IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjYzIChjbGFzcyAx MjU5IE9JRCAxNDkwMTMpCistLSBOYW1lOiB0YWJsZV9mb3JfaWRlbnRpY2FsOyBUeXBlOiBUQUJM RTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRh cmdldC50YWJsZV9mb3JfaWRlbnRpY2FsICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisg ICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfaWRlbnRp Y2FsIE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjYxIChjbGFzcyAx MjU5IE9JRCAxNDg5ODYpCistLSBOYW1lOiB0YWJsZV9mb3JfaW5kZXg7IFR5cGU6IFRBQkxFOyBT Y2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0 LnRhYmxlX2Zvcl9pbmRleCAoCisgICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIg dGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2luZGV4IE9XTkVSIFRP IHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjcwIChjbGFzcyAxMjU5IE9JRCAxNDkx NDQpCistLSBOYW1lOiB0YWJsZV9mb3JfcHJpbWFyeV9rZXk7IFR5cGU6IFRBQkxFOyBTY2hlbWE6 IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxl X2Zvcl9wcmltYXJ5X2tleSAoCisgICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIg dGV4dCBOT1QgTlVMTAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3ByaW1h cnlfa2V5IE9XTkVSIFRPIHBvc3RncmVzOworCistLQorLS0gVE9DIGVudHJ5IDEyMjY1IChjbGFz cyAxMjU5IE9JRCAxNDkwMzQpCistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZTsgVHlwZTogVEFCTEU7 IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBUQUJMRSB0YXJn ZXQudGFibGVfZm9yX3J1bGUgKAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNvbDIg dGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3J1bGUgT1dORVIgVE8g cG9zdGdyZXM7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjcgKGNsYXNzIDEyNTkgT0lEIDE0OTA2 NikKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2VyOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJn ZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3Jf dHJpZ2dlciAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOwor CisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfdHJpZ2dlciBPV05FUiBUTyBwb3N0Z3Jl czsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTA2IChjbGFzcyAyNjA2IE9JRCAxNDkwOTcpCist LSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgRXhjbHVzaW9uOyBUeXBlOiBDT05TVFJBSU5U OyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZ IHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCAiRXhjbHVz aW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8PikgV0lUSCAoZmlsbGZhY3Rvcj0n MTUnKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisK KworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2ll czogNTY5MDYKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gdGFibGVfZm9yX2Nv bnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVz CistLQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gdGFyZ2V0LnRhYmxl X2Zvcl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5 MTAgKGNsYXNzIDI2MDYgT0lEIDE0OTE3NikKKy0tIE5hbWU6IHRhYmxlX2Zvcl9mb3JlaWduX2tl eSB0YWJsZV9mb3JfZm9yZWlnbl9rZXlfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0 YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFi bGVfZm9yX2ZvcmVpZ25fa2V5CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2ZvcmVpZ25f a2V5X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY4OTcg KGNsYXNzIDI2MDYgT0lEIDE0ODk5MykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pbmRleCB0YWJsZV9m b3JfaW5kZXhfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBw b3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9yX2luZGV4Cisg ICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2luZGV4X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEp OworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDggKGNsYXNzIDI2MDYgT0lEIDE0OTE1MSkKKy0t IE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleSB0YWJsZV9mb3JfcHJpbWFyeV9rZXlfcGtleTsg VHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKwor QUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9yX3ByaW1hcnlfa2V5CisgICAgQUREIENP TlNUUkFJTlQgdGFibGVfZm9yX3ByaW1hcnlfa2V5X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOwor CisKKy0tCistLSBUT0MgZW50cnkgNTY5MDIgKGNsYXNzIDI2MDYgT0lEIDE0OTA0MSkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9ydWxlIHRhYmxlX2Zvcl9ydWxlX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7 IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkg dGFyZ2V0LnRhYmxlX2Zvcl9ydWxlCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3J1bGVf cGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwMCAoY2xh c3MgMjYwNiBPSUQgMTQ5MDIwKQorLS0gTmFtZTogdGFibGVfZm9yX2lkZW50aWNhbCB0YWJsZV9m b3JfdGFibGVfZm9yX2lkZW50aWNhbF9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHRh cmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJs ZV9mb3JfaWRlbnRpY2FsCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3RhYmxlX2Zvcl9p ZGVudGljYWxfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1 NjkwNCAoY2xhc3MgMjYwNiBPSUQgMTQ5MDczKQorLS0gTmFtZTogdGFibGVfZm9yX3RyaWdnZXIg dGFibGVfZm9yX3RyaWdnZXJfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7 IE93bmVyOiBwb3N0Z3JlcworLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9y X3RyaWdnZXIKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfdHJpZ2dlcl9wa2V5IFBSSU1B UlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODkzIChjbGFzcyAxMjU5IE9J RCAxNDg5OTQpCistLSBOYW1lOiBpbmRleDE7IFR5cGU6IElOREVYOyBTY2hlbWE6IHRhcmdldDsg T3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggaW5kZXgxIE9OIHRhcmdldC50YWJs ZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0K Ky0tIFRPQyBlbnRyeSA1Njg5NCAoY2xhc3MgMTI1OSBPSUQgMTQ4OTk1KQorLS0gTmFtZTogaW5k ZXgyOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKwor Q1JFQVRFIElOREVYIGluZGV4MiBPTiB0YXJnZXQudGFibGVfZm9yX2luZGV4IFVTSU5HIGJ0cmVl IChjb2wyIHRleHRfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY4OTggKGNs YXNzIDEyNTkgT0lEIDE0OTAyMSkKKy0tIE5hbWU6IGluZGV4X2lkZW50aWNhbDsgVHlwZTogSU5E RVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBJTkRFWCBp bmRleF9pZGVudGljYWwgT04gdGFyZ2V0LnRhYmxlX2Zvcl9pZGVudGljYWwgVVNJTkcgYnRyZWUg KGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5NSAoY2xh c3MgMTI1OSBPSUQgMTQ5MjEyKQorLS0gTmFtZTogaW5kZXhfc2FtZTsgVHlwZTogSU5ERVg7IFNj aGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBJTkRFWCBpbmRleF9z YW1lIE9OIHRhcmdldC50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0 ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5MiAoY2xhc3MgMTI1OSBPSUQgMTM5 OTQ1KQorLS0gTmFtZTogbXZpZXdfaW5kZXg7IFR5cGU6IElOREVYOyBTY2hlbWE6IHRhcmdldDsg T3duZXI6IHBvc3RncmVzCistLQorCitDUkVBVEUgSU5ERVggbXZpZXdfaW5kZXggT04gdGFyZ2V0 LiJNVmlldyIgVVNJTkcgYnRyZWUgKHRleHQgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0t IFRPQyBlbnRyeSA2MTA0NSAoY2xhc3MgMjYxOCBPSUQgMTQ5MDQyKQorLS0gTmFtZTogdGFibGVf Zm9yX3J1bGUgcnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogcG9zdGdy ZXMKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUxIEFTCisgICAgT04gVVBEQVRFIFRPIHRhcmdldC50 YWJsZV9mb3JfcnVsZSBETyBJTlNURUFEIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2 MTA2OSAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogNjEwNDUKKy0tIE5hbWU6IFJV TEUgcnVsZTEgT04gdGFibGVfZm9yX3J1bGU7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogdGFyZ2V0 OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NPTU1FTlQgT04gUlVMRSBydWxlMSBPTiB0YXJnZXQu dGFibGVfZm9yX3J1bGUgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDQ2 IChjbGFzcyAyNjE4IE9JRCAxNDkwNDMpCistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZSBydWxlMjsg VHlwZTogUlVMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBwb3N0Z3JlcworLS0KKworQ1JFQVRF IFJVTEUgcnVsZTIgQVMKKyAgICBPTiBVUERBVEUgVE8gdGFyZ2V0LnRhYmxlX2Zvcl9ydWxlIERP IE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NyAoY2xhc3MgMjYxOCBPSUQgMTQ5 MDQ0KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTM7IFR5cGU6IFJVTEU7IFNjaGVtYTog dGFyZ2V0OyBPd25lcjogcG9zdGdyZXMKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUzIEFTCisgICAg T04gSU5TRVJUIFRPIHRhcmdldC50YWJsZV9mb3JfcnVsZSBETyBOT1RISU5HOworCisKKy0tCist LSBUT0MgZW50cnkgNjEwNTAgKGNsYXNzIDAgT0lEIDEzOTkzOCkKKy0tIERlcGVuZGVuY2llczog MTIyNTAgNjEwNjIKKy0tIE5hbWU6IE1WaWV3OyBUeXBlOiBNQVRFUklBTElaRUQgVklFVyBEQVRB OyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IHBvc3RncmVzCistLQorCitSRUZSRVNIIE1BVEVSSUFM SVpFRCBWSUVXIHRhcmdldC4iTVZpZXciOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv c2NoZW1hX2RpZmYvdGVzdHMvcHBhcy8xMF9wbHVzL3NvdXJjZS5zcWwgYi93ZWIvcGdhZG1pbi90 b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wcGFzLzEwX3BsdXMvc291cmNlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmI2MGRiY2Q1NQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BwYXMvMTBfcGx1cy9zb3VyY2Uu c3FsCkBAIC0wLDAgKzEsMzc2IEBACistLQorLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBkdW1wCist LQorCistLSBEdW1wZWQgZnJvbSBkYXRhYmFzZSB2ZXJzaW9uIDEwLjcKKy0tIER1bXBlZCBieSBw Z19kdW1wIHZlcnNpb24gMTJiZXRhMgorCistLSBTdGFydGVkIG9uIDIwMTktMTEtMDEgMTI6NTQ6 MTUgSVNUCisKK1NFVCBzdGF0ZW1lbnRfdGltZW91dCA9IDA7CitTRVQgbG9ja190aW1lb3V0ID0g MDsKK1NFVCBpZGxlX2luX3RyYW5zYWN0aW9uX3Nlc3Npb25fdGltZW91dCA9IDA7CitTRVQgY2xp ZW50X2VuY29kaW5nID0gJ1VURjgnOworU0VUIHN0YW5kYXJkX2NvbmZvcm1pbmdfc3RyaW5ncyA9 IG9uOworU0VMRUNUIHBnX2NhdGFsb2cuc2V0X2NvbmZpZygnc2VhcmNoX3BhdGgnLCAnJywgZmFs c2UpOworU0VUIGNoZWNrX2Z1bmN0aW9uX2JvZGllcyA9IGZhbHNlOworU0VUIHhtbG9wdGlvbiA9 IGNvbnRlbnQ7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IHdhcm5pbmc7CitTRVQgcm93X3Nl Y3VyaXR5ID0gb2ZmOworCistLQorLS0gVE9DIGVudHJ5IDE3IChjbGFzcyAyNjE1IE9JRCAxMzk3 NzApCistLSBOYW1lOiBzb3VyY2U7IFR5cGU6IFNDSEVNQTsgU2NoZW1hOiAtOyBPd25lcjogZW50 ZXJwcmlzZWRiCistLQorCitDUkVBVEUgU0NIRU1BIHNvdXJjZTsKKworCitBTFRFUiBTQ0hFTUEg c291cmNlIE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSA9 ICcnOworCisKK0NSRUFURSBFWFRFTlNJT04gYnRyZWVfZ2lzdAorICAgIFNDSEVNQSBzb3VyY2U7 CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzIgKGNsYXNzIDEyNTkgT0lEIDE0OTIwNSkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9wYXJ0aXRpb247IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3du ZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfcGFy dGl0aW9uICgKKyAgICBjb2wxIGJpZ2ludCBOT1QgTlVMTAorKQorUEFSVElUSU9OIEJZIFJBTkdF IChjb2wxKTsKKworCitBTFRFUiBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3BhcnRpdGlvbiBPV05F UiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzMgKGNsYXNzIDEyNTkg T0lEIDE0OTIwOCkKKy0tIE5hbWU6IHBhcnQxOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7 IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UucGFydDEgKAor ICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMCispOworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFi bGVfZm9yX3BhcnRpdGlvbiBBVFRBQ0ggUEFSVElUSU9OIHNvdXJjZS5wYXJ0MSBGT1IgVkFMVUVT IEZST00gKCcxJykgVE8gKCcyMycpOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS5wYXJ0MSBPV05F UiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzQgKGNsYXNzIDEyNTkg T0lEIDE0OTIxMykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wYXJ0aXRpb25fMTsgVHlwZTogVEFCTEU7 IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUg c291cmNlLnRhYmxlX2Zvcl9wYXJ0aXRpb25fMSAoCisgICAgY29sMSBiaWdpbnQKKykKK1BBUlRJ VElPTiBCWSBSQU5HRSAoY29sMSk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9w YXJ0aXRpb25fMSBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgMTIy NzUgKGNsYXNzIDEyNTkgT0lEIDE0OTIxNikKKy0tIE5hbWU6IHBhcnQzOyBUeXBlOiBUQUJMRTsg U2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSBz b3VyY2UucGFydDMgKAorICAgIGNvbDEgYmlnaW50CispOworQUxURVIgVEFCTEUgT05MWSBzb3Vy Y2UudGFibGVfZm9yX3BhcnRpdGlvbl8xIEFUVEFDSCBQQVJUSVRJT04gc291cmNlLnBhcnQzIEZP UiBWQUxVRVMgRlJPTSAoJzEnKSBUTyAoJzEwJyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnBh cnQzIE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI3NiAoY2xh c3MgMTI1OSBPSUQgMTQ5MjE5KQorLS0gTmFtZTogcGFydDQ7IFR5cGU6IFRBQkxFOyBTY2hlbWE6 IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHNvdXJjZS5w YXJ0NCAoCisgICAgY29sMSBiaWdpbnQKKyk7CitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJs ZV9mb3JfcGFydGl0aW9uXzEgQVRUQUNIIFBBUlRJVElPTiBzb3VyY2UucGFydDQgRk9SIFZBTFVF UyBGUk9NICgnMTEnKSBUTyAoJzIwJyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnBhcnQ0IE9X TkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI1OCAoY2xhc3MgMTI1 OSBPSUQgMTQ4OTYzKQorLS0gTmFtZTogdGFibGVfZm9yX2NvbHVtbjsgVHlwZTogVEFCTEU7IFNj aGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgc291 cmNlLnRhYmxlX2Zvcl9jb2x1bW4gKAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNv bDIgdGV4dCwKKyAgICBjb2wzIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxl X2Zvcl9jb2x1bW4gT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEy MjU2IChjbGFzcyAxMjU5IE9JRCAxNDg4OTUpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWlu dHM7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0K KworQ1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgKAorICAgIGNvbDEg aW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291 cmNlLnRhYmxlX2Zvcl9jb25zdHJhaW50cyBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCist LSBUT0MgZW50cnkgNjEwNjYgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEyMjU2 CistLSBOYW1lOiBUQUJMRSB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNj aGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDT01NRU5UIE9OIFRBQkxF IHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0g VE9DIGVudHJ5IDEyMjYyIChjbGFzcyAxMjU5IE9JRCAxNDkwMDQpCistLSBOYW1lOiB0YWJsZV9m b3JfaWRlbnRpY2FsOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnBy aXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbCAoCisg ICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBU QUJMRSBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbCBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisK Ky0tCistLSBUT0MgZW50cnkgMTIyNjAgKGNsYXNzIDEyNTkgT0lEIDE0ODk3NykKKy0tIE5hbWU6 IHRhYmxlX2Zvcl9pbmRleDsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50 ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pbmRleCAoCisg ICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBU QUJMRSBzb3VyY2UudGFibGVfZm9yX2luZGV4IE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0K Ky0tIFRPQyBlbnRyeSAxMjI2OSAoY2xhc3MgMTI1OSBPSUQgMTQ5MTI4KQorLS0gTmFtZTogdGFi bGVfZm9yX3ByaW1hcnlfa2V5OyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBl bnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3ByaW1hcnlf a2V5ICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0IE5PVCBOVUxM CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfcHJpbWFyeV9rZXkgT1dORVIg VE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjY0IChjbGFzcyAxMjU5IE9J RCAxNDkwMjQpCistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZTsgVHlwZTogVEFCTEU7IFNjaGVtYTog c291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRh YmxlX2Zvcl9ydWxlICgKKyAgICBjb2wxIGJpZ2ludCBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQK Kyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9ydWxlIE9XTkVSIFRPIGVudGVy cHJpc2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2NiAoY2xhc3MgMTI1OSBPSUQgMTQ5MDQ4 KQorLS0gTmFtZTogdGFibGVfZm9yX3RyaWdnZXI7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJj ZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9m b3JfdHJpZ2dlciAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0Cisp OworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfdHJpZ2dlciBPV05FUiBUTyBlbnRl cnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgNTY4OTMgKGNsYXNzIDI2MDYgT0lEIDE0ODkw NCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50cyBFeGNsdXNpb247IFR5cGU6IENPTlNU UkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBU QUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlO VCAiRXhjbHVzaW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8PikgV0lUSCAoZmls bGZhY3Rvcj0nMTInKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklUSUFMTFkgREVG RVJSRUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2NyAoY2xhc3MgMCBPSUQgMCkKKy0tIERl cGVuZGVuY2llczogNTY4OTMKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gdGFi bGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6 IGVudGVycHJpc2VkYgorLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5UICJFeGNsdXNpb24iIE9O IHNvdXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0g VE9DIGVudHJ5IDU2ODkxIChjbGFzcyAyNjA2IE9JRCAxNDg5MTEpCistLSBOYW1lOiB0YWJsZV9m b3JfY29uc3RyYWludHMgY2hlY2tfY29uOyBUeXBlOiBDSEVDSyBDT05TVFJBSU5UOyBTY2hlbWE6 IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxURVIgVEFCTEUgc291cmNlLnRh YmxlX2Zvcl9jb25zdHJhaW50cworICAgIEFERCBDT05TVFJBSU5UIGNoZWNrX2NvbiBDSEVDSyAo KGNvbDEgPiAxMCkpIE5PVCBWQUxJRDsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDY4IChjbGFz cyAwIE9JRCAwKQorLS0gRGVwZW5kZW5jaWVzOiA1Njg5MQorLS0gTmFtZTogQ09OU1RSQUlOVCBj aGVja19jb24gT04gdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6 IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5U IGNoZWNrX2NvbiBPTiBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21lbnQnOwor CisKKy0tCistLSBUT0MgZW50cnkgNTY4OTkgKGNsYXNzIDI2MDYgT0lEIDE0ODk3MCkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9jb2x1bW4gdGFibGVfZm9yX2NvbHVtbl9wa2V5OyBUeXBlOiBDT05TVFJB SU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxURVIgVEFC TEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2NvbHVtbgorICAgIEFERCBDT05TVFJBSU5UIHRhYmxl X2Zvcl9jb2x1bW5fcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRy eSA1Njg5NSAoY2xhc3MgMjYwNiBPSUQgMTQ4OTAyKQorLS0gTmFtZTogdGFibGVfZm9yX2NvbnN0 cmFpbnRzIHRhYmxlX2Zvcl9jb25zdHJhaW50c19wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hl bWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxURVIgVEFCTEUgT05MWSBz b3VyY2UudGFibGVfZm9yX2NvbnN0cmFpbnRzCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9y X2NvbnN0cmFpbnRzX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50 cnkgNTY5MDQgKGNsYXNzIDI2MDYgT0lEIDE0ODk4NCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9pbmRl eCB0YWJsZV9mb3JfaW5kZXhfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7 IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxl X2Zvcl9pbmRleAorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9pbmRleF9wa2V5IFBSSU1B UlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTEzIChjbGFzcyAyNjA2IE9J RCAxNDkxMzUpCistLSBOYW1lOiB0YWJsZV9mb3JfcHJpbWFyeV9rZXkgdGFibGVfZm9yX3ByaW1h cnlfa2V5X3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50 ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfcHJpbWFy eV9rZXkKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfcHJpbWFyeV9rZXlfcGtleSBQUklN QVJZIEtFWSAoY29sMSwgY29sMik7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwOSAoY2xhc3Mg MjYwNiBPSUQgMTQ5MDMxKQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgdGFibGVfZm9yX3J1bGVf cGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNl ZGIKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9ydWxlCisgICAgQURE IENPTlNUUkFJTlQgdGFibGVfZm9yX3J1bGVfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKwor LS0KKy0tIFRPQyBlbnRyeSA1NjkwNyAoY2xhc3MgMjYwNiBPSUQgMTQ5MDExKQorLS0gTmFtZTog dGFibGVfZm9yX2lkZW50aWNhbCB0YWJsZV9mb3JfdGFibGVfZm9yX2lkZW50aWNhbF9wa2V5OyBU eXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0K KworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbAorICAgIEFERCBD T05TVFJBSU5UIHRhYmxlX2Zvcl90YWJsZV9mb3JfaWRlbnRpY2FsX3BrZXkgUFJJTUFSWSBLRVkg KGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MTEgKGNsYXNzIDI2MDYgT0lEIDE0OTA1 NSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2VyIHRhYmxlX2Zvcl90cmlnZ2VyX3BrZXk7IFR5 cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQor CitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfdHJpZ2dlcgorICAgIEFERCBDT05T VFJBSU5UIHRhYmxlX2Zvcl90cmlnZ2VyX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0t CistLSBUT0MgZW50cnkgNTY4OTcgKGNsYXNzIDI2MDYgT0lEIDE0ODkxMykKKy0tIE5hbWU6IHRh YmxlX2Zvcl9jb25zdHJhaW50cyB1bmlxdWU7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291 cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50 YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCAidW5pcXVlIiBVTklRVUUg KGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNjkgKGNsYXNzIDAgT0lEIDApCistLSBE ZXBlbmRlbmNpZXM6IDU2ODk3CistLSBOYW1lOiBDT05TVFJBSU5UICJ1bmlxdWUiIE9OIHRhYmxl X2Zvcl9jb25zdHJhaW50czsgVHlwZTogQ09NTUVOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBl bnRlcnByaXNlZGIKKy0tCisKK0NPTU1FTlQgT04gQ09OU1RSQUlOVCAidW5pcXVlIiBPTiBzb3Vy Y2UudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjbW50JzsKKworCistLQorLS0gVE9DIGVudHJ5 IDU2OTAwIChjbGFzcyAxMjU5IE9JRCAxNDkwMjMpCistLSBOYW1lOiBpbmRleDE7IFR5cGU6IElO REVYOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIElO REVYIGluZGV4MSBPTiBzb3VyY2UudGFibGVfZm9yX2luZGV4IFVTSU5HIGJ0cmVlIChjb2wyIHZh cmNoYXJfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDUgKGNsYXNzIDEy NTkgT0lEIDE0OTAxMikKKy0tIE5hbWU6IGluZGV4X2lkZW50aWNhbDsgVHlwZTogSU5ERVg7IFNj aGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgSU5ERVggaW5k ZXhfaWRlbnRpY2FsIE9OIHNvdXJjZS50YWJsZV9mb3JfaWRlbnRpY2FsIFVTSU5HIGJ0cmVlIChj b2wyIHRleHRfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDEgKGNsYXNz IDEyNTkgT0lEIDE0OTIxMSkKKy0tIE5hbWU6IGluZGV4X3NhbWU7IFR5cGU6IElOREVYOyBTY2hl bWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIElOREVYIGluZGV4 X3NhbWUgT04gc291cmNlLnRhYmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3Bh dHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAyIChjbGFzcyAxMjU5IE9JRCAx NDkwMjIpCistLSBOYW1lOiBpbmRleF9zb3VyY2U7IFR5cGU6IElOREVYOyBTY2hlbWE6IHNvdXJj ZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIElOREVYIGluZGV4X3NvdXJjZSBP TiBzb3VyY2UudGFibGVfZm9yX2luZGV4IFVTSU5HIGJ0cmVlIChjb2wyIHRleHRfcGF0dGVybl9v cHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNDQgKGNsYXNzIDI2MTggT0lEIDE0OTAzMikK Ky0tIE5hbWU6IHRhYmxlX2Zvcl9ydWxlIHJ1bGUxOyBUeXBlOiBSVUxFOyBTY2hlbWE6IHNvdXJj ZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFJVTEUgcnVsZTEgQVMKKyAgICBP TiBVUERBVEUgVE8gc291cmNlLnRhYmxlX2Zvcl9ydWxlIERPIElOU1RFQUQgTk9USElORzsKKwor CistLQorLS0gVE9DIGVudHJ5IDYxMDcwIChjbGFzcyAwIE9JRCAwKQorLS0gRGVwZW5kZW5jaWVz OiA2MTA0NAorLS0gTmFtZTogUlVMRSBydWxlMSBPTiB0YWJsZV9mb3JfcnVsZTsgVHlwZTogQ09N TUVOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NPTU1FTlQg T04gUlVMRSBydWxlMSBPTiBzb3VyY2UudGFibGVfZm9yX3J1bGUgSVMgJ2NvbW1lbnRzJzsKKwor CistLQorLS0gVE9DIGVudHJ5IDYxMDQ1IChjbGFzcyAyNjE4IE9JRCAxNDkwMzMpCistLSBOYW1l OiB0YWJsZV9mb3JfcnVsZSBydWxlMjsgVHlwZTogUlVMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVy OiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUyIEFTCisgICAgT04gSU5TRVJU IFRPIHNvdXJjZS50YWJsZV9mb3JfcnVsZSBETyBOT1RISU5HOwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMvcHBhcy8xMF9wbHVzL3RhcmdldC5zcWwgYi93 ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wcGFzLzEwX3BsdXMvdGFyZ2V0LnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjU3ZWYwNWQ2YQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3BwYXMvMTBf cGx1cy90YXJnZXQuc3FsCkBAIC0wLDAgKzEsMzY0IEBACistLQorLS0gUG9zdGdyZVNRTCBkYXRh YmFzZSBkdW1wCistLQorCistLSBEdW1wZWQgZnJvbSBkYXRhYmFzZSB2ZXJzaW9uIDEwLjcKKy0t IER1bXBlZCBieSBwZ19kdW1wIHZlcnNpb24gMTJiZXRhMgorCistLSBTdGFydGVkIG9uIDIwMTkt MTEtMDEgMTI6NTU6MjIgSVNUCisKK1NFVCBzdGF0ZW1lbnRfdGltZW91dCA9IDA7CitTRVQgbG9j a190aW1lb3V0ID0gMDsKK1NFVCBpZGxlX2luX3RyYW5zYWN0aW9uX3Nlc3Npb25fdGltZW91dCA9 IDA7CitTRVQgY2xpZW50X2VuY29kaW5nID0gJ1VURjgnOworU0VUIHN0YW5kYXJkX2NvbmZvcm1p bmdfc3RyaW5ncyA9IG9uOworU0VMRUNUIHBnX2NhdGFsb2cuc2V0X2NvbmZpZygnc2VhcmNoX3Bh dGgnLCAnJywgZmFsc2UpOworU0VUIGNoZWNrX2Z1bmN0aW9uX2JvZGllcyA9IGZhbHNlOworU0VU IHhtbG9wdGlvbiA9IGNvbnRlbnQ7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IHdhcm5pbmc7 CitTRVQgcm93X3NlY3VyaXR5ID0gb2ZmOworCistLQorLS0gVE9DIGVudHJ5IDE4IChjbGFzcyAy NjE1IE9JRCAxMzk3NzEpCistLSBOYW1lOiB0YXJnZXQ7IFR5cGU6IFNDSEVNQTsgU2NoZW1hOiAt OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgU0NIRU1BIHRhcmdldDsKKworQUxU RVIgU0NIRU1BIHRhcmdldCBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKK1NFVCBkZWZhdWx0X3Rh Ymxlc3BhY2UgPSAnJzsKKworQ1JFQVRFIEVYVEVOU0lPTiBidHJlZV9naXN0CisgICAgU0NIRU1B IHRhcmdldDsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI1MCAoY2xhc3MgMTI1OSBPSUQgMTM5OTM4 KQorLS0gTmFtZTogTVZpZXc7IFR5cGU6IE1BVEVSSUFMSVpFRCBWSUVXOyBTY2hlbWE6IHRhcmdl dDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXIHRh cmdldC4iTVZpZXciIEFTCisgU0VMRUNUICd0ZWtzdCc6OnRleHQgQVMgdGV4dAorICBXSVRIIE5P IERBVEE7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LiJNVmlldyIgT1dORVIgVE8gZW50ZXJwcmlz ZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjc3IChjbGFzcyAxMjU5IE9JRCAxNDkyMzQpCist LSBOYW1lOiB0YWJsZV9mb3JfcGFydGl0aW9uXzE7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdl dDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9m b3JfcGFydGl0aW9uXzEgKAorICAgIGNvbDEgYmlnaW50CispCitQQVJUSVRJT04gQlkgUkFOR0Ug KGNvbDEpOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcGFydGl0aW9uXzEgT1dO RVIgVE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjc4IChjbGFzcyAxMjU5 IE9JRCAxNDkyMzcpCistLSBOYW1lOiBwYXJ0MzsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0 OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnBhcnQzICgK KyAgICBjb2wxIGJpZ2ludAorKTsKK0FMVEVSIFRBQkxFIE9OTFkgdGFyZ2V0LnRhYmxlX2Zvcl9w YXJ0aXRpb25fMSBBVFRBQ0ggUEFSVElUSU9OIHRhcmdldC5wYXJ0MyBGT1IgVkFMVUVTIEZST00g KCcxMycpIFRPICgnNTYnKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQucGFydDMgT1dORVIgVE8g ZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjU5IChjbGFzcyAxMjU5IE9JRCAx NDg5NzEpCistLSBOYW1lOiB0YWJsZV9mb3JfY29sdW1uOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0 YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFi bGVfZm9yX2NvbHVtbiAoCisgICAgY29sMSBiaWdpbnQsCisgICAgY29sMiBiaWdpbnQsCisgICAg Y29sNCB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfY29sdW1uIE9X TkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2OCAoY2xhc3MgMTI1 OSBPSUQgMTQ5MDg5KQorLS0gTmFtZTogdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBUQUJM RTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJM RSB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRzICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5V TEwsCisgICAgY29sMiB0ZXh0LAorICAgIENPTlNUUkFJTlQgY2hlY2tfY29uIENIRUNLICgoY29s MSA+IDMwKSkKKyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9jb25zdHJhaW50 cyBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgNjEwNjYgKGNsYXNz IDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEyMjY4CistLSBOYW1lOiBUQUJMRSB0YWJsZV9m b3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50 ZXJwcmlzZWRiCistLQorCitDT01NRU5UIE9OIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfY29uc3Ry YWludHMgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDY3IChjbGFzcyAw IE9JRCAwKQorLS0gRGVwZW5kZW5jaWVzOiAxMjI2OAorLS0gTmFtZTogQ09OU1RSQUlOVCBjaGVj a19jb24gT04gdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRh cmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5UIGNo ZWNrX2NvbiBPTiB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRzIElTICdjb21lbnQnOworCisK Ky0tCistLSBUT0MgZW50cnkgMTIyNTcgKGNsYXNzIDEyNTkgT0lEIDE0ODk2MCkKKy0tIE5hbWU6 IHRhYmxlX2Zvcl9kZWw7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVy cHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfZGVsICgKKyk7CisK KworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9kZWwgT1dORVIgVE8gZW50ZXJwcmlzZWRi OworCistLQorLS0gVE9DIGVudHJ5IDEyMjcxIChjbGFzcyAxMjU5IE9JRCAxNDkxNzIpCistLSBO YW1lOiB0YWJsZV9mb3JfZm9yZWlnbl9rZXk7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsg T3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3Jf Zm9yZWlnbl9rZXkgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyICJjaGFy IiwKKyAgICBjb2wzIGJpZ2ludAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9y X2ZvcmVpZ25fa2V5IE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAx MjI2MyAoY2xhc3MgMTI1OSBPSUQgMTQ5MDEzKQorLS0gTmFtZTogdGFibGVfZm9yX2lkZW50aWNh bDsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQor CitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9pZGVudGljYWwgKAorICAgIGNvbDEgaW50 ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0 LnRhYmxlX2Zvcl9pZGVudGljYWwgT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9D IGVudHJ5IDEyMjYxIChjbGFzcyAxMjU5IE9JRCAxNDg5ODYpCistLSBOYW1lOiB0YWJsZV9mb3Jf aW5kZXg7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgor LS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfaW5kZXggKAorICAgIGNvbDEgaW50 ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0 LnRhYmxlX2Zvcl9pbmRleCBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50 cnkgMTIyNzAgKGNsYXNzIDEyNTkgT0lEIDE0OTE0NCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmlt YXJ5X2tleTsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRi CistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9wcmltYXJ5X2tleSAoCisgICAg Y29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dCBOT1QgTlVMTAorKTsKKworCitB TFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3ByaW1hcnlfa2V5IE9XTkVSIFRPIGVudGVycHJp c2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MDM0KQor LS0gTmFtZTogdGFibGVfZm9yX3J1bGU7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3du ZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcnVs ZSAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FM VEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcnVsZSBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisK Ky0tCistLSBUT0MgZW50cnkgMTIyNjcgKGNsYXNzIDEyNTkgT0lEIDE0OTA2NikKKy0tIE5hbWU6 IHRhYmxlX2Zvcl90cmlnZ2VyOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBl bnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3RyaWdnZXIg KAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRF UiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3RyaWdnZXIgT1dORVIgVE8gZW50ZXJwcmlzZWRiOwor CisKKy0tCistLSBUT0MgZW50cnkgNTY5MDYgKGNsYXNzIDI2MDYgT0lEIDE0OTA5NykKKy0tIE5h bWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50cyBFeGNsdXNpb247IFR5cGU6IENPTlNUUkFJTlQ7IFNj aGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZ IHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCAiRXhjbHVz aW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIgV0lUSCA8PikgV0lUSCAoZmlsbGZhY3Rvcj0n MTUnKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisK KworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2ll czogNTY5MDYKKy0tIE5hbWU6IENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gdGFibGVfZm9yX2Nv bnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJp c2VkYgorLS0KKworQ09NTUVOVCBPTiBDT05TVFJBSU5UICJFeGNsdXNpb24iIE9OIHRhcmdldC50 YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5 IDU2OTEwIChjbGFzcyAyNjA2IE9JRCAxNDkxNzYpCistLSBOYW1lOiB0YWJsZV9mb3JfZm9yZWln bl9rZXkgdGFibGVfZm9yX2ZvcmVpZ25fa2V5X3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVt YTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHRh cmdldC50YWJsZV9mb3JfZm9yZWlnbl9rZXkKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3Jf Zm9yZWlnbl9rZXlfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRy eSA1Njg5NyAoY2xhc3MgMjYwNiBPSUQgMTQ4OTkzKQorLS0gTmFtZTogdGFibGVfZm9yX2luZGV4 IHRhYmxlX2Zvcl9pbmRleF9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHRhcmdldDsg T3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVf Zm9yX2luZGV4CisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2luZGV4X3BrZXkgUFJJTUFS WSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDggKGNsYXNzIDI2MDYgT0lE IDE0OTE1MSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleSB0YWJsZV9mb3JfcHJpbWFy eV9rZXlfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRl cnByaXNlZGIKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgdGFyZ2V0LnRhYmxlX2Zvcl9wcmltYXJ5 X2tleQorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zvcl9wcmltYXJ5X2tleV9wa2V5IFBSSU1B UlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAyIChjbGFzcyAyNjA2IE9J RCAxNDkwNDEpCistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZSB0YWJsZV9mb3JfcnVsZV9wa2V5OyBU eXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0K KworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9yX3J1bGUKKyAgICBBREQgQ09OU1RS QUlOVCB0YWJsZV9mb3JfcnVsZV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0g VE9DIGVudHJ5IDU2OTAwIChjbGFzcyAyNjA2IE9JRCAxNDkwMjApCistLSBOYW1lOiB0YWJsZV9m b3JfaWRlbnRpY2FsIHRhYmxlX2Zvcl90YWJsZV9mb3JfaWRlbnRpY2FsX3BrZXk7IFR5cGU6IENP TlNUUkFJTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRF UiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsCisgICAgQUREIENPTlNUUkFJ TlQgdGFibGVfZm9yX3RhYmxlX2Zvcl9pZGVudGljYWxfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7 CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwNCAoY2xhc3MgMjYwNiBPSUQgMTQ5MDczKQorLS0g TmFtZTogdGFibGVfZm9yX3RyaWdnZXIgdGFibGVfZm9yX3RyaWdnZXJfcGtleTsgVHlwZTogQ09O U1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0FMVEVS IFRBQkxFIE9OTFkgdGFyZ2V0LnRhYmxlX2Zvcl90cmlnZ2VyCisgICAgQUREIENPTlNUUkFJTlQg dGFibGVfZm9yX3RyaWdnZXJfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRP QyBlbnRyeSA1Njg5MyAoY2xhc3MgMTI1OSBPSUQgMTQ4OTk0KQorLS0gTmFtZTogaW5kZXgxOyBU eXBlOiBJTkRFWDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NS RUFURSBJTkRFWCBpbmRleDEgT04gdGFyZ2V0LnRhYmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAo Y29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODk0IChjbGFz cyAxMjU5IE9JRCAxNDg5OTUpCistLSBOYW1lOiBpbmRleDI7IFR5cGU6IElOREVYOyBTY2hlbWE6 IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIElOREVYIGluZGV4MiBP TiB0YXJnZXQudGFibGVfZm9yX2luZGV4IFVTSU5HIGJ0cmVlIChjb2wyIHRleHRfcGF0dGVybl9v cHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY4OTggKGNsYXNzIDEyNTkgT0lEIDE0OTAyMSkK Ky0tIE5hbWU6IGluZGV4X2lkZW50aWNhbDsgVHlwZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBP d25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgSU5ERVggaW5kZXhfaWRlbnRpY2FsIE9O IHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsIFVTSU5HIGJ0cmVlIChjb2wyIHRleHRfcGF0dGVy bl9vcHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY4OTUgKGNsYXNzIDEyNTkgT0lEIDE0OTIx MikKKy0tIE5hbWU6IGluZGV4X3NhbWU7IFR5cGU6IElOREVYOyBTY2hlbWE6IHRhcmdldDsgT3du ZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIElOREVYIGluZGV4X3NhbWUgT04gdGFyZ2V0 LnRhYmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKwor CistLQorLS0gVE9DIGVudHJ5IDU2ODkyIChjbGFzcyAxMjU5IE9JRCAxMzk5NDUpCistLSBOYW1l OiBtdmlld19pbmRleDsgVHlwZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJw cmlzZWRiCistLQorCitDUkVBVEUgSU5ERVggbXZpZXdfaW5kZXggT04gdGFyZ2V0LiJNVmlldyIg VVNJTkcgYnRyZWUgKHRleHQgdGV4dF9wYXR0ZXJuX29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRy eSA2MTA0NSAoY2xhc3MgMjYxOCBPSUQgMTQ5MDQyKQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUg cnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCist LQorCitDUkVBVEUgUlVMRSBydWxlMSBBUworICAgIE9OIFVQREFURSBUTyB0YXJnZXQudGFibGVf Zm9yX3J1bGUgRE8gSU5TVEVBRCBOT1RISU5HOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNjkg KGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDYxMDQ1CistLSBOYW1lOiBSVUxFIHJ1 bGUxIE9OIHRhYmxlX2Zvcl9ydWxlOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRhcmdldDsgT3du ZXI6IGVudGVycHJpc2VkYgorLS0KKworQ09NTUVOVCBPTiBSVUxFIHJ1bGUxIE9OIHRhcmdldC50 YWJsZV9mb3JfcnVsZSBJUyAnY29tbWVudHMnOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNDYg KGNsYXNzIDI2MTggT0lEIDE0OTA0MykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9ydWxlIHJ1bGUyOyBU eXBlOiBSVUxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JF QVRFIFJVTEUgcnVsZTIgQVMKKyAgICBPTiBVUERBVEUgVE8gdGFyZ2V0LnRhYmxlX2Zvcl9ydWxl IERPIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NyAoY2xhc3MgMjYxOCBPSUQg MTQ5MDQ0KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTM7IFR5cGU6IFJVTEU7IFNjaGVt YTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgUlVMRSBydWxlMyBB UworICAgIE9OIElOU0VSVCBUTyB0YXJnZXQudGFibGVfZm9yX3J1bGUgRE8gTk9USElORzsKKwor CistLQorLS0gVE9DIGVudHJ5IDYxMDUwIChjbGFzcyAwIE9JRCAxMzk5MzgpCistLSBEZXBlbmRl bmNpZXM6IDEyMjUwIDYxMDYyCistLSBOYW1lOiBNVmlldzsgVHlwZTogTUFURVJJQUxJWkVEIFZJ RVcgREFUQTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK1JFRlJF U0ggTUFURVJJQUxJWkVEIFZJRVcgdGFyZ2V0LiJNVmlldyI7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wcGFzLzkuMl9wbHVzL3NvdXJjZS5zcWwgYi93 ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wcGFzLzkuMl9wbHVzL3NvdXJjZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42N2VjMjE2ZDYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wcGFzLzku Ml9wbHVzL3NvdXJjZS5zcWwKQEAgLTAsMCArMSwzMTEgQEAKKy0tCistLSBQb3N0Z3JlU1FMIGRh dGFiYXNlIGR1bXAKKy0tCisKKy0tIER1bXBlZCBmcm9tIGRhdGFiYXNlIHZlcnNpb24gMTAuNwor LS0gRHVtcGVkIGJ5IHBnX2R1bXAgdmVyc2lvbiAxMmJldGEyCisKKy0tIFN0YXJ0ZWQgb24gMjAx OS0xMS0wMSAxMjo1NDoxNSBJU1QKKworU0VUIHN0YXRlbWVudF90aW1lb3V0ID0gMDsKK1NFVCBs b2NrX3RpbWVvdXQgPSAwOworU0VUIGNsaWVudF9lbmNvZGluZyA9ICdVVEY4JzsKK1NFVCBzdGFu ZGFyZF9jb25mb3JtaW5nX3N0cmluZ3MgPSBvbjsKK1NFTEVDVCBwZ19jYXRhbG9nLnNldF9jb25m aWcoJ3NlYXJjaF9wYXRoJywgJycsIGZhbHNlKTsKK1NFVCBjaGVja19mdW5jdGlvbl9ib2RpZXMg PSBmYWxzZTsKK1NFVCB4bWxvcHRpb24gPSBjb250ZW50OworU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nOworCistLQorLS0gVE9DIGVudHJ5IDE3IChjbGFzcyAyNjE1IE9JRCAxMzk3 NzApCistLSBOYW1lOiBzb3VyY2U7IFR5cGU6IFNDSEVNQTsgU2NoZW1hOiAtOyBPd25lcjogZW50 ZXJwcmlzZWRiCistLQorCitDUkVBVEUgU0NIRU1BIHNvdXJjZTsKKworCitBTFRFUiBTQ0hFTUEg c291cmNlIE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSA9 ICcnOworCisKK0NSRUFURSBFWFRFTlNJT04gYnRyZWVfZ2lzdAorICAgIFNDSEVNQSBzb3VyY2U7 CisKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI1OCAoY2xhc3MgMTI1OSBPSUQgMTQ4OTYzKQorLS0g TmFtZTogdGFibGVfZm9yX2NvbHVtbjsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25l cjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9jb2x1 bW4gKAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dCwKKyAgICBjb2wz IHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9jb2x1bW4gT1dORVIg VE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjU2IChjbGFzcyAxMjU5IE9J RCAxNDg4OTUpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IFRBQkxFOyBT Y2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHNv dXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwK KyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9jb25z dHJhaW50cyBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgNjEwNjYg KGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEyMjU2CistLSBOYW1lOiBUQUJMRSB0 YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogc291cmNlOyBPd25l cjogZW50ZXJwcmlzZWRiCistLQorCitDT01NRU5UIE9OIFRBQkxFIHNvdXJjZS50YWJsZV9mb3Jf Y29uc3RyYWludHMgSVMgJ2NvbW1lbnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5IDEyMjYyIChj bGFzcyAxMjU5IE9JRCAxNDkwMDQpCistLSBOYW1lOiB0YWJsZV9mb3JfaWRlbnRpY2FsOyBUeXBl OiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGI7CistLQorCitDUkVB VEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl9pZGVudGljYWwgKAorICAgIGNvbDEgaW50ZWdlciBO T1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFCTEUgc291cmNlLnRhYmxl X2Zvcl9pZGVudGljYWwgT1dORVIgVE8gZW50ZXJwcmlzZWRiOzsKKworLS0KKy0tIFRPQyBlbnRy eSAxMjI2MCAoY2xhc3MgMTI1OSBPSUQgMTQ4OTc3KQorLS0gTmFtZTogdGFibGVfZm9yX2luZGV4 OyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisK K0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2luZGV4ICgKKyAgICBjb2wxIGludGVnZXIg Tk9UIE5VTEwsCisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHNvdXJjZS50YWJs ZV9mb3JfaW5kZXggT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEy MjY5IChjbGFzcyAxMjU5IE9JRCAxNDkxMjgpCistLSBOYW1lOiB0YWJsZV9mb3JfcHJpbWFyeV9r ZXk7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0K KworQ1JFQVRFIFRBQkxFIHNvdXJjZS50YWJsZV9mb3JfcHJpbWFyeV9rZXkgKAorICAgIGNvbDEg aW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQgTk9UIE5VTEwKKyk7CisKKworQUxURVIg VEFCTEUgc291cmNlLnRhYmxlX2Zvcl9wcmltYXJ5X2tleSBPV05FUiBUTyBlbnRlcnByaXNlZGI7 CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjQgKGNsYXNzIDEyNTkgT0lEIDE0OTAyNCkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9ydWxlOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBl bnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSBzb3VyY2UudGFibGVfZm9yX3J1bGUgKAor ICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAorICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBU QUJMRSBzb3VyY2UudGFibGVfZm9yX3J1bGUgT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCistLQor LS0gVE9DIGVudHJ5IDEyMjY2IChjbGFzcyAxMjU5IE9JRCAxNDkwNDgpCistLSBOYW1lOiB0YWJs ZV9mb3JfdHJpZ2dlcjsgVHlwZTogVEFCTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJw cmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgc291cmNlLnRhYmxlX2Zvcl90cmlnZ2VyICgKKyAg ICBjb2wxIGJpZ2ludCBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQKKyk7CisKKworQUxURVIgVEFC TEUgc291cmNlLnRhYmxlX2Zvcl90cmlnZ2VyIE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0K Ky0tIFRPQyBlbnRyeSA1Njg5MyAoY2xhc3MgMjYwNiBPSUQgMTQ4OTA0KQorLS0gTmFtZTogdGFi bGVfZm9yX2NvbnN0cmFpbnRzIEV4Y2x1c2lvbjsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBz b3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgc291cmNl LnRhYmxlX2Zvcl9jb25zdHJhaW50cworICAgIEFERCBDT05TVFJBSU5UICJFeGNsdXNpb24iIEVY Q0xVREUgVVNJTkcgZ2lzdCAoY29sMiBXSVRIIDw+KSBXSVRIIChmaWxsZmFjdG9yPScxMicpIFdI RVJFICgoY29sMSA+IDEpKSBERUZFUlJBQkxFIElOSVRJQUxMWSBERUZFUlJFRDsKKworCistLQor LS0gVE9DIGVudHJ5IDYxMDY3IChjbGFzcyAwIE9JRCAwKQorLS0gRGVwZW5kZW5jaWVzOiA1Njg5 MworLS0gTmFtZTogQ09OU1RSQUlOVCAiRXhjbHVzaW9uIiBPTiB0YWJsZV9mb3JfY29uc3RyYWlu dHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCist LQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgIkV4Y2x1c2lvbiIgT04gc291cmNlLnRhYmxlX2Zv cl9jb25zdHJhaW50cyBJUyAnY29tbWVudHMnOworCisKKy0tCistLSBUT0MgZW50cnkgNTY4OTEg KGNsYXNzIDI2MDYgT0lEIDE0ODkxMSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50cyBj aGVja19jb247IFR5cGU6IENIRUNLIENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjog ZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBzb3VyY2UudGFibGVfZm9yX2NvbnN0cmFp bnRzCisgICAgQUREIENPTlNUUkFJTlQgY2hlY2tfY29uIENIRUNLICgoY29sMSA+IDEwKSkgTk9U IFZBTElEOworCisKKy0tCistLSBUT0MgZW50cnkgNjEwNjggKGNsYXNzIDAgT0lEIDApCistLSBE ZXBlbmRlbmNpZXM6IDU2ODkxCistLSBOYW1lOiBDT05TVFJBSU5UIGNoZWNrX2NvbiBPTiB0YWJs ZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjog ZW50ZXJwcmlzZWRiCistLQorCitDT01NRU5UIE9OIENPTlNUUkFJTlQgY2hlY2tfY29uIE9OIHNv dXJjZS50YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2NvbWVudCc7CisKKworLS0KKy0tIFRPQyBl bnRyeSA1Njg5OSAoY2xhc3MgMjYwNiBPSUQgMTQ4OTcwKQorLS0gTmFtZTogdGFibGVfZm9yX2Nv bHVtbiB0YWJsZV9mb3JfY29sdW1uX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291 cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50 YWJsZV9mb3JfY29sdW1uCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2NvbHVtbl9wa2V5 IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODk1IChjbGFzcyAy NjA2IE9JRCAxNDg5MDIpCistLSBOYW1lOiB0YWJsZV9mb3JfY29uc3RyYWludHMgdGFibGVfZm9y X2NvbnN0cmFpbnRzX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25l cjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3Jf Y29uc3RyYWludHMKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfY29uc3RyYWludHNfcGtl eSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwNCAoY2xhc3Mg MjYwNiBPSUQgMTQ4OTg0KQorLS0gTmFtZTogdGFibGVfZm9yX2luZGV4IHRhYmxlX2Zvcl9pbmRl eF9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJp c2VkYgorLS0KKworQUxURVIgVEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX2luZGV4CisgICAg QUREIENPTlNUUkFJTlQgdGFibGVfZm9yX2luZGV4X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOwor CisKKy0tCistLSBUT0MgZW50cnkgNTY5MTMgKGNsYXNzIDI2MDYgT0lEIDE0OTEzNSkKKy0tIE5h bWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleSB0YWJsZV9mb3JfcHJpbWFyeV9rZXlfcGtleTsgVHlw ZTogQ09OU1RSQUlOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisK K0FMVEVSIFRBQkxFIE9OTFkgc291cmNlLnRhYmxlX2Zvcl9wcmltYXJ5X2tleQorICAgIEFERCBD T05TVFJBSU5UIHRhYmxlX2Zvcl9wcmltYXJ5X2tleV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBj b2wyKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTA5IChjbGFzcyAyNjA2IE9JRCAxNDkwMzEp CistLSBOYW1lOiB0YWJsZV9mb3JfcnVsZSB0YWJsZV9mb3JfcnVsZV9wa2V5OyBUeXBlOiBDT05T VFJBSU5UOyBTY2hlbWE6IHNvdXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxURVIg VEFCTEUgT05MWSBzb3VyY2UudGFibGVfZm9yX3J1bGUKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJs ZV9mb3JfcnVsZV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5 IDU2OTA3IChjbGFzcyAyNjA2IE9JRCAxNDkwMTEpCistLSBOYW1lOiB0YWJsZV9mb3JfaWRlbnRp Y2FsIHRhYmxlX2Zvcl90YWJsZV9mb3JfaWRlbnRpY2FsX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7 IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiOworLS0KKworQUxURVIgVEFCTEUg T05MWSBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbAorICAgIEFERCBDT05TVFJBSU5UIHRhYmxl X2Zvcl90YWJsZV9mb3JfaWRlbnRpY2FsX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0t CistLSBUT0MgZW50cnkgNTY5MTEgKGNsYXNzIDI2MDYgT0lEIDE0OTA1NSkKKy0tIE5hbWU6IHRh YmxlX2Zvcl90cmlnZ2VyIHRhYmxlX2Zvcl90cmlnZ2VyX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7 IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBP TkxZIHNvdXJjZS50YWJsZV9mb3JfdHJpZ2dlcgorICAgIEFERCBDT05TVFJBSU5UIHRhYmxlX2Zv cl90cmlnZ2VyX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0MgZW50cnkg NTY4OTcgKGNsYXNzIDI2MDYgT0lEIDE0ODkxMykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25zdHJh aW50cyB1bmlxdWU7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50 ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHNvdXJjZS50YWJsZV9mb3JfY29uc3Ry YWludHMKKyAgICBBREQgQ09OU1RSQUlOVCAidW5pcXVlIiBVTklRVUUgKGNvbDEpOworCisKKy0t CistLSBUT0MgZW50cnkgNjEwNjkgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDU2 ODk3CistLSBOYW1lOiBDT05TVFJBSU5UICJ1bmlxdWUiIE9OIHRhYmxlX2Zvcl9jb25zdHJhaW50 czsgVHlwZTogQ09NTUVOVDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0t CisKK0NPTU1FTlQgT04gQ09OU1RSQUlOVCAidW5pcXVlIiBPTiBzb3VyY2UudGFibGVfZm9yX2Nv bnN0cmFpbnRzIElTICdjbW50JzsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAwIChjbGFzcyAx MjU5IE9JRCAxNDkwMjMpCistLSBOYW1lOiBpbmRleDE7IFR5cGU6IElOREVYOyBTY2hlbWE6IHNv dXJjZTsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIElOREVYIGluZGV4MSBPTiBz b3VyY2UudGFibGVfZm9yX2luZGV4IFVTSU5HIGJ0cmVlIChjb2wyIHZhcmNoYXJfcGF0dGVybl9v cHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDUgKGNsYXNzIDEyNTkgT0lEIDE0OTAxMikK Ky0tIE5hbWU6IGluZGV4X2lkZW50aWNhbDsgVHlwZTogSU5ERVg7IFNjaGVtYTogc291cmNlOyBP d25lcjogZW50ZXJwcmlzZWRiOworLS0KKworQ1JFQVRFIElOREVYIGluZGV4X2lkZW50aWNhbCBP TiBzb3VyY2UudGFibGVfZm9yX2lkZW50aWNhbCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRl cm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAxIChjbGFzcyAxMjU5IE9JRCAxNDky MTEpCistLSBOYW1lOiBpbmRleF9zYW1lOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiBzb3VyY2U7IE93 bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBJTkRFWCBpbmRleF9zYW1lIE9OIHNvdXJj ZS50YWJsZV9mb3JfaW5kZXggVVNJTkcgYnRyZWUgKGNvbDIgdGV4dF9wYXR0ZXJuX29wcyk7CisK KworLS0KKy0tIFRPQyBlbnRyeSA1NjkwMiAoY2xhc3MgMTI1OSBPSUQgMTQ5MDIyKQorLS0gTmFt ZTogaW5kZXhfc291cmNlOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRl cnByaXNlZGIKKy0tCisKK0NSRUFURSBJTkRFWCBpbmRleF9zb3VyY2UgT04gc291cmNlLnRhYmxl X2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCistLQor LS0gVE9DIGVudHJ5IDYxMDQ0IChjbGFzcyAyNjE4IE9JRCAxNDkwMzIpCistLSBOYW1lOiB0YWJs ZV9mb3JfcnVsZSBydWxlMTsgVHlwZTogUlVMRTsgU2NoZW1hOiBzb3VyY2U7IE93bmVyOiBlbnRl cnByaXNlZGIKKy0tCisKK0NSRUFURSBSVUxFIHJ1bGUxIEFTCisgICAgT04gVVBEQVRFIFRPIHNv dXJjZS50YWJsZV9mb3JfcnVsZSBETyBJTlNURUFEIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBl bnRyeSA2MTA3MCAoY2xhc3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogNjEwNDQKKy0tIE5h bWU6IFJVTEUgcnVsZTEgT04gdGFibGVfZm9yX3J1bGU7IFR5cGU6IENPTU1FTlQ7IFNjaGVtYTog c291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDT01NRU5UIE9OIFJVTEUgcnVsZTEg T04gc291cmNlLnRhYmxlX2Zvcl9ydWxlIElTICdjb21tZW50cyc7CisKKworLS0KKy0tIFRPQyBl bnRyeSA2MTA0NSAoY2xhc3MgMjYxOCBPSUQgMTQ5MDMzKQorLS0gTmFtZTogdGFibGVfZm9yX3J1 bGUgcnVsZTI7IFR5cGU6IFJVTEU7IFNjaGVtYTogc291cmNlOyBPd25lcjogZW50ZXJwcmlzZWRi CistLQorCitDUkVBVEUgUlVMRSBydWxlMiBBUworICAgIE9OIElOU0VSVCBUTyBzb3VyY2UudGFi bGVfZm9yX3J1bGUgRE8gTk9USElORzsKKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv c2NoZW1hX2RpZmYvdGVzdHMvcHBhcy85LjJfcGx1cy90YXJnZXQuc3FsIGIvd2ViL3BnYWRtaW4v dG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMvcHBhcy85LjJfcGx1cy90YXJnZXQuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjY0NzY1MjI0Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMvcHBhcy85LjJfcGx1cy90YXJn ZXQuc3FsCkBAIC0wLDAgKzEsMzM3IEBACistLQorLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBkdW1w CistLQorCistLSBEdW1wZWQgZnJvbSBkYXRhYmFzZSB2ZXJzaW9uIDEwLjcKKy0tIER1bXBlZCBi eSBwZ19kdW1wIHZlcnNpb24gMTJiZXRhMgorCistLSBTdGFydGVkIG9uIDIwMTktMTEtMDEgMTI6 NTU6MjIgSVNUCisKK1NFVCBzdGF0ZW1lbnRfdGltZW91dCA9IDA7CitTRVQgbG9ja190aW1lb3V0 ID0gMDsKK1NFVCBjbGllbnRfZW5jb2RpbmcgPSAnVVRGOCc7CitTRVQgc3RhbmRhcmRfY29uZm9y bWluZ19zdHJpbmdzID0gb247CitTRUxFQ1QgcGdfY2F0YWxvZy5zZXRfY29uZmlnKCdzZWFyY2hf cGF0aCcsICcnLCBmYWxzZSk7CitTRVQgY2hlY2tfZnVuY3Rpb25fYm9kaWVzID0gZmFsc2U7CitT RVQgeG1sb3B0aW9uID0gY29udGVudDsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gd2Fybmlu ZzsKKworLS0KKy0tIFRPQyBlbnRyeSAxOCAoY2xhc3MgMjYxNSBPSUQgMTM5NzcxKQorLS0gTmFt ZTogdGFyZ2V0OyBUeXBlOiBTQ0hFTUE7IFNjaGVtYTogLTsgT3duZXI6IGVudGVycHJpc2VkYgor LS0KKworQ1JFQVRFIFNDSEVNQSB0YXJnZXQ7CisKKworQUxURVIgU0NIRU1BIHRhcmdldCBPV05F UiBUTyBlbnRlcnByaXNlZGI7CisKK1NFVCBkZWZhdWx0X3RhYmxlc3BhY2UgPSAnJzsKKworQ1JF QVRFIEVYVEVOU0lPTiBidHJlZV9naXN0CisgICAgU0NIRU1BIHRhcmdldDsKKworLS0KKy0tIFRP QyBlbnRyeSAxMjI1MCAoY2xhc3MgMTI1OSBPSUQgMTM5OTM4KQorLS0gTmFtZTogTVZpZXc7IFR5 cGU6IE1BVEVSSUFMSVpFRCBWSUVXOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2Vk YgorLS0KKworQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXIHRhcmdldC4iTVZpZXciIEFTCisgU0VM RUNUICd0ZWtzdCc6OnRleHQgQVMgdGV4dAorICBXSVRIIE5PIERBVEE7CisKKworQUxURVIgVEFC TEUgdGFyZ2V0LiJNVmlldyIgT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVu dHJ5IDEyMjU5IChjbGFzcyAxMjU5IE9JRCAxNDg5NzEpCistLSBOYW1lOiB0YWJsZV9mb3JfY29s dW1uOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0t CisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2NvbHVtbiAoCisgICAgY29sMSBiaWdp bnQsCisgICAgY29sMiBiaWdpbnQsCisgICAgY29sNCB0ZXh0CispOworCisKK0FMVEVSIFRBQkxF IHRhcmdldC50YWJsZV9mb3JfY29sdW1uIE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0KKy0t IFRPQyBlbnRyeSAxMjI2OCAoY2xhc3MgMTI1OSBPSUQgMTQ5MDg5KQorLS0gTmFtZTogdGFibGVf Zm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRl cnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2NvbnN0cmFpbnRz ICgKKyAgICBjb2wxIGludGVnZXIgTk9UIE5VTEwsCisgICAgY29sMiB0ZXh0LAorICAgIENPTlNU UkFJTlQgY2hlY2tfY29uIENIRUNLICgoY29sMSA+IDMwKSkKKyk7CisKKworQUxURVIgVEFCTEUg dGFyZ2V0LnRhYmxlX2Zvcl9jb25zdHJhaW50cyBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0t CistLSBUT0MgZW50cnkgNjEwNjYgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNpZXM6IDEy MjY4CistLSBOYW1lOiBUQUJMRSB0YWJsZV9mb3JfY29uc3RyYWludHM7IFR5cGU6IENPTU1FTlQ7 IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDT01NRU5UIE9OIFRB QkxFIHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2NvbW1lbnRzJzsKKworCistLQor LS0gVE9DIGVudHJ5IDYxMDY3IChjbGFzcyAwIE9JRCAwKQorLS0gRGVwZW5kZW5jaWVzOiAxMjI2 OAorLS0gTmFtZTogQ09OU1RSQUlOVCBjaGVja19jb24gT04gdGFibGVfZm9yX2NvbnN0cmFpbnRz OyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0K KworQ09NTUVOVCBPTiBDT05TVFJBSU5UIGNoZWNrX2NvbiBPTiB0YXJnZXQudGFibGVfZm9yX2Nv bnN0cmFpbnRzIElTICdjb21lbnQnOworCisKKy0tCistLSBUT0MgZW50cnkgMTIyNTcgKGNsYXNz IDEyNTkgT0lEIDE0ODk2MCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9kZWw7IFR5cGU6IFRBQkxFOyBT Y2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHRh cmdldC50YWJsZV9mb3JfZGVsICgKKyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zv cl9kZWwgT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjcxIChj bGFzcyAxMjU5IE9JRCAxNDkxNzIpCistLSBOYW1lOiB0YWJsZV9mb3JfZm9yZWlnbl9rZXk7IFR5 cGU6IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JF QVRFIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfZm9yZWlnbl9rZXkgKAorICAgIGNvbDEgaW50ZWdl ciBOT1QgTlVMTCwKKyAgICBjb2wyICJjaGFyIiwKKyAgICBjb2wzIGJpZ2ludAorKTsKKworCitB TFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX2ZvcmVpZ25fa2V5IE9XTkVSIFRPIGVudGVycHJp c2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2MyAoY2xhc3MgMTI1OSBPSUQgMTQ5MDEzKQor LS0gTmFtZTogdGFibGVfZm9yX2lkZW50aWNhbDsgVHlwZTogVEFCTEU7IFNjaGVtYTogdGFyZ2V0 OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zv cl9pZGVudGljYWwgKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQK Kyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9pZGVudGljYWwgT1dORVIgVE8g ZW50ZXJwcmlzZWRiOworCistLQorLS0gVE9DIGVudHJ5IDEyMjYxIChjbGFzcyAxMjU5IE9JRCAx NDg5ODYpCistLSBOYW1lOiB0YWJsZV9mb3JfaW5kZXg7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IHRh cmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFRBQkxFIHRhcmdldC50YWJs ZV9mb3JfaW5kZXggKAorICAgIGNvbDEgaW50ZWdlciBOT1QgTlVMTCwKKyAgICBjb2wyIHRleHQK Kyk7CisKKworQUxURVIgVEFCTEUgdGFyZ2V0LnRhYmxlX2Zvcl9pbmRleCBPV05FUiBUTyBlbnRl cnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNzAgKGNsYXNzIDEyNTkgT0lEIDE0OTE0 NCkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9wcmltYXJ5X2tleTsgVHlwZTogVEFCTEU7IFNjaGVtYTog dGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgVEFCTEUgdGFyZ2V0LnRh YmxlX2Zvcl9wcmltYXJ5X2tleSAoCisgICAgY29sMSBpbnRlZ2VyIE5PVCBOVUxMLAorICAgIGNv bDIgdGV4dCBOT1QgTlVMTAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3By aW1hcnlfa2V5IE9XTkVSIFRPIGVudGVycHJpc2VkYjsKKworLS0KKy0tIFRPQyBlbnRyeSAxMjI2 NSAoY2xhc3MgMTI1OSBPSUQgMTQ5MDM0KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGU7IFR5cGU6 IFRBQkxFOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRF IFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcnVsZSAoCisgICAgY29sMSBiaWdpbnQgTk9UIE5VTEws CisgICAgY29sMiB0ZXh0CispOworCisKK0FMVEVSIFRBQkxFIHRhcmdldC50YWJsZV9mb3JfcnVs ZSBPV05FUiBUTyBlbnRlcnByaXNlZGI7CisKKy0tCistLSBUT0MgZW50cnkgMTIyNjcgKGNsYXNz IDEyNTkgT0lEIDE0OTA2NikKKy0tIE5hbWU6IHRhYmxlX2Zvcl90cmlnZ2VyOyBUeXBlOiBUQUJM RTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBUQUJM RSB0YXJnZXQudGFibGVfZm9yX3RyaWdnZXIgKAorICAgIGNvbDEgYmlnaW50IE5PVCBOVUxMLAor ICAgIGNvbDIgdGV4dAorKTsKKworCitBTFRFUiBUQUJMRSB0YXJnZXQudGFibGVfZm9yX3RyaWdn ZXIgT1dORVIgVE8gZW50ZXJwcmlzZWRiOworCisKKy0tCistLSBUT0MgZW50cnkgNTY5MDYgKGNs YXNzIDI2MDYgT0lEIDE0OTA5NykKKy0tIE5hbWU6IHRhYmxlX2Zvcl9jb25zdHJhaW50cyBFeGNs dXNpb247IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlz ZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMK KyAgICBBREQgQ09OU1RSQUlOVCAiRXhjbHVzaW9uIiBFWENMVURFIFVTSU5HIGdpc3QgKGNvbDIg V0lUSCA8PikgV0lUSCAoZmlsbGZhY3Rvcj0nMTUnKSBXSEVSRSAoKGNvbDEgPiAxKSkgREVGRVJS QUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA2OCAoY2xh c3MgMCBPSUQgMCkKKy0tIERlcGVuZGVuY2llczogNTY5MDYKKy0tIE5hbWU6IENPTlNUUkFJTlQg IkV4Y2x1c2lvbiIgT04gdGFibGVfZm9yX2NvbnN0cmFpbnRzOyBUeXBlOiBDT01NRU5UOyBTY2hl bWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ09NTUVOVCBPTiBDT05TVFJB SU5UICJFeGNsdXNpb24iIE9OIHRhcmdldC50YWJsZV9mb3JfY29uc3RyYWludHMgSVMgJ2NvbW1l bnRzJzsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTEwIChjbGFzcyAyNjA2IE9JRCAxNDkxNzYp CistLSBOYW1lOiB0YWJsZV9mb3JfZm9yZWlnbl9rZXkgdGFibGVfZm9yX2ZvcmVpZ25fa2V5X3Br ZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRi CistLQorCitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3JfZm9yZWlnbl9rZXkKKyAg ICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfZm9yZWlnbl9rZXlfcGtleSBQUklNQVJZIEtFWSAo Y29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5NyAoY2xhc3MgMjYwNiBPSUQgMTQ4OTkz KQorLS0gTmFtZTogdGFibGVfZm9yX2luZGV4IHRhYmxlX2Zvcl9pbmRleF9wa2V5OyBUeXBlOiBD T05TVFJBSU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxU RVIgVEFCTEUgT05MWSB0YXJnZXQudGFibGVfZm9yX2luZGV4CisgICAgQUREIENPTlNUUkFJTlQg dGFibGVfZm9yX2luZGV4X3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEpOworCisKKy0tCistLSBUT0Mg ZW50cnkgNTY5MDggKGNsYXNzIDI2MDYgT0lEIDE0OTE1MSkKKy0tIE5hbWU6IHRhYmxlX2Zvcl9w cmltYXJ5X2tleSB0YWJsZV9mb3JfcHJpbWFyeV9rZXlfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsg U2NoZW1hOiB0YXJnZXQ7IE93bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0FMVEVSIFRBQkxFIE9O TFkgdGFyZ2V0LnRhYmxlX2Zvcl9wcmltYXJ5X2tleQorICAgIEFERCBDT05TVFJBSU5UIHRhYmxl X2Zvcl9wcmltYXJ5X2tleV9wa2V5IFBSSU1BUlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9D IGVudHJ5IDU2OTAyIChjbGFzcyAyNjA2IE9JRCAxNDkwNDEpCistLSBOYW1lOiB0YWJsZV9mb3Jf cnVsZSB0YWJsZV9mb3JfcnVsZV9wa2V5OyBUeXBlOiBDT05TVFJBSU5UOyBTY2hlbWE6IHRhcmdl dDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQUxURVIgVEFCTEUgT05MWSB0YXJnZXQudGFi bGVfZm9yX3J1bGUKKyAgICBBREQgQ09OU1RSQUlOVCB0YWJsZV9mb3JfcnVsZV9wa2V5IFBSSU1B UlkgS0VZIChjb2wxKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2OTAwIChjbGFzcyAyNjA2IE9J RCAxNDkwMjApCistLSBOYW1lOiB0YWJsZV9mb3JfaWRlbnRpY2FsIHRhYmxlX2Zvcl90YWJsZV9m b3JfaWRlbnRpY2FsX3BrZXk7IFR5cGU6IENPTlNUUkFJTlQ7IFNjaGVtYTogdGFyZ2V0OyBPd25l cjogZW50ZXJwcmlzZWRiCistLQorCitBTFRFUiBUQUJMRSBPTkxZIHRhcmdldC50YWJsZV9mb3Jf aWRlbnRpY2FsCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3RhYmxlX2Zvcl9pZGVudGlj YWxfcGtleSBQUklNQVJZIEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1NjkwNCAo Y2xhc3MgMjYwNiBPSUQgMTQ5MDczKQorLS0gTmFtZTogdGFibGVfZm9yX3RyaWdnZXIgdGFibGVf Zm9yX3RyaWdnZXJfcGtleTsgVHlwZTogQ09OU1RSQUlOVDsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBlbnRlcnByaXNlZGIKKy0tCisKK0FMVEVSIFRBQkxFIE9OTFkgdGFyZ2V0LnRhYmxlX2Zvcl90 cmlnZ2VyCisgICAgQUREIENPTlNUUkFJTlQgdGFibGVfZm9yX3RyaWdnZXJfcGtleSBQUklNQVJZ IEtFWSAoY29sMSk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA1Njg5MyAoY2xhc3MgMTI1OSBPSUQg MTQ4OTk0KQorLS0gTmFtZTogaW5kZXgxOyBUeXBlOiBJTkRFWDsgU2NoZW1hOiB0YXJnZXQ7IE93 bmVyOiBlbnRlcnByaXNlZGIKKy0tCisKK0NSRUFURSBJTkRFWCBpbmRleDEgT04gdGFyZ2V0LnRh YmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAoY29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCist LQorLS0gVE9DIGVudHJ5IDU2ODk0IChjbGFzcyAxMjU5IE9JRCAxNDg5OTUpCistLSBOYW1lOiBp bmRleDI7IFR5cGU6IElOREVYOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgor LS0KKworQ1JFQVRFIElOREVYIGluZGV4MiBPTiB0YXJnZXQudGFibGVfZm9yX2luZGV4IFVTSU5H IGJ0cmVlIChjb2wyIHRleHRfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBUT0MgZW50cnkgNTY4 OTggKGNsYXNzIDEyNTkgT0lEIDE0OTAyMSkKKy0tIE5hbWU6IGluZGV4X2lkZW50aWNhbDsgVHlw ZTogSU5ERVg7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVB VEUgSU5ERVggaW5kZXhfaWRlbnRpY2FsIE9OIHRhcmdldC50YWJsZV9mb3JfaWRlbnRpY2FsIFVT SU5HIGJ0cmVlIChjb2wyIHRleHRfcGF0dGVybl9vcHMpOworCisKKy0tCistLSBUT0MgZW50cnkg NTY4OTUgKGNsYXNzIDEyNTkgT0lEIDE0OTIxMikKKy0tIE5hbWU6IGluZGV4X3NhbWU7IFR5cGU6 IElOREVYOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRF IElOREVYIGluZGV4X3NhbWUgT04gdGFyZ2V0LnRhYmxlX2Zvcl9pbmRleCBVU0lORyBidHJlZSAo Y29sMiB0ZXh0X3BhdHRlcm5fb3BzKTsKKworCistLQorLS0gVE9DIGVudHJ5IDU2ODkyIChjbGFz cyAxMjU5IE9JRCAxMzk5NDUpCistLSBOYW1lOiBtdmlld19pbmRleDsgVHlwZTogSU5ERVg7IFNj aGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgSU5ERVggbXZp ZXdfaW5kZXggT04gdGFyZ2V0LiJNVmlldyIgVVNJTkcgYnRyZWUgKHRleHQgdGV4dF9wYXR0ZXJu X29wcyk7CisKKworLS0KKy0tIFRPQyBlbnRyeSA2MTA0NSAoY2xhc3MgMjYxOCBPSUQgMTQ5MDQy KQorLS0gTmFtZTogdGFibGVfZm9yX3J1bGUgcnVsZTE7IFR5cGU6IFJVTEU7IFNjaGVtYTogdGFy Z2V0OyBPd25lcjogZW50ZXJwcmlzZWRiCistLQorCitDUkVBVEUgUlVMRSBydWxlMSBBUworICAg IE9OIFVQREFURSBUTyB0YXJnZXQudGFibGVfZm9yX3J1bGUgRE8gSU5TVEVBRCBOT1RISU5HOwor CisKKy0tCistLSBUT0MgZW50cnkgNjEwNjkgKGNsYXNzIDAgT0lEIDApCistLSBEZXBlbmRlbmNp ZXM6IDYxMDQ1CistLSBOYW1lOiBSVUxFIHJ1bGUxIE9OIHRhYmxlX2Zvcl9ydWxlOyBUeXBlOiBD T01NRU5UOyBTY2hlbWE6IHRhcmdldDsgT3duZXI6IGVudGVycHJpc2VkYgorLS0KKworQ09NTUVO VCBPTiBSVUxFIHJ1bGUxIE9OIHRhcmdldC50YWJsZV9mb3JfcnVsZSBJUyAnY29tbWVudHMnOwor CisKKy0tCistLSBUT0MgZW50cnkgNjEwNDYgKGNsYXNzIDI2MTggT0lEIDE0OTA0MykKKy0tIE5h bWU6IHRhYmxlX2Zvcl9ydWxlIHJ1bGUyOyBUeXBlOiBSVUxFOyBTY2hlbWE6IHRhcmdldDsgT3du ZXI6IGVudGVycHJpc2VkYgorLS0KKworQ1JFQVRFIFJVTEUgcnVsZTIgQVMKKyAgICBPTiBVUERB VEUgVE8gdGFyZ2V0LnRhYmxlX2Zvcl9ydWxlIERPIE5PVEhJTkc7CisKKworLS0KKy0tIFRPQyBl bnRyeSA2MTA0NyAoY2xhc3MgMjYxOCBPSUQgMTQ5MDQ0KQorLS0gTmFtZTogdGFibGVfZm9yX3J1 bGUgcnVsZTM7IFR5cGU6IFJVTEU7IFNjaGVtYTogdGFyZ2V0OyBPd25lcjogZW50ZXJwcmlzZWRi CistLQorCitDUkVBVEUgUlVMRSBydWxlMyBBUworICAgIE9OIElOU0VSVCBUTyB0YXJnZXQudGFi bGVfZm9yX3J1bGUgRE8gTk9USElORzsKKworCistLQorLS0gVE9DIGVudHJ5IDYxMDUwIChjbGFz cyAwIE9JRCAxMzk5MzgpCistLSBEZXBlbmRlbmNpZXM6IDEyMjUwIDYxMDYyCistLSBOYW1lOiBN VmlldzsgVHlwZTogTUFURVJJQUxJWkVEIFZJRVcgREFUQTsgU2NoZW1hOiB0YXJnZXQ7IE93bmVy OiBlbnRlcnByaXNlZGIKKy0tCisKK1JFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgdGFyZ2V0LiJN VmlldyI7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy90 ZXN0X3NjaGVtYV9kaWZmX2NvbXAucHkgYi93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90 ZXN0cy90ZXN0X3NjaGVtYV9kaWZmX2NvbXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi4zZTc5MGJjMDYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9zY2hlbWFfZGlmZi90ZXN0cy90ZXN0X3NjaGVtYV9kaWZmX2NvbXAucHkKQEAgLTAsMCArMSwy MDQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCB1dWlkCitpbXBvcnQganNv bgoraW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCisKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQg c2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9k ZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKK2Zyb20gLnV0aWxzIGltcG9ydCBjcmVhdGVfdGFibGUsIGNyZWF0ZV9zY2hl bWEsIHJlc3RvcmVfc2NoZW1hCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRp bHMKK2Zyb20gcGdhZG1pbi51dGlscy52ZXJzaW9uZWRfdGVtcGxhdGVfbG9hZGVyIGltcG9ydCBc CisgICAgZ2V0X3ZlcnNpb25fbWFwcGluZ19kaXJlY3RvcmllcworCisKK2NsYXNzIFNjaGVtYURp ZmZUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCB0 ZXN0IHRoZSBzY2hlbWEgZGlmZi4gIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAjIEZl dGNoaW5nIGRlZmF1bHQgVVJMIGZvciBkYXRhYmFzZSBub2RlLgorICAgICAgICAoJ1NjaGVtYSBk aWZmIGNvbXBhcmlzb24nLCBkaWN0KAorICAgICAgICAgICAgdXJsPSdzY2hlbWFfZGlmZi9jb21w YXJlL3swfS97MX0vezJ9L3szfS97NH0vezV9L3s2fScpKQorICAgIF0KKworICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgc2VsZi5zcmNfZGF0YWJhc2UgPSAiZGJfc2NoZW1hX2RpZmZfc3Jj XyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0KKyAgICAgICAgc2VsZi50YXJfZGF0YWJhc2Ug PSAiZGJfc2NoZW1hX2RpZmZfdGFyXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0KKworICAg ICAgICBzZWxmLnNyY19kYl9pZCA9IHV0aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwg c2VsZi5zcmNfZGF0YWJhc2UpCisgICAgICAgIHNlbGYudGFyX2RiX2lkID0gdXRpbHMuY3JlYXRl X2RhdGFiYXNlKHNlbGYuc2VydmVyLCBzZWxmLnRhcl9kYXRhYmFzZSkKKworICAgICAgICBzZWxm LnNlcnZlciA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyIl0KKyAgICAg ICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZl cl9pZCJdCisgICAgICAgIHNlbGYubm9kZXMgPSBbJ3RhYmxlJywgJ2Z1bmN0aW9uJywgJ3Byb2Nl ZHVyZScsICd2aWV3JywgJ212aWV3J10KKyAgICAgICAgc2VsZi5yZXN0b3JlX2JhY2t1cCgpCisK KyAgICBkZWYgcmVzdG9yZV9iYWNrdXAoc2VsZik6CisgICAgICAgIHNlbGYuc3FsX2ZvbGRlciA9 IHNlbGYuZ2V0X3NxbF9mb2xkZXIoKQorCisgICAgICAgIGlmIHNlbGYuc3FsX2ZvbGRlciBpcyBO b25lOgorICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoJ1NjaGVtYSBkaWZmIGZv bGRlciBkb2VzIG5vdCBleGlzdHMnKQorCisgICAgICAgIHNyY19zcWxfcGF0aCA9IG9zLnBhdGgu am9pbihzZWxmLnNxbF9mb2xkZXIsICdzb3VyY2Uuc3FsJykKKyAgICAgICAgdGFyX3NxbF9wYXRo ID0gb3MucGF0aC5qb2luKHNlbGYuc3FsX2ZvbGRlciwgJ3RhcmdldC5zcWwnKQorCisgICAgICAg IGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmNfc3FsX3BhdGgpOgorICAgICAgICAgICAgcmFpc2Ug RmlsZU5vdEZvdW5kRXJyb3IoCisgICAgICAgICAgICAgICAgJ3t9IGZpbGUgZG9lcyBub3QgZXhp c3RzJy5mb3JtYXQoc3JjX3NxbF9wYXRoKSkKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlz dHModGFyX3NxbF9wYXRoKToKKyAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKAor ICAgICAgICAgICAgICAgICd7fSBmaWxlIGRvZXMgbm90IGV4aXN0cycuZm9ybWF0KHRhcl9zcWxf cGF0aCkpCisKKyAgICAgICAgc2VsZi5zcmNfc2NoZW1hX2lkID0gcmVzdG9yZV9zY2hlbWEoc2Vs Zi5zZXJ2ZXIsIHNlbGYuc3JjX2RhdGFiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnc291cmNlJywgc3JjX3NxbF9wYXRoKQorICAgICAgICBzZWxmLnRh cl9zY2hlbWFfaWQgPSByZXN0b3JlX3NjaGVtYShzZWxmLnNlcnZlciwgc2VsZi50YXJfZGF0YWJh c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQn LCB0YXJfc3FsX3BhdGgpCisKKyAgICBkZWYgZ2V0X3NxbF9mb2xkZXIoc2VsZik6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IHRoZSBhcHByb3ByaWF0ZSB0ZXN0 IGZvbGRlciBiYXNlZCBvbgorICAgICAgICBzZXJ2ZXIgdmVyc2lvbiBhbmQgdGhlaXIgZXhpc3Rl bmNlLgorCisgICAgICAgIDpwYXJhbSBtb2R1bGVfcGF0aDogUGF0aCBvZiB0aGUgbW9kdWxlIHRv IGJlIHRlc3RlZC4KKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgICMgSm9p biB0aGUgYXBwbGljYXRpb24gcGF0aCwgbW9kdWxlIHBhdGggYW5kIHRlc3RzIGZvbGRlcgorICAg ICAgICB0ZXN0c19mb2xkZXJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgo X19maWxlX18pKQorCisgICAgICAgICMgQSBmb2xkZXIgbmFtZSBtYXRjaGluZyB0aGUgU2VydmVy IFR5cGUgKHBnLCBwcGFzKSB0YWtlcyBwcmlvcml0eSBzbworICAgICAgICAjIGNoZWNrIHdoZXRo ZXIgdGhhdCBleGlzdHMgb3Igbm90LiBJZiBzbywgdGhhbiBjaGVjayB0aGUgdmVyc2lvbgorICAg ICAgICAjIGZvbGRlciBpbiBpdCwgZWxzZSBsb29rIGRpcmVjdGx5IGluIHRoZSAndGVzdHMnIGZv bGRlci4KKyAgICAgICAgYWJzb2x1dGVfcGF0aCA9IG9zLnBhdGguam9pbih0ZXN0c19mb2xkZXJf cGF0aCwgc2VsZi5zZXJ2ZXJbJ3R5cGUnXSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3Rz KGFic29sdXRlX3BhdGgpOgorICAgICAgICAgICAgYWJzb2x1dGVfcGF0aCA9IHRlc3RzX2ZvbGRl cl9wYXRoCisKKyAgICAgICAgIyBJdGVyYXRlIHRoZSB2ZXJzaW9uIG1hcHBpbmcgZGlyZWN0b3Jp ZXMuCisgICAgICAgIGZvciB2ZXJzaW9uX21hcHBpbmcgaW4gZ2V0X3ZlcnNpb25fbWFwcGluZ19k aXJlY3RvcmllcygKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsndHlwZSddKToKKyAgICAg ICAgICAgIGlmIHZlcnNpb25fbWFwcGluZ1snbnVtYmVyJ10gPiBcCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyX2luZm9ybWF0aW9uWydzZXJ2ZXJfdmVyc2lvbiddOgorICAgICAgICAg ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGNvbXBsZXRlX3BhdGggPSBvcy5wYXRoLmpv aW4oYWJzb2x1dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmVyc2lvbl9tYXBwaW5nWyduYW1lJ10pCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhp c3RzKGNvbXBsZXRlX3BhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZV9wYXRo CisKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjb21wYXJlKHNlbGYpOgorICAgICAg ICBjb21wX3VybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnRyYW5zX2lkLCBzZWxmLnNlcnZlcl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zcmNfZGJfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3JjX3NjaGVtYV9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyX2RiX2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcl9zY2hlbWFfaWQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIu Z2V0KGNvbXBfdXJsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVj b2RlKCd1dGYtOCcpKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIiBUaGlz IGZ1bmN0aW9uIHdpbGwgdGVzdCB0aGUgc2NoZW1hIGRpZmYuIiIiCisKKyAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5nZXQoInNjaGVtYV9kaWZmL2luaXRpYWxpemUiKQorICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNw b25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAg ICAgICAgc2VsZi50cmFuc19pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnc2NoZW1hRGlmZlRy YW5zSWQnXQorCisgICAgICAgIHVybCA9ICdzY2hlbWFfZGlmZi9zZXJ2ZXIvY29ubmVjdC97fScu Zm9ybWF0KHNlbGYuc2VydmVyX2lkKQorICAgICAgICBkYXRhID0geydwYXNzd29yZCc6IHNlbGYu c2VydmVyWydkYl9wYXNzd29yZCddfQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBv c3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1 bXBzKGRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90 eXBlPSdodG1sL2pzb24nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisg ICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCgKKyAgICAgICAgICAgICdzY2hlbWFf ZGlmZi9kYXRhYmFzZS9jb25uZWN0L3swfS97MX0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBz ZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICBzZWxmLnNyY19kYl9pZCkpCisgICAgICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCgKKyAgICAgICAgICAgICdzY2hlbWFfZGlmZi9k YXRhYmFzZS9jb25uZWN0L3swfS97MX0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNl cnZlcl9pZCwKKyAgICAgICAgICAgICAgICBzZWxmLnRhcl9kYl9pZCkpCisKKyAgICAgICAgcmVz cG9uc2VfZGF0YSA9IHNlbGYuY29tcGFyZSgpCisKKyAgICAgICAgZGlmZl9maWxlID0gb3MucGF0 aC5qb2luKHNlbGYuc3FsX2ZvbGRlciwgJ2RpZmZfezB9LnNxbCcuZm9ybWF0KAorICAgICAgICAg ICAgc3RyKHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5KSkpKQorICAgICAgICBmaWxlX29iaiA9IG9w ZW4oZGlmZl9maWxlLCAnYScpCisKKyAgICAgICAgZm9yIGRpZmYgaW4gcmVzcG9uc2VfZGF0YVsn ZGF0YSddOgorICAgICAgICAgICAgaWYgZGlmZlsndHlwZSddIGluIHNlbGYubm9kZXM6CisgICAg ICAgICAgICAgICAgc3JjX29ial9vaWQgPSB0YXJfb2JqX29pZCA9IE5vbmUKKyAgICAgICAgICAg ICAgICBpZiBkaWZmWydzdGF0dXMnXSA9PSAnU291cmNlIE9ubHknIG9yXAorICAgICAgICAgICAg ICAgICAgICAgICAgZGlmZlsnc3RhdHVzJ10gPT0gJ1RhcmdldCBPbmx5JzoKKyAgICAgICAgICAg ICAgICAgICAgc3JjX29ial9vaWQgPSB0YXJfb2JqX29pZCA9IGRpZmZbJ29pZCddCisgICAgICAg ICAgICAgICAgZWxpZiBkaWZmWydzdGF0dXMnXSA9PSAnRGlmZmVyZW50JzoKKyAgICAgICAgICAg ICAgICAgICAgc3JjX29ial9vaWQgPSBkaWZmWydzb3VyY2Vfb2lkJ10KKyAgICAgICAgICAgICAg ICAgICAgdGFyX29ial9vaWQgPSBkaWZmWyd0YXJnZXRfb2lkJ10KKworICAgICAgICAgICAgICAg IGlmIHNyY19vYmpfb2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB1cmwgPSAn c2NoZW1hX2RpZmYvZGRsX2NvbXBhcmUvezB9L3sxfS97Mn0vezN9L3s0fS97NX0vJyBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICd7Nn0vezd9L3s4fS97OX0vezEwfS8nLmZvcm1hdChzZWxm LnRyYW5zX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNyY19kYl9pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3JjX3Nj aGVtYV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJfZGJfaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcl9zY2hl bWFfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzcmNfb2JqX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhcl9vYmpfb2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZlsndHlwZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZlsn c3RhdHVzJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVy LmdldCh1cmwpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9u c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9 IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICAg ICAgICAgIGZpbGVfb2JqLndyaXRlKHJlc3BvbnNlX2RhdGFbJ2RpZmZfZGRsJ10pCisKKyAgICAg ICAgZmlsZV9vYmouY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN0b3JlX3Nj aGVtYShzZWxmLnNlcnZlciwgc2VsZi50YXJfZGF0YWJhc2UsICd0YXJnZXQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlmZl9maWxlKQorCisgICAgICAgICAgICBvcy5yZW1vdmUoZGlm Zl9maWxlKQorCisgICAgICAgICAgICByZXNwb25zZV9kYXRhID0gc2VsZi5jb21wYXJlKCkKKyAg ICAgICAgICAgIGZvciBkaWZmIGluIHJlc3BvbnNlX2RhdGFbJ2RhdGEnXToKKyAgICAgICAgICAg ICAgICBpZiBkaWZmWyd0eXBlJ10gaW4gc2VsZi5ub2RlczoKKyAgICAgICAgICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbHMoZGlmZlsnc3RhdHVzJ10sICdJZGVudGljYWwnKQorICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBvcy5yZW1vdmUoZGlmZl9maWxlKQor CisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRyb3Ag dGhlIGFkZGVkIGRhdGFiYXNlIiIiCisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJf Y29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3Jk J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNl cnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10pCisgICAgICAgIHV0aWxzLmRyb3Bf ZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5zcmNfZGF0YWJhc2UpCisgICAgICAgIGNvbm5lY3Rp b24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFt ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10pCisg ICAgICAgIHV0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi50YXJfZGF0YWJhc2Up CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy91dGlscy5w eSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9kaWZmL3Rlc3RzL3V0aWxzLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZWU1MTNlNDkwCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvdGVzdHMvdXRpbHMucHkKQEAgLTAsMCAr MSwxMDMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxv cG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBzeXMKK2ltcG9ydCB0 cmFjZWJhY2sKKworZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1wb3J0IFwKKyAgICB1dGlscyBhcyBzY2hlbWFf dXRpbHMKKworCitkZWYgcmVzdG9yZV9zY2hlbWEoc2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFt ZSwgc3FsX3BhdGgpOgorICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihk Yl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJb J3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCisKKyAgICBvbGRfaXNvbGF0aW9uX2xldmVsID0gY29ubmVjdGlvbi5pc29s YXRpb25fbGV2ZWwKKyAgICBjb25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwoMCkKKyAgICBw Z19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisKKyAgICBzcWwgPSAnJworICAgIHdpdGgg b3BlbihzcWxfcGF0aCwgJ3InKSBhcyBjb250ZW50X2ZpbGU6CisgICAgICAgIHNxbCA9IGNvbnRl bnRfZmlsZS5yZWFkKCkKKyAgICBwZ19jdXJzb3IuZXhlY3V0ZShzcWwpCisgICAgY29ubmVjdGlv bi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25fbGV2ZWwpCisgICAgY29ubmVjdGlv bi5jb21taXQoKQorCisgICAgU1FMID0gIiIiU0VMRUNUCisgICAgbnNwLm9pZAorRlJPTQorICAg IHBnX25hbWVzcGFjZSBuc3AKKyAgICBXSEVSRSBuc3AubnNwbmFtZSA9ICd7MH0nIiIiLmZvcm1h dChzY2hlbWFfbmFtZSkKKworICAgIHBnX2N1cnNvci5leGVjdXRlKFNRTCkKKyAgICBzY2hlbWEg PSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgIHNjaGVtYV9pZCA9IE5vbmUKKyAgICBpZiBzY2hl bWE6CisgICAgICAgIHNjaGVtYV9pZCA9IHNjaGVtYVswXQorICAgIGNvbm5lY3Rpb24uY2xvc2Uo KQorICAgIHJldHVybiBzY2hlbWFfaWQKKworCitkZWYgY3JlYXRlX3NjaGVtYShzZXJ2ZXIsIGRi X25hbWUsIHNjaGVtYV9uYW1lKToKKyAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5l Y3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgIHJldHVybiBzY2hlbWFfdXRpbHMuY3JlYXRlX3NjaGVt YShjb25uZWN0aW9uLCBzY2hlbWFfbmFtZSkKKworCitkZWYgY3JlYXRlX3RhYmxlKHNlcnZlciwg ZGJfbmFtZSwgc2NoZW1hX2lkLCB0YWJsZV9uYW1lLCBxdWVyeSk6CisgICAgIiIiCisgICAgVGhp cyBmdW5jdGlvbiBjcmVhdGVzIGEgdGFibGUgdW5kZXIgcHJvdmlkZWQgc2NoZW1hLgorICAgIDpw YXJhbSBzZXJ2ZXI6IHNlcnZlciBkZXRhaWxzCisgICAgOnR5cGUgc2VydmVyOiBkaWN0CisgICAg OnBhcmFtIGRiX25hbWU6IGRhdGFiYXNlIG5hbWUKKyAgICA6dHlwZSBkYl9uYW1lOiBzdHIKKyAg ICA6cGFyYW0gc2NoZW1hX2lkOiBzY2hlbWEgb2lkCisgICAgOnR5cGUgc2NoZW1hX25hbWU6IGlu dAorICAgIDpwYXJhbSB0YWJsZV9uYW1lOiB0YWJsZSBuYW1lCisgICAgOnR5cGUgdGFibGVfbmFt ZTogc3RyCisgICAgOnJldHVybiB0YWJsZV9pZDogdGFibGUgaWQKKyAgICA6cnR5cGU6IGludAor ICAgICIiIgorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9kYl9jb25u ZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydzc2xtb2RlJ10pCisg ICAgICAgIG9sZF9pc29sYXRpb25fbGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlvbl9sZXZlbAor ICAgICAgICBjb25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwoMCkKKyAgICAgICAgcGdfY3Vy c29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZShxdWVy eSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25f bGV2ZWwpCisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAgICAgIyBHZXQgJ29pZCcg ZnJvbSBuZXdseSBjcmVhdGVkIHRhYmxlCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKCJTRUxF Q1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZT0nezB9JyIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIiBBTkQgcmVsbmFtZXNwYWNlID0gezF9Ii5mb3JtYXQodGFibGVfbmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2NoZW1hX2lkKSkKKyAgICAgICAgdGFibGUgPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAg ICAgICB0YWJsZV9pZCA9ICcnCisgICAgICAgIGlmIHRhYmxlOgorICAgICAgICAgICAgdGFibGVf aWQgPSB0YWJsZVswXQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJu IHRhYmxlX2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50 X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCmluZGV4IDNlMzU1NGU4ZC4u YjBiOGU3ZjRiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGlj L2pzL3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGlj L2pzL3NxbGVkaXRvci5qcwpAQCAtODQsNiArODQsOCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9v bCcsIFsKICAgICAgIHRoaXMuaGFuZGxlci5wcmVmZXJlbmNlcyA9IHRoaXMucHJlZmVyZW5jZXM7 CiAgICAgICB0aGlzLmNvbm5JbnRlcnZhbElkID0gbnVsbDsKICAgICAgIHRoaXMubGF5b3V0ID0g b3B0cy5sYXlvdXQ7CisgICAgICB0aGlzLnNldF9zZXJ2ZXJfdmVyc2lvbihvcHRzLnNlcnZlcl92 ZXIpOworICAgICAgdGhpcy50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjp2aWV3OmluaXRpYWxp c2VkJyk7CiAgICAgfSwKIAogICAgIC8vIEJpbmQgYWxsIHRoZSBldmVudHMKQEAgLTIzMTIsNiAr MjMxNCwxMiBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgfQogICAgICAg fSwKIAorICAgICAgc2V0X3ZhbHVlX3RvX2VkaXRvcjogZnVuY3Rpb24ocXVlcnkpIHsKKyAgICAg ICAgaWYgKHRoaXMuZ3JpZFZpZXcgJiYgdGhpcy5ncmlkVmlldy5xdWVyeV90b29sX29iaiAmJiAh Xy5pc1VuZGVmaW5lZChxdWVyeSkpIHsKKyAgICAgICAgICB0aGlzLmdyaWRWaWV3LnF1ZXJ5X3Rv b2xfb2JqLnNldFZhbHVlKHF1ZXJ5KTsKKyAgICAgICAgfQorICAgICAgfSwKKwogICAgICAgaW5p dF9ldmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAg IC8vIExpc3RlbiB0byB0aGUgZmlsZSBtYW5hZ2VyIGJ1dHRvbiBldmVudHMKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC9kZWZh dWx0L3ByaW1hcnlfa2V5cy5zcWwgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxh dGVzL3NxbGVkaXRvci9zcWwvZGVmYXVsdC9wcmltYXJ5X2tleXMuc3FsCmluZGV4IGE5NmM5Mjhm Ni4uZDFlMzk4NTc5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVt cGxhdGVzL3NxbGVkaXRvci9zcWwvZGVmYXVsdC9wcmltYXJ5X2tleXMuc3FsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC9kZWZhdWx0L3By aW1hcnlfa2V5cy5zcWwKQEAgLTQsNSArNCw1IEBAIFNFTEVDVCBhdC5hdHRuYW1lLCBhdC5hdHRu dW0sIHR5LnR5cG5hbWUKIEZST00gcGdfYXR0cmlidXRlIGF0IExFRlQgSk9JTiBwZ190eXBlIHR5 IE9OICh0eS5vaWQgPSBhdC5hdHR0eXBpZCkKIFdIRVJFIGF0dHJlbGlkPXt7b2JqX2lkfX06Om9p ZCBBTkQgYXR0bnVtID0gQU5ZICgKICAgICAoU0VMRUNUIGNvbi5jb25rZXkgRlJPTSBwZ19jbGFz cyByZWwgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1y ZWwub2lkCi0gICAgQU5EIGNvbi5jb250eXBlPSdwJyBXSEVSRSByZWwucmVsa2luZCBJTiAoJ3In LCdzJywndCcpIEFORCByZWwub2lkID0ge3tvYmpfaWR9fTo6b2lkKTo6b2lkW10pCisgICAgQU5E IGNvbi5jb250eXBlPSdwJyBXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcpIEFORCBy ZWwub2lkID0gKHt7b2JqX2lkfX0pOjpvaWQpOjpvaWRbXSkKIHslIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvZ2V0X2NvbHVtbl90eXBlcy5w eSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9nZXRfY29sdW1uX3R5cGVzLnB5 CmluZGV4IDk5YmNiOWZhOC4uNzRiMmUyZjYwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdXRpbHMvZ2V0X2NvbHVtbl90eXBlcy5weQorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdXRpbHMvZ2V0X2NvbHVtbl90eXBlcy5weQpAQCAtMzUsMTIgKzM1LDEz IEBAIGRlZiBnZXRfY29sdW1uc190eXBlcyhpc19xdWVyeV90b29sLCBjb2x1bW5zX2luZm8sIHRh YmxlX29pZCwgY29ubiwgaGFzX29pZHMpOgogICAgICAgICBjb2x1bW5fdHlwZXNbY29sWyduYW1l J11dID0gY29sX3R5cGUKIAogICAgICAgICBpZiBub3QgaXNfcXVlcnlfdG9vbDoKLSAgICAgICAg ICAgIGNvbF90eXBlWydub3RfbnVsbCddID0gY29sWydub3RfbnVsbCddID0gXAotICAgICAgICAg ICAgICAgIHJzZXRbJ3Jvd3MnXVtrZXldWydub3RfbnVsbCddCisgICAgICAgICAgICBpZiBrZXkg aW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIGNvbF90eXBlWydub3RfbnVsbCddID0g Y29sWydub3RfbnVsbCddID0gXAorICAgICAgICAgICAgICAgICAgICByc2V0Wydyb3dzJ11ba2V5 XVsnbm90X251bGwnXQogCi0gICAgICAgICAgICBjb2xfdHlwZVsnaGFzX2RlZmF1bHRfdmFsJ10g PSBcCi0gICAgICAgICAgICAgICAgY29sWydoYXNfZGVmYXVsdF92YWwnXSA9IFwKLSAgICAgICAg ICAgICAgICByc2V0Wydyb3dzJ11ba2V5XVsnaGFzX2RlZmF1bHRfdmFsJ10KKyAgICAgICAgICAg ICAgICBjb2xfdHlwZVsnaGFzX2RlZmF1bHRfdmFsJ10gPSBcCisgICAgICAgICAgICAgICAgICAg IGNvbFsnaGFzX2RlZmF1bHRfdmFsJ10gPSBcCisgICAgICAgICAgICAgICAgICAgIHJzZXRbJ3Jv d3MnXVtrZXldWydoYXNfZGVmYXVsdF92YWwnXQogCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg ICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxz L2NzcmYucHkgYi93ZWIvcGdhZG1pbi91dGlscy9jc3JmLnB5CmluZGV4IGRmZWIzYTZhOS4uMDJj MmRjMDBmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9jc3JmLnB5CisrKyBiL3dlYi9w Z2FkbWluL3V0aWxzL2NzcmYucHkKQEAgLTM0LDYgKzM0LDggQEAgY2xhc3MgX1BHQ1NSRlByb3Rl Y3QoQ1NSRlByb3RlY3QpOgogICAgICAgICAgICAgJ3BnYWRtaW4udG9vbHMuZGF0YWdyaWQucGFu ZWwnLAogICAgICAgICAgICAgJ3BnYWRtaW4udG9vbHMuZGVidWdnZXIuaW5pdGlhbGl6ZV90YXJn ZXQnLAogICAgICAgICAgICAgJ3BnYWRtaW4udG9vbHMuZGVidWdnZXIuZGlyZWN0X25ldycsCisg ICAgICAgICAgICAncGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5wYW5lbCcsCisgICAgICAgICAg ICAncGdhZG1pbi50b29scy5zY2hlbWFfZGlmZi5kZGxfY29tcGFyZScsCiAgICAgICAgIF0KIAog ICAgICAgICBmb3IgZXhlbXB0IGluIGV4ZW1wdF92aWV3czoKZGlmZiAtLWdpdCBhL3dlYi93ZWJw YWNrLmNvbmZpZy5qcyBiL3dlYi93ZWJwYWNrLmNvbmZpZy5qcwppbmRleCBhNjc0OWE1ZWQuLjIz MDE3MmNmMCAxMDA2NDQKLS0tIGEvd2ViL3dlYnBhY2suY29uZmlnLmpzCisrKyBiL3dlYi93ZWJw YWNrLmNvbmZpZy5qcwpAQCAtMzU2LDYgKzM1Niw3IEBAIG1vZHVsZS5leHBvcnRzID0gW3sKICAg ICBzbGlja2dyaWQ6IHNvdXJjZURpciArICcvYnVuZGxlL3NsaWNrZ3JpZC5qcycsCiAgICAgc3Fs ZWRpdG9yOiAnLi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpz JywKICAgICBkZWJ1Z2dlcl9kaXJlY3Q6ICcuL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGlj L2pzL2RpcmVjdC5qcycsCisgICAgc2NoZW1hX2RpZmY6ICcuL3BnYWRtaW4vdG9vbHMvc2NoZW1h X2RpZmYvc3RhdGljL2pzL3NjaGVtYV9kaWZmX2hvb2suanMnLAogICAgIGZpbGVfdXRpbHM6ICcu L3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL3V0aWxpdHkuanMnLAogICAgICdw Z2FkbWluLnN0eWxlJzogcGdhZG1pbkNzc1N0eWxlcywKICAgICBwZ2FkbWluOiBwZ2FkbWluU2Nz c1N0eWxlcywKQEAgLTQ5Miw3ICs0OTMsOCBAQCBtb2R1bGUuZXhwb3J0cyA9IFt7CiAgICAgICAg ICcscGdhZG1pbi50b29scy5pbXBvcnRfZXhwb3J0JyArCiAgICAgICAgICcscGdhZG1pbi50b29s cy5kZWJ1Z2dlci5jb250cm9sbGVyJyArCiAgICAgICAgICcscGdhZG1pbi50b29scy5kZWJ1Z2dl ci5kaXJlY3QnICsKLSAgICAgICAgJyxwZ2FkbWluLm5vZGUucGdhX2pvYicsCisgICAgICAgICcs cGdhZG1pbi5ub2RlLnBnYV9qb2InICsKKyAgICAgICAgJyxwZ2FkbWluLnRvb2xzLnNjaGVtYV9k aWZmJywKICAgICAgIH0sCiAgICAgfSwgewogICAgICAgdGVzdDogcmVxdWlyZS5yZXNvbHZlKCdz bmFwc3ZnJyksCmRpZmYgLS1naXQgYS93ZWIvd2VicGFjay5zaGltLmpzIGIvd2ViL3dlYnBhY2su c2hpbS5qcwppbmRleCAyZTJiN2VkNDEuLmRhYTRjOGU5OSAxMDA2NDQKLS0tIGEvd2ViL3dlYnBh Y2suc2hpbS5qcworKysgYi93ZWIvd2VicGFjay5zaGltLmpzCkBAIC0yNzgsNiArMjc4LDggQEAg dmFyIHdlYnBhY2tTaGltQ29uZmlnID0gewogICAgICdwZ2FkbWluLnRvb2xzLmltcG9ydF9leHBv cnQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2ltcG9ydF9leHBvcnQv c3RhdGljL2pzL2ltcG9ydF9leHBvcnQnKSwKICAgICAncGdhZG1pbi50b29scy5tYWludGVuYW5j ZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3Rh dGljL2pzL21haW50ZW5hbmNlJyksCiAgICAgJ3BnYWRtaW4udG9vbHMucmVzdG9yZSc6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9y ZScpLAorICAgICdwZ2FkbWluLnRvb2xzLnNjaGVtYV9kaWZmJzogcGF0aC5qb2luKF9fZGlybmFt ZSwgJy4vcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMvanMvc2NoZW1hX2RpZmYnKSwK KyAgICAncGdhZG1pbi50b29scy5zY2hlbWFfZGlmZl91aSc6IHBhdGguam9pbihfX2Rpcm5hbWUs ICcuL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYvc3RhdGljL2pzL3NjaGVtYV9kaWZmX3VpJyks CiAgICAgJ3BnYWRtaW4udG9vbHMudXNlcl9tYW5hZ2VtZW50JzogcGF0aC5qb2luKF9fZGlybmFt ZSwgJy4vcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFuYWdl bWVudCcpLAogICAgICdwZ2FkbWluLnVzZXJfbWFuYWdlbWVudC5jdXJyZW50X3VzZXInOiAnL3Vz ZXJfbWFuYWdlbWVudC9jdXJyZW50X3VzZXInLAogICAgICdzbGljay5wZ2FkbWluLmVkaXRvcnMn OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzLy4uL3N0YXRpYy9qcy9zbGlj a2dyaWQvZWRpdG9ycycpLAo= --000000000000fc4016059a22ab61--