<?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>100316</bug_id>
          
          <creation_ts>2012-10-24 18:24:09 -0700</creation_ts>
          <short_desc>[V8] We can merge DOMDataStore, ScopedDOMDataStore, and StaticDOMDataStore into one class</short_desc>
          <delta_ts>2012-10-25 00:14:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>100333</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>750271</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 18:24:09 -0700</bug_when>
    <thetext>[V8] We can merge DOMDataStore, ScopedDOMDataStore, and StaticDOMDataStore into one class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750272</commentid>
    <comment_count>1</comment_count>
      <attachid>170531</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 18:24:27 -0700</bug_when>
    <thetext>Created attachment 170531
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750273</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 18:24:51 -0700</bug_when>
    <thetext>This currently crashes every worker test, but I&apos;m hoping to improve that soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750376</commentid>
    <comment_count>3</comment_count>
      <attachid>170552</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 22:40:07 -0700</bug_when>
    <thetext>Created attachment 170552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750389</commentid>
    <comment_count>4</comment_count>
      <attachid>170552</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-24 22:57:37 -0700</bug_when>
    <thetext>Comment on attachment 170552
Patch

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

LGTM.

&gt; Source/WebCore/ChangeLog:11
&gt; +        unifies all these classes into DOMDataStore itself. This makese this

makese!

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:57
&gt; +        m_domObjectMap = adoptPtr(new DOMWrapperHashMap&lt;void&gt;);
&gt; +        m_activeDomObjectMap = adoptPtr(new DOMWrapperHashMap&lt;void&gt;);

These are always the same for all 3, no?  It seems this whole &quot;Switch&quot; is clearer as an if.  But presumably you wanted the &quot;forgot to add handling of the new enum value&quot; help from the compiler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750393</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 23:06:14 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 170552 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170552&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:57
&gt; &gt; +        m_domObjectMap = adoptPtr(new DOMWrapperHashMap&lt;void&gt;);
&gt; &gt; +        m_activeDomObjectMap = adoptPtr(new DOMWrapperHashMap&lt;void&gt;);
&gt; 
&gt; These are always the same for all 3, no?  It seems this whole &quot;Switch&quot; is clearer as an if.  But presumably you wanted the &quot;forgot to add handling of the new enum value&quot; help from the compiler?

Yeah, I thought they were going to be more different.  I&apos;ll change it to an if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750437</commentid>
    <comment_count>6</comment_count>
      <attachid>170563</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 23:41:16 -0700</bug_when>
    <thetext>Created attachment 170563
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750468</commentid>
    <comment_count>7</comment_count>
      <attachid>170563</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 00:14:36 -0700</bug_when>
    <thetext>Comment on attachment 170563
Patch for landing

Clearing flags on attachment: 170563

Committed r132454: &lt;http://trac.webkit.org/changeset/132454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750469</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 00:14:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170531</attachid>
            <date>2012-10-24 18:24:27 -0700</date>
            <delta_ts>2012-10-24 22:40:05 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-100316-20121024182301.patch</filename>
            <type>text/plain</type>
            <size>25713</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODczOWZiNGNkOGYwZjhk
YTM5MThhMjdlYWI2YjllYWMyOGQzNzA3MC4uNDk2MTQ3YTFjNzcxZDFjODUwNTg0N2UxMDQ2NzRi
MmMzOGU5MGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDEyLTEwLTI0ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBXZSBjYW4gbWVyZ2Ug
RE9NRGF0YVN0b3JlLCBTY29wZWRET01EYXRhU3RvcmUsIGFuZCBTdGF0aWNET01EYXRhU3RvcmUg
aW50byBvbmUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJv
YWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxv
dyAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRGF0YVN0b3JlOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6cmVw
b3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgor
ICAgICAgICAoRE9NRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6
ZG9tTm9kZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmFjdGl2ZURvbU5v
ZGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpkb21PYmplY3RNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjphY3RpdmVEb21PYmplY3RNYXApOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5ldXRlckJpbmRpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFT
dG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0YVN0
b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlSGFuZGxlOjpET01EYXRhU3RvcmVIYW5kbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlSGFuZGxlOjp+RE9NRGF0YVN0b3JlSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0QWN0aXZlRE9NTm9kZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaXRET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0QWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oOgorICAg
ICAgICAoVjhQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXb3JrZXJTY3JpcHRDb250cm9sbGVyKToK
KworMjAxMi0xMC0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAg
IFtWOF0gRE9NRGF0YSBpcyBubyBsb25nZXIgbmVlZGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzMTMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDk0
ODBkMmU5NTM2Mjc5ODllOWZjYzVjZjE3OGE5YWFjOTZmYjIyZmEuLmViMTY5MjczMDg4OTU5MGEx
NWZmMTk2ZjY4NjNjNjBkYjJjNzM2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIyNTQsOCArMjI1
NCw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9T
Y29wZWRET01EYXRhU3RvcmUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkUGVy
c2lzdGVudC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
aCcsCkBAIC0yMjk3LDggKzIyOTUsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TaGFyZWRQZXJzaXN0
ZW50LmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5jcHAn
LAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggMGQ4N2YwOWZlYmI4NjJhMDlhMmZmMmIzOGQ1ZTk0
YmVjZGY0ODdkYy4uNWEwMDVjZDY3Njc0MTFhNzc1Y2ZmYzM4YmM4NzBmNWM4MDlhNTBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC0zMSwyOCAr
MzEsNTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIK
IAotI2luY2x1ZGUgIlN0YXRpY0RPTURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJN
YXAuaCIKKyNpbmNsdWRlICJJbnRydXNpdmVET01XcmFwcGVyTWFwLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRGF0
YVN0b3JlOjpET01EYXRhU3RvcmUoKQotICAgIDogbV9kb21Ob2RlTWFwKDApCi0gICAgLCBtX2Fj
dGl2ZURvbU5vZGVNYXAoMCkKLSAgICAsIG1fZG9tT2JqZWN0TWFwKDApCi0gICAgLCBtX2FjdGl2
ZURvbU9iamVjdE1hcCgwKQorRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoVHlwZSB0eXBlKQor
ICAgIDogbV90eXBlKHR5cGUpCiB7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNYWlu
V29ybGQ6CisgICAgICAgIG1fZG9tTm9kZU1hcCA9IGFkb3B0UHRyKG5ldyBET01Ob2RlV3JhcHBl
ck1hcCk7CisgICAgICAgIG1fYWN0aXZlRG9tTm9kZU1hcCA9IGFkb3B0UHRyKG5ldyBBY3RpdmVE
T01Ob2RlV3JhcHBlck1hcCk7CisgICAgICAgIG1fZG9tT2JqZWN0TWFwID0gYWRvcHRQdHIobmV3
IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+KTsKKyAgICAgICAgbV9hY3RpdmVEb21PYmplY3RNYXAg
PSBhZG9wdFB0cihuZXcgRE9NV3JhcHBlckhhc2hNYXA8dm9pZD4pOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIElzb2xhdGVkV29ybGQ6CisgICAgICAgIG1fZG9tTm9kZU1hcCA9IGFkb3B0UHRy
KG5ldyBET01XcmFwcGVySGFzaE1hcDxOb2RlPik7CisgICAgICAgIG1fYWN0aXZlRG9tTm9kZU1h
cCA9IGFkb3B0UHRyKG5ldyBET01XcmFwcGVySGFzaE1hcDxOb2RlPik7CisgICAgICAgIG1fZG9t
T2JqZWN0TWFwID0gYWRvcHRQdHIobmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+KTsKKyAgICAg
ICAgbV9hY3RpdmVEb21PYmplY3RNYXAgPSBhZG9wdFB0cihuZXcgRE9NV3JhcHBlckhhc2hNYXA8
dm9pZD4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdvcmtlcjoKKyAgICAgICAgLy8gTm90
aWNlIHRoYXQgd29ya2VycyBkbyBub3QgaGF2ZSBOb2RlIG1hcHMgYmVjYXVzZSB0aGVyZSBhcmUg
bm8gRE9NIG5vZGVzIGluIHdvcmtlcnMuCisgICAgICAgIG1fZG9tT2JqZWN0TWFwID0gYWRvcHRQ
dHIobmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+KTsKKyAgICAgICAgbV9hY3RpdmVEb21PYmpl
Y3RNYXAgPSBhZG9wdFB0cihuZXcgRE9NV3JhcHBlckhhc2hNYXA8dm9pZD4pOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlZ2lzdGVy
RE9NRGF0YVN0b3JlKHRoaXMpOwogfQogCiBET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUoKQog
eworICAgIEFTU0VSVChtX3R5cGUgIT0gTWFpbldvcmxkKTsgLy8gV2UgbmV2ZXIgYWN0dWFsbHkg
ZGVzdHJ1Y3QgdGhlIG1haW4gd29ybGQncyBET01EYXRhU3RvcmUuCisKKyAgICBWOFBlcklzb2xh
dGVEYXRhOjpjdXJyZW50KCktPnVucmVnaXN0ZXJET01EYXRhU3RvcmUodGhpcyk7CisKKyAgICBp
ZiAobV90eXBlID09IElzb2xhdGVkV29ybGQpIHsKKyAgICAgICAgbV9kb21Ob2RlTWFwLT5jbGVh
cigpOworICAgICAgICBtX2FjdGl2ZURvbU5vZGVNYXAtPmNsZWFyKCk7CisgICAgfQorICAgIG1f
ZG9tT2JqZWN0TWFwLT5jbGVhcigpOworICAgIG1fYWN0aXZlRG9tT2JqZWN0TWFwLT5jbGVhcigp
OwogfQogCiBET01EYXRhU3RvcmUqIERPTURhdGFTdG9yZTo6ZnJvbSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0YXRpY0RPTURhdGFTdG9yZSwgZGVm
YXVsdFN0b3JlLCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01EYXRhU3RvcmUsIGRl
ZmF1bHRTdG9yZSwgKE1haW5Xb3JsZCkpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIGlmIChVTkxJS0VMWSghIWRhdGEt
PmRvbURhdGFTdG9yZSgpKSkKICAgICAgICAgcmV0dXJuIGRhdGEtPmRvbURhdGFTdG9yZSgpOwpA
QCAtNjUsMTAgKzk0LDEwIEBAIERPTURhdGFTdG9yZSogRE9NRGF0YVN0b3JlOjpmcm9tKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogdm9pZCBET01EYXRhU3RvcmU6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpC
aW5kaW5nKTsKLSAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1fZG9tTm9kZU1hcCk7Ci0gICAgaW5m
by5hZGRXZWFrUG9pbnRlcihtX2FjdGl2ZURvbU5vZGVNYXApOwotICAgIGluZm8uYWRkV2Vha1Bv
aW50ZXIobV9kb21PYmplY3RNYXApOwotICAgIGluZm8uYWRkV2Vha1BvaW50ZXIobV9hY3RpdmVE
b21PYmplY3RNYXApOworICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tTm9kZU1hcCk7CisgICAgaW5m
by5hZGRNZW1iZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2Rv
bU9iamVjdE1hcCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9hY3RpdmVEb21PYmplY3RNYXApOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5oCmluZGV4IDY3NGZkNmVkN2U3NWY2MzNmZmZlYTllODJlNGI3NzI2NzgxMTc1
MzMuLjdiY2M2ZDQ4OTUxOWE3NDAzYjI1MDU4MzU0MjQwMjIxZDkyNWI3YzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC00NSw0MSArNDUsMzQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRE9NRGF0YVN0b3JlOwotCi0gICAgdHlw
ZWRlZiBWZWN0b3I8RE9NRGF0YVN0b3JlKj4gRE9NRGF0YUxpc3Q7Ci0KLSAgICAvLyBET01EYXRh
U3RvcmUKLSAgICAvLwotICAgIC8vIERPTURhdGFTdG9yZSBpcyB0aGUgYmFja2luZyBzdG9yZSB0
aGF0IGhvbGRzIHRoZSBtYXBzIGJldHdlZW4gRE9NIG9iamVjdHMKLSAgICAvLyBhbmQgSmF2YVNj
cmlwdCBvYmplY3RzLiAgSW4gZ2VuZXJhbCwgZWFjaCB0aHJlYWQgY2FuIGhhdmUgbXVsdGlwbGUg
YmFja2luZwotICAgIC8vIHN0b3Jlcywgb25lIHBlciBpc29sYXRlZCB3b3JsZC4KLSAgICAvLwot
ICAgIC8vIFRoaXMgY2xhc3MgZG9lc24ndCBtYW5hZ2UgdGhlIGxpZmV0aW1lIG9mIHRoZSBzdG9y
ZS4gIFRoZSBkYXRhIHN0b3JlCi0gICAgLy8gbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBzdWJjbGFz
c2VzLgotICAgIC8vCi0gICAgY2xhc3MgRE9NRGF0YVN0b3JlIHsKLSAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRE9NRGF0YVN0b3JlKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
fkRPTURhdGFTdG9yZSgpOworY2xhc3MgRE9NRGF0YVN0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShET01EYXRhU3RvcmUpOworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAg
IE1haW5Xb3JsZCwKKyAgICAgICAgSXNvbGF0ZWRXb3JsZCwKKyAgICAgICAgV29ya2VyLAorICAg
IH07CiAKLSAgICAgICAgc3RhdGljIERPTURhdGFTdG9yZSogZnJvbSh2ODo6SXNvbGF0ZSopOwor
ICAgIGV4cGxpY2l0IERPTURhdGFTdG9yZShUeXBlKTsKKyAgICB+RE9NRGF0YVN0b3JlKCk7CiAK
LSAgICAgICAgRE9NV3JhcHBlck1hcDxOb2RlPiYgZG9tTm9kZU1hcCgpIHsgcmV0dXJuICptX2Rv
bU5vZGVNYXA7IH0KLSAgICAgICAgRE9NV3JhcHBlck1hcDxOb2RlPiYgYWN0aXZlRG9tTm9kZU1h
cCgpIHsgcmV0dXJuICptX2FjdGl2ZURvbU5vZGVNYXA7IH0KLSAgICAgICAgRE9NV3JhcHBlck1h
cDx2b2lkPiYgZG9tT2JqZWN0TWFwKCkgeyByZXR1cm4gKm1fZG9tT2JqZWN0TWFwOyB9Ci0gICAg
ICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGFjdGl2ZURvbU9iamVjdE1hcCgpIHsgcmV0dXJuICpt
X2FjdGl2ZURvbU9iamVjdE1hcDsgfQorICAgIHN0YXRpYyBET01EYXRhU3RvcmUqIGZyb20odjg6
Oklzb2xhdGUqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OworICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4mIGRvbU5vZGVN
YXAoKSB7IHJldHVybiAqbV9kb21Ob2RlTWFwOyB9CisgICAgRE9NV3JhcHBlck1hcDxOb2RlPiYg
YWN0aXZlRG9tTm9kZU1hcCgpIHsgcmV0dXJuICptX2FjdGl2ZURvbU5vZGVNYXA7IH0KKyAgICBE
T01XcmFwcGVyTWFwPHZvaWQ+JiBkb21PYmplY3RNYXAoKSB7IHJldHVybiAqbV9kb21PYmplY3RN
YXA7IH0KKyAgICBET01XcmFwcGVyTWFwPHZvaWQ+JiBhY3RpdmVEb21PYmplY3RNYXAoKSB7IHJl
dHVybiAqbV9hY3RpdmVEb21PYmplY3RNYXA7IH0KIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAg
RE9NRGF0YVN0b3JlKCk7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKIAotICAgICAgICBET01XcmFwcGVyTWFwPE5vZGU+KiBtX2Rv
bU5vZGVNYXA7Ci0gICAgICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4qIG1fYWN0aXZlRG9tTm9kZU1h
cDsKLSAgICAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiogbV9kb21PYmplY3RNYXA7Ci0gICAgICAg
IERPTVdyYXBwZXJNYXA8dm9pZD4qIG1fYWN0aXZlRG9tT2JqZWN0TWFwOwotICAgIH07Citwcm90
ZWN0ZWQ6CisgICAgVHlwZSBtX3R5cGU7CisgICAgT3duUHRyPERPTVdyYXBwZXJNYXA8Tm9kZT4g
PiBtX2RvbU5vZGVNYXA7CisgICAgT3duUHRyPERPTVdyYXBwZXJNYXA8Tm9kZT4gPiBtX2FjdGl2
ZURvbU5vZGVNYXA7CisgICAgT3duUHRyPERPTVdyYXBwZXJNYXA8dm9pZD4gPiBtX2RvbU9iamVj
dE1hcDsKKyAgICBPd25QdHI8RE9NV3JhcHBlck1hcDx2b2lkPiA+IG1fYWN0aXZlRG9tT2JqZWN0
TWFwOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWFiN2U1MjQzOTQ3ODEwNTZkNTgzZTY5NTRlMWU4NGY2NjhmN2RlZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY29wZWRET01EYXRhU3Rv
cmUuaCIKLQotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2NvcGVkRE9NRGF0YVN0b3Jl
OjpTY29wZWRET01EYXRhU3RvcmUoKQotICAgIDogRE9NRGF0YVN0b3JlKCkKLXsKLSAgICBtX2Rv
bU5vZGVNYXAgPSBuZXcgRE9NV3JhcHBlckhhc2hNYXA8Tm9kZT47Ci0gICAgbV9hY3RpdmVEb21O
b2RlTWFwID0gbmV3IERPTVdyYXBwZXJIYXNoTWFwPE5vZGU+OwotICAgIG1fZG9tT2JqZWN0TWFw
ID0gbmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+OwotICAgIG1fYWN0aXZlRG9tT2JqZWN0TWFw
ID0gbmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+OwotfQotCi1TY29wZWRET01EYXRhU3RvcmU6
On5TY29wZWRET01EYXRhU3RvcmUoKQotewotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtb3Zpbmcg
dGhlc2UgY2FsbHMgdG8gY2xlYXIoKQotICAgIC8vIGludG8gdGhlIERPTVdyYXBwZXJIYXNoTWFw
IGRlc3RydWN0b3IuCi0gICAgbV9kb21Ob2RlTWFwLT5jbGVhcigpOwotICAgIG1fYWN0aXZlRG9t
Tm9kZU1hcC0+Y2xlYXIoKTsKLSAgICBtX2RvbU9iamVjdE1hcC0+Y2xlYXIoKTsKLSAgICBtX2Fj
dGl2ZURvbU9iamVjdE1hcC0+Y2xlYXIoKTsKLQotICAgIGRlbGV0ZSBtX2RvbU5vZGVNYXA7Ci0g
ICAgZGVsZXRlIG1fYWN0aXZlRG9tTm9kZU1hcDsKLSAgICBkZWxldGUgbV9kb21PYmplY3RNYXA7
Ci0gICAgZGVsZXRlIG1fYWN0aXZlRG9tT2JqZWN0TWFwOwotfQotCi12b2lkIFNjb3BlZERPTURh
dGFTdG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIERPTURhdGFTdG9yZTo6
cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIo
bV9kb21Ob2RlTWFwKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2FjdGl2ZURvbU5vZGVNYXApOwot
ICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tT2JqZWN0TWFwKTsKLSAgICBpbmZvLmFkZE1lbWJlciht
X2FjdGl2ZURvbU9iamVjdE1hcCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNjNiNmI5ZmY1ZjYzMzU2MmFhZjVjOTU0N2NmODRjZmEz
OWNkZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY29wZWRET01EYXRhU3RvcmVfaAotI2RlZmluZSBT
Y29wZWRET01EYXRhU3RvcmVfaAotCi0jaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotICAgIC8vIFNjb3BlZERPTURhdGFTdG9yZQotICAgIC8vCi0gICAg
Ly8gU2NvcGVkRE9NRGF0YVN0b3JlIGlzIGEgRE9NRGF0YVN0b3JlIHRoYXQgY29udHJvbHMgbGlt
aXRzIHRoZSBsaWZldGltZSBvZgotICAgIC8vIHRoZSBzdG9yZSB0byB0aGUgbGlmZXRpbWUgb2Yg
dGhlIG9iamVjdCBpdHNlbGYuICBJbiBvdGhlciB3b3Jkcywgd2hlbiB0aGUKLSAgICAvLyBTY29w
ZWRET01EYXRhU3RvcmUgb2JqZWN0IGlzIGRlYWxsb2NhdGVkLCB0aGUgbWFwcyB0aGF0IGJlbG9u
ZyB0byB0aGUgc3RvcmUKLSAgICAvLyBhcmUgZGVhbGxvY2F0ZWQgYXMgd2VsbC4KLSAgICAvLwot
ICAgIGNsYXNzIFNjb3BlZERPTURhdGFTdG9yZSA6IHB1YmxpYyBET01EYXRhU3RvcmUgewotICAg
IHB1YmxpYzoKLSAgICAgICAgU2NvcGVkRE9NRGF0YVN0b3JlKCk7Ci0KLSAgICAgICAgLy8gVGhp
cyBjYW4gYmUgY2FsbGVkIHdoZW4gV1RGIHRocmVhZCBpcyB0ZWFyaW5nIGRvd24uCi0gICAgICAg
IC8vIFdlIGFzc3VtZSB0aGF0IGFsbCBjaGlsZCB0aHJlYWRzIHJ1bm5pbmcgVjggaW5zdGFuY2Vz
IGFyZSBjcmVhdGVkIGJ5IFdURi4KLSAgICAgICAgdmlydHVhbCB+U2NvcGVkRE9NRGF0YVN0b3Jl
KCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdCBPVkVSUklERTsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBTY29wZWRET01EYXRhU3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZDg0OGVmNTA0
ZTQ5NzA0OTI5MDNjMjJiMWZhYmI4ZGYyYzc3MDIzMi4uMGY2MDQyMTI4NzUyZTQxN2FhNDE0YWVj
MTkxN2RiZTcwZGRjMWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMjA4LDcgKzIyMDgsNyBAQCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCiAKIHN0YXRpYyB2b2lkIG5l
dXRlckJpbmRpbmcodm9pZCogZG9tT2JqZWN0KSAKIHsKLSAgICBET01EYXRhTGlzdCYgYWxsU3Rv
cmVzID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0
b3I8RE9NRGF0YVN0b3JlKj4mIGFsbFN0b3JlcyA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KS0+YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbGxTdG9yZXMuc2l6
ZSgpOyBpKyspIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmogPSBhbGxTdG9y
ZXNbaV0tPmRvbU9iamVjdE1hcCgpLmdldChkb21PYmplY3QpOwogICAgICAgICBpZiAoIW9iai5J
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNE
T01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0
YVN0b3JlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5ZjlmZDA5NzU5MmFi
NmMwNzEwMGM3MGU3YzdlZTRiZmVhZGM3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRh
U3RvcmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTdGF0aWNET01EYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotU3RhdGljRE9NRGF0YVN0b3JlOjpTdGF0aWNET01EYXRhU3RvcmUoKQot
ewotICAgIG1fZG9tTm9kZU1hcCA9ICZtX3N0YXRpY0RvbU5vZGVNYXA7Ci0gICAgbV9hY3RpdmVE
b21Ob2RlTWFwID0gJm1fc3RhdGljQWN0aXZlRG9tTm9kZU1hcDsKLSAgICBtX2RvbU9iamVjdE1h
cCA9ICZtX3N0YXRpY0RvbU9iamVjdE1hcDsKLSAgICBtX2FjdGl2ZURvbU9iamVjdE1hcCA9ICZt
X3N0YXRpY0FjdGl2ZURvbU9iamVjdE1hcDsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPnJlZ2lzdGVyRE9NRGF0YVN0b3JlKHRoaXMpOwotfQotCi1TdGF0aWNET01EYXRhU3RvcmU6
On5TdGF0aWNET01EYXRhU3RvcmUoKQotewotICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KS0+dW5yZWdpc3RlckRPTURhdGFTdG9yZSh0aGlzKTsKLX0KLQotdm9pZCBTdGF0aWNET01EYXRh
U3RvcmU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nKTsKLSAgICBET01EYXRhU3RvcmU6OnJl
cG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1f
c3RhdGljRG9tTm9kZU1hcCk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9zdGF0aWNBY3RpdmVEb21O
b2RlTWFwKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3N0YXRpY0RvbU9iamVjdE1hcCk7Ci0gICAg
aW5mby5hZGRNZW1iZXIobV9zdGF0aWNBY3RpdmVEb21PYmplY3RNYXApOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
dGF0aWNET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RP
TURhdGFTdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGQxMWFkYWFlNTZm
OGI1MmEyNmEzOGIzOWUwMDU0YmFjMjhkM2JlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURh
dGFTdG9yZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3RhdGljRE9N
RGF0YVN0b3JlX2gKLSNkZWZpbmUgU3RhdGljRE9NRGF0YVN0b3JlX2gKLQotI2luY2x1ZGUgIkRP
TURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIkludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0vLyBTdGF0aWNET01EYXRhU3RvcmUKLS8vCi0vLyBTdGF0aWNE
T01EYXRhU3RvcmUgaXMgYSBET01EYXRhU3RvcmUgdGhhdCBtYW5hZ2VzIHRoZSBsaWZldGltZSBv
ZiB0aGUgc3RvcmUKLS8vIHN0YXRpY2FsbHkuICBUaGlzIGVuY2Fwc3VsYXRlcyB0aHJlYWQtc3Bl
Y2lmaWMgRE9NIGRhdGEgZm9yIHRoZSBtYWluCi0vLyB0aHJlYWQuICBBbGwgdGhlIG1hcHMgaW4g
aXQgYXJlIHN0YXRpYy4gIFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgdW5hYmxlIHRvCi0vLyByZWx5
IG9uIFdURjo6VGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0IHRvIGRvIHRoZSBjbGVhbnVwIHNpbmNl
IHRoZSBwbGFjZSB0aGF0Ci0vLyB0ZWFycyBkb3duIHRoZSBtYWluIHRocmVhZCBjYW4gbm90IGNh
bGwgYW55IFdURiBmdW5jdGlvbnMuCi0vLwotY2xhc3MgU3RhdGljRE9NRGF0YVN0b3JlIDogcHVi
bGljIERPTURhdGFTdG9yZSB7Ci1wdWJsaWM6Ci0gICAgU3RhdGljRE9NRGF0YVN0b3JlKCk7Ci0g
ICAgdmlydHVhbCB+U3RhdGljRE9NRGF0YVN0b3JlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwotCi1wcml2
YXRlOgotICAgIERPTU5vZGVXcmFwcGVyTWFwIG1fc3RhdGljRG9tTm9kZU1hcDsKLSAgICBBY3Rp
dmVET01Ob2RlV3JhcHBlck1hcCBtX3N0YXRpY0FjdGl2ZURvbU5vZGVNYXA7Ci0gICAgRE9NV3Jh
cHBlckhhc2hNYXA8dm9pZD4gbV9zdGF0aWNEb21PYmplY3RNYXA7Ci0gICAgRE9NV3JhcHBlckhh
c2hNYXA8dm9pZD4gbV9zdGF0aWNBY3RpdmVEb21PYmplY3RNYXA7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdGF0aWNET01EYXRhU3RvcmVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCmluZGV4IGNlYzdjM2VmNjMxOTkxYTIwODI2OTI5
YzUxYTQ1YmUxMDRmMDZiZmEuLmI1MTA3MTY1MmY0OWMxZTVhMjU2MThjZDY1Zjc1ZGQzZDhlYWNi
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJWOERPTU1hcC5oIgogCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgi
Ci0jaW5jbHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQw
LDE2ICszOSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01EYXRhU3RvcmVIYW5kbGU6
OkRPTURhdGFTdG9yZUhhbmRsZShib29sIGluaXRpYWxpemUpCi0gICAgOiBtX3N0b3JlKGFkb3B0
UHRyKCFpbml0aWFsaXplID8gMCA6IG5ldyBTY29wZWRET01EYXRhU3RvcmUoKSkpCiB7Ci0gICAg
aWYgKG1fc3RvcmUpCi0gICAgICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVnaXN0
ZXJET01EYXRhU3RvcmUobV9zdG9yZS5nZXQoKSk7CisgICAgaWYgKGluaXRpYWxpemUpCisgICAg
ICAgIG1fc3RvcmUgPSBhZG9wdFB0cihuZXcgRE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZTo6SXNv
bGF0ZWRXb3JsZCkpOwogfQogCiBET01EYXRhU3RvcmVIYW5kbGU6On5ET01EYXRhU3RvcmVIYW5k
bGUoKQogewotICAgIGlmIChtX3N0b3JlKQotICAgICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJy
ZW50KCktPnVucmVnaXN0ZXJET01EYXRhU3RvcmUobV9zdG9yZS5nZXQoKSk7CiB9CiAKIE5vZGVX
cmFwcGVyVmlzaXRvcjo6fk5vZGVXcmFwcGVyVmlzaXRvcigpCkBAIC0xMjYsNyArMTIyLDcgQEAg
dm9pZCB2aXNpdEFjdGl2ZURPTU5vZGVzKERPTVdyYXBwZXJWaXNpdG9yPE5vZGU+KiB2aXNpdG9y
KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0JiBsaXN0
ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0b3I8
RE9NRGF0YVN0b3JlKj4mIGxpc3QgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0
b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewog
ICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKIApAQCAtMTM4LDcgKzEzNCw3
IEBAIHZvaWQgdmlzaXRET01PYmplY3RzKERPTVdyYXBwZXJWaXNpdG9yPHZvaWQ+KiB2aXNpdG9y
KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0JiBsaXN0
ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0b3I8
RE9NRGF0YVN0b3JlKj4mIGxpc3QgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0
b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewog
ICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKIApAQCAtMTUwLDcgKzE0Niw3
IEBAIHZvaWQgdmlzaXRBY3RpdmVET01PYmplY3RzKERPTVdyYXBwZXJWaXNpdG9yPHZvaWQ+KiB2
aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0
JiBsaXN0ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBW
ZWN0b3I8RE9NRGF0YVN0b3JlKj4mIGxpc3QgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCkt
PmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsr
aSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCmluZGV4IDJlMzdiNGE4NmU5
M2E1NDg1ZTE2YTkxOTJhMjc5ZjJmYWE1NDc3ZTguLjc0OTAyMGUyMDdkMzBhNjlmMmQ0NDcyZGVm
ZGU5MTU3MGYxMzBlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVySXNvbGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklz
b2xhdGVEYXRhLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxTdHJp
bmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKICAgICBPd25QdHI8SW50ZWdlckNhY2hlPiBtX2ludGVn
ZXJDYWNoZTsKIAotICAgIERPTURhdGFMaXN0IG1fZG9tRGF0YUxpc3Q7CisgICAgVmVjdG9yPERP
TURhdGFTdG9yZSo+IG1fZG9tRGF0YUxpc3Q7CiAgICAgRE9NRGF0YVN0b3JlKiBtX2RvbURhdGFT
dG9yZTsKIAogICAgIE93blB0cjxWOEhpZGRlblByb3BlcnR5TmFtZT4gbV9oaWRkZW5Qcm9wZXJ0
eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IDdkNmI1OGE3YmYyYTU1NTk2Mzc4ZmRhNjMzZjFhOGUxNTQ4
YzNlMjMuLjM5MzA1ODdjMmNkNjYxNWMwYTg3MTU3MmFkYzMwMzViZDcwMTU3NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC02MCw5ICs2MCw5IEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlw
dENvbnRyb2xsZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKICAgICAsIG1fZXhlY3V0
aW9uU2NoZWR1bGVkVG9UZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmNyZWF0ZShtX2lzb2xhdGUpOwotICAgIGRhdGEtPmFs
bFN0b3JlcygpLmFwcGVuZCgmbV9ET01EYXRhU3RvcmUpOwotICAgIGRhdGEtPnNldERPTURhdGFT
dG9yZSgmbV9ET01EYXRhU3RvcmUpOwogICAgIG1faXNvbGF0ZS0+RW50ZXIoKTsKKyAgICBtX2Rv
bURhdGFTdG9yZSA9IGFkb3B0UHRyKG5ldyBET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlOjpXb3Jr
ZXIpKTsKKyAgICBkYXRhLT5zZXRET01EYXRhU3RvcmUobV9kb21EYXRhU3RvcmUuZ2V0KCkpOwog
ICAgIG1fcHJveHkgPSBhZG9wdFB0cihuZXcgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KHdv
cmtlckNvbnRleHQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDY4Y2U4OWFhZTA3ZmYzODY1OTBiYWY4Yjk5
Nzg0NjYyODYwODdjMGMuLmUwOGViOWQ5ZmEzNDVjMTAxOTcyZWNkOTlhNzYxYzMyODA2MWI0YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5j
bHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAKICNp
bmNsdWRlIDx2OC5oPgpAQCAtODIsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4dDsKICAgICAgICAgT3duUHRyPFdvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eT4gbV9wcm94eTsKICAgICAgICAgdjg6Oklzb2xhdGUqIG1f
aXNvbGF0ZTsKLSAgICAgICAgU2NvcGVkRE9NRGF0YVN0b3JlIG1fRE9NRGF0YVN0b3JlOworICAg
ICAgICBPd25QdHI8RE9NRGF0YVN0b3JlPiBtX2RvbURhdGFTdG9yZTsKICAgICAgICAgYm9vbCBt
X2V4ZWN1dGlvbkZvcmJpZGRlbjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvblNjaGVkdWxlZFRv
VGVybWluYXRlOwogICAgICAgICBtdXRhYmxlIE11dGV4IG1fc2NoZWR1bGVkVGVybWluYXRpb25N
dXRleDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170552</attachid>
            <date>2012-10-24 22:40:07 -0700</date>
            <delta_ts>2012-10-24 23:41:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100316-20121024223841.patch</filename>
            <type>text/plain</type>
            <size>27136</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkNDBiOWVkZDBhOWJi
ZjJjZWUyZDIwOGJmYWMzNjJjOGE4NDEwYi4uZjU1NzdiNTdlZDhiNjg0Y2VkNjk2Zjc0YTdjNzJm
OWFkMzExNTRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEyLTEwLTI0ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBXZSBjYW4gbWVyZ2Ug
RE9NRGF0YVN0b3JlLCBTY29wZWRET01EYXRhU3RvcmUsIGFuZCBTdGF0aWNET01EYXRhU3RvcmUg
aW50byBvbmUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByaW9yIHRvIHRoaXMgcGF0Y2gsIERPTURhdGFTdG9yZSBoYWQgdHdvIHN1YmNsYXNz
ZXMsCisgICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSBhbmQgU3RhdGljRE9NRGF0YVN0b3JlLCB3
aGljaCB1c2VkIHNsaWdobHkgZGlmZmVyZW50CisgICAgICAgIHdyYXBwZXIgbWFwIGJhc2UgY2xh
c3NlcyBhbmQgaGFkIGRpZmZlcmVudCBsaWZldGltZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgdW5p
ZmllcyBhbGwgdGhlc2UgY2xhc3NlcyBpbnRvIERPTURhdGFTdG9yZSBpdHNlbGYuIFRoaXMgbWFr
ZXNlIHRoaXMKKyAgICAgICAgY29kZSBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YVN0b3JlOjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFT
dG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5oOgorICAgICAgICAoRE9NRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURh
dGFTdG9yZTo6ZG9tTm9kZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmFj
dGl2ZURvbU5vZGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpkb21PYmpl
Y3RNYXApOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjphY3RpdmVEb21PYmplY3RN
YXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmg6IFJlbW92ZWQu
CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5ldXRlckJpbmRpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1N0YXRp
Y0RPTURhdGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU3RhdGlj
RE9NRGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlSGFuZGxlOjpET01EYXRhU3RvcmVI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlSGFuZGxlOjp+RE9NRGF0YVN0
b3JlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0QWN0aXZlRE9NTm9kZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6dmlzaXRET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0
QWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEu
aDoKKyAgICAgICAgKFY4UGVySXNvbGF0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV29ya2Vy
U2NyaXB0Q29udHJvbGxlcik6CisKKzIwMTItMTAtMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBbVjhdIERPTURhdGEgaXMgbm8gbG9uZ2VyIG5lZWRlZAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzEzCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCAzMzUzODZjNzE2MTNmYjNmNzcyMzlkNDgxNDIyZTU2ODM0NmU2ZDY4
Li5lYTZmNjAwNWY0MzBlY2ZhZTE2ZDg5NGY1YWJhYmIxNTU0OWM4Y2Y5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0yMjU0LDggKzIyNTQsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFp
bmVkT2JqZWN0SW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rp
b24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCcsCi0g
ICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCi0gICAgICAg
ICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmgnLApAQCAtMjI5Nyw4ICsyMjk1LDYgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2hhcmVkUGVyc2lzdGVudC5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TdGF0
aWNET01EYXRhU3RvcmUuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TdGF0aWNET01E
YXRhU3RvcmUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlz
dGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0
ZW5lci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IGY0NTk4OWQ1NGJm
ZTlmNjk5ZGI3MDExYTc0OGZjOTA4YmU5NzgxZmUuLjRjMDFmNjI0YzA4NzA4ODI5NjJiOTUxMGQ2
NDNmZWZhYzY0ZDNkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmNwcApAQCAtMzEsMjggKzMxLDUzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE9NRGF0YVN0b3JlLmgiCiAKLSNpbmNsdWRlICJTdGF0aWNET01EYXRhU3RvcmUuaCIKKyNp
bmNsdWRlICJET01XcmFwcGVyTWFwLmgiCisjaW5jbHVkZSAiSW50cnVzaXZlRE9NV3JhcHBlck1h
cC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLURPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKCkKLSAgICA6IG1fZG9tTm9k
ZU1hcCgwKQotICAgICwgbV9hY3RpdmVEb21Ob2RlTWFwKDApCi0gICAgLCBtX2RvbU9iamVjdE1h
cCgwKQotICAgICwgbV9hY3RpdmVEb21PYmplY3RNYXAoMCkKK0RPTURhdGFTdG9yZTo6RE9NRGF0
YVN0b3JlKFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQogeworICAgIHN3aXRjaCAodHlw
ZSkgeworICAgIGNhc2UgTWFpbldvcmxkOgorICAgICAgICBtX2RvbU5vZGVNYXAgPSBhZG9wdFB0
cihuZXcgRE9NTm9kZVdyYXBwZXJNYXApOworICAgICAgICBtX2FjdGl2ZURvbU5vZGVNYXAgPSBh
ZG9wdFB0cihuZXcgQWN0aXZlRE9NTm9kZVdyYXBwZXJNYXApOworICAgICAgICBtX2RvbU9iamVj
dE1hcCA9IGFkb3B0UHRyKG5ldyBET01XcmFwcGVySGFzaE1hcDx2b2lkPik7CisgICAgICAgIG1f
YWN0aXZlRG9tT2JqZWN0TWFwID0gYWRvcHRQdHIobmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJc29sYXRlZFdvcmxkOgorICAgIGNhc2UgV29y
a2VyOgorICAgICAgICBtX2RvbU5vZGVNYXAgPSBhZG9wdFB0cihuZXcgRE9NV3JhcHBlckhhc2hN
YXA8Tm9kZT4pOworICAgICAgICBtX2FjdGl2ZURvbU5vZGVNYXAgPSBhZG9wdFB0cihuZXcgRE9N
V3JhcHBlckhhc2hNYXA8Tm9kZT4pOworICAgICAgICBtX2RvbU9iamVjdE1hcCA9IGFkb3B0UHRy
KG5ldyBET01XcmFwcGVySGFzaE1hcDx2b2lkPik7CisgICAgICAgIG1fYWN0aXZlRG9tT2JqZWN0
TWFwID0gYWRvcHRQdHIobmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWdpc3RlckRP
TURhdGFTdG9yZSh0aGlzKTsKIH0KIAogRE9NRGF0YVN0b3JlOjp+RE9NRGF0YVN0b3JlKCkKIHsK
KyAgICBBU1NFUlQobV90eXBlICE9IE1haW5Xb3JsZCk7IC8vIFdlIG5ldmVyIGFjdHVhbGx5IGRl
c3RydWN0IHRoZSBtYWluIHdvcmxkJ3MgRE9NRGF0YVN0b3JlLgorCisgICAgVjhQZXJJc29sYXRl
RGF0YTo6Y3VycmVudCgpLT51bnJlZ2lzdGVyRE9NRGF0YVN0b3JlKHRoaXMpOworCisgICAgaWYg
KG1fdHlwZSA9PSBJc29sYXRlZFdvcmxkKSB7CisgICAgICAgIG1fZG9tTm9kZU1hcC0+Y2xlYXIo
KTsKKyAgICAgICAgbV9hY3RpdmVEb21Ob2RlTWFwLT5jbGVhcigpOworICAgIH0KKyAgICBtX2Rv
bU9iamVjdE1hcC0+Y2xlYXIoKTsKKyAgICBtX2FjdGl2ZURvbU9iamVjdE1hcC0+Y2xlYXIoKTsK
IH0KIAogRE9NRGF0YVN0b3JlKiBET01EYXRhU3RvcmU6OmN1cnJlbnQodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdGF0aWNET01EYXRhU3RvcmUsIGRl
ZmF1bHRTdG9yZSwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRE9NRGF0YVN0b3JlLCBk
ZWZhdWx0U3RvcmUsIChNYWluV29ybGQpKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBpZiAoVU5MSUtFTFkoISFkYXRh
LT5kb21EYXRhU3RvcmUoKSkpCiAgICAgICAgIHJldHVybiBkYXRhLT5kb21EYXRhU3RvcmUoKTsK
QEAgLTY1LDEwICs5MCwxMCBAQCBET01EYXRhU3RvcmUqIERPTURhdGFTdG9yZTo6Y3VycmVudCh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHZvaWQgRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9y
eUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBl
czo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2RvbU5vZGVNYXApOwotICAg
IGluZm8uYWRkV2Vha1BvaW50ZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsKLSAgICBpbmZvLmFkZFdl
YWtQb2ludGVyKG1fZG9tT2JqZWN0TWFwKTsKLSAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1fYWN0
aXZlRG9tT2JqZWN0TWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RvbU5vZGVNYXApOworICAg
IGluZm8uYWRkTWVtYmVyKG1fYWN0aXZlRG9tTm9kZU1hcCk7CisgICAgaW5mby5hZGRNZW1iZXIo
bV9kb21PYmplY3RNYXApOworICAgIGluZm8uYWRkTWVtYmVyKG1fYWN0aXZlRG9tT2JqZWN0TWFw
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaAppbmRleCA5MTRkMGQwNmY5YTAzOTdkYWVlZTQ5YjUyOWNjYWYyZTI2
YjY5ZmNjLi5mMDBlZjA0OTFiNWY1Zjg0NjBhNzBjMjUyNWQ3ZjI5YTY1MjJkMGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAtNDUsNDEgKzQ1LDM0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIERPTURhdGFTdG9yZTsKLQotICAg
IHR5cGVkZWYgVmVjdG9yPERPTURhdGFTdG9yZSo+IERPTURhdGFMaXN0OwotCi0gICAgLy8gRE9N
RGF0YVN0b3JlCi0gICAgLy8KLSAgICAvLyBET01EYXRhU3RvcmUgaXMgdGhlIGJhY2tpbmcgc3Rv
cmUgdGhhdCBob2xkcyB0aGUgbWFwcyBiZXR3ZWVuIERPTSBvYmplY3RzCi0gICAgLy8gYW5kIEph
dmFTY3JpcHQgb2JqZWN0cy4gIEluIGdlbmVyYWwsIGVhY2ggdGhyZWFkIGNhbiBoYXZlIG11bHRp
cGxlIGJhY2tpbmcKLSAgICAvLyBzdG9yZXMsIG9uZSBwZXIgaXNvbGF0ZWQgd29ybGQuCi0gICAg
Ly8KLSAgICAvLyBUaGlzIGNsYXNzIGRvZXNuJ3QgbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUg
c3RvcmUuICBUaGUgZGF0YSBzdG9yZQotICAgIC8vIGxpZmV0aW1lIGlzIG1hbmFnZWQgYnkgc3Vi
Y2xhc3Nlcy4KLSAgICAvLwotICAgIGNsYXNzIERPTURhdGFTdG9yZSB7Ci0gICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERPTURhdGFTdG9yZSk7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5ET01EYXRhU3RvcmUoKTsKK2NsYXNzIERPTURhdGFTdG9yZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRE9NRGF0YVN0b3JlKTsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAg
ICAgICBNYWluV29ybGQsCisgICAgICAgIElzb2xhdGVkV29ybGQsCisgICAgICAgIFdvcmtlciwK
KyAgICB9OwogCi0gICAgICAgIHN0YXRpYyBET01EYXRhU3RvcmUqIGN1cnJlbnQodjg6Oklzb2xh
dGUqKTsKKyAgICBleHBsaWNpdCBET01EYXRhU3RvcmUoVHlwZSk7CisgICAgfkRPTURhdGFTdG9y
ZSgpOwogCi0gICAgICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4mIGRvbU5vZGVNYXAoKSB7IHJldHVy
biAqbV9kb21Ob2RlTWFwOyB9Ci0gICAgICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4mIGFjdGl2ZURv
bU5vZGVNYXAoKSB7IHJldHVybiAqbV9hY3RpdmVEb21Ob2RlTWFwOyB9Ci0gICAgICAgIERPTVdy
YXBwZXJNYXA8dm9pZD4mIGRvbU9iamVjdE1hcCgpIHsgcmV0dXJuICptX2RvbU9iamVjdE1hcDsg
fQotICAgICAgICBET01XcmFwcGVyTWFwPHZvaWQ+JiBhY3RpdmVEb21PYmplY3RNYXAoKSB7IHJl
dHVybiAqbV9hY3RpdmVEb21PYmplY3RNYXA7IH0KKyAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBj
dXJyZW50KHY4OjpJc29sYXRlKik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKyAgICBET01XcmFwcGVyTWFwPE5vZGU+
JiBkb21Ob2RlTWFwKCkgeyByZXR1cm4gKm1fZG9tTm9kZU1hcDsgfQorICAgIERPTVdyYXBwZXJN
YXA8Tm9kZT4mIGFjdGl2ZURvbU5vZGVNYXAoKSB7IHJldHVybiAqbV9hY3RpdmVEb21Ob2RlTWFw
OyB9CisgICAgRE9NV3JhcHBlck1hcDx2b2lkPiYgZG9tT2JqZWN0TWFwKCkgeyByZXR1cm4gKm1f
ZG9tT2JqZWN0TWFwOyB9CisgICAgRE9NV3JhcHBlck1hcDx2b2lkPiYgYWN0aXZlRG9tT2JqZWN0
TWFwKCkgeyByZXR1cm4gKm1fYWN0aXZlRG9tT2JqZWN0TWFwOyB9CiAKLSAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIERPTURhdGFTdG9yZSgpOworICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCi0gICAgICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4qIG1f
ZG9tTm9kZU1hcDsKLSAgICAgICAgRE9NV3JhcHBlck1hcDxOb2RlPiogbV9hY3RpdmVEb21Ob2Rl
TWFwOwotICAgICAgICBET01XcmFwcGVyTWFwPHZvaWQ+KiBtX2RvbU9iamVjdE1hcDsKLSAgICAg
ICAgRE9NV3JhcHBlck1hcDx2b2lkPiogbV9hY3RpdmVEb21PYmplY3RNYXA7Ci0gICAgfTsKK3By
b3RlY3RlZDoKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBPd25QdHI8RE9NV3JhcHBlck1hcDxOb2Rl
PiA+IG1fZG9tTm9kZU1hcDsKKyAgICBPd25QdHI8RE9NV3JhcHBlck1hcDxOb2RlPiA+IG1fYWN0
aXZlRG9tTm9kZU1hcDsKKyAgICBPd25QdHI8RE9NV3JhcHBlck1hcDx2b2lkPiA+IG1fZG9tT2Jq
ZWN0TWFwOworICAgIE93blB0cjxET01XcmFwcGVyTWFwPHZvaWQ+ID4gbV9hY3RpdmVEb21PYmpl
Y3RNYXA7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5YWI3ZTUyNDM5NDc4MTA1NmQ1ODNlNjk1NGUxZTg0ZjY2OGY3ZGVlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjb3BlZERPTURhdGFT
dG9yZS5oIgotCi0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TY29wZWRET01EYXRhU3Rv
cmU6OlNjb3BlZERPTURhdGFTdG9yZSgpCi0gICAgOiBET01EYXRhU3RvcmUoKQotewotICAgIG1f
ZG9tTm9kZU1hcCA9IG5ldyBET01XcmFwcGVySGFzaE1hcDxOb2RlPjsKLSAgICBtX2FjdGl2ZURv
bU5vZGVNYXAgPSBuZXcgRE9NV3JhcHBlckhhc2hNYXA8Tm9kZT47Ci0gICAgbV9kb21PYmplY3RN
YXAgPSBuZXcgRE9NV3JhcHBlckhhc2hNYXA8dm9pZD47Ci0gICAgbV9hY3RpdmVEb21PYmplY3RN
YXAgPSBuZXcgRE9NV3JhcHBlckhhc2hNYXA8dm9pZD47Ci19Ci0KLVNjb3BlZERPTURhdGFTdG9y
ZTo6flNjb3BlZERPTURhdGFTdG9yZSgpCi17Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1vdmlu
ZyB0aGVzZSBjYWxscyB0byBjbGVhcigpCi0gICAgLy8gaW50byB0aGUgRE9NV3JhcHBlckhhc2hN
YXAgZGVzdHJ1Y3Rvci4KLSAgICBtX2RvbU5vZGVNYXAtPmNsZWFyKCk7Ci0gICAgbV9hY3RpdmVE
b21Ob2RlTWFwLT5jbGVhcigpOwotICAgIG1fZG9tT2JqZWN0TWFwLT5jbGVhcigpOwotICAgIG1f
YWN0aXZlRG9tT2JqZWN0TWFwLT5jbGVhcigpOwotCi0gICAgZGVsZXRlIG1fZG9tTm9kZU1hcDsK
LSAgICBkZWxldGUgbV9hY3RpdmVEb21Ob2RlTWFwOwotICAgIGRlbGV0ZSBtX2RvbU9iamVjdE1h
cDsKLSAgICBkZWxldGUgbV9hY3RpdmVEb21PYmplY3RNYXA7Ci19Ci0KLXZvaWQgU2NvcGVkRE9N
RGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6QmluZGluZyk7Ci0gICAgRE9NRGF0YVN0b3Jl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJl
cihtX2RvbU5vZGVNYXApOwotICAgIGluZm8uYWRkTWVtYmVyKG1fYWN0aXZlRG9tTm9kZU1hcCk7
Ci0gICAgaW5mby5hZGRNZW1iZXIobV9kb21PYmplY3RNYXApOwotICAgIGluZm8uYWRkTWVtYmVy
KG1fYWN0aXZlRG9tT2JqZWN0TWFwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M2M2I2YjlmZjVmNjMzNTYyYWFmNWM5NTQ3Y2Y4NGNm
YTM5Y2RkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjb3BlZERPTURhdGFTdG9yZV9oCi0jZGVmaW5l
IFNjb3BlZERPTURhdGFTdG9yZV9oCi0KLSNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0gICAgLy8gU2NvcGVkRE9NRGF0YVN0b3JlCi0gICAgLy8KLSAg
ICAvLyBTY29wZWRET01EYXRhU3RvcmUgaXMgYSBET01EYXRhU3RvcmUgdGhhdCBjb250cm9scyBs
aW1pdHMgdGhlIGxpZmV0aW1lIG9mCi0gICAgLy8gdGhlIHN0b3JlIHRvIHRoZSBsaWZldGltZSBv
ZiB0aGUgb2JqZWN0IGl0c2VsZi4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHRoZQotICAgIC8vIFNj
b3BlZERPTURhdGFTdG9yZSBvYmplY3QgaXMgZGVhbGxvY2F0ZWQsIHRoZSBtYXBzIHRoYXQgYmVs
b25nIHRvIHRoZSBzdG9yZQotICAgIC8vIGFyZSBkZWFsbG9jYXRlZCBhcyB3ZWxsLgotICAgIC8v
Ci0gICAgY2xhc3MgU2NvcGVkRE9NRGF0YVN0b3JlIDogcHVibGljIERPTURhdGFTdG9yZSB7Ci0g
ICAgcHVibGljOgotICAgICAgICBTY29wZWRET01EYXRhU3RvcmUoKTsKLQotICAgICAgICAvLyBU
aGlzIGNhbiBiZSBjYWxsZWQgd2hlbiBXVEYgdGhyZWFkIGlzIHRlYXJpbmcgZG93bi4KLSAgICAg
ICAgLy8gV2UgYXNzdW1lIHRoYXQgYWxsIGNoaWxkIHRocmVhZHMgcnVubmluZyBWOCBpbnN0YW5j
ZXMgYXJlIGNyZWF0ZWQgYnkgV1RGLgotICAgICAgICB2aXJ0dWFsIH5TY29wZWRET01EYXRhU3Rv
cmUoKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFNjb3BlZERPTURhdGFTdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBkODQ4ZWY1
MDRlNDk3MDQ5MjkwM2MyMmIxZmFiYjhkZjJjNzcwMjMyLi4wZjYwNDIxMjg3NTJlNDE3YWE0MTRh
ZWMxOTE3ZGJlNzBkZGMxYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIyMDgsNyArMjIwOCw3IEBAIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkKIAogc3RhdGljIHZvaWQg
bmV1dGVyQmluZGluZyh2b2lkKiBkb21PYmplY3QpIAogewotICAgIERPTURhdGFMaXN0JiBhbGxT
dG9yZXMgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOworICAgIFZl
Y3RvcjxET01EYXRhU3RvcmUqPiYgYWxsU3RvcmVzID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT5hbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbFN0b3Jlcy5z
aXplKCk7IGkrKykgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiA9IGFsbFN0
b3Jlc1tpXS0+ZG9tT2JqZWN0TWFwKCkuZ2V0KGRvbU9iamVjdCk7CiAgICAgICAgIGlmICghb2Jq
LklzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRp
Y0RPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01E
YXRhU3RvcmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDlmOWZkMDk3NTky
YWI2YzA3MTAwYzcwZTdjN2VlNGJmZWFkYzc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURh
dGFTdG9yZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlN0YXRpY0RPTURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgotI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1TdGF0aWNET01EYXRhU3RvcmU6OlN0YXRpY0RPTURhdGFTdG9yZSgp
Ci17Ci0gICAgbV9kb21Ob2RlTWFwID0gJm1fc3RhdGljRG9tTm9kZU1hcDsKLSAgICBtX2FjdGl2
ZURvbU5vZGVNYXAgPSAmbV9zdGF0aWNBY3RpdmVEb21Ob2RlTWFwOwotICAgIG1fZG9tT2JqZWN0
TWFwID0gJm1fc3RhdGljRG9tT2JqZWN0TWFwOwotICAgIG1fYWN0aXZlRG9tT2JqZWN0TWFwID0g
Jm1fc3RhdGljQWN0aXZlRG9tT2JqZWN0TWFwOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJl
bnQoKS0+cmVnaXN0ZXJET01EYXRhU3RvcmUodGhpcyk7Ci19Ci0KLVN0YXRpY0RPTURhdGFTdG9y
ZTo6flN0YXRpY0RPTURhdGFTdG9yZSgpCi17Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT51bnJlZ2lzdGVyRE9NRGF0YVN0b3JlKHRoaXMpOwotfQotCi12b2lkIFN0YXRpY0RPTURh
dGFTdG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIERPTURhdGFTdG9yZTo6
cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIo
bV9zdGF0aWNEb21Ob2RlTWFwKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3N0YXRpY0FjdGl2ZURv
bU5vZGVNYXApOwotICAgIGluZm8uYWRkTWVtYmVyKG1fc3RhdGljRG9tT2JqZWN0TWFwKTsKLSAg
ICBpbmZvLmFkZE1lbWJlcihtX3N0YXRpY0FjdGl2ZURvbU9iamVjdE1hcCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1N0YXRpY0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU3RhdGlj
RE9NRGF0YVN0b3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZDExYWRhYWU1
NmY4YjUyYTI2YTM4YjM5ZTAwNTRiYWMyOGQzYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU3RhdGljRE9N
RGF0YVN0b3JlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTdGF0aWNE
T01EYXRhU3RvcmVfaAotI2RlZmluZSBTdGF0aWNET01EYXRhU3RvcmVfaAotCi0jaW5jbHVkZSAi
RE9NRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFN0YXRpY0RPTURhdGFTdG9yZQotLy8KLS8vIFN0YXRp
Y0RPTURhdGFTdG9yZSBpcyBhIERPTURhdGFTdG9yZSB0aGF0IG1hbmFnZXMgdGhlIGxpZmV0aW1l
IG9mIHRoZSBzdG9yZQotLy8gc3RhdGljYWxseS4gIFRoaXMgZW5jYXBzdWxhdGVzIHRocmVhZC1z
cGVjaWZpYyBET00gZGF0YSBmb3IgdGhlIG1haW4KLS8vIHRocmVhZC4gIEFsbCB0aGUgbWFwcyBp
biBpdCBhcmUgc3RhdGljLiAgVGhpcyBpcyBiZWNhdXNlIHdlIGFyZSB1bmFibGUgdG8KLS8vIHJl
bHkgb24gV1RGOjpUaHJlYWRTcGVjaWZpY1RocmVhZEV4aXQgdG8gZG8gdGhlIGNsZWFudXAgc2lu
Y2UgdGhlIHBsYWNlIHRoYXQKLS8vIHRlYXJzIGRvd24gdGhlIG1haW4gdGhyZWFkIGNhbiBub3Qg
Y2FsbCBhbnkgV1RGIGZ1bmN0aW9ucy4KLS8vCi1jbGFzcyBTdGF0aWNET01EYXRhU3RvcmUgOiBw
dWJsaWMgRE9NRGF0YVN0b3JlIHsKLXB1YmxpYzoKLSAgICBTdGF0aWNET01EYXRhU3RvcmUoKTsK
LSAgICB2aXJ0dWFsIH5TdGF0aWNET01EYXRhU3RvcmUoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7Ci0KLXBy
aXZhdGU6Ci0gICAgRE9NTm9kZVdyYXBwZXJNYXAgbV9zdGF0aWNEb21Ob2RlTWFwOwotICAgIEFj
dGl2ZURPTU5vZGVXcmFwcGVyTWFwIG1fc3RhdGljQWN0aXZlRG9tTm9kZU1hcDsKLSAgICBET01X
cmFwcGVySGFzaE1hcDx2b2lkPiBtX3N0YXRpY0RvbU9iamVjdE1hcDsKLSAgICBET01XcmFwcGVy
SGFzaE1hcDx2b2lkPiBtX3N0YXRpY0FjdGl2ZURvbU9iamVjdE1hcDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFN0YXRpY0RPTURhdGFTdG9yZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKaW5kZXggZGE3OTMxYzA0MGFhYTJmZWYyODlk
YTczZDMxNjIxMTBiYmM1YTg1Ni4uM2JiNDdjZGFhYTA5NDhiYzc2OWUzZDc3MDJiZDM1ODRmYmZh
NjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAKICNpbmNsdWRlICJET01EYXRhU3RvcmUu
aCIKLSNpbmNsdWRlICJTY29wZWRET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAt
NDAsMTYgKzM5LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTURhdGFTdG9yZUhhbmRs
ZTo6RE9NRGF0YVN0b3JlSGFuZGxlKGJvb2wgaW5pdGlhbGl6ZSkKLSAgICA6IG1fc3RvcmUoYWRv
cHRQdHIoIWluaXRpYWxpemUgPyAwIDogbmV3IFNjb3BlZERPTURhdGFTdG9yZSgpKSkKIHsKLSAg
ICBpZiAobV9zdG9yZSkKLSAgICAgICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWdp
c3RlckRPTURhdGFTdG9yZShtX3N0b3JlLmdldCgpKTsKKyAgICBpZiAoaW5pdGlhbGl6ZSkKKyAg
ICAgICAgbV9zdG9yZSA9IGFkb3B0UHRyKG5ldyBET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlOjpJ
c29sYXRlZFdvcmxkKSk7CiB9CiAKIERPTURhdGFTdG9yZUhhbmRsZTo6fkRPTURhdGFTdG9yZUhh
bmRsZSgpCiB7Ci0gICAgaWYgKG1fc3RvcmUpCi0gICAgICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1
cnJlbnQoKS0+dW5yZWdpc3RlckRPTURhdGFTdG9yZShtX3N0b3JlLmdldCgpKTsKIH0KIAogTm9k
ZVdyYXBwZXJWaXNpdG9yOjp+Tm9kZVdyYXBwZXJWaXNpdG9yKCkKQEAgLTg0LDE1ICs4MCw2IEBA
IERPTVdyYXBwZXJNYXA8dm9pZD4mIGdldEFjdGl2ZURPTU9iamVjdE1hcCh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKICAgICByZXR1cm4gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5hY3Rp
dmVEb21PYmplY3RNYXAoKTsKIH0KIAotdm9pZCByZW1vdmVBbGxET01PYmplY3RzKCkKLXsKLSAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0g
ICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IERPTURhdGFTdG9yZTo6Y3VycmVudCh2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpKTsKLSAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkuY2xlYXIoKTsKLSAg
ICBzdG9yZS0+YWN0aXZlRG9tT2JqZWN0TWFwKCkuY2xlYXIoKTsKLX0KLQogdm9pZCB2aXNpdEFs
bERPTU5vZGVzKE5vZGVXcmFwcGVyVmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxl
U2NvcGUgc2NvcGU7CkBAIC0xMjYsNyArMTEzLDcgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU5vZGVz
KERPTVdyYXBwZXJWaXNpdG9yPE5vZGU+KiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0JiBsaXN0ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0b3I8RE9NRGF0YVN0b3JlKj4mIGxpc3QgPSBW
OFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0
b3JlID0gbGlzdFtpXTsKIApAQCAtMTM4LDcgKzEyNSw3IEBAIHZvaWQgdmlzaXRET01PYmplY3Rz
KERPTVdyYXBwZXJWaXNpdG9yPHZvaWQ+KiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0JiBsaXN0ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0b3I8RE9NRGF0YVN0b3JlKj4mIGxpc3QgPSBW
OFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0
b3JlID0gbGlzdFtpXTsKIApAQCAtMTUwLDcgKzEzNyw3IEBAIHZvaWQgdmlzaXRBY3RpdmVET01P
YmplY3RzKERPTVdyYXBwZXJWaXNpdG9yPHZvaWQ+KiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5k
bGVTY29wZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0JiBsaXN0ID0gVjhQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0b3I8RE9NRGF0YVN0b3JlKj4mIGxp
c3QgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRhU3Rv
cmUqIHN0b3JlID0gbGlzdFtpXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01NYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgK
aW5kZXggNTY3NWMxZDVlODk0ZTU1YmY4Y2U2MzQ3OGUyMWIwNmJkZjhiNWFhNy4uNjY5ZDAxYWY1
NDE4NjU0ZDg1MDc1MzBhNjgxNjAxZmNmZDk0NjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5oCkBAIC03Niw5ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBE
T01XcmFwcGVyTWFwPHZvaWQ+JiBnZXRBY3RpdmVET01PYmplY3RNYXAodjg6Oklzb2xhdGUqID0g
MCk7CiAgICAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHMoRE9NV3JhcHBlclZpc2l0b3I8dm9p
ZD4qKTsKIAotICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB0byByZW1vdmUgYWxsIERPTSBv
YmplY3RzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB0aHJlYWQgd2hlbiBpdCBpcyB0ZWFy
aW5nIGRvd24uCi0gICAgdm9pZCByZW1vdmVBbGxET01PYmplY3RzKCk7Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4RE9NTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAppbmRleCAyZTM3YjRhODZlOTNhNTQ4NWUxNmE5
MTkyYTI3OWYyZmFhNTQ3N2U4Li43NDkwMjBlMjA3ZDMwYTY5ZjJkNDQ3MmRlZmRlOTE1NzBmMTMw
ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5o
CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U3RyaW5nQ2FjaGU+IG1f
c3RyaW5nQ2FjaGU7CiAgICAgT3duUHRyPEludGVnZXJDYWNoZT4gbV9pbnRlZ2VyQ2FjaGU7CiAK
LSAgICBET01EYXRhTGlzdCBtX2RvbURhdGFMaXN0OworICAgIFZlY3RvcjxET01EYXRhU3RvcmUq
PiBtX2RvbURhdGFMaXN0OwogICAgIERPTURhdGFTdG9yZSogbV9kb21EYXRhU3RvcmU7CiAKICAg
ICBPd25QdHI8VjhIaWRkZW5Qcm9wZXJ0eU5hbWU+IG1faGlkZGVuUHJvcGVydHlOYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCA3ZDZiNThhN2JmMmE1NTU5NjM3OGZkYTYzM2YxYThlMTU0OGMzZTIzLi41YmFj
YjVhZDliZTFkZDdiNmI4MWFmNDhjZmU5NjE1NmJmYTRmNDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjAs
MTUgKzYwLDE1IEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xs
ZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKICAgICAsIG1fZXhlY3V0aW9uU2NoZWR1
bGVkVG9UZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4
UGVySXNvbGF0ZURhdGE6OmNyZWF0ZShtX2lzb2xhdGUpOwotICAgIGRhdGEtPmFsbFN0b3Jlcygp
LmFwcGVuZCgmbV9ET01EYXRhU3RvcmUpOwotICAgIGRhdGEtPnNldERPTURhdGFTdG9yZSgmbV9E
T01EYXRhU3RvcmUpOwogICAgIG1faXNvbGF0ZS0+RW50ZXIoKTsKKyAgICBtX2RvbURhdGFTdG9y
ZSA9IGFkb3B0UHRyKG5ldyBET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlOjpXb3JrZXIpKTsKKyAg
ICBkYXRhLT5zZXRET01EYXRhU3RvcmUobV9kb21EYXRhU3RvcmUuZ2V0KCkpOwogICAgIG1fcHJv
eHkgPSBhZG9wdFB0cihuZXcgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KHdvcmtlckNvbnRl
eHQpKTsKIH0KIAogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xs
ZXIoKQogewotICAgIHJlbW92ZUFsbERPTU9iamVjdHMoKTsKKyAgICBtX2RvbURhdGFTdG9yZS5j
bGVhcigpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIC8vIFRoZSBjb3JyZXNwb25kaW5n
IGNhbGwgdG8gZGlkU3RhcnRXb3JrZXJSdW5Mb29wIGlzIGluCiAgICAgLy8gV29ya2VyVGhyZWFk
Ojp3b3JrZXJUaHJlYWQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA2OGNlODlhYWUwN2ZmMzg2NTkwYmFmOGI5OTc4
NDY2Mjg2MDg3YzBjLi5lMDhlYjlkOWZhMzQ1YzEwMTk3MmVjZDk5YTc2MWMzMjgwNjFiNGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oCkBAIC0zMyw3ICszMyw2IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1
ZGUgIlNjb3BlZERPTURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogCiAjaW5j
bHVkZSA8djguaD4KQEAgLTgyLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAgICAgICAgIE93blB0cjxXb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHk+IG1fcHJveHk7CiAgICAgICAgIHY4OjpJc29sYXRlKiBtX2lz
b2xhdGU7Ci0gICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSBtX0RPTURhdGFTdG9yZTsKKyAgICAg
ICAgT3duUHRyPERPTURhdGFTdG9yZT4gbV9kb21EYXRhU3RvcmU7CiAgICAgICAgIGJvb2wgbV9l
eGVjdXRpb25Gb3JiaWRkZW47CiAgICAgICAgIGJvb2wgbV9leGVjdXRpb25TY2hlZHVsZWRUb1Rl
cm1pbmF0ZTsKICAgICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0
ZXg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170563</attachid>
            <date>2012-10-24 23:41:16 -0700</date>
            <delta_ts>2012-10-25 00:14:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100316-20121024233950.patch</filename>
            <type>text/plain</type>
            <size>26296</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTEwLTI0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBXZSBjYW4gbWVyZ2UgRE9N
RGF0YVN0b3JlLCBTY29wZWRET01EYXRhU3RvcmUsIGFuZCBTdGF0aWNET01EYXRhU3RvcmUgaW50
byBvbmUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAg
IFByaW9yIHRvIHRoaXMgcGF0Y2gsIERPTURhdGFTdG9yZSBoYWQgdHdvIHN1YmNsYXNzZXMsCisg
ICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSBhbmQgU3RhdGljRE9NRGF0YVN0b3JlLCB3aGljaCB1
c2VkIHNsaWdobHkgZGlmZmVyZW50CisgICAgICAgIHdyYXBwZXIgbWFwIGJhc2UgY2xhc3NlcyBh
bmQgaGFkIGRpZmZlcmVudCBsaWZldGltZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgdW5pZmllcyBh
bGwgdGhlc2UgY2xhc3NlcyBpbnRvIERPTURhdGFTdG9yZSBpdHNlbGYuIFRoaXMgbWFrZXMgdGhp
cworICAgICAgICBjb2RlIG11Y2ggbW9yZSBzdHJhaWdodGZvcndhcmQuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01EYXRhU3RvcmU6OmN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6
CisgICAgICAgIChET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3Jl
Ojpkb21Ob2RlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6YWN0aXZlRG9t
Tm9kZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmRvbU9iamVjdE1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmFjdGl2ZURvbU9iamVjdE1hcCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bmV1dGVyQmluZGluZyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0
YVN0b3JlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TdGF0aWNET01EYXRh
U3RvcmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmVIYW5kbGU6OkRPTURhdGFTdG9yZUhhbmRsZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmVIYW5kbGU6On5ET01EYXRhU3RvcmVIYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRBY3RpdmVET01Ob2Rlcyk6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpdERPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRBY3RpdmVE
T01PYmplY3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oOgorICAg
ICAgICAoVjhQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXb3JrZXJTY3JpcHRD
b250cm9sbGVyKToKKwogMjAxMi0xMC0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtWOF0gRE9NRGF0YSBpcyBubyBsb25nZXIgbmVlZGVkCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiAxMzI0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTIyNTQsOCArMjI1NCw2IEBACiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1NjaGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxl
ZEFjdGlvbi5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUu
Y3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCkBAIC0yMjk3LDggKzIyOTUsNiBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9TaGFyZWRQZXJzaXN0ZW50LmgnLAotICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QWJz
dHJhY3RFdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
Y3BwCShyZXZpc2lvbiAxMzI0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyOCArMzEsNTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgIlN0YXRp
Y0RPTURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJNYXAuaCIKKyNpbmNsdWRlICJJ
bnRydXNpdmVET01XcmFwcGVyTWFwLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRGF0YVN0b3JlOjpET01EYXRhU3Rv
cmUoKQotICAgIDogbV9kb21Ob2RlTWFwKDApCi0gICAgLCBtX2FjdGl2ZURvbU5vZGVNYXAoMCkK
LSAgICAsIG1fZG9tT2JqZWN0TWFwKDApCi0gICAgLCBtX2FjdGl2ZURvbU9iamVjdE1hcCgwKQor
RE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUp
CiB7CisgICAgaWYgKHR5cGUgPT0gTWFpbldvcmxkKSB7CisgICAgICAgIG1fZG9tTm9kZU1hcCA9
IGFkb3B0UHRyKG5ldyBET01Ob2RlV3JhcHBlck1hcCk7CisgICAgICAgIG1fYWN0aXZlRG9tTm9k
ZU1hcCA9IGFkb3B0UHRyKG5ldyBBY3RpdmVET01Ob2RlV3JhcHBlck1hcCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gSXNvbGF0ZWRXb3JsZCB8fCB0eXBlID09IFdvcmtl
cik7CisgICAgICAgIC8vIEZJWE1FOiBJbiBwcmluY2lwbGUsIHdlIHNob3VsZG4ndCBuZWVkIHRv
IGNyZWF0ZSB0aGVzZQorICAgICAgICAvLyB3cmFwcGVyIG1hcHMgZm9yIHdvcmtlcnMgYmVjYXVz
ZSB0aGVyZSBhcmUgbm8gTm9kZXMgb24KKyAgICAgICAgLy8gd29ya2VyIHRocmVhZHMuCisgICAg
ICAgIG1fZG9tTm9kZU1hcCA9IGFkb3B0UHRyKG5ldyBET01XcmFwcGVySGFzaE1hcDxOb2RlPik7
CisgICAgICAgIG1fYWN0aXZlRG9tTm9kZU1hcCA9IGFkb3B0UHRyKG5ldyBET01XcmFwcGVySGFz
aE1hcDxOb2RlPik7CisgICAgfQorICAgIG1fZG9tT2JqZWN0TWFwID0gYWRvcHRQdHIobmV3IERP
TVdyYXBwZXJIYXNoTWFwPHZvaWQ+KTsKKyAgICBtX2FjdGl2ZURvbU9iamVjdE1hcCA9IGFkb3B0
UHRyKG5ldyBET01XcmFwcGVySGFzaE1hcDx2b2lkPik7CisKKyAgICBWOFBlcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPnJlZ2lzdGVyRE9NRGF0YVN0b3JlKHRoaXMpOwogfQogCiBET01EYXRhU3Rv
cmU6On5ET01EYXRhU3RvcmUoKQogeworICAgIEFTU0VSVChtX3R5cGUgIT0gTWFpbldvcmxkKTsg
Ly8gV2UgbmV2ZXIgYWN0dWFsbHkgZGVzdHJ1Y3QgdGhlIG1haW4gd29ybGQncyBET01EYXRhU3Rv
cmUuCisKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnVucmVnaXN0ZXJET01EYXRh
U3RvcmUodGhpcyk7CisKKyAgICBpZiAobV90eXBlID09IElzb2xhdGVkV29ybGQpIHsKKyAgICAg
ICAgbV9kb21Ob2RlTWFwLT5jbGVhcigpOworICAgICAgICBtX2FjdGl2ZURvbU5vZGVNYXAtPmNs
ZWFyKCk7CisgICAgfQorICAgIG1fZG9tT2JqZWN0TWFwLT5jbGVhcigpOworICAgIG1fYWN0aXZl
RG9tT2JqZWN0TWFwLT5jbGVhcigpOwogfQogCiBET01EYXRhU3RvcmUqIERPTURhdGFTdG9yZTo6
Y3VycmVudCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0YXRpY0RPTURhdGFTdG9yZSwgZGVmYXVsdFN0b3JlLCAoKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChET01EYXRhU3RvcmUsIGRlZmF1bHRTdG9yZSwgKE1haW5Xb3JsZCkpOwogICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwog
ICAgIGlmIChVTkxJS0VMWSghIWRhdGEtPmRvbURhdGFTdG9yZSgpKSkKICAgICAgICAgcmV0dXJu
IGRhdGEtPmRvbURhdGFTdG9yZSgpOwpAQCAtNjUsMTAgKzg4LDEwIEBAIERPTURhdGFTdG9yZSog
RE9NRGF0YVN0b3JlOjpjdXJyZW50KHY4OjoKIHZvaWQgRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAg
IE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1v
cnlUeXBlczo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2RvbU5vZGVNYXAp
OwotICAgIGluZm8uYWRkV2Vha1BvaW50ZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsKLSAgICBpbmZv
LmFkZFdlYWtQb2ludGVyKG1fZG9tT2JqZWN0TWFwKTsKLSAgICBpbmZvLmFkZFdlYWtQb2ludGVy
KG1fYWN0aXZlRG9tT2JqZWN0TWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RvbU5vZGVNYXAp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fYWN0aXZlRG9tTm9kZU1hcCk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9kb21PYmplY3RNYXApOworICAgIGluZm8uYWRkTWVtYmVyKG1fYWN0aXZlRG9tT2Jq
ZWN0TWFwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgJKHJldmlzaW9uIDEzMjQ0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw0MSArNDUsMzQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRE9NRGF0
YVN0b3JlOworY2xhc3MgRE9NRGF0YVN0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
T01EYXRhU3RvcmUpOworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIE1haW5Xb3Js
ZCwKKyAgICAgICAgSXNvbGF0ZWRXb3JsZCwKKyAgICAgICAgV29ya2VyLAorICAgIH07CiAKLSAg
ICB0eXBlZGVmIFZlY3RvcjxET01EYXRhU3RvcmUqPiBET01EYXRhTGlzdDsKKyAgICBleHBsaWNp
dCBET01EYXRhU3RvcmUoVHlwZSk7CisgICAgfkRPTURhdGFTdG9yZSgpOwogCi0gICAgLy8gRE9N
RGF0YVN0b3JlCi0gICAgLy8KLSAgICAvLyBET01EYXRhU3RvcmUgaXMgdGhlIGJhY2tpbmcgc3Rv
cmUgdGhhdCBob2xkcyB0aGUgbWFwcyBiZXR3ZWVuIERPTSBvYmplY3RzCi0gICAgLy8gYW5kIEph
dmFTY3JpcHQgb2JqZWN0cy4gIEluIGdlbmVyYWwsIGVhY2ggdGhyZWFkIGNhbiBoYXZlIG11bHRp
cGxlIGJhY2tpbmcKLSAgICAvLyBzdG9yZXMsIG9uZSBwZXIgaXNvbGF0ZWQgd29ybGQuCi0gICAg
Ly8KLSAgICAvLyBUaGlzIGNsYXNzIGRvZXNuJ3QgbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUg
c3RvcmUuICBUaGUgZGF0YSBzdG9yZQotICAgIC8vIGxpZmV0aW1lIGlzIG1hbmFnZWQgYnkgc3Vi
Y2xhc3Nlcy4KLSAgICAvLwotICAgIGNsYXNzIERPTURhdGFTdG9yZSB7Ci0gICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERPTURhdGFTdG9yZSk7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5ET01EYXRhU3RvcmUoKTsKLQotICAgICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBjdXJy
ZW50KHY4OjpJc29sYXRlKik7Ci0KLSAgICAgICAgRE9NV3JhcHBlck1hcDxOb2RlPiYgZG9tTm9k
ZU1hcCgpIHsgcmV0dXJuICptX2RvbU5vZGVNYXA7IH0KLSAgICAgICAgRE9NV3JhcHBlck1hcDxO
b2RlPiYgYWN0aXZlRG9tTm9kZU1hcCgpIHsgcmV0dXJuICptX2FjdGl2ZURvbU5vZGVNYXA7IH0K
LSAgICAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiYgZG9tT2JqZWN0TWFwKCkgeyByZXR1cm4gKm1f
ZG9tT2JqZWN0TWFwOyB9Ci0gICAgICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGFjdGl2ZURvbU9i
amVjdE1hcCgpIHsgcmV0dXJuICptX2FjdGl2ZURvbU9iamVjdE1hcDsgfQotCi0gICAgICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0K
LSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIERPTURhdGFTdG9yZSgpOwotCi0gICAgICAgIERPTVdy
YXBwZXJNYXA8Tm9kZT4qIG1fZG9tTm9kZU1hcDsKLSAgICAgICAgRE9NV3JhcHBlck1hcDxOb2Rl
PiogbV9hY3RpdmVEb21Ob2RlTWFwOwotICAgICAgICBET01XcmFwcGVyTWFwPHZvaWQ+KiBtX2Rv
bU9iamVjdE1hcDsKLSAgICAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiogbV9hY3RpdmVEb21PYmpl
Y3RNYXA7Ci0gICAgfTsKKyAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBjdXJyZW50KHY4OjpJc29s
YXRlKik7CisKKyAgICBET01XcmFwcGVyTWFwPE5vZGU+JiBkb21Ob2RlTWFwKCkgeyByZXR1cm4g
Km1fZG9tTm9kZU1hcDsgfQorICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4mIGFjdGl2ZURvbU5vZGVN
YXAoKSB7IHJldHVybiAqbV9hY3RpdmVEb21Ob2RlTWFwOyB9CisgICAgRE9NV3JhcHBlck1hcDx2
b2lkPiYgZG9tT2JqZWN0TWFwKCkgeyByZXR1cm4gKm1fZG9tT2JqZWN0TWFwOyB9CisgICAgRE9N
V3JhcHBlck1hcDx2b2lkPiYgYWN0aXZlRG9tT2JqZWN0TWFwKCkgeyByZXR1cm4gKm1fYWN0aXZl
RG9tT2JqZWN0TWFwOyB9CisKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIFR5cGUgbV90eXBlOworICAgIE93blB0
cjxET01XcmFwcGVyTWFwPE5vZGU+ID4gbV9kb21Ob2RlTWFwOworICAgIE93blB0cjxET01XcmFw
cGVyTWFwPE5vZGU+ID4gbV9hY3RpdmVEb21Ob2RlTWFwOworICAgIE93blB0cjxET01XcmFwcGVy
TWFwPHZvaWQ+ID4gbV9kb21PYmplY3RNYXA7CisgICAgT3duUHRyPERPTVdyYXBwZXJNYXA8dm9p
ZD4gPiBtX2FjdGl2ZURvbU9iamVjdE1hcDsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRh
U3RvcmUuY3BwCShyZXZpc2lvbiAxMzI0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY29wZWRET01EYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgiCi0KLSNp
bmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjb3BlZERPTURhdGFTdG9yZTo6U2NvcGVkRE9N
RGF0YVN0b3JlKCkKLSAgICA6IERPTURhdGFTdG9yZSgpCi17Ci0gICAgbV9kb21Ob2RlTWFwID0g
bmV3IERPTVdyYXBwZXJIYXNoTWFwPE5vZGU+OwotICAgIG1fYWN0aXZlRG9tTm9kZU1hcCA9IG5l
dyBET01XcmFwcGVySGFzaE1hcDxOb2RlPjsKLSAgICBtX2RvbU9iamVjdE1hcCA9IG5ldyBET01X
cmFwcGVySGFzaE1hcDx2b2lkPjsKLSAgICBtX2FjdGl2ZURvbU9iamVjdE1hcCA9IG5ldyBET01X
cmFwcGVySGFzaE1hcDx2b2lkPjsKLX0KLQotU2NvcGVkRE9NRGF0YVN0b3JlOjp+U2NvcGVkRE9N
RGF0YVN0b3JlKCkKLXsKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIHRoZXNlIGNhbGxz
IHRvIGNsZWFyKCkKLSAgICAvLyBpbnRvIHRoZSBET01XcmFwcGVySGFzaE1hcCBkZXN0cnVjdG9y
LgotICAgIG1fZG9tTm9kZU1hcC0+Y2xlYXIoKTsKLSAgICBtX2FjdGl2ZURvbU5vZGVNYXAtPmNs
ZWFyKCk7Ci0gICAgbV9kb21PYmplY3RNYXAtPmNsZWFyKCk7Ci0gICAgbV9hY3RpdmVEb21PYmpl
Y3RNYXAtPmNsZWFyKCk7Ci0KLSAgICBkZWxldGUgbV9kb21Ob2RlTWFwOwotICAgIGRlbGV0ZSBt
X2FjdGl2ZURvbU5vZGVNYXA7Ci0gICAgZGVsZXRlIG1fZG9tT2JqZWN0TWFwOwotICAgIGRlbGV0
ZSBtX2FjdGl2ZURvbU9iamVjdE1hcDsKLX0KLQotdm9pZCBTY29wZWRET01EYXRhU3RvcmU6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nKTsKLSAgICBET01EYXRhU3RvcmU6OnJlcG9ydE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tTm9kZU1h
cCk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX2RvbU9iamVjdE1hcCk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9hY3RpdmVEb21P
YmplY3RNYXApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaAkocmV2aXNpb24gMTMy
NDQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NvcGVkRE9NRGF0YVN0b3Jl
X2gKLSNkZWZpbmUgU2NvcGVkRE9NRGF0YVN0b3JlX2gKLQotI2luY2x1ZGUgIkRPTURhdGFTdG9y
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICAvLyBTY29wZWRET01EYXRhU3RvcmUK
LSAgICAvLwotICAgIC8vIFNjb3BlZERPTURhdGFTdG9yZSBpcyBhIERPTURhdGFTdG9yZSB0aGF0
IGNvbnRyb2xzIGxpbWl0cyB0aGUgbGlmZXRpbWUgb2YKLSAgICAvLyB0aGUgc3RvcmUgdG8gdGhl
IGxpZmV0aW1lIG9mIHRoZSBvYmplY3QgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4gdGhl
Ci0gICAgLy8gU2NvcGVkRE9NRGF0YVN0b3JlIG9iamVjdCBpcyBkZWFsbG9jYXRlZCwgdGhlIG1h
cHMgdGhhdCBiZWxvbmcgdG8gdGhlIHN0b3JlCi0gICAgLy8gYXJlIGRlYWxsb2NhdGVkIGFzIHdl
bGwuCi0gICAgLy8KLSAgICBjbGFzcyBTY29wZWRET01EYXRhU3RvcmUgOiBwdWJsaWMgRE9NRGF0
YVN0b3JlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSgpOwotCi0g
ICAgICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCB3aGVuIFdURiB0aHJlYWQgaXMgdGVhcmluZyBk
b3duLgotICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBhbGwgY2hpbGQgdGhyZWFkcyBydW5uaW5n
IFY4IGluc3RhbmNlcyBhcmUgY3JlYXRlZCBieSBXVEYuCi0gICAgICAgIHZpcnR1YWwgflNjb3Bl
ZERPTURhdGFTdG9yZSgpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NvcGVkRE9NRGF0YVN0b3JlX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAkocmV2aXNpb24gMTMyNDQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwOCw3ICsyMjA4LDcg
QEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VgogCiBzdGF0aWMgdm9p
ZCBuZXV0ZXJCaW5kaW5nKHZvaWQqIGRvbU9iamVjdCkgCiB7Ci0gICAgRE9NRGF0YUxpc3QmIGFs
bFN0b3JlcyA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+YWxsU3RvcmVzKCk7CisgICAg
VmVjdG9yPERPTURhdGFTdG9yZSo+JiBhbGxTdG9yZXMgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJy
ZW50KCktPmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWxsU3RvcmVz
LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqID0gYWxs
U3RvcmVzW2ldLT5kb21PYmplY3RNYXAoKS5nZXQoZG9tT2JqZWN0KTsKICAgICAgICAgaWYgKCFv
YmouSXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU3RhdGljRE9N
RGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
dGF0aWNET01EYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAxMzI0NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RhdGljRE9NRGF0YVN0
b3JlLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0YXRpY0RPTURhdGFT
dG9yZTo6U3RhdGljRE9NRGF0YVN0b3JlKCkKLXsKLSAgICBtX2RvbU5vZGVNYXAgPSAmbV9zdGF0
aWNEb21Ob2RlTWFwOwotICAgIG1fYWN0aXZlRG9tTm9kZU1hcCA9ICZtX3N0YXRpY0FjdGl2ZURv
bU5vZGVNYXA7Ci0gICAgbV9kb21PYmplY3RNYXAgPSAmbV9zdGF0aWNEb21PYmplY3RNYXA7Ci0g
ICAgbV9hY3RpdmVEb21PYmplY3RNYXAgPSAmbV9zdGF0aWNBY3RpdmVEb21PYmplY3RNYXA7Ci0g
ICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWdpc3RlckRPTURhdGFTdG9yZSh0aGlz
KTsKLX0KLQotU3RhdGljRE9NRGF0YVN0b3JlOjp+U3RhdGljRE9NRGF0YVN0b3JlKCkKLXsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnVucmVnaXN0ZXJET01EYXRhU3RvcmUodGhp
cyk7Ci19Ci0KLXZvaWQgU3RhdGljRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Qmlu
ZGluZyk7Ci0gICAgRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJ
bmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3N0YXRpY0RvbU5vZGVNYXApOwotICAgIGluZm8u
YWRkTWVtYmVyKG1fc3RhdGljQWN0aXZlRG9tTm9kZU1hcCk7Ci0gICAgaW5mby5hZGRNZW1iZXIo
bV9zdGF0aWNEb21PYmplY3RNYXApOwotICAgIGluZm8uYWRkTWVtYmVyKG1fc3RhdGljQWN0aXZl
RG9tT2JqZWN0TWFwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0YVN0b3JlLmgJKHJldmlzaW9u
IDEzMjQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0YXRpY0RPTURhdGFT
dG9yZV9oCi0jZGVmaW5lIFN0YXRpY0RPTURhdGFTdG9yZV9oCi0KLSNpbmNsdWRlICJET01EYXRh
U3RvcmUuaCIKLSNpbmNsdWRlICJJbnRydXNpdmVET01XcmFwcGVyTWFwLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotLy8gU3RhdGljRE9NRGF0YVN0b3JlCi0vLwotLy8gU3RhdGljRE9NRGF0
YVN0b3JlIGlzIGEgRE9NRGF0YVN0b3JlIHRoYXQgbWFuYWdlcyB0aGUgbGlmZXRpbWUgb2YgdGhl
IHN0b3JlCi0vLyBzdGF0aWNhbGx5LiAgVGhpcyBlbmNhcHN1bGF0ZXMgdGhyZWFkLXNwZWNpZmlj
IERPTSBkYXRhIGZvciB0aGUgbWFpbgotLy8gdGhyZWFkLiAgQWxsIHRoZSBtYXBzIGluIGl0IGFy
ZSBzdGF0aWMuICBUaGlzIGlzIGJlY2F1c2Ugd2UgYXJlIHVuYWJsZSB0bwotLy8gcmVseSBvbiBX
VEY6OlRocmVhZFNwZWNpZmljVGhyZWFkRXhpdCB0byBkbyB0aGUgY2xlYW51cCBzaW5jZSB0aGUg
cGxhY2UgdGhhdAotLy8gdGVhcnMgZG93biB0aGUgbWFpbiB0aHJlYWQgY2FuIG5vdCBjYWxsIGFu
eSBXVEYgZnVuY3Rpb25zLgotLy8KLWNsYXNzIFN0YXRpY0RPTURhdGFTdG9yZSA6IHB1YmxpYyBE
T01EYXRhU3RvcmUgewotcHVibGljOgotICAgIFN0YXRpY0RPTURhdGFTdG9yZSgpOwotICAgIHZp
cnR1YWwgflN0YXRpY0RPTURhdGFTdG9yZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToK
LSAgICBET01Ob2RlV3JhcHBlck1hcCBtX3N0YXRpY0RvbU5vZGVNYXA7Ci0gICAgQWN0aXZlRE9N
Tm9kZVdyYXBwZXJNYXAgbV9zdGF0aWNBY3RpdmVEb21Ob2RlTWFwOwotICAgIERPTVdyYXBwZXJI
YXNoTWFwPHZvaWQ+IG1fc3RhdGljRG9tT2JqZWN0TWFwOwotICAgIERPTVdyYXBwZXJIYXNoTWFw
PHZvaWQ+IG1fc3RhdGljQWN0aXZlRG9tT2JqZWN0TWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gU3RhdGljRE9NRGF0YVN0b3JlX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAJKHJldmlzaW9uIDEzMjQ0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAKICNpbmNsdWRlICJET01EYXRhU3Rv
cmUuaCIKLSNpbmNsdWRlICJTY29wZWRET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpA
QCAtNDAsMTYgKzM5LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTURhdGFTdG9yZUhh
bmRsZTo6RE9NRGF0YVN0b3JlSGFuZGxlKGJvb2wgaW5pdGlhbGl6ZSkKLSAgICA6IG1fc3RvcmUo
YWRvcHRQdHIoIWluaXRpYWxpemUgPyAwIDogbmV3IFNjb3BlZERPTURhdGFTdG9yZSgpKSkKIHsK
LSAgICBpZiAobV9zdG9yZSkKLSAgICAgICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5y
ZWdpc3RlckRPTURhdGFTdG9yZShtX3N0b3JlLmdldCgpKTsKKyAgICBpZiAoaW5pdGlhbGl6ZSkK
KyAgICAgICAgbV9zdG9yZSA9IGFkb3B0UHRyKG5ldyBET01EYXRhU3RvcmUoRE9NRGF0YVN0b3Jl
OjpJc29sYXRlZFdvcmxkKSk7CiB9CiAKIERPTURhdGFTdG9yZUhhbmRsZTo6fkRPTURhdGFTdG9y
ZUhhbmRsZSgpCiB7Ci0gICAgaWYgKG1fc3RvcmUpCi0gICAgICAgIFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKS0+dW5yZWdpc3RlckRPTURhdGFTdG9yZShtX3N0b3JlLmdldCgpKTsKIH0KIAog
Tm9kZVdyYXBwZXJWaXNpdG9yOjp+Tm9kZVdyYXBwZXJWaXNpdG9yKCkKQEAgLTg0LDE1ICs4MCw2
IEBAIERPTVdyYXBwZXJNYXA8dm9pZD4mIGdldEFjdGl2ZURPTU9iamVjdE0KICAgICByZXR1cm4g
RE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5hY3RpdmVEb21PYmplY3RNYXAoKTsKIH0K
IAotdm9pZCByZW1vdmVBbGxET01PYmplY3RzKCkKLXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgRE9NRGF0YVN0b3JlKiBzdG9y
ZSA9IERPTURhdGFTdG9yZTo6Y3VycmVudCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKLSAg
ICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkuY2xlYXIoKTsKLSAgICBzdG9yZS0+YWN0aXZlRG9tT2Jq
ZWN0TWFwKCkuY2xlYXIoKTsKLX0KLQogdm9pZCB2aXNpdEFsbERPTU5vZGVzKE5vZGVXcmFwcGVy
VmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBAIC0xMjYs
NyArMTEzLDcgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU5vZGVzKERPTVdyYXBwZXJWaXNpdAogewog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIERPTURhdGFMaXN0JiBsaXN0ID0gVjhQ
ZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKKyAgICBWZWN0b3I8RE9NRGF0
YVN0b3JlKj4mIGxpc3QgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3Jlcygp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAg
ICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKIApAQCAtMTM4LDcgKzEyNSw3IEBAIHZv
aWQgdmlzaXRET01PYmplY3RzKERPTVdyYXBwZXJWaXNpdG9yPHYKIHsKICAgICB2ODo6SGFuZGxl
U2NvcGUgc2NvcGU7CiAKLSAgICBET01EYXRhTGlzdCYgbGlzdCA9IFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKS0+YWxsU3RvcmVzKCk7CisgICAgVmVjdG9yPERPTURhdGFTdG9yZSo+JiBsaXN0
ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5hbGxTdG9yZXMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3Jl
KiBzdG9yZSA9IGxpc3RbaV07CiAKQEAgLTE1MCw3ICsxMzcsNyBAQCB2b2lkIHZpc2l0QWN0aXZl
RE9NT2JqZWN0cyhET01XcmFwcGVyVmlzCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwog
Ci0gICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFs
bFN0b3JlcygpOworICAgIFZlY3RvcjxET01EYXRhU3RvcmUqPiYgbGlzdCA9IFY4UGVySXNvbGF0
ZURhdGE6OmN1cnJlbnQoKS0+YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0
W2ldOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgJKHJldmlzaW9u
IDEzMjQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDkgKzc2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIERPTVdy
YXBwZXJNYXA8dm9pZD4mIGdldEFjdGl2ZURPTU9iamVjdE1hcCh2ODo6SXNvbGF0ZSogPSAwKTsK
ICAgICB2b2lkIHZpc2l0QWN0aXZlRE9NT2JqZWN0cyhET01XcmFwcGVyVmlzaXRvcjx2b2lkPiop
OwogCi0gICAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHRvIHJlbW92ZSBhbGwgRE9NIG9iamVj
dHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRocmVhZCB3aGVuIGl0IGlzIHRlYXJpbmcg
ZG93bi4KLSAgICB2b2lkIHJlbW92ZUFsbERPTU9iamVjdHMoKTsKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gVjhET01NYXBfaApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAkocmV2aXNpb24gMTMyNDQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U3RyaW5nQ2FjaGU+IG1f
c3RyaW5nQ2FjaGU7CiAgICAgT3duUHRyPEludGVnZXJDYWNoZT4gbV9pbnRlZ2VyQ2FjaGU7CiAK
LSAgICBET01EYXRhTGlzdCBtX2RvbURhdGFMaXN0OworICAgIFZlY3RvcjxET01EYXRhU3RvcmUq
PiBtX2RvbURhdGFMaXN0OwogICAgIERPTURhdGFTdG9yZSogbV9kb21EYXRhU3RvcmU7CiAKICAg
ICBPd25QdHI8VjhIaWRkZW5Qcm9wZXJ0eU5hbWU+IG1faGlkZGVuUHJvcGVydHlOYW1lOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDEzMjQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxNSAr
NjAsMTUgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udAogICAgICwg
bV9leGVjdXRpb25TY2hlZHVsZWRUb1Rlcm1pbmF0ZShmYWxzZSkKIHsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKG1faXNvbGF0ZSk7Ci0gICAg
ZGF0YS0+YWxsU3RvcmVzKCkuYXBwZW5kKCZtX0RPTURhdGFTdG9yZSk7Ci0gICAgZGF0YS0+c2V0
RE9NRGF0YVN0b3JlKCZtX0RPTURhdGFTdG9yZSk7CiAgICAgbV9pc29sYXRlLT5FbnRlcigpOwor
ICAgIG1fZG9tRGF0YVN0b3JlID0gYWRvcHRQdHIobmV3IERPTURhdGFTdG9yZShET01EYXRhU3Rv
cmU6OldvcmtlcikpOworICAgIGRhdGEtPnNldERPTURhdGFTdG9yZShtX2RvbURhdGFTdG9yZS5n
ZXQoKSk7CiAgICAgbV9wcm94eSA9IGFkb3B0UHRyKG5ldyBXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkod29ya2VyQ29udGV4dCkpOwogfQogCiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29y
a2VyU2NyaXB0Q29udHJvbGxlcigpCiB7Ci0gICAgcmVtb3ZlQWxsRE9NT2JqZWN0cygpOworICAg
IG1fZG9tRGF0YVN0b3JlLmNsZWFyKCk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8g
VGhlIGNvcnJlc3BvbmRpbmcgY2FsbCB0byBkaWRTdGFydFdvcmtlclJ1bkxvb3AgaXMgaW4KICAg
ICAvLyBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpLgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
MTMyNDQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAKICNpZiBFTkFCTEUoV09S
S0VSUykKIAotI2luY2x1ZGUgIlNjb3BlZERPTURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogCiAjaW5jbHVkZSA8djguaD4KQEAgLTgyLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAgICAgICAg
IE93blB0cjxXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk+IG1fcHJveHk7CiAgICAgICAgIHY4
OjpJc29sYXRlKiBtX2lzb2xhdGU7Ci0gICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSBtX0RPTURh
dGFTdG9yZTsKKyAgICAgICAgT3duUHRyPERPTURhdGFTdG9yZT4gbV9kb21EYXRhU3RvcmU7CiAg
ICAgICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW47CiAgICAgICAgIGJvb2wgbV9leGVjdXRp
b25TY2hlZHVsZWRUb1Rlcm1pbmF0ZTsKICAgICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxl
ZFRlcm1pbmF0aW9uTXV0ZXg7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>