<?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>60205</bug_id>
          
          <creation_ts>2011-05-04 13:16:23 -0700</creation_ts>
          <short_desc>Media Stream API: integrate the Track List objects into the existing code</short_desc>
          <delta_ts>2011-06-08 06:10:46 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>60177</dependson>
    
    <dependson>60184</dependson>
          <blocked>56459</blocked>
    
    <blocked>61069</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>tbassetto+bugzilla</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398199</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-04 13:16:23 -0700</bug_when>
    <thetext>Add compile-guarded modifications to the Track List objects to make them fully compatible with their use in the Media Stream API. Update also the controllers to provide these lists on stream generation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412555</commentid>
    <comment_count>1</comment_count>
      <attachid>95421</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-05-31 05:02:24 -0700</bug_when>
    <thetext>Created attachment 95421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416467</commentid>
    <comment_count>2</comment_count>
      <attachid>95421</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-06-07 06:42:54 -0700</bug_when>
    <thetext>Comment on attachment 95421
Patch

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

Just a nit and a question, everything else looks good to me.

&gt; Source/WebCore/dom/ExclusiveTrackList.cpp:73
&gt; +void ExclusiveTrackList::trackFailed(unsigned long index)

It isn&apos;t obvious to me why mediaStreamFrameController doesn&apos;t need to be notified.

&gt; Source/WebCore/dom/TrackList.cpp:167
&gt;      // For the HTML Media Element: https://bugs.webkit.org/show_bug.cgi?id=61127

This comment has a redundant &quot;for the HTML Media Element&quot; now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416473</commentid>
    <comment_count>3</comment_count>
      <attachid>95421</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-06-07 06:51:26 -0700</bug_when>
    <thetext>Comment on attachment 95421
Patch

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

&gt;&gt; Source/WebCore/dom/ExclusiveTrackList.cpp:73
&gt;&gt; +void ExclusiveTrackList::trackFailed(unsigned long index)
&gt; 
&gt; It isn&apos;t obvious to me why mediaStreamFrameController doesn&apos;t need to be notified.

It is. In fact the MediaStreamFrameController is the one calling this method. Just look for MediaStreamFrameController::audioTrackFailed and MediaStreamFrameController::videoTrackFailed. Is that what you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416496</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-06-07 07:45:25 -0700</bug_when>
    <thetext>
&gt; It is. In fact the MediaStreamFrameController is the one calling this method. Just look for MediaStreamFrameController::audioTrackFailed and MediaStreamFrameController::videoTrackFailed. Is that what you mean?

Thanks for the explanation. Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417174</commentid>
    <comment_count>5</comment_count>
      <attachid>95421</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-08 04:43:07 -0700</bug_when>
    <thetext>Comment on attachment 95421
Patch

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

&gt;&gt; Source/WebCore/dom/TrackList.cpp:167
&gt;&gt;      // For the HTML Media Element: https://bugs.webkit.org/show_bug.cgi?id=61127
&gt; 
&gt; This comment has a redundant &quot;for the HTML Media Element&quot; now.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417175</commentid>
    <comment_count>6</comment_count>
      <attachid>96405</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-08 04:45:15 -0700</bug_when>
    <thetext>Created attachment 96405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417201</commentid>
    <comment_count>7</comment_count>
      <attachid>96405</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 06:08:23 -0700</bug_when>
    <thetext>Comment on attachment 96405
Patch

Clearing flags on attachment: 96405

Committed r88341: &lt;http://trac.webkit.org/changeset/88341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417202</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 06:08:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417204</commentid>
    <comment_count>9</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-08 06:10:46 -0700</bug_when>
    <thetext>Changed platform to All/All</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95421</attachid>
            <date>2011-05-31 05:02:24 -0700</date>
            <delta_ts>2011-06-08 04:45:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60205-20110531140222.patch</filename>
            <type>text/plain</type>
            <size>29065</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc3MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YjMxMmEwMGM3NDM0NWNl
YzExZGViYjZkZmE2OTcyYTc0ZTZlMzA0Li4zZTk3MmRiNjIwYjNlNWIxYzBhY2E1YWZkODExZGE1
ZDQ3OGFlZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDUtMzEgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVkaWEgU3RyZWFtIEFQSTogaW50ZWdyYXRlIHRo
ZSBUcmFjayBMaXN0IG9iamVjdHMgaW50byB0aGUgZXhpc3RpbmcgY29kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMjA1CisKKyAgICAgICAgVGVz
dHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIHdpbGwgYmUgcHJvdmlkZWQgYnkgdGhlIGJ1ZyA1
NjU4Ny4KKworICAgICAgICAqIGRvbS9FeGNsdXNpdmVUcmFja0xpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXhjbHVzaXZlVHJhY2tMaXN0OjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RXhjbHVzaXZlVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCk6CisgICAgICAgICogZG9tL0V4Y2x1c2l2
ZVRyYWNrTGlzdC5oOgorICAgICAgICAqIGRvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VuZXJhdGVkU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJhdGVkU3RyZWFtOjpHZW5lcmF0ZWRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJhdGVkU3RyZWFtOjpzdHJlYW1FbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0ZWRT
dHJlYW06OmF1ZGlvVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyYXRlZFN0cmVhbTo6
dmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJhdGVkU3RyZWFtOjpzdG9wKToK
KyAgICAgICAgKiBkb20vR2VuZXJhdGVkU3RyZWFtLmg6CisgICAgICAgICogZG9tL0dlbmVyYXRl
ZFN0cmVhbS5pZGw6CisgICAgICAgICogZG9tL011bHRpcGxlVHJhY2tMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11bHRpcGxlVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNdWx0aXBsZVRyYWNrTGlzdDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
bHRpcGxlVHJhY2tMaXN0OjpkaXNhYmxlKToKKyAgICAgICAgKiBkb20vTXVsdGlwbGVUcmFja0xp
c3QuaDoKKyAgICAgICAgKiBkb20vU3RyZWFtLmg6CisgICAgICAgICogZG9tL1RyYWNrTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrTGlzdDo6YXNzb2NpYXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdDo6YXNzb2NpYXRlZFN0cmVhbUxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dDo6dHJhY2tGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKiBkb20vVHJhY2tMaXN0Lmg6CisgICAgICAgICogcGFn
ZS9NZWRpYVN0cmVhbUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZW5hYmxl
QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmRp
c2FibGVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6c2VsZWN0VmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6OnN0cmVhbUdlbmVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6OmF1ZGlvVHJhY2tGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Db250cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnVu
cmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OmVudGVyRGV0YWNoZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjplbmFibGVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNhYmxlQXVkaW9UcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c2VsZWN0VmlkZW9UcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RyZWFtR2Vu
ZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjph
dWRpb1RyYWNrRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6Q2xpZW50QmFzZTo6aXNHZW5lcmljQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmljQ2xpZW50OjpHZW5lcmljQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmljQ2xp
ZW50Ojp+R2VuZXJpY0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6R2VuZXJpY0NsaWVudDo6aXNHZW5lcmljQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmljQ2xpZW50Ojp1bnJlZ2lz
dGVyKToKKwogMjAxMS0wNS0zMSAgT2xpdmVyIFZhcmdhICA8VmFyZ2EuT2xpdmVyQHN0dWQudS1z
emVnZWQuaHU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2x1c2l2ZVRyYWNrTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0LmNwcAppbmRleCBmMjkyMTI3MWYxM2Y5
ZjE4MzRjNDdhYTgzNTllMTNlNjcwZWM2YjE0Li5mOTZkMjI4MWY5OTkwOGM1MWVmMDhmOTNkNGNj
NTgyZGIyMWQzNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJh
Y2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0LmNw
cApAQCAtNjAsOSArNjAsMjUgQEAgdm9pZCBFeGNsdXNpdmVUcmFja0xpc3Q6OnNlbGVjdChsb25n
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zZWxl
Y3RlZEluZGV4ID0gaW5kZXg7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICht
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcigpLT5zZWxlY3RWaWRlb1RyYWNrKGFzc29jaWF0ZWRTdHJlYW1MYWJlbCgpLCBpbmRl
eCk7CisjZW5kaWYKKwogICAgIHBvc3RDaGFuZ2VFdmVudCgpOwogfQogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKK3ZvaWQgRXhjbHVzaXZlVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCh1bnNpZ25l
ZCBsb25nIGluZGV4KQoreworICAgIGlmIChtX3NlbGVjdGVkSW5kZXggPT0gc3RhdGljX2Nhc3Q8
bG9uZz4oaW5kZXgpKQorICAgICAgICBtX3NlbGVjdGVkSW5kZXggPSBOb1NlbGVjdGlvbjsKKwor
ICAgIFRyYWNrTGlzdDo6dHJhY2tGYWlsZWQoaW5kZXgpOworfQorI2VuZGlmCisKIEV4Y2x1c2l2
ZVRyYWNrTGlzdCogRXhjbHVzaXZlVHJhY2tMaXN0Ojp0b0V4Y2x1c2l2ZVRyYWNrTGlzdCgpCiB7
CiAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjbHVz
aXZlVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0LmgK
aW5kZXggNTRkMzBjNmFkNGU3OWVkZjU5NTk2MjlmZmMxYmNhM2QyZjFjNjMwOC4uOWMzN2QxZTZj
YzZjNzExMzNlOGU5ZWEzMmViZWM4ZjQ2YTVmM2I5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2x1c2l2ZVRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNs
dXNpdmVUcmFja0xpc3QuaApAQCAtNDQsNiArNDQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyKCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZpcnR1YWwg
dm9pZCB0cmFja0ZhaWxlZCh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyNlbmRpZgorCiAgICAgLy8g
RXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBFeGNsdXNpdmVUcmFja0xp
c3QqIHRvRXhjbHVzaXZlVHJhY2tMaXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRlZFN0
cmVhbS5jcHAKaW5kZXggN2I3ZTY3YTI2ZWUzZjIxNWMzODEwMjZjYjI0Y2ZlMDFjYjZmNWQ4NC4u
NjM0YjA2ZmE4OGI2NzNmMTdjNDFiYWJhYTllZTBjZTg4ZWQyNTk5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0dlbmVyYXRlZFN0cmVhbS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkV2
ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkV4Y2x1c2l2ZVRyYWNr
TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiTXVsdGlwbGVUcmFja0xpc3QuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3LDE0ICs1OSwyMCBAQCBwdWJsaWM6CiAg
ICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKIH07CiAKLVBhc3NSZWZQdHI8R2VuZXJhdGVkU3RyZWFt
PiBHZW5lcmF0ZWRTdHJlYW06OmNyZWF0ZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsKQorUGFzc1JlZlB0cjxHZW5lcmF0ZWRT
dHJlYW0+IEdlbmVyYXRlZFN0cmVhbTo6Y3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiBmcmFtZUNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFBhc3NSZWZQdHI8TXVsdGlw
bGVUcmFja0xpc3Q+IGF1ZGlvVHJhY2tzLCBQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlzdD4g
dmlkZW9UcmFja3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmF0ZWRTdHJlYW0o
ZnJhbWVDb250cm9sbGVyLCBsYWJlbCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJh
dGVkU3RyZWFtKGZyYW1lQ29udHJvbGxlciwgbGFiZWwsIGF1ZGlvVHJhY2tzLCB2aWRlb1RyYWNr
cykpOwogfQogCi1HZW5lcmF0ZWRTdHJlYW06OkdlbmVyYXRlZFN0cmVhbShNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsKQorR2Vu
ZXJhdGVkU3RyZWFtOjpHZW5lcmF0ZWRTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
IGZyYW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUGFzc1JlZlB0cjxNdWx0aXBs
ZVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0PiB2
aWRlb1RyYWNrcykKICAgICA6IFN0cmVhbShmcmFtZUNvbnRyb2xsZXIsIGxhYmVsLCB0cnVlKQor
ICAgICwgbV9hdWRpb1RyYWNrcyhhdWRpb1RyYWNrcykKKyAgICAsIG1fdmlkZW9UcmFja3Modmlk
ZW9UcmFja3MpCiB7CisgICAgQVNTRVJUKG1fYXVkaW9UcmFja3MpOworICAgIEFTU0VSVChtX3Zp
ZGVvVHJhY2tzKTsKKyAgICBtX2F1ZGlvVHJhY2tzLT5hc3NvY2lhdGVTdHJlYW0obGFiZWwpOwor
ICAgIG1fdmlkZW9UcmFja3MtPmFzc29jaWF0ZVN0cmVhbShsYWJlbCk7CiB9CiAKIEdlbmVyYXRl
ZFN0cmVhbTo6fkdlbmVyYXRlZFN0cmVhbSgpCkBAIC04NCwxMiArOTIsMzIgQEAgdm9pZCBHZW5l
cmF0ZWRTdHJlYW06OmRldGFjaEVtYmVkZGVyKCkKICAgICBTdHJlYW06OmRldGFjaEVtYmVkZGVy
KCk7CiB9CiAKK3ZvaWQgR2VuZXJhdGVkU3RyZWFtOjpzdHJlYW1FbmRlZCgpCit7CisgICAgbV9h
dWRpb1RyYWNrcy0+Y2xlYXIoKTsKKyAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhcigpOworCisgICAg
U3RyZWFtOjpzdHJlYW1FbmRlZCgpOworfQorCitQYXNzUmVmUHRyPE11bHRpcGxlVHJhY2tMaXN0
PiBHZW5lcmF0ZWRTdHJlYW06OmF1ZGlvVHJhY2tzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9h
dWRpb1RyYWNrczsKK30KKworUGFzc1JlZlB0cjxFeGNsdXNpdmVUcmFja0xpc3Q+IEdlbmVyYXRl
ZFN0cmVhbTo6dmlkZW9UcmFja3MoKSBjb25zdAoreworICAgIHJldHVybiBtX3ZpZGVvVHJhY2tz
OworfQorCiB2b2lkIEdlbmVyYXRlZFN0cmVhbTo6c3RvcCgpCiB7CiAgICAgaWYgKCFtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpIHx8IG1fcmVhZHlTdGF0ZSA9PSBFTkRFRCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+c3RvcEdlbmVyYXRl
ZFN0cmVhbShsYWJlbCgpKTsKKyAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhcigpOworICAgIG1fdmlk
ZW9UcmFja3MtPmNsZWFyKCk7CiAKICAgICBtX3JlYWR5U3RhdGUgPSBFTkRFRDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5oCmluZGV4IDQ0YjI1ZTBjODc0NjEwNmIxMWEzZWFiYTYz
Y2I4NWEzYzY1YmY1ZTYuLjJiNzBhZGY5ZTNiMTcxMjlhMmUyNjU5OGE3ZGE4MjZhNTcyNjVhMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmgKQEAgLTMyLDI2ICszMiwzNSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV4Y2x1c2l2ZVRyYWNrTGlzdDsKK2NsYXNz
IE11bHRpcGxlVHJhY2tMaXN0OworCiBjbGFzcyBHZW5lcmF0ZWRTdHJlYW0gOiBwdWJsaWMgU3Ry
ZWFtIHsKIHB1YmxpYzoKLSAgICAvLyBGSVhNRTogYWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3Mg
d2hlbiBhdmFpbGFibGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJhdGVkU3RyZWFtPiBj
cmVhdGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmF0ZWRTdHJlYW0+IGNyZWF0ZShNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFBhc3NSZWZQdHI8TXVsdGlw
bGVUcmFja0xpc3Q+IGF1ZGlvVHJhY2tzLCBQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlzdD4g
dmlkZW9UcmFja3MpOwogICAgIHZpcnR1YWwgfkdlbmVyYXRlZFN0cmVhbSgpOwogCiAgICAgdm9p
ZCBzdG9wKCk7CiAKKyAgICBQYXNzUmVmUHRyPE11bHRpcGxlVHJhY2tMaXN0PiBhdWRpb1RyYWNr
cygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0PiB2aWRlb1RyYWNr
cygpIGNvbnN0OworCiAgICAgLy8gTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlN0cmVhbUNs
aWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRW1iZWRkZXIoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRW5kZWQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Lgog
ICAgIHZpcnR1YWwgR2VuZXJhdGVkU3RyZWFtKiB0b0dlbmVyYXRlZFN0cmVhbSgpOwogCiBwcml2
YXRlOgotICAgIEdlbmVyYXRlZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGNv
bnN0IFN0cmluZyYgbGFiZWwpOworICAgIEdlbmVyYXRlZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFBhc3NSZWZQdHI8TXVsdGlwbGVUcmFj
a0xpc3Q+IGF1ZGlvVHJhY2tzLCBQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlzdD4gdmlkZW9U
cmFja3MpOwogICAgIGNsYXNzIERpc3BhdGNoVXBkYXRlVGFzazsKICAgICBmcmllbmQgY2xhc3Mg
RGlzcGF0Y2hVcGRhdGVUYXNrOwogCiAgICAgdm9pZCBvblN0b3AoKTsKKworICAgIFJlZlB0cjxN
dWx0aXBsZVRyYWNrTGlzdD4gbV9hdWRpb1RyYWNrczsKKyAgICBSZWZQdHI8RXhjbHVzaXZlVHJh
Y2tMaXN0PiBtX3ZpZGVvVHJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmlkbAppbmRleCBhMzhkNmMwZjY1ZjRkZDUxZTJj
MDY3Y2ExYjBjZTBlMTlmYzJmZjNjLi5mZjFiZDM2YWRkMjgzMTExYWNjMDlmZmM4OTU4ZjI5YzI2
ODI1MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmlkbApAQCAtMzAsNyAr
MzAsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAgXSBHZW5lcmF0ZWRTdHJlYW0gOiBTdHJlYW0gewog
ICAgICAgICB2b2lkIHN0b3AoKTsKIAotICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGF1ZGlv
IGFuZCB2aWRlbyB0cmFja3Mgd2hlbiBhdmFpbGFibGUuCisgICAgICAgIC8vIFRyYWNrIGNvbnRy
b2wuCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNdWx0aXBsZVRyYWNrTGlzdCBhdWRpb1Ry
YWNrczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEV4Y2x1c2l2ZVRyYWNrTGlzdCB2aWRl
b1RyYWNrczsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXVs
dGlwbGVUcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011bHRpcGxlVHJhY2tMaXN0
LmNwcAppbmRleCBiNzkyN2JkNjJiNzU2YWE1Yjg1MzE5ZGVkODlmNzMzYzE2OGMwYTgzLi5lOGUz
NzE5NzA1ZTZkMzhhNzgxZDllM2E1ZjlhYzgwYTg0NDc0NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXVsdGlwbGVUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdWx0aXBsZVRyYWNrTGlzdC5jcHAKQEAgLTU0LDYgKzU0LDE0IEBAIHZvaWQgTXVsdGlwbGVU
cmFja0xpc3Q6OmNsZWFyKCkKICAgICBUcmFja0xpc3Q6OmNsZWFyKCk7CiB9CiAKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQordm9pZCBNdWx0aXBsZVRyYWNrTGlzdDo6dHJhY2tGYWlsZWQodW5z
aWduZWQgbG9uZyBpbmRleCkKK3sKKyAgICBUcmFja0xpc3Q6OnRyYWNrRmFpbGVkKGluZGV4KTsK
KyAgICBtX2lzRW5hYmxlZC5yZW1vdmUoaW5kZXgpOworfQorI2VuZGlmCisKIGJvb2wgTXVsdGlw
bGVUcmFja0xpc3Q6OmlzRW5hYmxlZCh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKIHsKICAgICByZXR1cm4gY2hlY2tJbmRleChpbmRleCwgZWMpID8gbV9pc0Vu
YWJsZWRbaW5kZXhdIDogZmFsc2U7CkBAIC02NSw2ICs3MywxMiBAQCB2b2lkIE11bHRpcGxlVHJh
Y2tMaXN0OjplbmFibGUodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1faXNFbmFibGVkW2luZGV4XSA9IHRydWU7CisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigp
KQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5lbmFibGVBdWRpb1RyYWNr
KGFzc29jaWF0ZWRTdHJlYW1MYWJlbCgpLCBpbmRleCk7CisjZW5kaWYKKwogICAgIHBvc3RDaGFu
Z2VFdmVudCgpOwogfQogCkBAIC03NCw2ICs4OCwxMiBAQCB2b2lkIE11bHRpcGxlVHJhY2tMaXN0
OjpkaXNhYmxlKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2lzRW5hYmxlZFtpbmRleF0gPSBmYWxzZTsKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisg
ICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmRpc2FibGVBdWRpb1RyYWNrKGFz
c29jaWF0ZWRTdHJlYW1MYWJlbCgpLCBpbmRleCk7CisjZW5kaWYKKwogICAgIHBvc3RDaGFuZ2VF
dmVudCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXVsdGlwbGVUcmFj
a0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdWx0aXBsZVRyYWNrTGlzdC5oCmluZGV4IDdh
NmQ3MmFmZWNkZWNiYjdiNWU5ZTA3NWM3NjQ1ZTUxNTE2MGIwMjcuLjJkYjAyOWIxMmY1NzRhMDhj
NjIwYzhiZDgxYzAyNTdhNDIyMzBjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dWx0aXBsZVRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdWx0aXBsZVRyYWNr
TGlzdC5oCkBAIC00NSw2ICs0NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdmlydHVhbCB2b2lkIHRyYWNr
RmFpbGVkKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworI2VuZGlmCisKICAgICAvLyBFdmVudFRhcmdl
dCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIE11bHRpcGxlVHJhY2tMaXN0KiB0b011bHRp
cGxlVHJhY2tMaXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uaAppbmRleCA1OTg0NmU3MzZkNjM5MzFkNzFm
NzI3NTY3Yzk5NzI4MWJkNTg5ZTZmLi5iNzVhYTYyZTJmMDhkZjY1ZWE1ZDU0MTI5Y2U2NzNkZDYy
NWU5YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0cmVhbS5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKIAogICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhlIHJlY29yZCBtZXRob2Qgd2hlbiBTdHJlYW1SZWNvcmRl
ciBpcyBhdmFpbGFibGUuCiAKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJl
YWR5c3RhdGVjaGFuZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5k
ZWQpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhZHlTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYWNrTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNwcAppbmRleCA3YTE2Mjc4ZTBiYmE5
YTMyNzA2YTRmYmI1NzhmMDc2N2YxYzk0NWQ0Li45OGU0NTI4OGMxMjU5NTZkMGMzOTI2NWFmYjY5
ZTc0NWQ3Zjg1NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNwcApAQCAtMTAzLDcgKzEwMywx
NSBAQCBjb25zdCBTdHJpbmcmIFRyYWNrTGlzdDo6Z2V0TGFuZ3VhZ2UodW5zaWduZWQgbG9uZyBp
bmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogCiB2b2lkIFRyYWNrTGlzdDo6Y2xlYXIoKQog
eworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV9hc3NvY2lhdGVkU3RyZWFtTGFiZWwg
PSBTdHJpbmcoKTsKKyNlbmRpZgorCisgICAgaWYgKG1fdHJhY2tzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgbV90cmFja3MuY2xlYXIoKTsKKwogICAgIHBvc3RDaGFuZ2VFdmVu
dCgpOwogfQogCkBAIC0xMjMsNiArMTMxLDI2IEBAIHZvaWQgVHJhY2tMaXN0OjpkaXNwYXRjaENo
YW5nZUV2ZW50KGludCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCit2b2lkIFRyYWNrTGlzdDo6YXNzb2NpYXRlU3RyZWFtKGNvbnN0IFN0cmluZyYgbGFi
ZWwpCit7CisgICAgQVNTRVJUKG1fYXNzb2NpYXRlZFN0cmVhbUxhYmVsLmlzTnVsbCgpKTsKKyAg
ICBtX2Fzc29jaWF0ZWRTdHJlYW1MYWJlbCA9IGxhYmVsOworfQorCitjb25zdCBTdHJpbmcmIFRy
YWNrTGlzdDo6YXNzb2NpYXRlZFN0cmVhbUxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9h
c3NvY2lhdGVkU3RyZWFtTGFiZWw7Cit9CisKK3ZvaWQgVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCh1
bnNpZ25lZCBsb25nIGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKKyAg
ICBtX3RyYWNrcy5yZW1vdmUoaW5kZXgpOworICAgIHBvc3RDaGFuZ2VFdmVudCgpOworfQorI2Vu
ZGlmCisKIFRyYWNrTGlzdCogVHJhY2tMaXN0Ojp0b1RyYWNrTGlzdCgpCiB7CiAgICAgcmV0dXJu
IHRoaXM7CkBAIC0xMzAsOCArMTU4LDEyIEBAIFRyYWNrTGlzdCogVHJhY2tMaXN0Ojp0b1RyYWNr
TGlzdCgpCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRyYWNrTGlzdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHByb3ZpZGUgYW4gc2NyaXB0IGV4
ZWN1dGlvbiBjb250ZXh0IGZvciBIVE1MIE1lZGlhIEVsZW1lbnQgYW5kIE1lZGlhU3RyZWFtIEFQ
SSB1c2UgY2FzZXMuCi0gICAgLy8gRm9yIHRoZSBNZWRpYVN0cmVhbSBBUEk6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDIwNQorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIHJldHVy
biBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBwcm92aWRlIGFuIHNjcmlwdCBleGVjdXRpb24gY29u
dGV4dCBmb3IgSFRNTCBNZWRpYSBFbGVtZW50IHVzZSBjYXNlLgogICAgIC8vIEZvciB0aGUgSFRN
TCBNZWRpYSBFbGVtZW50OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjExMjcKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFja0xpc3QuaAppbmRleCBlZWI4ZjNk
Mjc1MjdjZmE1YjdiZDE5NDRkZDYwYjU0MDg0YWUzYWY4Li44ZjY3OTliYWI1ZTQ5ZDAwZjg5ZjEz
Zjc0MGJiNzJjYmMxYzIwMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYWNrTGlzdC5oCkBAIC01OCw2ICs1OCw5
IEBAIHByaXZhdGU6CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhY2s+ID4gVHJhY2tWZWN0b3I7
CiAKIGNsYXNzIFRyYWNrTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrTGlzdD4sCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6R2VuZXJpY0NsaWVudCwKKyNlbmRpZgogICAgICAgICAgICAgICAg
ICAgcHVibGljIEV2ZW50VGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
cmFja0xpc3Q+IGNyZWF0ZShjb25zdCBUcmFja1ZlY3RvciYpOwpAQCAtNzMsNiArNzYsMTIgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKCk7CiAKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIHZvaWQgYXNzb2NpYXRlU3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFi
ZWwpOworICAgIGNvbnN0IFN0cmluZyYgYXNzb2NpYXRlZFN0cmVhbUxhYmVsKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHRyYWNrRmFpbGVkKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworI2VuZGlm
CisKICAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIFRyYWNr
TGlzdCogdG9UcmFja0xpc3QoKTsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKQEAgLTEyNCw2ICsxMzMsMTAgQEAgcHJp
dmF0ZToKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBUcmFj
a1ZlY3RvciBtX3RyYWNrczsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgU3RyaW5n
IG1fYXNzb2NpYXRlZFN0cmVhbUxhYmVsOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKaW5kZXggMWQwZWJi
MGJhMmUwNTZjOWM3YjM1MGQ5ZWFiNTIwY2RiY2E4NWQyZS4uYjNlZjc0MDQ1NDQ4MWVlNGVhMDI5
MWJiNGI1NTI1M2ZlZmUzODgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGll
bnQuaApAQCAtNTIsNiArNTIsMTMgQEAgcHVibGljOgogICAgIC8vIFN0b3AgYSBnZW5lcmF0ZWQg
c3RyZWFtLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wR2VuZXJhdGVkU3RyZWFtKGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpID0gMDsKIAorICAgIC8vIEVuYWJsZS9kaXNhYmxlIGFuIGF1ZGlvIHRy
YWNrIGluIGEgZ2VuZXJhdGVkIHN0cmVhbS4KKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlQXVkaW9U
cmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVBdWRpb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFt
TGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpID0gMDsKKworICAgIC8vIFNlbGVjdCBhIHZpZGVv
IHRyYWNrIGluIGEgZ2VuZXJhdGVkIHN0cmVhbS4KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0Vmlk
ZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBsb25nIGluZGV4KSA9IDA7CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgpIHsgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAppbmRleCA4YzEyZGNh
Y2FkMzM2M2RhMTA2Y2QxNmE4YzAzODM4M2RmYmY5M2U2Li4wNDMyMmU4M2Q0ZDAyMzIwN2M4ZGQz
NjllM2I3NWUwOGI1MTVjNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCisjaW5jbHVkZSAiRXhjbHVzaXZlVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJNdWx0aXBsZVRyYWNrTGlzdC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC0xMTcsNyArMTE5LDIyIEBAIHZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdG9wR2VuZXJh
dGVkU3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCiAgICAgbV9jbGllbnQtPnN0b3BH
ZW5lcmF0ZWRTdHJlYW0oc3RyZWFtTGFiZWwpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6c3RyZWFtR2VuZXJhdGVkKGludCBjb250cm9sbGVyUmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIHN0cmVhbUxhYmVsKQordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmVuYWJsZUF1ZGlv
VHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkKK3sK
KyAgICBtX2NsaWVudC0+ZW5hYmxlQXVkaW9UcmFjayhzdHJlYW1MYWJlbCwgaW5kZXgpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZGlzYWJsZUF1ZGlvVHJhY2soY29uc3QgU3Ry
aW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAgICBtX2NsaWVudC0+
ZGlzYWJsZUF1ZGlvVHJhY2soc3RyZWFtTGFiZWwsIGluZGV4KTsKK30KKwordm9pZCBNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OnNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJl
bCwgbG9uZyBpbmRleCkKK3sKKyAgICBtX2NsaWVudC0+c2VsZWN0VmlkZW9UcmFjayhzdHJlYW1M
YWJlbCwgaW5kZXgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtR2Vu
ZXJhdGVkKGludCBjb250cm9sbGVyUmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
LCBQYXNzUmVmUHRyPE11bHRpcGxlVHJhY2tMaXN0PiBhdWRpb1RyYWNrcywgUGFzc1JlZlB0cjxF
eGNsdXNpdmVUcmFja0xpc3Q+IHZpZGVvVHJhY2tzKQogewogICAgIC8vIERvbid0IGFzc2VydCBz
aW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZCB3aGlsZSB0
aGUgcmVxdWVzdCByZXBseSB3YXMgY29taW5nIGJhY2suCiAgICAgaWYgKG1fcmVxdWVzdHMuY29u
dGFpbnMoY29udHJvbGxlclJlcXVlc3RJZCkpIHsKQEAgLTEyNSw3ICsxNDIsNyBAQCB2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJhdGVkKGludCBjb250cm9sbGVyUmVxdWVz
dElkLCBjb25zdCBTdHJpbgogICAgICAgICByZWdpc3RlclN0cmVhbShzdHJlYW1MYWJlbCwgcmVx
dWVzdC5mcmFtZUNvbnRyb2xsZXIoKSk7CiAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNvbnRy
b2xsZXJSZXF1ZXN0SWQpOwogICAgICAgICBBU1NFUlQocmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIo
KSk7Ci0gICAgICAgIHJlcXVlc3QuZnJhbWVDb250cm9sbGVyKCktPnN0cmVhbUdlbmVyYXRlZChy
ZXF1ZXN0LmxvY2FsSWQoKSwgc3RyZWFtTGFiZWwpOworICAgICAgICByZXF1ZXN0LmZyYW1lQ29u
dHJvbGxlcigpLT5zdHJlYW1HZW5lcmF0ZWQocmVxdWVzdC5sb2NhbElkKCksIHN0cmVhbUxhYmVs
LCBhdWRpb1RyYWNrcywgdmlkZW9UcmFja3MpOwogICAgIH0KIH0KIApAQCAtMTQ2LDYgKzE2Mywy
MCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtRmFpbGVkKGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpCiAgICAgICAgIG1fc3RyZWFtcy5nZXQoc3RyZWFtTGFiZWwpLT5zdHJl
YW1GYWlsZWQoc3RyZWFtTGFiZWwpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
YXVkaW9UcmFja0ZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25n
IGluZGV4KQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxl
ciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZCBieSB0aGUgdGltZSB0aGlzIGlzIGNhbGxlZC4KKyAg
ICBpZiAobV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbUxhYmVsKSkKKyAgICAgICAgbV9zdHJlYW1z
LmdldChzdHJlYW1MYWJlbCktPmF1ZGlvVHJhY2tGYWlsZWQoc3RyZWFtTGFiZWwsIGluZGV4KTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnZpZGVvVHJhY2tGYWlsZWQoY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAgICAvLyBEb24n
dCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95
ZWQgYnkgdGhlIHRpbWUgdGhpcyBpcyBjYWxsZWQuCisgICAgaWYgKG1fc3RyZWFtcy5jb250YWlu
cyhzdHJlYW1MYWJlbCkpCisgICAgICAgIG1fc3RyZWFtcy5nZXQoc3RyZWFtTGFiZWwpLT52aWRl
b1RyYWNrRmFpbGVkKHN0cmVhbUxhYmVsLCBpbmRleCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaAppbmRleCA3MjIxOTJiMzIxYmFlM2Y4YTU0YmE1
MGZlZThjODA2ZWQ1MTNhYWUxLi5iMmQ1NmMyNGVhMTAzMjQ3MWI5NjhiMWJkMGRlNjVjNzQ1MjE2
MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKQEAg
LTM2LDggKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXhjbHVzaXZl
VHJhY2tMaXN0OwogY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQ7CiBjbGFzcyBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjsKK2NsYXNzIE11bHRpcGxlVHJhY2tMaXN0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlciB7CkBAIC01MSwxMCArNTMsMTUg
QEAgcHVibGljOgogCiAgICAgdm9pZCBnZW5lcmF0ZVN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciosIGludCByZXF1ZXN0SWQsIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKICAgICB2b2lkIHN0b3BHZW5lcmF0ZWRTdHJlYW0oY29u
c3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBlbmFibGVBdWRpb1RyYWNrKGNvbnN0
IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgZGlz
YWJsZUF1ZGlvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgdm9pZCBzZWxlY3RWaWRlb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFi
ZWwsIGxvbmcgaW5kZXgpOwogCi0gICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQo
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNdWx0
aXBsZVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0
PiB2aWRlb1RyYWNrcyk7CiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1
ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNvZGUpOwogICAgIHZvaWQgc3Ry
ZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgYXVkaW9UcmFj
a0ZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICB2b2lkIHZpZGVvVHJhY2tGYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5z
aWduZWQgbG9uZyBpbmRleCk7CiAKIHByaXZhdGU6CiAgICAgaW50IHJlZ2lzdGVyUmVxdWVzdChp
bnQgbG9jYWxSZXF1ZXN0SWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCmluZGV4
IDJjODAwNmE1YWMxZGRjOTEwODU3MTA1MjY0N2VjYTMzODc0Y2M0MmEuLmFlOWVlODg2M2I2Nzdl
ZTVjNDQ1OWYxZWY3NGIzYjE0ZjkxZmM4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJF
eGNsdXNpdmVUcmFja0xpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVy
YXRlZFN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIk11bHRpcGxlVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE3Miw2ICsxNzQsMTIgQEAgdm9pZCBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6dW5yZWdpc3RlcihTdHJlYW1DbGllbnQqIGNsaWVudCkKICAg
ICBtX3N0cmVhbXMucmVtb3ZlKGNsaWVudC0+Y2xpZW50SWQoKSk7CiB9CiAKK3ZvaWQgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OnVucmVnaXN0ZXIoR2VuZXJpY0NsaWVudCogY2xpZW50KQor
eworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xpZW50LT5jbGllbnRJZCgpKSk7Cisg
ICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQtPmNsaWVudElkKCkpOworfQorCiBTdHJlYW0qIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpnZXRTdHJlYW1Gcm9tTGFiZWwoY29uc3QgU3RyaW5n
JiBsYWJlbCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRhaW5zKGxhYmVsKSk7
CkBAIC0xODgsNiArMTk2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZW50
ZXJEZXRhY2hlZFN0YXRlKCkKIAogICAgIG1fcmVxdWVzdHMuYWJvcnRBbGwoKTsKICAgICBtX3N0
cmVhbXMuZGV0YWNoRW1iZWRkZXIoKTsKKyAgICBtX2NsaWVudHMuZGV0YWNoRW1iZWRkZXIoKTsK
ICAgICBtX2lzSW5EZXRhY2hlZFN0YXRlID0gdHJ1ZTsKIH0KIApAQCAtMjE2LDYgKzIyNSw3IEBA
IHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcmFtZSgpCiAKICAg
ICBBU1NFUlQobV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwogICAgIG1fc3RyZWFtcy51bnJlZ2lzdGVy
QWxsKCk7CisgICAgbV9jbGllbnRzLnVucmVnaXN0ZXJBbGwoKTsKIAogICAgIG1fZnJhbWUgPSAw
OwogfQpAQCAtMjk3LDcgKzMwNywzNyBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpzdG9wR2VuZXJhdGVkU3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCiAgICAgICAg
IHBhZ2VDb250cm9sbGVyKCktPnN0b3BHZW5lcmF0ZWRTdHJlYW0oc3RyZWFtTGFiZWwpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQoaW50IHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OmVuYWJsZUF1ZGlvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWdu
ZWQgbG9uZyBpbmRleCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGF1ZGlvIHRy
YWNrcyBkb24ndCBuZWNlc3NhcmlseSBrZWVwIGFsaXZlIHRoZWlyIGFzc29jaWF0ZWQgZ2VuZXJh
dGVkIHN0cmVhbSBvYmplY3QuCisgICAgaWYgKCFtX3N0cmVhbXMuY29udGFpbnMoc3RyZWFtTGFi
ZWwpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaXNDbGllbnRBdmFpbGFibGUoKSkKKyAg
ICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+ZW5hYmxlQXVkaW9UcmFjayhzdHJlYW1MYWJlbCwgaW5k
ZXgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNhYmxlQXVkaW9U
cmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KQorewor
ICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgYXVkaW8gdHJhY2tzIGRvbid0IG5lY2Vzc2Fy
aWx5IGtlZXAgYWxpdmUgdGhlaXIgYXNzb2NpYXRlZCBnZW5lcmF0ZWQgc3RyZWFtIG9iamVjdC4K
KyAgICBpZiAoIW1fc3RyZWFtcy5jb250YWlucyhzdHJlYW1MYWJlbCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChpc0NsaWVudEF2YWlsYWJsZSgpKQorICAgICAgICBwYWdlQ29udHJvbGxl
cigpLT5kaXNhYmxlQXVkaW9UcmFjayhzdHJlYW1MYWJlbCwgaW5kZXgpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzZWxlY3RWaWRlb1RyYWNrKGNvbnN0IFN0cmluZyYg
c3RyZWFtTGFiZWwsIGxvbmcgaW5kZXgpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRo
ZSBhdWRpbyB0cmFja3MgZG9uJ3QgbmVjZXNzYXJpbHkga2VlcCBhbGl2ZSB0aGVpciBhc3NvY2lh
dGVkIGdlbmVyYXRlZCBzdHJlYW0gb2JqZWN0LgorICAgIGlmICghbV9zdHJlYW1zLmNvbnRhaW5z
KHN0cmVhbUxhYmVsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzQ2xpZW50QXZhaWxh
YmxlKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnNlbGVjdFZpZGVvVHJhY2soc3RyZWFt
TGFiZWwsIGluZGV4KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3Ry
ZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFBhc3NSZWZQ
dHI8TXVsdGlwbGVUcmFja0xpc3Q+IGF1ZGlvVHJhY2tzUGFyYW0sIFBhc3NSZWZQdHI8RXhjbHVz
aXZlVHJhY2tMaXN0PiB2aWRlb1RyYWNrc1BhcmFtKQogewogICAgIC8vIERvbid0IGFzc2VydCBz
aW5jZSB0aGUgcmVxdWVzdCBjYW4gaGF2ZSBiZWVuIGFib3J0ZWQgYXMgYSByZXN1bHQgb2YgZW1i
ZWRkZXIgZGV0YWNobWVudC4KICAgICBpZiAoIW1fcmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElk
KSkKQEAgLTMwNSw5ICszNDUsMjIgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
c3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbGEKIAogICAgIEFT
U0VSVChtX3JlcXVlc3RzLmdldChyZXF1ZXN0SWQpLT5pc0dlbmVyYXRlU3RyZWFtUmVxdWVzdCgp
KTsKICAgICBBU1NFUlQoIWxhYmVsLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoYXVkaW9UcmFja3NQ
YXJhbSk7CisgICAgQVNTRVJUKHZpZGVvVHJhY2tzUGFyYW0pOworCisgICAgUmVmUHRyPE11bHRp
cGxlVHJhY2tMaXN0PiBhdWRpb1RyYWNrcyA9IGF1ZGlvVHJhY2tzUGFyYW07CisgICAgUmVmUHRy
PEV4Y2x1c2l2ZVRyYWNrTGlzdD4gdmlkZW9UcmFja3MgPSB2aWRlb1RyYWNrc1BhcmFtOworCisg
ICAgaW50IGF1ZGlvVHJhY2tzQ2xpZW50SWQgPSBtX2NsaWVudHMuZ2V0TmV4dElkKCk7CisgICAg
YXVkaW9UcmFja3MtPmFzc29jaWF0ZUZyYW1lQ29udHJvbGxlcih0aGlzLCBhdWRpb1RyYWNrc0Ns
aWVudElkKTsKKyAgICBtX2NsaWVudHMuYWRkKGF1ZGlvVHJhY2tzQ2xpZW50SWQsIGF1ZGlvVHJh
Y2tzLmdldCgpKTsKKworICAgIGludCB2aWRlb1RyYWNrc0NsaWVudElkID0gbV9jbGllbnRzLmdl
dE5leHRJZCgpOworICAgIHZpZGVvVHJhY2tzLT5hc3NvY2lhdGVGcmFtZUNvbnRyb2xsZXIodGhp
cywgdmlkZW9UcmFja3NDbGllbnRJZCk7CisgICAgbV9jbGllbnRzLmFkZCh2aWRlb1RyYWNrc0Ns
aWVudElkLCB2aWRlb1RyYWNrcy5nZXQoKSk7CiAKICAgICBSZWZQdHI8R2VuZXJhdGVTdHJlYW1S
ZXF1ZXN0PiBzdHJlYW1SZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8R2VuZXJhdGVTdHJlYW1SZXF1ZXN0
Kj4obV9yZXF1ZXN0cy5nZXQocmVxdWVzdElkKS5nZXQoKSk7Ci0gICAgUmVmUHRyPEdlbmVyYXRl
ZFN0cmVhbT4gZ2VuZXJhdGVkU3RyZWFtID0gR2VuZXJhdGVkU3RyZWFtOjpjcmVhdGUodGhpcywg
bGFiZWwpOworICAgIFJlZlB0cjxHZW5lcmF0ZWRTdHJlYW0+IGdlbmVyYXRlZFN0cmVhbSA9IEdl
bmVyYXRlZFN0cmVhbTo6Y3JlYXRlKHRoaXMsIGxhYmVsLCBhdWRpb1RyYWNrcy5yZWxlYXNlKCks
IHZpZGVvVHJhY2tzLnJlbGVhc2UoKSk7CiAgICAgbV9zdHJlYW1zLmFkZChsYWJlbCwgZ2VuZXJh
dGVkU3RyZWFtLmdldCgpKTsKICAgICBtX3JlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SWQpOwogICAg
IHN0cmVhbVJlcXVlc3QtPnN1Y2Nlc3NDYWxsYmFjaygpLT5oYW5kbGVFdmVudChnZW5lcmF0ZWRT
dHJlYW0uZ2V0KCkpOwpAQCAtMzM1LDYgKzM4OCwxOSBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICBnZXRTdHJl
YW1Gcm9tTGFiZWwobGFiZWwpLT5zdHJlYW1FbmRlZCgpOwogfQogCit2b2lkIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjphdWRpb1RyYWNrRmFpbGVkKGNvbnN0IFN0cmluZyYgbGFiZWwsIHVu
c2lnbmVkIGxvbmcgaW5kZXgpCit7CisgICAgU3RyZWFtKiBzdHJlYW0gPSBnZXRTdHJlYW1Gcm9t
TGFiZWwobGFiZWwpOworICAgIEFTU0VSVChzdHJlYW0tPmlzR2VuZXJhdGVkU3RyZWFtKCkpOwor
ICAgIHN0YXRpY19jYXN0PEdlbmVyYXRlZFN0cmVhbSo+KHN0cmVhbSktPmF1ZGlvVHJhY2tzKCkt
PnRyYWNrRmFpbGVkKGluZGV4KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6dmlkZW9UcmFja0ZhaWxlZChjb25zdCBTdHJpbmcmIGxhYmVsLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KQoreworICAgIFN0cmVhbSogc3RyZWFtID0gZ2V0U3RyZWFtRnJvbUxhYmVsKGxhYmVsKTsK
KyAgICBBU1NFUlQoc3RyZWFtLT5pc0dlbmVyYXRlZFN0cmVhbSgpKTsKKyAgICBzdGF0aWNfY2Fz
dDxHZW5lcmF0ZWRTdHJlYW0qPihzdHJlYW0pLT52aWRlb1RyYWNrcygpLT50cmFja0ZhaWxlZChp
bmRleCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCmluZGV4IGNjMDMzMWZhNGQwNjJm
MmFmYjQyM2Q1ZTk1MTU4NDY1ZTFmYTc3YzAuLjRjMGI1ODYwYjMwYjYxNzI1Nzc0ODZiODNhNTcz
MjhmZDhhNWZiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmgKQEAgLTM3LDkgKzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRXhjbHVzaXZlVHJhY2tMaXN0OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBHZW5lcmF0
ZWRTdHJlYW07CiBjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI7CitjbGFzcyBNdWx0aXBsZVRy
YWNrTGlzdDsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CiBjbGFzcyBO
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s7CiBjbGFzcyBQYWdlOwpAQCAtNjcsNiAr
NjksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVkU3RyZWFt
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzR2VuZXJp
Y0NsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIGZyYW1lIGNvbnRyb2xsZXIgaXMgYmVpbmcgZGlzY29ubmVjdGVkIHRvIHRoZSBNZWRp
YVN0cmVhbUNsaWVudCBlbWJlZGRlci4KICAgICAgICAgLy8gQ2xpZW50cyBzaG91bGQgb3ZlcnJp
ZGUgdGhpcyB0byBzZW5kIGFueSByZXF1aXJlZCBzaHV0ZG93biBtZXNzYWdlcy4KQEAgLTEyMiw2
ICsxMjUsMTkgQEAgcHVibGljOgogICAgICAgICBib29sIG1faXNHZW5lcmF0ZWRTdHJlYW07CiAg
ICAgfTsKIAorICAgIC8vIEdlbmVyaWMgY2xpZW50cyBhcmUgb2JqZWN0cyB0aGF0IHJlcXVpcmUg
YWNjZXNzIHRvIHRoZSBmcmFtZSBjb250cm9sbGVyIGJ1dCBkb24ndCBoYXZlIGEgZ2xvYmFsIGlk
IChsaWtlIHN0cmVhbXMgZG8pCisgICAgLy8gb3IgbmVlZCB0byByZWNlaXZlIGFueSBtZXNzYWdl
cyBmcm9tIHRoZSBlbWJlZGRlciBjbGllbnQuCisgICAgY2xhc3MgR2VuZXJpY0NsaWVudCA6IHB1
YmxpYyBDbGllbnRCYXNlPGludD4geworICAgIHB1YmxpYzoKKyAgICAgICAgR2VuZXJpY0NsaWVu
dCgpIHsgfQorICAgICAgICBHZW5lcmljQ2xpZW50KE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCkgOiBDbGllbnRCYXNlPGludD4oZnJhbWVDb250cm9s
bGVyLCBpZCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkdlbmVyaWNDbGllbnQoKSB7IHVucmVnaXN0
ZXIoKTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmljQ2xpZW50KCkgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXIo
KSB7IHVucmVnaXN0ZXJDbGllbnQodGhpcyk7IH0KKyAgICB9OworCiAgICAgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIoRnJhbWUqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcigpOwogCkBAIC0xNDIsMTAgKzE1OCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RvcCBh
IGdlbmVyYXRlZCBzdHJlYW0uCiAgICAgdm9pZCBzdG9wR2VuZXJhdGVkU3RyZWFtKGNvbnN0IFN0
cmluZyYgc3RyZWFtTGFiZWwpOwogCisgICAgLy8gRW5hYmxlL2Rpc2FibGUgYW4gYXVkaW8gdHJh
Y2sgaW4gYSBnZW5lcmF0ZWQgc3RyZWFtLgorICAgIHZvaWQgZW5hYmxlQXVkaW9UcmFjayhjb25z
dCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIGRp
c2FibGVBdWRpb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworCisgICAgLy8gU2VsZWN0IGEgdmlkZW8gdHJhY2sgaW4gYSBnZW5lcmF0ZWQgc3Ry
ZWFtLgorICAgIHZvaWQgc2VsZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
LCBsb25nIGluZGV4KTsKKwogICAgIC8vIC0tLSBDYWxscyBjb21pbmcgYmFjayBmcm9tIHRoZSBj
b250cm9sbGVyLiAtLS0gLy8KIAogICAgIC8vIFJlcG9ydCB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5l
dyBsb2NhbCBzdHJlYW0uCi0gICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQoaW50
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNdWx0aXBs
ZVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0PiB2
aWRlb1RyYWNrcyk7CiAKICAgICAvLyBSZXBvcnQgYSBmYWlsdXJlIGluIHRoZSBnZW5lcmF0aW9u
IG9mIGEgbmV3IHN0cmVhbS4KICAgICB2b2lkIHN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJl
cXVlc3RJZCwgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSk7CkBAIC0xNTMsNiAr
MTc2LDEwIEBAIHB1YmxpYzoKICAgICAvLyBSZXBvcnQgdGhlIGVuZCBvZiBhIHN0cmVhbSBmb3Ig
ZXh0ZXJuYWwgcmVhc29ucy4KICAgICB2b2lkIHN0cmVhbUZhaWxlZChjb25zdCBTdHJpbmcmIHN0
cmVhbUxhYmVsKTsKIAorICAgIC8vIFJlcG9ydCB0aGUgdW5leHBlY3RlZCB1bmF2YWlsYWJpbGl0
eSBvZiBhIGxpdmUgbWVkaWEgdHJhY2suCisgICAgdm9pZCBhdWRpb1RyYWNrRmFpbGVkKGNvbnN0
IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgdmlk
ZW9UcmFja0ZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBSZXF1ZXN0OwogICAgIGNsYXNzIEdlbmVyYXRl
U3RyZWFtUmVxdWVzdDsKQEAgLTE4NywxNCArMjE0LDE5IEBAIHByaXZhdGU6CiAgICAgLy8gU3Ry
ZWFtcyBhcmUgYSBzcGVjaWFsIGNsYXNzIG9mIGNsaWVudHMgc2luY2UgdGhleSBhcmUgaWRlbnRp
ZmllZCBieSBhIGdsb2JhbCBsYWJlbCBzdHJpbmcgaW5zdGVhZCBvZiBhbiBpZC4KICAgICB0eXBl
ZGVmIENsaWVudE1hcEJhc2U8U3RyaW5nPiBTdHJlYW1NYXA7CiAKKyAgICAvLyBBbGwgb3RoZXIg
dHlwZXMgb2YgY2xpZW50cyB1c2UgYXV0b2dlbmVyYXRlZCBpbnRlZ2VyIGlkcy4KKyAgICBjbGFz
cyBDbGllbnRNYXAgOiBwdWJsaWMgSWRHZW5lcmF0b3IsIHB1YmxpYyBDbGllbnRNYXBCYXNlPGlu
dD4geyB9OworCiAgICAgLy8gRGV0YWNoZWQgZnJvbSBhIHBhZ2UsIGFuZCBoZW5jZSBmcm9tIGEg
ZW1iZWRkZXIgY2xpZW50LgogICAgIHZvaWQgZW50ZXJEZXRhY2hlZFN0YXRlKCk7CiAKICAgICB2
b2lkIHVucmVnaXN0ZXIoU3RyZWFtQ2xpZW50Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVyKEdlbmVy
aWNDbGllbnQqKTsKICAgICBNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIHBhZ2VDb250cm9sbGVyKCkg
Y29uc3Q7CiAgICAgU3RyZWFtKiBnZXRTdHJlYW1Gcm9tTGFiZWwoY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAKICAgICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHM7CisgICAgQ2xpZW50TWFwIG1fY2xpZW50
czsKICAgICBTdHJlYW1NYXAgbV9zdHJlYW1zOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96405</attachid>
            <date>2011-06-08 04:45:15 -0700</date>
            <delta_ts>2011-06-08 06:08:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60205-20110608134513.patch</filename>
            <type>text/plain</type>
            <size>29111</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgzMzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOGI3NGI1YjMyNWQxZTlm
MzY5YjZkNmQ1YTFkZmYxNDk5MjFjODIyLi5jZTJmNTlhNzBlZGI2NWYyY2RmYjliY2RhZTRlMTFm
ZDI3MzA1NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDUtMzEgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVkaWEgU3RyZWFtIEFQSTogaW50ZWdyYXRlIHRo
ZSBUcmFjayBMaXN0IG9iamVjdHMgaW50byB0aGUgZXhpc3RpbmcgY29kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMjA1CisKKyAgICAgICAgVGVz
dHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIHdpbGwgYmUgcHJvdmlkZWQgYnkgdGhlIGJ1ZyA1
NjU4Ny4KKworICAgICAgICAqIGRvbS9FeGNsdXNpdmVUcmFja0xpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXhjbHVzaXZlVHJhY2tMaXN0OjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RXhjbHVzaXZlVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCk6CisgICAgICAgICogZG9tL0V4Y2x1c2l2
ZVRyYWNrTGlzdC5oOgorICAgICAgICAqIGRvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VuZXJhdGVkU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJhdGVkU3RyZWFtOjpHZW5lcmF0ZWRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJhdGVkU3RyZWFtOjpzdHJlYW1FbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0ZWRT
dHJlYW06OmF1ZGlvVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyYXRlZFN0cmVhbTo6
dmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJhdGVkU3RyZWFtOjpzdG9wKToK
KyAgICAgICAgKiBkb20vR2VuZXJhdGVkU3RyZWFtLmg6CisgICAgICAgICogZG9tL0dlbmVyYXRl
ZFN0cmVhbS5pZGw6CisgICAgICAgICogZG9tL011bHRpcGxlVHJhY2tMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11bHRpcGxlVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNdWx0aXBsZVRyYWNrTGlzdDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
bHRpcGxlVHJhY2tMaXN0OjpkaXNhYmxlKToKKyAgICAgICAgKiBkb20vTXVsdGlwbGVUcmFja0xp
c3QuaDoKKyAgICAgICAgKiBkb20vU3RyZWFtLmg6CisgICAgICAgICogZG9tL1RyYWNrTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrTGlzdDo6YXNzb2NpYXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdDo6YXNzb2NpYXRlZFN0cmVhbUxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dDo6dHJhY2tGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKiBkb20vVHJhY2tMaXN0Lmg6CisgICAgICAgICogcGFn
ZS9NZWRpYVN0cmVhbUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZW5hYmxl
QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmRp
c2FibGVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6c2VsZWN0VmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6OnN0cmVhbUdlbmVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6OmF1ZGlvVHJhY2tGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Db250cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnVu
cmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OmVudGVyRGV0YWNoZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjplbmFibGVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNhYmxlQXVkaW9UcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c2VsZWN0VmlkZW9UcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RyZWFtR2Vu
ZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjph
dWRpb1RyYWNrRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6Q2xpZW50QmFzZTo6aXNHZW5lcmljQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmljQ2xpZW50OjpHZW5lcmljQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmljQ2xp
ZW50Ojp+R2VuZXJpY0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6R2VuZXJpY0NsaWVudDo6aXNHZW5lcmljQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmljQ2xpZW50Ojp1bnJlZ2lz
dGVyKToKKwogMjAxMS0wNi0wOCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNsdXNpdmVUcmFja0xpc3QuY3BwCmluZGV4IGYyOTIxMjcxZjEzZjlmMTgzNGM0N2Fh
ODM1OWUxM2U2NzBlYzZiMTQuLmY5NmQyMjgxZjk5OTA4YzUxZWYwOGY5M2Q0Y2M1ODJkYjIxZDM1
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNsdXNpdmVUcmFja0xpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNsdXNpdmVUcmFja0xpc3QuY3BwCkBAIC02MCw5
ICs2MCwyNSBAQCB2b2lkIEV4Y2x1c2l2ZVRyYWNrTGlzdDo6c2VsZWN0KGxvbmcgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NlbGVjdGVkSW5kZXgg
PSBpbmRleDsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkt
PnNlbGVjdFZpZGVvVHJhY2soYXNzb2NpYXRlZFN0cmVhbUxhYmVsKCksIGluZGV4KTsKKyNlbmRp
ZgorCiAgICAgcG9zdENoYW5nZUV2ZW50KCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQordm9pZCBFeGNsdXNpdmVUcmFja0xpc3Q6OnRyYWNrRmFpbGVkKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpCit7CisgICAgaWYgKG1fc2VsZWN0ZWRJbmRleCA9PSBzdGF0aWNfY2FzdDxsb25nPihpbmRl
eCkpCisgICAgICAgIG1fc2VsZWN0ZWRJbmRleCA9IE5vU2VsZWN0aW9uOworCisgICAgVHJhY2tM
aXN0Ojp0cmFja0ZhaWxlZChpbmRleCk7Cit9CisjZW5kaWYKKwogRXhjbHVzaXZlVHJhY2tMaXN0
KiBFeGNsdXNpdmVUcmFja0xpc3Q6OnRvRXhjbHVzaXZlVHJhY2tMaXN0KCkKIHsKICAgICByZXR1
cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNsdXNpdmVUcmFja0xp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNsdXNpdmVUcmFja0xpc3QuaAppbmRleCA1NGQz
MGM2YWQ0ZTc5ZWRmNTk1OTYyOWZmYzFiY2EzZDJmMWM2MzA4Li45YzM3ZDFlNmNjNmM3MTEzM2U4
ZTllYTMyZWJlYzhmNDZhNWYzYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhj
bHVzaXZlVHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2x1c2l2ZVRyYWNr
TGlzdC5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdmlydHVhbCB2b2lkIHRyYWNr
RmFpbGVkKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworI2VuZGlmCisKICAgICAvLyBFdmVudFRhcmdl
dCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIEV4Y2x1c2l2ZVRyYWNrTGlzdCogdG9FeGNs
dXNpdmVUcmFja0xpc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVy
YXRlZFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmNwcApp
bmRleCA3YjdlNjdhMjZlZTNmMjE1YzM4MTAyNmNiMjRjZmUwMWNiNmY1ZDg0Li42MzRiMDZmYTg4
YjY3M2YxN2M0MWJhYmFhOWVlMGNlODhlZDI1OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vR2VuZXJhdGVkU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJh
dGVkU3RyZWFtLmNwcApAQCAtMjksNyArMjksOSBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRXhjbHVzaXZlVHJhY2tMaXN0LmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJNdWx0aXBs
ZVRyYWNrTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsMTQgKzU5LDIwIEBAIHB1YmxpYzoKICAgICBDYWxsYmFj
ayBtX2NhbGxiYWNrOwogfTsKIAotUGFzc1JlZlB0cjxHZW5lcmF0ZWRTdHJlYW0+IEdlbmVyYXRl
ZFN0cmVhbTo6Y3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xs
ZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitQYXNzUmVmUHRyPEdlbmVyYXRlZFN0cmVhbT4gR2Vu
ZXJhdGVkU3RyZWFtOjpjcmVhdGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29u
dHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUGFzc1JlZlB0cjxNdWx0aXBsZVRyYWNrTGlz
dD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0PiB2aWRlb1RyYWNr
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyYXRlZFN0cmVhbShmcmFtZUNvbnRy
b2xsZXIsIGxhYmVsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmF0ZWRTdHJlYW0o
ZnJhbWVDb250cm9sbGVyLCBsYWJlbCwgYXVkaW9UcmFja3MsIHZpZGVvVHJhY2tzKSk7CiB9CiAK
LUdlbmVyYXRlZFN0cmVhbTo6R2VuZXJhdGVkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitHZW5lcmF0ZWRTdHJl
YW06OkdlbmVyYXRlZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBQYXNzUmVmUHRyPE11bHRpcGxlVHJhY2tMaXN0
PiBhdWRpb1RyYWNrcywgUGFzc1JlZlB0cjxFeGNsdXNpdmVUcmFja0xpc3Q+IHZpZGVvVHJhY2tz
KQogICAgIDogU3RyZWFtKGZyYW1lQ29udHJvbGxlciwgbGFiZWwsIHRydWUpCisgICAgLCBtX2F1
ZGlvVHJhY2tzKGF1ZGlvVHJhY2tzKQorICAgICwgbV92aWRlb1RyYWNrcyh2aWRlb1RyYWNrcykK
IHsKKyAgICBBU1NFUlQobV9hdWRpb1RyYWNrcyk7CisgICAgQVNTRVJUKG1fdmlkZW9UcmFja3Mp
OworICAgIG1fYXVkaW9UcmFja3MtPmFzc29jaWF0ZVN0cmVhbShsYWJlbCk7CisgICAgbV92aWRl
b1RyYWNrcy0+YXNzb2NpYXRlU3RyZWFtKGxhYmVsKTsKIH0KIAogR2VuZXJhdGVkU3RyZWFtOjp+
R2VuZXJhdGVkU3RyZWFtKCkKQEAgLTg0LDEyICs5MiwzMiBAQCB2b2lkIEdlbmVyYXRlZFN0cmVh
bTo6ZGV0YWNoRW1iZWRkZXIoKQogICAgIFN0cmVhbTo6ZGV0YWNoRW1iZWRkZXIoKTsKIH0KIAor
dm9pZCBHZW5lcmF0ZWRTdHJlYW06OnN0cmVhbUVuZGVkKCkKK3sKKyAgICBtX2F1ZGlvVHJhY2tz
LT5jbGVhcigpOworICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyKCk7CisKKyAgICBTdHJlYW06OnN0
cmVhbUVuZGVkKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXVsdGlwbGVUcmFja0xpc3Q+IEdlbmVyYXRl
ZFN0cmVhbTo6YXVkaW9UcmFja3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1ZGlvVHJhY2tz
OworfQorCitQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlzdD4gR2VuZXJhdGVkU3RyZWFtOjp2
aWRlb1RyYWNrcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlkZW9UcmFja3M7Cit9CisKIHZv
aWQgR2VuZXJhdGVkU3RyZWFtOjpzdG9wKCkKIHsKICAgICBpZiAoIW1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkgfHwgbV9yZWFkeVN0YXRlID09IEVOREVEKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5zdG9wR2VuZXJhdGVkU3RyZWFtKGxh
YmVsKCkpOworICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyKCk7CisgICAgbV92aWRlb1RyYWNrcy0+
Y2xlYXIoKTsKIAogICAgIG1fcmVhZHlTdGF0ZSA9IEVOREVEOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2Vu
ZXJhdGVkU3RyZWFtLmgKaW5kZXggNDRiMjVlMGM4NzQ2MTA2YjExYTNlYWJhNjNjYjg1YTNjNjVi
ZjVlNi4uMmI3MGFkZjllM2IxNzEyOWEyZTI2NTk4YTdkYTgyNmE1NzI2NWExYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uaApAQCAtMzIsMjYgKzMyLDM1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRXhjbHVzaXZlVHJhY2tMaXN0OworY2xhc3MgTXVsdGlwbGVU
cmFja0xpc3Q7CisKIGNsYXNzIEdlbmVyYXRlZFN0cmVhbSA6IHB1YmxpYyBTdHJlYW0gewogcHVi
bGljOgotICAgIC8vIEZJWE1FOiBhZGQgYXVkaW8gYW5kIHZpZGVvIHRyYWNrcyB3aGVuIGF2YWls
YWJsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmF0ZWRTdHJlYW0+IGNyZWF0ZShNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdlbmVyYXRlZFN0cmVhbT4gY3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUGFzc1JlZlB0cjxNdWx0aXBsZVRyYWNrTGlz
dD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0PiB2aWRlb1RyYWNr
cyk7CiAgICAgdmlydHVhbCB+R2VuZXJhdGVkU3RyZWFtKCk7CiAKICAgICB2b2lkIHN0b3AoKTsK
IAorICAgIFBhc3NSZWZQdHI8TXVsdGlwbGVUcmFja0xpc3Q+IGF1ZGlvVHJhY2tzKCkgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxFeGNsdXNpdmVUcmFja0xpc3Q+IHZpZGVvVHJhY2tzKCkgY29uc3Q7
CisKICAgICAvLyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6U3RyZWFtQ2xpZW50IGltcGxl
bWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hFbWJlZGRlcigpOworICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1FbmRlZCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgdmlydHVh
bCBHZW5lcmF0ZWRTdHJlYW0qIHRvR2VuZXJhdGVkU3RyZWFtKCk7CiAKIHByaXZhdGU6Ci0gICAg
R2VuZXJhdGVkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgY29uc3QgU3RyaW5n
JiBsYWJlbCk7CisgICAgR2VuZXJhdGVkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUGFzc1JlZlB0cjxNdWx0aXBsZVRyYWNrTGlzdD4gYXVk
aW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tMaXN0PiB2aWRlb1RyYWNrcyk7CiAg
ICAgY2xhc3MgRGlzcGF0Y2hVcGRhdGVUYXNrOwogICAgIGZyaWVuZCBjbGFzcyBEaXNwYXRjaFVw
ZGF0ZVRhc2s7CiAKICAgICB2b2lkIG9uU3RvcCgpOworCisgICAgUmVmUHRyPE11bHRpcGxlVHJh
Y2tMaXN0PiBtX2F1ZGlvVHJhY2tzOworICAgIFJlZlB0cjxFeGNsdXNpdmVUcmFja0xpc3Q+IG1f
dmlkZW9UcmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9HZW5lcmF0ZWRTdHJlYW0uaWRsCmluZGV4IGEzOGQ2YzBmNjVmNGRkNTFlMmMwNjdjYTFiMGNl
MGUxOWZjMmZmM2MuLmZmMWJkMzZhZGQyODMxMTFhY2MwOWZmYzg5NThmMjljMjY4MjUwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uaWRsCkBAIC0zMCw3ICszMCw5IEBAIG1v
ZHVsZSBjb3JlIHsKICAgICBdIEdlbmVyYXRlZFN0cmVhbSA6IFN0cmVhbSB7CiAgICAgICAgIHZv
aWQgc3RvcCgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYXVkaW8gYW5kIHZpZGVv
IHRyYWNrcyB3aGVuIGF2YWlsYWJsZS4KKyAgICAgICAgLy8gVHJhY2sgY29udHJvbC4KKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIE11bHRpcGxlVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRXhjbHVzaXZlVHJhY2tMaXN0IHZpZGVvVHJhY2tzOwog
ICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdWx0aXBsZVRyYWNr
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXVsdGlwbGVUcmFja0xpc3QuY3BwCmluZGV4
IGI3OTI3YmQ2MmI3NTZhYTViODUzMTlkZWQ4OWY3MzNjMTY4YzBhODMuLmU4ZTM3MTk3MDVlNmQz
OGE3ODFkOWUzYTVmOWFjODBhODQ0NzQ0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdWx0aXBsZVRyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011bHRpcGxl
VHJhY2tMaXN0LmNwcApAQCAtNTQsNiArNTQsMTQgQEAgdm9pZCBNdWx0aXBsZVRyYWNrTGlzdDo6
Y2xlYXIoKQogICAgIFRyYWNrTGlzdDo6Y2xlYXIoKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCit2b2lkIE11bHRpcGxlVHJhY2tMaXN0Ojp0cmFja0ZhaWxlZCh1bnNpZ25lZCBsb25n
IGluZGV4KQoreworICAgIFRyYWNrTGlzdDo6dHJhY2tGYWlsZWQoaW5kZXgpOworICAgIG1faXNF
bmFibGVkLnJlbW92ZShpbmRleCk7Cit9CisjZW5kaWYKKwogYm9vbCBNdWx0aXBsZVRyYWNrTGlz
dDo6aXNFbmFibGVkKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogewogICAgIHJldHVybiBjaGVja0luZGV4KGluZGV4LCBlYykgPyBtX2lzRW5hYmxlZFtpbmRl
eF0gOiBmYWxzZTsKQEAgLTY1LDYgKzczLDEyIEBAIHZvaWQgTXVsdGlwbGVUcmFja0xpc3Q6OmVu
YWJsZSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9pc0VuYWJsZWRbaW5kZXhdID0gdHJ1ZTsKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAg
IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmVuYWJsZUF1ZGlvVHJhY2soYXNzb2NpYXRl
ZFN0cmVhbUxhYmVsKCksIGluZGV4KTsKKyNlbmRpZgorCiAgICAgcG9zdENoYW5nZUV2ZW50KCk7
CiB9CiAKQEAgLTc0LDYgKzg4LDEyIEBAIHZvaWQgTXVsdGlwbGVUcmFja0xpc3Q6OmRpc2FibGUo
dW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1faXNFbmFibGVkW2luZGV4XSA9IGZhbHNlOworCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgbWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+ZGlzYWJsZUF1ZGlvVHJhY2soYXNzb2NpYXRlZFN0
cmVhbUxhYmVsKCksIGluZGV4KTsKKyNlbmRpZgorCiAgICAgcG9zdENoYW5nZUV2ZW50KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdWx0aXBsZVRyYWNrTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL011bHRpcGxlVHJhY2tMaXN0LmgKaW5kZXggN2E2ZDcyYWZlY2Rl
Y2JiN2I1ZTllMDc1Yzc2NDVlNTE1MTYwYjAyNy4uMmRiMDI5YjEyZjU3NGEwOGM2MjBjOGJkODFj
MDI1N2E0MjIzMGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011bHRpcGxlVHJh
Y2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011bHRpcGxlVHJhY2tMaXN0LmgKQEAg
LTQ1LDYgKzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpOwogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tGYWlsZWQodW5z
aWduZWQgbG9uZyBpbmRleCk7CisjZW5kaWYKKwogICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVu
dGF0aW9uLgogICAgIHZpcnR1YWwgTXVsdGlwbGVUcmFja0xpc3QqIHRvTXVsdGlwbGVUcmFja0xp
c3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0cmVhbS5oCmluZGV4IDU5ODQ2ZTczNmQ2MzkzMWQ3MWY3Mjc1NjdjOTk3
MjgxYmQ1ODllNmYuLmI3NWFhNjJlMmYwOGRmNjVlYTVkNTQxMjljZTY3M2RkNjI1ZTlhMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3RyZWFtLmgKQEAgLTUyLDcgKzUyLDYgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGUgcmVjb3JkIG1ldGhvZCB3aGVuIFN0cmVhbVJlY29yZGVyIGlzIGF2YWls
YWJsZS4KIAotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVhZHlzdGF0ZWNo
YW5nZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CiAKICAg
ICB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmFja0xpc3QuY3BwCmluZGV4IDdhMTYyNzhlMGJiYTlhMzI3MDZhNGZi
YjU3OGYwNzY3ZjFjOTQ1ZDQuLjliOGQxYzQwYzVhZjEzNzk3OTI0NWEwMmI2Y2JmNjdjNTMxOGIy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFja0xpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFja0xpc3QuY3BwCkBAIC0xMDMsNyArMTAzLDE1IEBAIGNvbnN0
IFN0cmluZyYgVHJhY2tMaXN0OjpnZXRMYW5ndWFnZSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNl
cHRpb25Db2RlJiBlYykgY29uCiAKIHZvaWQgVHJhY2tMaXN0OjpjbGVhcigpCiB7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX2Fzc29jaWF0ZWRTdHJlYW1MYWJlbCA9IFN0cmluZygp
OworI2VuZGlmCisKKyAgICBpZiAobV90cmFja3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKICAgICBtX3RyYWNrcy5jbGVhcigpOworCiAgICAgcG9zdENoYW5nZUV2ZW50KCk7CiB9CiAK
QEAgLTEyMyw2ICsxMzEsMjYgQEAgdm9pZCBUcmFja0xpc3Q6OmRpc3BhdGNoQ2hhbmdlRXZlbnQo
aW50KQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2hhbmdl
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3Zv
aWQgVHJhY2tMaXN0Ojphc3NvY2lhdGVTdHJlYW0oY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAg
ICBBU1NFUlQobV9hc3NvY2lhdGVkU3RyZWFtTGFiZWwuaXNOdWxsKCkpOworICAgIG1fYXNzb2Np
YXRlZFN0cmVhbUxhYmVsID0gbGFiZWw7Cit9CisKK2NvbnN0IFN0cmluZyYgVHJhY2tMaXN0Ojph
c3NvY2lhdGVkU3RyZWFtTGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2Fzc29jaWF0ZWRT
dHJlYW1MYWJlbDsKK30KKwordm9pZCBUcmFja0xpc3Q6OnRyYWNrRmFpbGVkKHVuc2lnbmVkIGxv
bmcgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOworICAgIG1fdHJhY2tz
LnJlbW92ZShpbmRleCk7CisgICAgcG9zdENoYW5nZUV2ZW50KCk7Cit9CisjZW5kaWYKKwogVHJh
Y2tMaXN0KiBUcmFja0xpc3Q6OnRvVHJhY2tMaXN0KCkKIHsKICAgICByZXR1cm4gdGhpczsKQEAg
LTEzMCw5ICsxNTgsMTMgQEAgVHJhY2tMaXN0KiBUcmFja0xpc3Q6OnRvVHJhY2tMaXN0KCkKIAog
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogcHJvdmlkZSBhbiBzY3JpcHQgZXhlY3V0aW9uIGNv
bnRleHQgZm9yIEhUTUwgTWVkaWEgRWxlbWVudCBhbmQgTWVkaWFTdHJlYW0gQVBJIHVzZSBjYXNl
cy4KLSAgICAvLyBGb3IgdGhlIE1lZGlhU3RyZWFtIEFQSTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwMjA1Ci0gICAgLy8gRm9yIHRoZSBIVE1MIE1lZGlhIEVsZW1l
bnQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEyNworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkp
CisgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBwcm92aWRlIGFuIHNjcmlw
dCBleGVjdXRpb24gY29udGV4dCBmb3IgSFRNTCBNZWRpYSBFbGVtZW50IHVzZSBjYXNlLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEyNwogICAgIHJl
dHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmgKaW5kZXggZWViOGYzZDI3NTI3Y2ZhNWI3
YmQxOTQ0ZGQ2MGI1NDA4NGFlM2FmOC4uOGY2Nzk5YmFiNWU0OWQwMGY4OWYxM2Y3NDBiYjcyY2Jj
MWMyMDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYWNrTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFja0xpc3QuaApAQCAtNTgsNiArNTgsOSBAQCBwcml2YXRl
OgogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYWNrPiA+IFRyYWNrVmVjdG9yOwogCiBjbGFzcyBU
cmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0xpc3Q+LAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgICAgICAgICAgICAgICBwdWJsaWMgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OkdlbmVyaWNDbGllbnQsCisjZW5kaWYKICAgICAgICAgICAgICAgICAgIHB1YmxpYyBF
dmVudFRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhY2tMaXN0PiBj
cmVhdGUoY29uc3QgVHJhY2tWZWN0b3ImKTsKQEAgLTczLDYgKzc2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICB2b2lkIGFzc29jaWF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICBj
b25zdCBTdHJpbmcmIGFzc29jaWF0ZWRTdHJlYW1MYWJlbCgpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCB0cmFja0ZhaWxlZCh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyNlbmRpZgorCiAgICAgLy8g
RXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBUcmFja0xpc3QqIHRvVHJh
Y2tMaXN0KCk7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7CkBAIC0xMjQsNiArMTMzLDEwIEBAIHByaXZhdGU6CiAKICAg
ICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgVHJhY2tWZWN0b3IgbV90
cmFja3M7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFN0cmluZyBtX2Fzc29jaWF0
ZWRTdHJlYW1MYWJlbDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCmluZGV4IDFkMGViYjBiYTJlMDU2Yzlj
N2IzNTBkOWVhYjUyMGNkYmNhODVkMmUuLmIzZWY3NDA0NTQ0ODFlZTRlYTAyOTFiYjRiNTUyNTNm
ZWZlMzg4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKQEAgLTUy
LDYgKzUyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBTdG9wIGEgZ2VuZXJhdGVkIHN0cmVhbS4KICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcEdlbmVyYXRlZFN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxh
YmVsKSA9IDA7CiAKKyAgICAvLyBFbmFibGUvZGlzYWJsZSBhbiBhdWRpbyB0cmFjayBpbiBhIGdl
bmVyYXRlZCBzdHJlYW0uCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUF1ZGlvVHJhY2soY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlQXVkaW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNp
Z25lZCBsb25nIGluZGV4KSA9IDA7CisKKyAgICAvLyBTZWxlY3QgYSB2aWRlbyB0cmFjayBpbiBh
IGdlbmVyYXRlZCBzdHJlYW0uCisgICAgdmlydHVhbCB2b2lkIHNlbGVjdFZpZGVvVHJhY2soY29u
c3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgbG9uZyBpbmRleCkgPSAwOworCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+TWVkaWFTdHJlYW1DbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKaW5kZXggOGMxMmRjYWNhZDMzNjNkYTEw
NmNkMTZhOGMwMzgzODNkZmJmOTNlNi4uMDQzMjJlODNkNGQwMjMyMDdjOGRkMzY5ZTNiNzVlMDhi
NTE1Yzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVy
LmNwcApAQCAtMjcsNyArMjcsOSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lu
Y2x1ZGUgIkV4Y2x1c2l2ZVRyYWNrTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiTXVsdGlwbGVUcmFja0xpc3QuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE3LDcgKzEx
OSwyMiBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RvcEdlbmVyYXRlZFN0cmVhbShj
b25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQogICAgIG1fY2xpZW50LT5zdG9wR2VuZXJhdGVkU3Ry
ZWFtKHN0cmVhbUxhYmVsKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVh
bUdlbmVyYXRlZChpbnQgY29udHJvbGxlclJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCkKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjplbmFibGVBdWRpb1RyYWNrKGNvbnN0
IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgICAgbV9jbGll
bnQtPmVuYWJsZUF1ZGlvVHJhY2soc3RyZWFtTGFiZWwsIGluZGV4KTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6OmRpc2FibGVBdWRpb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFt
TGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgICAgbV9jbGllbnQtPmRpc2FibGVBdWRp
b1RyYWNrKHN0cmVhbUxhYmVsLCBpbmRleCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9s
bGVyOjpzZWxlY3RWaWRlb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIGxvbmcgaW5k
ZXgpCit7CisgICAgbV9jbGllbnQtPnNlbGVjdFZpZGVvVHJhY2soc3RyZWFtTGFiZWwsIGluZGV4
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRlZChpbnQg
Y29udHJvbGxlclJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0
cjxNdWx0aXBsZVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJh
Y2tMaXN0PiB2aWRlb1RyYWNrcykKIHsKICAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZy
YW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQgd2hpbGUgdGhlIHJlcXVlc3Qg
cmVwbHkgd2FzIGNvbWluZyBiYWNrLgogICAgIGlmIChtX3JlcXVlc3RzLmNvbnRhaW5zKGNvbnRy
b2xsZXJSZXF1ZXN0SWQpKSB7CkBAIC0xMjUsNyArMTQyLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRlZChpbnQgY29udHJvbGxlclJlcXVlc3RJZCwgY29uc3Qg
U3RyaW4KICAgICAgICAgcmVnaXN0ZXJTdHJlYW0oc3RyZWFtTGFiZWwsIHJlcXVlc3QuZnJhbWVD
b250cm9sbGVyKCkpOwogICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjb250cm9sbGVyUmVxdWVz
dElkKTsKICAgICAgICAgQVNTRVJUKHJlcXVlc3QuZnJhbWVDb250cm9sbGVyKCkpOwotICAgICAg
ICByZXF1ZXN0LmZyYW1lQ29udHJvbGxlcigpLT5zdHJlYW1HZW5lcmF0ZWQocmVxdWVzdC5sb2Nh
bElkKCksIHN0cmVhbUxhYmVsKTsKKyAgICAgICAgcmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIoKS0+
c3RyZWFtR2VuZXJhdGVkKHJlcXVlc3QubG9jYWxJZCgpLCBzdHJlYW1MYWJlbCwgYXVkaW9UcmFj
a3MsIHZpZGVvVHJhY2tzKTsKICAgICB9CiB9CiAKQEAgLTE0Niw2ICsxNjMsMjAgQEAgdm9pZCBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxh
YmVsKQogICAgICAgICBtX3N0cmVhbXMuZ2V0KHN0cmVhbUxhYmVsKS0+c3RyZWFtRmFpbGVkKHN0
cmVhbUxhYmVsKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmF1ZGlvVHJhY2tG
YWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkKK3sK
KyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUg
YmVlbiBkZXN0cm95ZWQgYnkgdGhlIHRpbWUgdGhpcyBpcyBjYWxsZWQuCisgICAgaWYgKG1fc3Ry
ZWFtcy5jb250YWlucyhzdHJlYW1MYWJlbCkpCisgICAgICAgIG1fc3RyZWFtcy5nZXQoc3RyZWFt
TGFiZWwpLT5hdWRpb1RyYWNrRmFpbGVkKHN0cmVhbUxhYmVsLCBpbmRleCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKGNvbnN0IFN0cmluZyYgc3Ry
ZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNp
bmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkIGJ5IHRoZSB0
aW1lIHRoaXMgaXMgY2FsbGVkLgorICAgIGlmIChtX3N0cmVhbXMuY29udGFpbnMoc3RyZWFtTGFi
ZWwpKQorICAgICAgICBtX3N0cmVhbXMuZ2V0KHN0cmVhbUxhYmVsKS0+dmlkZW9UcmFja0ZhaWxl
ZChzdHJlYW1MYWJlbCwgaW5kZXgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1Db250cm9sbGVyLmgKaW5kZXggNzIyMTkyYjMyMWJhZTNmOGE1NGJhNTBmZWU4YzgwNmVk
NTEzYWFlMS4uYjJkNTZjMjRlYTEwMzI0NzFiOTY4YjFiZDBkZTY1Yzc0NTIxNjBhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC0zNiw4ICszNiwx
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV4Y2x1c2l2ZVRyYWNrTGlzdDsK
IGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50OwogY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI7CitjbGFzcyBNdWx0aXBsZVRyYWNrTGlzdDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBj
bGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXIgewpAQCAtNTEsMTAgKzUzLDE1IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2VuZXJhdGVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBp
bnQgcmVxdWVzdElkLCBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPik7CiAgICAgdm9pZCBzdG9wR2VuZXJhdGVkU3RyZWFtKGNvbnN0IFN0cmluZyYg
c3RyZWFtTGFiZWwpOworICAgIHZvaWQgZW5hYmxlQXVkaW9UcmFjayhjb25zdCBTdHJpbmcmIHN0
cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIGRpc2FibGVBdWRpb1Ry
YWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IHZvaWQgc2VsZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBsb25nIGlu
ZGV4KTsKIAotICAgIHZvaWQgc3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgc3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIFBhc3NSZWZQdHI8TXVsdGlwbGVUcmFja0xp
c3Q+IGF1ZGlvVHJhY2tzLCBQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlzdD4gdmlkZW9UcmFj
a3MpOwogICAgIHZvaWQgc3RyZWFtR2VuZXJhdGlvbkZhaWxlZChpbnQgcmVxdWVzdElkLCBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvcjo6RXJyb3JDb2RlKTsKICAgICB2b2lkIHN0cmVhbUZhaWxlZChj
b25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIGF1ZGlvVHJhY2tGYWlsZWQoY29u
c3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCB2
aWRlb1RyYWNrRmFpbGVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwogCiBwcml2YXRlOgogICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsUmVx
dWVzdElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAppbmRleCAyYzgwMDZhNWFj
MWRkYzkxMDg1NzEwNTI2NDdlY2EzMzg3NGNjNDJhLi5hZTllZTg4NjNiNjc3ZWU1YzQ0NTlmMWVm
NzRiM2IxNGY5MWZjODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmNwcApAQCAtMjksOSArMjksMTEgQEAKIAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjbHVzaXZlVHJh
Y2tMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHZW5lcmF0ZWRTdHJlYW0u
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJNdWx0aXBs
ZVRyYWNrTGlzdC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC0xNzIsNiArMTc0LDEyIEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OnVucmVnaXN0ZXIoU3RyZWFtQ2xpZW50KiBjbGllbnQpCiAgICAgbV9zdHJlYW1z
LnJlbW92ZShjbGllbnQtPmNsaWVudElkKCkpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjp1bnJlZ2lzdGVyKEdlbmVyaWNDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NF
UlQobV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudC0+Y2xpZW50SWQoKSkpOworICAgIG1fY2xpZW50
cy5yZW1vdmUoY2xpZW50LT5jbGllbnRJZCgpKTsKK30KKwogU3RyZWFtKiBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6Z2V0U3RyZWFtRnJvbUxhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhsYWJlbCkpOwpAQCAtMTg4LDYg
KzE5Niw3IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmVudGVyRGV0YWNoZWRT
dGF0ZSgpCiAKICAgICBtX3JlcXVlc3RzLmFib3J0QWxsKCk7CiAgICAgbV9zdHJlYW1zLmRldGFj
aEVtYmVkZGVyKCk7CisgICAgbV9jbGllbnRzLmRldGFjaEVtYmVkZGVyKCk7CiAgICAgbV9pc0lu
RGV0YWNoZWRTdGF0ZSA9IHRydWU7CiB9CiAKQEAgLTIxNiw2ICsyMjUsNyBAQCB2b2lkIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUoKQogCiAgICAgQVNTRVJUKG1f
cmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICBtX3N0cmVhbXMudW5yZWdpc3RlckFsbCgpOworICAg
IG1fY2xpZW50cy51bnJlZ2lzdGVyQWxsKCk7CiAKICAgICBtX2ZyYW1lID0gMDsKIH0KQEAgLTI5
Nyw3ICszMDcsMzcgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RvcEdlbmVy
YXRlZFN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQogICAgICAgICBwYWdlQ29udHJv
bGxlcigpLT5zdG9wR2VuZXJhdGVkU3RyZWFtKHN0cmVhbUxhYmVsKTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjplbmFi
bGVBdWRpb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBhdWRpbyB0cmFja3MgZG9uJ3Qg
bmVjZXNzYXJpbHkga2VlcCBhbGl2ZSB0aGVpciBhc3NvY2lhdGVkIGdlbmVyYXRlZCBzdHJlYW0g
b2JqZWN0LgorICAgIGlmICghbV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbUxhYmVsKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGlzQ2xpZW50QXZhaWxhYmxlKCkpCisgICAgICAgIHBhZ2VD
b250cm9sbGVyKCktPmVuYWJsZUF1ZGlvVHJhY2soc3RyZWFtTGFiZWwsIGluZGV4KTsKK30KKwor
dm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzYWJsZUF1ZGlvVHJhY2soY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAgICAvLyBEb24n
dCBhc3NlcnQgc2luY2UgdGhlIGF1ZGlvIHRyYWNrcyBkb24ndCBuZWNlc3NhcmlseSBrZWVwIGFs
aXZlIHRoZWlyIGFzc29jaWF0ZWQgZ2VuZXJhdGVkIHN0cmVhbSBvYmplY3QuCisgICAgaWYgKCFt
X3N0cmVhbXMuY29udGFpbnMoc3RyZWFtTGFiZWwpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoaXNDbGllbnRBdmFpbGFibGUoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+ZGlzYWJs
ZUF1ZGlvVHJhY2soc3RyZWFtTGFiZWwsIGluZGV4KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6c2VsZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
LCBsb25nIGluZGV4KQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgYXVkaW8gdHJh
Y2tzIGRvbid0IG5lY2Vzc2FyaWx5IGtlZXAgYWxpdmUgdGhlaXIgYXNzb2NpYXRlZCBnZW5lcmF0
ZWQgc3RyZWFtIG9iamVjdC4KKyAgICBpZiAoIW1fc3RyZWFtcy5jb250YWlucyhzdHJlYW1MYWJl
bCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpc0NsaWVudEF2YWlsYWJsZSgpKQorICAg
ICAgICBwYWdlQ29udHJvbGxlcigpLT5zZWxlY3RWaWRlb1RyYWNrKHN0cmVhbUxhYmVsLCBpbmRl
eCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRl
ZChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBQYXNzUmVmUHRyPE11bHRpcGxl
VHJhY2tMaXN0PiBhdWRpb1RyYWNrc1BhcmFtLCBQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlz
dD4gdmlkZW9UcmFja3NQYXJhbSkKIHsKICAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIHJl
cXVlc3QgY2FuIGhhdmUgYmVlbiBhYm9ydGVkIGFzIGEgcmVzdWx0IG9mIGVtYmVkZGVyIGRldGFj
aG1lbnQuCiAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJZCkpCkBAIC0zMDUs
OSArMzQ1LDIyIEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVy
YXRlZChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhCiAKICAgICBBU1NFUlQobV9yZXF1
ZXN0cy5nZXQocmVxdWVzdElkKS0+aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSk7CiAgICAgQVNT
RVJUKCFsYWJlbC5pc051bGwoKSk7CisgICAgQVNTRVJUKGF1ZGlvVHJhY2tzUGFyYW0pOworICAg
IEFTU0VSVCh2aWRlb1RyYWNrc1BhcmFtKTsKKworICAgIFJlZlB0cjxNdWx0aXBsZVRyYWNrTGlz
dD4gYXVkaW9UcmFja3MgPSBhdWRpb1RyYWNrc1BhcmFtOworICAgIFJlZlB0cjxFeGNsdXNpdmVU
cmFja0xpc3Q+IHZpZGVvVHJhY2tzID0gdmlkZW9UcmFja3NQYXJhbTsKKworICAgIGludCBhdWRp
b1RyYWNrc0NsaWVudElkID0gbV9jbGllbnRzLmdldE5leHRJZCgpOworICAgIGF1ZGlvVHJhY2tz
LT5hc3NvY2lhdGVGcmFtZUNvbnRyb2xsZXIodGhpcywgYXVkaW9UcmFja3NDbGllbnRJZCk7Cisg
ICAgbV9jbGllbnRzLmFkZChhdWRpb1RyYWNrc0NsaWVudElkLCBhdWRpb1RyYWNrcy5nZXQoKSk7
CisKKyAgICBpbnQgdmlkZW9UcmFja3NDbGllbnRJZCA9IG1fY2xpZW50cy5nZXROZXh0SWQoKTsK
KyAgICB2aWRlb1RyYWNrcy0+YXNzb2NpYXRlRnJhbWVDb250cm9sbGVyKHRoaXMsIHZpZGVvVHJh
Y2tzQ2xpZW50SWQpOworICAgIG1fY2xpZW50cy5hZGQodmlkZW9UcmFja3NDbGllbnRJZCwgdmlk
ZW9UcmFja3MuZ2V0KCkpOwogCiAgICAgUmVmUHRyPEdlbmVyYXRlU3RyZWFtUmVxdWVzdD4gc3Ry
ZWFtUmVxdWVzdCA9IHN0YXRpY19jYXN0PEdlbmVyYXRlU3RyZWFtUmVxdWVzdCo+KG1fcmVxdWVz
dHMuZ2V0KHJlcXVlc3RJZCkuZ2V0KCkpOwotICAgIFJlZlB0cjxHZW5lcmF0ZWRTdHJlYW0+IGdl
bmVyYXRlZFN0cmVhbSA9IEdlbmVyYXRlZFN0cmVhbTo6Y3JlYXRlKHRoaXMsIGxhYmVsKTsKKyAg
ICBSZWZQdHI8R2VuZXJhdGVkU3RyZWFtPiBnZW5lcmF0ZWRTdHJlYW0gPSBHZW5lcmF0ZWRTdHJl
YW06OmNyZWF0ZSh0aGlzLCBsYWJlbCwgYXVkaW9UcmFja3MucmVsZWFzZSgpLCB2aWRlb1RyYWNr
cy5yZWxlYXNlKCkpOwogICAgIG1fc3RyZWFtcy5hZGQobGFiZWwsIGdlbmVyYXRlZFN0cmVhbS5n
ZXQoKSk7CiAgICAgbV9yZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElkKTsKICAgICBzdHJlYW1SZXF1
ZXN0LT5zdWNjZXNzQ2FsbGJhY2soKS0+aGFuZGxlRXZlbnQoZ2VuZXJhdGVkU3RyZWFtLmdldCgp
KTsKQEAgLTMzNSw2ICszODgsMTkgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
c3RyZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgZ2V0U3RyZWFtRnJvbUxhYmVs
KGxhYmVsKS0+c3RyZWFtRW5kZWQoKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6YXVkaW9UcmFja0ZhaWxlZChjb25zdCBTdHJpbmcmIGxhYmVsLCB1bnNpZ25lZCBsb25n
IGluZGV4KQoreworICAgIFN0cmVhbSogc3RyZWFtID0gZ2V0U3RyZWFtRnJvbUxhYmVsKGxhYmVs
KTsKKyAgICBBU1NFUlQoc3RyZWFtLT5pc0dlbmVyYXRlZFN0cmVhbSgpKTsKKyAgICBzdGF0aWNf
Y2FzdDxHZW5lcmF0ZWRTdHJlYW0qPihzdHJlYW0pLT5hdWRpb1RyYWNrcygpLT50cmFja0ZhaWxl
ZChpbmRleCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnZpZGVvVHJh
Y2tGYWlsZWQoY29uc3QgU3RyaW5nJiBsYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAg
ICBTdHJlYW0qIHN0cmVhbSA9IGdldFN0cmVhbUZyb21MYWJlbChsYWJlbCk7CisgICAgQVNTRVJU
KHN0cmVhbS0+aXNHZW5lcmF0ZWRTdHJlYW0oKSk7CisgICAgc3RhdGljX2Nhc3Q8R2VuZXJhdGVk
U3RyZWFtKj4oc3RyZWFtKS0+dmlkZW9UcmFja3MoKS0+dHJhY2tGYWlsZWQoaW5kZXgpOworfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaAppbmRleCBjYzAzMzFmYTRkMDYyZjJhZmI0MjNkNWU5
NTE1ODQ2NWUxZmE3N2MwLi40YzBiNTg2MGIzMGI2MTcyNTc3NDg2YjgzYTU3MzI4ZmQ4YTVmYjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ci5oCkBAIC0zNyw5ICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV4
Y2x1c2l2ZVRyYWNrTGlzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR2VuZXJhdGVkU3RyZWFtOwog
Y2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVyOworY2xhc3MgTXVsdGlwbGVUcmFja0xpc3Q7CiBj
bGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwogY2xhc3MgTmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwogY2xhc3MgUGFnZTsKQEAgLTY3LDYgKzY5LDcgQEAgcHVi
bGljOgogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVyYXRlZFN0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVyaWNDbGllbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBmcmFt
ZSBjb250cm9sbGVyIGlzIGJlaW5nIGRpc2Nvbm5lY3RlZCB0byB0aGUgTWVkaWFTdHJlYW1DbGll
bnQgZW1iZWRkZXIuCiAgICAgICAgIC8vIENsaWVudHMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgdG8g
c2VuZCBhbnkgcmVxdWlyZWQgc2h1dGRvd24gbWVzc2FnZXMuCkBAIC0xMjIsNiArMTI1LDE5IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2lzR2VuZXJhdGVkU3RyZWFtOwogICAgIH07CiAKKyAg
ICAvLyBHZW5lcmljIGNsaWVudHMgYXJlIG9iamVjdHMgdGhhdCByZXF1aXJlIGFjY2VzcyB0byB0
aGUgZnJhbWUgY29udHJvbGxlciBidXQgZG9uJ3QgaGF2ZSBhIGdsb2JhbCBpZCAobGlrZSBzdHJl
YW1zIGRvKQorICAgIC8vIG9yIG5lZWQgdG8gcmVjZWl2ZSBhbnkgbWVzc2FnZXMgZnJvbSB0aGUg
ZW1iZWRkZXIgY2xpZW50LgorICAgIGNsYXNzIEdlbmVyaWNDbGllbnQgOiBwdWJsaWMgQ2xpZW50
QmFzZTxpbnQ+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdlbmVyaWNDbGllbnQoKSB7IH0KKyAg
ICAgICAgR2VuZXJpY0NsaWVudChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyLCBpbnQgaWQpIDogQ2xpZW50QmFzZTxpbnQ+KGZyYW1lQ29udHJvbGxlciwgaWQpIHsg
fQorICAgICAgICB2aXJ0dWFsIH5HZW5lcmljQ2xpZW50KCkgeyB1bnJlZ2lzdGVyKCk7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIGlzR2VuZXJpY0NsaWVudCgpIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyKCkgeyB1bnJlZ2lz
dGVyQ2xpZW50KHRoaXMpOyB9CisgICAgfTsKKwogICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKEZyYW1lKik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsK
IApAQCAtMTQyLDEwICsxNTgsMTcgQEAgcHVibGljOgogICAgIC8vIFN0b3AgYSBnZW5lcmF0ZWQg
c3RyZWFtLgogICAgIHZvaWQgc3RvcEdlbmVyYXRlZFN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVh
bUxhYmVsKTsKIAorICAgIC8vIEVuYWJsZS9kaXNhYmxlIGFuIGF1ZGlvIHRyYWNrIGluIGEgZ2Vu
ZXJhdGVkIHN0cmVhbS4KKyAgICB2b2lkIGVuYWJsZUF1ZGlvVHJhY2soY29uc3QgU3RyaW5nJiBz
dHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBkaXNhYmxlQXVkaW9U
cmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKwor
ICAgIC8vIFNlbGVjdCBhIHZpZGVvIHRyYWNrIGluIGEgZ2VuZXJhdGVkIHN0cmVhbS4KKyAgICB2
b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgbG9uZyBpbmRl
eCk7CisKICAgICAvLyAtLS0gQ2FsbHMgY29taW5nIGJhY2sgZnJvbSB0aGUgY29udHJvbGxlci4g
LS0tIC8vCiAKICAgICAvLyBSZXBvcnQgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgbG9jYWwgc3Ry
ZWFtLgotICAgIHZvaWQgc3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgc3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIFBhc3NSZWZQdHI8TXVsdGlwbGVUcmFja0xpc3Q+
IGF1ZGlvVHJhY2tzLCBQYXNzUmVmUHRyPEV4Y2x1c2l2ZVRyYWNrTGlzdD4gdmlkZW9UcmFja3Mp
OwogCiAgICAgLy8gUmVwb3J0IGEgZmFpbHVyZSBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBz
dHJlYW0uCiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNvZGUpOwpAQCAtMTUzLDYgKzE3NiwxMCBAQCBw
dWJsaWM6CiAgICAgLy8gUmVwb3J0IHRoZSBlbmQgb2YgYSBzdHJlYW0gZm9yIGV4dGVybmFsIHJl
YXNvbnMuCiAgICAgdm9pZCBzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7
CiAKKyAgICAvLyBSZXBvcnQgdGhlIHVuZXhwZWN0ZWQgdW5hdmFpbGFiaWxpdHkgb2YgYSBsaXZl
IG1lZGlhIHRyYWNrLgorICAgIHZvaWQgYXVkaW9UcmFja0ZhaWxlZChjb25zdCBTdHJpbmcmIHN0
cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIHZpZGVvVHJhY2tGYWls
ZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisKIHBy
aXZhdGU6CiAgICAgY2xhc3MgUmVxdWVzdDsKICAgICBjbGFzcyBHZW5lcmF0ZVN0cmVhbVJlcXVl
c3Q7CkBAIC0xODcsMTQgKzIxNCwxOSBAQCBwcml2YXRlOgogICAgIC8vIFN0cmVhbXMgYXJlIGEg
c3BlY2lhbCBjbGFzcyBvZiBjbGllbnRzIHNpbmNlIHRoZXkgYXJlIGlkZW50aWZpZWQgYnkgYSBn
bG9iYWwgbGFiZWwgc3RyaW5nIGluc3RlYWQgb2YgYW4gaWQuCiAgICAgdHlwZWRlZiBDbGllbnRN
YXBCYXNlPFN0cmluZz4gU3RyZWFtTWFwOwogCisgICAgLy8gQWxsIG90aGVyIHR5cGVzIG9mIGNs
aWVudHMgdXNlIGF1dG9nZW5lcmF0ZWQgaW50ZWdlciBpZHMuCisgICAgY2xhc3MgQ2xpZW50TWFw
IDogcHVibGljIElkR2VuZXJhdG9yLCBwdWJsaWMgQ2xpZW50TWFwQmFzZTxpbnQ+IHsgfTsKKwog
ICAgIC8vIERldGFjaGVkIGZyb20gYSBwYWdlLCBhbmQgaGVuY2UgZnJvbSBhIGVtYmVkZGVyIGNs
aWVudC4KICAgICB2b2lkIGVudGVyRGV0YWNoZWRTdGF0ZSgpOwogCiAgICAgdm9pZCB1bnJlZ2lz
dGVyKFN0cmVhbUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlcihHZW5lcmljQ2xpZW50Kik7
CiAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBwYWdlQ29udHJvbGxlcigpIGNvbnN0OwogICAg
IFN0cmVhbSogZ2V0U3RyZWFtRnJvbUxhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAg
UmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAgIENsaWVudE1hcCBtX2NsaWVudHM7CiAgICAgU3Ry
ZWFtTWFwIG1fc3RyZWFtczsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>