<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>227832</bug_id>
          
          <creation_ts>2021-07-09 01:37:43 -0700</creation_ts>
          <short_desc>[JSC] Intl.DisplayNames v2</short_desc>
          <delta_ts>2021-08-27 07:03:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229608</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775945</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-09 01:37:43 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776194</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-10 17:09:57 -0700</bug_when>
    <thetext>https://github.com/tc39/intl-displaynames-v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776199</commentid>
    <comment_count>2</comment_count>
      <attachid>433283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-10 18:46:58 -0700</bug_when>
    <thetext>Created attachment 433283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776204</commentid>
    <comment_count>3</comment_count>
      <attachid>433286</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-11 00:50:40 -0700</bug_when>
    <thetext>Created attachment 433286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777467</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-16 01:38:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/80674704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782681</commentid>
    <comment_count>5</comment_count>
      <attachid>435125</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-07 03:20:35 -0700</bug_when>
    <thetext>Created attachment 435125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785734</commentid>
    <comment_count>6</comment_count>
      <attachid>435951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-20 01:25:34 -0700</bug_when>
    <thetext>Created attachment 435951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786025</commentid>
    <comment_count>7</comment_count>
      <attachid>435951</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-08-20 15:43:36 -0700</bug_when>
    <thetext>Comment on attachment 435951
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=435951&amp;action=review

r=me with comments

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:210
&gt; +        // If code does not matches the unicode_language_id production, throw a RangeError exception
&gt; +        if (!isUnicodeLanguageId(code)) {
&gt; +            throwRangeError(globalObject, scope, &quot;argument is not a language id&quot;_s);

Hmm, I feel like this comment doesn&apos;t add any information. (Ditto for the region and script ones.)

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:295
&gt; +        // Convert code to legacy names since ICU requires legacy names.

Ooh, this could use the helper function I suggested in the Locale Info patch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786137</commentid>
    <comment_count>8</comment_count>
      <attachid>435951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-21 08:08:44 -0700</bug_when>
    <thetext>Comment on attachment 435951
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=435951&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:210
&gt;&gt; +            throwRangeError(globalObject, scope, &quot;argument is not a language id&quot;_s);
&gt; 
&gt; Hmm, I feel like this comment doesn&apos;t add any information. (Ditto for the region and script ones.)

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:295
&gt;&gt; +        // Convert code to legacy names since ICU requires legacy names.
&gt; 
&gt; Ooh, this could use the helper function I suggested in the Locale Info patch too.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786138</commentid>
    <comment_count>9</comment_count>
      <attachid>436073</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-21 08:21:21 -0700</bug_when>
    <thetext>Created attachment 436073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786141</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-21 09:17:08 -0700</bug_when>
    <thetext>Committed r281375 (240790@main): &lt;https://commits.webkit.org/240790@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436073.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433283</attachid>
            <date>2021-07-10 18:46:58 -0700</date>
            <delta_ts>2021-07-11 00:50:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227832-20210710184657.patch</filename>
            <type>text/plain</type>
            <size>24158</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmRjMmY5MjNjZmY1NzFhNWMxZmQwZDgyMmQ3ZDBjNGUyZDY4ZTZkLi44MGY3ZDg0ZmEzNWNlMTI0
NjU2NjFmYjcwODIzMjBiZmFkZTU3N2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxDYWNoZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxDYWNoZTo6Z2V0RmllbGREaXNwbGF5TmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ2Fj
aGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SW50bERpc3BsYXlOYW1lczo6b2YgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6
bGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpp
c1VuaWNvZGVFeHRlbnNpb25UeXBlQ29tcG9uZW50KToKKyAgICAgICAgKiBydW50aW1lL0ludGxP
YmplY3QuaDoKKwogMjAyMS0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIFdvcmthcm91bmQgdGVzdDI2Mi5yZXBvcnQgYnVnIGJ5IG1ha2lu
ZyAkIHByb3BlcnRpZXMgZW51bWVyYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGM2MDE5ZjQ1ZmQ5OGI0MzdhNWJmNmUy
NjU4NGEwYTM0NjMyZmFkYy4uMzNlMmM3ZTEyYmMzZDg3YjNiNThmOGFlZTkyNTI3NjlmOGI2OTU5
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC0xMTYsNiArMTE2LDcgQEAKICAgICBtYWNybyhleGVjKSBcCiAgICAgbWFjcm8o
ZXhlY3V0aW9uQ291bnQpIFwKICAgICBtYWNybyhleGl0S2luZCkgXAorICAgIG1hY3JvKGZhbGxi
YWNrKSBcCiAgICAgbWFjcm8oZmxhZ3MpIFwKICAgICBtYWNybyhmb3JFYWNoKSBcCiAgICAgbWFj
cm8oZm9ybWF0TWF0Y2hlcikgXApAQCAtMTU0LDYgKzE1NSw3IEBACiAgICAgbWFjcm8oamV0dGlz
b25SZWFzb24pIFwKICAgICBtYWNybyhqb2luKSBcCiAgICAgbWFjcm8obGFuZ3VhZ2UpIFwKKyAg
ICBtYWNybyhsYW5ndWFnZURpc3BsYXkpIFwKICAgICBtYWNybyhsYXN0SW5kZXgpIFwKICAgICBt
YWNybyhsZW5ndGgpIFwKICAgICBtYWNybyhsaW5lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENhY2hlLmNwcAppbmRleCA0NDkzOWE0MzgyY2YxNWJjZDA3NmRhZmRlZTg1
ODMzZjMwMjcyMTM5Li5iMTdkNzM0MGRmNTY1YTQ0MDgxNTAwNzQ5NTA1Njc3MjFhY2ExYmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDYWNoZS5jcHAKQEAgLTUzLDQg
KzUzLDE2IEBAIFZlY3RvcjxVQ2hhciwgMzI+IEludGxDYWNoZTo6Z2V0QmVzdERhdGVUaW1lUGF0
dGVybihjb25zdCBDU3RyaW5nJiBsb2NhbGUsIGNvbnN0CiAgICAgcmV0dXJuIHBhdHRlcm5CdWZm
ZXI7CiB9CiAKK1ZlY3RvcjxVQ2hhciwgMzI+IEludGxDYWNoZTo6Z2V0RmllbGREaXNwbGF5TmFt
ZShjb25zdCBDU3RyaW5nJiBsb2NhbGUsIFVEYXRlVGltZVBhdHRlcm5GaWVsZCBmaWVsZCwgVURh
dGVUaW1lUEdEaXNwbGF5V2lkdGggd2lkdGgsIFVFcnJvckNvZGUmIHN0YXR1cykKK3sKKyAgICBh
dXRvIHNoYXJlZEdlbmVyYXRvciA9IGdldFNoYXJlZFBhdHRlcm5HZW5lcmF0b3IobG9jYWxlLCBz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRGaWVsZERpc3BsYXlOYW1lLCBzaGFyZWRHZW5lcmF0
b3IsIGZpZWxkLCB3aWR0aCwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2Fj
aGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDYWNoZS5oCmluZGV4IDQy
ZDVlMTE0YjQ0NTZjOTY0N2ZkY2VhNTc2OGZlOWUzNDY1MTkxMWIuLjA1OGIyNDIzNzg2ZDMzMDYx
ZjMxNjM4MjliZDQzZDM5MTY3ZmY4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDYWNoZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEludGxDYWNoZSB7CiAgICAgSW50
bENhY2hlKCkgPSBkZWZhdWx0OwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gZ2V0QmVzdERhdGVU
aW1lUGF0dGVybihjb25zdCBDU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBza2VsZXRvbiwg
dW5zaWduZWQgc2tlbGV0b25TaXplLCBVRXJyb3JDb2RlJik7CisgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gZ2V0RmllbGREaXNwbGF5TmFtZShjb25zdCBDU3RyaW5nJiBsb2NhbGUsIFVEYXRlVGltZVBh
dHRlcm5GaWVsZCwgVURhdGVUaW1lUEdEaXNwbGF5V2lkdGgsIFVFcnJvckNvZGUmKTsKIAogcHJp
dmF0ZToKICAgICBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yKiBnZXRTaGFyZWRQYXR0ZXJuR2Vu
ZXJhdG9yKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgVUVycm9yQ29kZSYgc3RhdHVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAppbmRl
eCA0MmI3YjBjMDFiYWE4NzAzNGVhYTE0NjBmNzE0YWYzNjdiY2IwNTE2Li40NDljZTA0YjJmNDBl
ZmIyODZhNzcxYmQ5YTY4Zjk2NjY5Mjc2NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKIAorI2luY2x1
ZGUgIkludGxDYWNoZS5oIgogI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC05NSw3
ICs5Niw3IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgbV9zdHlsZSA9IGludGxPcHRp
b248U3R5bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUs
IHsgeyAibmFycm93Il9zLCBTdHlsZTo6TmFycm93IH0sIHsgInNob3J0Il9zLCBTdHlsZTo6U2hv
cnQgfSwgeyAibG9uZyJfcywgU3R5bGU6OkxvbmcgfSB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIg
XCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBvciBcImxvbmdcIiJfcywgU3R5bGU6OkxvbmcpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBhdXRvIHR5cGUgPSBp
bnRsT3B0aW9uPHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwg
eyAicmVnaW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQg
fSwgeyAiY3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0gfSwgInR5cGUgbXVzdCBiZSBlaXRo
ZXIgXCJsYW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlwdFwiLCBvciBcImN1cnJlbmN5XCIi
X3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxzdGQ6Om9wdGlv
bmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUs
IHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJlZ2lvbiJfcywgVHlwZTo6
UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsgImN1cnJlbmN5Il9zLCBU
eXBlOjpDdXJyZW5jeSB9LCB7ICJjYWxlbmRhciJfcywgVHlwZTo6Q2FsZW5kYXIgfSwgeyAiZGF0
ZVRpbWVGaWVsZCJfcywgVHlwZTo6RGF0ZVRpbWVGaWVsZCB9IH0sICJ0eXBlIG11c3QgYmUgZWl0
aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgXCJjdXJyZW5jeVwiLCBc
ImNhbGVuZGFyXCIsIG9yIFwiZGF0ZVRpbWVGaWVsZFwiIl9zLCBzdGQ6Om51bGxvcHQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCF0eXBlKSB7CiAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90
IGJlIHVuZGVmaW5lZCJfcyk7CkBAIC0xMDMsNyArMTA0LDEwIEBAIHZvaWQgSW50bERpc3BsYXlO
YW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhCiAgICAgfQogICAgIG1fdHlwZSA9IHR5cGUudmFsdWUoKTsKIAotICAgIG1fZmFsbGJh
Y2sgPSBpbnRsT3B0aW9uPEZhbGxiYWNrPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCB7IHsgImNvZGUiX3MsIEZhbGxiYWNrOjpD
b2RlIH0sIHsgIm5vbmUiX3MsIEZhbGxiYWNrOjpOb25lIH0gfSwgImZhbGxiYWNrIG11c3QgYmUg
ZWl0aGVyIFwiY29kZVwiIG9yIFwibm9uZVwiIl9zLCBGYWxsYmFjazo6Q29kZSk7CisgICAgbV9m
YWxsYmFjayA9IGludGxPcHRpb248RmFsbGJhY2s+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+ZmFsbGJhY2ssIHsgeyAiY29kZSJfcywgRmFsbGJhY2s6OkNvZGUgfSwg
eyAibm9uZSJfcywgRmFsbGJhY2s6Ok5vbmUgfSB9LCAiZmFsbGJhY2sgbXVzdCBiZSBlaXRoZXIg
XCJjb2RlXCIgb3IgXCJub25lXCIiX3MsIEZhbGxiYWNrOjpDb2RlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgbV9sYW5ndWFnZURpc3BsYXkgPSBpbnRs
T3B0aW9uPExhbmd1YWdlRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sYW5ndWFnZURpc3BsYXksIHsgeyAiZGlhbGVjdCJfcywgTGFuZ3VhZ2VEaXNwbGF5
OjpEaWFsZWN0IH0sIHsgInN0YW5kYXJkIl9zLCBMYW5ndWFnZURpc3BsYXk6OlN0YW5kYXJkIH0g
fSwgImxhbmd1YWdlRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImRpYWxlY3RcIiBvciBcInN0YW5k
YXJkXCIiX3MsIExhbmd1YWdlRGlzcGxheTo6RGlhbGVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKIAogI2lmIEhBVkUoSUNVX1VfTE9DQUxFX0RJU1BMQVlfTkFN
RVMpCkBAIC0xMTEsOSArMTE1LDggQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXpl
RGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIFVE
aXNwbGF5Q29udGV4dCBjb250ZXh0c1tdID0gewogICAgICAgICAvLyBlbl9HQiBkaXNwbGF5cyBh
cyAnRW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pJyAoU3RhbmRhcmQgTmFtZXMpIG9yICdCcml0aXNo
IEVuZ2xpc2gnIChEaWFsZWN0IE5hbWVzKS4KLSAgICAgICAgLy8gV2UgdXNlIERpYWxlY3QgTmFt
ZXMgaGVyZSwgYWxpZ25lZCB0byB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMgZHJhZnQgYW5kIFY4
J3MgYmVoYXZpb3IuCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2Fs
LWludGwtZGlzcGxheW5hbWVzI2xhbmd1YWdlLWRpc3BsYXktbmFtZXMKLSAgICAgICAgVURJU1BD
VFhfRElBTEVDVF9OQU1FUywKKyAgICAgICAgKG1fdHlwZSA9PSBUeXBlOjpMYW5ndWFnZSAmJiBt
X2xhbmd1YWdlRGlzcGxheSA9PSBMYW5ndWFnZURpc3BsYXk6OlN0YW5kYXJkKSA/IFVESVNQQ1RY
X1NUQU5EQVJEX05BTUVTIDogVURJU1BDVFhfRElBTEVDVF9OQU1FUywKIAogICAgICAgICAvLyBD
YXBpdGFpbGl6YXRpb24gbW9kZSBjYW4gYmUgcGlja2VkIGZyb20gc2V2ZXJhbCBvcHRpb25zLiBQ
b3NzaWJseSBlaXRoZXIgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSBvciBVRElTUENUWF9D
QVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBpcwogICAgICAgICAvLyBwcmVmZXJhYmxlIGlu
IEludGwuRGlzcGxheU5hbWVzLiBXZSB1c2UgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NU
QU5EQUxPTkUgYmVjYXVzZSBpdCBtYWtlcyBzdGFuZGFsb25lIGRhdGUgZm9ybWF0IGJldHRlciAo
ZnIgIkp1aWxsZXQgMjAwOCIgaW4gSUNVIHRlc3Qgc3VpdGVzKSwKQEAgLTE1MywxMCArMTU2LDkx
IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgYXV0byBjb2RlID0gY29kZVZhbHVlLnRv
V1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKIAorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1l
cy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICBhdXRvIGNhbm9uaWNhbGl6
ZUNvZGVGb3JEaXNwbGF5TmFtZXMgPSBbXShUeXBlIHR5cGUsIFN0cmluZyYmIGNvZGUpIC0+IENT
dHJpbmcgeworICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworICAgICAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpMYW5ndWFnZTogeworICAgICAgICAgICAg
Ly8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gbG93ZXIgY2FzZSBh
cyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjb2RlLmFzY2lp
KCk7CisgICAgICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3VsdC5tdXRhYmxlRGF0YSgp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxl
bmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRv
QVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlJlZ2lvbjogeworICAgICAgICAgICAg
Ly8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBh
cyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjb2RlLmFzY2lp
KCk7CisgICAgICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3VsdC5tdXRhYmxlRGF0YSgp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxl
bmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRv
QVNDSUlVcHBlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAgICAgICAgICAg
Ly8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIg
aW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0aGlyZCBhbmQg
Zm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2NyaWJlZCBpbiA2
LjEuCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgICAg
IGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbMF0g
PSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAg
ICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRl
eF0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFR5cGU6OkN1cnJlbmN5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlOjpDYWxlbmRhcjogeworICAgICAgICAg
ICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gbG93ZXIgY2Fz
ZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjb2RlLmFz
Y2lpKCk7CisgICAgICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3VsdC5tdXRhYmxlRGF0
YSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0
Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9
IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OkRhdGVUaW1lRmllbGQ6IHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7CisgICAgQ1N0cmluZyBj
YW5vbmljYWxDb2RlOworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5n
dWFnZTogeworICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVf
bGFuZ3VhZ2VfaWQgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgorICAg
ICAgICBpZiAoIWlzVW5pY29kZUxhbmd1YWdlSWQoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgbGFuZ3Vh
Z2UgaWQiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBj
YW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdU
Rk1vdmUoY29kZSkpOworICAgICAgICAvLyBEbyBub3QgdXNlIHVsZG5fbGFuZ3VhZ2VEaXNwbGF5
TmFtZSBzaW5jZSBpdCBpcyBub3QgZXhwZWN0ZWQgb25lIGZvciB0aGlzICJsYW5ndWFnZSIgdHlw
ZS4gSXQgcmV0dXJucyAiZW4tVVMiIGZvciAiZW4tVVMiIGNvZGUsIGluc3RlYWQgb2YgIkFtZXJp
Y2FuIEVuZ2xpc2giLgorICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24odWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIGNhbm9uaWNh
bENvZGUuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
eXBlOjpSZWdpb246IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1
bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2Vw
dGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBu
b3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKyAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFt
ZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdl
dCgpLCBjYW5vbmljYWxDb2RlLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3Qg
bWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFu
Z2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29k
ZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
YXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7CisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICB9CisgICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5vbmljYWxpemVDb2Rl
Rm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7CisgICAgICAgIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERpc3BsYXlOYW1lLCBtX2Rp
c3BsYXlOYW1lcy5nZXQoKSwgY2Fub25pY2FsQ29kZS5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OiB7CiAgICAgICAgIC8vIFdl
IGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1cnJlbmN5Ii4gVGhpcyBp
cyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KICAgICAgICAgLy8gICAgIDEuIElD
VSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8gVURJU1BDVFhfTEVOR1RI
X1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgLy8gICAgIDIuIFRoZXJlIGlz
IG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURpc3BsYXlOYW1lcyB3aGls
ZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KQEAgLTIwMiw4NCArMjg2LDkw
IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgICAgIC8vIElDVSBBUEkgZG9jdW1lbnQu
CiAgICAgICAgIC8vID4gUmV0dXJucyBwb2ludGVyIHRvIGRpc3BsYXkgc3RyaW5nIG9mICdsZW4n
IFVDaGFycy4gSWYgdGhlIHJlc291cmNlIGRhdGEgY29udGFpbnMgbm8gZW50cnkgZm9yICdjdXJy
ZW5jeScsIHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMgcmV0dXJuZWQuCiAgICAgICAgIGlmIChz
dGF0dXMgPT0gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgJiYgcmVzdWx0ID09IGN1cnJlbmN5KQot
ICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5k
ZWZpbmVkKCkgOiBjb2RlVmFsdWU7CisgICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0g
RmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBTdHJpbmcoY3Vy
cmVuY3ksIDMpKTsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LCBs
ZW5ndGgpKTsKICAgICB9Ci0KLSAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCi0gICAgYXV0byBj
YW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGUpIC0+IENTdHJpbmcgewotICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkp
OwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKLSAgICAgICAgY2hhciogbXV0
YWJsZURhdGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKLSAgICAgICAgICAgIC8vIExldCBjb2Rl
IGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMgZGVzY3JpYmVk
IGluIDYuMS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJl
c3VsdC5sZW5ndGgoKTsgKytpbmRleCkKLSAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRl
eF0gPSB0b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7Ci0gICAgICAgICAgICAv
LyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFz
IGRlc2NyaWJlZCBpbiA2LjEuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCi0gICAgICAgICAgICAgICAgbXV0YWJs
ZURhdGFbaW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogewotICAg
ICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBj
aGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0
aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2Ny
aWJlZCBpbiA2LjEuCi0gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCi0gICAg
ICAgICAgICAgICAgbXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0p
OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxl
bmd0aCgpOyArK2luZGV4KQotICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRv
QVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9OwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFR5
cGU6Okxhbmd1YWdlOiB7Ci0gICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUg
dW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0
aW9uCi0gICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgewotICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZCJfcyk7CisgICAgY2FzZSBUeXBlOjpDYWxlbmRhcjogeworICAgICAgICAv
LyBhLiBJZiBjb2RlIGRvZXMgbm90IG1hdGNoIHRoZSBVbmljb2RlIExvY2FsZSBJZGVudGlmaWVy
IHR5cGUgbm9udGVybWluYWwsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAg
IGlmICghaXNVbmljb2RlRXh0ZW5zaW9uVHlwZUNvbXBvbmVudChjb2RlKSkgeworICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3Qg
YSBjYWxlbmRhciBjb2RlIl9zKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0K
LSAgICAgICAgYXV0byBsYW5ndWFnZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMo
bV90eXBlLCBjb2RlKTsKLSAgICAgICAgLy8gRG8gbm90IHVzZSB1bGRuX2xhbmd1YWdlRGlzcGxh
eU5hbWUgc2luY2UgaXQgaXMgbm90IGV4cGVjdGVkIG9uZSBmb3IgdGhpcyAibGFuZ3VhZ2UiIHR5
cGUuIEl0IHJldHVybnMgImVuLVVTIiBmb3IgImVuLVVTIiBjb2RlLCBpbnN0ZWFkIG9mICJBbWVy
aWNhbiBFbmdsaXNoIi4KLSAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0
aW9uKHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgpLCBsYW5ndWFn
ZS5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5vbmljYWxpemVD
b2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7CisgICAgICAgIGNvbnN0
IGNoYXIqIGljdUNvZGUgPSBjYW5vbmljYWxDb2RlLmRhdGEoKTsKKyAgICAgICAgLy8gQ29udmVy
dCBjb2RlIHRvIGxlZ2FjeSBuYW1lcyBzaW5jZSBJQ1UgcmVxdWlyZXMgbGVnYWN5IG5hbWVzLgor
ICAgICAgICBpZiAoY2Fub25pY2FsQ29kZSA9PSAiZ3JlZ29yeSIpCisgICAgICAgICAgICBpY3VD
b2RlID0gImdyZWdvcmlhbiI7CisgICAgICAgIGVsc2UgaWYgKGNhbm9uaWNhbENvZGUgPT0gImlz
bGFtaWNjIikKKyAgICAgICAgICAgIGljdUNvZGUgPSAiaXNsYW1pYy1jaXZpbCI7CisgICAgICAg
IGVsc2UgaWYgKGNhbm9uaWNhbENvZGUgPT0gImV0aGlvYWEiKQorICAgICAgICAgICAgaWN1Q29k
ZSA9ICJldGhpb3BpYy1hbWV0ZS1hbGVtIjsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVsZG5fa2V5VmFsdWVEaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMu
Z2V0KCksICJjYWxlbmRhciIsIGljdUNvZGUsIGJ1ZmZlcik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIFR5cGU6OlJlZ2lvbjogewotICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90
IG1hdGNoZXMgdGhlIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyBwcm9kdWN0aW9uLCB0aHJvdyBhIFJh
bmdlRXJyb3IgZXhjZXB0aW9uCi0gICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3VidGFnKGNv
ZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3MpOworICAgIGNhc2UgVHlwZTo6RGF0
ZVRpbWVGaWVsZDogeworICAgICAgICAvLyBXZSBkbyBub3QgdXNlIHVsZG5fa2V5VmFsdWVEaXNw
bGF5TmFtZSBzaW5jZSBpdCBjYW5ub3QgaGFuZGxlIG5hcnJvdyBsZW5ndGguCisgICAgICAgIC8v
IEluc3RlYWQsIHdlIHVzZSB1ZGF0cGdfZ2V0RmllbGREaXNwbGF5TmFtZS4KKworICAgICAgICAv
LyBodHRwczovL3RjMzkuZXMvaW50bC1kaXNwbGF5bmFtZXMtdjIvI3NlYy1pc3ZhbGlkZGF0ZXRp
bWVmaWVsZGNvZGUKKyAgICAgICAgYXV0byBpc1ZhbGlkRGF0ZVRpbWVGaWVsZENvZGUgPSBbXShj
b25zdCBTdHJpbmcmIGNvZGUpIC0+IHN0ZDo6b3B0aW9uYWw8VURhdGVUaW1lUGF0dGVybkZpZWxk
PiB7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAiZXJhIl9zKQorICAgICAgICAgICAgICAgIHJl
dHVybiBVREFUUEdfRVJBX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gInllYXIiX3Mp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19ZRUFSX0ZJRUxEOworICAgICAgICAgICAg
aWYgKGNvZGUgPT0gInF1YXJ0ZXIiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19R
VUFSVEVSX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gIm1vbnRoIl9zKQorICAgICAg
ICAgICAgICAgIHJldHVybiBVREFUUEdfTU9OVEhfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29k
ZSA9PSAid2Vla09mWWVhciJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX1dFRUtf
T0ZfWUVBUl9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJ3ZWVrZGF5Il9zKQorICAg
ICAgICAgICAgICAgIHJldHVybiBVREFUUEdfV0VFS0RBWV9GSUVMRDsKKyAgICAgICAgICAgIGlm
IChjb2RlID09ICJkYXkiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19EQVlfRklF
TEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAiZGF5UGVyaW9kIl9zKQorICAgICAgICAgICAg
ICAgIHJldHVybiBVREFUUEdfREFZUEVSSU9EX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUg
PT0gImhvdXIiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19IT1VSX0ZJRUxEOwor
ICAgICAgICAgICAgaWYgKGNvZGUgPT0gIm1pbnV0ZSJfcykKKyAgICAgICAgICAgICAgICByZXR1
cm4gVURBVFBHX01JTlVURV9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJzZWNvbmQi
X3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19TRUNPTkRfRklFTEQ7CisgICAgICAg
ICAgICBpZiAoY29kZSA9PSAidGltZVpvbmVOYW1lIl9zKQorICAgICAgICAgICAgICAgIHJldHVy
biBVREFUUEdfWk9ORV9GSUVMRDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIH07CisKKyAgICAgICAgYXV0byBmaWVsZCA9IGlzVmFsaWREYXRlVGltZUZpZWxkQ29k
ZShjb2RlKTsKKyAgICAgICAgaWYgKCFmaWVsZCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBkYXRlVGltZUZpZWxk
IGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBh
dXRvIHJlZ2lvbiA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2Rl
KTsKLSAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fcmVn
aW9uRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgpLCByZWdpb24uZGF0YSgpLCBidWZm
ZXIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUeXBlOjpTY3JpcHQ6IHsKLSAg
ICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3NjcmlwdF9zdWJ0
YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgotICAgICAgICBpZiAo
IWlzVW5pY29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFn
Il9zKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgVURhdGVUaW1lUEdEaXNw
bGF5V2lkdGggc3R5bGUgPSBVREFUUEdfV0lERTsKKyAgICAgICAgc3dpdGNoIChtX3N0eWxlKSB7
CisgICAgICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAgICAgICBzdHlsZSA9IFVEQVRQR19X
SURFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAg
ICAgICAgICAgc3R5bGUgPSBVREFUUEdfQUJCUkVWSUFURUQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdHlsZTo6TmFycm93OgorICAgICAgICAgICAgc3R5bGUgPSBVREFUUEdf
TkFSUk9XOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBzY3Jp
cHQgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7Ci0gICAg
ICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERpc3Bs
YXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgc2NyaXB0LmRhdGEoKSwgYnVmZmVyKTsKLSAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgYnVmZmVyID0gdm0uaW50bENhY2hlKCkuZ2V0RmllbGRE
aXNwbGF5TmFtZShtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBmaWVsZC52YWx1ZSgpLCBzdHlsZSwg
c3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICAgICAgcmV0
dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0
cmluZyh2bSwgY29kZSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZl
cikpOwogICAgIH0KLSAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewogICAgICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lvbkRp
c3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExFR0FMX0FS
R1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgogICAgICAgICAv
LyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVy
d2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KICAgICAgICAgaWYgKHN0YXR1cyA9
PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJh
Y2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAg
ICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6Tm9uZSkgPyBqc1VuZGVmaW5l
ZCgpIDoganNTdHJpbmcodm0sIFN0cmluZyhjYW5vbmljYWxDb2RlLmRhdGEoKSwgY2Fub25pY2Fs
Q29kZS5sZW5ndGgoKSkpOwogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3BsYXkgbmFtZS4iX3MpOwogICAgIH0K
ICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKQEAgLTI5OCw3ICszODgs
OSBAQCBKU09iamVjdCogSW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdHlw
ZVN0cmluZyhtX3R5cGUpKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBmYWxs
YmFja1N0cmluZyhtX2ZhbGxiYWNrKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+ZmFsbGJhY2ssIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tT
dHJpbmcobV9mYWxsYmFjaykpKTsKKyAgICBpZiAobV90eXBlID09IFR5cGU6Okxhbmd1YWdlKQor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdl
RGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCBsYW5ndWFnZURpc3BsYXlTdHJpbmcobV9s
YW5ndWFnZURpc3BsYXkpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTMyNyw2ICs0
MTksMTAgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJpbmcoVHlwZSB0
eXBlKQogICAgICAgICByZXR1cm4gInNjcmlwdCJfczsKICAgICBjYXNlIFR5cGU6OkN1cnJlbmN5
OgogICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgVHlwZTo6Q2FsZW5kYXI6
CisgICAgICAgIHJldHVybiAiY2FsZW5kYXIiX3M7CisgICAgY2FzZSBUeXBlOjpEYXRlVGltZUZp
ZWxkOgorICAgICAgICByZXR1cm4gImRhdGVUaW1lRmllbGQiX3M7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKQEAgLTM0
NCw0ICs0NDAsMTYgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3Ry
aW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
IH0KIAorQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmlu
ZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXNwbGF5KQoreworICAgIHN3aXRjaCAobGFuZ3Vh
Z2VEaXNwbGF5KSB7CisgICAgY2FzZSBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3Q6CisgICAgICAg
IHJldHVybiAiZGlhbGVjdCJfczsKKyAgICBjYXNlIExhbmd1YWdlRGlzcGxheTo6U3RhbmRhcmQ6
CisgICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzLmgKaW5kZXggODFhZmM5MGViYzZjNGJhYzJjYzUyMTE1Y2UzYjNlYTVkMGZiOTc0Yi4u
NGMzN2U4N2FmOGJlMjZjMmE1M2NjNDlmMjQyY2IxZTFlZGY5NGM2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApAQCAtNzIsMTIgKzcy
LDE0IEBAIGNsYXNzIEludGxEaXNwbGF5TmFtZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiAgICAgZW51bSBjbGFzcyBT
dHlsZSA6IHVpbnQ4X3QgeyBOYXJyb3csIFNob3J0LCBMb25nIH07Ci0gICAgZW51bSBjbGFzcyBU
eXBlIDogdWludDhfdCB7IExhbmd1YWdlLCBSZWdpb24sIFNjcmlwdCwgQ3VycmVuY3kgfTsKKyAg
ICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBD
dXJyZW5jeSwgQ2FsZW5kYXIsIERhdGVUaW1lRmllbGQgfTsKICAgICBlbnVtIGNsYXNzIEZhbGxi
YWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKKyAgICBlbnVtIGNsYXNzIExhbmd1YWdlRGlz
cGxheSA6IHVpbnQ4X3QgeyBEaWFsZWN0LCBTdGFuZGFyZCB9OwogCiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0eXBl
U3RyaW5nKFR5cGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmcoRmFs
bGJhY2spOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKExh
bmd1YWdlRGlzcGxheSk7CiAKICAgICB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlciA9
IElDVURlbGV0ZXI8dWxkbl9jbG9zZT47CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNw
bGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPiBtX2Rpc3BsYXlOYW1lczsKQEAg
LTg4LDYgKzkwLDcgQEAgY2xhc3MgSW50bERpc3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkxvbmcgfTsKICAgICBU
eXBlIG1fdHlwZSB7IFR5cGU6Okxhbmd1YWdlIH07CiAgICAgRmFsbGJhY2sgbV9mYWxsYmFjayB7
IEZhbGxiYWNrOjpDb2RlIH07CisgICAgTGFuZ3VhZ2VEaXNwbGF5IG1fbGFuZ3VhZ2VEaXNwbGF5
IHsgTGFuZ3VhZ2VEaXNwbGF5OjpEaWFsZWN0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggZTE0
MDNjZjBkMTc3MjQwODA1MjgxZDY1MmM4MjMwMmQxZWJkOTViZS4uYjRjYWIzMTE2YThhMTFmOTEw
ZGQ4MTUwMTUxMmNkNzBhMTcxZmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN0YXRpYyBib29sIGlzVW5p
Y29kZUV4dGVuc2lvbktleShTdHJpbmdWaWV3IHN0cmluZykKICAgICByZXR1cm4gc3RyaW5nLmxl
bmd0aCgpID09IDIgJiYgaXNBU0NJSUFscGhhbnVtZXJpYyhzdHJpbmdbMF0pICYmIGlzQVNDSUlB
bHBoYShzdHJpbmdbMV0pOwogfQogCi1zdGF0aWMgYm9vbCBpc1VuaWNvZGVFeHRlbnNpb25UeXBl
Q29tcG9uZW50KFN0cmluZ1ZpZXcgc3RyaW5nKQorYm9vbCBpc1VuaWNvZGVFeHRlbnNpb25UeXBl
Q29tcG9uZW50KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aCgpOwogICAgIHJldHVybiBsZW5ndGggPj0gMyAmJiBsZW5ndGggPD0gOCAmJiBzdHJp
bmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGVlNmM5NmFlMDExNzUy
NzNhM2Q5NTI5ODZkZmU4NTc4NDMyMzllZTEuLmI0NTk0MjQ3NDRmMzRkOWNhZjA5MDNlNDkyYWY5
MzEwOTQwZjA3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBib29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdW
aWV3KTsKIGJvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcpOwogYm9vbCBpc1Vu
aWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1ZpZXcpOwogYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlk
KFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVFeHRlbnNpb25UeXBlQ29tcG9uZW50KFN0cmlu
Z1ZpZXcpOwogYm9vbCBpc1N0cnVjdHVyYWxseVZhbGlkTGFuZ3VhZ2VUYWcoU3RyaW5nVmlldyk7
CiAKIGJvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmluZ1ZpZXcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433286</attachid>
            <date>2021-07-11 00:50:40 -0700</date>
            <delta_ts>2021-08-07 03:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227832-20210711005039.patch</filename>
            <type>text/plain</type>
            <size>26992</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmRjMmY5MjNjZmY1NzFhNWMxZmQwZDgyMmQ3ZDBjNGUyZDY4ZTZkLi42ZThmMjljNTBjYTlhMDBj
NTE1ZmJiZGVmZDFjMzA3MzZiMzc1OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNy0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxDYWNoZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxDYWNoZTo6Z2V0RmllbGREaXNwbGF5TmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ2Fj
aGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SW50bERpc3BsYXlOYW1lczo6b2YgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6
bGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpj
YW5vbmljYWxpemVVbmljb2RlTG9jYWxlSUQpOgorICAgICAgICAoSlNDOjpjYW5vbmljYWxpemVM
b2NhbGVMaXN0KToKKyAgICAgICAgKEpTQzo6ZGVmYXVsdExvY2FsZSk6CisgICAgICAgIChKU0M6
OmlzVW5pY29kZUV4dGVuc2lvblR5cGVDb21wb25lbnQpOgorICAgICAgICAoSlNDOjpjYW5vbmlj
YWxpemVMYW5ndWFnZVRhZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0
Lmg6CisKIDIwMjEtMDctMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBXb3JrYXJvdW5kIHRlc3QyNjIucmVwb3J0IGJ1ZyBieSBtYWtpbmcgJCBw
cm9wZXJ0aWVzIGVudW1lcmFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGRjNjAxOWY0NWZkOThiNDM3YTViZjZlMjY1ODRh
MGEzNDYzMmZhZGMuLjMzZTJjN2UxMmJjM2Q4N2IzYjU4ZjhhZWU5MjUyNzY5ZjhiNjk1OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgbWFjcm8oZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1
dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZXhpdEtpbmQpIFwKKyAgICBtYWNybyhmYWxsYmFjaykg
XAogICAgIG1hY3JvKGZsYWdzKSBcCiAgICAgbWFjcm8oZm9yRWFjaCkgXAogICAgIG1hY3JvKGZv
cm1hdE1hdGNoZXIpIFwKQEAgLTE1NCw2ICsxNTUsNyBAQAogICAgIG1hY3JvKGpldHRpc29uUmVh
c29uKSBcCiAgICAgbWFjcm8oam9pbikgXAogICAgIG1hY3JvKGxhbmd1YWdlKSBcCisgICAgbWFj
cm8obGFuZ3VhZ2VEaXNwbGF5KSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8o
bGVuZ3RoKSBcCiAgICAgbWFjcm8obGluZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDYWNoZS5jcHAKaW5kZXggNDQ5MzlhNDM4MmNmMTViY2QwNzZkYWZkZWU4NTgzM2Yz
MDI3MjEzOS4uYjE3ZDczNDBkZjU2NWE0NDA4MTUwMDc0OTUwNTY3NzIxYWNhMWJjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuY3BwCkBAIC01Myw0ICs1Mywx
NiBAQCBWZWN0b3I8VUNoYXIsIDMyPiBJbnRsQ2FjaGU6OmdldEJlc3REYXRlVGltZVBhdHRlcm4o
Y29uc3QgQ1N0cmluZyYgbG9jYWxlLCBjb25zdAogICAgIHJldHVybiBwYXR0ZXJuQnVmZmVyOwog
fQogCitWZWN0b3I8VUNoYXIsIDMyPiBJbnRsQ2FjaGU6OmdldEZpZWxkRGlzcGxheU5hbWUoY29u
c3QgQ1N0cmluZyYgbG9jYWxlLCBVRGF0ZVRpbWVQYXR0ZXJuRmllbGQgZmllbGQsIFVEYXRlVGlt
ZVBHRGlzcGxheVdpZHRoIHdpZHRoLCBVRXJyb3JDb2RlJiBzdGF0dXMpCit7CisgICAgYXV0byBz
aGFyZWRHZW5lcmF0b3IgPSBnZXRTaGFyZWRQYXR0ZXJuR2VuZXJhdG9yKGxvY2FsZSwgc3RhdHVz
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB7IH07CisgICAg
VmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbih1ZGF0cGdfZ2V0RmllbGREaXNwbGF5TmFtZSwgc2hhcmVkR2VuZXJhdG9yLCBm
aWVsZCwgd2lkdGgsIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiBidWZmZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuaAppbmRleCA0MmQ1ZTEx
NGI0NDU2Yzk2NDdmZGNlYTU3NjhmZTllMzQ2NTE5MTFiLi4wNThiMjQyMzc4NmQzMzA2MWYzMTYz
ODI5YmQ0M2QzOTE2N2ZmODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q2FjaGUuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBJbnRsQ2FjaGUgewogICAgIEludGxDYWNo
ZSgpID0gZGVmYXVsdDsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGdldEJlc3REYXRlVGltZVBh
dHRlcm4oY29uc3QgQ1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogc2tlbGV0b24sIHVuc2ln
bmVkIHNrZWxldG9uU2l6ZSwgVUVycm9yQ29kZSYpOworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGdl
dEZpZWxkRGlzcGxheU5hbWUoY29uc3QgQ1N0cmluZyYgbG9jYWxlLCBVRGF0ZVRpbWVQYXR0ZXJu
RmllbGQsIFVEYXRlVGltZVBHRGlzcGxheVdpZHRoLCBVRXJyb3JDb2RlJik7CiAKIHByaXZhdGU6
CiAgICAgVURhdGVUaW1lUGF0dGVybkdlbmVyYXRvciogZ2V0U2hhcmVkUGF0dGVybkdlbmVyYXRv
cihjb25zdCBDU3RyaW5nJiBsb2NhbGUsIFVFcnJvckNvZGUmIHN0YXR1cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKaW5kZXggNDJi
N2IwYzAxYmFhODcwMzRlYWExNDYwZjcxNGFmMzY3YmNiMDUxNi4uY2FhMTRjODk4ZjU5Y2FjZmQy
Y2Y5M2JkOGFlOTFjOWZhNmJhN2IwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCiAKKyNpbmNsdWRlICJJ
bnRsQ2FjaGUuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtOTUsNyArOTYs
NyBAQCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0
eWxlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsg
Im5hcnJvdyJfcywgU3R5bGU6Ok5hcnJvdyB9LCB7ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0IH0s
IHsgImxvbmciX3MsIFN0eWxlOjpMb25nIH0gfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFy
cm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiX3MsIFN0eWxlOjpMb25nKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgYXV0byB0eXBlID0gaW50bE9w
dGlvbjxzdGQ6Om9wdGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJl
Z2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsg
ImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9IH0sICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwi
bGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5jeVwiIl9zLCBz
dGQ6Om51bGxvcHQpOworICAgIGF1dG8gdHlwZSA9IGludGxPcHRpb248c3RkOjpvcHRpb25hbDxU
eXBlPj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsg
Imxhbmd1YWdlIl9zLCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lv
biB9LCB7ICJzY3JpcHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6
Q3VycmVuY3kgfSwgeyAiY2FsZW5kYXIiX3MsIFR5cGU6OkNhbGVuZGFyIH0sIHsgImRhdGVUaW1l
RmllbGQiX3MsIFR5cGU6OkRhdGVUaW1lRmllbGQgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBc
Imxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIFwiY3VycmVuY3lcIiwgXCJjYWxl
bmRhclwiLCBvciBcImRhdGVUaW1lRmllbGRcIiJfcywgc3RkOjpudWxsb3B0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghdHlwZSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidHlwZSBtdXN0IG5vdCBiZSB1
bmRlZmluZWQiX3MpOwpAQCAtMTAzLDcgKzEwNCwxMCBAQCB2b2lkIEludGxEaXNwbGF5TmFtZXM6
OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YQogICAgIH0KICAgICBtX3R5cGUgPSB0eXBlLnZhbHVlKCk7CiAKLSAgICBtX2ZhbGxiYWNrID0g
aW50bE9wdGlvbjxGYWxsYmFjaz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwgeyB7ICJjb2RlIl9zLCBGYWxsYmFjazo6Q29kZSB9
LCB7ICJub25lIl9zLCBGYWxsYmFjazo6Tm9uZSB9IH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhl
ciBcImNvZGVcIiBvciBcIm5vbmVcIiJfcywgRmFsbGJhY2s6OkNvZGUpOworICAgIG1fZmFsbGJh
Y2sgPSBpbnRsT3B0aW9uPEZhbGxiYWNrPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPmZhbGxiYWNrLCB7IHsgImNvZGUiX3MsIEZhbGxiYWNrOjpDb2RlIH0sIHsgIm5v
bmUiX3MsIEZhbGxiYWNrOjpOb25lIH0gfSwgImZhbGxiYWNrIG11c3QgYmUgZWl0aGVyIFwiY29k
ZVwiIG9yIFwibm9uZVwiIl9zLCBGYWxsYmFjazo6Q29kZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIG1fbGFuZ3VhZ2VEaXNwbGF5ID0gaW50bE9wdGlv
bjxMYW5ndWFnZURpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+bGFuZ3VhZ2VEaXNwbGF5LCB7IHsgImRpYWxlY3QiX3MsIExhbmd1YWdlRGlzcGxheTo6RGlh
bGVjdCB9LCB7ICJzdGFuZGFyZCJfcywgTGFuZ3VhZ2VEaXNwbGF5OjpTdGFuZGFyZCB9IH0sICJs
YW5ndWFnZURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJkaWFsZWN0XCIgb3IgXCJzdGFuZGFyZFwi
Il9zLCBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICNpZiBIQVZFKElDVV9VX0xPQ0FMRV9ESVNQTEFZX05BTUVTKQpA
QCAtMTExLDkgKzExNSw4IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3Bs
YXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBVRGlzcGxh
eUNvbnRleHQgY29udGV4dHNbXSA9IHsKICAgICAgICAgLy8gZW5fR0IgZGlzcGxheXMgYXMgJ0Vu
Z2xpc2ggKFVuaXRlZCBLaW5nZG9tKScgKFN0YW5kYXJkIE5hbWVzKSBvciAnQnJpdGlzaCBFbmds
aXNoJyAoRGlhbGVjdCBOYW1lcykuCi0gICAgICAgIC8vIFdlIHVzZSBEaWFsZWN0IE5hbWVzIGhl
cmUsIGFsaWduZWQgdG8gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjIGRyYWZ0IGFuZCBWOCdzIGJl
aGF2aW9yLgogICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pbnRs
LWRpc3BsYXluYW1lcyNsYW5ndWFnZS1kaXNwbGF5LW5hbWVzCi0gICAgICAgIFVESVNQQ1RYX0RJ
QUxFQ1RfTkFNRVMsCisgICAgICAgIChtX3R5cGUgPT0gVHlwZTo6TGFuZ3VhZ2UgJiYgbV9sYW5n
dWFnZURpc3BsYXkgPT0gTGFuZ3VhZ2VEaXNwbGF5OjpTdGFuZGFyZCkgPyBVRElTUENUWF9TVEFO
REFSRF9OQU1FUyA6IFVESVNQQ1RYX0RJQUxFQ1RfTkFNRVMsCiAKICAgICAgICAgLy8gQ2FwaXRh
aWxpemF0aW9uIG1vZGUgY2FuIGJlIHBpY2tlZCBmcm9tIHNldmVyYWwgb3B0aW9ucy4gUG9zc2li
bHkgZWl0aGVyIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUgb3IgVURJU1BDVFhfQ0FQSVRB
TElaQVRJT05fRk9SX1NUQU5EQUxPTkUgaXMKICAgICAgICAgLy8gcHJlZmVyYWJsZSBpbiBJbnRs
LkRpc3BsYXlOYW1lcy4gV2UgdXNlIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFM
T05FIGJlY2F1c2UgaXQgbWFrZXMgc3RhbmRhbG9uZSBkYXRlIGZvcm1hdCBiZXR0ZXIgKGZyICJK
dWlsbGV0IDIwMDgiIGluIElDVSB0ZXN0IHN1aXRlcyksCkBAIC0xNTMsMTAgKzE1Niw4NiBAQCBK
U1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgY29kZVZhbHVlKSBjbwogICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3Nl
Yy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgYXV0byBjYW5vbmljYWxpemVDb2Rl
Rm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBTdHJpbmcmJiBjb2RlKSAtPiBDU3RyaW5n
IHsKKyAgICAgICAgQVNTRVJUKGNvZGUuaXNBbGxBU0NJSSgpKTsKKyAgICAgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIHJldHVy
biBjYW5vbmljYWxpemVVbmljb2RlTG9jYWxlSUQoY29kZS5hc2NpaSgpKS5hc2NpaSgpOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgICAgICAvLyBMZXQg
Y29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2Ny
aWJlZCBpbiA2LjEuCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAg
ICAgICAgICAgIGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7
ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSVVw
cGVyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgICAgICAvLyBMZXQg
Y29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBjb2Rl
IHRvIHVwcGVyIGNhc2UsIGFuZCBtYXBwaW5nIHRoZSBzZWNvbmQsIHRoaXJkIGFuZCBmb3VydGgg
Y2hhcmFjdGVyIGluIGNvZGUgdG8gbG93ZXIgY2FzZSwgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gY29kZS5hc2NpaSgpOworICAgICAgICAgICAgY2hhciog
bXV0YWJsZURhdGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQubGVuZ3RoKCkgPj0gMSkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVswXSA9IHRvQVND
SUlVcHBlcihtdXRhYmxlRGF0YVswXSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMTsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAg
bXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxvd2VyKG11dGFibGVEYXRhW2luZGV4XSk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6
Q3VycmVuY3k6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CisgICAgICAgICAgICAvLyBM
ZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byBsb3dlciBjYXNlIGFzIGRl
c2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsK
KyAgICAgICAgICAgIGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3Ro
KCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJ
SUxvd2VyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6RGF0ZVRpbWVGaWVsZDogeworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKwogICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IGJ1ZmZlcjsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQot
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Q3VycmVuY3kpIHsKKyAgICBDU3RyaW5nIGNhbm9uaWNh
bENvZGU7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7
CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFn
ZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlm
ICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJf
cyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGNhbm9uaWNh
bENvZGUgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShj
b2RlKSk7CisgICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNp
bmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCBy
ZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5n
bGlzaCIuCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRu
X2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgY2Fub25pY2FsQ29kZS5k
YXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OlJl
Z2lvbjogeworICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVf
cmVnaW9uX3N1YnRhZyBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisg
ICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3VidGFnKGNvZGUpKSB7CisgICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJl
Z2lvbiBzdWJ0YWciX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAg
ICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5
cGUsIFdURk1vdmUoY29kZSkpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIGNh
bm9uaWNhbENvZGUuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBUeXBlOjpTY3JpcHQ6IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVz
IHRoZSB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9y
IGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgewor
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVu
dCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIH0KKyAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNw
bGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUsIG1fZGlzcGxheU5h
bWVzLmdldCgpLCBjYW5vbmljYWxDb2RlLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6IHsKICAgICAgICAgLy8gV2UgZG8gbm90
IHVzZSB1bGRuX2tleVZhbHVlRGlzcGxheU5hbWUgKyAiY3VycmVuY3kiLiBUaGlzIGlzIGJlY2F1
c2Ugb2YgdGhlIGZvbGxvd2luZyByZWFzb25zLgogICAgICAgICAvLyAgICAgMS4gSUNVIGRvZXMg
bm90IHJlc3BlY3QgVURJU1BDVFhfTEVOR1RIX0ZVTEwgLyBVRElTUENUWF9MRU5HVEhfU0hPUlQg
aW4gaXRzIGltcGxlbWVudGF0aW9uLgogICAgICAgICAvLyAgICAgMi4gVGhlcmUgaXMgbm8gd2F5
IHRvIHNldCAibmFycm93IiBzdHlsZSBpbiBVTG9jYWxlRGlzcGxheU5hbWVzIHdoaWxlIGN1cnJl
bmN5IGhhdmUgIm5hcnJvdyIgc3ltYm9sIHN0eWxlLgpAQCAtMjAyLDg0ICsyODEsOTAgQEAgSlNW
YWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KICAgICAg
ICAgLy8gPiBSZXR1cm5zIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJz
LiBJZiB0aGUgcmVzb3VyY2UgZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5Jywg
dGhlbiAnY3VycmVuY3knIGl0c2VsZiBpcyByZXR1cm5lZC4KICAgICAgICAgaWYgKHN0YXR1cyA9
PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCi0gICAgICAg
ICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQo
KSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFj
azo6Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIFN0cmluZyhjdXJyZW5jeSwg
MykpOwogICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQsIGxlbmd0aCkp
OwogICAgIH0KLQotICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXlu
YW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKLSAgICBhdXRvIGNhbm9uaWNh
bGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMgPSBbXShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZSkgLT4gQ1N0cmluZyB7Ci0gICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gY29kZS5hc2NpaSgpOwotICAgICAgICBjaGFyKiBtdXRhYmxlRGF0
YSA9IHJlc3VsdC5tdXRhYmxlRGF0YSgpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAg
ICAgY2FzZSBUeXBlOjpMYW5ndWFnZTogewotICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhl
IHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gbG93ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4x
LgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxl
bmd0aCgpOyArK2luZGV4KQotICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRv
QVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKLSAgICAgICAgICAgIC8vIExldCBj
b2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMgZGVzY3Jp
YmVkIGluIDYuMS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkKLSAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtp
bmRleF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7Ci0gICAgICAgICAg
ICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgdGhlIGZpcnN0IGNoYXJhY3Rl
ciBpbiBjb2RlIHRvIHVwcGVyIGNhc2UsIGFuZCBtYXBwaW5nIHRoZSBzZWNvbmQsIHRoaXJkIGFu
ZCBmb3VydGggY2hhcmFjdGVyIGluIGNvZGUgdG8gbG93ZXIgY2FzZSwgYXMgZGVzY3JpYmVkIGlu
IDYuMS4KLSAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPj0gMSkKLSAgICAgICAgICAg
ICAgICBtdXRhYmxlRGF0YVswXSA9IHRvQVNDSUlVcHBlcihtdXRhYmxlRGF0YVswXSk7Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMTsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7
ICsraW5kZXgpCi0gICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxv
d2VyKG11dGFibGVEYXRhW2luZGV4XSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH07Ci0KLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgVHlwZTo6TGFu
Z3VhZ2U6IHsKLSAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2Rl
X2xhbmd1YWdlX2lkIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KLSAg
ICAgICAgaWYgKCFpc1VuaWNvZGVMYW5ndWFnZUlkKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1
YWdlIGlkIl9zKTsKKyAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CisgICAgICAgIC8vIGEuIElm
IGNvZGUgZG9lcyBub3QgbWF0Y2ggdGhlIFVuaWNvZGUgTG9jYWxlIElkZW50aWZpZXIgdHlwZSBu
b250ZXJtaW5hbCwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgaWYgKCFp
c1VuaWNvZGVFeHRlbnNpb25UeXBlQ29tcG9uZW50KGNvZGUpKSB7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGNhbGVu
ZGFyIGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAg
ICBhdXRvIGxhbmd1YWdlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUs
IGNvZGUpOwotICAgICAgICAvLyBEbyBub3QgdXNlIHVsZG5fbGFuZ3VhZ2VEaXNwbGF5TmFtZSBz
aW5jZSBpdCBpcyBub3QgZXhwZWN0ZWQgb25lIGZvciB0aGlzICJsYW5ndWFnZSIgdHlwZS4gSXQg
cmV0dXJucyAiZW4tVVMiIGZvciAiZW4tVVMiIGNvZGUsIGluc3RlYWQgb2YgIkFtZXJpY2FuIEVu
Z2xpc2giLgotICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxk
bl9sb2NhbGVEaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIGxhbmd1YWdlLmRhdGEo
KSwgYnVmZmVyKTsKKyAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JE
aXNwbGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKKyAgICAgICAgY29uc3QgY2hhciog
aWN1Q29kZSA9IGNhbm9uaWNhbENvZGUuZGF0YSgpOworICAgICAgICAvLyBDb252ZXJ0IGNvZGUg
dG8gbGVnYWN5IG5hbWVzIHNpbmNlIElDVSByZXF1aXJlcyBsZWdhY3kgbmFtZXMuCisgICAgICAg
IGlmIChjYW5vbmljYWxDb2RlID09ICJncmVnb3J5IikKKyAgICAgICAgICAgIGljdUNvZGUgPSAi
Z3JlZ29yaWFuIjsKKyAgICAgICAgZWxzZSBpZiAoY2Fub25pY2FsQ29kZSA9PSAiaXNsYW1pY2Mi
KQorICAgICAgICAgICAgaWN1Q29kZSA9ICJpc2xhbWljLWNpdmlsIjsKKyAgICAgICAgZWxzZSBp
ZiAoY2Fub25pY2FsQ29kZSA9PSAiZXRoaW9hYSIpCisgICAgICAgICAgICBpY3VDb2RlID0gImV0
aGlvcGljLWFtZXRlLWFsZW0iOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwg
ImNhbGVuZGFyIiwgaWN1Q29kZSwgYnVmZmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgVHlwZTo6UmVnaW9uOiB7Ci0gICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hl
cyB0aGUgdW5pY29kZV9yZWdpb25fc3VidGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJv
ciBleGNlcHRpb24KLSAgICAgICAgaWYgKCFpc1VuaWNvZGVSZWdpb25TdWJ0YWcoY29kZSkpIHsK
LSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1l
bnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZyJfcyk7CisgICAgY2FzZSBUeXBlOjpEYXRlVGltZUZp
ZWxkOiB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1l
IHNpbmNlIGl0IGNhbm5vdCBoYW5kbGUgbmFycm93IGxlbmd0aC4KKyAgICAgICAgLy8gSW5zdGVh
ZCwgd2UgdXNlIHVkYXRwZ19nZXRGaWVsZERpc3BsYXlOYW1lLgorCisgICAgICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9pbnRsLWRpc3BsYXluYW1lcy12Mi8jc2VjLWlzdmFsaWRkYXRldGltZWZpZWxk
Y29kZQorICAgICAgICBhdXRvIGlzVmFsaWREYXRlVGltZUZpZWxkQ29kZSA9IFtdKGNvbnN0IFN0
cmluZyYgY29kZSkgLT4gc3RkOjpvcHRpb25hbDxVRGF0ZVRpbWVQYXR0ZXJuRmllbGQ+IHsKKyAg
ICAgICAgICAgIGlmIChjb2RlID09ICJlcmEiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVE
QVRQR19FUkFfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAieWVhciJfcykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVURBVFBHX1lFQVJfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29k
ZSA9PSAicXVhcnRlciJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX1FVQVJURVJf
RklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAibW9udGgiX3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFVEQVRQR19NT05USF9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJ3
ZWVrT2ZZZWFyIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfV0VFS19PRl9ZRUFS
X0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gIndlZWtkYXkiX3MpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFVEQVRQR19XRUVLREFZX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUg
PT0gImRheSJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX0RBWV9GSUVMRDsKKyAg
ICAgICAgICAgIGlmIChjb2RlID09ICJkYXlQZXJpb2QiX3MpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFVEQVRQR19EQVlQRVJJT0RfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAiaG91
ciJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX0hPVVJfRklFTEQ7CisgICAgICAg
ICAgICBpZiAoY29kZSA9PSAibWludXRlIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFU
UEdfTUlOVVRFX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gInNlY29uZCJfcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX1NFQ09ORF9GSUVMRDsKKyAgICAgICAgICAgIGlm
IChjb2RlID09ICJ0aW1lWm9uZU5hbWUiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQ
R19aT05FX0ZJRUxEOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
fTsKKworICAgICAgICBhdXRvIGZpZWxkID0gaXNWYWxpZERhdGVUaW1lRmllbGRDb2RlKGNvZGUp
OworICAgICAgICBpZiAoIWZpZWxkKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGRhdGVUaW1lRmllbGQgY29kZSJf
cyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gcmVn
aW9uID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOwotICAg
ICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9yZWdpb25EaXNw
bGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHJlZ2lvbi5kYXRhKCksIGJ1ZmZlcik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFR5cGU6OlNjcmlwdDogewotICAgICAgICAv
LyBJZiBjb2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyBwcm9k
dWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCi0gICAgICAgIGlmICghaXNVbmlj
b2RlU2NyaXB0U3VidGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWciX3MpOwot
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBVRGF0ZVRpbWVQR0Rpc3BsYXlXaWR0
aCBzdHlsZSA9IFVEQVRQR19XSURFOworICAgICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAg
ICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgICAgIHN0eWxlID0gVURBVFBHX1dJREU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6U2hvcnQ6CisgICAgICAgICAg
ICBzdHlsZSA9IFVEQVRQR19BQkJSRVZJQVRFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgICAgICBzdHlsZSA9IFVEQVRQR19OQVJST1c7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBhdXRvIHNjcmlwdCA9IGNh
bm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKLSAgICAgICAgc3Rh
dHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUs
IG1fZGlzcGxheU5hbWVzLmdldCgpLCBzY3JpcHQuZGF0YSgpLCBidWZmZXIpOwotICAgICAgICBi
cmVhazsKKworICAgICAgICBidWZmZXIgPSB2bS5pbnRsQ2FjaGUoKS5nZXRGaWVsZERpc3BsYXlO
YW1lKG1fbG9jYWxlQ1N0cmluZy5kYXRhKCksIGZpZWxkLnZhbHVlKCksIHN0eWxlLCBzdGF0dXMp
OworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgICAgICByZXR1cm4gKG1f
ZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZt
LCBjb2RlKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiAg
ICAgfQotICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
CiAgICAgICAgIC8vIHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIHVsZG5fcmVnaW9uRGlzcGxheU5h
bWUsIGFuZCB1bGRuX3NjcmlwdERpc3BsYXlOYW1lIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRf
RVJST1IgaWYgdGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuCiAgICAgICAgIC8vIFdlIHNo
b3VsZCByZXR1cm4gdW5kZWZpbmVkIGlmIGZhbGxiYWNrIGlzICJub25lIi4gT3RoZXJ3aXNlLCB3
ZSBzaG91bGQgcmV0dXJuIGlucHV0IHZhbHVlLgogICAgICAgICBpZiAoc3RhdHVzID09IFVfSUxM
RUdBTF9BUkdVTUVOVF9FUlJPUikKLSAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBG
YWxsYmFjazo6Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICAgICAg
cmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBq
c1N0cmluZyh2bSwgU3RyaW5nKGNhbm9uaWNhbENvZGUuZGF0YSgpLCBjYW5vbmljYWxDb2RlLmxl
bmd0aCgpKSk7CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CiAgICAgfQogICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwpAQCAtMjk4LDcgKzM4Myw5IEBAIEpT
T2JqZWN0KiBJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0eXBlU3RyaW5n
KG1fdHlwZSkpKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJmYWxsYmFjayIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGZhbGxiYWNrU3Ry
aW5nKG1fZmFsbGJhY2spKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5mYWxsYmFjaywganNOb250cml2aWFsU3RyaW5nKHZtLCBmYWxsYmFja1N0cmluZyht
X2ZhbGxiYWNrKSkpOworICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6TGFuZ3VhZ2UpCisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGFuZ3VhZ2VEaXNwbGF5
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGxhbmd1YWdlRGlzcGxheVN0cmluZyhtX2xhbmd1YWdl
RGlzcGxheSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtMzI3LDYgKzQxNCwxMCBA
QCBBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCiAg
ICAgICAgIHJldHVybiAic2NyaXB0Il9zOwogICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CiAgICAg
ICAgIHJldHVybiAiY3VycmVuY3kiX3M7CisgICAgY2FzZSBUeXBlOjpDYWxlbmRhcjoKKyAgICAg
ICAgcmV0dXJuICJjYWxlbmRhciJfczsKKyAgICBjYXNlIFR5cGU6OkRhdGVUaW1lRmllbGQ6Cisg
ICAgICAgIHJldHVybiAiZGF0ZVRpbWVGaWVsZCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwpAQCAtMzQ0LDQgKzQz
NSwxNiBAQCBBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFs
bGJhY2sgZmFsbGJhY2spCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitB
U0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6bGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKExhbmd1
YWdlRGlzcGxheSBsYW5ndWFnZURpc3BsYXkpCit7CisgICAgc3dpdGNoIChsYW5ndWFnZURpc3Bs
YXkpIHsKKyAgICBjYXNlIExhbmd1YWdlRGlzcGxheTo6RGlhbGVjdDoKKyAgICAgICAgcmV0dXJu
ICJkaWFsZWN0Il9zOworICAgIGNhc2UgTGFuZ3VhZ2VEaXNwbGF5OjpTdGFuZGFyZDoKKyAgICAg
ICAgcmV0dXJuICJzdGFuZGFyZCJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMu
aAppbmRleCA4MWFmYzkwZWJjNmM0YmFjMmNjNTIxMTVjZTNiM2VhNWQwZmI5NzRiLi40YzM3ZTg3
YWY4YmUyNmMyYTUzY2M0OWYyNDJjYjFlMWVkZjk0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCkBAIC03MiwxMiArNzIsMTQgQEAg
Y2xhc3MgSW50bERpc3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKICAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IE5hcnJvdywgU2hvcnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNzIFR5cGUgOiB1
aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJyZW5jeSB9OworICAgIGVudW0g
Y2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBMYW5ndWFnZSwgUmVnaW9uLCBTY3JpcHQsIEN1cnJlbmN5
LCBDYWxlbmRhciwgRGF0ZVRpbWVGaWVsZCB9OwogICAgIGVudW0gY2xhc3MgRmFsbGJhY2sgOiB1
aW50OF90IHsgQ29kZSwgTm9uZSB9OworICAgIGVudW0gY2xhc3MgTGFuZ3VhZ2VEaXNwbGF5IDog
dWludDhfdCB7IERpYWxlY3QsIFN0YW5kYXJkIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmco
VHlwZSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBmYWxsYmFja1N0cmluZyhGYWxsYmFjayk7
CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VE
aXNwbGF5KTsKIAogICAgIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyID0gSUNVRGVs
ZXRlcjx1bGRuX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2FsZURpc3BsYXlOYW1l
cywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+IG1fZGlzcGxheU5hbWVzOwpAQCAtODgsNiAr
OTAsNyBAQCBjbGFzcyBJbnRsRGlzcGxheU5hbWVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6TG9uZyB9OwogICAgIFR5cGUgbV90
eXBlIHsgVHlwZTo6TGFuZ3VhZ2UgfTsKICAgICBGYWxsYmFjayBtX2ZhbGxiYWNrIHsgRmFsbGJh
Y2s6OkNvZGUgfTsKKyAgICBMYW5ndWFnZURpc3BsYXkgbV9sYW5ndWFnZURpc3BsYXkgeyBMYW5n
dWFnZURpc3BsYXk6OkRpYWxlY3QgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCBlMTQwM2NmMGQx
NzcyNDA4MDUyODFkNjUyYzgyMzAyZDFlYmQ5NWJlLi5iOWZjMGE3MDY5MjM4MzAxYzFhNDk1NGI2
NjE3NjUxNzExYmNlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmNwcApAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRp
ZmllclR5cGUoU3RyaW5nVmlldyBzdHJpbmcpCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtY2Fub25pY2FsaXpldW5pY29kZWxvY2FsZWlkCi1zdGF0aWMgU3RyaW5nIGNhbm9u
aWNhbGl6ZUxhbmd1YWdlVGFnKGNvbnN0IENTdHJpbmcmIHRhZykKK1N0cmluZyBjYW5vbmljYWxp
emVVbmljb2RlTG9jYWxlSUQoY29uc3QgQ1N0cmluZyYgdGFnKQogewogICAgIGF1dG8gYnVmZmVy
ID0gbG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZ1dpdGhOdWxsVGVybWluYXRvcih0YWcpOwog
ICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQpAQCAtNzAyLDcgKzcwMiw3IEBAIFZlY3RvcjxTdHJp
bmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBsb2NhCiAKICAgICAgICAgICAgIGlmIChpc1N0cnVjdHVyYWxseVZhbGlkTGFuZ3Vh
Z2VUYWcodGFnKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVCh0YWcuaXNBbGxBU0NJSSgpKTsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxh
bmd1YWdlVGFnKHRhZy5hc2NpaSgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2Fs
aXplZFRhZyA9IGNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRCh0YWcuYXNjaWkoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFjYW5vbmljYWxpemVkVGFnLmlzTnVsbCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChzZWVuU2V0LmFkZChjYW5vbmljYWxpemVkVGFnKS5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbi5hcHBlbmQoY2Fub25pY2FsaXplZFRhZyk7CkBA
IC03MzksMTQgKzczOSwxNCBAQCBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIC8vIGJlIGRldGVybWluZWQgYnkgV2ViQ29yZS1zcGVjaWZpYyBs
b2dpYyBsaWtlIHNvbWUgV0sgc2V0dGluZ3MuIFVzdWFsbHkgdGhpcyB3aWxsIHJldHVybiB0aGUK
ICAgICAvLyBzYW1lIHRoaW5nIGFzIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKVswXS4KICAgICBp
ZiAoYXV0byBkZWZhdWx0TGFuZ3VhZ2UgPSBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmRlZmF1bHRMYW5ndWFnZSkgewotICAgICAgICBTdHJpbmcgbG9jYWxlID0gY2Fu
b25pY2FsaXplTGFuZ3VhZ2VUYWcoZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpKTsKKyAgICAgICAg
U3RyaW5nIGxvY2FsZSA9IGNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRChkZWZhdWx0TGFuZ3Vh
Z2UoKS51dGY4KCkpOwogICAgICAgICBpZiAoIWxvY2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gbG9jYWxlOwogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxhbmd1YWdl
IDogbGFuZ3VhZ2VzKSB7Ci0gICAgICAgIFN0cmluZyBsb2NhbGUgPSBjYW5vbmljYWxpemVMYW5n
dWFnZVRhZyhsYW5ndWFnZS51dGY4KCkpOworICAgICAgICBTdHJpbmcgbG9jYWxlID0gY2Fub25p
Y2FsaXplVW5pY29kZUxvY2FsZUlEKGxhbmd1YWdlLnV0ZjgoKSk7CiAgICAgICAgIGlmICghbG9j
YWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQpAQCAtMTA4
Myw3ICsxMDgzLDcgQEAgc3RhdGljIGJvb2wgaXNVbmljb2RlRXh0ZW5zaW9uS2V5KFN0cmluZ1Zp
ZXcgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgPT0gMiAmJiBpc0FTQ0lJQWxw
aGFudW1lcmljKHN0cmluZ1swXSkgJiYgaXNBU0NJSUFscGhhKHN0cmluZ1sxXSk7CiB9CiAKLXN0
YXRpYyBib29sIGlzVW5pY29kZUV4dGVuc2lvblR5cGVDb21wb25lbnQoU3RyaW5nVmlldyBzdHJp
bmcpCitib29sIGlzVW5pY29kZUV4dGVuc2lvblR5cGVDb21wb25lbnQoU3RyaW5nVmlldyBzdHJp
bmcpCiB7CiAgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgcmV0dXJuIGxl
bmd0aCA+PSAzICYmIGxlbmd0aCA8PSA4ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmgKaW5kZXggZWU2Yzk2YWUwMTE3NTI3M2EzZDk1Mjk4NmRmZTg1Nzg0MzIzOWVl
MS4uMGI1NTRmNGUyZDQ2MzlhNWViYWY2MzNmNzBhYjUzNGZkZGI0N2JjNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtMTI2LDcgKzEyNiw5IEBAIGJv
b2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1ZpZXcpOwogYm9vbCBpc1VuaWNvZGVSZWdp
b25TdWJ0YWcoU3RyaW5nVmlldyk7CiBib29sIGlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoU3RyaW5n
Vmlldyk7CiBib29sIGlzVW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyk7Citib29sIGlzVW5p
Y29kZUV4dGVuc2lvblR5cGVDb21wb25lbnQoU3RyaW5nVmlldyk7CiBib29sIGlzU3RydWN0dXJh
bGx5VmFsaWRMYW5ndWFnZVRhZyhTdHJpbmdWaWV3KTsKK1N0cmluZyBjYW5vbmljYWxpemVVbmlj
b2RlTG9jYWxlSUQoY29uc3QgQ1N0cmluZyYgbGFuZ3VhZ2VUYWcpOwogCiBib29sIGlzV2VsbEZv
cm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3KTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwMGE3ODkyMWYwZTMzMWYyOWNjNjlhOTZj
N2FjM2JlYWQxYzg4ZmZkLi5jODhlMTg1OGQwYzAxMmQ2ZTRhNWI3OWRkY2ZhZTI3ZWYzNTk0OGUz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTExICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW50bC5EaXNwbGF5TmFtZXMgdjIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxh
eW5hbWVzLmpzOgorICAgICAgICAodm0uaWN1VmVyc2lvbik6CisKIDIwMjEtMDctMTAgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgdGVz
dDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcwppbmRleCAzNDA5OTdiYWE3NjQ5NGZk
OTViMTUzNGU0OGZiY2E2NzQyYjRiZWYwLi5hNTUxYzYzOTM0N2Y1ZTEzMDZkNzY2OTNlMGI0OTgx
ZmRmZDE3YTQ4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5q
cworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcwpAQCAtMTc4LDcgKzE3
OCw3IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewogICAgICAg
ICAgICAgICAgIHJldHVybiAnZW4tQUEnOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAg
ICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKG9iamVjdCksIG9iamVjdCk7CisgICAgICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgJ2VuLUFBJyk7CiAgICAgfQogCiAg
ICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAn
bGFuZ3VhZ2UnLCBmYWxsYmFjazogJ25vbmUnfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435125</attachid>
            <date>2021-08-07 03:20:35 -0700</date>
            <delta_ts>2021-08-20 01:25:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227832-20210807032034.patch</filename>
            <type>text/plain</type>
            <size>30230</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi44NjI5NjQ3YjQ0MzQ2NThm
NGJiMzc2ZDk2NjM5MzdiMWI1OTBkMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wOC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxDYWNoZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxDYWNoZTo6Z2V0RmllbGREaXNwbGF5TmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ2Fj
aGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SW50bERpc3BsYXlOYW1lczo6b2YgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6
bGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpp
c1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZSk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVVuaWNvZGVMb2NhbGVJRCk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3Qp
OgorICAgICAgICAoSlNDOjpkZWZhdWx0TG9jYWxlKToKKyAgICAgICAgKEpTQzo6Y2Fub25pY2Fs
aXplTGFuZ3VhZ2VUYWcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5o
OgorCiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IG9uIERlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkYzYwMTlm
NDVmZDk4YjQzN2E1YmY2ZTI2NTg0YTBhMzQ2MzJmYWRjLi4zM2UyYzdlMTJiYzNkODdiM2I1OGY4
YWVlOTI1Mjc2OWY4YjY5NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgIG1hY3JvKGV4
ZWMpIFwKICAgICBtYWNybyhleGVjdXRpb25Db3VudCkgXAogICAgIG1hY3JvKGV4aXRLaW5kKSBc
CisgICAgbWFjcm8oZmFsbGJhY2spIFwKICAgICBtYWNybyhmbGFncykgXAogICAgIG1hY3JvKGZv
ckVhY2gpIFwKICAgICBtYWNybyhmb3JtYXRNYXRjaGVyKSBcCkBAIC0xNTQsNiArMTU1LDcgQEAK
ICAgICBtYWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKICAgICBtYWNy
byhsYW5ndWFnZSkgXAorICAgIG1hY3JvKGxhbmd1YWdlRGlzcGxheSkgXAogICAgIG1hY3JvKGxh
c3RJbmRleCkgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1hY3JvKGxpbmUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDYWNoZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuY3BwCmluZGV4IDQ0OTM5YTQzODJj
ZjE1YmNkMDc2ZGFmZGVlODU4MzNmMzAyNzIxMzkuLmIxN2Q3MzQwZGY1NjVhNDQwODE1MDA3NDk1
MDU2NzcyMWFjYTFiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENh
Y2hlLmNwcApAQCAtNTMsNCArNTMsMTYgQEAgVmVjdG9yPFVDaGFyLCAzMj4gSW50bENhY2hlOjpn
ZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgY29uc3QKICAgICBy
ZXR1cm4gcGF0dGVybkJ1ZmZlcjsKIH0KIAorVmVjdG9yPFVDaGFyLCAzMj4gSW50bENhY2hlOjpn
ZXRGaWVsZERpc3BsYXlOYW1lKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgVURhdGVUaW1lUGF0dGVy
bkZpZWxkIGZpZWxkLCBVRGF0ZVRpbWVQR0Rpc3BsYXlXaWR0aCB3aWR0aCwgVUVycm9yQ29kZSYg
c3RhdHVzKQoreworICAgIGF1dG8gc2hhcmVkR2VuZXJhdG9yID0gZ2V0U2hhcmVkUGF0dGVybkdl
bmVyYXRvcihsb2NhbGUsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdHBnX2dldEZpZWxkRGlzcGxheU5h
bWUsIHNoYXJlZEdlbmVyYXRvciwgZmllbGQsIHdpZHRoLCBidWZmZXIpOworICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gYnVmZmVyOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENhY2hlLmgKaW5kZXggNDJkNWUxMTRiNDQ1NmM5NjQ3ZmRjZWE1NzY4ZmU5ZTM0NjUxOTExYi4u
MDU4YjI0MjM3ODZkMzMwNjFmMzE2MzgyOWJkNDNkMzkxNjdmZjgyZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgSW50
bENhY2hlIHsKICAgICBJbnRsQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDMyPiBnZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgY29uc3Qg
VUNoYXIqIHNrZWxldG9uLCB1bnNpZ25lZCBza2VsZXRvblNpemUsIFVFcnJvckNvZGUmKTsKKyAg
ICBWZWN0b3I8VUNoYXIsIDMyPiBnZXRGaWVsZERpc3BsYXlOYW1lKGNvbnN0IENTdHJpbmcmIGxv
Y2FsZSwgVURhdGVUaW1lUGF0dGVybkZpZWxkLCBVRGF0ZVRpbWVQR0Rpc3BsYXlXaWR0aCwgVUVy
cm9yQ29kZSYpOwogCiBwcml2YXRlOgogICAgIFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdl
dFNoYXJlZFBhdHRlcm5HZW5lcmF0b3IoY29uc3QgQ1N0cmluZyYgbG9jYWxlLCBVRXJyb3JDb2Rl
JiBzdGF0dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXMuY3BwCmluZGV4IDQyYjdiMGMwMWJhYTg3MDM0ZWFhMTQ2MGY3MTRhZjM2N2JjYjA1
MTYuLmE3NGZhZDczNDY0Y2NiNDBhZjJhZmJmZDBhNTg0ODc3ZjJmZDllODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bERpc3BsYXlO
YW1lcy5oIgogCisjaW5jbHVkZSAiSW50bENhY2hlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFs
aXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBt
X3N0eWxlID0gaW50bE9wdGlvbjxTdHlsZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdHlsZSwgeyB7ICJuYXJyb3ciX3MsIFN0eWxlOjpOYXJyb3cgfSwgeyAic2hv
cnQiX3MsIFN0eWxlOjpTaG9ydCB9LCB7ICJsb25nIl9zLCBTdHlsZTo6TG9uZyB9IH0sICJzdHls
ZSBtdXN0IGJlIGVpdGhlciBcIm5hcnJvd1wiLCBcInNob3J0XCIsIG9yIFwibG9uZ1wiIl9zLCBT
dHlsZTo6TG9uZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAot
ICAgIGF1dG8gdHlwZSA9IGludGxPcHRpb248c3RkOjpvcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBU
eXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQi
X3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAi
dHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIs
IG9yIFwiY3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIHR5cGUgPSBpbnRs
T3B0aW9uPHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAi
cmVnaW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwg
eyAiY3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0sIHsgImNhbGVuZGFyIl9zLCBUeXBlOjpD
YWxlbmRhciB9LCB7ICJkYXRlVGltZUZpZWxkIl9zLCBUeXBlOjpEYXRlVGltZUZpZWxkIH0gfSwg
InR5cGUgbXVzdCBiZSBlaXRoZXIgXCJsYW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlwdFwi
LCBcImN1cnJlbmN5XCIsIFwiY2FsZW5kYXJcIiwgb3IgXCJkYXRlVGltZUZpZWxkXCIiX3MsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICBpZiAoIXR5cGUpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKQEAgLTEwMyw3ICsxMDQsMTAgQEAg
dm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB9CiAgICAgbV90eXBlID0gdHlwZS52YWx1ZSgp
OwogCi0gICAgbV9mYWxsYmFjayA9IGludGxPcHRpb248RmFsbGJhY2s+KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNrIiksIHsgeyAiY29k
ZSJfcywgRmFsbGJhY2s6OkNvZGUgfSwgeyAibm9uZSJfcywgRmFsbGJhY2s6Ok5vbmUgfSB9LCAi
ZmFsbGJhY2sgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIgb3IgXCJub25lXCIiX3MsIEZhbGxiYWNr
OjpDb2RlKTsKKyAgICBtX2ZhbGxiYWNrID0gaW50bE9wdGlvbjxGYWxsYmFjaz4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxsYmFjaywgeyB7ICJjb2RlIl9zLCBG
YWxsYmFjazo6Q29kZSB9LCB7ICJub25lIl9zLCBGYWxsYmFjazo6Tm9uZSB9IH0sICJmYWxsYmFj
ayBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiBvciBcIm5vbmVcIiJfcywgRmFsbGJhY2s6OkNvZGUp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBtX2xhbmd1
YWdlRGlzcGxheSA9IGludGxPcHRpb248TGFuZ3VhZ2VEaXNwbGF5PihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlRGlzcGxheSwgeyB7ICJkaWFsZWN0Il9z
LCBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3QgfSwgeyAic3RhbmRhcmQiX3MsIExhbmd1YWdlRGlz
cGxheTo6U3RhbmRhcmQgfSB9LCAibGFuZ3VhZ2VEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiZGlh
bGVjdFwiIG9yIFwic3RhbmRhcmRcIiJfcywgTGFuZ3VhZ2VEaXNwbGF5OjpEaWFsZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAjaWYgSEFWRShJQ1VfVV9M
T0NBTEVfRElTUExBWV9OQU1FUykKQEAgLTExMSw5ICsxMTUsOCBAQCB2b2lkIEludGxEaXNwbGF5
TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYQogCiAgICAgVURpc3BsYXlDb250ZXh0IGNvbnRleHRzW10gPSB7CiAgICAgICAgIC8v
IGVuX0dCIGRpc3BsYXlzIGFzICdFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSknIChTdGFuZGFyZCBO
YW1lcykgb3IgJ0JyaXRpc2ggRW5nbGlzaCcgKERpYWxlY3QgTmFtZXMpLgotICAgICAgICAvLyBX
ZSB1c2UgRGlhbGVjdCBOYW1lcyBoZXJlLCBhbGlnbmVkIHRvIHRoZSBleGFtcGxlcyBpbiB0aGUg
c3BlYyBkcmFmdCBhbmQgVjgncyBiZWhhdmlvci4KICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMjbGFuZ3VhZ2UtZGlzcGxheS1uYW1l
cwotICAgICAgICBVRElTUENUWF9ESUFMRUNUX05BTUVTLAorICAgICAgICAobV90eXBlID09IFR5
cGU6Okxhbmd1YWdlICYmIG1fbGFuZ3VhZ2VEaXNwbGF5ID09IExhbmd1YWdlRGlzcGxheTo6U3Rh
bmRhcmQpID8gVURJU1BDVFhfU1RBTkRBUkRfTkFNRVMgOiBVRElTUENUWF9ESUFMRUNUX05BTUVT
LAogCiAgICAgICAgIC8vIENhcGl0YWlsaXphdGlvbiBtb2RlIGNhbiBiZSBwaWNrZWQgZnJvbSBz
ZXZlcmFsIG9wdGlvbnMuIFBvc3NpYmx5IGVpdGhlciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9O
T05FIG9yIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FIGlzCiAgICAgICAg
IC8vIHByZWZlcmFibGUgaW4gSW50bC5EaXNwbGF5TmFtZXMuIFdlIHVzZSBVRElTUENUWF9DQVBJ
VEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBiZWNhdXNlIGl0IG1ha2VzIHN0YW5kYWxvbmUgZGF0
ZSBmb3JtYXQgYmV0dGVyIChmciAiSnVpbGxldCAyMDA4IiBpbiBJQ1UgdGVzdCBzdWl0ZXMpLApA
QCAtMTUzLDEwICsxNTYsODYgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICBhdXRvIGNv
ZGUgPSBjb2RlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LWludGwtZGlzcGxheW5hbWVzLyNzZWMtY2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAg
IGF1dG8gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyA9IFtdKFR5cGUgdHlwZSwgU3Ry
aW5nJiYgY29kZSkgLT4gQ1N0cmluZyB7CisgICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUko
KSk7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6Okxhbmd1YWdl
OiB7CisgICAgICAgICAgICByZXR1cm4gY2Fub25pY2FsaXplVW5pY29kZUxvY2FsZUlEKGNvZGUu
YXNjaWkoKSkuYXNjaWkoKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlJlZ2lvbjog
eworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUg
dG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBjb2RlLmFzY2lpKCk7CisgICAgICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3Vs
dC5tdXRhYmxlRGF0YSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVE
YXRhW2luZGV4XSA9IHRvQVNDSUlVcHBlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDog
eworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBm
aXJzdCBjaGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vj
b25kLCB0aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFz
IGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWko
KTsKKyAgICAgICAgICAgIGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7
CisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAgICAgICAg
bXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2lu
ZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlciht
dXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlOjpDYWxlbmRh
cjogeworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNv
ZGUgdG8gbG93ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBjb2RlLmFzY2lpKCk7CisgICAgICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJl
c3VsdC5tdXRhYmxlRGF0YSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFi
bGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OkRhdGVU
aW1lRmllbGQ6IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH07CisKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7Ci0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7
CisgICAgQ1N0cmluZyBjYW5vbmljYWxDb2RlOworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAg
Y2FzZSBUeXBlOjpMYW5ndWFnZTogeworICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1hdGNo
ZXMgdGhlIHVuaWNvZGVfbGFuZ3VhZ2VfaWQgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9y
IGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZUxhbmd1YWdlSWQoY29kZSkpIHsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQg
aXMgbm90IGEgbGFuZ3VhZ2UgaWQiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlO
YW1lcyhtX3R5cGUsIFdURk1vdmUoY29kZSkpOworICAgICAgICAvLyBEbyBub3QgdXNlIHVsZG5f
bGFuZ3VhZ2VEaXNwbGF5TmFtZSBzaW5jZSBpdCBpcyBub3QgZXhwZWN0ZWQgb25lIGZvciB0aGlz
ICJsYW5ndWFnZSIgdHlwZS4gSXQgcmV0dXJucyAiZW4tVVMiIGZvciAiZW4tVVMiIGNvZGUsIGlu
c3RlYWQgb2YgIkFtZXJpY2FuIEVuZ2xpc2giLgorICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMu
Z2V0KCksIGNhbm9uaWNhbENvZGUuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5v
dCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBS
YW5nZUVycm9yIGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhj
b2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIH0KKyAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNhbm9uaWNhbGl6ZUNv
ZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKKyAgICAgICAgc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1f
ZGlzcGxheU5hbWVzLmdldCgpLCBjYW5vbmljYWxDb2RlLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgIC8vIElm
IGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHByb2R1Y3Rp
b24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVT
Y3JpcHRTdWJ0YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGNhbm9uaWNhbENvZGUgPSBj
YW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7Cisg
ICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERp
c3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgY2Fub25pY2FsQ29kZS5kYXRhKCksIGJ1
ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OiB7
CiAgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1
cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KICAgICAg
ICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8g
VURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgLy8g
ICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURp
c3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KQEAg
LTIwMiw4NCArMjgxLDkwIEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgICAgIC8vIElD
VSBBUEkgZG9jdW1lbnQuCiAgICAgICAgIC8vID4gUmV0dXJucyBwb2ludGVyIHRvIGRpc3BsYXkg
c3RyaW5nIG9mICdsZW4nIFVDaGFycy4gSWYgdGhlIHJlc291cmNlIGRhdGEgY29udGFpbnMgbm8g
ZW50cnkgZm9yICdjdXJyZW5jeScsIHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMgcmV0dXJuZWQu
CiAgICAgICAgIGlmIChzdGF0dXMgPT0gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgJiYgcmVzdWx0
ID09IGN1cnJlbmN5KQotICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNr
OjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBjb2RlVmFsdWU7CisgICAgICAgICAgICByZXR1cm4g
KG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5n
KHZtLCBTdHJpbmcoY3VycmVuY3ksIDMpKTsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcocmVzdWx0LCBsZW5ndGgpKTsKICAgICB9Ci0KLSAgICAvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5h
bWVzCi0gICAgYXV0byBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGUpIC0+IENTdHJpbmcgewotICAgICAgICBBU1NFUlQoY29k
ZS5pc0FsbEFTQ0lJKCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKLSAg
ICAgICAgY2hhciogbXV0YWJsZURhdGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKLSAgICAgICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKLSAgICAgICAg
ICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNh
c2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkKLSAgICAgICAgICAgICAgICBt
dXRhYmxlRGF0YVtpbmRleF0gPSB0b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7
Ci0gICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0
byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCi0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCi0gICAgICAg
ICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2lu
ZGV4XSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFR5cGU6
OlNjcmlwdDogewotICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBw
aW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGlu
ZyB0aGUgc2Vjb25kLCB0aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2Vy
IGNhc2UsIGFzIGRlc2NyaWJlZCBpbiA2LjEuCi0gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0
aCgpID49IDEpCi0gICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIo
bXV0YWJsZURhdGFbMF0pOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGlu
ZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQotICAgICAgICAgICAgICAgIG11dGFibGVE
YXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9OwotCi0gICAgc3dpdGNoIChtX3R5cGUp
IHsKLSAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7Ci0gICAgICAgIC8vIElmIGNvZGUgZG9lcyBu
b3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJh
bmdlRXJyb3IgZXhjZXB0aW9uCi0gICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2Rl
KSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgY2FzZSBUeXBlOjpDYWxlbmRh
cjogeworICAgICAgICAvLyBhLiBJZiBjb2RlIGRvZXMgbm90IG1hdGNoIHRoZSBVbmljb2RlIExv
Y2FsZSBJZGVudGlmaWVyIHR5cGUgbm9udGVybWluYWwsIHRocm93IGEgUmFuZ2VFcnJvciBleGNl
cHRpb24uCisgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY29kZSkp
IHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJn
dW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29kZSJfcyk7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9y
RGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7Ci0gICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9s
YW5ndWFnZURpc3BsYXlOYW1lIHNpbmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMg
Imxhbmd1YWdlIiB0eXBlLiBJdCByZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5z
dGVhZCBvZiAiQW1lcmljYW4gRW5nbGlzaCIuCi0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5n
ZXQoKSwgbGFuZ3VhZ2UuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBjYW5vbmljYWxDb2RlID0g
Y2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29kZSkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBpY3VDb2RlID0gY2Fub25pY2FsQ29kZS5kYXRhKCk7CisgICAg
ICAgIC8vIENvbnZlcnQgY29kZSB0byBsZWdhY3kgbmFtZXMgc2luY2UgSUNVIHJlcXVpcmVzIGxl
Z2FjeSBuYW1lcy4KKyAgICAgICAgaWYgKGNhbm9uaWNhbENvZGUgPT0gImdyZWdvcnkiKQorICAg
ICAgICAgICAgaWN1Q29kZSA9ICJncmVnb3JpYW4iOworICAgICAgICBlbHNlIGlmIChjYW5vbmlj
YWxDb2RlID09ICJpc2xhbWljYyIpCisgICAgICAgICAgICBpY3VDb2RlID0gImlzbGFtaWMtY2l2
aWwiOworICAgICAgICBlbHNlIGlmIChjYW5vbmljYWxDb2RlID09ICJldGhpb2FhIikKKyAgICAg
ICAgICAgIGljdUNvZGUgPSAiZXRoaW9waWMtYW1ldGUtYWxlbSI7CisgICAgICAgIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX2tleVZhbHVlRGlzcGxheU5hbWUsIG1f
ZGlzcGxheU5hbWVzLmdldCgpLCAiY2FsZW5kYXIiLCBpY3VDb2RlLCBidWZmZXIpOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBUeXBlOjpSZWdpb246IHsKLSAgICAgICAgLy8gSWYg
Y29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlv
biwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgotICAgICAgICBpZiAoIWlzVW5pY29kZVJl
Z2lvblN1YnRhZyhjb2RlKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICBj
YXNlIFR5cGU6OkRhdGVUaW1lRmllbGQ6IHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHVzZSB1bGRu
X2tleVZhbHVlRGlzcGxheU5hbWUgc2luY2UgaXQgY2Fubm90IGhhbmRsZSBuYXJyb3cgbGVuZ3Ro
LgorICAgICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdWRhdHBnX2dldEZpZWxkRGlzcGxheU5hbWUu
CisKKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2ludGwtZGlzcGxheW5hbWVzLXYyLyNzZWMt
aXN2YWxpZGRhdGV0aW1lZmllbGRjb2RlCisgICAgICAgIGF1dG8gaXNWYWxpZERhdGVUaW1lRmll
bGRDb2RlID0gW10oY29uc3QgU3RyaW5nJiBjb2RlKSAtPiBzdGQ6Om9wdGlvbmFsPFVEYXRlVGlt
ZVBhdHRlcm5GaWVsZD4geworICAgICAgICAgICAgaWYgKGNvZGUgPT0gImVyYSJfcykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVURBVFBHX0VSQV9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2Rl
ID09ICJ5ZWFyIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfWUVBUl9GSUVMRDsK
KyAgICAgICAgICAgIGlmIChjb2RlID09ICJxdWFydGVyIl9zKQorICAgICAgICAgICAgICAgIHJl
dHVybiBVREFUUEdfUVVBUlRFUl9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJtb250
aCJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX01PTlRIX0ZJRUxEOworICAgICAg
ICAgICAgaWYgKGNvZGUgPT0gIndlZWtPZlllYXIiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFVEQVRQR19XRUVLX09GX1lFQVJfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAid2Vl
a2RheSJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX1dFRUtEQVlfRklFTEQ7Cisg
ICAgICAgICAgICBpZiAoY29kZSA9PSAiZGF5Il9zKQorICAgICAgICAgICAgICAgIHJldHVybiBV
REFUUEdfREFZX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gImRheVBlcmlvZCJfcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX0RBWVBFUklPRF9GSUVMRDsKKyAgICAgICAg
ICAgIGlmIChjb2RlID09ICJob3VyIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdf
SE9VUl9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJtaW51dGUiX3MpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFVEQVRQR19NSU5VVEVfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29k
ZSA9PSAic2Vjb25kIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfU0VDT05EX0ZJ
RUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gInRpbWVab25lTmFtZSJfcykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gVURBVFBHX1pPTkVfRklFTEQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICB9OworCisgICAgICAgIGF1dG8gZmllbGQgPSBpc1ZhbGlkRGF0
ZVRpbWVGaWVsZENvZGUoY29kZSk7CisgICAgICAgIGlmICghZmllbGQpIHsKKyAgICAgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEg
ZGF0ZVRpbWVGaWVsZCBjb2RlIl9zKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KLSAgICAgICAgYXV0byByZWdpb24gPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVz
KG1fdHlwZSwgY29kZSk7Ci0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgcmVnaW9u
LmRhdGEoKSwgYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVHlwZTo6
U2NyaXB0OiB7Ci0gICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29k
ZV9zY3JpcHRfc3VidGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24K
LSAgICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsKLSAgICAgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEg
c2NyaXB0IHN1YnRhZyJfcyk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIFVE
YXRlVGltZVBHRGlzcGxheVdpZHRoIHN0eWxlID0gVURBVFBHX1dJREU7CisgICAgICAgIHN3aXRj
aCAobV9zdHlsZSkgeworICAgICAgICBjYXNlIFN0eWxlOjpMb25nOgorICAgICAgICAgICAgc3R5
bGUgPSBVREFUUEdfV0lERTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxl
OjpTaG9ydDoKKyAgICAgICAgICAgIHN0eWxlID0gVURBVFBHX0FCQlJFVklBVEVEOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6Ok5hcnJvdzoKKyAgICAgICAgICAgIHN0
eWxlID0gVURBVFBHX05BUlJPVzsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gc2NyaXB0ID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUs
IGNvZGUpOwotICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxk
bl9zY3JpcHREaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHNjcmlwdC5kYXRhKCks
IGJ1ZmZlcik7Ci0gICAgICAgIGJyZWFrOworCisgICAgICAgIGJ1ZmZlciA9IHZtLmludGxDYWNo
ZSgpLmdldEZpZWxkRGlzcGxheU5hbWUobV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgZmllbGQudmFs
dWUoKSwgc3R5bGUsIHN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6Tm9uZSkgPyBqc1VuZGVm
aW5lZCgpIDoganNTdHJpbmcodm0sIGNvZGUpOworICAgICAgICByZXR1cm4ganNTdHJpbmcodm0s
IFN0cmluZyhidWZmZXIpKTsKICAgICB9Ci0gICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgLy8gdWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwg
dWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgYW5kIHVsZG5fc2NyaXB0RGlzcGxheU5hbWUgcmV0dXJu
IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUiBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3Vu
ZC4KICAgICAgICAgLy8gV2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgaWYgZmFsbGJhY2sgaXMg
Im5vbmUiLiBPdGhlcndpc2UsIHdlIHNob3VsZCByZXR1cm4gaW5wdXQgdmFsdWUuCiAgICAgICAg
IGlmIChzdGF0dXMgPT0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SKQotICAgICAgICAgICAgcmV0
dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBjb2Rl
VmFsdWU7CisgICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUp
ID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBTdHJpbmcoY2Fub25pY2FsQ29kZS5kYXRh
KCksIGNhbm9uaWNhbENvZGUubGVuZ3RoKCkpKTsKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUu
Il9zKTsKICAgICB9CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CkBA
IC0yOTgsNyArMzgzLDkgQEAgSlNPYmplY3QqIEludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVkT3B0
aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2Nh
bGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CiAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIHR5cGVTdHJpbmcobV90eXBlKSkpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNrIiksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmZhbGxiYWNrLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIGZhbGxiYWNrU3RyaW5nKG1fZmFsbGJhY2spKSk7CisgICAgaWYgKG1fdHlwZSA9PSBUeXBl
OjpMYW5ndWFnZSkKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sYW5ndWFnZURpc3BsYXksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbGFuZ3VhZ2VEaXNw
bGF5U3RyaW5nKG1fbGFuZ3VhZ2VEaXNwbGF5KSkpOwogICAgIHJldHVybiBvcHRpb25zOwogfQog
CkBAIC0zMjcsNiArNDE0LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjp0eXBl
U3RyaW5nKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuICJzY3JpcHQiX3M7CiAgICAgY2FzZSBU
eXBlOjpDdXJyZW5jeToKICAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKKyAgICBjYXNlIFR5
cGU6OkNhbGVuZGFyOgorICAgICAgICByZXR1cm4gImNhbGVuZGFyIl9zOworICAgIGNhc2UgVHlw
ZTo6RGF0ZVRpbWVGaWVsZDoKKyAgICAgICAgcmV0dXJuICJkYXRlVGltZUZpZWxkIl9zOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7CkBAIC0zNDQsNCArNDM1LDE2IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
OjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBmYWxsYmFjaykKICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpsYW5ndWFn
ZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdlRGlzcGxheSkKK3sKKyAgICBz
d2l0Y2ggKGxhbmd1YWdlRGlzcGxheSkgeworICAgIGNhc2UgTGFuZ3VhZ2VEaXNwbGF5OjpEaWFs
ZWN0OgorICAgICAgICByZXR1cm4gImRpYWxlY3QiX3M7CisgICAgY2FzZSBMYW5ndWFnZURpc3Bs
YXk6OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJkIl9zOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERpc3BsYXlOYW1lcy5oCmluZGV4IDgxYWZjOTBlYmM2YzRiYWMyY2M1MjExNWNlM2Iz
ZWE1ZDBmYjk3NGIuLjRjMzdlODdhZjhiZTI2YzJhNTNjYzQ5ZjI0MmNiMWUxZWRmOTRjNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgK
QEAgLTcyLDEyICs3MiwxNCBAQCBjbGFzcyBJbnRsRGlzcGxheU5hbWVzIGZpbmFsIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAg
IGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgTmFycm93LCBTaG9ydCwgTG9uZyB9OwotICAg
IGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBMYW5ndWFnZSwgUmVnaW9uLCBTY3JpcHQsIEN1
cnJlbmN5IH07CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IExhbmd1YWdlLCBSZWdp
b24sIFNjcmlwdCwgQ3VycmVuY3ksIENhbGVuZGFyLCBEYXRlVGltZUZpZWxkIH07CiAgICAgZW51
bSBjbGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBOb25lIH07CisgICAgZW51bSBjbGFz
cyBMYW5ndWFnZURpc3BsYXkgOiB1aW50OF90IHsgRGlhbGVjdCwgU3RhbmRhcmQgfTsKIAogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGZhbGxi
YWNrU3RyaW5nKEZhbGxiYWNrKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGxhbmd1YWdlRGlz
cGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOwogCiAgICAgdXNpbmcgVUxvY2FsZURpc3BsYXlO
YW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4gbV9kaXNw
bGF5TmFtZXM7CkBAIC04OCw2ICs5MCw3IEBAIGNsYXNzIEludGxEaXNwbGF5TmFtZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpM
b25nIH07CiAgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpMYW5ndWFnZSB9OwogICAgIEZhbGxiYWNr
IG1fZmFsbGJhY2sgeyBGYWxsYmFjazo6Q29kZSB9OworICAgIExhbmd1YWdlRGlzcGxheSBtX2xh
bmd1YWdlRGlzcGxheSB7IExhbmd1YWdlRGlzcGxheTo6RGlhbGVjdCB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCmluZGV4IGUxNDAzY2YwZDE3NzI0MDgwNTI4MWQ2NTJjODIzMDJkMWViZDk1YmUuLmM4NmQw
NTRjODA5ODMxOTZiYzI1MDkzNzJkNzQ3YTAwMjg2ZmRlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhl
bHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MDksMjQgKzYxMCwyOSBAQCB1bnNpZ25l
ZCBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBQcgogLy8gaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUv
I1VuaWNvZGVfbG9jYWxlX2lkZW50aWZpZXIKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmll
clR5cGUoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkp
OwotCi0gICAgZm9yIChhdXRvIHBhcnQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmll
cygnLScpKSB7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0gcGFydC5sZW5ndGgoKTsKLSAgICAgICAg
aWYgKGxlbmd0aCA8IDMgfHwgbGVuZ3RoID4gOCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogcGFydC5jb2RlVW5pdHMoKSkgewotICAg
ICAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgLy8gTWF0
Y2hpbmcgdGhlIFVuaWNvZGUgTG9jYWxlIElkZW50aWZpZXIgdHlwZSBub250ZXJtaW5hbC4KKyAg
ICAvLyBCZWNhdXNlIHRoZSBzcGVjIGFic3RyYWN0IG9wZXJhdGlvbiBpcyBub3QgbWVudGlvbmlu
ZyB0byBCQ1AtNDcgY29uZm9ybWFuY2UgZm9yIHRoaXMgbWF0Y2hpbmcsCisgICAgLy8gJy0nIGFu
ZCAnXycgc2VwYXJhdG9ycyBhcmUgYWxsb3dlZCB3aGlsZSBCQ1AtNDcgb25seSBhY2NlcHRzICct
Jy4KKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgSXNTdHJ1Y3R1cmFsbHlWYWxpZExhbmd1YWdl
VGFnIGV4cGxpY2l0bHkgbWVudGlvbnMgdG8gQkNQLTQ3LgorICAgIHJldHVybiByZWFkQ2hhcmFj
dGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gYm9vbCB7CisgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBhdXRvIGJlZ2luID0gYnVmZmVyLnBvc2l0aW9u
KCk7CisgICAgICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAm
JiBpc0FTQ0lJQWxwaGFudW1lcmljKCpidWZmZXIpKQorICAgICAgICAgICAgICAgICsrYnVmZmVy
OworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdp
bjsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPCAzIHx8IGxlbmd0aCA+IDgpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFidWZmZXIuaGFzQ2hhcmFjdGVy
c1JlbWFpbmluZygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
aWYgKCpidWZmZXIgIT0gJy0nICYmICpidWZmZXIgIT0gJ18nKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICsrYnVmZmVyOwogICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgfSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtY2Fub25pY2FsaXpldW5pY29kZWxvY2FsZWlkCi1zdGF0aWMgU3RyaW5nIGNhbm9uaWNh
bGl6ZUxhbmd1YWdlVGFnKGNvbnN0IENTdHJpbmcmIHRhZykKK1N0cmluZyBjYW5vbmljYWxpemVV
bmljb2RlTG9jYWxlSUQoY29uc3QgQ1N0cmluZyYgdGFnKQogewogICAgIGF1dG8gYnVmZmVyID0g
bG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZ1dpdGhOdWxsVGVybWluYXRvcih0YWcpOwogICAg
IGlmIChidWZmZXIuaXNFbXB0eSgpKQpAQCAtNzAyLDcgKzcwOCw3IEBAIFZlY3RvcjxTdHJpbmc+
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhCiAKICAgICAgICAgICAgIGlmIChpc1N0cnVjdHVyYWxseVZhbGlkTGFuZ3VhZ2VU
YWcodGFnKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVCh0YWcuaXNBbGxBU0NJSSgpKTsKLSAg
ICAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxhbmd1
YWdlVGFnKHRhZy5hc2NpaSgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXpl
ZFRhZyA9IGNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRCh0YWcuYXNjaWkoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFjYW5vbmljYWxpemVkVGFnLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChzZWVuU2V0LmFkZChjYW5vbmljYWxpemVkVGFnKS5pc05ld0VudHJ5KQogICAg
ICAgICAgICAgICAgICAgICAgICAgc2Vlbi5hcHBlbmQoY2Fub25pY2FsaXplZFRhZyk7CkBAIC03
MzksMTQgKzc0NSwxNCBAQCBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIC8vIGJlIGRldGVybWluZWQgYnkgV2ViQ29yZS1zcGVjaWZpYyBsb2dp
YyBsaWtlIHNvbWUgV0sgc2V0dGluZ3MuIFVzdWFsbHkgdGhpcyB3aWxsIHJldHVybiB0aGUKICAg
ICAvLyBzYW1lIHRoaW5nIGFzIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKVswXS4KICAgICBpZiAo
YXV0byBkZWZhdWx0TGFuZ3VhZ2UgPSBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCktPmRlZmF1bHRMYW5ndWFnZSkgewotICAgICAgICBTdHJpbmcgbG9jYWxlID0gY2Fub25p
Y2FsaXplTGFuZ3VhZ2VUYWcoZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpKTsKKyAgICAgICAgU3Ry
aW5nIGxvY2FsZSA9IGNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRChkZWZhdWx0TGFuZ3VhZ2Uo
KS51dGY4KCkpOwogICAgICAgICBpZiAoIWxvY2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbG9jYWxlOwogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxhbmd1YWdlIDog
bGFuZ3VhZ2VzKSB7Ci0gICAgICAgIFN0cmluZyBsb2NhbGUgPSBjYW5vbmljYWxpemVMYW5ndWFn
ZVRhZyhsYW5ndWFnZS51dGY4KCkpOworICAgICAgICBTdHJpbmcgbG9jYWxlID0gY2Fub25pY2Fs
aXplVW5pY29kZUxvY2FsZUlEKGxhbmd1YWdlLnV0ZjgoKSk7CiAgICAgICAgIGlmICghbG9jYWxl
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGVlNmM5NmFlMDExNzUyNzNh
M2Q5NTI5ODZkZmU4NTc4NDMyMzllZTEuLjA3MmUyZTg1M2MzMWE3ZmZhNWQyNTZkMmNmNDgzMzE5
YmFlMDA0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgK
QEAgLTEyNyw2ICsxMjcsNyBAQCBib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3
KTsKIGJvb2wgaXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3KTsKIGJvb2wgaXNVbmlj
b2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3KTsKIGJvb2wgaXNTdHJ1Y3R1cmFsbHlWYWxpZExhbmd1
YWdlVGFnKFN0cmluZ1ZpZXcpOworU3RyaW5nIGNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRChj
b25zdCBDU3RyaW5nJiBsYW5ndWFnZVRhZyk7CiAKIGJvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lD
b2RlKFN0cmluZ1ZpZXcpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGI5OTgyMzE4ZDhlN2VjMTI1MWRhMzhkMTA5NDE1MWQ1NGE0Mzk5
ZTkuLjZhMzkzN2IwODhmNjEyNDM1OGY0NzFiNjU1ZjdlYTRiNTQ1ZmQwZDMgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjEtMDgtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbSlNDXSBJbnRsLkRpc3BsYXlOYW1lcyB2MgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMtdjIuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAodm0uaWN1VmVyc2lvbik6CisgICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5hbWVz
LmpzOgorICAgICAgICAodm0uaWN1VmVyc2lvbik6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcu
eWFtbDoKKwogMjAyMS0wOC0wNSAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFpbEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gY2hlY2tpbmcgYXJyYXkgaW4g
REZHICgzMiBiaXRzKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFt
ZXMtdjIuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy12Mi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNjgyZGNmZGQyMmI2YzM3MzZlMGViZjMwM2E1MDA3NTQ3MTVkOTA0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMtdjIuanMKQEAgLTAsMCAr
MSw0MCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2lmICgkdm0uaWN1VmVy
c2lvbigpID49IDYxKSB7CisgICAgeworICAgICAgICBsZXQgZGlzcGxheU5hbWVzID0gbmV3IElu
dGwuRGlzcGxheU5hbWVzKHVuZGVmaW5lZCwge3R5cGU6ICdjYWxlbmRhcid9KTsKKyAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZGlzcGxheU5hbWVzLm9mKCcnKTsKKyAg
ICAgICAgfSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGNhbGVuZGFyIGNvZGVgKTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZGlzcGxheU5hbWVzLm9m
KCctJyk7CisgICAgICAgIH0sIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBjYWxlbmRh
ciBjb2RlYCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGRpc3Bs
YXlOYW1lcy5vZignYWFhYWEtJyk7CisgICAgICAgIH0sIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBjYWxlbmRhciBjb2RlYCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAg
ICAgICAgICAgIGRpc3BsYXlOYW1lcy5vZignXycpOworICAgICAgICB9LCBgUmFuZ2VFcnJvcjog
YXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29kZWApOworICAgICAgICBzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgICAgICAgICBkaXNwbGF5TmFtZXMub2YoJ2FhYWFhXycpOworICAgICAgICB9
LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29kZWApOworICAgIH0K
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMKaW5kZXggMzQwOTk3YmFhNzY0OTRmZDk1
YjE1MzRlNDhmYmNhNjc0MmI0YmVmMC4uYTU1MWM2MzkzNDdmNWUxMzA2ZDc2NjkzZTBiNDk4MWZk
ZmQxN2E0OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMKQEAgLTE3OCw3ICsxNzgs
NyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gJ2VuLUFBJzsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCBvYmplY3QpOworICAgICAgICBz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKG9iamVjdCksICdlbi1BQScpOwogICAgIH0KIAogICAg
IGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xh
bmd1YWdlJywgZmFsbGJhY2s6ICdub25lJ30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGNiYmVlZmY1
NjIzN2VlMzM4OTQwZjRmYzM2NDhmMjI2ZDI4ZDhiNWIuLjU3OGEzM2E2OTIxZTYwZTdjMWZiYTA1
MjMzZThmMTcwMTRiZWRkZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFt
bAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTMxLDcgKzMxLDYgQEAgc2tp
cDoKICAgICAtIGltcG9ydC1hc3NlcnRpb25zCiAgICAgLSBqc29uLW1vZHVsZXMKICAgICAtIGNs
YXNzLXN0YXRpYy1ibG9jawotICAgIC0gSW50bC5EaXNwbGF5TmFtZXMtdjIKICAgICAtIEludGwu
RGF0ZVRpbWVGb3JtYXQtZXh0ZW5kLXRpbWV6b25lbmFtZQogICAgIC0gY2FsbGFibGUtYm91bmRh
cnktcmVhbG1zCiAgIHBhdGhzOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435951</attachid>
            <date>2021-08-20 01:25:34 -0700</date>
            <delta_ts>2021-08-20 15:43:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227832-20210820012533.patch</filename>
            <type>text/plain</type>
            <size>34708</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmVhZDM3YmE2NzJlYzNkMzE1M2QyNzZkYmUwOTUyYzRjNjUwNWI2Li4xYzkwMzQzNGMwNGIyNGJi
YzMzOTEwODQ5MjJkZGVmMjIzMThlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMS0wOC0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgSW50
bC5EaXNwbGF5TmFtZXMgdjJbMV0uCisgICAgICAgIE5ld2x5IGFkZGVkIG5hbWVzIGFyZSBjYWxl
bmRhciBuYW1lcyBhbmQgZGF0ZSB0aW1lIGZpZWxkIG5hbWVzLgorICAgICAgICBGb3IgdGhlIGxh
bmd1YWdlIG5hbWUsIGxhbmd1YWdlIGRpc3BsYXkgb3B0aW9uIGlzIGFkZGVkLgorCisgICAgICAg
IFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvaW50bC1kaXNwbGF5bmFtZXMtdjIKKworICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0lu
dGxDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkludGxDYWNoZTo6Z2V0RmllbGREaXNwbGF5TmFt
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjppbml0
aWFsaXplRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6b2Yg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6bGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlw
ZSk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRCk6CisgICAgICAg
IChKU0M6OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpkZWZhdWx0TG9j
YWxlKToKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorCiAyMDIxLTA4LTE5ICBUaW0gTmd1eWVu
ICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDo6YmFja2Ryb3AgcHNldWRv
IGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCmluZGV4IGRjNjAxOWY0NWZkOThiNDM3YTViZjZlMjY1ODRhMGEzNDYzMmZhZGMu
LjMzZTJjN2UxMmJjM2Q4N2IzYjU4ZjhhZWU5MjUyNzY5ZjhiNjk1OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTE2LDYg
KzExNiw3IEBACiAgICAgbWFjcm8oZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBc
CiAgICAgbWFjcm8oZXhpdEtpbmQpIFwKKyAgICBtYWNybyhmYWxsYmFjaykgXAogICAgIG1hY3Jv
KGZsYWdzKSBcCiAgICAgbWFjcm8oZm9yRWFjaCkgXAogICAgIG1hY3JvKGZvcm1hdE1hdGNoZXIp
IFwKQEAgLTE1NCw2ICsxNTUsNyBAQAogICAgIG1hY3JvKGpldHRpc29uUmVhc29uKSBcCiAgICAg
bWFjcm8oam9pbikgXAogICAgIG1hY3JvKGxhbmd1YWdlKSBcCisgICAgbWFjcm8obGFuZ3VhZ2VE
aXNwbGF5KSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAg
ICAgbWFjcm8obGluZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDYWNo
ZS5jcHAKaW5kZXggNDQ5MzlhNDM4MmNmMTViY2QwNzZkYWZkZWU4NTgzM2YzMDI3MjEzOS4uYjE3
ZDczNDBkZjU2NWE0NDA4MTUwMDc0OTUwNTY3NzIxYWNhMWJjZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuY3BwCkBAIC01Myw0ICs1MywxNiBAQCBWZWN0b3I8
VUNoYXIsIDMyPiBJbnRsQ2FjaGU6OmdldEJlc3REYXRlVGltZVBhdHRlcm4oY29uc3QgQ1N0cmlu
ZyYgbG9jYWxlLCBjb25zdAogICAgIHJldHVybiBwYXR0ZXJuQnVmZmVyOwogfQogCitWZWN0b3I8
VUNoYXIsIDMyPiBJbnRsQ2FjaGU6OmdldEZpZWxkRGlzcGxheU5hbWUoY29uc3QgQ1N0cmluZyYg
bG9jYWxlLCBVRGF0ZVRpbWVQYXR0ZXJuRmllbGQgZmllbGQsIFVEYXRlVGltZVBHRGlzcGxheVdp
ZHRoIHdpZHRoLCBVRXJyb3JDb2RlJiBzdGF0dXMpCit7CisgICAgYXV0byBzaGFyZWRHZW5lcmF0
b3IgPSBnZXRTaGFyZWRQYXR0ZXJuR2VuZXJhdG9yKGxvY2FsZSwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB7IH07CisgICAgVmVjdG9yPFVDaGFy
LCAzMj4gYnVmZmVyOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
ZGF0cGdfZ2V0RmllbGREaXNwbGF5TmFtZSwgc2hhcmVkR2VuZXJhdG9yLCBmaWVsZCwgd2lkdGgs
IGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4geyB9
OworICAgIHJldHVybiBidWZmZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuaAppbmRleCA0MmQ1ZTExNGI0NDU2Yzk2NDdm
ZGNlYTU3NjhmZTllMzQ2NTE5MTFiLi4wNThiMjQyMzc4NmQzMzA2MWYzMTYzODI5YmQ0M2QzOTE2
N2ZmODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuaApAQCAt
MzksNiArMzksNyBAQCBjbGFzcyBJbnRsQ2FjaGUgewogICAgIEludGxDYWNoZSgpID0gZGVmYXVs
dDsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGdldEJlc3REYXRlVGltZVBhdHRlcm4oY29uc3Qg
Q1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogc2tlbGV0b24sIHVuc2lnbmVkIHNrZWxldG9u
U2l6ZSwgVUVycm9yQ29kZSYpOworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGdldEZpZWxkRGlzcGxh
eU5hbWUoY29uc3QgQ1N0cmluZyYgbG9jYWxlLCBVRGF0ZVRpbWVQYXR0ZXJuRmllbGQsIFVEYXRl
VGltZVBHRGlzcGxheVdpZHRoLCBVRXJyb3JDb2RlJik7CiAKIHByaXZhdGU6CiAgICAgVURhdGVU
aW1lUGF0dGVybkdlbmVyYXRvciogZ2V0U2hhcmVkUGF0dGVybkdlbmVyYXRvcihjb25zdCBDU3Ry
aW5nJiBsb2NhbGUsIFVFcnJvckNvZGUmIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKaW5kZXggNDJiN2IwYzAxYmFhODcw
MzRlYWExNDYwZjcxNGFmMzY3YmNiMDUxNi4uYTc0ZmFkNzM0NjRjY2I0MGFmMmFmYmZkMGE1ODQ4
NzdmMmZkOWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCiAKKyNpbmNsdWRlICJJbnRsQ2FjaGUuaCIK
ICNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtOTUsNyArOTYsNyBAQCB2b2lkIElu
dGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYQogICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxlPihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgIm5hcnJvdyJfcywg
U3R5bGU6Ok5hcnJvdyB9LCB7ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0IH0sIHsgImxvbmciX3Ms
IFN0eWxlOjpMb25nIH0gfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hv
cnRcIiwgb3IgXCJsb25nXCIiX3MsIFN0eWxlOjpMb25nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxzdGQ6Om9w
dGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5
cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJlZ2lvbiJfcywgVHlw
ZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsgImN1cnJlbmN5Il9z
LCBUeXBlOjpDdXJyZW5jeSB9IH0sICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwg
XCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5jeVwiIl9zLCBzdGQ6Om51bGxvcHQp
OworICAgIGF1dG8gdHlwZSA9IGludGxPcHRpb248c3RkOjpvcHRpb25hbDxUeXBlPj4oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9z
LCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3Jp
cHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSwg
eyAiY2FsZW5kYXIiX3MsIFR5cGU6OkNhbGVuZGFyIH0sIHsgImRhdGVUaW1lRmllbGQiX3MsIFR5
cGU6OkRhdGVUaW1lRmllbGQgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIs
IFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIFwiY3VycmVuY3lcIiwgXCJjYWxlbmRhclwiLCBvciBc
ImRhdGVUaW1lRmllbGRcIiJfcywgc3RkOjpudWxsb3B0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghdHlwZSkgewogICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidHlwZSBtdXN0IG5vdCBiZSB1bmRlZmluZWQiX3Mp
OwpAQCAtMTAzLDcgKzEwNCwxMCBAQCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVE
aXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIH0KICAg
ICBtX3R5cGUgPSB0eXBlLnZhbHVlKCk7CiAKLSAgICBtX2ZhbGxiYWNrID0gaW50bE9wdGlvbjxG
YWxsYmFjaz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZmFsbGJhY2siKSwgeyB7ICJjb2RlIl9zLCBGYWxsYmFjazo6Q29kZSB9LCB7ICJub25lIl9z
LCBGYWxsYmFjazo6Tm9uZSB9IH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiBv
ciBcIm5vbmVcIiJfcywgRmFsbGJhY2s6OkNvZGUpOworICAgIG1fZmFsbGJhY2sgPSBpbnRsT3B0
aW9uPEZhbGxiYWNrPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmZh
bGxiYWNrLCB7IHsgImNvZGUiX3MsIEZhbGxiYWNrOjpDb2RlIH0sIHsgIm5vbmUiX3MsIEZhbGxi
YWNrOjpOb25lIH0gfSwgImZhbGxiYWNrIG11c3QgYmUgZWl0aGVyIFwiY29kZVwiIG9yIFwibm9u
ZVwiIl9zLCBGYWxsYmFjazo6Q29kZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKworICAgIG1fbGFuZ3VhZ2VEaXNwbGF5ID0gaW50bE9wdGlvbjxMYW5ndWFnZURp
c3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bGFuZ3VhZ2VE
aXNwbGF5LCB7IHsgImRpYWxlY3QiX3MsIExhbmd1YWdlRGlzcGxheTo6RGlhbGVjdCB9LCB7ICJz
dGFuZGFyZCJfcywgTGFuZ3VhZ2VEaXNwbGF5OjpTdGFuZGFyZCB9IH0sICJsYW5ndWFnZURpc3Bs
YXkgbXVzdCBiZSBlaXRoZXIgXCJkaWFsZWN0XCIgb3IgXCJzdGFuZGFyZFwiIl9zLCBMYW5ndWFn
ZURpc3BsYXk6OkRpYWxlY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAKICNpZiBIQVZFKElDVV9VX0xPQ0FMRV9ESVNQTEFZX05BTUVTKQpAQCAtMTExLDkgKzEx
NSw4IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBVRGlzcGxheUNvbnRleHQgY29u
dGV4dHNbXSA9IHsKICAgICAgICAgLy8gZW5fR0IgZGlzcGxheXMgYXMgJ0VuZ2xpc2ggKFVuaXRl
ZCBLaW5nZG9tKScgKFN0YW5kYXJkIE5hbWVzKSBvciAnQnJpdGlzaCBFbmdsaXNoJyAoRGlhbGVj
dCBOYW1lcykuCi0gICAgICAgIC8vIFdlIHVzZSBEaWFsZWN0IE5hbWVzIGhlcmUsIGFsaWduZWQg
dG8gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjIGRyYWZ0IGFuZCBWOCdzIGJlaGF2aW9yLgogICAg
ICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1l
cyNsYW5ndWFnZS1kaXNwbGF5LW5hbWVzCi0gICAgICAgIFVESVNQQ1RYX0RJQUxFQ1RfTkFNRVMs
CisgICAgICAgIChtX3R5cGUgPT0gVHlwZTo6TGFuZ3VhZ2UgJiYgbV9sYW5ndWFnZURpc3BsYXkg
PT0gTGFuZ3VhZ2VEaXNwbGF5OjpTdGFuZGFyZCkgPyBVRElTUENUWF9TVEFOREFSRF9OQU1FUyA6
IFVESVNQQ1RYX0RJQUxFQ1RfTkFNRVMsCiAKICAgICAgICAgLy8gQ2FwaXRhaWxpemF0aW9uIG1v
ZGUgY2FuIGJlIHBpY2tlZCBmcm9tIHNldmVyYWwgb3B0aW9ucy4gUG9zc2libHkgZWl0aGVyIFVE
SVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUgb3IgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9S
X1NUQU5EQUxPTkUgaXMKICAgICAgICAgLy8gcHJlZmVyYWJsZSBpbiBJbnRsLkRpc3BsYXlOYW1l
cy4gV2UgdXNlIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FIGJlY2F1c2Ug
aXQgbWFrZXMgc3RhbmRhbG9uZSBkYXRlIGZvcm1hdCBiZXR0ZXIgKGZyICJKdWlsbGV0IDIwMDgi
IGluIElDVSB0ZXN0IHN1aXRlcyksCkBAIC0xNTMsMTAgKzE1Niw4NiBAQCBKU1ZhbHVlIEludGxE
aXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29k
ZVZhbHVlKSBjbwogICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxj
b2RlZm9yZGlzcGxheW5hbWVzCisgICAgYXV0byBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5h
bWVzID0gW10oVHlwZSB0eXBlLCBTdHJpbmcmJiBjb2RlKSAtPiBDU3RyaW5nIHsKKyAgICAgICAg
QVNTRVJUKGNvZGUuaXNBbGxBU0NJSSgpKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIHJldHVybiBjYW5vbmljYWxp
emVVbmljb2RlTG9jYWxlSUQoY29kZS5hc2NpaSgpKS5hc2NpaSgpOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUg
cmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEu
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgICAgIGNo
YXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisg
ICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVE
YXRhW2luZGV4XSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUg
cmVzdWx0IG9mIG1hcHBpbmcgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBjb2RlIHRvIHVwcGVyIGNh
c2UsIGFuZCBtYXBwaW5nIHRoZSBzZWNvbmQsIHRoaXJkIGFuZCBmb3VydGggY2hhcmFjdGVyIGlu
IGNvZGUgdG8gbG93ZXIgY2FzZSwgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gY29kZS5hc2NpaSgpOworICAgICAgICAgICAgY2hhciogbXV0YWJsZURhdGEg
PSByZXN1bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkg
Pj0gMSkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVswXSA9IHRvQVNDSUlVcHBlcihtdXRh
YmxlRGF0YVswXSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMTsgaW5kZXgg
PCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFb
aW5kZXhdID0gdG9BU0NJSUxvd2VyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0
aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byBsb3dlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2
LjEuCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgICAg
IGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgp
CisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxvd2VyKG11dGFi
bGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVHlwZTo6RGF0ZVRpbWVGaWVsZDogeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZl
cjsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQotICAgIGlmIChtX3R5
cGUgPT0gVHlwZTo6Q3VycmVuY3kpIHsKKyAgICBDU3RyaW5nIGNhbm9uaWNhbENvZGU7CisgICAg
c3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7CisgICAgICAgIC8v
IElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0
aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlmICghaXNVbmljb2Rl
TGFuZ3VhZ2VJZChjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5v
bmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7CisgICAg
ICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNpbmNlIGl0IGlzIG5v
dCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCByZXR1cm5zICJlbi1V
UyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5nbGlzaCIuCisgICAg
ICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX2xvY2FsZURpc3Bs
YXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgY2Fub25pY2FsQ29kZS5kYXRhKCksIGJ1ZmZl
cik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjogeworICAg
ICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfcmVnaW9uX3N1YnRh
ZyBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlmICgh
aXNVbmljb2RlUmVnaW9uU3VidGFnKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWci
X3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBjYW5vbmlj
YWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUo
Y29kZSkpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxk
bl9yZWdpb25EaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIGNhbm9uaWNhbENvZGUu
ZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpT
Y3JpcHQ6IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2Rl
X3NjcmlwdF9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgor
ICAgICAgICBpZiAoIWlzVW5pY29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBz
Y3JpcHQgc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAg
ICAgICAgY2Fub25pY2FsQ29kZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90
eXBlLCBXVEZNb3ZlKGNvZGUpKTsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2lu
Z0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgpLCBj
YW5vbmljYWxDb2RlLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgVHlwZTo6Q3VycmVuY3k6IHsKICAgICAgICAgLy8gV2UgZG8gbm90IHVzZSB1bGRuX2tl
eVZhbHVlRGlzcGxheU5hbWUgKyAiY3VycmVuY3kiLiBUaGlzIGlzIGJlY2F1c2Ugb2YgdGhlIGZv
bGxvd2luZyByZWFzb25zLgogICAgICAgICAvLyAgICAgMS4gSUNVIGRvZXMgbm90IHJlc3BlY3Qg
VURJU1BDVFhfTEVOR1RIX0ZVTEwgLyBVRElTUENUWF9MRU5HVEhfU0hPUlQgaW4gaXRzIGltcGxl
bWVudGF0aW9uLgogICAgICAgICAvLyAgICAgMi4gVGhlcmUgaXMgbm8gd2F5IHRvIHNldCAibmFy
cm93IiBzdHlsZSBpbiBVTG9jYWxlRGlzcGxheU5hbWVzIHdoaWxlIGN1cnJlbmN5IGhhdmUgIm5h
cnJvdyIgc3ltYm9sIHN0eWxlLgpAQCAtMjAyLDg0ICsyODEsOTAgQEAgSlNWYWx1ZSBJbnRsRGlz
cGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVW
YWx1ZSkgY28KICAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KICAgICAgICAgLy8gPiBSZXR1
cm5zIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiBJZiB0aGUgcmVz
b3VyY2UgZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVu
Y3knIGl0c2VsZiBpcyByZXR1cm5lZC4KICAgICAgICAgaWYgKHN0YXR1cyA9PSBVX1VTSU5HX0RF
RkFVTFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCi0gICAgICAgICAgICByZXR1cm4g
KG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1
ZTsKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6Tm9uZSkgPyBq
c1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIFN0cmluZyhjdXJyZW5jeSwgMykpOwogICAgICAg
ICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQsIGxlbmd0aCkpOwogICAgIH0KLQot
ICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNh
bm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKLSAgICBhdXRvIGNhbm9uaWNhbGl6ZUNvZGVGb3JE
aXNwbGF5TmFtZXMgPSBbXShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZSkgLT4gQ1N0cmlu
ZyB7Ci0gICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gY29kZS5hc2NpaSgpOwotICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3VsdC5t
dXRhYmxlRGF0YSgpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBl
OjpMYW5ndWFnZTogewotICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBt
YXBwaW5nIGNvZGUgdG8gbG93ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2lu
ZGV4KQotICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlciht
dXRhYmxlRGF0YVtpbmRleF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBUeXBlOjpSZWdpb246IHsKLSAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSBy
ZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4K
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5sZW5n
dGgoKTsgKytpbmRleCkKLSAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0b0FT
Q0lJVXBwZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7Ci0gICAgICAgICAgICAvLyBMZXQgY29k
ZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBjb2RlIHRv
IHVwcGVyIGNhc2UsIGFuZCBtYXBwaW5nIHRoZSBzZWNvbmQsIHRoaXJkIGFuZCBmb3VydGggY2hh
cmFjdGVyIGluIGNvZGUgdG8gbG93ZXIgY2FzZSwgYXMgZGVzY3JpYmVkIGluIDYuMS4KLSAgICAg
ICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPj0gMSkKLSAgICAgICAgICAgICAgICBtdXRhYmxl
RGF0YVswXSA9IHRvQVNDSUlVcHBlcihtdXRhYmxlRGF0YVswXSk7Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMTsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCi0g
ICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxvd2VyKG11dGFibGVE
YXRhW2luZGV4XSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IFR5cGU6OkN1cnJlbmN5OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH07
Ci0KLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKLSAg
ICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX2xhbmd1YWdlX2lk
IHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KLSAgICAgICAgaWYgKCFp
c1VuaWNvZGVMYW5ndWFnZUlkKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zKTsK
KyAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CisgICAgICAgIC8vIGEuIElmIGNvZGUgZG9lcyBu
b3QgbWF0Y2ggdGhlIFVuaWNvZGUgTG9jYWxlIElkZW50aWZpZXIgdHlwZSBub250ZXJtaW5hbCwg
dGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2Nh
bGVJZGVudGlmaWVyVHlwZShjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBjYWxlbmRhciBjb2RlIl9zKTsK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBsYW5ndWFn
ZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKLSAgICAg
ICAgLy8gRG8gbm90IHVzZSB1bGRuX2xhbmd1YWdlRGlzcGxheU5hbWUgc2luY2UgaXQgaXMgbm90
IGV4cGVjdGVkIG9uZSBmb3IgdGhpcyAibGFuZ3VhZ2UiIHR5cGUuIEl0IHJldHVybnMgImVuLVVT
IiBmb3IgImVuLVVTIiBjb2RlLCBpbnN0ZWFkIG9mICJBbWVyaWNhbiBFbmdsaXNoIi4KLSAgICAg
ICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fbG9jYWxlRGlzcGxh
eU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgpLCBsYW5ndWFnZS5kYXRhKCksIGJ1ZmZlcik7Cisg
ICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1f
dHlwZSwgV1RGTW92ZShjb2RlKSk7CisgICAgICAgIGNvbnN0IGNoYXIqIGljdUNvZGUgPSBjYW5v
bmljYWxDb2RlLmRhdGEoKTsKKyAgICAgICAgLy8gQ29udmVydCBjb2RlIHRvIGxlZ2FjeSBuYW1l
cyBzaW5jZSBJQ1UgcmVxdWlyZXMgbGVnYWN5IG5hbWVzLgorICAgICAgICBpZiAoY2Fub25pY2Fs
Q29kZSA9PSAiZ3JlZ29yeSIpCisgICAgICAgICAgICBpY3VDb2RlID0gImdyZWdvcmlhbiI7Cisg
ICAgICAgIGVsc2UgaWYgKGNhbm9uaWNhbENvZGUgPT0gImlzbGFtaWNjIikKKyAgICAgICAgICAg
IGljdUNvZGUgPSAiaXNsYW1pYy1jaXZpbCI7CisgICAgICAgIGVsc2UgaWYgKGNhbm9uaWNhbENv
ZGUgPT0gImV0aGlvYWEiKQorICAgICAgICAgICAgaWN1Q29kZSA9ICJldGhpb3BpYy1hbWV0ZS1h
bGVtIjsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5f
a2V5VmFsdWVEaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksICJjYWxlbmRhciIsIGlj
dUNvZGUsIGJ1ZmZlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFR5cGU6OlJl
Z2lvbjogewotICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVf
cmVnaW9uX3N1YnRhZyBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCi0g
ICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3VidGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJl
Z2lvbiBzdWJ0YWciX3MpOworICAgIGNhc2UgVHlwZTo6RGF0ZVRpbWVGaWVsZDogeworICAgICAg
ICAvLyBXZSBkbyBub3QgdXNlIHVsZG5fa2V5VmFsdWVEaXNwbGF5TmFtZSBzaW5jZSBpdCBjYW5u
b3QgaGFuZGxlIG5hcnJvdyBsZW5ndGguCisgICAgICAgIC8vIEluc3RlYWQsIHdlIHVzZSB1ZGF0
cGdfZ2V0RmllbGREaXNwbGF5TmFtZS4KKworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvaW50
bC1kaXNwbGF5bmFtZXMtdjIvI3NlYy1pc3ZhbGlkZGF0ZXRpbWVmaWVsZGNvZGUKKyAgICAgICAg
YXV0byBpc1ZhbGlkRGF0ZVRpbWVGaWVsZENvZGUgPSBbXShjb25zdCBTdHJpbmcmIGNvZGUpIC0+
IHN0ZDo6b3B0aW9uYWw8VURhdGVUaW1lUGF0dGVybkZpZWxkPiB7CisgICAgICAgICAgICBpZiAo
Y29kZSA9PSAiZXJhIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfRVJBX0ZJRUxE
OworICAgICAgICAgICAgaWYgKGNvZGUgPT0gInllYXIiX3MpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFVEQVRQR19ZRUFSX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gInF1YXJ0ZXIi
X3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19RVUFSVEVSX0ZJRUxEOworICAgICAg
ICAgICAgaWYgKGNvZGUgPT0gIm1vbnRoIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFU
UEdfTU9OVEhfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAid2Vla09mWWVhciJfcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX1dFRUtfT0ZfWUVBUl9GSUVMRDsKKyAgICAg
ICAgICAgIGlmIChjb2RlID09ICJ3ZWVrZGF5Il9zKQorICAgICAgICAgICAgICAgIHJldHVybiBV
REFUUEdfV0VFS0RBWV9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJkYXkiX3MpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19EQVlfRklFTEQ7CisgICAgICAgICAgICBpZiAo
Y29kZSA9PSAiZGF5UGVyaW9kIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfREFZ
UEVSSU9EX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gImhvdXIiX3MpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFVEQVRQR19IT1VSX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUg
PT0gIm1pbnV0ZSJfcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX01JTlVURV9GSUVM
RDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJzZWNvbmQiX3MpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFVEQVRQR19TRUNPTkRfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAidGlt
ZVpvbmVOYW1lIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfWk9ORV9GSUVMRDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH07CisKKyAgICAgICAg
YXV0byBmaWVsZCA9IGlzVmFsaWREYXRlVGltZUZpZWxkQ29kZShjb2RlKTsKKyAgICAgICAgaWYg
KCFmaWVsZCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJhcmd1bWVudCBpcyBub3QgYSBkYXRlVGltZUZpZWxkIGNvZGUiX3MpOwogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBhdXRvIHJlZ2lvbiA9IGNhbm9uaWNh
bGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKLSAgICAgICAgc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1fZGlz
cGxheU5hbWVzLmdldCgpLCByZWdpb24uZGF0YSgpLCBidWZmZXIpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBUeXBlOjpTY3JpcHQ6IHsKLSAgICAgICAgLy8gSWYgY29kZSBkb2Vz
IG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cg
YSBSYW5nZUVycm9yIGV4Y2VwdGlvbgotICAgICAgICBpZiAoIWlzVW5pY29kZVNjcmlwdFN1YnRh
Zyhjb2RlKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zKTsKLSAgICAgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICAgICAgVURhdGVUaW1lUEdEaXNwbGF5V2lkdGggc3R5bGUgPSBVREFU
UEdfV0lERTsKKyAgICAgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgICAgIGNhc2UgU3R5bGU6
Okxvbmc6CisgICAgICAgICAgICBzdHlsZSA9IFVEQVRQR19XSURFOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVREFU
UEdfQUJCUkVWSUFURUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6
TmFycm93OgorICAgICAgICAgICAgc3R5bGUgPSBVREFUUEdfTkFSUk9XOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBzY3JpcHQgPSBjYW5vbmljYWxpemVDb2Rl
Rm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7Ci0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1l
cy5nZXQoKSwgc2NyaXB0LmRhdGEoKSwgYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgYnVmZmVyID0gdm0uaW50bENhY2hlKCkuZ2V0RmllbGREaXNwbGF5TmFtZShtX2xvY2FsZUNT
dHJpbmcuZGF0YSgpLCBmaWVsZC52YWx1ZSgpLCBzdHlsZSwgc3RhdHVzKTsKKyAgICAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZh
bGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY29kZSk7CisgICAg
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogICAgIH0KLSAgICBjYXNl
IFR5cGU6OkN1cnJlbmN5OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICAvLyB1
bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9z
Y3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBk
aXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgogICAgICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVu
ZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVy
biBpbnB1dCB2YWx1ZS4KICAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRf
RVJST1IpCi0gICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUp
ID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxs
YmFjayA9PSBGYWxsYmFjazo6Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIFN0
cmluZyhjYW5vbmljYWxDb2RlLmRhdGEoKSwgY2Fub25pY2FsQ29kZS5sZW5ndGgoKSkpOwogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBxdWVyeSBhIGRpc3BsYXkgbmFtZS4iX3MpOwogICAgIH0KICAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyhidWZmZXIpKTsKQEAgLTI5OCw3ICszODMsOSBAQCBKU09iamVjdCogSW50bERp
c3BsYXlOYW1lczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJp
bmcobV9zdHlsZSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdHlwZVN0cmluZyhtX3R5cGUpKSk7Ci0g
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFs
bGJhY2siKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBmYWxsYmFja1N0cmluZyhtX2ZhbGxiYWNr
KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZmFsbGJh
Y2ssIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsK
KyAgICBpZiAobV90eXBlID09IFR5cGU6Okxhbmd1YWdlKQorICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlRGlzcGxheSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBsYW5ndWFnZURpc3BsYXlTdHJpbmcobV9sYW5ndWFnZURpc3BsYXkpKSk7CiAg
ICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTMyNyw2ICs0MTQsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4g
InNjcmlwdCJfczsKICAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1
cnJlbmN5Il9zOworICAgIGNhc2UgVHlwZTo6Q2FsZW5kYXI6CisgICAgICAgIHJldHVybiAiY2Fs
ZW5kYXIiX3M7CisgICAgY2FzZSBUeXBlOjpEYXRlVGltZUZpZWxkOgorICAgICAgICByZXR1cm4g
ImRhdGVUaW1lRmllbGQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKQEAgLTM0NCw0ICs0MzUsMTYgQEAgQVNDSUlM
aXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNr
KQogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIElu
dGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkgbGFu
Z3VhZ2VEaXNwbGF5KQoreworICAgIHN3aXRjaCAobGFuZ3VhZ2VEaXNwbGF5KSB7CisgICAgY2Fz
ZSBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3Q6CisgICAgICAgIHJldHVybiAiZGlhbGVjdCJfczsK
KyAgICBjYXNlIExhbmd1YWdlRGlzcGxheTo6U3RhbmRhcmQ6CisgICAgICAgIHJldHVybiAic3Rh
bmRhcmQiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBB
U0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKaW5kZXggODFhZmM5
MGViYzZjNGJhYzJjYzUyMTE1Y2UzYjNlYTVkMGZiOTc0Yi4uNGMzN2U4N2FmOGJlMjZjMmE1M2Nj
NDlmMjQyY2IxZTFlZGY5NGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXMuaApAQCAtNzIsMTIgKzcyLDE0IEBAIGNsYXNzIEludGxEaXNw
bGF5TmFtZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOwogCiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBOYXJy
b3csIFNob3J0LCBMb25nIH07Ci0gICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IExhbmd1
YWdlLCBSZWdpb24sIFNjcmlwdCwgQ3VycmVuY3kgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1
aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJyZW5jeSwgQ2FsZW5kYXIsIERh
dGVUaW1lRmllbGQgfTsKICAgICBlbnVtIGNsYXNzIEZhbGxiYWNrIDogdWludDhfdCB7IENvZGUs
IE5vbmUgfTsKKyAgICBlbnVtIGNsYXNzIExhbmd1YWdlRGlzcGxheSA6IHVpbnQ4X3QgeyBEaWFs
ZWN0LCBTdGFuZGFyZCB9OwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhT
dHlsZSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOwogICAgIHN0
YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2spOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgbGFuZ3VhZ2VEaXNwbGF5U3RyaW5nKExhbmd1YWdlRGlzcGxheSk7CiAKICAg
ICB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlciA9IElDVURlbGV0ZXI8dWxkbl9jbG9z
ZT47CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNw
bGF5TmFtZXNEZWxldGVyPiBtX2Rpc3BsYXlOYW1lczsKQEAgLTg4LDYgKzkwLDcgQEAgY2xhc3Mg
SW50bERpc3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBT
dHlsZSBtX3N0eWxlIHsgU3R5bGU6OkxvbmcgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Okxh
bmd1YWdlIH07CiAgICAgRmFsbGJhY2sgbV9mYWxsYmFjayB7IEZhbGxiYWNrOjpDb2RlIH07Cisg
ICAgTGFuZ3VhZ2VEaXNwbGF5IG1fbGFuZ3VhZ2VEaXNwbGF5IHsgTGFuZ3VhZ2VEaXNwbGF5OjpE
aWFsZWN0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggZTE0MDNjZjBkMTc3MjQwODA1MjgxZDY1
MmM4MjMwMmQxZWJkOTViZS4uYzg2ZDA1NGM4MDk4MzE5NmJjMjUwOTM3MmQ3NDdhMDAyODZmZGU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAg
LTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYw
OSwyNCArNjEwLDI5IEBAIHVuc2lnbmVkIGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFByCiAvLyBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL3JlcG9ydHMvdHIzNS8jVW5pY29kZV9sb2NhbGVfaWRlbnRpZmllcgogYm9vbCBp
c1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBB
U1NFUlQoIXN0cmluZy5pc051bGwoKSk7Ci0KLSAgICBmb3IgKGF1dG8gcGFydCA6IHN0cmluZy5z
cGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCctJykpIHsKLSAgICAgICAgYXV0byBsZW5ndGggPSBw
YXJ0Lmxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoIDwgMyB8fCBsZW5ndGggPiA4KQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBw
YXJ0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYW51bWVyaWMo
Y2hhcmFjdGVyKSkKKyAgICAvLyBNYXRjaGluZyB0aGUgVW5pY29kZSBMb2NhbGUgSWRlbnRpZmll
ciB0eXBlIG5vbnRlcm1pbmFsLgorICAgIC8vIEJlY2F1c2UgdGhlIHNwZWMgYWJzdHJhY3Qgb3Bl
cmF0aW9uIGlzIG5vdCBtZW50aW9uaW5nIHRvIEJDUC00NyBjb25mb3JtYW5jZSBmb3IgdGhpcyBt
YXRjaGluZywKKyAgICAvLyAnLScgYW5kICdfJyBzZXBhcmF0b3JzIGFyZSBhbGxvd2VkIHdoaWxl
IEJDUC00NyBvbmx5IGFjY2VwdHMgJy0nLgorICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBJc1N0
cnVjdHVyYWxseVZhbGlkTGFuZ3VhZ2VUYWcgZXhwbGljaXRseSBtZW50aW9ucyB0byBCQ1AtNDcu
CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVm
ZmVyKSAtPiBib29sIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGF1dG8g
YmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKKyAgICAgICAgICAgIHdoaWxlIChidWZmZXIuaGFz
Q2hhcmFjdGVyc1JlbWFpbmluZygpICYmIGlzQVNDSUlBbHBoYW51bWVyaWMoKmJ1ZmZlcikpCisg
ICAgICAgICAgICAgICAgKytidWZmZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBi
dWZmZXIucG9zaXRpb24oKSAtIGJlZ2luOworICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDMgfHwg
bGVuZ3RoID4gOCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBp
ZiAoIWJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnLScgJiYgKmJ1ZmZlciAhPSAn
XycpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgKytidWZmZXI7
CiAgICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jYW5vbmljYWxpemV1bmljb2RlbG9jYWxlaWQK
LXN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcoY29uc3QgQ1N0cmluZyYgdGFn
KQorU3RyaW5nIGNhbm9uaWNhbGl6ZVVuaWNvZGVMb2NhbGVJRChjb25zdCBDU3RyaW5nJiB0YWcp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBsb2NhbGVJREJ1ZmZlckZvckxhbmd1YWdlVGFnV2l0aE51
bGxUZXJtaW5hdG9yKHRhZyk7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCkBAIC03MDIsNyAr
NzA4LDcgQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgICAgICAgICAgaWYgKGlzU3Ry
dWN0dXJhbGx5VmFsaWRMYW5ndWFnZVRhZyh0YWcpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHRhZy5pc0FsbEFTQ0lJKCkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVk
VGFnID0gY2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcodGFnLmFzY2lpKCkpOworICAgICAgICAgICAg
ICAgIFN0cmluZyBjYW5vbmljYWxpemVkVGFnID0gY2Fub25pY2FsaXplVW5pY29kZUxvY2FsZUlE
KHRhZy5hc2NpaSgpKTsKICAgICAgICAgICAgICAgICBpZiAoIWNhbm9uaWNhbGl6ZWRUYWcuaXNO
dWxsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZW5TZXQuYWRkKGNhbm9uaWNhbGl6
ZWRUYWcpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuLmFwcGVuZChj
YW5vbmljYWxpemVkVGFnKTsKQEAgLTczOSwxNCArNzQ1LDE0IEBAIFN0cmluZyBkZWZhdWx0TG9j
YWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gYmUgZGV0ZXJtaW5lZCBi
eSBXZWJDb3JlLXNwZWNpZmljIGxvZ2ljIGxpa2Ugc29tZSBXSyBzZXR0aW5ncy4gVXN1YWxseSB0
aGlzIHdpbGwgcmV0dXJuIHRoZQogICAgIC8vIHNhbWUgdGhpbmcgYXMgdXNlclByZWZlcnJlZExh
bmd1YWdlcygpWzBdLgogICAgIGlmIChhdXRvIGRlZmF1bHRMYW5ndWFnZSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+ZGVmYXVsdExhbmd1YWdlKSB7Ci0gICAgICAg
IFN0cmluZyBsb2NhbGUgPSBjYW5vbmljYWxpemVMYW5ndWFnZVRhZyhkZWZhdWx0TGFuZ3VhZ2Uo
KS51dGY4KCkpOworICAgICAgICBTdHJpbmcgbG9jYWxlID0gY2Fub25pY2FsaXplVW5pY29kZUxv
Y2FsZUlEKGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKSk7CiAgICAgICAgIGlmICghbG9jYWxlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCiAgICAgVmVjdG9y
PFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgbGFuZ3VhZ2UgOiBsYW5ndWFnZXMpIHsKLSAgICAgICAgU3RyaW5nIGxvY2Fs
ZSA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKGxhbmd1YWdlLnV0ZjgoKSk7CisgICAgICAgIFN0
cmluZyBsb2NhbGUgPSBjYW5vbmljYWxpemVVbmljb2RlTG9jYWxlSUQobGFuZ3VhZ2UudXRmOCgp
KTsKICAgICAgICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGxv
Y2FsZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgK
aW5kZXggZWU2Yzk2YWUwMTE3NTI3M2EzZDk1Mjk4NmRmZTg1Nzg0MzIzOWVlMS4uMDcyZTJlODUz
YzMxYTdmZmE1ZDI1NmQyY2Y0ODMzMTliYWUwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtMTI3LDYgKzEyNyw3IEBAIGJvb2wgaXNVbmljb2Rl
UmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcpOwogYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0
cmluZ1ZpZXcpOwogYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOwogYm9vbCBp
c1N0cnVjdHVyYWxseVZhbGlkTGFuZ3VhZ2VUYWcoU3RyaW5nVmlldyk7CitTdHJpbmcgY2Fub25p
Y2FsaXplVW5pY29kZUxvY2FsZUlEKGNvbnN0IENTdHJpbmcmIGxhbmd1YWdlVGFnKTsKIAogYm9v
bCBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoU3RyaW5nVmlldyk7CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGIxYTVhOWRlMjM3NmU3
NTcyMDY4YTE3YzgwN2MyY2Y5NzhkYTFlMC4uZDM4ZjhiMWM3YzRhOWYxMzMwMGNmYjAwNDRhZmJm
Y2UxNjM2MGUyNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wOC0yMCAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9p
bnRsLWRpc3BsYXluYW1lcy12Mi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2bS5pY3VWZXJzaW9uKToKKyAgICAgICAgKiBz
dHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanM6CisgICAgICAgICh2bS5pY3VWZXJzaW9uKToKKyAg
ICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTA4LTE3ICBNaWtoYWlsIFIuIEdh
ZGVsaGEgIDxtaWtoYWlsQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU2tpcCBm
YWlsaW5nIE1JUFMgdGVzdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxh
eW5hbWVzLXYyLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMtdjIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGIxYWYwZDljMzg3MDUwOTE1NTRhODY2YmQ2NzM5MDgxM2UxMWRmOAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLXYyLmpzCkBAIC0w
LDAgKzEsMTIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworaWYgKCR2bS5p
Y3VWZXJzaW9uKCkgPj0gNjEpIHsKKyAgICB7CisgICAgICAgIGxldCBkaXNwbGF5TmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXModW5kZWZpbmVkLCB7dHlwZTogJ2NhbGVuZGFyJ30pOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBkaXNwbGF5TmFtZXMub2YoJycp
OworICAgICAgICB9LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29k
ZWApOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBkaXNwbGF5TmFt
ZXMub2YoJy0nKTsKKyAgICAgICAgfSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGNh
bGVuZGFyIGNvZGVgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAg
ZGlzcGxheU5hbWVzLm9mKCdhYWFhYS0nKTsKKyAgICAgICAgfSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIGNhbGVuZGFyIGNvZGVgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgICAgICAgICAgZGlzcGxheU5hbWVzLm9mKCdfJyk7CisgICAgICAgIH0sIGBSYW5nZUVy
cm9yOiBhcmd1bWVudCBpcyBub3QgYSBjYWxlbmRhciBjb2RlYCk7CisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IHsKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lcy5vZignYWFhYWFfJyk7CisgICAg
ICAgIH0sIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBjYWxlbmRhciBjb2RlYCk7IH0K
KyAgICB7CisgICAgICAgIGxldCBkbiA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcygiZW4iLCB7dHlw
ZTogImNhbGVuZGFyIn0pCisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJyb2MiKSwgIk1pbmd1byBD
YWxlbmRhciIpOworICAgICAgICBzaG91bGRCZShkbi5vZigicGVyc2lhbiIpLCAiUGVyc2lhbiBD
YWxlbmRhciIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiZ3JlZ29yeSIpLCAiR3JlZ29yaWFu
IENhbGVuZGFyIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJldGhpb2FhIiksICJFdGhpb3Bp
YyBBbWV0ZSBBbGVtIENhbGVuZGFyIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJqYXBhbmVz
ZSIpLCAiSmFwYW5lc2UgQ2FsZW5kYXIiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2YoImRhbmdp
IiksICJEYW5naSBDYWxlbmRhciIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiY2hpbmVzZSIp
LCAiQ2hpbmVzZSBDYWxlbmRhciIpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBkbiA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcygiemgiLCB7dHlwZTogImNhbGVuZGFyIn0pCisgICAgICAgIHNo
b3VsZEJlKGRuLm9mKCJyb2MiKSwgIuawkeWbvee6quW5tCIpOworICAgICAgICBzaG91bGRCZShk
bi5vZigicGVyc2lhbiIpLCAi5rOi5pav5Y6GIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJn
cmVnb3J5IiksICLlhazljoYiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2YoImV0aGlvYWEiKSwg
IuWfg+WhnuS/hOavlOS6mumYv+exs+eJuemYv+iOseWnhuaXpeWOhiIpOworICAgICAgICBzaG91
bGRCZShkbi5vZigiamFwYW5lc2UiKSwgIuWSjOWOhiIpOworICAgICAgICBzaG91bGRCZShkbi5v
ZigiZGFuZ2kiKSwgIuaqgOe6quWOhiIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiY2hpbmVz
ZSIpLCAi5Yac5Y6GIik7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGRuID0gbmV3IEludGwu
RGlzcGxheU5hbWVzKCJ6aCIsIHt0eXBlOiAiZGF0ZVRpbWVGaWVsZCJ9KQorICAgICAgICBzaG91
bGRCZShkbi5vZigiZXJhIiksICLnuqrlhYMiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2YoInll
YXIiKSwgIuW5tCIpOworICAgICAgICBzaG91bGRCZShkbi5vZigibW9udGgiKSwgIuaciCIpOwor
ICAgICAgICBzaG91bGRCZShkbi5vZigicXVhcnRlciIpLCAi5a2j5bqmIik7CisgICAgICAgIHNo
b3VsZEJlKGRuLm9mKCJ3ZWVrT2ZZZWFyIiksICLlkagiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4u
b2YoIndlZWtkYXkiKSwgIuW3peS9nOaXpSIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiZGF5
UGVyaW9kIiksICLkuIrljYgv5LiL5Y2IIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJkYXki
KSwgIuaXpSIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiaG91ciIpLCAi5bCP5pe2Iik7Cisg
ICAgICAgIHNob3VsZEJlKGRuLm9mKCJtaW51dGUiKSwgIuWIhumSnyIpOworICAgICAgICBzaG91
bGRCZShkbi5vZigic2Vjb25kIiksICLnp5IiKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQg
ZG4gPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoImVzIiwge3R5cGU6ICJkYXRlVGltZUZpZWxkIn0p
CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJlcmEiKSwgImVyYSIpOworICAgICAgICBzaG91bGRC
ZShkbi5vZigieWVhciIpLCAiYcOxbyIpOworICAgICAgICBzaG91bGRCZShkbi5vZigibW9udGgi
KSwgIm1lcyIpOworICAgICAgICBzaG91bGRCZShkbi5vZigicXVhcnRlciIpLCAidHJpbWVzdHJl
Iik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJ3ZWVrT2ZZZWFyIiksICJzZW1hbmEiKTsKKyAg
ICAgICAgc2hvdWxkQmUoZG4ub2YoIndlZWtkYXkiKSwgImTDrWEgZGUgbGEgc2VtYW5hIik7Cisg
ICAgICAgIGxldCBkYXlQZXJpb2QgPSBkbi5vZigiZGF5UGVyaW9kIik7CisgICAgICAgIHNob3Vs
ZEJlKGRheVBlcmlvZCA9PT0gImEuIG0uL3AuIG0uIiB8fCBkYXlQZXJpb2QgPT09ICJhLsKgbS4v
cC7CoG0uIiwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJkYXkiKSwgImTDrWEiKTsK
KyAgICAgICAgc2hvdWxkQmUoZG4ub2YoImhvdXIiKSwgImhvcmEiKTsKKyAgICAgICAgc2hvdWxk
QmUoZG4ub2YoIm1pbnV0ZSIpLCAibWludXRvIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJz
ZWNvbmQiKSwgInNlZ3VuZG8iKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZG4xID0gbmV3
IEludGwuRGlzcGxheU5hbWVzKCJlbiIsIHt0eXBlOiAibGFuZ3VhZ2UifSkKKyAgICAgICAgc2hv
dWxkQmUoZG4xLm9mKCJlbiIpLCAiRW5nbGlzaCIpOworICAgICAgICBzaG91bGRCZShkbjEub2Yo
ImVuLUdCIiksICJCcml0aXNoIEVuZ2xpc2giKTsKKyAgICAgICAgc2hvdWxkQmUoZG4xLm9mKCJl
bi1VUyIpLCAiQW1lcmljYW4gRW5nbGlzaCIpOworICAgICAgICBzaG91bGRCZShkbjEub2YoImVu
LUFVIiksICJBdXN0cmFsaWFuIEVuZ2xpc2giKTsKKyAgICAgICAgc2hvdWxkQmUoZG4xLm9mKCJl
bi1DQSIpLCAiQ2FuYWRpYW4gRW5nbGlzaCIpOworICAgICAgICBzaG91bGRCZShkbjEub2YoInpo
IiksICJDaGluZXNlIik7CisgICAgICAgIHNob3VsZEJlKGRuMS5vZigiemgtSGFudCIpID09PSAi
VHJhZGl0aW9uYWwgQ2hpbmVzZSIgfHwgZG4xLm9mKCJ6aC1IYW50IikgPT09ICJDaGluZXNlLCBU
cmFkaXRpb25hbCIsIHRydWUpOworICAgICAgICBzaG91bGRCZShkbjEub2YoInpoLUhhbnMiKSA9
PT0gIlNpbXBsaWZpZWQgQ2hpbmVzZSIgfHwgZG4xLm9mKCJ6aC1IYW5zIikgPT09ICJDaGluZXNl
LCBTaW1wbGlmaWVkIiwgdHJ1ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGRuMiA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcygiZW4iLCB7dHlwZTogImxhbmd1YWdlIiwgbGFuZ3VhZ2VEaXNw
bGF5OiAiZGlhbGVjdCJ9KQorICAgICAgICBzaG91bGRCZShkbjIub2YoImVuIiksICJFbmdsaXNo
Iik7CisgICAgICAgIHNob3VsZEJlKGRuMi5vZigiZW4tR0IiKSwgIkJyaXRpc2ggRW5nbGlzaCIp
OworICAgICAgICBzaG91bGRCZShkbjIub2YoImVuLVVTIiksICJBbWVyaWNhbiBFbmdsaXNoIik7
CisgICAgICAgIHNob3VsZEJlKGRuMi5vZigiZW4tQVUiKSwgIkF1c3RyYWxpYW4gRW5nbGlzaCIp
OworICAgICAgICBzaG91bGRCZShkbjIub2YoImVuLUNBIiksICJDYW5hZGlhbiBFbmdsaXNoIik7
CisgICAgICAgIHNob3VsZEJlKGRuMi5vZigiemgiKSwgIkNoaW5lc2UiKTsKKyAgICAgICAgc2hv
dWxkQmUoZG4yLm9mKCJ6aC1IYW50IikgPT09ICJUcmFkaXRpb25hbCBDaGluZXNlIiB8fCBkbjIu
b2YoInpoLUhhbnQiKSA9PT0gIkNoaW5lc2UsIFRyYWRpdGlvbmFsIiwgdHJ1ZSk7CisgICAgICAg
IHNob3VsZEJlKGRuMi5vZigiemgtSGFucyIpID09PSAiU2ltcGxpZmllZCBDaGluZXNlIiB8fCBk
bjIub2YoInpoLUhhbnMiKSA9PT0gIkNoaW5lc2UsIFNpbXBsaWZpZWQiLCB0cnVlKTsKKyAgICB9
CisgICAgeworICAgICAgICBsZXQgZG4zID0gbmV3IEludGwuRGlzcGxheU5hbWVzKCJlbiIsIHt0
eXBlOiAibGFuZ3VhZ2UiLCBsYW5ndWFnZURpc3BsYXk6ICJzdGFuZGFyZCJ9KQorICAgICAgICBz
aG91bGRCZShkbjMub2YoImVuIiksICJFbmdsaXNoIik7CisgICAgICAgIHNob3VsZEJlKGRuMy5v
ZigiZW4tR0IiKSA9PT0gIkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKSIgfHwgZG4zLm9mKCJlbi1H
QiIpID09PSAiRW5nbGlzaCAoVUspIiwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKGRuMy5vZigi
ZW4tQVUiKSwgIkVuZ2xpc2ggKEF1c3RyYWxpYSkiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4zLm9m
KCJlbi1DQSIpLCAiRW5nbGlzaCAoQ2FuYWRhKSIpOworICAgICAgICBzaG91bGRCZShkbjMub2Yo
ImVuLVVTIikgPT09ICJFbmdsaXNoIChVbml0ZWQgU3RhdGVzKSIgfHwgZG4zLm9mKCJlbi1VUyIp
ID09PSAiRW5nbGlzaCAoVVMpIiwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKGRuMy5vZigiemgi
KSwgIkNoaW5lc2UiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4zLm9mKCJ6aC1IYW50IikgPT09ICJD
aGluZXNlIChUcmFkaXRpb25hbCkiIHx8IGRuMy5vZigiemgtSGFudCIpID09PSAiQ2hpbmVzZSwg
VHJhZGl0aW9uYWwiLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoZG4zLm9mKCJ6aC1IYW5zIikg
PT09ICJDaGluZXNlIChTaW1wbGlmaWVkKSIgfHwgZG4zLm9mKCJ6aC1IYW5zIikgPT09ICJDaGlu
ZXNlLCBTaW1wbGlmaWVkIiwgdHJ1ZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXlu
YW1lcy5qcwppbmRleCAzNDA5OTdiYWE3NjQ5NGZkOTViMTUzNGU0OGZiY2E2NzQyYjRiZWYwLi5h
NTUxYzYzOTM0N2Y1ZTEzMDZkNzY2OTNlMGI0OTgxZmRmZDE3YTQ4IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRs
LWRpc3BsYXluYW1lcy5qcwpAQCAtMTc4LDcgKzE3OCw3IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgICAgIHJldHVybiAnZW4tQUEnOwog
ICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVz
Lm9mKG9iamVjdCksIG9iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
b2JqZWN0KSwgJ2VuLUFBJyk7CiAgICAgfQogCiAgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBmYWxsYmFjazogJ25vbmUn
fSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMzMyY2QwMmE3ZGFmYjYxMzkxZTZhMTdmMjIyMzZiMTIw
ZTdlODNmNS4uZjdjZGM0YmYzMTM3ODk2NTgwMWQzOTAyNDEyOGEwZjY1ZjUyNzRjZCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbApAQCAtMzEsNyArMzEsNiBAQCBza2lwOgogICAgIC0gaW1wb3J0LWFzc2VydGlv
bnMKICAgICAtIGpzb24tbW9kdWxlcwogICAgIC0gY2xhc3Mtc3RhdGljLWJsb2NrCi0gICAgLSBJ
bnRsLkRpc3BsYXlOYW1lcy12MgogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1leHRlbmQtdGlt
ZXpvbmVuYW1lCiAgICAgLSBjYWxsYWJsZS1ib3VuZGFyeS1yZWFsbXMKICAgcGF0aHM6Cg==
</data>
<flag name="review"
          id="458891"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436073</attachid>
            <date>2021-08-21 08:21:21 -0700</date>
            <delta_ts>2021-08-21 09:17:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227832-20210821082121.patch</filename>
            <type>text/plain</type>
            <size>36304</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODk2ZTBkNzFhNTVmMDE2MTk4NGYxMWVkNDFlOWM0NDQ3YjA3N2Q4Li42YzMwZTk5MDE0MGU0NjI4
ZTY5ZTI2MmFjZjBlMmY1NGRiODgxNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wOC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRs
LkRpc3BsYXlOYW1lcyB2MlsxXS4KKyAgICAgICAgTmV3bHkgYWRkZWQgbmFtZXMgYXJlIGNhbGVu
ZGFyIG5hbWVzIGFuZCBkYXRlIHRpbWUgZmllbGQgbmFtZXMuCisgICAgICAgIEZvciB0aGUgbGFu
Z3VhZ2UgbmFtZSwgbGFuZ3VhZ2UgZGlzcGxheSBvcHRpb24gaXMgYWRkZWQuCisKKyAgICAgICAg
WzFdOiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9pbnRsLWRpc3BsYXluYW1lcy12MgorCisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bENhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENhY2hlOjpnZXRGaWVsZERpc3BsYXlOYW1l
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDYWNoZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERpc3BsYXlOYW1lcy5jcHA6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmluaXRp
YWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjpvZiBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBl
KToKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplVW5pY29kZUxvY2FsZUlEKToKKyAgICAgICAg
KEpTQzo6Y2Fub25pY2FsaXplTG9jYWxlTGlzdCk6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2Nh
bGUpOgorICAgICAgICAoSlNDOjptYXBCQ1A0N1RvSUNVQ2FsZW5kYXJLZXl3b3JkKToKKyAgICAg
ICAgKEpTQzo6bWFwSUNVQ29sbGF0aW9uS2V5d29yZFRvQkNQNDcpOgorICAgICAgICAoSlNDOjpj
YW5vbmljYWxpemVMYW5ndWFnZVRhZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
T2JqZWN0Lmg6CisKIDIwMjEtMDgtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBJbnRsIExvY2FsZSBJbmZvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkYzYwMTlmNDVmZDk4
YjQzN2E1YmY2ZTI2NTg0YTBhMzQ2MzJmYWRjLi4zM2UyYzdlMTJiYzNkODdiM2I1OGY4YWVlOTI1
Mjc2OWY4YjY5NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgIG1hY3JvKGV4ZWMpIFwK
ICAgICBtYWNybyhleGVjdXRpb25Db3VudCkgXAogICAgIG1hY3JvKGV4aXRLaW5kKSBcCisgICAg
bWFjcm8oZmFsbGJhY2spIFwKICAgICBtYWNybyhmbGFncykgXAogICAgIG1hY3JvKGZvckVhY2gp
IFwKICAgICBtYWNybyhmb3JtYXRNYXRjaGVyKSBcCkBAIC0xNTQsNiArMTU1LDcgQEAKICAgICBt
YWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKICAgICBtYWNybyhsYW5n
dWFnZSkgXAorICAgIG1hY3JvKGxhbmd1YWdlRGlzcGxheSkgXAogICAgIG1hY3JvKGxhc3RJbmRl
eCkgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1hY3JvKGxpbmUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ2FjaGUuY3BwCmluZGV4IDQ0OTM5YTQzODJjZjE1YmNk
MDc2ZGFmZGVlODU4MzNmMzAyNzIxMzkuLmIxN2Q3MzQwZGY1NjVhNDQwODE1MDA3NDk1MDU2Nzcy
MWFjYTFiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
YWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmNw
cApAQCAtNTMsNCArNTMsMTYgQEAgVmVjdG9yPFVDaGFyLCAzMj4gSW50bENhY2hlOjpnZXRCZXN0
RGF0ZVRpbWVQYXR0ZXJuKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgY29uc3QKICAgICByZXR1cm4g
cGF0dGVybkJ1ZmZlcjsKIH0KIAorVmVjdG9yPFVDaGFyLCAzMj4gSW50bENhY2hlOjpnZXRGaWVs
ZERpc3BsYXlOYW1lKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgVURhdGVUaW1lUGF0dGVybkZpZWxk
IGZpZWxkLCBVRGF0ZVRpbWVQR0Rpc3BsYXlXaWR0aCB3aWR0aCwgVUVycm9yQ29kZSYgc3RhdHVz
KQoreworICAgIGF1dG8gc2hhcmVkR2VuZXJhdG9yID0gZ2V0U2hhcmVkUGF0dGVybkdlbmVyYXRv
cihsb2NhbGUsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdHBnX2dldEZpZWxkRGlzcGxheU5hbWUsIHNo
YXJlZEdlbmVyYXRvciwgZmllbGQsIHdpZHRoLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hl
LmgKaW5kZXggNDJkNWUxMTRiNDQ1NmM5NjQ3ZmRjZWE1NzY4ZmU5ZTM0NjUxOTExYi4uMDU4YjI0
MjM3ODZkMzMwNjFmMzE2MzgyOWJkNDNkMzkxNjdmZjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENhY2hlLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgSW50bENhY2hl
IHsKICAgICBJbnRsQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBn
ZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIq
IHNrZWxldG9uLCB1bnNpZ25lZCBza2VsZXRvblNpemUsIFVFcnJvckNvZGUmKTsKKyAgICBWZWN0
b3I8VUNoYXIsIDMyPiBnZXRGaWVsZERpc3BsYXlOYW1lKGNvbnN0IENTdHJpbmcmIGxvY2FsZSwg
VURhdGVUaW1lUGF0dGVybkZpZWxkLCBVRGF0ZVRpbWVQR0Rpc3BsYXlXaWR0aCwgVUVycm9yQ29k
ZSYpOwogCiBwcml2YXRlOgogICAgIFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdldFNoYXJl
ZFBhdHRlcm5HZW5lcmF0b3IoY29uc3QgQ1N0cmluZyYgbG9jYWxlLCBVRXJyb3JDb2RlJiBzdGF0
dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuY3BwCmluZGV4IDQyYjdiMGMwMWJhYTg3MDM0ZWFhMTQ2MGY3MTRhZjM2N2JjYjA1MTYuLjA5
NTE4ZDQyMWIzMDRkNmQ0MzhhMjVmOGY3OWY2ZTY4ZjQ3NmJkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5o
IgogCisjaW5jbHVkZSAiSW50bENhY2hlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlz
cGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBtX3N0eWxl
ID0gaW50bE9wdGlvbjxTdHlsZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zdHlsZSwgeyB7ICJuYXJyb3ciX3MsIFN0eWxlOjpOYXJyb3cgfSwgeyAic2hvcnQiX3Ms
IFN0eWxlOjpTaG9ydCB9LCB7ICJsb25nIl9zLCBTdHlsZTo6TG9uZyB9IH0sICJzdHlsZSBtdXN0
IGJlIGVpdGhlciBcIm5hcnJvd1wiLCBcInNob3J0XCIsIG9yIFwibG9uZ1wiIl9zLCBTdHlsZTo6
TG9uZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGF1
dG8gdHlwZSA9IGludGxPcHRpb248c3RkOjpvcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBUeXBlOjpM
YW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQiX3MsIFR5
cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAidHlwZSBt
dXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwi
Y3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIHR5cGUgPSBpbnRsT3B0aW9u
PHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAicmVnaW9u
Il9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwgeyAiY3Vy
cmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0sIHsgImNhbGVuZGFyIl9zLCBUeXBlOjpDYWxlbmRh
ciB9LCB7ICJkYXRlVGltZUZpZWxkIl9zLCBUeXBlOjpEYXRlVGltZUZpZWxkIH0gfSwgInR5cGUg
bXVzdCBiZSBlaXRoZXIgXCJsYW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlwdFwiLCBcImN1
cnJlbmN5XCIsIFwiY2FsZW5kYXJcIiwgb3IgXCJkYXRlVGltZUZpZWxkXCIiX3MsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAo
IXR5cGUpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5
cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKQEAgLTEwMyw3ICsxMDQsMTAgQEAgdm9pZCBJ
bnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmEKICAgICB9CiAgICAgbV90eXBlID0gdHlwZS52YWx1ZSgpOwogCi0g
ICAgbV9mYWxsYmFjayA9IGludGxPcHRpb248RmFsbGJhY2s+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNrIiksIHsgeyAiY29kZSJfcywg
RmFsbGJhY2s6OkNvZGUgfSwgeyAibm9uZSJfcywgRmFsbGJhY2s6Ok5vbmUgfSB9LCAiZmFsbGJh
Y2sgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIgb3IgXCJub25lXCIiX3MsIEZhbGxiYWNrOjpDb2Rl
KTsKKyAgICBtX2ZhbGxiYWNrID0gaW50bE9wdGlvbjxGYWxsYmFjaz4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxsYmFjaywgeyB7ICJjb2RlIl9zLCBGYWxsYmFj
azo6Q29kZSB9LCB7ICJub25lIl9zLCBGYWxsYmFjazo6Tm9uZSB9IH0sICJmYWxsYmFjayBtdXN0
IGJlIGVpdGhlciBcImNvZGVcIiBvciBcIm5vbmVcIiJfcywgRmFsbGJhY2s6OkNvZGUpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBtX2xhbmd1YWdlRGlz
cGxheSA9IGludGxPcHRpb248TGFuZ3VhZ2VEaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlRGlzcGxheSwgeyB7ICJkaWFsZWN0Il9zLCBMYW5n
dWFnZURpc3BsYXk6OkRpYWxlY3QgfSwgeyAic3RhbmRhcmQiX3MsIExhbmd1YWdlRGlzcGxheTo6
U3RhbmRhcmQgfSB9LCAibGFuZ3VhZ2VEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiZGlhbGVjdFwi
IG9yIFwic3RhbmRhcmRcIiJfcywgTGFuZ3VhZ2VEaXNwbGF5OjpEaWFsZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAjaWYgSEFWRShJQ1VfVV9MT0NBTEVf
RElTUExBWV9OQU1FUykKQEAgLTExMSw5ICsxMTUsOCBAQCB2b2lkIEludGxEaXNwbGF5TmFtZXM6
OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YQogCiAgICAgVURpc3BsYXlDb250ZXh0IGNvbnRleHRzW10gPSB7CiAgICAgICAgIC8vIGVuX0dC
IGRpc3BsYXlzIGFzICdFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSknIChTdGFuZGFyZCBOYW1lcykg
b3IgJ0JyaXRpc2ggRW5nbGlzaCcgKERpYWxlY3QgTmFtZXMpLgotICAgICAgICAvLyBXZSB1c2Ug
RGlhbGVjdCBOYW1lcyBoZXJlLCBhbGlnbmVkIHRvIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYyBk
cmFmdCBhbmQgVjgncyBiZWhhdmlvci4KICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMjbGFuZ3VhZ2UtZGlzcGxheS1uYW1lcwotICAg
ICAgICBVRElTUENUWF9ESUFMRUNUX05BTUVTLAorICAgICAgICAobV90eXBlID09IFR5cGU6Okxh
bmd1YWdlICYmIG1fbGFuZ3VhZ2VEaXNwbGF5ID09IExhbmd1YWdlRGlzcGxheTo6U3RhbmRhcmQp
ID8gVURJU1BDVFhfU1RBTkRBUkRfTkFNRVMgOiBVRElTUENUWF9ESUFMRUNUX05BTUVTLAogCiAg
ICAgICAgIC8vIENhcGl0YWlsaXphdGlvbiBtb2RlIGNhbiBiZSBwaWNrZWQgZnJvbSBzZXZlcmFs
IG9wdGlvbnMuIFBvc3NpYmx5IGVpdGhlciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9OT05FIG9y
IFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FIGlzCiAgICAgICAgIC8vIHBy
ZWZlcmFibGUgaW4gSW50bC5EaXNwbGF5TmFtZXMuIFdlIHVzZSBVRElTUENUWF9DQVBJVEFMSVpB
VElPTl9GT1JfU1RBTkRBTE9ORSBiZWNhdXNlIGl0IG1ha2VzIHN0YW5kYWxvbmUgZGF0ZSBmb3Jt
YXQgYmV0dGVyIChmciAiSnVpbGxldCAyMDA4IiBpbiBJQ1UgdGVzdCBzdWl0ZXMpLApAQCAtMTUz
LDEwICsxNTYsODIgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICBhdXRvIGNvZGUgPSBj
b2RlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
ZGlzcGxheW5hbWVzLyNzZWMtY2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgIGF1dG8g
Y2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyA9IFtdKFR5cGUgdHlwZSwgU3RyaW5nJiYg
Y29kZSkgLT4gQ1N0cmluZyB7CisgICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7Cisg
ICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7Cisg
ICAgICAgICAgICByZXR1cm4gY2Fub25pY2FsaXplVW5pY29kZUxvY2FsZUlEKGNvZGUuYXNjaWko
KSkuYXNjaWkoKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlJlZ2lvbjogeworICAg
ICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBw
ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgYXV0byByZXN1bHQgPSBj
b2RlLmFzY2lpKCk7CisgICAgICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3VsdC5tdXRh
YmxlRGF0YSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
cmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2lu
ZGV4XSA9IHRvQVNDSUlVcHBlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAg
ICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBj
aGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0
aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2Ny
aWJlZCBpbiA2LjEuCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAg
ICAgICAgICAgIGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7CisgICAg
ICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAgICAgICAgbXV0YWJs
ZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQor
ICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxl
RGF0YVtpbmRleF0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlOjpDYWxlbmRhcjogewor
ICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8g
bG93ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgU3RyaW5nIGxvd2Vy
ZWQgPSBjb2RlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgICAgICAgICBpZiAoYXV0
byBtYXBwZWQgPSBtYXBCQ1A0N1RvSUNVQ2FsZW5kYXJLZXl3b3JkKGxvd2VyZWQpKQorICAgICAg
ICAgICAgICAgIGxvd2VyZWQgPSBXVEZNb3ZlKG1hcHBlZC52YWx1ZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBsb3dlcmVkLmFzY2lpKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlOjpE
YXRlVGltZUZpZWxkOiB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9OworCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOwogICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCi0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpDdXJyZW5j
eSkgeworICAgIENTdHJpbmcgY2Fub25pY2FsQ29kZTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgewor
ICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgaWYgKCFpc1VuaWNvZGVMYW5ndWFn
ZUlkKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zKTsKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNhbm9uaWNhbGl6
ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKKyAgICAgICAgLy8g
RG8gbm90IHVzZSB1bGRuX2xhbmd1YWdlRGlzcGxheU5hbWUgc2luY2UgaXQgaXMgbm90IGV4cGVj
dGVkIG9uZSBmb3IgdGhpcyAibGFuZ3VhZ2UiIHR5cGUuIEl0IHJldHVybnMgImVuLVVTIiBmb3Ig
ImVuLVVTIiBjb2RlLCBpbnN0ZWFkIG9mICJBbWVyaWNhbiBFbmdsaXNoIi4KKyAgICAgICAgc3Rh
dHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fbG9jYWxlRGlzcGxheU5hbWUs
IG1fZGlzcGxheU5hbWVzLmdldCgpLCBjYW5vbmljYWxDb2RlLmRhdGEoKSwgYnVmZmVyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgIGlm
ICghaXNVbmljb2RlUmVnaW9uU3VidGFnKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0
YWciX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBjYW5v
bmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1v
dmUoY29kZSkpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24o
dWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIGNhbm9uaWNhbENv
ZGUuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBl
OjpTY3JpcHQ6IHsKKyAgICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsK
KyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1l
bnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICB9CisgICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlz
cGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7CisgICAgICAgIHN0YXR1cyA9IGNhbGxC
dWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERpc3BsYXlOYW1lLCBtX2Rpc3BsYXlO
YW1lcy5nZXQoKSwgY2Fub25pY2FsQ29kZS5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OiB7CiAgICAgICAgIC8vIFdlIGRvIG5v
dCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1cnJlbmN5Ii4gVGhpcyBpcyBiZWNh
dXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KICAgICAgICAgLy8gICAgIDEuIElDVSBkb2Vz
IG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8gVURJU1BDVFhfTEVOR1RIX1NIT1JU
IGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgLy8gICAgIDIuIFRoZXJlIGlzIG5vIHdh
eSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURpc3BsYXlOYW1lcyB3aGlsZSBjdXJy
ZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KQEAgLTIwMiw4NCArMjc3LDgyIEBAIEpT
VmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgICAgIC8vIElDVSBBUEkgZG9jdW1lbnQuCiAgICAg
ICAgIC8vID4gUmV0dXJucyBwb2ludGVyIHRvIGRpc3BsYXkgc3RyaW5nIG9mICdsZW4nIFVDaGFy
cy4gSWYgdGhlIHJlc291cmNlIGRhdGEgY29udGFpbnMgbm8gZW50cnkgZm9yICdjdXJyZW5jeScs
IHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMgcmV0dXJuZWQuCiAgICAgICAgIGlmIChzdGF0dXMg
PT0gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgJiYgcmVzdWx0ID09IGN1cnJlbmN5KQotICAgICAg
ICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVk
KCkgOiBjb2RlVmFsdWU7CisgICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJh
Y2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBTdHJpbmcoY3VycmVuY3ks
IDMpKTsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LCBsZW5ndGgp
KTsKICAgICB9Ci0KLSAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCi0gICAgYXV0byBjYW5vbmlj
YWxpemVDb2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGUpIC0+IENTdHJpbmcgewotICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOwotICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKLSAgICAgICAgY2hhciogbXV0YWJsZURh
dGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKLSAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRo
ZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYu
MS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5s
ZW5ndGgoKTsgKytpbmRleCkKLSAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0
b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7Ci0gICAgICAgICAgICAvLyBMZXQg
Y29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2Ny
aWJlZCBpbiA2LjEuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCi0gICAgICAgICAgICAgICAgbXV0YWJsZURhdGFb
aW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogewotICAgICAgICAg
ICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBjaGFyYWN0
ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0aGlyZCBh
bmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2NyaWJlZCBp
biA2LjEuCi0gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCi0gICAgICAgICAg
ICAgICAgbXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgp
OyArK2luZGV4KQotICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlM
b3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9OwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFR5cGU6Okxh
bmd1YWdlOiB7Ci0gICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29k
ZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCi0g
ICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgewotICAgICAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5n
dWFnZSBpZCJfcyk7CisgICAgY2FzZSBUeXBlOjpDYWxlbmRhcjogeworICAgICAgICAvLyBhLiBJ
ZiBjb2RlIGRvZXMgbm90IG1hdGNoIHRoZSBVbmljb2RlIExvY2FsZSBJZGVudGlmaWVyIHR5cGUg
bm9udGVybWluYWwsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmICgh
aXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgY2FsZW5k
YXIgY29kZSJfcyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAg
IGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwg
Y29kZSk7Ci0gICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNp
bmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCBy
ZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5n
bGlzaCIuCi0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRu
X2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3VhZ2UuZGF0YSgp
LCBidWZmZXIpOworICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRp
c3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29kZSkpOworICAgICAgICBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lLCBtX2Rpc3Bs
YXlOYW1lcy5nZXQoKSwgImNhbGVuZGFyIiwgY2Fub25pY2FsQ29kZS5kYXRhKCksIGJ1ZmZlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFR5cGU6OlJlZ2lvbjogewotICAgICAg
ICAvLyBJZiBjb2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyBw
cm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCi0gICAgICAgIGlmICghaXNV
bmljb2RlUmVnaW9uU3VidGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3Mp
OworICAgIGNhc2UgVHlwZTo6RGF0ZVRpbWVGaWVsZDogeworICAgICAgICAvLyBXZSBkbyBub3Qg
dXNlIHVsZG5fa2V5VmFsdWVEaXNwbGF5TmFtZSBzaW5jZSBpdCBjYW5ub3QgaGFuZGxlIG5hcnJv
dyBsZW5ndGguCisgICAgICAgIC8vIEluc3RlYWQsIHdlIHVzZSB1ZGF0cGdfZ2V0RmllbGREaXNw
bGF5TmFtZS4KKworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvaW50bC1kaXNwbGF5bmFtZXMt
djIvI3NlYy1pc3ZhbGlkZGF0ZXRpbWVmaWVsZGNvZGUKKyAgICAgICAgYXV0byBpc1ZhbGlkRGF0
ZVRpbWVGaWVsZENvZGUgPSBbXShjb25zdCBTdHJpbmcmIGNvZGUpIC0+IHN0ZDo6b3B0aW9uYWw8
VURhdGVUaW1lUGF0dGVybkZpZWxkPiB7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAiZXJhIl9z
KQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfRVJBX0ZJRUxEOworICAgICAgICAgICAg
aWYgKGNvZGUgPT0gInllYXIiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19ZRUFS
X0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gInF1YXJ0ZXIiX3MpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFVEQVRQR19RVUFSVEVSX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUg
PT0gIm1vbnRoIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfTU9OVEhfRklFTEQ7
CisgICAgICAgICAgICBpZiAoY29kZSA9PSAid2Vla09mWWVhciJfcykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gVURBVFBHX1dFRUtfT0ZfWUVBUl9GSUVMRDsKKyAgICAgICAgICAgIGlmIChjb2Rl
ID09ICJ3ZWVrZGF5Il9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfV0VFS0RBWV9G
SUVMRDsKKyAgICAgICAgICAgIGlmIChjb2RlID09ICJkYXkiX3MpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFVEQVRQR19EQVlfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAiZGF5UGVy
aW9kIl9zKQorICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfREFZUEVSSU9EX0ZJRUxEOwor
ICAgICAgICAgICAgaWYgKGNvZGUgPT0gImhvdXIiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFVEQVRQR19IT1VSX0ZJRUxEOworICAgICAgICAgICAgaWYgKGNvZGUgPT0gIm1pbnV0ZSJfcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gVURBVFBHX01JTlVURV9GSUVMRDsKKyAgICAgICAgICAg
IGlmIChjb2RlID09ICJzZWNvbmQiX3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFVEQVRQR19T
RUNPTkRfRklFTEQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAidGltZVpvbmVOYW1lIl9zKQor
ICAgICAgICAgICAgICAgIHJldHVybiBVREFUUEdfWk9ORV9GSUVMRDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBmaWVsZCA9IGlz
VmFsaWREYXRlVGltZUZpZWxkQ29kZShjb2RlKTsKKyAgICAgICAgaWYgKCFmaWVsZCkgeworICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBp
cyBub3QgYSBkYXRlVGltZUZpZWxkIGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQotICAgICAgICBhdXRvIHJlZ2lvbiA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNw
bGF5TmFtZXMobV90eXBlLCBjb2RlKTsKLSAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgp
LCByZWdpb24uZGF0YSgpLCBidWZmZXIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBUeXBlOjpTY3JpcHQ6IHsKLSAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRo
ZSB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4
Y2VwdGlvbgotICAgICAgICBpZiAoIWlzVW5pY29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgewotICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBp
cyBub3QgYSBzY3JpcHQgc3VidGFnIl9zKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICAgICAgVURhdGVUaW1lUEdEaXNwbGF5V2lkdGggc3R5bGUgPSBVREFUUEdfV0lERTsKKyAgICAg
ICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAg
ICAgICBzdHlsZSA9IFVEQVRQR19XSURFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVREFUUEdfQUJCUkVWSUFURUQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6TmFycm93OgorICAgICAg
ICAgICAgc3R5bGUgPSBVREFUUEdfTkFSUk9XOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgYXV0byBzY3JpcHQgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVz
KG1fdHlwZSwgY29kZSk7Ci0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1bGRuX3NjcmlwdERpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgc2NyaXB0
LmRhdGEoKSwgYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYnVmZmVyID0gdm0u
aW50bENhY2hlKCkuZ2V0RmllbGREaXNwbGF5TmFtZShtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBm
aWVsZC52YWx1ZSgpLCBzdHlsZSwgc3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/
IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY29kZSk7CisgICAgICAgIHJldHVybiBqc1N0
cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogICAgIH0KLSAgICBjYXNlIFR5cGU6OkN1cnJlbmN5
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICAvLyB1bGRuX2xvY2FsZURpc3Bs
YXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNwbGF5TmFt
ZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMg
bm90IGZvdW5kLgogICAgICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxs
YmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2YWx1ZS4K
ICAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCi0gICAgICAg
ICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQo
KSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFj
azo6Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIFN0cmluZyhjYW5vbmljYWxD
b2RlLmRhdGEoKSwgY2Fub25pY2FsQ29kZS5sZW5ndGgoKSkpOwogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3Bs
YXkgbmFtZS4iX3MpOwogICAgIH0KICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZm
ZXIpKTsKQEAgLTI5OCw3ICszNzEsOSBAQCBKU09iamVjdCogSW50bERpc3BsYXlOYW1lczo6cmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZt
LCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsK
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgdHlwZVN0cmluZyhtX3R5cGUpKSk7Ci0gICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwganNOb250
cml2aWFsU3RyaW5nKHZtLCBmYWxsYmFja1N0cmluZyhtX2ZhbGxiYWNrKSkpOworICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZmFsbGJhY2ssIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsKKyAgICBpZiAobV90eXBl
ID09IFR5cGU6Okxhbmd1YWdlKQorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxhbmd1YWdlRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCBsYW5n
dWFnZURpc3BsYXlTdHJpbmcobV9sYW5ndWFnZURpc3BsYXkpKSk7CiAgICAgcmV0dXJuIG9wdGlv
bnM7CiB9CiAKQEAgLTMyNyw2ICs0MDIsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFt
ZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gInNjcmlwdCJfczsKICAg
ICBjYXNlIFR5cGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAg
IGNhc2UgVHlwZTo6Q2FsZW5kYXI6CisgICAgICAgIHJldHVybiAiY2FsZW5kYXIiX3M7CisgICAg
Y2FzZSBUeXBlOjpEYXRlVGltZUZpZWxkOgorICAgICAgICByZXR1cm4gImRhdGVUaW1lRmllbGQi
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKQEAgLTM0NCw0ICs0MjMsMTYgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNw
bGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogICAgIHJldHVybiBB
U0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6
Omxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXNwbGF5KQor
eworICAgIHN3aXRjaCAobGFuZ3VhZ2VEaXNwbGF5KSB7CisgICAgY2FzZSBMYW5ndWFnZURpc3Bs
YXk6OkRpYWxlY3Q6CisgICAgICAgIHJldHVybiAiZGlhbGVjdCJfczsKKyAgICBjYXNlIExhbmd1
YWdlRGlzcGxheTo6U3RhbmRhcmQ6CisgICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKaW5kZXggODFhZmM5MGViYzZjNGJhYzJjYzUy
MTE1Y2UzYjNlYTVkMGZiOTc0Yi4uNGMzN2U4N2FmOGJlMjZjMmE1M2NjNDlmMjQyY2IxZTFlZGY5
NGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuaApAQCAtNzIsMTIgKzcyLDE0IEBAIGNsYXNzIEludGxEaXNwbGF5TmFtZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OwogCiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBOYXJyb3csIFNob3J0LCBMb25n
IH07Ci0gICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IExhbmd1YWdlLCBSZWdpb24sIFNj
cmlwdCwgQ3VycmVuY3kgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGFuZ3Vh
Z2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJyZW5jeSwgQ2FsZW5kYXIsIERhdGVUaW1lRmllbGQgfTsK
ICAgICBlbnVtIGNsYXNzIEZhbGxiYWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKKyAgICBl
bnVtIGNsYXNzIExhbmd1YWdlRGlzcGxheSA6IHVpbnQ4X3QgeyBEaWFsZWN0LCBTdGFuZGFyZCB9
OwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2spOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbGFu
Z3VhZ2VEaXNwbGF5U3RyaW5nKExhbmd1YWdlRGlzcGxheSk7CiAKICAgICB1c2luZyBVTG9jYWxl
RGlzcGxheU5hbWVzRGVsZXRlciA9IElDVURlbGV0ZXI8dWxkbl9jbG9zZT47CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVy
PiBtX2Rpc3BsYXlOYW1lczsKQEAgLTg4LDYgKzkwLDcgQEAgY2xhc3MgSW50bERpc3BsYXlOYW1l
cyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBTdHlsZSBtX3N0eWxlIHsg
U3R5bGU6OkxvbmcgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Okxhbmd1YWdlIH07CiAgICAg
RmFsbGJhY2sgbV9mYWxsYmFjayB7IEZhbGxiYWNrOjpDb2RlIH07CisgICAgTGFuZ3VhZ2VEaXNw
bGF5IG1fbGFuZ3VhZ2VEaXNwbGF5IHsgTGFuZ3VhZ2VEaXNwbGF5OjpEaWFsZWN0IH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKaW5kZXggMjk1Y2FmNjk1YzEyYTZmMDlkOGYxOWVkMDFkNGMyZmY3MjBmNzYx
YS4uMDNjOWQ3OTg2Zjk1YTA3MWI2OTUzODkzM2I4MWQ3NDYzNDExM2M4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTY3LDYgKzY3LDcgQEAK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYwOSwyNCArNjEwLDI5IEBA
IHVuc2lnbmVkIGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFByCiAvLyBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9y
dHMvdHIzNS8jVW5pY29kZV9sb2NhbGVfaWRlbnRpZmllcgogYm9vbCBpc1VuaWNvZGVMb2NhbGVJ
ZGVudGlmaWVyVHlwZShTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBBU1NFUlQoIXN0cmluZy5p
c051bGwoKSk7Ci0KLSAgICBmb3IgKGF1dG8gcGFydCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1w
dHlFbnRyaWVzKCctJykpIHsKLSAgICAgICAgYXV0byBsZW5ndGggPSBwYXJ0Lmxlbmd0aCgpOwot
ICAgICAgICBpZiAobGVuZ3RoIDwgMyB8fCBsZW5ndGggPiA4KQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBwYXJ0LmNvZGVVbml0cygp
KSB7Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYW51bWVyaWMoY2hhcmFjdGVyKSkKKyAg
ICAvLyBNYXRjaGluZyB0aGUgVW5pY29kZSBMb2NhbGUgSWRlbnRpZmllciB0eXBlIG5vbnRlcm1p
bmFsLgorICAgIC8vIEJlY2F1c2UgdGhlIHNwZWMgYWJzdHJhY3Qgb3BlcmF0aW9uIGlzIG5vdCBt
ZW50aW9uaW5nIHRvIEJDUC00NyBjb25mb3JtYW5jZSBmb3IgdGhpcyBtYXRjaGluZywKKyAgICAv
LyAnLScgYW5kICdfJyBzZXBhcmF0b3JzIGFyZSBhbGxvd2VkIHdoaWxlIEJDUC00NyBvbmx5IGFj
Y2VwdHMgJy0nLgorICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBJc1N0cnVjdHVyYWxseVZhbGlk
TGFuZ3VhZ2VUYWcgZXhwbGljaXRseSBtZW50aW9ucyB0byBCQ1AtNDcuCisgICAgcmV0dXJuIHJl
YWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBib29sIHsK
KyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGF1dG8gYmVnaW4gPSBidWZmZXIu
cG9zaXRpb24oKTsKKyAgICAgICAgICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFp
bmluZygpICYmIGlzQVNDSUlBbHBoYW51bWVyaWMoKmJ1ZmZlcikpCisgICAgICAgICAgICAgICAg
KytidWZmZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBidWZmZXIucG9zaXRpb24o
KSAtIGJlZ2luOworICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDMgfHwgbGVuZ3RoID4gOCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWJ1ZmZlci5oYXND
aGFyYWN0ZXJzUmVtYWluaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnLScgJiYgKmJ1ZmZlciAhPSAnXycpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgKytidWZmZXI7CiAgICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1jYW5vbmljYWxpemV1bmljb2RlbG9jYWxlaWQKLXN0YXRpYyBTdHJpbmcg
Y2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcoY29uc3QgQ1N0cmluZyYgdGFnKQorU3RyaW5nIGNhbm9u
aWNhbGl6ZVVuaWNvZGVMb2NhbGVJRChjb25zdCBDU3RyaW5nJiB0YWcpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSBsb2NhbGVJREJ1ZmZlckZvckxhbmd1YWdlVGFnV2l0aE51bGxUZXJtaW5hdG9yKHRh
Zyk7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCkBAIC03MDIsNyArNzA4LDcgQEAgVmVjdG9y
PFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgICAgICAgICAgaWYgKGlzU3RydWN0dXJhbGx5VmFsaWRM
YW5ndWFnZVRhZyh0YWcpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHRhZy5pc0FsbEFTQ0lJ
KCkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVkVGFnID0gY2Fub25pY2Fs
aXplTGFuZ3VhZ2VUYWcodGFnLmFzY2lpKCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBjYW5v
bmljYWxpemVkVGFnID0gY2Fub25pY2FsaXplVW5pY29kZUxvY2FsZUlEKHRhZy5hc2NpaSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWNhbm9uaWNhbGl6ZWRUYWcuaXNOdWxsKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHNlZW5TZXQuYWRkKGNhbm9uaWNhbGl6ZWRUYWcpLmlzTmV3RW50
cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuLmFwcGVuZChjYW5vbmljYWxpemVkVGFn
KTsKQEAgLTczOSwxNCArNzQ1LDE0IEBAIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gYmUgZGV0ZXJtaW5lZCBieSBXZWJDb3JlLXNwZWNp
ZmljIGxvZ2ljIGxpa2Ugc29tZSBXSyBzZXR0aW5ncy4gVXN1YWxseSB0aGlzIHdpbGwgcmV0dXJu
IHRoZQogICAgIC8vIHNhbWUgdGhpbmcgYXMgdXNlclByZWZlcnJlZExhbmd1YWdlcygpWzBdLgog
ICAgIGlmIChhdXRvIGRlZmF1bHRMYW5ndWFnZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+ZGVmYXVsdExhbmd1YWdlKSB7Ci0gICAgICAgIFN0cmluZyBsb2NhbGUg
PSBjYW5vbmljYWxpemVMYW5ndWFnZVRhZyhkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkpOworICAg
ICAgICBTdHJpbmcgbG9jYWxlID0gY2Fub25pY2FsaXplVW5pY29kZUxvY2FsZUlEKGRlZmF1bHRM
YW5ndWFnZSgpLnV0ZjgoKSk7CiAgICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3Vh
Z2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogICAgIGZvciAoY29uc3QgYXV0byYgbGFu
Z3VhZ2UgOiBsYW5ndWFnZXMpIHsKLSAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGNhbm9uaWNhbGl6
ZUxhbmd1YWdlVGFnKGxhbmd1YWdlLnV0ZjgoKSk7CisgICAgICAgIFN0cmluZyBsb2NhbGUgPSBj
YW5vbmljYWxpemVVbmljb2RlTG9jYWxlSUQobGFuZ3VhZ2UudXRmOCgpKTsKICAgICAgICAgaWYg
KCFsb2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKICAgICB9CkBA
IC0xNDY5LDkgKzE0NzUsMTkgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1hcElDVUNhbGVuZGFy
S2V5d29yZFRvQkNQNDcoY29uc3QgU3RyaW5nJiBjYWxlbmRhcikKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwQkNQNDdUb0lDVUNhbGVuZGFy
S2V5d29yZChjb25zdCBTdHJpbmcmIGNhbGVuZGFyKQoreworICAgIGlmIChjYWxlbmRhciA9PSAi
Z3JlZ29yeSJfcykKKyAgICAgICAgcmV0dXJuICJncmVnb3JpYW4iX3M7CisgICAgaWYgKGNhbGVu
ZGFyID09ICJpc2xhbWljYyJfcykKKyAgICAgICAgcmV0dXJuICJpc2xhbWljLWNpdmlsIl9zOwor
ICAgIGlmIChjYWxlbmRhciA9PSAiZXRoaW9hYSJfcykKKyAgICAgICAgcmV0dXJuICJldGhpb3Bp
Yy1hbWV0ZS1hbGVtIl9zOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBtYXBJQ1VDb2xsYXRpb25LZXl3b3JkVG9CQ1A0Nyhjb25zdCBTdHJpbmcm
IGNvbGxhdGlvbikKIHsKLSAgICAvLyBNYXAga2V5d29yZCB2YWx1ZXMgdG8gQkNQIDQ3IGVxdWl2
YWxlbnRzLgogICAgIGlmIChjb2xsYXRpb24gPT0gImRpY3Rpb25hcnkiX3MpCiAgICAgICAgIHJl
dHVybiAiZGljdCJfczsKICAgICBpZiAoY29sbGF0aW9uID09ICJnYjIzMTJoYW4iX3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggYTVhNWI5NzYxOWM1
Zjk5MjNmNmE3ZjFkMDM0OTAxMWVkY2RlOWY5NS4uY2MwMWY2Y2FkZDQxMDVmZTUzODhjYTc4Nzll
MDA0MWE5NWYwNTFjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaApAQCAtMTI3LDYgKzEyNyw3IEBAIGJvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmlu
Z1ZpZXcpOwogYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1ZpZXcpOwogYm9vbCBp
c1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOwogYm9vbCBpc1N0cnVjdHVyYWxseVZhbGlk
TGFuZ3VhZ2VUYWcoU3RyaW5nVmlldyk7CitTdHJpbmcgY2Fub25pY2FsaXplVW5pY29kZUxvY2Fs
ZUlEKGNvbnN0IENTdHJpbmcmIGxhbmd1YWdlVGFnKTsKIAogYm9vbCBpc1dlbGxGb3JtZWRDdXJy
ZW5jeUNvZGUoU3RyaW5nVmlldyk7CiAKQEAgLTEzOCw1ICsxMzksNiBAQCBzdHJ1Y3QgVUZpZWxk
UG9zaXRpb25JdGVyYXRvckRlbGV0ZXIgewogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwSUNV
Q29sbGF0aW9uS2V5d29yZFRvQkNQNDcoY29uc3QgU3RyaW5nJik7CiBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBtYXBCQ1A0N1RvSUNVQ2FsZW5kYXJLZXl3b3JkKGNvbnN0IFN0cmlu
ZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjhjMWI0NDAwYTRmOGEzZDNkYzUxYjQxNzc2OWQ1
MDljMGYwMWI1MC4uMGMzZTc3NDhjMjM1OTcwMWFjMTczY2NlYTFlODkyZWZmOTNkMjU1YyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMS0wOC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwuRGlzcGxheU5hbWVzIHYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5hbWVz
LXYyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHN0cmVzcy9pbnRsLWRpc3Bs
YXluYW1lcy5qczoKKyAgICAgICAgKHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHRlc3QyNjIv
Y29uZmlnLnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAy
MS0wOC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIEludGwgTG9jYWxlIEluZm8KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlz
cGxheW5hbWVzLXYyLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMtdjIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGIxYWYwZDljMzg3MDUwOTE1NTRhODY2YmQ2NzM5MDgxM2UxMWRmOAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLXYyLmpzCkBA
IC0wLDAgKzEsMTIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworaWYgKCR2
bS5pY3VWZXJzaW9uKCkgPj0gNjEpIHsKKyAgICB7CisgICAgICAgIGxldCBkaXNwbGF5TmFtZXMg
PSBuZXcgSW50bC5EaXNwbGF5TmFtZXModW5kZWZpbmVkLCB7dHlwZTogJ2NhbGVuZGFyJ30pOwor
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBkaXNwbGF5TmFtZXMub2Yo
JycpOworICAgICAgICB9LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIg
Y29kZWApOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBkaXNwbGF5
TmFtZXMub2YoJy0nKTsKKyAgICAgICAgfSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBh
IGNhbGVuZGFyIGNvZGVgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAg
ICAgZGlzcGxheU5hbWVzLm9mKCdhYWFhYS0nKTsKKyAgICAgICAgfSwgYFJhbmdlRXJyb3I6IGFy
Z3VtZW50IGlzIG5vdCBhIGNhbGVuZGFyIGNvZGVgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgICAgICAgICAgZGlzcGxheU5hbWVzLm9mKCdfJyk7CisgICAgICAgIH0sIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBjYWxlbmRhciBjb2RlYCk7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lcy5vZignYWFhYWFfJyk7Cisg
ICAgICAgIH0sIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBjYWxlbmRhciBjb2RlYCk7
IH0KKyAgICB7CisgICAgICAgIGxldCBkbiA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcygiZW4iLCB7
dHlwZTogImNhbGVuZGFyIn0pCisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJyb2MiKSwgIk1pbmd1
byBDYWxlbmRhciIpOworICAgICAgICBzaG91bGRCZShkbi5vZigicGVyc2lhbiIpLCAiUGVyc2lh
biBDYWxlbmRhciIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiZ3JlZ29yeSIpLCAiR3JlZ29y
aWFuIENhbGVuZGFyIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJldGhpb2FhIiksICJFdGhp
b3BpYyBBbWV0ZSBBbGVtIENhbGVuZGFyIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJqYXBh
bmVzZSIpLCAiSmFwYW5lc2UgQ2FsZW5kYXIiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2YoImRh
bmdpIiksICJEYW5naSBDYWxlbmRhciIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiY2hpbmVz
ZSIpLCAiQ2hpbmVzZSBDYWxlbmRhciIpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBkbiA9
IG5ldyBJbnRsLkRpc3BsYXlOYW1lcygiemgiLCB7dHlwZTogImNhbGVuZGFyIn0pCisgICAgICAg
IHNob3VsZEJlKGRuLm9mKCJyb2MiKSwgIuawkeWbvee6quW5tCIpOworICAgICAgICBzaG91bGRC
ZShkbi5vZigicGVyc2lhbiIpLCAi5rOi5pav5Y6GIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9m
KCJncmVnb3J5IiksICLlhazljoYiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2YoImV0aGlvYWEi
KSwgIuWfg+WhnuS/hOavlOS6mumYv+exs+eJuemYv+iOseWnhuaXpeWOhiIpOworICAgICAgICBz
aG91bGRCZShkbi5vZigiamFwYW5lc2UiKSwgIuWSjOWOhiIpOworICAgICAgICBzaG91bGRCZShk
bi5vZigiZGFuZ2kiKSwgIuaqgOe6quWOhiIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiY2hp
bmVzZSIpLCAi5Yac5Y6GIik7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGRuID0gbmV3IElu
dGwuRGlzcGxheU5hbWVzKCJ6aCIsIHt0eXBlOiAiZGF0ZVRpbWVGaWVsZCJ9KQorICAgICAgICBz
aG91bGRCZShkbi5vZigiZXJhIiksICLnuqrlhYMiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2Yo
InllYXIiKSwgIuW5tCIpOworICAgICAgICBzaG91bGRCZShkbi5vZigibW9udGgiKSwgIuaciCIp
OworICAgICAgICBzaG91bGRCZShkbi5vZigicXVhcnRlciIpLCAi5a2j5bqmIik7CisgICAgICAg
IHNob3VsZEJlKGRuLm9mKCJ3ZWVrT2ZZZWFyIiksICLlkagiKTsKKyAgICAgICAgc2hvdWxkQmUo
ZG4ub2YoIndlZWtkYXkiKSwgIuW3peS9nOaXpSIpOworICAgICAgICBzaG91bGRCZShkbi5vZigi
ZGF5UGVyaW9kIiksICLkuIrljYgv5LiL5Y2IIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJk
YXkiKSwgIuaXpSIpOworICAgICAgICBzaG91bGRCZShkbi5vZigiaG91ciIpLCAi5bCP5pe2Iik7
CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJtaW51dGUiKSwgIuWIhumSnyIpOworICAgICAgICBz
aG91bGRCZShkbi5vZigic2Vjb25kIiksICLnp5IiKTsKKyAgICB9CisgICAgeworICAgICAgICBs
ZXQgZG4gPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoImVzIiwge3R5cGU6ICJkYXRlVGltZUZpZWxk
In0pCisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJlcmEiKSwgImVyYSIpOworICAgICAgICBzaG91
bGRCZShkbi5vZigieWVhciIpLCAiYcOxbyIpOworICAgICAgICBzaG91bGRCZShkbi5vZigibW9u
dGgiKSwgIm1lcyIpOworICAgICAgICBzaG91bGRCZShkbi5vZigicXVhcnRlciIpLCAidHJpbWVz
dHJlIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJ3ZWVrT2ZZZWFyIiksICJzZW1hbmEiKTsK
KyAgICAgICAgc2hvdWxkQmUoZG4ub2YoIndlZWtkYXkiKSwgImTDrWEgZGUgbGEgc2VtYW5hIik7
CisgICAgICAgIGxldCBkYXlQZXJpb2QgPSBkbi5vZigiZGF5UGVyaW9kIik7CisgICAgICAgIHNo
b3VsZEJlKGRheVBlcmlvZCA9PT0gImEuIG0uL3AuIG0uIiB8fCBkYXlQZXJpb2QgPT09ICJhLsKg
bS4vcC7CoG0uIiwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKGRuLm9mKCJkYXkiKSwgImTDrWEi
KTsKKyAgICAgICAgc2hvdWxkQmUoZG4ub2YoImhvdXIiKSwgImhvcmEiKTsKKyAgICAgICAgc2hv
dWxkQmUoZG4ub2YoIm1pbnV0ZSIpLCAibWludXRvIik7CisgICAgICAgIHNob3VsZEJlKGRuLm9m
KCJzZWNvbmQiKSwgInNlZ3VuZG8iKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZG4xID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKCJlbiIsIHt0eXBlOiAibGFuZ3VhZ2UifSkKKyAgICAgICAg
c2hvdWxkQmUoZG4xLm9mKCJlbiIpLCAiRW5nbGlzaCIpOworICAgICAgICBzaG91bGRCZShkbjEu
b2YoImVuLUdCIiksICJCcml0aXNoIEVuZ2xpc2giKTsKKyAgICAgICAgc2hvdWxkQmUoZG4xLm9m
KCJlbi1VUyIpLCAiQW1lcmljYW4gRW5nbGlzaCIpOworICAgICAgICBzaG91bGRCZShkbjEub2Yo
ImVuLUFVIiksICJBdXN0cmFsaWFuIEVuZ2xpc2giKTsKKyAgICAgICAgc2hvdWxkQmUoZG4xLm9m
KCJlbi1DQSIpLCAiQ2FuYWRpYW4gRW5nbGlzaCIpOworICAgICAgICBzaG91bGRCZShkbjEub2Yo
InpoIiksICJDaGluZXNlIik7CisgICAgICAgIHNob3VsZEJlKGRuMS5vZigiemgtSGFudCIpID09
PSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIgfHwgZG4xLm9mKCJ6aC1IYW50IikgPT09ICJDaGluZXNl
LCBUcmFkaXRpb25hbCIsIHRydWUpOworICAgICAgICBzaG91bGRCZShkbjEub2YoInpoLUhhbnMi
KSA9PT0gIlNpbXBsaWZpZWQgQ2hpbmVzZSIgfHwgZG4xLm9mKCJ6aC1IYW5zIikgPT09ICJDaGlu
ZXNlLCBTaW1wbGlmaWVkIiwgdHJ1ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGRuMiA9
IG5ldyBJbnRsLkRpc3BsYXlOYW1lcygiZW4iLCB7dHlwZTogImxhbmd1YWdlIiwgbGFuZ3VhZ2VE
aXNwbGF5OiAiZGlhbGVjdCJ9KQorICAgICAgICBzaG91bGRCZShkbjIub2YoImVuIiksICJFbmds
aXNoIik7CisgICAgICAgIHNob3VsZEJlKGRuMi5vZigiZW4tR0IiKSwgIkJyaXRpc2ggRW5nbGlz
aCIpOworICAgICAgICBzaG91bGRCZShkbjIub2YoImVuLVVTIiksICJBbWVyaWNhbiBFbmdsaXNo
Iik7CisgICAgICAgIHNob3VsZEJlKGRuMi5vZigiZW4tQVUiKSwgIkF1c3RyYWxpYW4gRW5nbGlz
aCIpOworICAgICAgICBzaG91bGRCZShkbjIub2YoImVuLUNBIiksICJDYW5hZGlhbiBFbmdsaXNo
Iik7CisgICAgICAgIHNob3VsZEJlKGRuMi5vZigiemgiKSwgIkNoaW5lc2UiKTsKKyAgICAgICAg
c2hvdWxkQmUoZG4yLm9mKCJ6aC1IYW50IikgPT09ICJUcmFkaXRpb25hbCBDaGluZXNlIiB8fCBk
bjIub2YoInpoLUhhbnQiKSA9PT0gIkNoaW5lc2UsIFRyYWRpdGlvbmFsIiwgdHJ1ZSk7CisgICAg
ICAgIHNob3VsZEJlKGRuMi5vZigiemgtSGFucyIpID09PSAiU2ltcGxpZmllZCBDaGluZXNlIiB8
fCBkbjIub2YoInpoLUhhbnMiKSA9PT0gIkNoaW5lc2UsIFNpbXBsaWZpZWQiLCB0cnVlKTsKKyAg
ICB9CisgICAgeworICAgICAgICBsZXQgZG4zID0gbmV3IEludGwuRGlzcGxheU5hbWVzKCJlbiIs
IHt0eXBlOiAibGFuZ3VhZ2UiLCBsYW5ndWFnZURpc3BsYXk6ICJzdGFuZGFyZCJ9KQorICAgICAg
ICBzaG91bGRCZShkbjMub2YoImVuIiksICJFbmdsaXNoIik7CisgICAgICAgIHNob3VsZEJlKGRu
My5vZigiZW4tR0IiKSA9PT0gIkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKSIgfHwgZG4zLm9mKCJl
bi1HQiIpID09PSAiRW5nbGlzaCAoVUspIiwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKGRuMy5v
ZigiZW4tQVUiKSwgIkVuZ2xpc2ggKEF1c3RyYWxpYSkiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4z
Lm9mKCJlbi1DQSIpLCAiRW5nbGlzaCAoQ2FuYWRhKSIpOworICAgICAgICBzaG91bGRCZShkbjMu
b2YoImVuLVVTIikgPT09ICJFbmdsaXNoIChVbml0ZWQgU3RhdGVzKSIgfHwgZG4zLm9mKCJlbi1V
UyIpID09PSAiRW5nbGlzaCAoVVMpIiwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKGRuMy5vZigi
emgiKSwgIkNoaW5lc2UiKTsKKyAgICAgICAgc2hvdWxkQmUoZG4zLm9mKCJ6aC1IYW50IikgPT09
ICJDaGluZXNlIChUcmFkaXRpb25hbCkiIHx8IGRuMy5vZigiemgtSGFudCIpID09PSAiQ2hpbmVz
ZSwgVHJhZGl0aW9uYWwiLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoZG4zLm9mKCJ6aC1IYW5z
IikgPT09ICJDaGluZXNlIChTaW1wbGlmaWVkKSIgfHwgZG4zLm9mKCJ6aC1IYW5zIikgPT09ICJD
aGluZXNlLCBTaW1wbGlmaWVkIiwgdHJ1ZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3Bs
YXluYW1lcy5qcwppbmRleCAzNDA5OTdiYWE3NjQ5NGZkOTViMTUzNGU0OGZiY2E2NzQyYjRiZWYw
Li5hNTUxYzYzOTM0N2Y1ZTEzMDZkNzY2OTNlMGI0OTgxZmRmZDE3YTQ4IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWRpc3BsYXluYW1lcy5qcwpAQCAtMTc4LDcgKzE3OCw3IEBAIGZ1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgICAgIHJldHVybiAnZW4tQUEn
OwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKG9iamVjdCksIG9iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2Yob2JqZWN0KSwgJ2VuLUFBJyk7CiAgICAgfQogCiAgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBmYWxsYmFjazogJ25v
bmUnfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggNTdjZjE2MTAzYTlkYWZmNmVkMjM1MjYzMTJhODBi
YWQ3ZmU0YzcyMy4uMzhiMGNhYzcxNzk2NzZmNTQ4NDc3ODdmN2Q1OWRiZWZjYjliZDAyNyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbApAQCAtMzAsNyArMzAsNiBAQCBza2lwOgogICAgIC0gaW1wb3J0LWFzc2Vy
dGlvbnMKICAgICAtIGpzb24tbW9kdWxlcwogICAgIC0gY2xhc3Mtc3RhdGljLWJsb2NrCi0gICAg
LSBJbnRsLkRpc3BsYXlOYW1lcy12MgogICAgIC0gY2FsbGFibGUtYm91bmRhcnktcmVhbG1zCiAg
IHBhdGhzOgogICBmaWxlczoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlv
bnMueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCBhZjI3Y2Jl
NzY3M2ZmNmU3NDZhMTU2MmJiZTlkYWFlNTI4ZGY3ODlhLi5iNjU2MGRhMzhlMjhjMGI1ODdhMTkx
ZGVjNmQ5YTJiYzM3NTU5MWE1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC02MDks
OSArNjA5LDYgQEAgdGVzdC9hbm5leEIvbGFuZ3VhZ2UvZ2xvYmFsLWNvZGUvc3dpdGNoLWRmbHQt
Z2xvYmFsLXNraXAtZWFybHktZXJyLXRyeS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
QW4gaW5pdGlhbGl6ZWQgYmluZGluZyBpcyBub3QgY3JlYXRlZCBwcmlvciB0byBldmFsdWF0aW9u
IEV4cGVjdGVkIGEgUmVmZXJlbmNlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2FubmV4Qi9sYW5ndWFnZS9nbG9iYWwtY29kZS9zd2l0
Y2gtZGZsdC1nbG9iYWwtc2tpcC1lYXJseS1lcnIuanM6CiAgIGRlZmF1bHQ6ICJTeW50YXhFcnJv
cjogQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiB0aGF0IHNoYWRvd3MgYSBsZXQvY29uc3QvY2xh
c3MvZnVuY3Rpb24gdmFyaWFibGUgJ2YnIGluIHN0cmljdCBtb2RlLiIKLXRlc3QvYnVpbHQtaW5z
L0FycmF5L3Byb3RvdHlwZS9TeW1ib2wudW5zY29wYWJsZXMvdmFsdWUuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IGBmaW5kTGFzdGAgcHJvcGVydHkgdmFsdWUgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrdW5kZWZpbmVkwrssIMKrdHJ1ZcK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogYGZpbmRMYXN0YCBwcm9wZXJ0eSB2YWx1ZSBFeHBlY3RlZCBTYW1lVmFs
dWUowqt1bmRlZmluZWTCuywgwqt0cnVlwrspIHRvIGJlIHRydWUnCiB0ZXN0L2J1aWx0LWlucy9E
YXRlL1VUQy9mcC1ldmFsdWF0aW9uLW9yZGVyLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBvcmRlciBvZiBvcGVyYXRpb25zIC8gcHJlY2lzaW9uIGluIE1ha2VUaW1lIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq05hTsK7LCDCqzI5MzEywrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBvcmRlciBvZiBvcGVyYXRpb25zIC8gcHJlY2lzaW9uIGluIE1ha2VUaW1l
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq05hTsK7LCDCqzI5MzEywrspIHRvIGJlIHRydWUnCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>