<?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>75699</bug_id>
          
          <creation_ts>2012-01-06 04:28:03 -0800</creation_ts>
          <short_desc>Disconnecting DOMWindow properties is fragile and overly complicated</short_desc>
          <delta_ts>2012-01-07 00:47:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>75697</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531037</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 04:28:03 -0800</bug_when>
    <thetext>Disconnecting DOMWindow properties is fragile and overly complicated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531040</commentid>
    <comment_count>1</comment_count>
      <attachid>121423</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 04:31:26 -0800</bug_when>
    <thetext>Created attachment 121423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531041</commentid>
    <comment_count>2</comment_count>
      <attachid>121424</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 04:34:25 -0800</bug_when>
    <thetext>Created attachment 121424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531149</commentid>
    <comment_count>3</comment_count>
      <attachid>121424</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-06 10:32:51 -0800</bug_when>
    <thetext>Comment on attachment 121424
Patch

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

Will DOMWindowProperty be able to reconnect, finally resolving the horrible, horrible bug 34679? Any cleanup in this area should have fixing that bug as its final goal.

&gt; Source/WebCore/page/Console.cpp:339
&gt; -MemoryInfo* Console::memory() const
&gt; +PassRefPtr&lt;MemoryInfo&gt; Console::memory() const

Does this mean that console.memory===console.memory will no longer be true?

&gt; Source/WebCore/page/DOMWindow.cpp:517
&gt; +    // FIXME: Notifications should work like the other properties.

Would be helpful to clarify in which respect they are different. One will be able to discover the context from svn blame, but that&apos;s harder than just reading a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531353</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 13:48:20 -0800</bug_when>
    <thetext>&gt; Will DOMWindowProperty be able to reconnect, finally resolving the horrible, horrible bug 34679? Any cleanup in this area should have fixing that bug as its final goal.

Yes.  That&apos;s one of the things I&apos;m headed towards.  By keeping a list of all the properties, we&apos;ll be able to walk that list and reconnect them!

&gt; &gt; Source/WebCore/page/Console.cpp:339
&gt; &gt; -MemoryInfo* Console::memory() const
&gt; &gt; +PassRefPtr&lt;MemoryInfo&gt; Console::memory() const
&gt; 
&gt; Does this mean that console.memory===console.memory will no longer be true?

It never was true.  Even before the patch m_memory was always created fresh every time the property was accessed.  I can add a FIXME about changing this behavior, but I&apos;d prefer to keep functional changes for a future patch.

&gt; &gt; Source/WebCore/page/DOMWindow.cpp:517
&gt; &gt; +    // FIXME: Notifications should work like the other properties.
&gt; 
&gt; Would be helpful to clarify in which respect they are different. One will be able to discover the context from svn blame, but that&apos;s harder than just reading a comment.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531372</commentid>
    <comment_count>5</comment_count>
      <attachid>121424</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-06 13:56:26 -0800</bug_when>
    <thetext>Comment on attachment 121424
Patch

I don&apos;t know how these &quot;MemoryInfo&quot; properties were allowed into WebKit. They feel wrong.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531398</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 14:17:07 -0800</bug_when>
    <thetext>&gt; I don&apos;t know how these &quot;MemoryInfo&quot; properties were allowed into WebKit. They feel wrong.

Looks like it was added in http://trac.webkit.org/changeset/63537.  I agree that the current code doesn&apos;t make much sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531529</commentid>
    <comment_count>7</comment_count>
      <attachid>121424</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 17:00:01 -0800</bug_when>
    <thetext>Comment on attachment 121424
Patch

Need to land the earlier patch first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531615</commentid>
    <comment_count>8</comment_count>
      <attachid>121541</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 23:34:02 -0800</bug_when>
    <thetext>Created attachment 121541
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531616</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-06 23:36:19 -0800</bug_when>
    <thetext>Attachment 121541 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/page/DOMWindowProperty.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531618</commentid>
    <comment_count>10</comment_count>
      <attachid>121542</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-06 23:38:32 -0800</bug_when>
    <thetext>Created attachment 121542
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531623</commentid>
    <comment_count>11</comment_count>
      <attachid>121542</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-07 00:46:55 -0800</bug_when>
    <thetext>Comment on attachment 121542
Patch for landing

Clearing flags on attachment: 121542

Committed r104380: &lt;http://trac.webkit.org/changeset/104380&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531624</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-07 00:47:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121423</attachid>
            <date>2012-01-06 04:31:26 -0800</date>
            <delta_ts>2012-01-06 04:34:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75699-20120106043124.patch</filename>
            <type>text/plain</type>
            <size>42439</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGViZDNkNDM4ZDlhMzRm
OGNhODc2ZjJiNzJhYmJjNzE2MzIxMzk4NS4uY2M1NDI4OWY0OTIyNDU1MDY3OGY3YTRhYmZhNTkw
M2I1ZTFiNTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg2IEBACiAyMDEyLTAxLTA2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRGlzY29ubmVjdGluZyBET01X
aW5kb3cgcHJvcGVydGllcyBpcyBmcmFnaWxlIGFuZCBvdmVybHkgY29tcGxpY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgd2Ug
aGFkIHRvIGNhcmVmdWxseSBjaGVjayBldmVyeSBvYmplY3QgdHJlZSBoYW5naW5nIG9mZiBvZgor
ICAgICAgICBET01XaW5kb3cgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnkgcHJvcGVydHkgY29ycmVj
dGx5IGRpc2Nvbm5lY3RlZAorICAgICAgICBpdHNlbGYgYW5kIGFsbCBpdHMgc3Vib2JqZWN0cyBm
cm9tIHRoZSBGcmFtZSB3aGVuIHRoZSBET01XaW5kb3cKKyAgICAgICAgZGlzY29ubmVjdGVkIGZy
b20gdGhlIEZyYW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBET01XaW5kb3dQ
cm9wZXJ0eSwgd2hpY2ggaXMgYSBiYXNlIGNsYXNzIHRoYXQKKyAgICAgICAgaGFuZGxlcyB0aGlz
IHdvcmsgYXV0b21hZ2ljYWxseSwgZW5zdXJpbmcgdGhhdCB3ZSB3b24ndCBoYXZlIGFueQorICAg
ICAgICBkYW5nbGluZyBGcmFtZSBwb2ludGVycyBhbmQgcmVtb3ZpbmcgYSBidW5jaCBvZiBib2ls
ZXJwbGF0ZSBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjpT
dHlsZU1lZGlhKToKKyAgICAgICAgKiBjc3MvU3R5bGVNZWRpYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVNZWRpYTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hl
OjpET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9u
Q2FjaGU6OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBwYWdlL0JhckluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmFySW5mbzo6QmFySW5mbyk6CisgICAgICAgICogcGFnZS9CYXJJbmZvLmg6Cisg
ICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OkNv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bWVtb3J5KToKKyAgICAgICAgKiBw
YWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01TZWxlY3Rpb246OkRPTVNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS9E
T01TZWxlY3Rpb24uaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnJlZ2lzdGVyUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojp1bnJlZ2lzdGVyUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpjbGVhcik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdl
L0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9sb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6Okhpc3RvcnkpOgorICAgICAgICAqIHBhZ2Uv
SGlzdG9yeS5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OkxvY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpO
YXZpZ2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp+TmF2aWdhdG9yKToKKyAg
ICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OlBlcmZvcm1hbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlcmZvcm1hbmNlOjptZW1vcnkpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OlBlcmZvcm1hbmNlTmF2aWdhdGlvbik6
CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaDoKKyAgICAgICAgKiBwYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpQZXJmb3JtYW5jZVRpbWluZyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5oOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
bjo6U2NyZWVuKToKKyAgICAgICAgKiBwYWdlL1NjcmVlbi5oOgorICAgICAgICAqIHBsdWdpbnMv
RE9NTWltZVR5cGVBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZUFycmF5
OjpET01NaW1lVHlwZUFycmF5KToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXku
aDoKKyAgICAgICAgKiBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVBsdWdpbkFycmF5OjpET01QbHVnaW5BcnJheSk6CisgICAgICAgICogcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdlKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2Uu
aDoKKworMjAxMi0wMS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAg
ICAgIERPTVdpbmRvdyBzaG91bGQgYmUgYSBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk3CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNmQ2MzM4NTliNzkxMzk3MTY3ZDAzMjU1YjU2Mjc2OTUwNzA3ZDM1
Ni4uNDk4ZGZhZDdmNTVkZTQ5NDFmYjk4YmM4Mzc1ZTFkMjkzNGQ1NGQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTk4OSw2ICs5ODksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFn
ZS9ET01TZWxlY3Rpb24uY3BwCiAgICAgcGFnZS9ET01UaW1lci5jcHAKICAgICBwYWdlL0RPTVdp
bmRvdy5jcHAKKyAgICBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcAogICAgIHBhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuY3BwCiAgICAgcGFnZS9FdmVudFNv
dXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGVjNmQ1ZmU1MTg1NDA4
NzE2ZGYzNWYyZjkzYjk0Y2UxYTBlZTk3ZDkuLjk4YTA3OGRiMTQyOTVhYTlmMGRlOTczMmMwOGEw
OWEyOTIxZDE5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjY0Niw2ICsy
NjQ2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRp
bWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQ
cm9wZXJ0eS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggYTM4NjI1Yjk2MTY3OGMxNDA4NTQ1N2MyOGU5NmM0NDJjOWMy
NjBhZC4uY2Q5NDgxYTNhMGUwMmI3NzdiZGMyMDA0OGM0MmQzMDQwN2FjNjA3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC05NjcsNiArOTY3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9ET01TZWxlY3Rp
b24uY3BwIFwKICAgICBwYWdlL0RPTVRpbWVyLmNwcCBcCiAgICAgcGFnZS9ET01XaW5kb3cuY3Bw
IFwKKyAgICBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcCBcCiAgICAgcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAgXAogICAgIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcCBcCiAgICAgcGFnZS9FdmVudFNv
dXJjZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDAzZDEyNzMzMDM1YTU4OGRhYzIwNTBlNGIw
ZWQ5ZDAzMGQ2Y2JlZjIuLjQyZjM4ZDI5MjcyYTI2MWU5ZmVmMDg5MmJiMmJmODkyYTM1ODk0Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTI5ODgsNiArMjk4OCw4IEBACiAgICAgICAgICAgICAncGFn
ZS9ET01UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NVGltZXIuaCcsCiAgICAgICAg
ICAgICAncGFnZS9ET01XaW5kb3cuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvd1By
b3BlcnR5LmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oJywKICAg
ICAgICAgICAgICdwYWdlL0RyYWdDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9F
dmVudEhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNlLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFjMzQz
NjZjZDA3ZDdhNGFlN2JkMDVhMTI2NWVlNGUzZjIxODY2NGMuLjBhMDdkNjdkNTcyYmI2NzI1ZGRh
ZDZjZGIzZTVhODUxMzM4ZjM0MmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC0yNTE4Niw2ICsyNTE4NiwxNCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd1Byb3BlcnR5
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGFnZVxET01XaW5kb3dQcm9wZXJ0eS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERyYWdBY3Rpb25zLmgiCiAJCQkJPgogCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCmluZGV4IDkwYjU3NDAxNzJkZDIwMDBlNzYyMWZm
NGE1YzMxMWQwYTc0MmQ5OWEuLjVkYjhhNmY5OGUxN2JjNjM3YmM4ZTQ1NjBjODM1M2ViOTVmZDVj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU3R5bGVNZWRpYTo6U3R5bGVNZWRpYShGcmFtZSogZnJhbWUpCi0g
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oCmluZGV4IDc2MDUyNDI3MTlhYTZmOWQ4Zjk4ZDljNTBh
MWE1ZTA5NjI0YTFkOTQuLjAzMjkyOWUwOGM4YmFmNmYzZDYzZjVlOGRiMzRhNDk5NDJlYjI5MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTdHls
ZU1lZGlhX2gKICNkZWZpbmUgU3R5bGVNZWRpYV9oCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9w
ZXJ0eS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApAQCAtMzQsMjQgKzM1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRnJhbWU7CiAKLWNsYXNzIFN0eWxlTWVkaWEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU1l
ZGlhPiB7CitjbGFzcyBTdHlsZU1lZGlhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNZWRpYT4s
IHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3R5bGVNZWRpYT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3R5bGVNZWRpYShmcmFtZSkpOwotICAgIH0KLQotICAgIEZyYW1lKiBm
cmFtZSgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsg
bV9mcmFtZSA9IDA7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZU1lZGlhPiBjcmVhdGUo
RnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVNZWRpYShmcmFtZSkpO30K
IAogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7Ci0KICAgICBib29sIG1hdGNoTWVkaXVtKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFN0eWxlTWVkaWEoRnJhbWUqKTsKLQot
ICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIGV4cGxpY2l0IFN0eWxlTWVkaWEoRnJhbWUqKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNzJjOWZjOTg5YjVkNDI2OTJjYjY2
MDVlN2Y1NWQzMjUyNDIyNjBhMC4uMDQyZWIzOTZmNmQyYmVkOTVkNWU5YTY1ZGM0ZTE5YjI0MTA3
M2ZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBET01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKEZyYW1lKiBmcmFt
ZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkK
IHsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNo
ZUhvc3QoKTsKICAgICBpZiAoY2FjaGVIb3N0KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIERPTUFw
cGxpY2F0aW9uQ2FjaGU6OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3QqIGNhY2hlSG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7CiAgICAgaWYgKGNhY2hlSG9z
dCkKICAgICAgICAgY2FjaGVIb3N0LT5zZXRET01BcHBsaWNhdGlvbkNhY2hlKDApOwotICAgIG1f
ZnJhbWUgPSAwOworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKIH0K
IAogQXBwbGljYXRpb25DYWNoZUhvc3QqIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IDAyMjg0MWNlNzgwZjhiOWY4OThiNzI2YTkz
ZWVmZTUwMDY5NDFjMDUuLjJjYTQ0YzFiM2JjOTgwMTQyMTMwZWFhOGY0NGQ1Mjg4OWExYTE5M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBET01BcHBsaWNhdGlvbkNhY2hl
X2gKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCisjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDEsMTMgKzQyLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKIAotY2xhc3MgRE9N
QXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+
LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RE9NQXBwbGljYXRpb25DYWNoZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IERPTUFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUpKTsgfQogICAgIH5ET01BcHBsaWNhdGlv
bkNhY2hlKCkgeyBBU1NFUlQoIW1fZnJhbWUpOyB9CiAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lKCkgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25lZCBz
aG9ydCBzdGF0dXMoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZShFeGNlcHRpb25Db2RlJik7CkBA
IC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0
b0V2ZW50VHlwZShBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBpZCk7CiAKIHByaXZhdGU6
Ci0gICAgRE9NQXBwbGljYXRpb25DYWNoZShGcmFtZSopOworICAgIGV4cGxpY2l0IERPTUFwcGxp
Y2F0aW9uQ2FjaGUoRnJhbWUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQpAQCAtODQsNyArODQsNiBAQCBwcml2YXRlOgogCiAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAKLSAgICBGcmFtZSogbV9mcmFtZTsK
ICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9C
YXJJbmZvLmNwcAppbmRleCBiNmFiNjg2MTljYjRiMTFkNmEwY2E0OTAxZDFhZTA4NTg2YmQ2M2Nk
Li4zNmIyYWQ2YTcwMmExOGNjYzRiMTk1ODc2ZjhlMjU4N2E4YWZkYzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QmFySW5mby5jcHAKQEAgLTM2LDIxICszNiwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBC
YXJJbmZvOjpCYXJJbmZvKEZyYW1lKiBmcmFtZSwgVHlwZSB0eXBlKQotICAgIDogbV9mcmFtZShm
cmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogICAgICwgbV90eXBlKHR5cGUp
CiB7CiB9CiAKLUZyYW1lKiBCYXJJbmZvOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZnJhbWU7Ci19Ci0KLXZvaWQgQmFySW5mbzo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2Zy
YW1lID0gMDsKLX0KLQogQmFySW5mbzo6VHlwZSBCYXJJbmZvOjp0eXBlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXJJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaAppbmRleCAzNzZiOGZjNmRiODhkZWRk
NTE4N2YyNTAxNDRkNmQ1MGZiNGExNWZkLi5iMzY5YjZlNGNiN2JlNWMxOTdmZDkxYTIyOThhMjZl
NWU3ODNmZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRl
ZiBCYXJJbmZvX2gKICNkZWZpbmUgQmFySW5mb19oCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9w
ZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApAQCAtMzYsMjIgKzM3LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEZyYW1lOwogCi0gICAgY2xhc3MgQmFySW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPEJh
ckluZm8+IHsKKyAgICBjbGFzcyBCYXJJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8QmFySW5mbz4s
IHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5
cGUgeyBMb2NhdGlvbmJhciwgTWVudWJhciwgUGVyc29uYWxiYXIsIFNjcm9sbGJhcnMsIFN0YXR1
c2JhciwgVG9vbGJhciB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhckluZm8+IGNy
ZWF0ZShGcmFtZSogZnJhbWUsIFR5cGUgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhcklu
Zm8oZnJhbWUsIHR5cGUpKTsgfQogCi0gICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAg
ICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotCiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwotCiAgICAgICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgQmFySW5mbyhGcmFtZSosIFR5cGUpOwotICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICAg
ICAgVHlwZSBtX3R5cGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggMDEx
Y2Q2YzQ4YzQ2MWQzODRhYzcwMjI5ZWMwODU3Zjk2ZDk5NTk3OS4uY2Y0ZTM0OTAxNzAzMDNkYjhj
NzI1YmY5OGFmNmIxZGYxM2NmNGI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC01Niw3
ICs1Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbnNvbGU6OkNvbnNvbGUoRnJhbWUq
IGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZy
YW1lKQogewogfQogCkBAIC02NCwxOCArNjQsNiBAQCBDb25zb2xlOjp+Q29uc29sZSgpCiB7CiB9
CiAKLUZyYW1lKiBDb25zb2xlOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7
Ci19Ci0KLXZvaWQgQ29uc29sZTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9tZW1v
cnkpCi0gICAgICAgIG1fbWVtb3J5ID0gMDsKLSAgICBtX2ZyYW1lID0gMDsKLX0KLQogc3RhdGlj
IHZvaWQgcHJpbnRTb3VyY2VVUkxBbmRMaW5lKGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNp
Z25lZCBsaW5lTnVtYmVyKQogewogICAgIGlmICghc291cmNlVVJMLmlzRW1wdHkoKSkgewpAQCAt
MzQ4LDEwICszMzYsOSBAQCB2b2lkIENvbnNvbGU6Ondhcm4oUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsUwogICAgIGFkZE1lc3NhZ2Uo
TG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNr
KTsKIH0KIAotTWVtb3J5SW5mbyogQ29uc29sZTo6bWVtb3J5KCkgY29uc3QKK1Bhc3NSZWZQdHI8
TWVtb3J5SW5mbz4gQ29uc29sZTo6bWVtb3J5KCkgY29uc3QKIHsKLSAgICBtX21lbW9yeSA9IE1l
bW9yeUluZm86OmNyZWF0ZShtX2ZyYW1lKTsKLSAgICByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7Cisg
ICAgcmV0dXJuIE1lbW9yeUluZm86OmNyZWF0ZShtX2ZyYW1lKTsKIH0KIAogc3RhdGljIGJvb2wg
cHJpbnRFeGNlcHRpb25zID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IDg3ZmU0MDc0
Njc0NmRhZjU4ZGYxMmIwNjIwOWViYWIxOTJmMjE0YjQuLjVhMTAwMDQ0MzRkYzlmZGQ4ZjM0MTgy
OTgxMWY4NTQ5NzFlNmIyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjZGVmaW5lIENvbnNvbGVfaAogCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCisjaW5jbHVk
ZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDgsMTQg
KzQ5LDExIEBAIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxT
Y3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAjZW5kaWYKIAotY2xhc3MgQ29uc29sZSA6
IHB1YmxpYyBSZWZDb3VudGVkPENvbnNvbGU+IHsKK2NsYXNzIENvbnNvbGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxDb25zb2xlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb25zb2xlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQ29uc29sZShmcmFtZSkpOyB9CiAgICAgdmlydHVhbCB+Q29uc29sZSgp
OwogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUo
KTsKLQogICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjayk7CiAKQEAgLTg1LDE5ICs4MywxNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpOwogCi0gICAgTWVtb3J5SW5mbyogbWVtb3J5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZW1vcnlJbmZvPiBtZW1vcnkoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBpbmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9
IGZhbHNlKTsKIAotICAgIENvbnNvbGUoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBDb25zb2xlKEZy
YW1lKik7CiAKLSAgICBGcmFtZSogbV9mcmFtZTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICAgICBQcm9maWxlc0FycmF5IG1fcHJvZmlsZXM7CiAjZW5kaWYKLSAgICBtdXRhYmxl
IFJlZlB0cjxNZW1vcnlJbmZvPiBtX21lbW9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAyM2FkMmRlMjcwOTIyMTE1
ZjQ4MzBiMWU3NmVmNTM1OGVjZDE2NTEyLi5iZmUwZmNmMmRmNzgyOTdjZWNiMzg3ZjVmZjc2Mzcx
OGI1NmVmOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC01NCwyMCAr
NTQsMTAgQEAgc3RhdGljIE5vZGUqIHNlbGVjdGlvblNoYWRvd0FuY2VzdG9yKEZyYW1lKiBmcmFt
ZSkKIH0KIAogRE9NU2VsZWN0aW9uOjpET01TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQotICAgIDog
bV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogewogfQogCi1G
cmFtZSogRE9NU2VsZWN0aW9uOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7
Ci19Ci0KLXZvaWQgRE9NU2VsZWN0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1fZnJh
bWUgPSAwOwotfQotCiBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBET01TZWxlY3Rpb246OnZpc2li
bGVTZWxlY3Rpb24oKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5oCmluZGV4IGI1ZmQxOTc2OGQyZTliZTZmMTY5NzJiMTliM2JmZjliZTFk
Y2NiNWQuLjk4MDNhY2NhMjJiYTQzYzUyNzY3ODU2YTIzOTVjNzY4YzhhN2Q3ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBET01TZWxl
Y3Rpb25faAogI2RlZmluZSBET01TZWxlY3Rpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJv
cGVydHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQzLDEzICs0NCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi0g
ICAgY2xhc3MgRE9NU2VsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NU2VsZWN0aW9uPiB7
CisgICAgY2xhc3MgRE9NU2VsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NU2VsZWN0aW9u
PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERPTVNlbGVjdGlvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IERPTVNlbGVjdGlvbihmcmFtZSkpOyB9CiAKLSAgICAgICAgRnJhbWUqIGZy
YW1lKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KICAgICAgICAg
Ly8gU2FmYXJpIFNlbGVjdGlvbiBPYmplY3QgQVBJCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMg
cmV0dXJuIHRoZSB2YWxpZCBlcXVpdmFsZW50cyBvZiBpbnRlcm5hbCBlZGl0aW5nIHBvc2l0aW9u
cy4KICAgICAgICAgTm9kZSogYmFzZU5vZGUoKSBjb25zdDsKQEAgLTkwLDEzICs4OCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZW1wdHkoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIERPTVNlbGVjdGlvbihGcmFtZSopOworICAgICAgICBleHBsaWNpdCBET01TZWxl
Y3Rpb24oRnJhbWUqKTsKIAogICAgICAgICAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGFjY2Vz
c29ycywgZG9lcyBub3QgTlVMTCBjaGVjayBtX2ZyYW1lLgogICAgICAgICBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc1Zh
bGlkRm9yUG9zaXRpb24oTm9kZSopIGNvbnN0OwotICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggYjM2MDExZTg0ZTc4NmU4NDQ5MWE1M2MxMjcxM2Q4ZDFjMjcxNWQxMi4uM2RiYmVjNjQ1
ZDQ0Y2JjZGM0ODc0NjkxZjhjZDZjMTkzYTJjZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtNDc2LDkyICs0NzYsNTMgQEAgdm9pZCBET01XaW5kb3c6OmZyYW1lRGVzdHJveWVk
KCkKICAgICBjbGVhcigpOwogfQogCit2b2lkIERPTVdpbmRvdzo6cmVnaXN0ZXJQcm9wZXJ0eShE
T01XaW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCit7CisgICAgbV9wcm9wZXJ0aWVzLmFkZChwcm9w
ZXJ0eSk7Cit9CisKK3ZvaWQgRE9NV2luZG93Ojp1bnJlZ2lzdGVyUHJvcGVydHkoRE9NV2luZG93
UHJvcGVydHkqIHByb3BlcnR5KQoreworICAgIG1fcHJvcGVydGllcy5yZW1vdmUocHJvcGVydHkp
OworfQorCiB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogewotICAgIGlmIChtX3NjcmVlbikKLSAg
ICAgICAgbV9zY3JlZW4tPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fc2NyZWVuID0gMDsKKyAg
ICBIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRp
ZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9y
IGl0ID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCisgICAgICAgICgq
aXQpLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKIAotICAg
IGlmIChtX3NlbGVjdGlvbikKLSAgICAgICAgbV9zZWxlY3Rpb24tPmRpc2Nvbm5lY3RGcmFtZSgp
OworICAgIG1fc2NyZWVuID0gMDsKICAgICBtX3NlbGVjdGlvbiA9IDA7Ci0KLSAgICBpZiAobV9o
aXN0b3J5KQotICAgICAgICBtX2hpc3RvcnktPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1faGlz
dG9yeSA9IDA7Ci0KICAgICBtX2NyeXB0byA9IDA7Ci0KLSAgICBpZiAobV9sb2NhdGlvbmJhcikK
LSAgICAgICAgbV9sb2NhdGlvbmJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9sb2NhdGlv
bmJhciA9IDA7Ci0KLSAgICBpZiAobV9tZW51YmFyKQotICAgICAgICBtX21lbnViYXItPmRpc2Nv
bm5lY3RGcmFtZSgpOwogICAgIG1fbWVudWJhciA9IDA7Ci0KLSAgICBpZiAobV9wZXJzb25hbGJh
cikKLSAgICAgICAgbV9wZXJzb25hbGJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9wZXJz
b25hbGJhciA9IDA7Ci0KLSAgICBpZiAobV9zY3JvbGxiYXJzKQotICAgICAgICBtX3Njcm9sbGJh
cnMtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fc2Nyb2xsYmFycyA9IDA7Ci0KLSAgICBpZiAo
bV9zdGF0dXNiYXIpCi0gICAgICAgIG1fc3RhdHVzYmFyLT5kaXNjb25uZWN0RnJhbWUoKTsKICAg
ICBtX3N0YXR1c2JhciA9IDA7Ci0KLSAgICBpZiAobV90b29sYmFyKQotICAgICAgICBtX3Rvb2xi
YXItPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fdG9vbGJhciA9IDA7Ci0KLSAgICBpZiAobV9j
b25zb2xlKQotICAgICAgICBtX2NvbnNvbGUtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fY29u
c29sZSA9IDA7Ci0KLSAgICBpZiAobV9uYXZpZ2F0b3IpCi0gICAgICAgIG1fbmF2aWdhdG9yLT5k
aXNjb25uZWN0RnJhbWUoKTsKICAgICBtX25hdmlnYXRvciA9IDA7Ci0KICNpZiBFTkFCTEUoV0VC
X1RJTUlORykKLSAgICBpZiAobV9wZXJmb3JtYW5jZSkKLSAgICAgICAgbV9wZXJmb3JtYW5jZS0+
ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9wZXJmb3JtYW5jZSA9IDA7CiAjZW5kaWYKLQotICAg
IGlmIChtX2xvY2F0aW9uKQotICAgICAgICBtX2xvY2F0aW9uLT5kaXNjb25uZWN0RnJhbWUoKTsK
ICAgICBtX2xvY2F0aW9uID0gMDsKLQotICAgIGlmIChtX21lZGlhKQotICAgICAgICBtX21lZGlh
LT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX21lZGlhID0gMDsKLQotICAgIGlmIChtX3Nlc3Np
b25TdG9yYWdlKQotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlLT5kaXNjb25uZWN0RnJhbWUoKTsK
ICAgICBtX3Nlc3Npb25TdG9yYWdlID0gMDsKLQotICAgIGlmIChtX2xvY2FsU3RvcmFnZSkKLSAg
ICAgICAgbV9sb2NhbFN0b3JhZ2UtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbG9jYWxTdG9y
YWdlID0gMDsKLQotICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGUpCi0gICAgICAgIG1fYXBwbGlj
YXRpb25DYWNoZS0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlID0g
MDsKLQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIC8vIEZJWE1FOiBOb3RpZmljYXRp
b25zIHNob3VsZCB3b3JrIGxpa2UgdGhlIG90aGVyIHByb3BlcnRpZXMuCiAgICAgcmVzZXROb3Rp
ZmljYXRpb25zKCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
IG1faWRiRmFjdG9yeSA9IDA7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShCTE9CKQogICAgIG1fZG9t
VVJMID0gMDsKICNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQogICAgIG1fc3RvcmFnZUluZm8g
PSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0Yzg2ZjgwYjg4ZTAzNGZj
NzMyYTJlMTNjMzk5ZjRlNDk0NGI3NmQyLi42YmQyYjcwZmYzMzMxNWFlZjdmOTYzMTA1MTI3M2Mz
NjYxMDBlZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xh
c3MgRE9NU2VsZWN0aW9uOwogICAgIGNsYXNzIERPTVVSTDsKKyAgICBjbGFzcyBET01XaW5kb3dQ
cm9wZXJ0eTsKICAgICBjbGFzcyBEYXRhYmFzZTsKICAgICBjbGFzcyBEYXRhYmFzZUNhbGxiYWNr
OwogICAgIGNsYXNzIERvY3VtZW50OwpAQCAtOTMsNiArOTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAK
KyAgICAgICAgdm9pZCByZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5Kik7CisgICAg
ICAgIHZvaWQgdW5yZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5Kik7CisKICAgICAg
ICAgdm9pZCBjbGVhcigpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IG1h
dGNoTWVkaWEoY29uc3QgU3RyaW5nJik7CkBAIC00MzcsNiArNDQxLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBLVVJMIG1fdXJsOwogCiAgICAgICAgIGJvb2wgbV9zaG91bGRQcmlu
dFdoZW5GaW5pc2hlZExvYWRpbmc7CisKKyAgICAgICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0
eSo+IG1fcHJvcGVydGllczsKKwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTY3JlZW4+IG1fc2Ny
ZWVuOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01TZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxIaXN0b3J5PiBtX2hpc3Rvcnk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uY3BwCmluZGV4IDFkYWVhNzQ0OTZlNjhjNTBjMTM2OGNjMmQyOTRlMDdlMTk5
Nzg4MDQuLmJiMjg1YzVjNTZlNWJkNTBiOTJjZDEwMGI3MDNhMGQ2YjgxY2I1ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBHZW9sb2Nh
dGlvbjo6V2F0Y2hlcnM6OmdldE5vdGlmaWVyc1ZlY3RvcihHZW9Ob3RpZmllclZlY3RvciYgY29w
eSkgY29uc3QKIH0KIAogR2VvbG9jYXRpb246Okdlb2xvY2F0aW9uKEZyYW1lKiBmcmFtZSkKLSAg
ICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKICNpZiAh
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAsIG1fc2VydmljZShHZW9sb2Nh
dGlvblNlcnZpY2U6OmNyZWF0ZSh0aGlzKSkKICNlbmRpZgpAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgcmVzZXQoKTsKICAgICBpZiAo
bV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZXRVc2luZ0dlb2xvY2F0aW9uKGZhbHNlKTsKLSAgICBtX2ZyYW1lID0gMDsKKyAgICBE
T01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CiB9CiAKIEdlb3Bvc2l0aW9uKiBH
ZW9sb2NhdGlvbjo6bGFzdFBvc2l0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAppbmRl
eCBiMjdkODBiOTg2MTM2MDRlZmIyZDBjYmE4YThmMTQ2Mjg4Yjc1OWY2Li5lYTU1Y2JmMWYyMDM2
OGE5M2I3OWY2MDE3ZDA0OTUzMGE1OGU3YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEdlb2xvY2F0aW9uX2gKICNkZWZpbmUgR2VvbG9j
YXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJHZW9w
b3NpdGlvbi5oIgogI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJQb3Np
dGlvbkVycm9yLmgiCkBAIC00NywyNSArNDgsMjMgQEAgY2xhc3MgR2VvbG9jYXRpb25FcnJvcjsK
ICNlbmRpZgogY2xhc3MgUGFnZTsKIAotY2xhc3MgR2VvbG9jYXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxHZW9sb2NhdGlvbj4KK2NsYXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
R2VvbG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkKICNpZiAhRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgcHVibGlj
IEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAogI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBHZW9sb2NhdGlvbihmcmFtZSkpOyB9Ci0KICAgICB+R2VvbG9jYXRpb24oKTsK
IAorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKICAgICB2b2lk
IHJlc2V0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLSAgICAKKwogICAgIHZvaWQg
Z2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+KTsK
ICAgICBpbnQgd2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25z
Pik7CiAgICAgdm9pZCBjbGVhcldhdGNoKGludCB3YXRjaElkKTsKIAogICAgIHZvaWQgc2V0SXNB
bGxvd2VkKGJvb2wpOwotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7
IH0KIAogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgdm9pZCBwb3Np
dGlvbkNoYW5nZWQoKTsKQEAgLTc5LDggKzc4LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNB
bGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0dlb2xvY2F0aW9uID09IFllczsgfQogICAg
IGJvb2wgaXNEZW5pZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93R2VvbG9jYXRpb24gPT0gTm87
IH0KLSAgICAKLSAgICBHZW9sb2NhdGlvbihGcmFtZSopOworCisgICAgZXhwbGljaXQgR2VvbG9j
YXRpb24oRnJhbWUqKTsKIAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKIApAQCAtMTcyLDcgKzE3
MSw2IEBAIHByaXZhdGU6CiAKICAgICBHZW9Ob3RpZmllclNldCBtX29uZVNob3RzOwogICAgIFdh
dGNoZXJzIG1fd2F0Y2hlcnM7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiAjaWYgIUVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgT3duUHRyPEdlb2xvY2F0aW9uU2VydmljZT4gbV9z
ZXJ2aWNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCBjYmZjMmJiZGM3MDI4
OTlkN2RlNDM2MDNjZWExNWUwYWVhNTU2NzIzLi4xZjVhMzlmMjg3NTg0ZjdjMjc0OGIzM2UxMDk5
ZTY2NGQxOTJhZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTQxLDIwICs0MSwxMCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIaXN0b3J5OjpIaXN0b3J5KEZyYW1lKiBmcmFtZSkK
LSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsK
IH0KIAotRnJhbWUqIEhpc3Rvcnk6OmZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcmFt
ZTsKLX0KLQotdm9pZCBIaXN0b3J5OjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1fZnJhbWUg
PSAwOwotfQotCiB1bnNpZ25lZCBIaXN0b3J5OjpsZW5ndGgoKSBjb25zdAogewogICAgIGlmICgh
bV9mcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggOWVjMTkxNGIzOTM1ODcwNTYwNzhlMmY5
Zjg2ZTc2ZjgyOGIxMDZhNi4uYmQ1MGZjY2QyYjg2MWQ5ZTY0MThlOTc0ZjQyZGZiMmIyYjVmOTFj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSGlzdG9y
eV9oCiAjZGVmaW5lIEhpc3RvcnlfaAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzgsMTIgKzM5LDkgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLWNsYXNzIEhpc3RvcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiB7
CitjbGFzcyBIaXN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeT4sIHB1YmxpYyBET01X
aW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeT4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhpc3RvcnkoZnJhbWUp
KTsgfQotICAgIAotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIHZvaWQgZGlzY29ubmVj
dEZyYW1lKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIGJhY2so
KTsKQEAgLTYxLDExICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRlT2JqZWN0QWRkZWQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgU3RhdGVPYmplY3RUeXBlLCBFeGNlcHRpb25Db2RlJik7CiAKIHBy
aXZhdGU6Ci0gICAgSGlzdG9yeShGcmFtZSopOworICAgIGV4cGxpY2l0IEhpc3RvcnkoRnJhbWUq
KTsKIAogICAgIEtVUkwgdXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0gICAgRnJh
bWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwCmluZGV4IGNhNmY5OTg3NTQ5Y2Y3MzZjMWI5MzMyZWU3MjVmYWE2ZThiODU4Y2Mu
LjFhMmQyZGI5OWNiOTJiZTBlMzIxZTMyMDdkNDBmNTEyMDI0N2ZhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCkBAIC00MCwxNSArNDAsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TG9jYXRpb246OkxvY2F0aW9uKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAotdm9pZCBMb2NhdGlvbjo6ZGlz
Y29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0gMDsKLX0KLQogaW5saW5lIGNvbnN0IEtV
UkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uaAppbmRleCAzYTEwNDdhNjE3MDM3YTk3YTRmOWJjODgyYzU3ZTU0MDE5M2Mz
MTE2Li5iODgyNjcxYThhZDYxODgyMzhiZThiNWJkZjk5NWUxNzRiYjIzOGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIExvY2F0aW9uX2gKICNkZWZp
bmUgTG9jYXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxMyArNDIsMTAgQEAgY2xhc3MgS1VSTDsK
IAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxMb2NhdGlvbj4geworY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgUmVmQ291bnRl
ZDxMb2NhdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBMb2NhdGlvbihmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAg
IHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9N
V2luZG93KiBmaXJzdFdpbmRvdyk7CiAgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsKIApAQCAtNzQs
MTEgKzcyLDkgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IGhyZWYoKTsgfQogCiBwcml2YXRlOgotICAgIExvY2F0aW9uKEZyYW1lKik7CisgICAgZXhwbGlj
aXQgTG9jYXRpb24oRnJhbWUqKTsKIAogICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotCi0g
ICAgRnJhbWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAKaW5kZXggNDkyNjYzMmVlMzYzNmY1YTU1NGYxNTMxNDBhMjU1MmVh
NjJmN2M0YS4uYzM1ZTk5NDk2MWM1MGE4MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNTksMTMgKzU5LDEyIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIE5hdmlnYXRvcjo6TmF2aWdhdG9yKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJh
bWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAogTmF2aWdh
dG9yOjp+TmF2aWdhdG9yKCkKIHsKLSAgICBkaXNjb25uZWN0RnJhbWUoKTsKIH0KIAogdm9pZCBO
YXZpZ2F0b3I6OnJlc2V0R2VvbG9jYXRpb24oKQpAQCAtNzQsMjMgKzczLDYgQEAgdm9pZCBOYXZp
Z2F0b3I6OnJlc2V0R2VvbG9jYXRpb24oKQogICAgICAgICBtX2dlb2xvY2F0aW9uLT5yZXNldCgp
OwogfQogCi12b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9w
bHVnaW5zKSB7Ci0gICAgICAgIG1fcGx1Z2lucy0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAg
IG1fcGx1Z2lucyA9IDA7Ci0gICAgfQotICAgIGlmIChtX21pbWVUeXBlcykgewotICAgICAgICBt
X21pbWVUeXBlcy0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbWltZVR5cGVzID0gMDsK
LSAgICB9Ci0gICAgaWYgKG1fZ2VvbG9jYXRpb24pIHsKLSAgICAgICAgbV9nZW9sb2NhdGlvbi0+
ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fZ2VvbG9jYXRpb24gPSAwOwotICAgIH0KLSAg
ICBtX2ZyYW1lID0gMDsKLX0KLQogLy8gSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHdl
IG5lZWQgdG8gaGlkZSB0aGUgc3Vic3RyaW5nICI0LiIgdGhhdCB3b3VsZCBvdGhlcndpc2UKIC8v
IGFwcGVhciBpbiB0aGUgYXBwVmVyc2lvbiBzdHJpbmcuIFRoaXMgaXMgdG8gYXZvaWQgcHJvYmxl
bXMgd2l0aCBvbGQgdmVyc2lvbnMgb2YgYQogLy8gbGlicmFyeSBjYWxsZWQgT3BlbkN1YmUgUXVp
Y2tNZW51LCB3aGljaCBhcyBvZiB0aGlzIHdyaXRpbmcgaXMgc3RpbGwgYmVpbmcgdXNlZCBvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggODRmMzBiZGUzOWMxZDAzMGYwYzAzNjMyZTA1Y2Q4
ZjUzZjA4ZTJkZi4uMDdjOWQyYjRiMjVjYWQzNTlmMGQ4YmQwZTdmZTk4ZmY3Njk3ZmViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIE5hdmlnYXRv
cl9oCiAjZGVmaW5lIE5hdmlnYXRvcl9oCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00MCwxNCArNDEsMTIgQEAgY2xhc3MgUGx1
Z2luRGF0YTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTmF2aWdhdG9y
IDogcHVibGljIE5hdmlnYXRvckJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPE5hdmlnYXRvcj4gewor
Y2xhc3MgTmF2aWdhdG9yIDogcHVibGljIE5hdmlnYXRvckJhc2UsIHB1YmxpYyBSZWZDb3VudGVk
PE5hdmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TmF2aWdhdG9yPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgTmF2aWdhdG9yKGZyYW1lKSk7IH0KICAgICB2aXJ0dWFsIH5OYXZpZ2F0b3Io
KTsKIAogICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbigpOwotICAgIHZvaWQgZGlzY29ubmVjdEZy
YW1lKCk7Ci0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiAg
ICAgU3RyaW5nIGFwcFZlcnNpb24oKSBjb25zdDsKICAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dDsKQEAgLTgxLDggKzgwLDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmF2
aWdhdG9yKEZyYW1lKik7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CisgICAgZXhwbGljaXQgTmF2aWdh
dG9yKEZyYW1lKik7CisKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVn
aW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwog
ICAgIG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA0ZTEzMGVhOGYxNDA3Y2YyNDg0Y2VhMjQ2NmJjYmU2
YmQwYTE1MGUwLi4zNmRkY2QyNDJhM2E0ZDExOGYwZDE0YTAzYTBlMTZmNDgxMTdlYzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtNDIsMzQgKzQyLDEzIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBlcmZvcm1hbmNlOjpQZXJmb3JtYW5jZShGcmFtZSogZnJhbWUpCi0g
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9
CiAKLUZyYW1lKiBQZXJmb3JtYW5jZTo6ZnJhbWUoKSBjb25zdAorUGFzc1JlZlB0cjxNZW1vcnlJ
bmZvPiBQZXJmb3JtYW5jZTo6bWVtb3J5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZTsK
LX0KLQotdm9pZCBQZXJmb3JtYW5jZTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9t
ZW1vcnkpCi0gICAgICAgIG1fbWVtb3J5ID0gMDsKLSAgICBpZiAobV9uYXZpZ2F0aW9uKSB7Ci0g
ICAgICAgIG1fbmF2aWdhdGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbmF2aWdh
dGlvbiA9IDA7Ci0gICAgfQotICAgIGlmIChtX3RpbWluZykgewotICAgICAgICBtX3RpbWluZy0+
ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fdGltaW5nID0gMDsKLSAgICB9Ci0gICAgbV9m
cmFtZSA9IDA7Ci19Ci0KLU1lbW9yeUluZm8qIFBlcmZvcm1hbmNlOjptZW1vcnkoKSBjb25zdAot
ewotICAgIG1fbWVtb3J5ID0gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVy
biBtX21lbW9yeS5nZXQoKTsKKyAgICByZXR1cm4gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUp
OwogfQogCiBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIFBlcmZvcm1hbmNlOjpuYXZpZ2F0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCBiZTllMTI0ZTBlZWZhNTdjNzFi
ZDAzNDFkOTEzODlhMjgyZTM3OTQyLi43ODI2MzYwNWU1YWM4NGQzMWU3YzYxODUyZjE4YzQ4MzA5
Yjc4OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlVGltaW5nLmgiCkBAIC00MiwyNyArNDMsMjMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQZXJmb3JtYW5jZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFBlcmZvcm1hbmNlPiB7CitjbGFzcyBQZXJmb3JtYW5jZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBlcmZvcm1hbmNlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQZXJmb3JtYW5jZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBlcmZvcm1hbmNlKGZyYW1lKSk7IH0KIAotICAgIEZyYW1lKiBm
cmFtZSgpIGNvbnN0OwotICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KLSAgICBNZW1vcnlJ
bmZvKiBtZW1vcnkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE1lbW9yeUluZm8+IG1lbW9yeSgp
IGNvbnN0OwogICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiogbmF2aWdhdGlvbigpIGNvbnN0Owog
ICAgIFBlcmZvcm1hbmNlVGltaW5nKiB0aW1pbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBQ
ZXJmb3JtYW5jZShGcmFtZSopOworICAgIGV4cGxpY2l0IFBlcmZvcm1hbmNlKEZyYW1lKik7CiAK
LSAgICBtdXRhYmxlIFJlZlB0cjxNZW1vcnlJbmZvPiBtX21lbW9yeTsKICAgICBtdXRhYmxlIFJl
ZlB0cjxQZXJmb3JtYW5jZU5hdmlnYXRpb24+IG1fbmF2aWdhdGlvbjsKICAgICBtdXRhYmxlIFJl
ZlB0cjxQZXJmb3JtYW5jZVRpbWluZz4gbV90aW1pbmc7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiB9
OwogCiB9CiAKLSNlbmRpZiAvLyAhRU5BQkxFKFdFQl9USU1JTkcpCi0jZW5kaWYgLy8gIWRlZmlu
ZWQoUGVyZm9ybWFuY2VfaCkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKKworI2VuZGlm
IC8vIFBlcmZvcm1hbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uLmNwcAppbmRleCA2NjNlOTQyYTFiYmNiMzA2YjM1MWZiMjY5MmU0N2IyODUwZTNkMmUw
Li5kNzY0YjYyMGJkNWMyN2IwYTdjNjNjYWE2NjY1ZDczZjliODE2YzEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCkBAIC00MCwyMCArNDAsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpQZXJmb3Jt
YW5jZU5hdmlnYXRpb24oRnJhbWUqIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6
IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogewogfQogCi1GcmFtZSogUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7Ci19Ci0KLXZvaWQg
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1fZnJhbWUg
PSAwOwotfQotCiB1bnNpZ25lZCBzaG9ydCBQZXJmb3JtYW5jZU5hdmlnYXRpb246OnR5cGUoKSBj
b25zdAogewogICAgIGlmICghbV9mcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTmF2aWdhdGlvbi5oCmluZGV4IGJkZjZlYWE5M2ExNGRiY2Y3Yjc4ODE0OTlmNTI5NzdmYjM5
ODQ5YjUuLmYzOTc5MjNlNmE5ZGI0NGIwZWYzNDdjNTQwMjA0YmE4YTZlOGIxZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaApAQCAtMzMsNiArMzMsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0
eS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIApAQCAtNDAsMTMgKzQxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RnJhbWU7CiAKLWNsYXNzIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFBlcmZvcm1hbmNlTmF2aWdhdGlvbj4geworY2xhc3MgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiwgcHVibGljIERPTVdpbmRv
d1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZXJmb3JtYW5jZU5h
dmlnYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZXJm
b3JtYW5jZU5hdmlnYXRpb24oZnJhbWUpKTsgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7
Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIGVudW0gUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uVHlwZSB7CiAgICAgICAgIFRZUEVfTkFWSUdBVEUsCiAgICAgICAgIFRZUEVfUkVMT0FE
LApAQCAtNTgsOSArNTYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgcmVkaXJlY3RD
b3VudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvbihGcmFt
ZSopOwotCi0gICAgRnJhbWUqIG1fZnJhbWU7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uKEZyYW1lKik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VU
aW1pbmcuY3BwCmluZGV4IGJkY2UwN2U3MzMwOTFjZTRkNjZmNDcwYTY3NDNkZGZiNjE5YzcxMzMu
LjZhNDUyNGIwOTViNzY5OGJlZTcyNzJmMjE4YmIwNjRlMWM5YWRkNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC01MSwyMCArNTEsMTAgQEAgc3RhdGlj
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlIHNlY29uZHMp
CiB9CiAKIFBlcmZvcm1hbmNlVGltaW5nOjpQZXJmb3JtYW5jZVRpbWluZyhGcmFtZSogZnJhbWUp
Ci0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7
CiB9CiAKLUZyYW1lKiBQZXJmb3JtYW5jZVRpbWluZzo6ZnJhbWUoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2ZyYW1lOwotfQotCi12b2lkIFBlcmZvcm1hbmNlVGltaW5nOjpkaXNjb25uZWN0RnJh
bWUoKQotewotICAgIG1fZnJhbWUgPSAwOwotfQotCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6Om5hdmlnYXRpb25TdGFydCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnRMb2Fk
VGltaW5nKiB0aW1pbmcgPSBkb2N1bWVudExvYWRUaW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VUaW1pbmcuaAppbmRleCA1MmFiZDU1YWQ2MzFkZmIyMzA0NTNhNTVjZjcwNTIw
MjA3ZTczM2EzLi4zMGI4MGI5NjdhZjRiODUxYTg3Y2ZlNWYyOGNiNDczOGU4MzE0YzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5Lmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCkBAIC00NCwxMyArNDUsMTAgQEAgc3RydWN0IERvY3VtZW50VGltaW5nOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7CiAKLWNsYXNzIFBlcmZvcm1hbmNlVGltaW5n
IDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+IHsKK2NsYXNzIFBlcmZvcm1h
bmNlVGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+LCBwdWJsaWMg
RE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlcmZv
cm1hbmNlVGltaW5nPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
UGVyZm9ybWFuY2VUaW1pbmcoZnJhbWUpKTsgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7
Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
YXZpZ2F0aW9uU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5sb2FkRXZl
bnRTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bmxvYWRFdmVudEVuZCgp
IGNvbnN0OwpAQCAtNzQsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGxvYWRFdmVudEVuZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFBlcmZvcm1hbmNlVGltaW5n
KEZyYW1lKik7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VUaW1pbmcoRnJhbWUqKTsKIAogICAg
IGNvbnN0IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZygpIGNvbnN0OwogICAgIERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0OwpAQCAtODIsOCArODAsNiBAQCBwcml2
YXRlOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1
dGUoaW50KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50
ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwotCi0gICAgRnJhbWUqIG1fZnJhbWU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAKaW5kZXggZGY4OGZhNGU5Yjg2NTYwOGFiM2IwNzQw
ZDdhZjRhMDZmNTJlZTc1Yi4uYjAyMWU1ZjE3OGE0ZmY1ODhjMmE5MTM4MzdlZDRkNjcxZjBiMTA2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcApAQCAtMzksMjAgKzM5LDEwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNjcmVlbjo6U2NyZWVuKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUo
ZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAotRnJhbWUqIFNj
cmVlbjo6ZnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1lOwotfQotCi12b2lkIFNj
cmVlbjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0gMDsKLX0KLQogdW5zaWdu
ZWQgU2NyZWVuOjpob3Jpem9udGFsRFBJKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TY3JlZW4uaAppbmRleCBkMDg0ZGI3ODgzMTgxNmRiZjRhNmFiMTgzMjg0OWI0NjFmNzA3
YjYxLi4yNjI0ZjFhMTNlMGQ3NGY5MGZhN2RmZmU3MTE3ZDMyYjQ4YzI3MmIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2NyZWVuLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgU2NyZWVuX2gKICNkZWZpbmUgU2Ny
ZWVuX2gKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNywxMyArMzgs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWU7CiAKLSAgICBjbGFz
cyBTY3JlZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JlZW4+IHsKKyAgICBjbGFzcyBTY3JlZW4g
OiBwdWJsaWMgUmVmQ291bnRlZDxTY3JlZW4+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyZWVuPiBjcmVhdGUoRnJh
bWUgKmZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2NyZWVuKGZyYW1lKSk7IH0KIAotICAg
ICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUo
KTsKLQogICAgICAgICB1bnNpZ25lZCBob3Jpem9udGFsRFBJKCkgY29uc3Q7CiAgICAgICAgIHVu
c2lnbmVkIHZlcnRpY2FsRFBJKCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIGhlaWdodCgpIGNv
bnN0OwpAQCAtNTYsOSArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2ln
bmVkIGF2YWlsV2lkdGgoKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmVlbihG
cmFtZSopOwotICAgICAgICAKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgICAgIGV4cGxp
Y2l0IFNjcmVlbihGcmFtZSopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCmluZGV4IDgyZDQwMDY0
YjVhYjJjYTkzMTg5MzJmODg1Y2JhZjZlMDI3ODc4MzEuLmQzOWU5ZjE1NWMxNDhkNTFlZjU5OTgx
NGY2MGVkY2ZiMDAzNGZlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
TWltZVR5cGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlw
ZUFycmF5LmNwcApAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01N
aW1lVHlwZUFycmF5OjpET01NaW1lVHlwZUFycmF5KEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJh
bWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAppbmRleCA1NGZmZjdiZjRkYTIzN2Mz
MGEzOTY2OGY0ODAxNWFjZWZkNjUxM2NlLi4yNWMyNzZkMzg3ZjRlMjZjODQ1MGU0NzZkN2M5ZjA0
M2ExOTRjMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBl
QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaApA
QCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01NaW1lVHlwZUFycmF5X2gKIAogI2luY2x1ZGUg
IkRPTU1pbWVUeXBlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTMyLDI0ICszMywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBsdWdpbkRhdGE7CiAKLWNsYXNzIERPTU1pbWVUeXBlQXJy
YXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1lVHlwZUFycmF5PiB7CitjbGFzcyBET01NaW1l
VHlwZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NTWltZVR5cGVBcnJheT4sIHB1YmxpYyBE
T01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NTWlt
ZVR5cGVBcnJheT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERP
TU1pbWVUeXBlQXJyYXkoZnJhbWUpKTsgfQogICAgIH5ET01NaW1lVHlwZUFycmF5KCk7CiAKLSAg
ICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAgICBi
b29sIGNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7
CiAgICAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBET01NaW1lVHlwZUFycmF5KEZyYW1l
Kik7CisgICAgZXhwbGljaXQgRE9NTWltZVR5cGVBcnJheShGcmFtZSopOwogICAgIFBsdWdpbkRh
dGEqIGdldFBsdWdpbkRhdGEoKSBjb25zdDsKLQotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW5BcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmNwcAppbmRleCA3NjZjM2ViM2QwZDFlYTYzYzFjMGY4NmZmMWMzZGUxYzQ2ZTAzOTkwLi5j
OGE1M2E1NzkwMjgyMDRkOTExMmY5NGZmOGJjZGIzMTAxMjBmZjdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcApAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkoRnJhbWUqIGZyYW1l
KQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgKaW5kZXggMGIxZjJi
YTk4YmI4OWIxY2MxZTk2MzU5NDI2ZGM0M2IyZGNmYzM5Mi4uNmMzNTQ1NzIxNGU5MjFjMWUwMjA3
NGU5YWRmMzZkOTlkYjY5Y2Q4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01QbHVnaW5BcnJheV9oCiAKICNpbmNs
dWRlICJET01QbHVnaW4uaCIKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzIsMTQgKzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGx1Z2luRGF0YTsKIAotY2xhc3MgRE9NUGx1Z2luQXJy
YXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5BcnJheT4geworY2xhc3MgRE9NUGx1Z2lu
QXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5BcnJheT4sIHB1YmxpYyBET01XaW5k
b3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NUGx1Z2luQXJy
YXk+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01QbHVnaW5B
cnJheShmcmFtZSkpOyB9CiAgICAgfkRPTVBsdWdpbkFycmF5KCk7CiAKLSAgICBGcmFtZSogZnJh
bWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1f
ZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPERPTVBsdWdpbj4gaXRlbSh1bnNpZ25lZCBpbmRleCk7CiAgICAgYm9vbCBjYW5HZXRJdGVt
c0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwpAQCAtNDgsMTAgKzQ2
LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaChib29sIHJlbG9hZCk7CiAKIHByaXZhdGU6
Ci0gICAgRE9NUGx1Z2luQXJyYXkoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBET01QbHVnaW5BcnJh
eShGcmFtZSopOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEoKSBjb25zdDsKLQotICAgIEZy
YW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5jcHAKaW5kZXggNWJhNDYwMmZiZDZjNDYyNTk1ZmMwMzEyYjZmNjM1ZDkzMmI3
YThkMi4uMjYwZWY0Zjc0MGM0YWRjYWNlYzMxODU1YmI0ZDA4ZTkwYzhiZjZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8U3RvcmFn
ZT4gU3RvcmFnZTo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4g
c3RvcmFnCiB9CiAKIFN0b3JhZ2U6OlN0b3JhZ2UoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01X
aW5kb3dQcm9wZXJ0eShmcmFtZSkKICAgICAsIG1fc3RvcmFnZUFyZWEoc3RvcmFnZUFyZWEpCiB7
CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCAyMTli
YzU1YjlhNzQ5YzE2YzMwYWUxYjE2ODk1ZGJhYTE4MWQyZTE3Li45OGYwNDFlYzAyNWE0NjA1OGU5
ZjFiMzgzMjdjZjMwY2RjN2ZkMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBTdG9yYWdlX2gKICNkZWZpbmUgU3RvcmFnZV9oCiAKKyNpbmNs
dWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTdG9yYWdlQXJlYTsKICAg
ICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi0gICAgY2xhc3MgU3RvcmFnZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0b3JhZ2U+IHsKKyAgICBjbGFzcyBTdG9yYWdlIDogcHVibGljIFJlZkNv
dW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlPiBjcmVhdGUoRnJhbWUqLCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPik7CiAgICAgICAgIH5TdG9yYWdlKCk7CkBAIC01MCwxMyArNTEsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3Q7CiAKLSAgICAgICAgRnJhbWUqIGZyYW1lKCkgeyByZXR1cm4gbV9mcmFt
ZTsgfQotICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KLQog
ICAgIHByaXZhdGU6CiAgICAgICAgIFN0b3JhZ2UoRnJhbWUqLCBQYXNzUmVmUHRyPFN0b3JhZ2VB
cmVhPik7CiAKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121424</attachid>
            <date>2012-01-06 04:34:25 -0800</date>
            <delta_ts>2012-01-06 23:33:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75699-20120106043423.patch</filename>
            <type>text/plain</type>
            <size>42439</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGViZDNkNDM4ZDlhMzRm
OGNhODc2ZjJiNzJhYmJjNzE2MzIxMzk4NS4uY2M1NDI4OWY0OTIyNDU1MDY3OGY3YTRhYmZhNTkw
M2I1ZTFiNTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg2IEBACiAyMDEyLTAxLTA2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRGlzY29ubmVjdGluZyBET01X
aW5kb3cgcHJvcGVydGllcyBpcyBmcmFnaWxlIGFuZCBvdmVybHkgY29tcGxpY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgd2Ug
aGFkIHRvIGNhcmVmdWxseSBjaGVjayBldmVyeSBvYmplY3QgdHJlZSBoYW5naW5nIG9mZiBvZgor
ICAgICAgICBET01XaW5kb3cgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnkgcHJvcGVydHkgY29ycmVj
dGx5IGRpc2Nvbm5lY3RlZAorICAgICAgICBpdHNlbGYgYW5kIGFsbCBpdHMgc3Vib2JqZWN0cyBm
cm9tIHRoZSBGcmFtZSB3aGVuIHRoZSBET01XaW5kb3cKKyAgICAgICAgZGlzY29ubmVjdGVkIGZy
b20gdGhlIEZyYW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBET01XaW5kb3dQ
cm9wZXJ0eSwgd2hpY2ggaXMgYSBiYXNlIGNsYXNzIHRoYXQKKyAgICAgICAgaGFuZGxlcyB0aGlz
IHdvcmsgYXV0b21hZ2ljYWxseSwgZW5zdXJpbmcgdGhhdCB3ZSB3b24ndCBoYXZlIGFueQorICAg
ICAgICBkYW5nbGluZyBGcmFtZSBwb2ludGVycyBhbmQgcmVtb3ZpbmcgYSBidW5jaCBvZiBib2ls
ZXJwbGF0ZSBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjpT
dHlsZU1lZGlhKToKKyAgICAgICAgKiBjc3MvU3R5bGVNZWRpYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVNZWRpYTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hl
OjpET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9u
Q2FjaGU6OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBwYWdlL0JhckluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmFySW5mbzo6QmFySW5mbyk6CisgICAgICAgICogcGFnZS9CYXJJbmZvLmg6Cisg
ICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OkNv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bWVtb3J5KToKKyAgICAgICAgKiBw
YWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01TZWxlY3Rpb246OkRPTVNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS9E
T01TZWxlY3Rpb24uaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnJlZ2lzdGVyUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojp1bnJlZ2lzdGVyUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpjbGVhcik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdl
L0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9sb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6Okhpc3RvcnkpOgorICAgICAgICAqIHBhZ2Uv
SGlzdG9yeS5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OkxvY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpO
YXZpZ2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp+TmF2aWdhdG9yKToKKyAg
ICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OlBlcmZvcm1hbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlcmZvcm1hbmNlOjptZW1vcnkpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OlBlcmZvcm1hbmNlTmF2aWdhdGlvbik6
CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaDoKKyAgICAgICAgKiBwYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpQZXJmb3JtYW5jZVRpbWluZyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5oOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
bjo6U2NyZWVuKToKKyAgICAgICAgKiBwYWdlL1NjcmVlbi5oOgorICAgICAgICAqIHBsdWdpbnMv
RE9NTWltZVR5cGVBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZUFycmF5
OjpET01NaW1lVHlwZUFycmF5KToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXku
aDoKKyAgICAgICAgKiBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVBsdWdpbkFycmF5OjpET01QbHVnaW5BcnJheSk6CisgICAgICAgICogcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdlKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2Uu
aDoKKworMjAxMi0wMS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAg
ICAgIERPTVdpbmRvdyBzaG91bGQgYmUgYSBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk3CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNmQ2MzM4NTliNzkxMzk3MTY3ZDAzMjU1YjU2Mjc2OTUwNzA3ZDM1
Ni4uNDk4ZGZhZDdmNTVkZTQ5NDFmYjk4YmM4Mzc1ZTFkMjkzNGQ1NGQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTk4OSw2ICs5ODksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFn
ZS9ET01TZWxlY3Rpb24uY3BwCiAgICAgcGFnZS9ET01UaW1lci5jcHAKICAgICBwYWdlL0RPTVdp
bmRvdy5jcHAKKyAgICBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcAogICAgIHBhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuY3BwCiAgICAgcGFnZS9FdmVudFNv
dXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGVjNmQ1ZmU1MTg1NDA4
NzE2ZGYzNWYyZjkzYjk0Y2UxYTBlZTk3ZDkuLjk4YTA3OGRiMTQyOTVhYTlmMGRlOTczMmMwOGEw
OWEyOTIxZDE5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjY0Niw2ICsy
NjQ2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRp
bWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQ
cm9wZXJ0eS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggYTM4NjI1Yjk2MTY3OGMxNDA4NTQ1N2MyOGU5NmM0NDJjOWMy
NjBhZC4uY2Q5NDgxYTNhMGUwMmI3NzdiZGMyMDA0OGM0MmQzMDQwN2FjNjA3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC05NjcsNiArOTY3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9ET01TZWxlY3Rp
b24uY3BwIFwKICAgICBwYWdlL0RPTVRpbWVyLmNwcCBcCiAgICAgcGFnZS9ET01XaW5kb3cuY3Bw
IFwKKyAgICBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcCBcCiAgICAgcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAgXAogICAgIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcCBcCiAgICAgcGFnZS9FdmVudFNv
dXJjZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDAzZDEyNzMzMDM1YTU4OGRhYzIwNTBlNGIw
ZWQ5ZDAzMGQ2Y2JlZjIuLjQyZjM4ZDI5MjcyYTI2MWU5ZmVmMDg5MmJiMmJmODkyYTM1ODk0Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTI5ODgsNiArMjk4OCw4IEBACiAgICAgICAgICAgICAncGFn
ZS9ET01UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NVGltZXIuaCcsCiAgICAgICAg
ICAgICAncGFnZS9ET01XaW5kb3cuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvd1By
b3BlcnR5LmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oJywKICAg
ICAgICAgICAgICdwYWdlL0RyYWdDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9F
dmVudEhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNlLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFjMzQz
NjZjZDA3ZDdhNGFlN2JkMDVhMTI2NWVlNGUzZjIxODY2NGMuLjBhMDdkNjdkNTcyYmI2NzI1ZGRh
ZDZjZGIzZTVhODUxMzM4ZjM0MmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC0yNTE4Niw2ICsyNTE4NiwxNCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd1Byb3BlcnR5
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGFnZVxET01XaW5kb3dQcm9wZXJ0eS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERyYWdBY3Rpb25zLmgiCiAJCQkJPgogCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCmluZGV4IDkwYjU3NDAxNzJkZDIwMDBlNzYyMWZm
NGE1YzMxMWQwYTc0MmQ5OWEuLjVkYjhhNmY5OGUxN2JjNjM3YmM4ZTQ1NjBjODM1M2ViOTVmZDVj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU3R5bGVNZWRpYTo6U3R5bGVNZWRpYShGcmFtZSogZnJhbWUpCi0g
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oCmluZGV4IDc2MDUyNDI3MTlhYTZmOWQ4Zjk4ZDljNTBh
MWE1ZTA5NjI0YTFkOTQuLjAzMjkyOWUwOGM4YmFmNmYzZDYzZjVlOGRiMzRhNDk5NDJlYjI5MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTdHls
ZU1lZGlhX2gKICNkZWZpbmUgU3R5bGVNZWRpYV9oCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9w
ZXJ0eS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApAQCAtMzQsMjQgKzM1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRnJhbWU7CiAKLWNsYXNzIFN0eWxlTWVkaWEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU1l
ZGlhPiB7CitjbGFzcyBTdHlsZU1lZGlhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNZWRpYT4s
IHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3R5bGVNZWRpYT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3R5bGVNZWRpYShmcmFtZSkpOwotICAgIH0KLQotICAgIEZyYW1lKiBm
cmFtZSgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsg
bV9mcmFtZSA9IDA7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZU1lZGlhPiBjcmVhdGUo
RnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVNZWRpYShmcmFtZSkpO30K
IAogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7Ci0KICAgICBib29sIG1hdGNoTWVkaXVtKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFN0eWxlTWVkaWEoRnJhbWUqKTsKLQot
ICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIGV4cGxpY2l0IFN0eWxlTWVkaWEoRnJhbWUqKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNzJjOWZjOTg5YjVkNDI2OTJjYjY2
MDVlN2Y1NWQzMjUyNDIyNjBhMC4uMDQyZWIzOTZmNmQyYmVkOTVkNWU5YTY1ZGM0ZTE5YjI0MTA3
M2ZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBET01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKEZyYW1lKiBmcmFt
ZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkK
IHsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNo
ZUhvc3QoKTsKICAgICBpZiAoY2FjaGVIb3N0KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIERPTUFw
cGxpY2F0aW9uQ2FjaGU6OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3QqIGNhY2hlSG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7CiAgICAgaWYgKGNhY2hlSG9z
dCkKICAgICAgICAgY2FjaGVIb3N0LT5zZXRET01BcHBsaWNhdGlvbkNhY2hlKDApOwotICAgIG1f
ZnJhbWUgPSAwOworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKIH0K
IAogQXBwbGljYXRpb25DYWNoZUhvc3QqIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IDAyMjg0MWNlNzgwZjhiOWY4OThiNzI2YTkz
ZWVmZTUwMDY5NDFjMDUuLjJjYTQ0YzFiM2JjOTgwMTQyMTMwZWFhOGY0NGQ1Mjg4OWExYTE5M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBET01BcHBsaWNhdGlvbkNhY2hl
X2gKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCisjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDEsMTMgKzQyLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKIAotY2xhc3MgRE9N
QXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+
LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RE9NQXBwbGljYXRpb25DYWNoZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IERPTUFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUpKTsgfQogICAgIH5ET01BcHBsaWNhdGlv
bkNhY2hlKCkgeyBBU1NFUlQoIW1fZnJhbWUpOyB9CiAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lKCkgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25lZCBz
aG9ydCBzdGF0dXMoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZShFeGNlcHRpb25Db2RlJik7CkBA
IC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0
b0V2ZW50VHlwZShBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBpZCk7CiAKIHByaXZhdGU6
Ci0gICAgRE9NQXBwbGljYXRpb25DYWNoZShGcmFtZSopOworICAgIGV4cGxpY2l0IERPTUFwcGxp
Y2F0aW9uQ2FjaGUoRnJhbWUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQpAQCAtODQsNyArODQsNiBAQCBwcml2YXRlOgogCiAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAKLSAgICBGcmFtZSogbV9mcmFtZTsK
ICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9C
YXJJbmZvLmNwcAppbmRleCBiNmFiNjg2MTljYjRiMTFkNmEwY2E0OTAxZDFhZTA4NTg2YmQ2M2Nk
Li4zNmIyYWQ2YTcwMmExOGNjYzRiMTk1ODc2ZjhlMjU4N2E4YWZkYzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QmFySW5mby5jcHAKQEAgLTM2LDIxICszNiwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBC
YXJJbmZvOjpCYXJJbmZvKEZyYW1lKiBmcmFtZSwgVHlwZSB0eXBlKQotICAgIDogbV9mcmFtZShm
cmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogICAgICwgbV90eXBlKHR5cGUp
CiB7CiB9CiAKLUZyYW1lKiBCYXJJbmZvOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZnJhbWU7Ci19Ci0KLXZvaWQgQmFySW5mbzo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2Zy
YW1lID0gMDsKLX0KLQogQmFySW5mbzo6VHlwZSBCYXJJbmZvOjp0eXBlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXJJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaAppbmRleCAzNzZiOGZjNmRiODhkZWRk
NTE4N2YyNTAxNDRkNmQ1MGZiNGExNWZkLi5iMzY5YjZlNGNiN2JlNWMxOTdmZDkxYTIyOThhMjZl
NWU3ODNmZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRl
ZiBCYXJJbmZvX2gKICNkZWZpbmUgQmFySW5mb19oCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9w
ZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApAQCAtMzYsMjIgKzM3LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEZyYW1lOwogCi0gICAgY2xhc3MgQmFySW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPEJh
ckluZm8+IHsKKyAgICBjbGFzcyBCYXJJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8QmFySW5mbz4s
IHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5
cGUgeyBMb2NhdGlvbmJhciwgTWVudWJhciwgUGVyc29uYWxiYXIsIFNjcm9sbGJhcnMsIFN0YXR1
c2JhciwgVG9vbGJhciB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhckluZm8+IGNy
ZWF0ZShGcmFtZSogZnJhbWUsIFR5cGUgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhcklu
Zm8oZnJhbWUsIHR5cGUpKTsgfQogCi0gICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAg
ICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotCiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwotCiAgICAgICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgQmFySW5mbyhGcmFtZSosIFR5cGUpOwotICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICAg
ICAgVHlwZSBtX3R5cGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggMDEx
Y2Q2YzQ4YzQ2MWQzODRhYzcwMjI5ZWMwODU3Zjk2ZDk5NTk3OS4uY2Y0ZTM0OTAxNzAzMDNkYjhj
NzI1YmY5OGFmNmIxZGYxM2NmNGI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC01Niw3
ICs1Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbnNvbGU6OkNvbnNvbGUoRnJhbWUq
IGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZy
YW1lKQogewogfQogCkBAIC02NCwxOCArNjQsNiBAQCBDb25zb2xlOjp+Q29uc29sZSgpCiB7CiB9
CiAKLUZyYW1lKiBDb25zb2xlOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7
Ci19Ci0KLXZvaWQgQ29uc29sZTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9tZW1v
cnkpCi0gICAgICAgIG1fbWVtb3J5ID0gMDsKLSAgICBtX2ZyYW1lID0gMDsKLX0KLQogc3RhdGlj
IHZvaWQgcHJpbnRTb3VyY2VVUkxBbmRMaW5lKGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNp
Z25lZCBsaW5lTnVtYmVyKQogewogICAgIGlmICghc291cmNlVVJMLmlzRW1wdHkoKSkgewpAQCAt
MzQ4LDEwICszMzYsOSBAQCB2b2lkIENvbnNvbGU6Ondhcm4oUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsUwogICAgIGFkZE1lc3NhZ2Uo
TG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNr
KTsKIH0KIAotTWVtb3J5SW5mbyogQ29uc29sZTo6bWVtb3J5KCkgY29uc3QKK1Bhc3NSZWZQdHI8
TWVtb3J5SW5mbz4gQ29uc29sZTo6bWVtb3J5KCkgY29uc3QKIHsKLSAgICBtX21lbW9yeSA9IE1l
bW9yeUluZm86OmNyZWF0ZShtX2ZyYW1lKTsKLSAgICByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7Cisg
ICAgcmV0dXJuIE1lbW9yeUluZm86OmNyZWF0ZShtX2ZyYW1lKTsKIH0KIAogc3RhdGljIGJvb2wg
cHJpbnRFeGNlcHRpb25zID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IDg3ZmU0MDc0
Njc0NmRhZjU4ZGYxMmIwNjIwOWViYWIxOTJmMjE0YjQuLjVhMTAwMDQ0MzRkYzlmZGQ4ZjM0MTgy
OTgxMWY4NTQ5NzFlNmIyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjZGVmaW5lIENvbnNvbGVfaAogCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCisjaW5jbHVk
ZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDgsMTQg
KzQ5LDExIEBAIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxT
Y3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAjZW5kaWYKIAotY2xhc3MgQ29uc29sZSA6
IHB1YmxpYyBSZWZDb3VudGVkPENvbnNvbGU+IHsKK2NsYXNzIENvbnNvbGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxDb25zb2xlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb25zb2xlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQ29uc29sZShmcmFtZSkpOyB9CiAgICAgdmlydHVhbCB+Q29uc29sZSgp
OwogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUo
KTsKLQogICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjayk7CiAKQEAgLTg1LDE5ICs4MywxNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpOwogCi0gICAgTWVtb3J5SW5mbyogbWVtb3J5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZW1vcnlJbmZvPiBtZW1vcnkoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBpbmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9
IGZhbHNlKTsKIAotICAgIENvbnNvbGUoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBDb25zb2xlKEZy
YW1lKik7CiAKLSAgICBGcmFtZSogbV9mcmFtZTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICAgICBQcm9maWxlc0FycmF5IG1fcHJvZmlsZXM7CiAjZW5kaWYKLSAgICBtdXRhYmxl
IFJlZlB0cjxNZW1vcnlJbmZvPiBtX21lbW9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAyM2FkMmRlMjcwOTIyMTE1
ZjQ4MzBiMWU3NmVmNTM1OGVjZDE2NTEyLi5iZmUwZmNmMmRmNzgyOTdjZWNiMzg3ZjVmZjc2Mzcx
OGI1NmVmOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC01NCwyMCAr
NTQsMTAgQEAgc3RhdGljIE5vZGUqIHNlbGVjdGlvblNoYWRvd0FuY2VzdG9yKEZyYW1lKiBmcmFt
ZSkKIH0KIAogRE9NU2VsZWN0aW9uOjpET01TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQotICAgIDog
bV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogewogfQogCi1G
cmFtZSogRE9NU2VsZWN0aW9uOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7
Ci19Ci0KLXZvaWQgRE9NU2VsZWN0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1fZnJh
bWUgPSAwOwotfQotCiBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBET01TZWxlY3Rpb246OnZpc2li
bGVTZWxlY3Rpb24oKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5oCmluZGV4IGI1ZmQxOTc2OGQyZTliZTZmMTY5NzJiMTliM2JmZjliZTFk
Y2NiNWQuLjk4MDNhY2NhMjJiYTQzYzUyNzY3ODU2YTIzOTVjNzY4YzhhN2Q3ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBET01TZWxl
Y3Rpb25faAogI2RlZmluZSBET01TZWxlY3Rpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJv
cGVydHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQzLDEzICs0NCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi0g
ICAgY2xhc3MgRE9NU2VsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NU2VsZWN0aW9uPiB7
CisgICAgY2xhc3MgRE9NU2VsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NU2VsZWN0aW9u
PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERPTVNlbGVjdGlvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IERPTVNlbGVjdGlvbihmcmFtZSkpOyB9CiAKLSAgICAgICAgRnJhbWUqIGZy
YW1lKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KICAgICAgICAg
Ly8gU2FmYXJpIFNlbGVjdGlvbiBPYmplY3QgQVBJCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMg
cmV0dXJuIHRoZSB2YWxpZCBlcXVpdmFsZW50cyBvZiBpbnRlcm5hbCBlZGl0aW5nIHBvc2l0aW9u
cy4KICAgICAgICAgTm9kZSogYmFzZU5vZGUoKSBjb25zdDsKQEAgLTkwLDEzICs4OCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZW1wdHkoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIERPTVNlbGVjdGlvbihGcmFtZSopOworICAgICAgICBleHBsaWNpdCBET01TZWxl
Y3Rpb24oRnJhbWUqKTsKIAogICAgICAgICAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGFjY2Vz
c29ycywgZG9lcyBub3QgTlVMTCBjaGVjayBtX2ZyYW1lLgogICAgICAgICBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc1Zh
bGlkRm9yUG9zaXRpb24oTm9kZSopIGNvbnN0OwotICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggYjM2MDExZTg0ZTc4NmU4NDQ5MWE1M2MxMjcxM2Q4ZDFjMjcxNWQxMi4uM2RiYmVjNjQ1
ZDQ0Y2JjZGM0ODc0NjkxZjhjZDZjMTkzYTJjZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtNDc2LDkyICs0NzYsNTMgQEAgdm9pZCBET01XaW5kb3c6OmZyYW1lRGVzdHJveWVk
KCkKICAgICBjbGVhcigpOwogfQogCit2b2lkIERPTVdpbmRvdzo6cmVnaXN0ZXJQcm9wZXJ0eShE
T01XaW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCit7CisgICAgbV9wcm9wZXJ0aWVzLmFkZChwcm9w
ZXJ0eSk7Cit9CisKK3ZvaWQgRE9NV2luZG93Ojp1bnJlZ2lzdGVyUHJvcGVydHkoRE9NV2luZG93
UHJvcGVydHkqIHByb3BlcnR5KQoreworICAgIG1fcHJvcGVydGllcy5yZW1vdmUocHJvcGVydHkp
OworfQorCiB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogewotICAgIGlmIChtX3NjcmVlbikKLSAg
ICAgICAgbV9zY3JlZW4tPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fc2NyZWVuID0gMDsKKyAg
ICBIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRp
ZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9y
IGl0ID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCisgICAgICAgICgq
aXQpLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKIAotICAg
IGlmIChtX3NlbGVjdGlvbikKLSAgICAgICAgbV9zZWxlY3Rpb24tPmRpc2Nvbm5lY3RGcmFtZSgp
OworICAgIG1fc2NyZWVuID0gMDsKICAgICBtX3NlbGVjdGlvbiA9IDA7Ci0KLSAgICBpZiAobV9o
aXN0b3J5KQotICAgICAgICBtX2hpc3RvcnktPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1faGlz
dG9yeSA9IDA7Ci0KICAgICBtX2NyeXB0byA9IDA7Ci0KLSAgICBpZiAobV9sb2NhdGlvbmJhcikK
LSAgICAgICAgbV9sb2NhdGlvbmJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9sb2NhdGlv
bmJhciA9IDA7Ci0KLSAgICBpZiAobV9tZW51YmFyKQotICAgICAgICBtX21lbnViYXItPmRpc2Nv
bm5lY3RGcmFtZSgpOwogICAgIG1fbWVudWJhciA9IDA7Ci0KLSAgICBpZiAobV9wZXJzb25hbGJh
cikKLSAgICAgICAgbV9wZXJzb25hbGJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9wZXJz
b25hbGJhciA9IDA7Ci0KLSAgICBpZiAobV9zY3JvbGxiYXJzKQotICAgICAgICBtX3Njcm9sbGJh
cnMtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fc2Nyb2xsYmFycyA9IDA7Ci0KLSAgICBpZiAo
bV9zdGF0dXNiYXIpCi0gICAgICAgIG1fc3RhdHVzYmFyLT5kaXNjb25uZWN0RnJhbWUoKTsKICAg
ICBtX3N0YXR1c2JhciA9IDA7Ci0KLSAgICBpZiAobV90b29sYmFyKQotICAgICAgICBtX3Rvb2xi
YXItPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fdG9vbGJhciA9IDA7Ci0KLSAgICBpZiAobV9j
b25zb2xlKQotICAgICAgICBtX2NvbnNvbGUtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fY29u
c29sZSA9IDA7Ci0KLSAgICBpZiAobV9uYXZpZ2F0b3IpCi0gICAgICAgIG1fbmF2aWdhdG9yLT5k
aXNjb25uZWN0RnJhbWUoKTsKICAgICBtX25hdmlnYXRvciA9IDA7Ci0KICNpZiBFTkFCTEUoV0VC
X1RJTUlORykKLSAgICBpZiAobV9wZXJmb3JtYW5jZSkKLSAgICAgICAgbV9wZXJmb3JtYW5jZS0+
ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9wZXJmb3JtYW5jZSA9IDA7CiAjZW5kaWYKLQotICAg
IGlmIChtX2xvY2F0aW9uKQotICAgICAgICBtX2xvY2F0aW9uLT5kaXNjb25uZWN0RnJhbWUoKTsK
ICAgICBtX2xvY2F0aW9uID0gMDsKLQotICAgIGlmIChtX21lZGlhKQotICAgICAgICBtX21lZGlh
LT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX21lZGlhID0gMDsKLQotICAgIGlmIChtX3Nlc3Np
b25TdG9yYWdlKQotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlLT5kaXNjb25uZWN0RnJhbWUoKTsK
ICAgICBtX3Nlc3Npb25TdG9yYWdlID0gMDsKLQotICAgIGlmIChtX2xvY2FsU3RvcmFnZSkKLSAg
ICAgICAgbV9sb2NhbFN0b3JhZ2UtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbG9jYWxTdG9y
YWdlID0gMDsKLQotICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGUpCi0gICAgICAgIG1fYXBwbGlj
YXRpb25DYWNoZS0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlID0g
MDsKLQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIC8vIEZJWE1FOiBOb3RpZmljYXRp
b25zIHNob3VsZCB3b3JrIGxpa2UgdGhlIG90aGVyIHByb3BlcnRpZXMuCiAgICAgcmVzZXROb3Rp
ZmljYXRpb25zKCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
IG1faWRiRmFjdG9yeSA9IDA7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShCTE9CKQogICAgIG1fZG9t
VVJMID0gMDsKICNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQogICAgIG1fc3RvcmFnZUluZm8g
PSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0Yzg2ZjgwYjg4ZTAzNGZj
NzMyYTJlMTNjMzk5ZjRlNDk0NGI3NmQyLi42YmQyYjcwZmYzMzMxNWFlZjdmOTYzMTA1MTI3M2Mz
NjYxMDBlZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xh
c3MgRE9NU2VsZWN0aW9uOwogICAgIGNsYXNzIERPTVVSTDsKKyAgICBjbGFzcyBET01XaW5kb3dQ
cm9wZXJ0eTsKICAgICBjbGFzcyBEYXRhYmFzZTsKICAgICBjbGFzcyBEYXRhYmFzZUNhbGxiYWNr
OwogICAgIGNsYXNzIERvY3VtZW50OwpAQCAtOTMsNiArOTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAK
KyAgICAgICAgdm9pZCByZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5Kik7CisgICAg
ICAgIHZvaWQgdW5yZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5Kik7CisKICAgICAg
ICAgdm9pZCBjbGVhcigpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IG1h
dGNoTWVkaWEoY29uc3QgU3RyaW5nJik7CkBAIC00MzcsNiArNDQxLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBLVVJMIG1fdXJsOwogCiAgICAgICAgIGJvb2wgbV9zaG91bGRQcmlu
dFdoZW5GaW5pc2hlZExvYWRpbmc7CisKKyAgICAgICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0
eSo+IG1fcHJvcGVydGllczsKKwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTY3JlZW4+IG1fc2Ny
ZWVuOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01TZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxIaXN0b3J5PiBtX2hpc3Rvcnk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uY3BwCmluZGV4IDFkYWVhNzQ0OTZlNjhjNTBjMTM2OGNjMmQyOTRlMDdlMTk5
Nzg4MDQuLmJiMjg1YzVjNTZlNWJkNTBiOTJjZDEwMGI3MDNhMGQ2YjgxY2I1ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBHZW9sb2Nh
dGlvbjo6V2F0Y2hlcnM6OmdldE5vdGlmaWVyc1ZlY3RvcihHZW9Ob3RpZmllclZlY3RvciYgY29w
eSkgY29uc3QKIH0KIAogR2VvbG9jYXRpb246Okdlb2xvY2F0aW9uKEZyYW1lKiBmcmFtZSkKLSAg
ICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKICNpZiAh
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAsIG1fc2VydmljZShHZW9sb2Nh
dGlvblNlcnZpY2U6OmNyZWF0ZSh0aGlzKSkKICNlbmRpZgpAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgcmVzZXQoKTsKICAgICBpZiAo
bV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZXRVc2luZ0dlb2xvY2F0aW9uKGZhbHNlKTsKLSAgICBtX2ZyYW1lID0gMDsKKyAgICBE
T01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CiB9CiAKIEdlb3Bvc2l0aW9uKiBH
ZW9sb2NhdGlvbjo6bGFzdFBvc2l0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAppbmRl
eCBiMjdkODBiOTg2MTM2MDRlZmIyZDBjYmE4YThmMTQ2Mjg4Yjc1OWY2Li5lYTU1Y2JmMWYyMDM2
OGE5M2I3OWY2MDE3ZDA0OTUzMGE1OGU3YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEdlb2xvY2F0aW9uX2gKICNkZWZpbmUgR2VvbG9j
YXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJHZW9w
b3NpdGlvbi5oIgogI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJQb3Np
dGlvbkVycm9yLmgiCkBAIC00NywyNSArNDgsMjMgQEAgY2xhc3MgR2VvbG9jYXRpb25FcnJvcjsK
ICNlbmRpZgogY2xhc3MgUGFnZTsKIAotY2xhc3MgR2VvbG9jYXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxHZW9sb2NhdGlvbj4KK2NsYXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
R2VvbG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkKICNpZiAhRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgcHVibGlj
IEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAogI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBHZW9sb2NhdGlvbihmcmFtZSkpOyB9Ci0KICAgICB+R2VvbG9jYXRpb24oKTsK
IAorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKICAgICB2b2lk
IHJlc2V0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLSAgICAKKwogICAgIHZvaWQg
Z2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+KTsK
ICAgICBpbnQgd2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25z
Pik7CiAgICAgdm9pZCBjbGVhcldhdGNoKGludCB3YXRjaElkKTsKIAogICAgIHZvaWQgc2V0SXNB
bGxvd2VkKGJvb2wpOwotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7
IH0KIAogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgdm9pZCBwb3Np
dGlvbkNoYW5nZWQoKTsKQEAgLTc5LDggKzc4LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNB
bGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0dlb2xvY2F0aW9uID09IFllczsgfQogICAg
IGJvb2wgaXNEZW5pZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93R2VvbG9jYXRpb24gPT0gTm87
IH0KLSAgICAKLSAgICBHZW9sb2NhdGlvbihGcmFtZSopOworCisgICAgZXhwbGljaXQgR2VvbG9j
YXRpb24oRnJhbWUqKTsKIAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKIApAQCAtMTcyLDcgKzE3
MSw2IEBAIHByaXZhdGU6CiAKICAgICBHZW9Ob3RpZmllclNldCBtX29uZVNob3RzOwogICAgIFdh
dGNoZXJzIG1fd2F0Y2hlcnM7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiAjaWYgIUVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgT3duUHRyPEdlb2xvY2F0aW9uU2VydmljZT4gbV9z
ZXJ2aWNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCBjYmZjMmJiZGM3MDI4
OTlkN2RlNDM2MDNjZWExNWUwYWVhNTU2NzIzLi4xZjVhMzlmMjg3NTg0ZjdjMjc0OGIzM2UxMDk5
ZTY2NGQxOTJhZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTQxLDIwICs0MSwxMCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIaXN0b3J5OjpIaXN0b3J5KEZyYW1lKiBmcmFtZSkK
LSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsK
IH0KIAotRnJhbWUqIEhpc3Rvcnk6OmZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcmFt
ZTsKLX0KLQotdm9pZCBIaXN0b3J5OjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1fZnJhbWUg
PSAwOwotfQotCiB1bnNpZ25lZCBIaXN0b3J5OjpsZW5ndGgoKSBjb25zdAogewogICAgIGlmICgh
bV9mcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggOWVjMTkxNGIzOTM1ODcwNTYwNzhlMmY5
Zjg2ZTc2ZjgyOGIxMDZhNi4uYmQ1MGZjY2QyYjg2MWQ5ZTY0MThlOTc0ZjQyZGZiMmIyYjVmOTFj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSGlzdG9y
eV9oCiAjZGVmaW5lIEhpc3RvcnlfaAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzgsMTIgKzM5LDkgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLWNsYXNzIEhpc3RvcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiB7
CitjbGFzcyBIaXN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeT4sIHB1YmxpYyBET01X
aW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeT4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhpc3RvcnkoZnJhbWUp
KTsgfQotICAgIAotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIHZvaWQgZGlzY29ubmVj
dEZyYW1lKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIGJhY2so
KTsKQEAgLTYxLDExICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRlT2JqZWN0QWRkZWQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgU3RhdGVPYmplY3RUeXBlLCBFeGNlcHRpb25Db2RlJik7CiAKIHBy
aXZhdGU6Ci0gICAgSGlzdG9yeShGcmFtZSopOworICAgIGV4cGxpY2l0IEhpc3RvcnkoRnJhbWUq
KTsKIAogICAgIEtVUkwgdXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0gICAgRnJh
bWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwCmluZGV4IGNhNmY5OTg3NTQ5Y2Y3MzZjMWI5MzMyZWU3MjVmYWE2ZThiODU4Y2Mu
LjFhMmQyZGI5OWNiOTJiZTBlMzIxZTMyMDdkNDBmNTEyMDI0N2ZhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCkBAIC00MCwxNSArNDAsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TG9jYXRpb246OkxvY2F0aW9uKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAotdm9pZCBMb2NhdGlvbjo6ZGlz
Y29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0gMDsKLX0KLQogaW5saW5lIGNvbnN0IEtV
UkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uaAppbmRleCAzYTEwNDdhNjE3MDM3YTk3YTRmOWJjODgyYzU3ZTU0MDE5M2Mz
MTE2Li5iODgyNjcxYThhZDYxODgyMzhiZThiNWJkZjk5NWUxNzRiYjIzOGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIExvY2F0aW9uX2gKICNkZWZp
bmUgTG9jYXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxMyArNDIsMTAgQEAgY2xhc3MgS1VSTDsK
IAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxMb2NhdGlvbj4geworY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgUmVmQ291bnRl
ZDxMb2NhdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBMb2NhdGlvbihmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAg
IHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9N
V2luZG93KiBmaXJzdFdpbmRvdyk7CiAgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsKIApAQCAtNzQs
MTEgKzcyLDkgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IGhyZWYoKTsgfQogCiBwcml2YXRlOgotICAgIExvY2F0aW9uKEZyYW1lKik7CisgICAgZXhwbGlj
aXQgTG9jYXRpb24oRnJhbWUqKTsKIAogICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotCi0g
ICAgRnJhbWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAKaW5kZXggNDkyNjYzMmVlMzYzNmY1YTU1NGYxNTMxNDBhMjU1MmVh
NjJmN2M0YS4uYzM1ZTk5NDk2MWM1MGE4MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNTksMTMgKzU5LDEyIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIE5hdmlnYXRvcjo6TmF2aWdhdG9yKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJh
bWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAogTmF2aWdh
dG9yOjp+TmF2aWdhdG9yKCkKIHsKLSAgICBkaXNjb25uZWN0RnJhbWUoKTsKIH0KIAogdm9pZCBO
YXZpZ2F0b3I6OnJlc2V0R2VvbG9jYXRpb24oKQpAQCAtNzQsMjMgKzczLDYgQEAgdm9pZCBOYXZp
Z2F0b3I6OnJlc2V0R2VvbG9jYXRpb24oKQogICAgICAgICBtX2dlb2xvY2F0aW9uLT5yZXNldCgp
OwogfQogCi12b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9w
bHVnaW5zKSB7Ci0gICAgICAgIG1fcGx1Z2lucy0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAg
IG1fcGx1Z2lucyA9IDA7Ci0gICAgfQotICAgIGlmIChtX21pbWVUeXBlcykgewotICAgICAgICBt
X21pbWVUeXBlcy0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbWltZVR5cGVzID0gMDsK
LSAgICB9Ci0gICAgaWYgKG1fZ2VvbG9jYXRpb24pIHsKLSAgICAgICAgbV9nZW9sb2NhdGlvbi0+
ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fZ2VvbG9jYXRpb24gPSAwOwotICAgIH0KLSAg
ICBtX2ZyYW1lID0gMDsKLX0KLQogLy8gSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHdl
IG5lZWQgdG8gaGlkZSB0aGUgc3Vic3RyaW5nICI0LiIgdGhhdCB3b3VsZCBvdGhlcndpc2UKIC8v
IGFwcGVhciBpbiB0aGUgYXBwVmVyc2lvbiBzdHJpbmcuIFRoaXMgaXMgdG8gYXZvaWQgcHJvYmxl
bXMgd2l0aCBvbGQgdmVyc2lvbnMgb2YgYQogLy8gbGlicmFyeSBjYWxsZWQgT3BlbkN1YmUgUXVp
Y2tNZW51LCB3aGljaCBhcyBvZiB0aGlzIHdyaXRpbmcgaXMgc3RpbGwgYmVpbmcgdXNlZCBvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggODRmMzBiZGUzOWMxZDAzMGYwYzAzNjMyZTA1Y2Q4
ZjUzZjA4ZTJkZi4uMDdjOWQyYjRiMjVjYWQzNTlmMGQ4YmQwZTdmZTk4ZmY3Njk3ZmViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIE5hdmlnYXRv
cl9oCiAjZGVmaW5lIE5hdmlnYXRvcl9oCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00MCwxNCArNDEsMTIgQEAgY2xhc3MgUGx1
Z2luRGF0YTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTmF2aWdhdG9y
IDogcHVibGljIE5hdmlnYXRvckJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPE5hdmlnYXRvcj4gewor
Y2xhc3MgTmF2aWdhdG9yIDogcHVibGljIE5hdmlnYXRvckJhc2UsIHB1YmxpYyBSZWZDb3VudGVk
PE5hdmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TmF2aWdhdG9yPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgTmF2aWdhdG9yKGZyYW1lKSk7IH0KICAgICB2aXJ0dWFsIH5OYXZpZ2F0b3Io
KTsKIAogICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbigpOwotICAgIHZvaWQgZGlzY29ubmVjdEZy
YW1lKCk7Ci0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiAg
ICAgU3RyaW5nIGFwcFZlcnNpb24oKSBjb25zdDsKICAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dDsKQEAgLTgxLDggKzgwLDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmF2
aWdhdG9yKEZyYW1lKik7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CisgICAgZXhwbGljaXQgTmF2aWdh
dG9yKEZyYW1lKik7CisKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVn
aW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwog
ICAgIG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA0ZTEzMGVhOGYxNDA3Y2YyNDg0Y2VhMjQ2NmJjYmU2
YmQwYTE1MGUwLi4zNmRkY2QyNDJhM2E0ZDExOGYwZDE0YTAzYTBlMTZmNDgxMTdlYzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtNDIsMzQgKzQyLDEzIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBlcmZvcm1hbmNlOjpQZXJmb3JtYW5jZShGcmFtZSogZnJhbWUpCi0g
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9
CiAKLUZyYW1lKiBQZXJmb3JtYW5jZTo6ZnJhbWUoKSBjb25zdAorUGFzc1JlZlB0cjxNZW1vcnlJ
bmZvPiBQZXJmb3JtYW5jZTo6bWVtb3J5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZTsK
LX0KLQotdm9pZCBQZXJmb3JtYW5jZTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9t
ZW1vcnkpCi0gICAgICAgIG1fbWVtb3J5ID0gMDsKLSAgICBpZiAobV9uYXZpZ2F0aW9uKSB7Ci0g
ICAgICAgIG1fbmF2aWdhdGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbmF2aWdh
dGlvbiA9IDA7Ci0gICAgfQotICAgIGlmIChtX3RpbWluZykgewotICAgICAgICBtX3RpbWluZy0+
ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fdGltaW5nID0gMDsKLSAgICB9Ci0gICAgbV9m
cmFtZSA9IDA7Ci19Ci0KLU1lbW9yeUluZm8qIFBlcmZvcm1hbmNlOjptZW1vcnkoKSBjb25zdAot
ewotICAgIG1fbWVtb3J5ID0gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVy
biBtX21lbW9yeS5nZXQoKTsKKyAgICByZXR1cm4gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUp
OwogfQogCiBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIFBlcmZvcm1hbmNlOjpuYXZpZ2F0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCBiZTllMTI0ZTBlZWZhNTdjNzFi
ZDAzNDFkOTEzODlhMjgyZTM3OTQyLi43ODI2MzYwNWU1YWM4NGQzMWU3YzYxODUyZjE4YzQ4MzA5
Yjc4OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlVGltaW5nLmgiCkBAIC00MiwyNyArNDMsMjMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQZXJmb3JtYW5jZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFBlcmZvcm1hbmNlPiB7CitjbGFzcyBQZXJmb3JtYW5jZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBlcmZvcm1hbmNlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQZXJmb3JtYW5jZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBlcmZvcm1hbmNlKGZyYW1lKSk7IH0KIAotICAgIEZyYW1lKiBm
cmFtZSgpIGNvbnN0OwotICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KLSAgICBNZW1vcnlJ
bmZvKiBtZW1vcnkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE1lbW9yeUluZm8+IG1lbW9yeSgp
IGNvbnN0OwogICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiogbmF2aWdhdGlvbigpIGNvbnN0Owog
ICAgIFBlcmZvcm1hbmNlVGltaW5nKiB0aW1pbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBQ
ZXJmb3JtYW5jZShGcmFtZSopOworICAgIGV4cGxpY2l0IFBlcmZvcm1hbmNlKEZyYW1lKik7CiAK
LSAgICBtdXRhYmxlIFJlZlB0cjxNZW1vcnlJbmZvPiBtX21lbW9yeTsKICAgICBtdXRhYmxlIFJl
ZlB0cjxQZXJmb3JtYW5jZU5hdmlnYXRpb24+IG1fbmF2aWdhdGlvbjsKICAgICBtdXRhYmxlIFJl
ZlB0cjxQZXJmb3JtYW5jZVRpbWluZz4gbV90aW1pbmc7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiB9
OwogCiB9CiAKLSNlbmRpZiAvLyAhRU5BQkxFKFdFQl9USU1JTkcpCi0jZW5kaWYgLy8gIWRlZmlu
ZWQoUGVyZm9ybWFuY2VfaCkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKKworI2VuZGlm
IC8vIFBlcmZvcm1hbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uLmNwcAppbmRleCA2NjNlOTQyYTFiYmNiMzA2YjM1MWZiMjY5MmU0N2IyODUwZTNkMmUw
Li5kNzY0YjYyMGJkNWMyN2IwYTdjNjNjYWE2NjY1ZDczZjliODE2YzEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCkBAIC00MCwyMCArNDAsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpQZXJmb3Jt
YW5jZU5hdmlnYXRpb24oRnJhbWUqIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6
IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogewogfQogCi1GcmFtZSogUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7Ci19Ci0KLXZvaWQg
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1fZnJhbWUg
PSAwOwotfQotCiB1bnNpZ25lZCBzaG9ydCBQZXJmb3JtYW5jZU5hdmlnYXRpb246OnR5cGUoKSBj
b25zdAogewogICAgIGlmICghbV9mcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTmF2aWdhdGlvbi5oCmluZGV4IGJkZjZlYWE5M2ExNGRiY2Y3Yjc4ODE0OTlmNTI5NzdmYjM5
ODQ5YjUuLmYzOTc5MjNlNmE5ZGI0NGIwZWYzNDdjNTQwMjA0YmE4YTZlOGIxZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaApAQCAtMzMsNiArMzMsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0
eS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIApAQCAtNDAsMTMgKzQxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RnJhbWU7CiAKLWNsYXNzIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFBlcmZvcm1hbmNlTmF2aWdhdGlvbj4geworY2xhc3MgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiwgcHVibGljIERPTVdpbmRv
d1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZXJmb3JtYW5jZU5h
dmlnYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZXJm
b3JtYW5jZU5hdmlnYXRpb24oZnJhbWUpKTsgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7
Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIGVudW0gUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uVHlwZSB7CiAgICAgICAgIFRZUEVfTkFWSUdBVEUsCiAgICAgICAgIFRZUEVfUkVMT0FE
LApAQCAtNTgsOSArNTYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgcmVkaXJlY3RD
b3VudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvbihGcmFt
ZSopOwotCi0gICAgRnJhbWUqIG1fZnJhbWU7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uKEZyYW1lKik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VU
aW1pbmcuY3BwCmluZGV4IGJkY2UwN2U3MzMwOTFjZTRkNjZmNDcwYTY3NDNkZGZiNjE5YzcxMzMu
LjZhNDUyNGIwOTViNzY5OGJlZTcyNzJmMjE4YmIwNjRlMWM5YWRkNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC01MSwyMCArNTEsMTAgQEAgc3RhdGlj
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlIHNlY29uZHMp
CiB9CiAKIFBlcmZvcm1hbmNlVGltaW5nOjpQZXJmb3JtYW5jZVRpbWluZyhGcmFtZSogZnJhbWUp
Ci0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7
CiB9CiAKLUZyYW1lKiBQZXJmb3JtYW5jZVRpbWluZzo6ZnJhbWUoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2ZyYW1lOwotfQotCi12b2lkIFBlcmZvcm1hbmNlVGltaW5nOjpkaXNjb25uZWN0RnJh
bWUoKQotewotICAgIG1fZnJhbWUgPSAwOwotfQotCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6Om5hdmlnYXRpb25TdGFydCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnRMb2Fk
VGltaW5nKiB0aW1pbmcgPSBkb2N1bWVudExvYWRUaW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VUaW1pbmcuaAppbmRleCA1MmFiZDU1YWQ2MzFkZmIyMzA0NTNhNTVjZjcwNTIw
MjA3ZTczM2EzLi4zMGI4MGI5NjdhZjRiODUxYTg3Y2ZlNWYyOGNiNDczOGU4MzE0YzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5Lmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCkBAIC00NCwxMyArNDUsMTAgQEAgc3RydWN0IERvY3VtZW50VGltaW5nOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7CiAKLWNsYXNzIFBlcmZvcm1hbmNlVGltaW5n
IDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+IHsKK2NsYXNzIFBlcmZvcm1h
bmNlVGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+LCBwdWJsaWMg
RE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlcmZv
cm1hbmNlVGltaW5nPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
UGVyZm9ybWFuY2VUaW1pbmcoZnJhbWUpKTsgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7
Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
YXZpZ2F0aW9uU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5sb2FkRXZl
bnRTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bmxvYWRFdmVudEVuZCgp
IGNvbnN0OwpAQCAtNzQsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGxvYWRFdmVudEVuZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFBlcmZvcm1hbmNlVGltaW5n
KEZyYW1lKik7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VUaW1pbmcoRnJhbWUqKTsKIAogICAg
IGNvbnN0IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZygpIGNvbnN0OwogICAgIERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0OwpAQCAtODIsOCArODAsNiBAQCBwcml2
YXRlOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1
dGUoaW50KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50
ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwotCi0gICAgRnJhbWUqIG1fZnJhbWU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAKaW5kZXggZGY4OGZhNGU5Yjg2NTYwOGFiM2IwNzQw
ZDdhZjRhMDZmNTJlZTc1Yi4uYjAyMWU1ZjE3OGE0ZmY1ODhjMmE5MTM4MzdlZDRkNjcxZjBiMTA2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcApAQCAtMzksMjAgKzM5LDEwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNjcmVlbjo6U2NyZWVuKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUo
ZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAotRnJhbWUqIFNj
cmVlbjo6ZnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1lOwotfQotCi12b2lkIFNj
cmVlbjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0gMDsKLX0KLQogdW5zaWdu
ZWQgU2NyZWVuOjpob3Jpem9udGFsRFBJKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TY3JlZW4uaAppbmRleCBkMDg0ZGI3ODgzMTgxNmRiZjRhNmFiMTgzMjg0OWI0NjFmNzA3
YjYxLi4yNjI0ZjFhMTNlMGQ3NGY5MGZhN2RmZmU3MTE3ZDMyYjQ4YzI3MmIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2NyZWVuLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgU2NyZWVuX2gKICNkZWZpbmUgU2Ny
ZWVuX2gKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNywxMyArMzgs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWU7CiAKLSAgICBjbGFz
cyBTY3JlZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JlZW4+IHsKKyAgICBjbGFzcyBTY3JlZW4g
OiBwdWJsaWMgUmVmQ291bnRlZDxTY3JlZW4+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyZWVuPiBjcmVhdGUoRnJh
bWUgKmZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2NyZWVuKGZyYW1lKSk7IH0KIAotICAg
ICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUo
KTsKLQogICAgICAgICB1bnNpZ25lZCBob3Jpem9udGFsRFBJKCkgY29uc3Q7CiAgICAgICAgIHVu
c2lnbmVkIHZlcnRpY2FsRFBJKCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIGhlaWdodCgpIGNv
bnN0OwpAQCAtNTYsOSArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2ln
bmVkIGF2YWlsV2lkdGgoKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmVlbihG
cmFtZSopOwotICAgICAgICAKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgICAgIGV4cGxp
Y2l0IFNjcmVlbihGcmFtZSopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCmluZGV4IDgyZDQwMDY0
YjVhYjJjYTkzMTg5MzJmODg1Y2JhZjZlMDI3ODc4MzEuLmQzOWU5ZjE1NWMxNDhkNTFlZjU5OTgx
NGY2MGVkY2ZiMDAzNGZlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
TWltZVR5cGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlw
ZUFycmF5LmNwcApAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01N
aW1lVHlwZUFycmF5OjpET01NaW1lVHlwZUFycmF5KEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJh
bWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAppbmRleCA1NGZmZjdiZjRkYTIzN2Mz
MGEzOTY2OGY0ODAxNWFjZWZkNjUxM2NlLi4yNWMyNzZkMzg3ZjRlMjZjODQ1MGU0NzZkN2M5ZjA0
M2ExOTRjMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBl
QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaApA
QCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01NaW1lVHlwZUFycmF5X2gKIAogI2luY2x1ZGUg
IkRPTU1pbWVUeXBlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTMyLDI0ICszMywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBsdWdpbkRhdGE7CiAKLWNsYXNzIERPTU1pbWVUeXBlQXJy
YXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1lVHlwZUFycmF5PiB7CitjbGFzcyBET01NaW1l
VHlwZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NTWltZVR5cGVBcnJheT4sIHB1YmxpYyBE
T01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NTWlt
ZVR5cGVBcnJheT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERP
TU1pbWVUeXBlQXJyYXkoZnJhbWUpKTsgfQogICAgIH5ET01NaW1lVHlwZUFycmF5KCk7CiAKLSAg
ICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAgICBi
b29sIGNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7
CiAgICAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBET01NaW1lVHlwZUFycmF5KEZyYW1l
Kik7CisgICAgZXhwbGljaXQgRE9NTWltZVR5cGVBcnJheShGcmFtZSopOwogICAgIFBsdWdpbkRh
dGEqIGdldFBsdWdpbkRhdGEoKSBjb25zdDsKLQotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW5BcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmNwcAppbmRleCA3NjZjM2ViM2QwZDFlYTYzYzFjMGY4NmZmMWMzZGUxYzQ2ZTAzOTkwLi5j
OGE1M2E1NzkwMjgyMDRkOTExMmY5NGZmOGJjZGIzMTAxMjBmZjdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcApAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkoRnJhbWUqIGZyYW1l
KQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgKaW5kZXggMGIxZjJi
YTk4YmI4OWIxY2MxZTk2MzU5NDI2ZGM0M2IyZGNmYzM5Mi4uNmMzNTQ1NzIxNGU5MjFjMWUwMjA3
NGU5YWRmMzZkOTlkYjY5Y2Q4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01QbHVnaW5BcnJheV9oCiAKICNpbmNs
dWRlICJET01QbHVnaW4uaCIKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzIsMTQgKzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGx1Z2luRGF0YTsKIAotY2xhc3MgRE9NUGx1Z2luQXJy
YXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5BcnJheT4geworY2xhc3MgRE9NUGx1Z2lu
QXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5BcnJheT4sIHB1YmxpYyBET01XaW5k
b3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NUGx1Z2luQXJy
YXk+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01QbHVnaW5B
cnJheShmcmFtZSkpOyB9CiAgICAgfkRPTVBsdWdpbkFycmF5KCk7CiAKLSAgICBGcmFtZSogZnJh
bWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1f
ZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPERPTVBsdWdpbj4gaXRlbSh1bnNpZ25lZCBpbmRleCk7CiAgICAgYm9vbCBjYW5HZXRJdGVt
c0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwpAQCAtNDgsMTAgKzQ2
LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaChib29sIHJlbG9hZCk7CiAKIHByaXZhdGU6
Ci0gICAgRE9NUGx1Z2luQXJyYXkoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBET01QbHVnaW5BcnJh
eShGcmFtZSopOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEoKSBjb25zdDsKLQotICAgIEZy
YW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5jcHAKaW5kZXggNWJhNDYwMmZiZDZjNDYyNTk1ZmMwMzEyYjZmNjM1ZDkzMmI3
YThkMi4uMjYwZWY0Zjc0MGM0YWRjYWNlYzMxODU1YmI0ZDA4ZTkwYzhiZjZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8U3RvcmFn
ZT4gU3RvcmFnZTo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4g
c3RvcmFnCiB9CiAKIFN0b3JhZ2U6OlN0b3JhZ2UoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01X
aW5kb3dQcm9wZXJ0eShmcmFtZSkKICAgICAsIG1fc3RvcmFnZUFyZWEoc3RvcmFnZUFyZWEpCiB7
CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCAyMTli
YzU1YjlhNzQ5YzE2YzMwYWUxYjE2ODk1ZGJhYTE4MWQyZTE3Li45OGYwNDFlYzAyNWE0NjA1OGU5
ZjFiMzgzMjdjZjMwY2RjN2ZkMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBTdG9yYWdlX2gKICNkZWZpbmUgU3RvcmFnZV9oCiAKKyNpbmNs
dWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTdG9yYWdlQXJlYTsKICAg
ICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi0gICAgY2xhc3MgU3RvcmFnZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0b3JhZ2U+IHsKKyAgICBjbGFzcyBTdG9yYWdlIDogcHVibGljIFJlZkNv
dW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlPiBjcmVhdGUoRnJhbWUqLCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPik7CiAgICAgICAgIH5TdG9yYWdlKCk7CkBAIC01MCwxMyArNTEsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3Q7CiAKLSAgICAgICAgRnJhbWUqIGZyYW1lKCkgeyByZXR1cm4gbV9mcmFt
ZTsgfQotICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KLQog
ICAgIHByaXZhdGU6CiAgICAgICAgIFN0b3JhZ2UoRnJhbWUqLCBQYXNzUmVmUHRyPFN0b3JhZ2VB
cmVhPik7CiAKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121541</attachid>
            <date>2012-01-06 23:34:02 -0800</date>
            <delta_ts>2012-01-06 23:38:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75699-20120106233401.patch</filename>
            <type>text/plain</type>
            <size>49121</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEyLTAxLTA2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzY29ubmVjdGluZyBET01XaW5k
b3cgcHJvcGVydGllcyBpcyBmcmFnaWxlIGFuZCBvdmVybHkgY29tcGxpY2F0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBQcmV2aW91c2x5LCB3
ZSBoYWQgdG8gY2FyZWZ1bGx5IGNoZWNrIGV2ZXJ5IG9iamVjdCB0cmVlIGhhbmdpbmcgb2ZmIG9m
CisgICAgICAgIERPTVdpbmRvdyB0byBtYWtlIHN1cmUgdGhhdCBldmVyeSBwcm9wZXJ0eSBjb3Jy
ZWN0bHkgZGlzY29ubmVjdGVkCisgICAgICAgIGl0c2VsZiBhbmQgYWxsIGl0cyBzdWJvYmplY3Rz
IGZyb20gdGhlIEZyYW1lIHdoZW4gdGhlIERPTVdpbmRvdworICAgICAgICBkaXNjb25uZWN0ZWQg
ZnJvbSB0aGUgRnJhbWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIERPTVdpbmRv
d1Byb3BlcnR5LCB3aGljaCBpcyBhIGJhc2UgY2xhc3MgdGhhdAorICAgICAgICBoYW5kbGVzIHRo
aXMgd29yayBhdXRvbWFnaWNhbGx5LCBlbnN1cmluZyB0aGF0IHdlIHdvbid0IGhhdmUgYW55Cisg
ICAgICAgIGRhbmdsaW5nIEZyYW1lIHBvaW50ZXJzIGFuZCByZW1vdmluZyBhIGJ1bmNoIG9mIGJv
aWxlcnBsYXRlIGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTWVkaWE6
OlN0eWxlTWVkaWEpOgorICAgICAgICAqIGNzcy9TdHlsZU1lZGlhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZU1lZGlhOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2Fj
aGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRp
b25DYWNoZTo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9N
QXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAqIHBhZ2UvQmFySW5mby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCYXJJbmZvOjpCYXJJbmZvKToKKyAgICAgICAgKiBwYWdlL0JhckluZm8uaDoK
KyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6
Q29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjptZW1vcnkpOgorICAgICAgICAq
IHBhZ2UvQ29uc29sZS5oOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdl
L0RPTVNlbGVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnVucmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBh
Z2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb2xv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUp
OgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL0hpc3Rvcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6SGlzdG9yeSk6CisgICAgICAgICogcGFn
ZS9IaXN0b3J5Lmg6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhdGlvbjo6TG9jYXRpb24pOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaDoKKyAg
ICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6
Ok5hdmlnYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6On5OYXZpZ2F0b3IpOgor
ICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6UGVyZm9ybWFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lbW9yeSk6CisgICAgICAgICogcGFnZS9QZXJmb3Jt
YW5jZS5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9u
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oOgorICAgICAgICAqIHBh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGlt
aW5nLmg6CisgICAgICAgICogcGFnZS9TY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
ZWVuOjpTY3JlZW4pOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmg6CisgICAgICAgICogcGx1Z2lu
cy9ET01NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJy
YXk6OkRPTU1pbWVUeXBlQXJyYXkpOgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGVBcnJh
eS5oOgorICAgICAgICAqIHBsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUGx1Z2luQXJyYXk6OkRPTVBsdWdpbkFycmF5KToKKyAgICAgICAgKiBwbHVnaW5z
L0RPTVBsdWdpbkFycmF5Lmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2U6OlN0b3JhZ2UpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZS5oOgorCiAyMDEyLTAxLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA0MzczIGFuZCByMTA0
Mzc0LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05ODksNiArOTg5LDcg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcAogICAgIHBh
Z2UvRE9NVGltZXIuY3BwCiAgICAgcGFnZS9ET01XaW5kb3cuY3BwCisgICAgcGFnZS9ET01XaW5k
b3dQcm9wZXJ0eS5jcHAKICAgICBwYWdlL0RyYWdDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcAogICAgIHBhZ2UvRXZlbnRTb3VyY2UuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NDYsNiArMjY0Niw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xp
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBh
Z2UvRE9NU2VsZWN0aW9uLmNwcCBcCiAgICAgcGFnZS9ET01UaW1lci5jcHAgXAogICAgIHBhZ2Uv
RE9NV2luZG93LmNwcCBcCisgICAgcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAgXAogICAgIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwIFwKICAgICBwYWdlL0V2ZW50SGFuZGxlci5jcHAgXAogICAg
IHBhZ2UvRXZlbnRTb3VyY2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEw
NDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
Mjk5MSw2ICsyOTkxLDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVRpbWVyLmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9ET01UaW1lci5oJywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5j
cHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwJywKKyAgICAgICAg
ICAgICdwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgnLAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50SGFuZGxlci5jcHAnLAogICAg
ICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjUxODYsNiArMjUxODYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxET01XaW5kb3dQcm9wZXJ0eS5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRE9NV2luZG93UHJv
cGVydHkuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGFnZVxEcmFnQWN0aW9ucy5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM2OSw2ICszMzY5LDggQEAKIAkJOTdDMDc4NTAxMTY1
RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVl
LmggKi87IH07CiAJCTk3QzQ3MURCMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi87
IH07CiAJCTk3QzQ3MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzQ3MURB
MTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5N0QyQUQwMzE0QjgyM0E2MDA5
M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEMkFEMDExNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRv
d1Byb3BlcnR5LmNwcCAqLzsgfTsKKwkJOTdEMkFEMDQxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdp
bmRvd1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0QyQUQwMjE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0RDRTIwMTEw
ODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQ0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8q
IEhpc3RvcnlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJOTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0
IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0U0MDI4RjEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFNDAyOEQxM0E2OTZFRDAwOTEz
RDY3IC8qIEljb25Db250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTEwNjI5LDYgKzEwNjMxLDggQEAK
IAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxUb2tlbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9IVE1MVG9rZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9s
aWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWN1cml0eVBv
bGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0QyQUQwMTE0QjgyM0E2MDA5
M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5N0QyQUQwMjE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdEQ0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8qIEhp
c3RvcnlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhpc3RvcnlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdE
Q0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3RTQwMjhEMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJY29uQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY1Myw2ICsxNTY1Nyw4IEBA
CiAJCQkJMTQwM0I5OTYwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgKi8sCiAJCQkJ
MTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovLAogCQkJCTE0MDNCOTBD
MDlFQjEyNDUwMDc5N0M3RiAvKiBET01XaW5kb3cuaWRsICovLAorCQkJCTk3RDJBRDAxMTRCODIz
QTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgKi8sCisJCQkJOTdEMkFEMDIxNEI4
MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi8sCiAJCQkJQTcxODc2MEQwQjJB
MTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8sCiAJCQkJQTdDQTU5NjIwQjI3QzFGMjAw
RkEwMjFEIC8qIERyYWdDbGllbnQuaCAqLywKIAkJCQlBN0NBNTk1QzBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuY3BwICovLApAQCAtMjQ4ODMsNiArMjQ4ODksNyBAQAogCQkJCTk3
N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NEE4NjIzMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5k
b3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzc4Nyw2ICsyNzc5NCw3IEBACiAJCQkJ
OTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3NEE4NjIyMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8q
IERPTVdpbmRvd1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlTWVkaWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZU1lZGlhLmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlTWVkaWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0eWxlTWVkaWE6OlN0eWxlTWVkaWEoRnJhbWUqIGZyYW1lKQotICAgIDog
bV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogewogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpZm5kZWYgU3R5bGVNZWRpYV9oCiAjZGVmaW5lIFN0eWxlTWVkaWFfaAogCisjaW5jbHVkZSAi
RE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM0LDI0ICszNSwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZyYW1lOwogCi1jbGFzcyBTdHlsZU1lZGlhIDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVNZWRpYT4geworY2xhc3MgU3R5bGVNZWRpYSA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0eWxlTWVkaWE+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0eWxlTWVkaWE+IGNyZWF0ZShGcmFtZSogZnJhbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTWVkaWEoZnJhbWUpKTsKLSAgICB9Ci0K
LSAgICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVN
ZWRpYT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTWVk
aWEoZnJhbWUpKTt9CiAKICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OwotCiAgICAgYm9vbCBtYXRj
aE1lZGl1bShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTdHlsZU1lZGlh
KEZyYW1lKik7Ci0KLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBleHBsaWNpdCBTdHlsZU1lZGlh
KEZyYW1lKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNp
b24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIERPTUFwcGxpY2F0aW9uQ2FjaGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUoRnJh
bWUqIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5
KGZyYW1lKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3QgPSBhcHBsaWNh
dGlvbkNhY2hlSG9zdCgpOwogICAgIGlmIChjYWNoZUhvc3QpCkBAIC01Miw3ICs1Miw3IEBAIHZv
aWQgRE9NQXBwbGljYXRpb25DYWNoZTo6ZGlzY29ubmVjdEZyYW0KICAgICBBcHBsaWNhdGlvbkNh
Y2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNoZUhvc3QoKTsKICAgICBpZiAoY2Fj
aGVIb3N0KQogICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUoMCk7Ci0g
ICAgbV9mcmFtZSA9IDA7CisgICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZSgp
OwogfQogCiBBcHBsaWNhdGlvbkNhY2hlSG9zdCogRE9NQXBwbGljYXRpb25DYWNoZTo6YXBwbGlj
YXRpb25DYWNoZUhvc3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAxMDQzNzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIERPTUFwcGxpY2F0aW9uQ2Fj
aGVfaAogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKKyNpbmNsdWRlICJET01X
aW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSwxMyArNDIsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFzcyBLVVJMOwogCi1jbGFzcyBE
T01BcHBsaWNhdGlvbkNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NQXBwbGljYXRpb25DYWNo
ZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlIDogcHVi
bGljIFJlZkNvdW50ZWQ8RE9NQXBwbGljYXRpb25DYWNoZT4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01BcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgRE9NQXBwbGljYXRpb25DYWNoZShmcmFtZSkpOyB9CiAgICAgfkRPTUFwcGxpY2F0
aW9uQ2FjaGUoKSB7IEFTU0VSVCghbV9mcmFtZSk7IH0KIAotICAgIEZyYW1lKiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKIAogICAgIHVuc2lnbmVk
IHNob3J0IHN0YXR1cygpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlKEV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHRvRXZlbnRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkKTsKIAogcHJpdmF0
ZToKLSAgICBET01BcHBsaWNhdGlvbkNhY2hlKEZyYW1lKik7CisgICAgZXhwbGljaXQgRE9NQXBw
bGljYXRpb25DYWNoZShGcmFtZSopOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJl
ZigpOyB9CkBAIC04NCw3ICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICBBcHBsaWNhdGlvbkNhY2hl
SG9zdCogYXBwbGljYXRpb25DYWNoZUhvc3QoKSBjb25zdDsKIAotICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9CYXJJbmZvLmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9CYXJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjEgKzM2LDExIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEJhckluZm86OkJhckluZm8oRnJhbWUqIGZyYW1lLCBUeXBlIHR5
cGUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUp
CiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAotRnJhbWUqIEJhckluZm86OmZyYW1lKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9mcmFtZTsKLX0KLQotdm9pZCBCYXJJbmZvOjpkaXNjb25uZWN0
RnJhbWUoKQotewotICAgIG1fZnJhbWUgPSAwOwotfQotCiBCYXJJbmZvOjpUeXBlIEJhckluZm86
OnR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0JhckluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Jhcklu
Zm8uaAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9CYXJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgQmFySW5mb19oCiAjZGVm
aW5lIEJhckluZm9faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM2
LDIyICszNywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKIAot
ICAgIGNsYXNzIEJhckluZm8gOiBwdWJsaWMgUmVmQ291bnRlZDxCYXJJbmZvPiB7CisgICAgY2xh
c3MgQmFySW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPEJhckluZm8+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgTG9jYXRpb25iYXIs
IE1lbnViYXIsIFBlcnNvbmFsYmFyLCBTY3JvbGxiYXJzLCBTdGF0dXNiYXIsIFRvb2xiYXIgfTsK
IAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXJJbmZvPiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBUeXBlIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXJJbmZvKGZyYW1lLCB0eXBlKSk7
IH0KIAotICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKTsKLQogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKLQogICAgICAgICBib29s
IHZpc2libGUoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJhckluZm8oRnJhbWUq
LCBUeXBlKTsKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFR5cGUgbV90eXBlOwog
ICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNpb24gMTA0Mzc2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb25zb2xlOjpDb25zb2xlKEZyYW1l
KiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShm
cmFtZSkKIHsKIH0KIApAQCAtNjQsMTggKzY0LDYgQEAgQ29uc29sZTo6fkNvbnNvbGUoKQogewog
fQogCi1GcmFtZSogQ29uc29sZTo6ZnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1l
OwotfQotCi12b2lkIENvbnNvbGU6OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAgaWYgKG1fbWVt
b3J5KQotICAgICAgICBtX21lbW9yeSA9IDA7Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KIHN0YXRp
YyB2b2lkIHByaW50U291cmNlVVJMQW5kTGluZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5z
aWduZWQgbGluZU51bWJlcikKIHsKICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkpIHsKQEAg
LTM0OCwxMCArMzM2LDExIEBAIHZvaWQgQ29uc29sZTo6d2FybihQYXNzUmVmUHRyPFNjcmlwdEFy
Z3UKICAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBh
cmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLU1lbW9yeUluZm8qIENvbnNvbGU6Om1lbW9yeSgp
IGNvbnN0CitQYXNzUmVmUHRyPE1lbW9yeUluZm8+IENvbnNvbGU6Om1lbW9yeSgpIGNvbnN0CiB7
Ci0gICAgbV9tZW1vcnkgPSBNZW1vcnlJbmZvOjpjcmVhdGUobV9mcmFtZSk7Ci0gICAgcmV0dXJu
IG1fbWVtb3J5LmdldCgpOworICAgIC8vIEZJWE1FOiBCZWNhdXNlIHdlIGNyZWF0ZSBhIG5ldyBv
YmplY3QgaGVyZSBlYWNoIHRpbWUsCisgICAgLy8gY29uc29sZS5tZW1vcnkgIT09IGNvbnNvbGUu
bWVtb3J5LCB3aGljaCBzZWVtcyB3cm9uZy4KKyAgICByZXR1cm4gTWVtb3J5SW5mbzo6Y3JlYXRl
KG1fZnJhbWUpOwogfQogCiBzdGF0aWMgYm9vbCBwcmludEV4Y2VwdGlvbnMgPSBmYWxzZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5oCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmlu
ZSBDb25zb2xlX2gKIAogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgorI2luY2x1ZGUgIkRPTVdp
bmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ4LDE0ICs0OSwxMSBA
QCBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJv
ZmlsZT4gPiBQcm9maWxlc0FycmF5OwogI2VuZGlmCiAKLWNsYXNzIENvbnNvbGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxDb25zb2xlPiB7CitjbGFzcyBDb25zb2xlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q29uc29sZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQogICAgIHZpcnR1YWwgfkNvbnNvbGUoKTsKIAotICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KICAg
ICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2spOwogCkBAIC04NSwxOSArODMsMTcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHNob3VsZFByaW50RXhjZXB0aW9ucygpOwogICAgIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZFByaW50RXhjZXB0aW9ucyhib29sKTsKIAotICAgIE1lbW9yeUluZm8qIG1lbW9yeSgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8TWVtb3J5SW5mbz4gbWVtb3J5KCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgaW5saW5lIFBhZ2UqIHBhZ2UoKSBjb25zdDsKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4sIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMgPSBmYWxzZSk7
CiAKLSAgICBDb25zb2xlKEZyYW1lKik7CisgICAgZXhwbGljaXQgQ29uc29sZShGcmFtZSopOwog
Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICAgUHJvZmlsZXNBcnJheSBtX3Byb2ZpbGVzOwogI2VuZGlmCi0gICAgbXV0YWJsZSBSZWZQdHI8
TWVtb3J5SW5mbz4gbV9tZW1vcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDIwICs1NCwxMCBAQCBzdGF0aWMgTm9kZSogc2VsZWN0aW9uU2hhZG93QW5jZXN0b3IoRnJhCiB9
CiAKIERPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJh
bWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAotRnJhbWUq
IERPTVNlbGVjdGlvbjo6ZnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1lOwotfQot
Ci12b2lkIERPTVNlbGVjdGlvbjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0g
MDsKLX0KLQogY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgRE9NU2VsZWN0aW9uOjp2aXNpYmxlU2Vs
ZWN0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5k
ZWYgRE9NU2VsZWN0aW9uX2gKICNkZWZpbmUgRE9NU2VsZWN0aW9uX2gKIAorI2luY2x1ZGUgIkRP
TVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00MywxMyAr
NDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKIAotICAgIGNsYXNzIERPTVNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVNl
bGVjdGlvbj4geworICAgIGNsYXNzIERPTVNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERP
TVNlbGVjdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01TZWxlY3Rpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01TZWxlY3Rpb24oZnJhbWUpKTsgfQogCi0gICAgICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwot
CiAgICAgICAgIC8vIFNhZmFyaSBTZWxlY3Rpb24gT2JqZWN0IEFQSQogICAgICAgICAvLyBUaGVz
ZSBtZXRob2RzIHJldHVybiB0aGUgdmFsaWQgZXF1aXZhbGVudHMgb2YgaW50ZXJuYWwgZWRpdGlu
ZyBwb3NpdGlvbnMuCiAgICAgICAgIE5vZGUqIGJhc2VOb2RlKCkgY29uc3Q7CkBAIC05MCwxMyAr
ODgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGVtcHR5KCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBET01TZWxlY3Rpb24oRnJhbWUqKTsKKyAgICAgICAgZXhwbGlj
aXQgRE9NU2VsZWN0aW9uKEZyYW1lKik7CiAKICAgICAgICAgLy8gQ29udmVuaWVuY2UgbWV0aG9k
IGZvciBhY2Nlc3NvcnMsIGRvZXMgbm90IE5VTEwgY2hlY2sgbV9mcmFtZS4KICAgICAgICAgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgdmlzaWJsZVNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgaXNWYWxpZEZvclBvc2l0aW9uKE5vZGUqKSBjb25zdDsKLSAgICAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsOTIgKzQ3Niw1NCBAQCB2b2lk
IERPTVdpbmRvdzo6ZnJhbWVEZXN0cm95ZWQoKQogICAgIGNsZWFyKCk7CiB9CiAKK3ZvaWQgRE9N
V2luZG93OjpyZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5KiBwcm9wZXJ0eSkKK3sK
KyAgICBtX3Byb3BlcnRpZXMuYWRkKHByb3BlcnR5KTsKK30KKwordm9pZCBET01XaW5kb3c6OnVu
cmVnaXN0ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCit7CisgICAgbV9w
cm9wZXJ0aWVzLnJlbW92ZShwcm9wZXJ0eSk7Cit9CisKIHZvaWQgRE9NV2luZG93OjpjbGVhcigp
CiB7Ci0gICAgaWYgKG1fc2NyZWVuKQotICAgICAgICBtX3NjcmVlbi0+ZGlzY29ubmVjdEZyYW1l
KCk7Ci0gICAgbV9zY3JlZW4gPSAwOworICAgIEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6
aXRlcmF0b3Igc3RvcCA9IG1fcHJvcGVydGllcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RE9N
V2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaXQg
IT0gc3RvcDsgKytpdCkKKyAgICAgICAgKCppdCktPmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIG1f
cHJvcGVydGllcy5jbGVhcigpOwogCi0gICAgaWYgKG1fc2VsZWN0aW9uKQotICAgICAgICBtX3Nl
bGVjdGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgbV9zY3JlZW4gPSAwOwogICAgIG1fc2Vs
ZWN0aW9uID0gMDsKLQotICAgIGlmIChtX2hpc3RvcnkpCi0gICAgICAgIG1faGlzdG9yeS0+ZGlz
Y29ubmVjdEZyYW1lKCk7CiAgICAgbV9oaXN0b3J5ID0gMDsKLQogICAgIG1fY3J5cHRvID0gMDsK
LQotICAgIGlmIChtX2xvY2F0aW9uYmFyKQotICAgICAgICBtX2xvY2F0aW9uYmFyLT5kaXNjb25u
ZWN0RnJhbWUoKTsKICAgICBtX2xvY2F0aW9uYmFyID0gMDsKLQotICAgIGlmIChtX21lbnViYXIp
Ci0gICAgICAgIG1fbWVudWJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9tZW51YmFyID0g
MDsKLQotICAgIGlmIChtX3BlcnNvbmFsYmFyKQotICAgICAgICBtX3BlcnNvbmFsYmFyLT5kaXNj
b25uZWN0RnJhbWUoKTsKICAgICBtX3BlcnNvbmFsYmFyID0gMDsKLQotICAgIGlmIChtX3Njcm9s
bGJhcnMpCi0gICAgICAgIG1fc2Nyb2xsYmFycy0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9z
Y3JvbGxiYXJzID0gMDsKLQotICAgIGlmIChtX3N0YXR1c2JhcikKLSAgICAgICAgbV9zdGF0dXNi
YXItPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fc3RhdHVzYmFyID0gMDsKLQotICAgIGlmICht
X3Rvb2xiYXIpCi0gICAgICAgIG1fdG9vbGJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV90
b29sYmFyID0gMDsKLQotICAgIGlmIChtX2NvbnNvbGUpCi0gICAgICAgIG1fY29uc29sZS0+ZGlz
Y29ubmVjdEZyYW1lKCk7CiAgICAgbV9jb25zb2xlID0gMDsKLQotICAgIGlmIChtX25hdmlnYXRv
cikKLSAgICAgICAgbV9uYXZpZ2F0b3ItPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbmF2aWdh
dG9yID0gMDsKLQogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIGlmIChtX3BlcmZvcm1hbmNl
KQotICAgICAgICBtX3BlcmZvcm1hbmNlLT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX3BlcmZv
cm1hbmNlID0gMDsKICNlbmRpZgotCi0gICAgaWYgKG1fbG9jYXRpb24pCi0gICAgICAgIG1fbG9j
YXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbG9jYXRpb24gPSAwOwotCi0gICAgaWYg
KG1fbWVkaWEpCi0gICAgICAgIG1fbWVkaWEtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbWVk
aWEgPSAwOwotCi0gICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2UpCi0gICAgICAgIG1fc2Vzc2lvblN0
b3JhZ2UtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSAwOwotCi0g
ICAgaWYgKG1fbG9jYWxTdG9yYWdlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZS0+ZGlzY29ubmVj
dEZyYW1lKCk7CiAgICAgbV9sb2NhbFN0b3JhZ2UgPSAwOwotCi0gICAgaWYgKG1fYXBwbGljYXRp
b25DYWNoZSkKLSAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlLT5kaXNjb25uZWN0RnJhbWUoKTsK
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSAwOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CisgICAgLy8gRklYTUU6IE5vdGlmaWNhdGlvbnMgc2hvdWxkbid0IGhhdmUgZGlmZmVyZW50IGRp
c2Nvbm5lY3Rpb24gbG9naWMgdGhhbgorICAgIC8vIHRoZSByZXN0IG9mIHRoZSBET01XaW5kb3dQ
cm9wZXJ0aWVzLgogICAgIHJlc2V0Tm90aWZpY2F0aW9ucygpOwogI2VuZGlmCi0KICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBtX2lkYkZhY3RvcnkgPSAwOwogI2VuZGlmCi0KICNp
ZiBFTkFCTEUoQkxPQikKICAgICBtX2RvbVVSTCA9IDA7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShR
VU9UQSkKICAgICBtX3N0b3JhZ2VJbmZvID0gMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVNlbGVjdGlv
bjsKICAgICBjbGFzcyBET01VUkw7CisgICAgY2xhc3MgRE9NV2luZG93UHJvcGVydHk7CiAgICAg
Y2xhc3MgRGF0YWJhc2U7CiAgICAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKICAgICBjbGFzcyBE
b2N1bWVudDsKQEAgLTkzLDYgKzk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCisgICAgICAgIHZvaWQg
cmVnaXN0ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSopOworICAgICAgICB2b2lkIHVucmVn
aXN0ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSopOworCiAgICAgICAgIHZvaWQgY2xlYXIo
KTsKIAogICAgICAgICBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNvbnN0
IFN0cmluZyYpOwpAQCAtNDM3LDYgKzQ0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgS1VSTCBtX3VybDsKIAogICAgICAgICBib29sIG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRM
b2FkaW5nOworCisgICAgICAgIEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPiBtX3Byb3BlcnRp
ZXM7CisKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U2NyZWVuPiBtX3NjcmVlbjsKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RE9NU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8SGlzdG9yeT4gbV9oaXN0b3J5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd1Byb3BlcnR5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgorCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitE
T01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1lKQorICAgIDog
bV9mcmFtZShmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZSkKKyAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7Cit9CisKK0RPTVdpbmRvd1Byb3BlcnR5
Ojp+RE9NV2luZG93UHJvcGVydHkoKQoreworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+dW5yZWdpc3RlclByb3BlcnR5KHRoaXMpOworfQorCit2b2lkIERP
TVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIG1fZnJhbWUgPSAwOwor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01XaW5kb3dQcm9wZXJ0eV9oCisjZGVmaW5lIERP
TVdpbmRvd1Byb3BlcnR5X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsK
KworY2xhc3MgRE9NV2luZG93UHJvcGVydHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IERPTVdp
bmRvd1Byb3BlcnR5KEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgp
OworCisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB+RE9NV2luZG93UHJvcGVydHkoKTsKKworICAgIEZyYW1lKiBt
X2ZyYW1lOworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b24uY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgR2VvbG9jYXRp
b246OldhdGNoZXJzOjpnZXROb3RpZmllcnMKIH0KIAogR2VvbG9jYXRpb246Okdlb2xvY2F0aW9u
KEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9w
ZXJ0eShmcmFtZSkKICNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAs
IG1fc2VydmljZShHZW9sb2NhdGlvblNlcnZpY2U6OmNyZWF0ZSh0aGlzKSkKICNlbmRpZgpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAg
cmVzZXQoKTsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVc2luZ0dlb2xvY2F0aW9uKGZhbHNlKTsKLSAgICBt
X2ZyYW1lID0gMDsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CiB9
CiAKIEdlb3Bvc2l0aW9uKiBHZW9sb2NhdGlvbjo6bGFzdFBvc2l0aW9uKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2VvbG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lm
bmRlZiBHZW9sb2NhdGlvbl9oCiAjZGVmaW5lIEdlb2xvY2F0aW9uX2gKIAorI2luY2x1ZGUgIkRP
TVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKICNpbmNsdWRlICJQ
b3NpdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgpAQCAtNDcsMjUg
KzQ4LDIzIEBAIGNsYXNzIEdlb2xvY2F0aW9uRXJyb3I7CiAjZW5kaWYKIGNsYXNzIFBhZ2U7CiAK
LWNsYXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvbG9jYXRpb24+CitjbGFz
cyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uPiwgcHVibGljIERP
TVdpbmRvd1Byb3BlcnR5CiAjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICYm
IEVOQUJMRShHRU9MT0NBVElPTikKICAgICAsIHB1YmxpYyBHZW9sb2NhdGlvblNlcnZpY2VDbGll
bnQKICNlbmRpZgogewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb2xvY2F0aW9u
PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2VvbG9jYXRpb24o
ZnJhbWUpKTsgfQotCiAgICAgfkdlb2xvY2F0aW9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
Y29ubmVjdEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgZGlz
Y29ubmVjdEZyYW1lKCk7Ci0gICAgCisKICAgICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQYXNz
UmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CiAgICAgaW50IHdhdGNoUG9zaXRpb24o
UGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogICAgIHZvaWQgY2xlYXJXYXRj
aChpbnQgd2F0Y2hJZCk7CiAKICAgICB2b2lkIHNldElzQWxsb3dlZChib29sKTsKLSAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKICNpZiBFTkFCTEUoQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKCk7CkBAIC03OSw4
ICs3OCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBZZXM7IH0KICAgICBib29sIGlzRGVuaWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd0dlb2xvY2F0aW9uID09IE5vOyB9Ci0gICAgCi0gICAgR2VvbG9jYXRp
b24oRnJhbWUqKTsKKworICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uKEZyYW1lKik7CiAKICAgICBQ
YWdlKiBwYWdlKCkgY29uc3Q7CiAKQEAgLTE3Miw3ICsxNzEsNiBAQCBwcml2YXRlOgogCiAgICAg
R2VvTm90aWZpZXJTZXQgbV9vbmVTaG90czsKICAgICBXYXRjaGVycyBtX3dhdGNoZXJzOwotICAg
IEZyYW1lKiBtX2ZyYW1lOwogI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQog
ICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2U+IG1fc2VydmljZTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMCArNDEsMTAgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSGlzdG9yeTo6SGlzdG9yeShGcmFtZSogZnJhbWUpCi0gICAg
OiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAK
LUZyYW1lKiBIaXN0b3J5OjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7Ci19
Ci0KLXZvaWQgSGlzdG9yeTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0gMDsK
LX0KLQogdW5zaWduZWQgSGlzdG9yeTo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJh
bWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgSGlzdG9yeV9oCiAjZGVmaW5lIEhpc3RvcnlfaAogCisjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzgsMTIgKzM5LDkgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEhpc3RvcnkgOiBwdWJsaWMgUmVmQ291
bnRlZDxIaXN0b3J5PiB7CitjbGFzcyBIaXN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9y
eT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SGlzdG9yeT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IEhpc3RvcnkoZnJhbWUpKTsgfQotICAgIAotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAg
IHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICB2b2lkIGJhY2soKTsKQEAgLTYxLDExICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
YXRlT2JqZWN0QWRkZWQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgU3RhdGVPYmplY3RUeXBlLCBFeGNlcHRp
b25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSGlzdG9yeShGcmFtZSopOworICAgIGV4cGxpY2l0
IEhpc3RvcnkoRnJhbWUqKTsKIAogICAgIEtVUkwgdXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1
cmwpOwotCi0gICAgRnJhbWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE1ICs0
MCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2NhdGlvbjo6TG9jYXRpb24oRnJhbWUq
IGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZy
YW1lKQogewogfQogCi12b2lkIExvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1f
ZnJhbWUgPSAwOwotfQotCiBpbmxpbmUgY29uc3QgS1VSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAkocmV2
aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIExvY2F0aW9uX2gKICNkZWZpbmUgTG9j
YXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxMyArNDIsMTAgQEAgY2xhc3MgS1VSTDsKIAogdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxMb2NhdGlvbj4geworY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxMb2Nh
dGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBMb2NhdGlvbihmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIHZvaWQg
c2V0SHJlZihjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93
KiBmaXJzdFdpbmRvdyk7CiAgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsKIApAQCAtNzQsMTEgKzcy
LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGhyZWYo
KTsgfQogCiBwcml2YXRlOgotICAgIExvY2F0aW9uKEZyYW1lKik7CisgICAgZXhwbGljaXQgTG9j
YXRpb24oRnJhbWUqKTsKIAogICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotCi0gICAgRnJh
bWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihGcmFtZSogZnJhbWUpCi0g
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9
CiAKIE5hdmlnYXRvcjo6fk5hdmlnYXRvcigpCiB7Ci0gICAgZGlzY29ubmVjdEZyYW1lKCk7CiB9
CiAKIHZvaWQgTmF2aWdhdG9yOjpyZXNldEdlb2xvY2F0aW9uKCkKQEAgLTc0LDIzICs3Myw2IEBA
IHZvaWQgTmF2aWdhdG9yOjpyZXNldEdlb2xvY2F0aW9uKCkKICAgICAgICAgbV9nZW9sb2NhdGlv
bi0+cmVzZXQoKTsKIH0KIAotdm9pZCBOYXZpZ2F0b3I6OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0g
ICAgaWYgKG1fcGx1Z2lucykgewotICAgICAgICBtX3BsdWdpbnMtPmRpc2Nvbm5lY3RGcmFtZSgp
OwotICAgICAgICBtX3BsdWdpbnMgPSAwOwotICAgIH0KLSAgICBpZiAobV9taW1lVHlwZXMpIHsK
LSAgICAgICAgbV9taW1lVHlwZXMtPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBtX21pbWVU
eXBlcyA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dlb2xvY2F0aW9uKSB7Ci0gICAgICAgIG1fZ2Vv
bG9jYXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBtX2dlb2xvY2F0aW9uID0gMDsK
LSAgICB9Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KIC8vIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJu
cyB0cnVlLCB3ZSBuZWVkIHRvIGhpZGUgdGhlIHN1YnN0cmluZyAiNC4iIHRoYXQgd291bGQgb3Ro
ZXJ3aXNlCiAvLyBhcHBlYXIgaW4gdGhlIGFwcFZlcnNpb24gc3RyaW5nLiBUaGlzIGlzIHRvIGF2
b2lkIHByb2JsZW1zIHdpdGggb2xkIHZlcnNpb25zIG9mIGEKIC8vIGxpYnJhcnkgY2FsbGVkIE9w
ZW5DdWJlIFF1aWNrTWVudSwgd2hpY2ggYXMgb2YgdGhpcyB3cml0aW5nIGlzIHN0aWxsIGJlaW5n
IHVzZWQgb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gMTA0Mzc2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NiArMjAsNyBAQAogI2lmbmRlZiBOYXZpZ2F0b3JfaAogI2RlZmluZSBOYXZpZ2F0b3JfaAogCisj
aW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNDAsMTQgKzQxLDEyIEBAIGNsYXNzIFBsdWdpbkRhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLWNsYXNzIE5hdmlnYXRvciA6IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJs
aWMgUmVmQ291bnRlZDxOYXZpZ2F0b3I+IHsKK2NsYXNzIE5hdmlnYXRvciA6IHB1YmxpYyBOYXZp
Z2F0b3JCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxOYXZpZ2F0b3I+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdmlnYXRvcj4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5hdmlnYXRvcihmcmFtZSkp
OyB9CiAgICAgdmlydHVhbCB+TmF2aWdhdG9yKCk7CiAKICAgICB2b2lkIHJlc2V0R2VvbG9jYXRp
b24oKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIEZyYW1lKiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFN0cmluZyBhcHBWZXJzaW9uKCkgY29uc3Q7
CiAgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7CkBAIC04MSw4ICs4MCw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIE5hdmlnYXRvcihGcmFtZSopOwotICAgIEZyYW1lKiBt
X2ZyYW1lOworICAgIGV4cGxpY2l0IE5hdmlnYXRvcihGcmFtZSopOworCiAgICAgbXV0YWJsZSBS
ZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICBtdXRhYmxlIFJlZlB0cjxET01N
aW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBtdXRhYmxlIFJlZlB0cjxHZW9sb2NhdGlv
bj4gbV9nZW9sb2NhdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShy
ZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsMzQgKzQyLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBlcmZvcm1hbmNlOjpQZXJmb3JtYW5jZShGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZy
YW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAKLUZyYW1lKiBQZXJm
b3JtYW5jZTo6ZnJhbWUoKSBjb25zdAorUGFzc1JlZlB0cjxNZW1vcnlJbmZvPiBQZXJmb3JtYW5j
ZTo6bWVtb3J5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZTsKLX0KLQotdm9pZCBQZXJm
b3JtYW5jZTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9tZW1vcnkpCi0gICAgICAg
IG1fbWVtb3J5ID0gMDsKLSAgICBpZiAobV9uYXZpZ2F0aW9uKSB7Ci0gICAgICAgIG1fbmF2aWdh
dGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbmF2aWdhdGlvbiA9IDA7Ci0gICAg
fQotICAgIGlmIChtX3RpbWluZykgewotICAgICAgICBtX3RpbWluZy0+ZGlzY29ubmVjdEZyYW1l
KCk7Ci0gICAgICAgIG1fdGltaW5nID0gMDsKLSAgICB9Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0K
LU1lbW9yeUluZm8qIFBlcmZvcm1hbmNlOjptZW1vcnkoKSBjb25zdAotewotICAgIG1fbWVtb3J5
ID0gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVybiBtX21lbW9yeS5nZXQo
KTsKKyAgICByZXR1cm4gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUpOwogfQogCiBQZXJmb3Jt
YW5jZU5hdmlnYXRpb24qIFBlcmZvcm1hbmNlOjpuYXZpZ2F0aW9uKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZU5hdmlnYXRp
b24uaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZVRpbWluZy5oIgpAQCAtNDIsMjcgKzQzLDIzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxQZXJmb3JtYW5jZT4geworY2xhc3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxQZXJmb3JtYW5jZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVyZm9ybWFuY2U+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQZXJmb3JtYW5jZShmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSog
ZnJhbWUoKSBjb25zdDsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotCi0gICAgTWVtb3J5
SW5mbyogbWVtb3J5KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZW1vcnlJbmZvPiBtZW1vcnko
KSBjb25zdDsKICAgICBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIG5hdmlnYXRpb24oKSBjb25zdDsK
ICAgICBQZXJmb3JtYW5jZVRpbWluZyogdGltaW5nKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
UGVyZm9ybWFuY2UoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBQZXJmb3JtYW5jZShGcmFtZSopOwog
Ci0gICAgbXV0YWJsZSBSZWZQdHI8TWVtb3J5SW5mbz4gbV9tZW1vcnk7CiAgICAgbXV0YWJsZSBS
ZWZQdHI8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiBtX25hdmlnYXRpb247CiAgICAgbXV0YWJsZSBS
ZWZQdHI8UGVyZm9ybWFuY2VUaW1pbmc+IG1fdGltaW5nOwotICAgIEZyYW1lKiBtX2ZyYW1lOwog
fTsKIAogfQogCi0jZW5kaWYgLy8gIUVOQUJMRShXRUJfVElNSU5HKQotI2VuZGlmIC8vICFkZWZp
bmVkKFBlcmZvcm1hbmNlX2gpCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCisKKyNlbmRp
ZiAvLyBQZXJmb3JtYW5jZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb24uY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0
MCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQZXJmb3JtYW5jZU5hdmlnYXRpb246OlBl
cmZvcm1hbmNlTmF2aWdhdGlvbihGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQor
ICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAKLUZyYW1lKiBQZXJmb3JtYW5j
ZU5hdmlnYXRpb246OmZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcmFtZTsKLX0KLQot
dm9pZCBQZXJmb3JtYW5jZU5hdmlnYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAgbV9m
cmFtZSA9IDA7Ci19Ci0KIHVuc2lnbmVkIHNob3J0IFBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6dHlw
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdp
bmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCkBAIC00MCwxMyArNDEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGcmFtZTsKIAotY2xhc3MgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiB7CitjbGFzcyBQZXJmb3JtYW5jZU5h
dmlnYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3JtYW5jZU5hdmlnYXRpb24+LCBwdWJs
aWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBl
cmZvcm1hbmNlTmF2aWdhdGlvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFBlcmZvcm1hbmNlTmF2aWdhdGlvbihmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSogZnJh
bWUoKSBjb25zdDsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotCiAgICAgZW51bSBQZXJm
b3JtYW5jZU5hdmlnYXRpb25UeXBlIHsKICAgICAgICAgVFlQRV9OQVZJR0FURSwKICAgICAgICAg
VFlQRV9SRUxPQUQsCkBAIC01OCw5ICs1Niw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9y
dCByZWRpcmVjdENvdW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uKEZyYW1lKik7Ci0KLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBleHBsaWNpdCBQZXJm
b3JtYW5jZU5hdmlnYXRpb24oRnJhbWUqKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MjAgKzUxLDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgdG9JbnRlZ2VyTWlsbGkKIH0K
IAogUGVyZm9ybWFuY2VUaW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKEZyYW1lKiBmcmFtZSkKLSAg
ICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0K
IAotRnJhbWUqIFBlcmZvcm1hbmNlVGltaW5nOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZnJhbWU7Ci19Ci0KLXZvaWQgUGVyZm9ybWFuY2VUaW1pbmc6OmRpc2Nvbm5lY3RGcmFtZSgp
Ci17Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KCkgY29uc3QKIHsKICAgICBEb2N1bWVudExvYWRUaW1p
bmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuaAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3Bl
cnR5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00NCwxMyArNDUsMTAgQEAgc3RydWN0IERvY3VtZW50VGltaW5nOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7CiAKLWNsYXNzIFBlcmZvcm1hbmNl
VGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+IHsKK2NsYXNzIFBl
cmZvcm1hbmNlVGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+LCBw
dWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlcmZvcm1hbmNlVGltaW5nPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgUGVyZm9ybWFuY2VUaW1pbmcoZnJhbWUpKTsgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3Q7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBuYXZpZ2F0aW9uU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5s
b2FkRXZlbnRTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bmxvYWRFdmVu
dEVuZCgpIGNvbnN0OwpAQCAtNzQsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGxvYWRFdmVudEVuZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFBlcmZvcm1hbmNl
VGltaW5nKEZyYW1lKik7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VUaW1pbmcoRnJhbWUqKTsK
IAogICAgIGNvbnN0IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZygpIGNvbnN0OwogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0OwpAQCAtODIsOCArODAsNiBA
QCBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
QWJzb2x1dGUoaW50KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGlt
ZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwotCi0gICAgRnJhbWUqIG1fZnJh
bWU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCShyZXZpc2lvbiAxMDQzNzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDIwICszOSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JlZW46OlNjcmVlbihGcmFt
ZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHko
ZnJhbWUpCiB7CiB9CiAKLUZyYW1lKiBTY3JlZW46OmZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9mcmFtZTsKLX0KLQotdm9pZCBTY3JlZW46OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAg
bV9mcmFtZSA9IDA7Ci19Ci0KIHVuc2lnbmVkIFNjcmVlbjo6aG9yaXpvbnRhbERQSSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oCShyZXZpc2lvbiAx
MDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIFNjcmVlbl9oCiAjZGVmaW5lIFNjcmVlbl9oCiAKKyNp
bmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzcsMTMgKzM4LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lOwogCi0gICAgY2xhc3MgU2NyZWVuIDog
cHVibGljIFJlZkNvdW50ZWQ8U2NyZWVuPiB7CisgICAgY2xhc3MgU2NyZWVuIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2NyZWVuPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmVlbj4gY3JlYXRlKEZyYW1lICpmcmFtZSkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFNjcmVlbihmcmFtZSkpOyB9CiAKLSAgICAgICAgRnJhbWUq
IGZyYW1lKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KICAgICAg
ICAgdW5zaWduZWQgaG9yaXpvbnRhbERQSSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCB2ZXJ0
aWNhbERQSSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKQEAgLTU2
LDkgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBhdmFpbFdp
ZHRoKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTY3JlZW4oRnJhbWUqKTsKLSAg
ICAgICAgCi0gICAgICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICBleHBsaWNpdCBTY3JlZW4o
RnJhbWUqKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAJKHJldmlzaW9uIDEwNDM3NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NTWltZVR5
cGVBcnJheTo6RE9NTWltZVR5cGVBcnJheShGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZy
YW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCShyZXZpc2lvbiAxMDQzNzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01NaW1lVHlwZUFycmF5X2gKIAogI2luY2x1
ZGUgIkRPTU1pbWVUeXBlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTMyLDI0ICszMywxOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBsdWdpbkRhdGE7CiAKLWNsYXNzIERPTU1pbWVUeXBl
QXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1lVHlwZUFycmF5PiB7CitjbGFzcyBET01N
aW1lVHlwZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NTWltZVR5cGVBcnJheT4sIHB1Ymxp
YyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
TWltZVR5cGVBcnJheT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IERPTU1pbWVUeXBlQXJyYXkoZnJhbWUpKTsgfQogICAgIH5ET01NaW1lVHlwZUFycmF5KCk7CiAK
LSAgICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAg
ICBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFt
ZSk7CiAgICAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBET01NaW1lVHlwZUFycmF5KEZy
YW1lKik7CisgICAgZXhwbGljaXQgRE9NTWltZVR5cGVBcnJheShGcmFtZSopOwogICAgIFBsdWdp
bkRhdGEqIGdldFBsdWdpbkRhdGEoKSBjb25zdDsKLQotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5jcHAJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTVBsdWdpbkFycmF5OjpET01QbHVnaW5BcnJheShG
cmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVy
dHkoZnJhbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2lu
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1
Z2luQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01Q
bHVnaW5BcnJheV9oCiAKICNpbmNsdWRlICJET01QbHVnaW4uaCIKKyNpbmNsdWRlICJET01XaW5k
b3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzIsMTQgKzMzLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGx1Z2luRGF0YTsK
IAotY2xhc3MgRE9NUGx1Z2luQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5BcnJh
eT4geworY2xhc3MgRE9NUGx1Z2luQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5B
cnJheT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBET01QbHVnaW5BcnJheShmcmFtZSkpOyB9CiAgICAgfkRPTVBsdWdpbkFycmF5
KCk7CiAKLSAgICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBk
aXNjb25uZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVBsdWdpbj4gaXRlbSh1bnNpZ25lZCBpbmRleCk7
CiAgICAgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpOwpAQCAtNDgsMTAgKzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaChib29s
IHJlbG9hZCk7CiAKIHByaXZhdGU6Ci0gICAgRE9NUGx1Z2luQXJyYXkoRnJhbWUqKTsKKyAgICBl
eHBsaWNpdCBET01QbHVnaW5BcnJheShGcmFtZSopOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRh
dGEoKSBjb25zdDsKLQotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCShyZXZpc2lvbiAxMDQz
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKEZy
YW0KIH0KIAogU3RvcmFnZTo6U3RvcmFnZShGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRv
d1Byb3BlcnR5KGZyYW1lKQogICAgICwgbV9zdG9yYWdlQXJlYShzdG9yYWdlQXJlYSkKIHsKICAg
ICBBU1NFUlQobV9mcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAkocmV2aXNp
b24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgU3RvcmFnZV9oCiAjZGVmaW5lIFN0b3Jh
Z2VfaAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtMzYsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3Rv
cmFnZUFyZWE7CiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotICAgIGNsYXNzIFN0
b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiB7CisgICAgY2xhc3MgU3RvcmFnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RvcmFnZT4gY3JlYXRlKEZy
YW1lKiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4pOwogICAgICAgICB+U3RvcmFnZSgpOwpAQCAt
NTAsMTMgKzUxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCi0gICAgICAgIEZyYW1lKiBmcmFtZSgpIHsg
cmV0dXJuIG1fZnJhbWU7IH0KLSAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1fZnJh
bWUgPSAwOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlKEZyYW1lKiwgUGFzc1Jl
ZlB0cjxTdG9yYWdlQXJlYT4pOwogCi0gICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBS
ZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121542</attachid>
            <date>2012-01-06 23:38:32 -0800</date>
            <delta_ts>2012-01-07 00:46:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75699-20120106233830.patch</filename>
            <type>text/plain</type>
            <size>49121</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEyLTAxLTA2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzY29ubmVjdGluZyBET01XaW5k
b3cgcHJvcGVydGllcyBpcyBmcmFnaWxlIGFuZCBvdmVybHkgY29tcGxpY2F0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBQcmV2aW91c2x5LCB3
ZSBoYWQgdG8gY2FyZWZ1bGx5IGNoZWNrIGV2ZXJ5IG9iamVjdCB0cmVlIGhhbmdpbmcgb2ZmIG9m
CisgICAgICAgIERPTVdpbmRvdyB0byBtYWtlIHN1cmUgdGhhdCBldmVyeSBwcm9wZXJ0eSBjb3Jy
ZWN0bHkgZGlzY29ubmVjdGVkCisgICAgICAgIGl0c2VsZiBhbmQgYWxsIGl0cyBzdWJvYmplY3Rz
IGZyb20gdGhlIEZyYW1lIHdoZW4gdGhlIERPTVdpbmRvdworICAgICAgICBkaXNjb25uZWN0ZWQg
ZnJvbSB0aGUgRnJhbWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIERPTVdpbmRv
d1Byb3BlcnR5LCB3aGljaCBpcyBhIGJhc2UgY2xhc3MgdGhhdAorICAgICAgICBoYW5kbGVzIHRo
aXMgd29yayBhdXRvbWFnaWNhbGx5LCBlbnN1cmluZyB0aGF0IHdlIHdvbid0IGhhdmUgYW55Cisg
ICAgICAgIGRhbmdsaW5nIEZyYW1lIHBvaW50ZXJzIGFuZCByZW1vdmluZyBhIGJ1bmNoIG9mIGJv
aWxlcnBsYXRlIGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTWVkaWE6
OlN0eWxlTWVkaWEpOgorICAgICAgICAqIGNzcy9TdHlsZU1lZGlhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZU1lZGlhOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2Fj
aGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRp
b25DYWNoZTo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9N
QXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAqIHBhZ2UvQmFySW5mby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCYXJJbmZvOjpCYXJJbmZvKToKKyAgICAgICAgKiBwYWdlL0JhckluZm8uaDoK
KyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6
Q29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjptZW1vcnkpOgorICAgICAgICAq
IHBhZ2UvQ29uc29sZS5oOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdl
L0RPTVNlbGVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnVucmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBh
Z2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb2xv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUp
OgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL0hpc3Rvcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6SGlzdG9yeSk6CisgICAgICAgICogcGFn
ZS9IaXN0b3J5Lmg6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhdGlvbjo6TG9jYXRpb24pOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaDoKKyAg
ICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6
Ok5hdmlnYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6On5OYXZpZ2F0b3IpOgor
ICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6UGVyZm9ybWFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lbW9yeSk6CisgICAgICAgICogcGFnZS9QZXJmb3Jt
YW5jZS5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9u
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oOgorICAgICAgICAqIHBh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGlt
aW5nLmg6CisgICAgICAgICogcGFnZS9TY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
ZWVuOjpTY3JlZW4pOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmg6CisgICAgICAgICogcGx1Z2lu
cy9ET01NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJy
YXk6OkRPTU1pbWVUeXBlQXJyYXkpOgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGVBcnJh
eS5oOgorICAgICAgICAqIHBsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUGx1Z2luQXJyYXk6OkRPTVBsdWdpbkFycmF5KToKKyAgICAgICAgKiBwbHVnaW5z
L0RPTVBsdWdpbkFycmF5Lmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2U6OlN0b3JhZ2UpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZS5oOgorCiAyMDEyLTAxLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA0MzczIGFuZCByMTA0
Mzc0LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05ODksNiArOTg5LDcg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcAogICAgIHBh
Z2UvRE9NVGltZXIuY3BwCiAgICAgcGFnZS9ET01XaW5kb3cuY3BwCisgICAgcGFnZS9ET01XaW5k
b3dQcm9wZXJ0eS5jcHAKICAgICBwYWdlL0RyYWdDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcAogICAgIHBhZ2UvRXZlbnRTb3VyY2UuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NDYsNiArMjY0Niw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xp
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBh
Z2UvRE9NU2VsZWN0aW9uLmNwcCBcCiAgICAgcGFnZS9ET01UaW1lci5jcHAgXAogICAgIHBhZ2Uv
RE9NV2luZG93LmNwcCBcCisgICAgcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAgXAogICAgIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwIFwKICAgICBwYWdlL0V2ZW50SGFuZGxlci5jcHAgXAogICAg
IHBhZ2UvRXZlbnRTb3VyY2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEw
NDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
Mjk5MSw2ICsyOTkxLDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVRpbWVyLmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9ET01UaW1lci5oJywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5j
cHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwJywKKyAgICAgICAg
ICAgICdwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgnLAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50SGFuZGxlci5jcHAnLAogICAg
ICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjUxODYsNiArMjUxODYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxET01XaW5kb3dQcm9wZXJ0eS5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRE9NV2luZG93UHJv
cGVydHkuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGFnZVxEcmFnQWN0aW9ucy5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM2OSw2ICszMzY5LDggQEAKIAkJOTdDMDc4NTAxMTY1
RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVl
LmggKi87IH07CiAJCTk3QzQ3MURCMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi87
IH07CiAJCTk3QzQ3MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzQ3MURB
MTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5N0QyQUQwMzE0QjgyM0E2MDA5
M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEMkFEMDExNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRv
d1Byb3BlcnR5LmNwcCAqLzsgfTsKKwkJOTdEMkFEMDQxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdp
bmRvd1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0QyQUQwMjE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0RDRTIwMTEw
ODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQ0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8q
IEhpc3RvcnlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJOTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0
IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0U0MDI4RjEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFNDAyOEQxM0E2OTZFRDAwOTEz
RDY3IC8qIEljb25Db250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTEwNjI5LDYgKzEwNjMxLDggQEAK
IAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxUb2tlbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9IVE1MVG9rZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9s
aWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWN1cml0eVBv
bGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0QyQUQwMTE0QjgyM0E2MDA5
M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5N0QyQUQwMjE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdEQ0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8qIEhp
c3RvcnlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhpc3RvcnlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdE
Q0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3RTQwMjhEMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJY29uQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY1Myw2ICsxNTY1Nyw4IEBA
CiAJCQkJMTQwM0I5OTYwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgKi8sCiAJCQkJ
MTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovLAogCQkJCTE0MDNCOTBD
MDlFQjEyNDUwMDc5N0M3RiAvKiBET01XaW5kb3cuaWRsICovLAorCQkJCTk3RDJBRDAxMTRCODIz
QTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgKi8sCisJCQkJOTdEMkFEMDIxNEI4
MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi8sCiAJCQkJQTcxODc2MEQwQjJB
MTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8sCiAJCQkJQTdDQTU5NjIwQjI3QzFGMjAw
RkEwMjFEIC8qIERyYWdDbGllbnQuaCAqLywKIAkJCQlBN0NBNTk1QzBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuY3BwICovLApAQCAtMjQ4ODMsNiArMjQ4ODksNyBAQAogCQkJCTk3
N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NEE4NjIzMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5k
b3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzc4Nyw2ICsyNzc5NCw3IEBACiAJCQkJ
OTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3NEE4NjIyMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8q
IERPTVdpbmRvd1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlTWVkaWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZU1lZGlhLmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlTWVkaWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0eWxlTWVkaWE6OlN0eWxlTWVkaWEoRnJhbWUqIGZyYW1lKQotICAgIDog
bV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogewogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpZm5kZWYgU3R5bGVNZWRpYV9oCiAjZGVmaW5lIFN0eWxlTWVkaWFfaAogCisjaW5jbHVkZSAi
RE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM0LDI0ICszNSwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZyYW1lOwogCi1jbGFzcyBTdHlsZU1lZGlhIDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVNZWRpYT4geworY2xhc3MgU3R5bGVNZWRpYSA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0eWxlTWVkaWE+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0eWxlTWVkaWE+IGNyZWF0ZShGcmFtZSogZnJhbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTWVkaWEoZnJhbWUpKTsKLSAgICB9Ci0K
LSAgICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVN
ZWRpYT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTWVk
aWEoZnJhbWUpKTt9CiAKICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OwotCiAgICAgYm9vbCBtYXRj
aE1lZGl1bShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTdHlsZU1lZGlh
KEZyYW1lKik7Ci0KLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBleHBsaWNpdCBTdHlsZU1lZGlh
KEZyYW1lKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNp
b24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIERPTUFwcGxpY2F0aW9uQ2FjaGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUoRnJh
bWUqIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5
KGZyYW1lKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3QgPSBhcHBsaWNh
dGlvbkNhY2hlSG9zdCgpOwogICAgIGlmIChjYWNoZUhvc3QpCkBAIC01Miw3ICs1Miw3IEBAIHZv
aWQgRE9NQXBwbGljYXRpb25DYWNoZTo6ZGlzY29ubmVjdEZyYW0KICAgICBBcHBsaWNhdGlvbkNh
Y2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNoZUhvc3QoKTsKICAgICBpZiAoY2Fj
aGVIb3N0KQogICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUoMCk7Ci0g
ICAgbV9mcmFtZSA9IDA7CisgICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZSgp
OwogfQogCiBBcHBsaWNhdGlvbkNhY2hlSG9zdCogRE9NQXBwbGljYXRpb25DYWNoZTo6YXBwbGlj
YXRpb25DYWNoZUhvc3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAxMDQzNzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIERPTUFwcGxpY2F0aW9uQ2Fj
aGVfaAogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKKyNpbmNsdWRlICJET01X
aW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSwxMyArNDIsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFzcyBLVVJMOwogCi1jbGFzcyBE
T01BcHBsaWNhdGlvbkNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NQXBwbGljYXRpb25DYWNo
ZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlIDogcHVi
bGljIFJlZkNvdW50ZWQ8RE9NQXBwbGljYXRpb25DYWNoZT4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01BcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgRE9NQXBwbGljYXRpb25DYWNoZShmcmFtZSkpOyB9CiAgICAgfkRPTUFwcGxpY2F0
aW9uQ2FjaGUoKSB7IEFTU0VSVCghbV9mcmFtZSk7IH0KIAotICAgIEZyYW1lKiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKIAogICAgIHVuc2lnbmVk
IHNob3J0IHN0YXR1cygpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlKEV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHRvRXZlbnRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkKTsKIAogcHJpdmF0
ZToKLSAgICBET01BcHBsaWNhdGlvbkNhY2hlKEZyYW1lKik7CisgICAgZXhwbGljaXQgRE9NQXBw
bGljYXRpb25DYWNoZShGcmFtZSopOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJl
ZigpOyB9CkBAIC04NCw3ICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICBBcHBsaWNhdGlvbkNhY2hl
SG9zdCogYXBwbGljYXRpb25DYWNoZUhvc3QoKSBjb25zdDsKIAotICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9CYXJJbmZvLmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9CYXJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjEgKzM2LDExIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEJhckluZm86OkJhckluZm8oRnJhbWUqIGZyYW1lLCBUeXBlIHR5
cGUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUp
CiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAotRnJhbWUqIEJhckluZm86OmZyYW1lKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9mcmFtZTsKLX0KLQotdm9pZCBCYXJJbmZvOjpkaXNjb25uZWN0
RnJhbWUoKQotewotICAgIG1fZnJhbWUgPSAwOwotfQotCiBCYXJJbmZvOjpUeXBlIEJhckluZm86
OnR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0JhckluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Jhcklu
Zm8uaAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9CYXJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgQmFySW5mb19oCiAjZGVm
aW5lIEJhckluZm9faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM2
LDIyICszNywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKIAot
ICAgIGNsYXNzIEJhckluZm8gOiBwdWJsaWMgUmVmQ291bnRlZDxCYXJJbmZvPiB7CisgICAgY2xh
c3MgQmFySW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPEJhckluZm8+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgTG9jYXRpb25iYXIs
IE1lbnViYXIsIFBlcnNvbmFsYmFyLCBTY3JvbGxiYXJzLCBTdGF0dXNiYXIsIFRvb2xiYXIgfTsK
IAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXJJbmZvPiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBUeXBlIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXJJbmZvKGZyYW1lLCB0eXBlKSk7
IH0KIAotICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKTsKLQogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKLQogICAgICAgICBib29s
IHZpc2libGUoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJhckluZm8oRnJhbWUq
LCBUeXBlKTsKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFR5cGUgbV90eXBlOwog
ICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNpb24gMTA0Mzc2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb25zb2xlOjpDb25zb2xlKEZyYW1l
KiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShm
cmFtZSkKIHsKIH0KIApAQCAtNjQsMTggKzY0LDYgQEAgQ29uc29sZTo6fkNvbnNvbGUoKQogewog
fQogCi1GcmFtZSogQ29uc29sZTo6ZnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1l
OwotfQotCi12b2lkIENvbnNvbGU6OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAgaWYgKG1fbWVt
b3J5KQotICAgICAgICBtX21lbW9yeSA9IDA7Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KIHN0YXRp
YyB2b2lkIHByaW50U291cmNlVVJMQW5kTGluZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5z
aWduZWQgbGluZU51bWJlcikKIHsKICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkpIHsKQEAg
LTM0OCwxMCArMzM2LDExIEBAIHZvaWQgQ29uc29sZTo6d2FybihQYXNzUmVmUHRyPFNjcmlwdEFy
Z3UKICAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBh
cmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLU1lbW9yeUluZm8qIENvbnNvbGU6Om1lbW9yeSgp
IGNvbnN0CitQYXNzUmVmUHRyPE1lbW9yeUluZm8+IENvbnNvbGU6Om1lbW9yeSgpIGNvbnN0CiB7
Ci0gICAgbV9tZW1vcnkgPSBNZW1vcnlJbmZvOjpjcmVhdGUobV9mcmFtZSk7Ci0gICAgcmV0dXJu
IG1fbWVtb3J5LmdldCgpOworICAgIC8vIEZJWE1FOiBCZWNhdXNlIHdlIGNyZWF0ZSBhIG5ldyBv
YmplY3QgaGVyZSBlYWNoIHRpbWUsCisgICAgLy8gY29uc29sZS5tZW1vcnkgIT09IGNvbnNvbGUu
bWVtb3J5LCB3aGljaCBzZWVtcyB3cm9uZy4KKyAgICByZXR1cm4gTWVtb3J5SW5mbzo6Y3JlYXRl
KG1fZnJhbWUpOwogfQogCiBzdGF0aWMgYm9vbCBwcmludEV4Y2VwdGlvbnMgPSBmYWxzZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5oCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmlu
ZSBDb25zb2xlX2gKIAogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgorI2luY2x1ZGUgIkRPTVdp
bmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ4LDE0ICs0OSwxMSBA
QCBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJv
ZmlsZT4gPiBQcm9maWxlc0FycmF5OwogI2VuZGlmCiAKLWNsYXNzIENvbnNvbGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxDb25zb2xlPiB7CitjbGFzcyBDb25zb2xlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q29uc29sZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQogICAgIHZpcnR1YWwgfkNvbnNvbGUoKTsKIAotICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KICAg
ICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2spOwogCkBAIC04NSwxOSArODMsMTcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHNob3VsZFByaW50RXhjZXB0aW9ucygpOwogICAgIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZFByaW50RXhjZXB0aW9ucyhib29sKTsKIAotICAgIE1lbW9yeUluZm8qIG1lbW9yeSgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8TWVtb3J5SW5mbz4gbWVtb3J5KCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgaW5saW5lIFBhZ2UqIHBhZ2UoKSBjb25zdDsKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4sIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMgPSBmYWxzZSk7
CiAKLSAgICBDb25zb2xlKEZyYW1lKik7CisgICAgZXhwbGljaXQgQ29uc29sZShGcmFtZSopOwog
Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICAgUHJvZmlsZXNBcnJheSBtX3Byb2ZpbGVzOwogI2VuZGlmCi0gICAgbXV0YWJsZSBSZWZQdHI8
TWVtb3J5SW5mbz4gbV9tZW1vcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDIwICs1NCwxMCBAQCBzdGF0aWMgTm9kZSogc2VsZWN0aW9uU2hhZG93QW5jZXN0b3IoRnJhCiB9
CiAKIERPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJh
bWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0KIAotRnJhbWUq
IERPTVNlbGVjdGlvbjo6ZnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1lOwotfQot
Ci12b2lkIERPTVNlbGVjdGlvbjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0g
MDsKLX0KLQogY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgRE9NU2VsZWN0aW9uOjp2aXNpYmxlU2Vs
ZWN0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5k
ZWYgRE9NU2VsZWN0aW9uX2gKICNkZWZpbmUgRE9NU2VsZWN0aW9uX2gKIAorI2luY2x1ZGUgIkRP
TVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00MywxMyAr
NDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKIAotICAgIGNsYXNzIERPTVNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVNl
bGVjdGlvbj4geworICAgIGNsYXNzIERPTVNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERP
TVNlbGVjdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01TZWxlY3Rpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01TZWxlY3Rpb24oZnJhbWUpKTsgfQogCi0gICAgICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwot
CiAgICAgICAgIC8vIFNhZmFyaSBTZWxlY3Rpb24gT2JqZWN0IEFQSQogICAgICAgICAvLyBUaGVz
ZSBtZXRob2RzIHJldHVybiB0aGUgdmFsaWQgZXF1aXZhbGVudHMgb2YgaW50ZXJuYWwgZWRpdGlu
ZyBwb3NpdGlvbnMuCiAgICAgICAgIE5vZGUqIGJhc2VOb2RlKCkgY29uc3Q7CkBAIC05MCwxMyAr
ODgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGVtcHR5KCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBET01TZWxlY3Rpb24oRnJhbWUqKTsKKyAgICAgICAgZXhwbGlj
aXQgRE9NU2VsZWN0aW9uKEZyYW1lKik7CiAKICAgICAgICAgLy8gQ29udmVuaWVuY2UgbWV0aG9k
IGZvciBhY2Nlc3NvcnMsIGRvZXMgbm90IE5VTEwgY2hlY2sgbV9mcmFtZS4KICAgICAgICAgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgdmlzaWJsZVNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgaXNWYWxpZEZvclBvc2l0aW9uKE5vZGUqKSBjb25zdDsKLSAgICAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsOTIgKzQ3Niw1NCBAQCB2b2lk
IERPTVdpbmRvdzo6ZnJhbWVEZXN0cm95ZWQoKQogICAgIGNsZWFyKCk7CiB9CiAKK3ZvaWQgRE9N
V2luZG93OjpyZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5KiBwcm9wZXJ0eSkKK3sK
KyAgICBtX3Byb3BlcnRpZXMuYWRkKHByb3BlcnR5KTsKK30KKwordm9pZCBET01XaW5kb3c6OnVu
cmVnaXN0ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCit7CisgICAgbV9w
cm9wZXJ0aWVzLnJlbW92ZShwcm9wZXJ0eSk7Cit9CisKIHZvaWQgRE9NV2luZG93OjpjbGVhcigp
CiB7Ci0gICAgaWYgKG1fc2NyZWVuKQotICAgICAgICBtX3NjcmVlbi0+ZGlzY29ubmVjdEZyYW1l
KCk7Ci0gICAgbV9zY3JlZW4gPSAwOworICAgIEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6
aXRlcmF0b3Igc3RvcCA9IG1fcHJvcGVydGllcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RE9N
V2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaXQg
IT0gc3RvcDsgKytpdCkKKyAgICAgICAgKCppdCktPmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIG1f
cHJvcGVydGllcy5jbGVhcigpOwogCi0gICAgaWYgKG1fc2VsZWN0aW9uKQotICAgICAgICBtX3Nl
bGVjdGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgbV9zY3JlZW4gPSAwOwogICAgIG1fc2Vs
ZWN0aW9uID0gMDsKLQotICAgIGlmIChtX2hpc3RvcnkpCi0gICAgICAgIG1faGlzdG9yeS0+ZGlz
Y29ubmVjdEZyYW1lKCk7CiAgICAgbV9oaXN0b3J5ID0gMDsKLQogICAgIG1fY3J5cHRvID0gMDsK
LQotICAgIGlmIChtX2xvY2F0aW9uYmFyKQotICAgICAgICBtX2xvY2F0aW9uYmFyLT5kaXNjb25u
ZWN0RnJhbWUoKTsKICAgICBtX2xvY2F0aW9uYmFyID0gMDsKLQotICAgIGlmIChtX21lbnViYXIp
Ci0gICAgICAgIG1fbWVudWJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9tZW51YmFyID0g
MDsKLQotICAgIGlmIChtX3BlcnNvbmFsYmFyKQotICAgICAgICBtX3BlcnNvbmFsYmFyLT5kaXNj
b25uZWN0RnJhbWUoKTsKICAgICBtX3BlcnNvbmFsYmFyID0gMDsKLQotICAgIGlmIChtX3Njcm9s
bGJhcnMpCi0gICAgICAgIG1fc2Nyb2xsYmFycy0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9z
Y3JvbGxiYXJzID0gMDsKLQotICAgIGlmIChtX3N0YXR1c2JhcikKLSAgICAgICAgbV9zdGF0dXNi
YXItPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fc3RhdHVzYmFyID0gMDsKLQotICAgIGlmICht
X3Rvb2xiYXIpCi0gICAgICAgIG1fdG9vbGJhci0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV90
b29sYmFyID0gMDsKLQotICAgIGlmIChtX2NvbnNvbGUpCi0gICAgICAgIG1fY29uc29sZS0+ZGlz
Y29ubmVjdEZyYW1lKCk7CiAgICAgbV9jb25zb2xlID0gMDsKLQotICAgIGlmIChtX25hdmlnYXRv
cikKLSAgICAgICAgbV9uYXZpZ2F0b3ItPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbmF2aWdh
dG9yID0gMDsKLQogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIGlmIChtX3BlcmZvcm1hbmNl
KQotICAgICAgICBtX3BlcmZvcm1hbmNlLT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX3BlcmZv
cm1hbmNlID0gMDsKICNlbmRpZgotCi0gICAgaWYgKG1fbG9jYXRpb24pCi0gICAgICAgIG1fbG9j
YXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbG9jYXRpb24gPSAwOwotCi0gICAgaWYg
KG1fbWVkaWEpCi0gICAgICAgIG1fbWVkaWEtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbWVk
aWEgPSAwOwotCi0gICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2UpCi0gICAgICAgIG1fc2Vzc2lvblN0
b3JhZ2UtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSAwOwotCi0g
ICAgaWYgKG1fbG9jYWxTdG9yYWdlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZS0+ZGlzY29ubmVj
dEZyYW1lKCk7CiAgICAgbV9sb2NhbFN0b3JhZ2UgPSAwOwotCi0gICAgaWYgKG1fYXBwbGljYXRp
b25DYWNoZSkKLSAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlLT5kaXNjb25uZWN0RnJhbWUoKTsK
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSAwOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CisgICAgLy8gRklYTUU6IE5vdGlmaWNhdGlvbnMgc2hvdWxkbid0IGhhdmUgZGlmZmVyZW50IGRp
c2Nvbm5lY3Rpb24gbG9naWMgdGhhbgorICAgIC8vIHRoZSByZXN0IG9mIHRoZSBET01XaW5kb3dQ
cm9wZXJ0aWVzLgogICAgIHJlc2V0Tm90aWZpY2F0aW9ucygpOwogI2VuZGlmCi0KICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBtX2lkYkZhY3RvcnkgPSAwOwogI2VuZGlmCi0KICNp
ZiBFTkFCTEUoQkxPQikKICAgICBtX2RvbVVSTCA9IDA7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShR
VU9UQSkKICAgICBtX3N0b3JhZ2VJbmZvID0gMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVNlbGVjdGlv
bjsKICAgICBjbGFzcyBET01VUkw7CisgICAgY2xhc3MgRE9NV2luZG93UHJvcGVydHk7CiAgICAg
Y2xhc3MgRGF0YWJhc2U7CiAgICAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKICAgICBjbGFzcyBE
b2N1bWVudDsKQEAgLTkzLDYgKzk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCisgICAgICAgIHZvaWQg
cmVnaXN0ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSopOworICAgICAgICB2b2lkIHVucmVn
aXN0ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSopOworCiAgICAgICAgIHZvaWQgY2xlYXIo
KTsKIAogICAgICAgICBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNvbnN0
IFN0cmluZyYpOwpAQCAtNDM3LDYgKzQ0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgS1VSTCBtX3VybDsKIAogICAgICAgICBib29sIG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRM
b2FkaW5nOworCisgICAgICAgIEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPiBtX3Byb3BlcnRp
ZXM7CisKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U2NyZWVuPiBtX3NjcmVlbjsKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RE9NU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8SGlzdG9yeT4gbV9oaXN0b3J5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd1Byb3BlcnR5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgorCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitE
T01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1lKQorICAgIDog
bV9mcmFtZShmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZSkKKyAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7Cit9CisKK0RPTVdpbmRvd1Byb3BlcnR5
Ojp+RE9NV2luZG93UHJvcGVydHkoKQoreworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+dW5yZWdpc3RlclByb3BlcnR5KHRoaXMpOworfQorCit2b2lkIERP
TVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIG1fZnJhbWUgPSAwOwor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01XaW5kb3dQcm9wZXJ0eV9oCisjZGVmaW5lIERP
TVdpbmRvd1Byb3BlcnR5X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsK
KworY2xhc3MgRE9NV2luZG93UHJvcGVydHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IERPTVdp
bmRvd1Byb3BlcnR5KEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgp
OworCisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB+RE9NV2luZG93UHJvcGVydHkoKTsKKworICAgIEZyYW1lKiBt
X2ZyYW1lOworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b24uY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgR2VvbG9jYXRp
b246OldhdGNoZXJzOjpnZXROb3RpZmllcnMKIH0KIAogR2VvbG9jYXRpb246Okdlb2xvY2F0aW9u
KEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9w
ZXJ0eShmcmFtZSkKICNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAs
IG1fc2VydmljZShHZW9sb2NhdGlvblNlcnZpY2U6OmNyZWF0ZSh0aGlzKSkKICNlbmRpZgpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAg
cmVzZXQoKTsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVc2luZ0dlb2xvY2F0aW9uKGZhbHNlKTsKLSAgICBt
X2ZyYW1lID0gMDsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CiB9
CiAKIEdlb3Bvc2l0aW9uKiBHZW9sb2NhdGlvbjo6bGFzdFBvc2l0aW9uKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2VvbG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lm
bmRlZiBHZW9sb2NhdGlvbl9oCiAjZGVmaW5lIEdlb2xvY2F0aW9uX2gKIAorI2luY2x1ZGUgIkRP
TVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKICNpbmNsdWRlICJQ
b3NpdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgpAQCAtNDcsMjUg
KzQ4LDIzIEBAIGNsYXNzIEdlb2xvY2F0aW9uRXJyb3I7CiAjZW5kaWYKIGNsYXNzIFBhZ2U7CiAK
LWNsYXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvbG9jYXRpb24+CitjbGFz
cyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uPiwgcHVibGljIERP
TVdpbmRvd1Byb3BlcnR5CiAjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICYm
IEVOQUJMRShHRU9MT0NBVElPTikKICAgICAsIHB1YmxpYyBHZW9sb2NhdGlvblNlcnZpY2VDbGll
bnQKICNlbmRpZgogewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb2xvY2F0aW9u
PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2VvbG9jYXRpb24o
ZnJhbWUpKTsgfQotCiAgICAgfkdlb2xvY2F0aW9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
Y29ubmVjdEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgZGlz
Y29ubmVjdEZyYW1lKCk7Ci0gICAgCisKICAgICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQYXNz
UmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CiAgICAgaW50IHdhdGNoUG9zaXRpb24o
UGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogICAgIHZvaWQgY2xlYXJXYXRj
aChpbnQgd2F0Y2hJZCk7CiAKICAgICB2b2lkIHNldElzQWxsb3dlZChib29sKTsKLSAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKICNpZiBFTkFCTEUoQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKCk7CkBAIC03OSw4
ICs3OCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBZZXM7IH0KICAgICBib29sIGlzRGVuaWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd0dlb2xvY2F0aW9uID09IE5vOyB9Ci0gICAgCi0gICAgR2VvbG9jYXRp
b24oRnJhbWUqKTsKKworICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uKEZyYW1lKik7CiAKICAgICBQ
YWdlKiBwYWdlKCkgY29uc3Q7CiAKQEAgLTE3Miw3ICsxNzEsNiBAQCBwcml2YXRlOgogCiAgICAg
R2VvTm90aWZpZXJTZXQgbV9vbmVTaG90czsKICAgICBXYXRjaGVycyBtX3dhdGNoZXJzOwotICAg
IEZyYW1lKiBtX2ZyYW1lOwogI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQog
ICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2U+IG1fc2VydmljZTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMCArNDEsMTAgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSGlzdG9yeTo6SGlzdG9yeShGcmFtZSogZnJhbWUpCi0gICAg
OiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAK
LUZyYW1lKiBIaXN0b3J5OjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWU7Ci19
Ci0KLXZvaWQgSGlzdG9yeTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBtX2ZyYW1lID0gMDsK
LX0KLQogdW5zaWduZWQgSGlzdG9yeTo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJh
bWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgSGlzdG9yeV9oCiAjZGVmaW5lIEhpc3RvcnlfaAogCisjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzgsMTIgKzM5LDkgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEhpc3RvcnkgOiBwdWJsaWMgUmVmQ291
bnRlZDxIaXN0b3J5PiB7CitjbGFzcyBIaXN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9y
eT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SGlzdG9yeT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IEhpc3RvcnkoZnJhbWUpKTsgfQotICAgIAotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAg
IHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICB2b2lkIGJhY2soKTsKQEAgLTYxLDExICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
YXRlT2JqZWN0QWRkZWQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgU3RhdGVPYmplY3RUeXBlLCBFeGNlcHRp
b25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSGlzdG9yeShGcmFtZSopOworICAgIGV4cGxpY2l0
IEhpc3RvcnkoRnJhbWUqKTsKIAogICAgIEtVUkwgdXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1
cmwpOwotCi0gICAgRnJhbWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE1ICs0
MCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2NhdGlvbjo6TG9jYXRpb24oRnJhbWUq
IGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZy
YW1lKQogewogfQogCi12b2lkIExvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQotewotICAgIG1f
ZnJhbWUgPSAwOwotfQotCiBpbmxpbmUgY29uc3QgS1VSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAkocmV2
aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIExvY2F0aW9uX2gKICNkZWZpbmUgTG9j
YXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxMyArNDIsMTAgQEAgY2xhc3MgS1VSTDsKIAogdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxMb2NhdGlvbj4geworY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxMb2Nh
dGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBMb2NhdGlvbihmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIHZvaWQg
c2V0SHJlZihjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93
KiBmaXJzdFdpbmRvdyk7CiAgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsKIApAQCAtNzQsMTEgKzcy
LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGhyZWYo
KTsgfQogCiBwcml2YXRlOgotICAgIExvY2F0aW9uKEZyYW1lKik7CisgICAgZXhwbGljaXQgTG9j
YXRpb24oRnJhbWUqKTsKIAogICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotCi0gICAgRnJh
bWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihGcmFtZSogZnJhbWUpCi0g
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9
CiAKIE5hdmlnYXRvcjo6fk5hdmlnYXRvcigpCiB7Ci0gICAgZGlzY29ubmVjdEZyYW1lKCk7CiB9
CiAKIHZvaWQgTmF2aWdhdG9yOjpyZXNldEdlb2xvY2F0aW9uKCkKQEAgLTc0LDIzICs3Myw2IEBA
IHZvaWQgTmF2aWdhdG9yOjpyZXNldEdlb2xvY2F0aW9uKCkKICAgICAgICAgbV9nZW9sb2NhdGlv
bi0+cmVzZXQoKTsKIH0KIAotdm9pZCBOYXZpZ2F0b3I6OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0g
ICAgaWYgKG1fcGx1Z2lucykgewotICAgICAgICBtX3BsdWdpbnMtPmRpc2Nvbm5lY3RGcmFtZSgp
OwotICAgICAgICBtX3BsdWdpbnMgPSAwOwotICAgIH0KLSAgICBpZiAobV9taW1lVHlwZXMpIHsK
LSAgICAgICAgbV9taW1lVHlwZXMtPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBtX21pbWVU
eXBlcyA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dlb2xvY2F0aW9uKSB7Ci0gICAgICAgIG1fZ2Vv
bG9jYXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBtX2dlb2xvY2F0aW9uID0gMDsK
LSAgICB9Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KIC8vIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJu
cyB0cnVlLCB3ZSBuZWVkIHRvIGhpZGUgdGhlIHN1YnN0cmluZyAiNC4iIHRoYXQgd291bGQgb3Ro
ZXJ3aXNlCiAvLyBhcHBlYXIgaW4gdGhlIGFwcFZlcnNpb24gc3RyaW5nLiBUaGlzIGlzIHRvIGF2
b2lkIHByb2JsZW1zIHdpdGggb2xkIHZlcnNpb25zIG9mIGEKIC8vIGxpYnJhcnkgY2FsbGVkIE9w
ZW5DdWJlIFF1aWNrTWVudSwgd2hpY2ggYXMgb2YgdGhpcyB3cml0aW5nIGlzIHN0aWxsIGJlaW5n
IHVzZWQgb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gMTA0Mzc2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NiArMjAsNyBAQAogI2lmbmRlZiBOYXZpZ2F0b3JfaAogI2RlZmluZSBOYXZpZ2F0b3JfaAogCisj
aW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNDAsMTQgKzQxLDEyIEBAIGNsYXNzIFBsdWdpbkRhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLWNsYXNzIE5hdmlnYXRvciA6IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJs
aWMgUmVmQ291bnRlZDxOYXZpZ2F0b3I+IHsKK2NsYXNzIE5hdmlnYXRvciA6IHB1YmxpYyBOYXZp
Z2F0b3JCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxOYXZpZ2F0b3I+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdmlnYXRvcj4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5hdmlnYXRvcihmcmFtZSkp
OyB9CiAgICAgdmlydHVhbCB+TmF2aWdhdG9yKCk7CiAKICAgICB2b2lkIHJlc2V0R2VvbG9jYXRp
b24oKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIEZyYW1lKiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFN0cmluZyBhcHBWZXJzaW9uKCkgY29uc3Q7
CiAgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7CkBAIC04MSw4ICs4MCw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIE5hdmlnYXRvcihGcmFtZSopOwotICAgIEZyYW1lKiBt
X2ZyYW1lOworICAgIGV4cGxpY2l0IE5hdmlnYXRvcihGcmFtZSopOworCiAgICAgbXV0YWJsZSBS
ZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICBtdXRhYmxlIFJlZlB0cjxET01N
aW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBtdXRhYmxlIFJlZlB0cjxHZW9sb2NhdGlv
bj4gbV9nZW9sb2NhdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShy
ZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsMzQgKzQyLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBlcmZvcm1hbmNlOjpQZXJmb3JtYW5jZShGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZy
YW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAKLUZyYW1lKiBQZXJm
b3JtYW5jZTo6ZnJhbWUoKSBjb25zdAorUGFzc1JlZlB0cjxNZW1vcnlJbmZvPiBQZXJmb3JtYW5j
ZTo6bWVtb3J5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZTsKLX0KLQotdm9pZCBQZXJm
b3JtYW5jZTo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICBpZiAobV9tZW1vcnkpCi0gICAgICAg
IG1fbWVtb3J5ID0gMDsKLSAgICBpZiAobV9uYXZpZ2F0aW9uKSB7Ci0gICAgICAgIG1fbmF2aWdh
dGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbmF2aWdhdGlvbiA9IDA7Ci0gICAg
fQotICAgIGlmIChtX3RpbWluZykgewotICAgICAgICBtX3RpbWluZy0+ZGlzY29ubmVjdEZyYW1l
KCk7Ci0gICAgICAgIG1fdGltaW5nID0gMDsKLSAgICB9Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0K
LU1lbW9yeUluZm8qIFBlcmZvcm1hbmNlOjptZW1vcnkoKSBjb25zdAotewotICAgIG1fbWVtb3J5
ID0gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVybiBtX21lbW9yeS5nZXQo
KTsKKyAgICByZXR1cm4gTWVtb3J5SW5mbzo6Y3JlYXRlKG1fZnJhbWUpOwogfQogCiBQZXJmb3Jt
YW5jZU5hdmlnYXRpb24qIFBlcmZvcm1hbmNlOjpuYXZpZ2F0aW9uKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZU5hdmlnYXRp
b24uaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZVRpbWluZy5oIgpAQCAtNDIsMjcgKzQzLDIzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxQZXJmb3JtYW5jZT4geworY2xhc3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxQZXJmb3JtYW5jZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVyZm9ybWFuY2U+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQZXJmb3JtYW5jZShmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSog
ZnJhbWUoKSBjb25zdDsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotCi0gICAgTWVtb3J5
SW5mbyogbWVtb3J5KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZW1vcnlJbmZvPiBtZW1vcnko
KSBjb25zdDsKICAgICBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIG5hdmlnYXRpb24oKSBjb25zdDsK
ICAgICBQZXJmb3JtYW5jZVRpbWluZyogdGltaW5nKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
UGVyZm9ybWFuY2UoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBQZXJmb3JtYW5jZShGcmFtZSopOwog
Ci0gICAgbXV0YWJsZSBSZWZQdHI8TWVtb3J5SW5mbz4gbV9tZW1vcnk7CiAgICAgbXV0YWJsZSBS
ZWZQdHI8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiBtX25hdmlnYXRpb247CiAgICAgbXV0YWJsZSBS
ZWZQdHI8UGVyZm9ybWFuY2VUaW1pbmc+IG1fdGltaW5nOwotICAgIEZyYW1lKiBtX2ZyYW1lOwog
fTsKIAogfQogCi0jZW5kaWYgLy8gIUVOQUJMRShXRUJfVElNSU5HKQotI2VuZGlmIC8vICFkZWZp
bmVkKFBlcmZvcm1hbmNlX2gpCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCisKKyNlbmRp
ZiAvLyBQZXJmb3JtYW5jZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb24uY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0
MCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQZXJmb3JtYW5jZU5hdmlnYXRpb246OlBl
cmZvcm1hbmNlTmF2aWdhdGlvbihGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQor
ICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAKLUZyYW1lKiBQZXJmb3JtYW5j
ZU5hdmlnYXRpb246OmZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcmFtZTsKLX0KLQot
dm9pZCBQZXJmb3JtYW5jZU5hdmlnYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAgbV9m
cmFtZSA9IDA7Ci19Ci0KIHVuc2lnbmVkIHNob3J0IFBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6dHlw
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdp
bmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCkBAIC00MCwxMyArNDEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGcmFtZTsKIAotY2xhc3MgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiB7CitjbGFzcyBQZXJmb3JtYW5jZU5h
dmlnYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3JtYW5jZU5hdmlnYXRpb24+LCBwdWJs
aWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBl
cmZvcm1hbmNlTmF2aWdhdGlvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFBlcmZvcm1hbmNlTmF2aWdhdGlvbihmcmFtZSkpOyB9CiAKLSAgICBGcmFtZSogZnJh
bWUoKSBjb25zdDsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotCiAgICAgZW51bSBQZXJm
b3JtYW5jZU5hdmlnYXRpb25UeXBlIHsKICAgICAgICAgVFlQRV9OQVZJR0FURSwKICAgICAgICAg
VFlQRV9SRUxPQUQsCkBAIC01OCw5ICs1Niw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9y
dCByZWRpcmVjdENvdW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uKEZyYW1lKik7Ci0KLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBleHBsaWNpdCBQZXJm
b3JtYW5jZU5hdmlnYXRpb24oRnJhbWUqKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCShyZXZpc2lvbiAxMDQzNzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MjAgKzUxLDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgdG9JbnRlZ2VyTWlsbGkKIH0K
IAogUGVyZm9ybWFuY2VUaW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKEZyYW1lKiBmcmFtZSkKLSAg
ICA6IG1fZnJhbWUoZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKIH0K
IAotRnJhbWUqIFBlcmZvcm1hbmNlVGltaW5nOjpmcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZnJhbWU7Ci19Ci0KLXZvaWQgUGVyZm9ybWFuY2VUaW1pbmc6OmRpc2Nvbm5lY3RGcmFtZSgp
Ci17Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KCkgY29uc3QKIHsKICAgICBEb2N1bWVudExvYWRUaW1p
bmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuaAkocmV2aXNpb24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAorI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3Bl
cnR5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00NCwxMyArNDUsMTAgQEAgc3RydWN0IERvY3VtZW50VGltaW5nOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7CiAKLWNsYXNzIFBlcmZvcm1hbmNl
VGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+IHsKK2NsYXNzIFBl
cmZvcm1hbmNlVGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2VUaW1pbmc+LCBw
dWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlcmZvcm1hbmNlVGltaW5nPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgUGVyZm9ybWFuY2VUaW1pbmcoZnJhbWUpKTsgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3Q7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLQogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBuYXZpZ2F0aW9uU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5s
b2FkRXZlbnRTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bmxvYWRFdmVu
dEVuZCgpIGNvbnN0OwpAQCAtNzQsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGxvYWRFdmVudEVuZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFBlcmZvcm1hbmNl
VGltaW5nKEZyYW1lKik7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VUaW1pbmcoRnJhbWUqKTsK
IAogICAgIGNvbnN0IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZygpIGNvbnN0OwogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0OwpAQCAtODIsOCArODAsNiBA
QCBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
QWJzb2x1dGUoaW50KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGlt
ZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwotCi0gICAgRnJhbWUqIG1fZnJh
bWU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCShyZXZpc2lvbiAxMDQzNzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDIwICszOSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JlZW46OlNjcmVlbihGcmFt
ZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHko
ZnJhbWUpCiB7CiB9CiAKLUZyYW1lKiBTY3JlZW46OmZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9mcmFtZTsKLX0KLQotdm9pZCBTY3JlZW46OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAg
bV9mcmFtZSA9IDA7Ci19Ci0KIHVuc2lnbmVkIFNjcmVlbjo6aG9yaXpvbnRhbERQSSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oCShyZXZpc2lvbiAx
MDQzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIFNjcmVlbl9oCiAjZGVmaW5lIFNjcmVlbl9oCiAKKyNp
bmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzcsMTMgKzM4LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lOwogCi0gICAgY2xhc3MgU2NyZWVuIDog
cHVibGljIFJlZkNvdW50ZWQ8U2NyZWVuPiB7CisgICAgY2xhc3MgU2NyZWVuIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2NyZWVuPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmVlbj4gY3JlYXRlKEZyYW1lICpmcmFtZSkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFNjcmVlbihmcmFtZSkpOyB9CiAKLSAgICAgICAgRnJhbWUq
IGZyYW1lKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7Ci0KICAgICAg
ICAgdW5zaWduZWQgaG9yaXpvbnRhbERQSSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCB2ZXJ0
aWNhbERQSSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKQEAgLTU2
LDkgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBhdmFpbFdp
ZHRoKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTY3JlZW4oRnJhbWUqKTsKLSAg
ICAgICAgCi0gICAgICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICBleHBsaWNpdCBTY3JlZW4o
RnJhbWUqKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAJKHJldmlzaW9uIDEwNDM3NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NTWltZVR5
cGVBcnJheTo6RE9NTWltZVR5cGVBcnJheShGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZy
YW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCShyZXZpc2lvbiAxMDQzNzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01NaW1lVHlwZUFycmF5X2gKIAogI2luY2x1
ZGUgIkRPTU1pbWVUeXBlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTMyLDI0ICszMywxOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBsdWdpbkRhdGE7CiAKLWNsYXNzIERPTU1pbWVUeXBl
QXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1lVHlwZUFycmF5PiB7CitjbGFzcyBET01N
aW1lVHlwZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NTWltZVR5cGVBcnJheT4sIHB1Ymxp
YyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
TWltZVR5cGVBcnJheT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IERPTU1pbWVUeXBlQXJyYXkoZnJhbWUpKTsgfQogICAgIH5ET01NaW1lVHlwZUFycmF5KCk7CiAK
LSAgICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAg
ICBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFt
ZSk7CiAgICAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBET01NaW1lVHlwZUFycmF5KEZy
YW1lKik7CisgICAgZXhwbGljaXQgRE9NTWltZVR5cGVBcnJheShGcmFtZSopOwogICAgIFBsdWdp
bkRhdGEqIGdldFBsdWdpbkRhdGEoKSBjb25zdDsKLQotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5jcHAJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTVBsdWdpbkFycmF5OjpET01QbHVnaW5BcnJheShG
cmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVy
dHkoZnJhbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2lu
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmgJKHJldmlzaW9uIDEwNDM3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1
Z2luQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBET01Q
bHVnaW5BcnJheV9oCiAKICNpbmNsdWRlICJET01QbHVnaW4uaCIKKyNpbmNsdWRlICJET01XaW5k
b3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzIsMTQgKzMzLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGx1Z2luRGF0YTsK
IAotY2xhc3MgRE9NUGx1Z2luQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5BcnJh
eT4geworY2xhc3MgRE9NUGx1Z2luQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW5B
cnJheT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBET01QbHVnaW5BcnJheShmcmFtZSkpOyB9CiAgICAgfkRPTVBsdWdpbkFycmF5
KCk7CiAKLSAgICBGcmFtZSogZnJhbWUoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0gICAgdm9pZCBk
aXNjb25uZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVBsdWdpbj4gaXRlbSh1bnNpZ25lZCBpbmRleCk7
CiAgICAgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpOwpAQCAtNDgsMTAgKzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaChib29s
IHJlbG9hZCk7CiAKIHByaXZhdGU6Ci0gICAgRE9NUGx1Z2luQXJyYXkoRnJhbWUqKTsKKyAgICBl
eHBsaWNpdCBET01QbHVnaW5BcnJheShGcmFtZSopOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRh
dGEoKSBjb25zdDsKLQotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCShyZXZpc2lvbiAxMDQz
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKEZy
YW0KIH0KIAogU3RvcmFnZTo6U3RvcmFnZShGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICA6IERPTVdpbmRv
d1Byb3BlcnR5KGZyYW1lKQogICAgICwgbV9zdG9yYWdlQXJlYShzdG9yYWdlQXJlYSkKIHsKICAg
ICBBU1NFUlQobV9mcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAkocmV2aXNp
b24gMTA0Mzc2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgU3RvcmFnZV9oCiAjZGVmaW5lIFN0b3Jh
Z2VfaAogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtMzYsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3Rv
cmFnZUFyZWE7CiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotICAgIGNsYXNzIFN0
b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiB7CisgICAgY2xhc3MgU3RvcmFnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RvcmFnZT4gY3JlYXRlKEZy
YW1lKiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4pOwogICAgICAgICB+U3RvcmFnZSgpOwpAQCAt
NTAsMTMgKzUxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCi0gICAgICAgIEZyYW1lKiBmcmFtZSgpIHsg
cmV0dXJuIG1fZnJhbWU7IH0KLSAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1fZnJh
bWUgPSAwOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlKEZyYW1lKiwgUGFzc1Jl
ZlB0cjxTdG9yYWdlQXJlYT4pOwogCi0gICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBS
ZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CiAgICAgfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>