<?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>103816</bug_id>
          
          <creation_ts>2012-12-01 10:53:27 -0800</creation_ts>
          <short_desc>[CoordinatedGraphics] Use unsigned integers for CoordinatedTile IDs</short_desc>
          <delta_ts>2012-12-11 02:57:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>104654</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780750</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-01 10:53:27 -0800</bug_when>
    <thetext>CoordinatedTile currently uses *signed* integer type for its identifier. Due to the way we generate those IDs, it would be safer to use *unsigned* integers. This is because the generated ID will overflow at some point and the C and C++ language standards say that overflow of a signed value is undefined behaviour. 

In the C99 standard this is in section 6.5. In the C++98 standard it is in section 5 [expr], paragraph 5. &quot;This means that a correct C/C++ program must never generate signed overflow when computing an expression. It also means that a compiler may assume that a program will never generated signed overflow&quot;.

Note that gcc has -fwrapv flag to assume that signed arithmetic overflow of addition, subtraction and multiplication wraps around using twos-complement representation. However, I still believe it is safer and more consistent to use unsigned integers here.

Note that some other classes in CoordinatedGraphics uses signed integers for those IDs but I&apos;m planning to update those in separate patches (in this one gets accepted).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780751</commentid>
    <comment_count>1</comment_count>
      <attachid>177110</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-01 11:01:36 -0800</bug_when>
    <thetext>Created attachment 177110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781279</commentid>
    <comment_count>2</comment_count>
      <attachid>177110</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-03 03:08:56 -0800</bug_when>
    <thetext>Comment on attachment 177110
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h:27
&gt; +#include &quot;CoordinatedTile.h&quot;

For layering protection _I think_ that we try to avoid WebKit2/UIProcess files including WebKit2/WebProcess files. This is the purpose of WebKit2/Shared.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp:109
&gt; -    return !!m_ID;
&gt; +    return m_ID != InvalidCoordinatedTileID;

To be honest I&apos;m not totaly for this change because:
- If a page creates 100 layers per frame per second, it would take 926 years to reach INT_MAX
- This will still have a bad behavior once we wrap around to 0, so it&apos;s not 100% correct either
So overall I think it adds unecessary complexity.

That said, I&apos;m ok if it gets in, the change itself looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781286</commentid>
    <comment_count>3</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-03 03:15:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; - If a page creates 100 layers per frame per second, it would take 926 years to reach INT_MAX
Strike that, I forgot an important division, it would rather be 248 days for 100 layers created per frame per seconds.
It get almost possible at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781366</commentid>
    <comment_count>4</comment_count>
      <attachid>177110</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-03 05:29:01 -0800</bug_when>
    <thetext>Comment on attachment 177110
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp:109
&gt;&gt; +    return m_ID != InvalidCoordinatedTileID;
&gt; 
&gt; To be honest I&apos;m not totaly for this change because:
&gt; - If a page creates 100 layers per frame per second, it would take 926 years to reach INT_MAX
&gt; - This will still have a bad behavior once we wrap around to 0, so it&apos;s not 100% correct either
&gt; So overall I think it adds unecessary complexity.
&gt; 
&gt; That said, I&apos;m ok if it gets in, the change itself looks fine.

Why are you saying there is still bad behavior once we wrap? I updated the code in CoordinatedTile::updateBackBuffer() to handle the case where it wraps. To my knowledge, there is no bad behavior on wrapping anymore.
As you said, it is going to take a while to reach INT_MAX but I think it is cleaner and safer to use unsigned IDs still. To my knowledge, others IDs in WebKit are also unsigned, right?

You said it brings unnecessary complexity, but I&apos;m not sure I follow. The only code I added if an extra if case in updateBackBuffer() to handle the wrapping case (make sure we don&apos;t reuse 0 as ID for a tile). The rest of the changes are purely about using an enum for the ID type instead of the actual integer type. In my opinion, this improves readability but of course it is optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781399</commentid>
    <comment_count>5</comment_count>
      <attachid>177110</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-03 06:35:45 -0800</bug_when>
    <thetext>Comment on attachment 177110
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp:109
&gt;&gt;&gt; +    return m_ID != InvalidCoordinatedTileID;
&gt;&gt; 
&gt;&gt; To be honest I&apos;m not totaly for this change because:
&gt;&gt; - If a page creates 100 layers per frame per second, it would take 926 years to reach INT_MAX
&gt;&gt; - This will still have a bad behavior once we wrap around to 0, so it&apos;s not 100% correct either
&gt;&gt; So overall I think it adds unecessary complexity.
&gt;&gt; 
&gt;&gt; That said, I&apos;m ok if it gets in, the change itself looks fine.
&gt; 
&gt; Why are you saying there is still bad behavior once we wrap? I updated the code in CoordinatedTile::updateBackBuffer() to handle the case where it wraps. To my knowledge, there is no bad behavior on wrapping anymore.
&gt; As you said, it is going to take a while to reach INT_MAX but I think it is cleaner and safer to use unsigned IDs still. To my knowledge, others IDs in WebKit are also unsigned, right?
&gt; 
&gt; You said it brings unnecessary complexity, but I&apos;m not sure I follow. The only code I added if an extra if case in updateBackBuffer() to handle the wrapping case (make sure we don&apos;t reuse 0 as ID for a tile). The rest of the changes are purely about using an enum for the ID type instead of the actual integer type. In my opinion, this improves readability but of course it is optional.

Yes you&apos;re right, the overflow handling code that you added seems right (I didn&apos;t see it).

The unecessary complexity I see is the header cross-include that is required for the typedef + the overflow handling code that is impossible to test and that no living user will likely ever run. But again, this is not a strong opposition, just a personal taste.
Other parts of WebKit2 are using uint64_t actually, without typedef for types not defined in WebCore. How would that sound to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781407</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-03 06:44:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 177110 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177110&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp:109
&gt; &gt;&gt;&gt; +    return m_ID != InvalidCoordinatedTileID;
&gt; &gt;&gt; 
&gt; &gt;&gt; To be honest I&apos;m not totaly for this change because:
&gt; &gt;&gt; - If a page creates 100 layers per frame per second, it would take 926 years to reach INT_MAX
&gt; &gt;&gt; - This will still have a bad behavior once we wrap around to 0, so it&apos;s not 100% correct either
&gt; &gt;&gt; So overall I think it adds unecessary complexity.
&gt; &gt;&gt; 
&gt; &gt;&gt; That said, I&apos;m ok if it gets in, the change itself looks fine.
&gt; &gt; 
&gt; &gt; Why are you saying there is still bad behavior once we wrap? I updated the code in CoordinatedTile::updateBackBuffer() to handle the case where it wraps. To my knowledge, there is no bad behavior on wrapping anymore.
&gt; &gt; As you said, it is going to take a while to reach INT_MAX but I think it is cleaner and safer to use unsigned IDs still. To my knowledge, others IDs in WebKit are also unsigned, right?
&gt; &gt; 
&gt; &gt; You said it brings unnecessary complexity, but I&apos;m not sure I follow. The only code I added if an extra if case in updateBackBuffer() to handle the wrapping case (make sure we don&apos;t reuse 0 as ID for a tile). The rest of the changes are purely about using an enum for the ID type instead of the actual integer type. In my opinion, this improves readability but of course it is optional.
&gt; 
&gt; Yes you&apos;re right, the overflow handling code that you added seems right (I didn&apos;t see it).
&gt; 
&gt; The unecessary complexity I see is the header cross-include that is required for the typedef + the overflow handling code that is impossible to test and that no living user will likely ever run. But again, this is not a strong opposition, just a personal taste.
&gt; Other parts of WebKit2 are using uint64_t actually, without typedef for types not defined in WebCore. How would that sound to you?

Yes, I definitely need to fix that. Including the WebProcess headers like I did is not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781487</commentid>
    <comment_count>7</comment_count>
      <attachid>177260</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-03 08:39:29 -0800</bug_when>
    <thetext>Created attachment 177260
Patch

Take Jocelyn&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783550</commentid>
    <comment_count>8</comment_count>
      <attachid>177260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 02:12:35 -0800</bug_when>
    <thetext>Comment on attachment 177260
Patch

Clearing flags on attachment: 177260

Committed r136658: &lt;http://trac.webkit.org/changeset/136658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783551</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 02:12:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177110</attachid>
            <date>2012-12-01 11:01:36 -0800</date>
            <delta_ts>2012-12-03 08:39:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103816_CoordinatedTileID_unsigned.patch</filename>
            <type>text/plain</type>
            <size>27013</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMjhkY2ViYi4uODUzNWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0
IEBACisyMDEyLTEyLTAxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIFVzZSB1bnNpZ25lZCBpbnRl
Z2VycyBmb3IgQ29vcmRpbmF0ZWRUaWxlIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgQ29vcmRpbmF0ZWRUaWxlSUQgdHlwZWRlZiBmb3Ig
Q29vcmRpbmF0ZWRUaWxlIG9iamVjdAorICAgICAgICBpZGVudGlmaWVycyBhbmQgbWFrZSBzdXJl
IGl0IG1hcHMgdG8gYW4gdW5zaWduZWQgaW50ZWdlci4KKyAgICAgICAgQ29vcmRpbmF0ZWRUaWxl
IHdhcyBwcmV2aW91c2x5IHVzaW5nIHNpZ25lZCBpbnRlZ2VycyBmb3IKKyAgICAgICAgaXRzIGlk
ZW50aWZpZXIgd2hpY2ggaXMgdW5zYWZlIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBJRAorICAgICAg
ICB3aWxsIG92ZXJmbG93IGF0IHNvbWUgcG9pbnQgYW5kIHRoZSBDIGFuZCBDKysgbGFuZ3VhZ2UK
KyAgICAgICAgc3RhbmRhcmRzIHNheSB0aGF0IG92ZXJmbG93IG9mIGEgc2lnbmVkIHZhbHVlIGlz
IHVuZGVmaW5lZAorICAgICAgICBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZVRpbGUpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxsVGlsZXMpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVh
dGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclBy
b3h5Ojp1cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29y
ZGluYXRvclByb3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAg
KExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChMYXll
clRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAg
IChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkVGlsZTo6Q29vcmRpbmF0ZWRUaWxlKToKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRUaWxlOjp+Q29vcmRpbmF0ZWRUaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRUaWxlOjppc1JlYWR5VG9QYWludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQ29vcmRpbmF0ZWRUaWxlKToKKyAgICAgICAgKENvb3JkaW5hdGVkVGlsZUNs
aWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29y
ZGluYXRvcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OnJlbW92ZVRpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXllclRyZWVDb29yZGlu
YXRvcik6CisKIDIwMTItMTEtMzAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBBbHdheXMgbGlzdGVuIGZvciB0aGUgRGlkRmlyc3RMYXlvdXQgbGF5b3V0
IG1pbGVzdG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDRjMGNlZDIuLjJkMDExZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTY1LDEzICs2NSwxMyBAQCB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgSQogICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZShpbnQgaWQsIGZsb2F0IHNjYWxlKQordm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZShDb29yZGluYXRlZFRpbGVJRCBpZCwgZmxvYXQgc2Nh
bGUpCiB7CiAgICAgbV90aWxlcy5hZGQoaWQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZShz
Y2FsZSkpOwogICAgIG1fc2NhbGUgPSBzY2FsZTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6cmVtb3ZlVGlsZShpbnQgaWQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpyZW1vdmVUaWxlKENvb3JkaW5hdGVkVGlsZUlEIGlkKQogewogICAgIEFTU0VSVChtX3RpbGVz
LmNvbnRhaW5zKGlkKSk7CiAgICAgbV90aWxlc1RvUmVtb3ZlLmFkZChpZCk7CkBAIC03OSwxNCAr
NzksMTQgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlVGlsZShpbnQgaWQp
CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKIHsKLSAg
ICBIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgZW5k
ID0gbV90aWxlcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8aW50LCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgIEhhc2hNYXA8Q29vcmRpbmF0ZWRUaWxlSUQsIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFw
PENvb3JkaW5hdGVkVGlsZUlELCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRv
ciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBtX3RpbGVz
VG9SZW1vdmUuYWRkKGl0LT5rZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
Ojp1cGRhdGVUaWxlKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYmFja0J1ZmZlciwg
Y29uc3QgSW50UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZVRpbGUoQ29vcmRpbmF0ZWRUaWxlSUQgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlk
KTsKKyAgICBIYXNoTWFwPENvb3JkaW5hdGVkVGlsZUlELCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9
IG1fdGlsZXMuZW5kKCkpOwogICAgIGl0LT52YWx1ZS5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsK
ICAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1
ZmZlciwgb2Zmc2V0KTsKQEAgLTk0LDggKzk0LDggQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZTo6dXBkYXRlVGlsZShpbnQgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnMK
IAogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4
dHVyZSgpIGNvbnN0CiB7Ci0gICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZT46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNo
TWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIEhhc2hNYXA8Q29vcmRp
bmF0ZWRUaWxlSUQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPENvb3JkaW5hdGVkVGlsZUlE
LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGls
ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlID0gaXQtPnZhbHVlLnRleHR1cmUoKTsKICAgICAgICAgaWYgKHRleHR1cmUp
CiAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTsKQEAgLTE0Myw5ICsxNDMsOSBAQCB2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLAogICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+IHByZXZpb3Vz
VGlsZXNUb1BhaW50OwogCiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGV2ZXJ5IHRpbWUgd2Ug
cGFpbnQsIGluIGNhc2UgdGhlIG9wYWNpdHkgaGFzIGNoYW5nZWQuCi0gICAgSGFzaE1hcDxpbnQs
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5k
KCk7CisgICAgSGFzaE1hcDxDb29yZGluYXRlZFRpbGVJRCwgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmVUaWxlPjo6aXRlcmF0b3IgZW5kID0gbV90aWxlcy5lbmQoKTsKICAgICBGbG9hdFJlY3QgY292
ZXJlZFJlY3Q7Ci0gICAgZm9yIChIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIGZvciAoSGFzaE1hcDxDb29yZGluYXRlZFRpbGVJRCwgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUmIHRpbGUgPSBpdC0+dmFsdWU7
CiAgICAgICAgIGlmICghdGlsZS50ZXh0dXJlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTE3NiwxMyArMTc2LDEzIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAKIHZvaWQgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIpCiB7Ci0gICAgSGFzaFNldDxpbnQ+OjppdGVyYXRvciB0aWxlc1RvUmVtb3Zl
RW5kID0gbV90aWxlc1RvUmVtb3ZlLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxpbnQ+OjppdGVy
YXRvciBpdCA9IG1fdGlsZXNUb1JlbW92ZS5iZWdpbigpOyBpdCAhPSB0aWxlc1RvUmVtb3ZlRW5k
OyArK2l0KQorICAgIEhhc2hTZXQ8Q29vcmRpbmF0ZWRUaWxlSUQ+OjppdGVyYXRvciB0aWxlc1Rv
UmVtb3ZlRW5kID0gbV90aWxlc1RvUmVtb3ZlLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxDb29y
ZGluYXRlZFRpbGVJRD46Oml0ZXJhdG9yIGl0ID0gbV90aWxlc1RvUmVtb3ZlLmJlZ2luKCk7IGl0
ICE9IHRpbGVzVG9SZW1vdmVFbmQ7ICsraXQpCiAgICAgICAgIG1fdGlsZXMucmVtb3ZlKCppdCk7
CiAgICAgbV90aWxlc1RvUmVtb3ZlLmNsZWFyKCk7CiAKLSAgICBIYXNoTWFwPGludCwgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgdGlsZXNFbmQgPSBtX3RpbGVzLmVuZCgp
OwotICAgIGZvciAoSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0
ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSB0aWxlc0VuZDsgKytpdCkKKyAgICBI
YXNoTWFwPENvb3JkaW5hdGVkVGlsZUlELCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+Ojpp
dGVyYXRvciB0aWxlc0VuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPENvb3Jk
aW5hdGVkVGlsZUlELCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9
IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gdGlsZXNFbmQ7ICsraXQpCiAgICAgICAgIGl0LT52YWx1
ZS5zd2FwQnVmZmVycyh0ZXh0dXJlTWFwcGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggNDAzOGEzNy4uZTY5Y2M0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZFRpbGUu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NywxMCArNTgsMTAg
QEAgcHJpdmF0ZToKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBjcmVh
dGVUaWxlKGludCwgZmxvYXQpOwotICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOworICAgIHZvaWQg
Y3JlYXRlVGlsZShDb29yZGluYXRlZFRpbGVJRCwgZmxvYXQpOworICAgIHZvaWQgcmVtb3ZlVGls
ZShDb29yZGluYXRlZFRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVBbGxUaWxlcygpOwotICAgIHZv
aWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUoQ29vcmRpbmF0ZWRUaWxlSUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxT
aGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGls
ZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwpAQCAtNzMsOCArNzQsOCBAQCBw
cml2YXRlOgogICAgIHsgfQogICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0
b3I8V2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGUqPiYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXIq
LCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBXZWJDb3JlOjpC
aXRtYXBUZXh0dXJlKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAKLSAgICBIYXNoTWFw
PGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPiBtX3RpbGVzOwotICAgIEhhc2hTZXQ8
aW50PiBtX3RpbGVzVG9SZW1vdmU7CisgICAgSGFzaE1hcDxDb29yZGluYXRlZFRpbGVJRCwgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPiBtX3RpbGVzOworICAgIEhhc2hTZXQ8Q29vcmRpbmF0
ZWRUaWxlSUQ+IG1fdGlsZXNUb1JlbW92ZTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9zaXpl
OwogICAgIGZsb2F0IG1fc2NhbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcAppbmRleCA4ZmIxMmI5Li4wODExOTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtNjEsMjAgKzYxLDIw
IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlzcGF0Y2hVcGRhdGUoY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCiAgICAgbV9yZW5kZXJlci0+YXBwZW5kVXBkYXRl
KGZ1bmN0aW9uKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVU
aWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
KQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVUaWxlRm9yTGF5ZXIoV2Vi
TGF5ZXJJRCBsYXllcklELCBDb29yZGluYXRlZFRpbGVJRCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvJiB1cGRh
dGVJbmZvKQogewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpj
cmVhdGVUaWxlLCBtX3JlbmRlcmVyLmdldCgpLCBsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8u
c2NhbGVGYWN0b3IpKTsKICAgICB1cGRhdGVUaWxlRm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlELCB0
aWxlUmVjdCwgdXBkYXRlSW5mbyk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6dXBkYXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5m
bykKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlVGlsZUZvckxheWVyKFdl
YkxheWVySUQgbGF5ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQgdGlsZUlELCBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykK
IHsKICAgICBTdXJmYWNlTWFwOjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZCh1cGRhdGVJ
bmZvLmF0bGFzSUQpOwogICAgIEFTU0VSVChpdCAhPSBtX3N1cmZhY2VzLmVuZCgpKTsKICAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZSwgbV9yZW5k
ZXJlci5nZXQoKSwgbGF5ZXJJRCwgdGlsZUlELCBMYXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0
ZSh1cGRhdGVJbmZvLnVwZGF0ZVJlY3QsIHRpbGVSZWN0LCBpdC0+dmFsdWUsIHVwZGF0ZUluZm8u
c3VyZmFjZU9mZnNldCkpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojpy
ZW1vdmVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQpCit2b2lkIExheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OnJlbW92ZVRpbGVGb3JMYXllcihXZWJMYXllcklEIGxheWVySUQs
IENvb3JkaW5hdGVkVGlsZUlEIHRpbGVJRCkKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZM
YXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSwgbV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwg
dGlsZUlEKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
LmgKaW5kZXggZmI1OGIxYS4uMDU4NTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRUaWxlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIK
QEAgLTY2LDkgKzY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNvdmVyZWRSZWN0KTsKLSAgICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwg
aW50IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJ
bmZvJik7Ci0gICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxl
SUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwot
ICAgIHZvaWQgcmVtb3ZlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKTsKKyAg
ICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihXZWJMYXllcklELCBDb29yZGluYXRlZFRpbGVJRCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CisgICAg
dm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoV2ViTGF5ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOworICAgIHZv
aWQgcmVtb3ZlVGlsZUZvckxheWVyKFdlYkxheWVySUQsIENvb3JkaW5hdGVkVGlsZUlEKTsKICAg
ICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJm
YWNlOjpIYW5kbGUmKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKTsK
ICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDQyYzY5YmIuLjM1YzE5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsOSAr
MzAsOSBAQCBtZXNzYWdlcyAtPiBMYXllclRyZWVDb29yZGluYXRvclByb3h5IHsKICNlbmRpZgog
ICAgIFNldFJvb3RDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBv
c2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCi0gICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90
IGxheWVySUQsIGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6
U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKLSAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWlu
dDMyX3QgbGF5ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2Vi
S2l0OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQotICAgIFJlbW92ZVRpbGVGb3JMYXll
cih1aW50MzJfdCBsYXllcklELCBpbnQgdGlsZUlEKQorICAgIENyZWF0ZVRpbGVGb3JMYXllcih1
aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJl
Y3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKKyAgICBVcGRhdGVUaWxl
Rm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBXZWJDb3JlOjpJbnRS
ZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCisgICAg
UmVtb3ZlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkKICAg
ICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNl
OjpIYW5kbGUgaGFuZGxlKQogICAgIFJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQogICAg
IENyZWF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCmluZGV4IDcxYzRiY2IuLjYwMWMyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpyZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBn
cmFwaGljcwogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkp
OwogfQogCi12b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxlKFdlYkxheWVySUQgbGF5
ZXJJRCwgaW50IHRpbGVJRCwgZmxvYXQgc2NhbGUpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpj
cmVhdGVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQgdGlsZUlELCBm
bG9hdCBzY2FsZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChsYXll
cklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwpAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OmNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlELCBm
bG9hdCBzY2FsZSkKICAgICByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShsYXllcik7
CiB9CiAKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXll
cklELCBpbnQgdGlsZUlEKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShXZWJM
YXllcklEIGxheWVySUQsIENvb3JkaW5hdGVkVGlsZUlEIHRpbGVJRCkKIHsKICAgICBHcmFwaGlj
c0xheWVyKiBsYXllciA9IGxheWVyQnlJRChsYXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwpA
QCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoV2Vi
TGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5k
aW5nQnVmZmVycy5hZGQoYmFja2luZ1N0b3JlKTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6dXBkYXRlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFRpbGVV
cGRhdGUmIHVwZGF0ZSkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUoV2ViTGF5
ZXJJRCBsYXllcklELCBDb29yZGluYXRlZFRpbGVJRCB0aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUm
IHVwZGF0ZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChsYXllcklE
KTsKICAgICBBU1NFUlQobGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5k
ZXggOTQ2YWM2ZC4uNWU2NjZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCkBA
IC0yMiw2ICsyMiw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVk
ZSAiQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRUaWxlLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCkBAIC0xMDAsOSArMTAxLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwogI2VuZGlm
CiAKLSAgICB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBmbG9hdCBzY2FsZSk7Ci0g
ICAgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxl
KFdlYkxheWVySUQsIGludCwgY29uc3QgVGlsZVVwZGF0ZSYpOworICAgIHZvaWQgY3JlYXRlVGls
ZShXZWJMYXllcklELCBDb29yZGluYXRlZFRpbGVJRCwgZmxvYXQgc2NhbGUpOworICAgIHZvaWQg
cmVtb3ZlVGlsZShXZWJMYXllcklELCBDb29yZGluYXRlZFRpbGVJRCk7CisgICAgdm9pZCB1cGRh
dGVUaWxlKFdlYkxheWVySUQsIENvb3JkaW5hdGVkVGlsZUlELCBjb25zdCBUaWxlVXBkYXRlJik7
CiAgICAgdm9pZCBmbHVzaExheWVyQ2hhbmdlcygpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggMzQ5OTQ4ZS4uMWJkY2ZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03
MjcsMTkgKzcyNywxOSBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSQogICAgIHJldHVybiBtX2Nv
b3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IDAg
OiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwogfQogCi12
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
dGlsZVJlY3QpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZShDb29y
ZGluYXRlZFRpbGVJRCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKIHsKICAgICBpZiAobV9jb29yZGlu
YXRvcikKICAgICAgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVw
ZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUlu
Zm8sIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZVRpbGUoQ29vcmRpbmF0ZWRUaWxlSUQgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBk
YXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QpCiB7CiAgICAgaWYg
KG1fY29vcmRpbmF0b3IpCiAgICAgICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRpbGUoaWQoKSwg
dGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZFRpbGVJRCB0aWxlSUQpCiB7CiAgICAgaWYg
KG1fY29vcmRpbmF0b3IpCiAgICAgICAgIG1fY29vcmRpbmF0b3ItPnJlbW92ZVRpbGUoaWQoKSwg
dGlsZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKaW5kZXggMTUxN2FlNS4uMzg4NWRkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTUzLDkg
KzUzLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJDbGllbnQgewogcHVibGljOgogICAgIC8vIENvb3JkaW5hdGVkVGlsZUNsaWVudAotICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFN1cmZh
Y2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBk
YXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIENvb3JkaW5hdGVkVGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQsIGNvbnN0IFN1cmZh
Y2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBDb29yZGluYXRlZFRpbGVJRCkgPSAwOwogCiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0
ID0gMDsKQEAgLTE1Miw5ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDb2xvciB0aWxl
ZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8g
Q29vcmRpbmF0ZWRUaWxlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoaW50IHRp
bGVJRCwgY29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBX
ZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKGludCB0aWxlSUQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVUaWxlKFdlYktpdDo6Q29vcmRpbmF0ZWRUaWxlSUQsIGNvbnN0IFdlYktp
dDo6U3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRpbGUoV2ViS2l0OjpDb29yZGluYXRlZFRpbGVJRCwgY29uc3QgV2Vi
S2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShXZWJLaXQ6OkNvb3JkaW5hdGVkVGlsZUlEKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRV
cGRhdGUoY29uc3QgSW50U2l6ZSYsIGludCYgYXRsYXNJRCwgSW50UG9pbnQmKSBPVkVSUklERTsK
IAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUu
Y3BwCmluZGV4IDU0OGQ0OWQuLmUyZTAwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIENvb3JkaW5hdGVkVGls
ZTo6Q29vcmRpbmF0ZWRUaWxlKENvb3JkaW5hdGVkVGlsZUNsaWVudCogY2xpZW50LCBUaWxlZEJh
Y2tpbmdTdG9yCiAgICAgLCBtX3RpbGVkQmFja2luZ1N0b3JlKHRpbGVkQmFja2luZ1N0b3JlKQog
ICAgICwgbV9jb29yZGluYXRlKHRpbGVDb29yZGluYXRlKQogICAgICwgbV9yZWN0KHRpbGVkQmFj
a2luZ1N0b3JlLT50aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGUpKQotICAgICwg
bV9JRCgwKQorICAgICwgbV9JRChJbnZhbGlkQ29vcmRpbmF0ZWRUaWxlSUQpCiAgICAgLCBtX2Rp
cnR5UmVjdChtX3JlY3QpCiB7CiB9CiAKIENvb3JkaW5hdGVkVGlsZTo6fkNvb3JkaW5hdGVkVGls
ZSgpCiB7Ci0gICAgaWYgKG1fSUQpCisgICAgaWYgKG1fSUQgIT0gSW52YWxpZENvb3JkaW5hdGVk
VGlsZUlEKQogICAgICAgICBtX2NsaWVudC0+cmVtb3ZlVGlsZShtX0lEKTsKIH0KIApAQCAtODUs
OSArODUsMTIgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1
ZmZlcigpCiAgICAgdXBkYXRlSW5mby5zY2FsZUZhY3RvciA9IG1fdGlsZWRCYWNraW5nU3RvcmUt
PmNvbnRlbnRzU2NhbGUoKTsKICAgICBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOwogCi0gICAg
c3RhdGljIGludCBpZCA9IDA7Ci0gICAgaWYgKCFtX0lEKSB7Ci0gICAgICAgIG1fSUQgPSArK2lk
OworICAgIHN0YXRpYyBDb29yZGluYXRlZFRpbGVJRCBpZCA9IDE7CisgICAgaWYgKG1fSUQgPT0g
SW52YWxpZENvb3JkaW5hdGVkVGlsZUlEKSB7CisgICAgICAgIG1fSUQgPSBpZCsrOworICAgICAg
ICAvLyBXZSBtYXkgZ2V0IGFuIGludmFsaWQgSUQgZHVlIHRvIHdyYXAtYXJvdW5kIG9uIG92ZXJm
bG93LgorICAgICAgICBpZiAobV9JRCA9PSBJbnZhbGlkQ29vcmRpbmF0ZWRUaWxlSUQpCisgICAg
ICAgICAgICBtX0lEID0gaWQrKzsKICAgICAgICAgbV9jbGllbnQtPmNyZWF0ZVRpbGUobV9JRCwg
dXBkYXRlSW5mbywgbV9yZWN0KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZVRpbGUobV9JRCwgdXBkYXRlSW5mbywgbV9yZWN0KTsKQEAgLTEwMyw3ICsxMDYsNyBAQCB2b2lk
IENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250KCkKIAogYm9vbCBDb29yZGlu
YXRlZFRpbGU6OmlzUmVhZHlUb1BhaW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gISFtX0lEOwor
ICAgIHJldHVybiBtX0lEICE9IEludmFsaWRDb29yZGluYXRlZFRpbGVJRDsKIH0KIAogdm9pZCBD
b29yZGluYXRlZFRpbGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuaAppbmRleCBkYjMxNWFk
Li41MTI0ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUu
aApAQCAtMzksNiArMzksOSBAQCBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3R5cGVkZWYgdWludDMyX3QgQ29vcmRpbmF0ZWRUaWxlSUQ7CitlbnVtIHsg
SW52YWxpZENvb3JkaW5hdGVkVGlsZUlEID0gMCB9OworCiBjbGFzcyBDb29yZGluYXRlZFRpbGVD
bGllbnQ7CiBjbGFzcyBTdXJmYWNlVXBkYXRlSW5mbzsKIApAQCAtNjYsNyArNjksNyBAQCBwcml2
YXRlOgogICAgIENvb3JkaW5hdGUgbV9jb29yZGluYXRlOwogICAgIFdlYkNvcmU6OkludFJlY3Qg
bV9yZWN0OwogCi0gICAgaW50IG1fSUQ7CisgICAgQ29vcmRpbmF0ZWRUaWxlSUQgbV9JRDsKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IG1fZGlydHlSZWN0OwogCiAgICAgT3duUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBtX2xvY2FsQnVmZmVyOwpAQCAtNzUsOSArNzgsOSBAQCBwcml2YXRlOgogY2xh
c3MgQ29vcmRpbmF0ZWRUaWxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db29yZGlu
YXRlZFRpbGVDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShpbnQgdGls
ZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgU3VyZmFj
ZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVUaWxlKGludCB0aWxlSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
VGlsZShDb29yZGluYXRlZFRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKENvb3Jk
aW5hdGVkVGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRUaWxl
SUQpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGludCYgYXRsYXNJ
RCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMTc2ZGNmNi4uYmU5NzRl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmNwcApAQCAtNjM4LDE5ICs2MzgsMTkgQEAgYm9vbCBMYXllclRyZWVIb3N0OjpzdXBwb3J0
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHRpbGVSZWN0KQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVGls
ZShXZWJMYXllcklEIGxheWVySUQsIENvb3JkaW5hdGVkVGlsZUlEIHRpbGVJRCwgY29uc3QgU3Vy
ZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVS
ZWN0KQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKICAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZVRpbGVGb3JMYXll
cihsYXllcklELCB0aWxlSUQsIHRpbGVSZWN0LCB1cGRhdGVJbmZvKSk7CiB9CiAKLXZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGls
ZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgdGlsZVJlY3QpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjp1cGRhdGVUaWxl
KFdlYkxheWVySUQgbGF5ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQgdGlsZUlELCBjb25zdCBTdXJm
YWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZVJl
Y3QpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwogICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6VXBkYXRlVGlsZUZvckxheWVy
KGxheWVySUQsIHRpbGVJRCwgdGlsZVJlY3QsIHVwZGF0ZUluZm8pKTsKIH0KIAotdm9pZCBMYXll
clRyZWVDb29yZGluYXRvcjo6cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxl
SUQpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVUaWxlKFdlYkxheWVySUQgbGF5
ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQgdGlsZUlEKQogewogICAgIGlmIChtX2lzUHVyZ2luZykK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmgKaW5kZXggZjA0YjUwOC4uZTI3Nzg0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC03OCw5ICs3OCw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSB7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0
ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBTdXJm
YWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
VGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlEKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGls
ZShXZWJMYXllcklELCBDb29yZGluYXRlZFRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8m
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUo
V2ViTGF5ZXJJRCwgQ29vcmRpbmF0ZWRUaWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKFdl
YkxheWVySUQsIENvb3JkaW5hdGVkVGlsZUlEKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJl
Y3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJO
ZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177260</attachid>
            <date>2012-12-03 08:39:29 -0800</date>
            <delta_ts>2012-12-05 02:12:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103816_CoordinatedTileID_unsigned.patch</filename>
            <type>text/plain</type>
            <size>25997</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMjhkY2ViYi4uYjJiMzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDEyLTEyLTAzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIFVzZSB1bnNpZ25lZCBpbnRl
Z2VycyBmb3IgQ29vcmRpbmF0ZWRUaWxlIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHVuc2lnbmVkIGludGVnZXIgZm9yIENvb3JkaW5hdGVk
VGlsZSBpZGVudGlmaWVyIHR5cGUuCisgICAgICAgIENvb3JkaW5hdGVkVGlsZSB3YXMgcHJldmlv
dXNseSB1c2luZyBzaWduZWQgaW50ZWdlcnMgZm9yCisgICAgICAgIGl0cyBpZGVudGlmaWVyIHdo
aWNoIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBnZW5lcmF0ZWQgSUQKKyAgICAgICAgd2lsbCBvdmVy
ZmxvdyBhdCBzb21lIHBvaW50IGFuZCB0aGUgQyBhbmQgQysrIGxhbmd1YWdlCisgICAgICAgIHN0
YW5kYXJkcyBzYXkgdGhhdCBvdmVyZmxvdyBvZiBhIHNpZ25lZCB2YWx1ZSBpcyB1bmRlZmluZWQK
KyAgICAgICAgYmVoYXZpb3VyLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVGlsZUZvckxh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRl
VGlsZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6cmVtb3ZlVGlsZUZvckxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChMYXllclRyZWVD
b29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZVJlbmRlcmVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVy
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAg
ICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRUaWxlOjpDb29yZGluYXRlZFRpbGUpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZFRpbGU6On5Db29yZGluYXRlZFRpbGUpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZFRpbGU6OmlzUmVhZHlUb1BhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuaDoKKyAgICAgICAg
KENvb3JkaW5hdGVkVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZFRpbGVDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNy
ZWF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRl
VGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVUaWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3IpOgorCiAy
MDEyLTExLTMwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWx3YXlzIGxpc3RlbiBmb3IgdGhlIERpZEZpcnN0TGF5b3V0IGxheW91dCBtaWxlc3RvbmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YzBj
ZWQyLi43MGU5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuY3BwCkBAIC02NSwxMyArNjUsMTMgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRp
bGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEkKICAgICBt
X3N1cmZhY2UgPSBidWZmZXI7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNy
ZWF0ZVRpbGUoaW50IGlkLCBmbG9hdCBzY2FsZSkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OmNyZWF0ZVRpbGUodWludDMyX3QgaWQsIGZsb2F0IHNjYWxlKQogewogICAgIG1fdGlsZXMu
YWRkKGlkLCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUoc2NhbGUpKTsKICAgICBtX3NjYWxl
ID0gc2NhbGU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZVRpbGUo
aW50IGlkKQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlVGlsZSh1aW50MzJf
dCBpZCkKIHsKICAgICBBU1NFUlQobV90aWxlcy5jb250YWlucyhpZCkpOwogICAgIG1fdGlsZXNU
b1JlbW92ZS5hZGQoaWQpOwpAQCAtNzksMTQgKzc5LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnJlbW92ZVRpbGUoaW50IGlkKQogCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpyZW1vdmVBbGxUaWxlcygpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7Ci0gICAgZm9yIChI
YXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBt
X3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgp
OworICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
Pjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAg
ICAgbV90aWxlc1RvUmVtb3ZlLmFkZChpdC0+a2V5KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZTo6dXBkYXRlVGlsZShpbnQgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBi
YWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIEhhc2hNYXA8aW50LCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChp
ZCk7CisgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6
aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVz
LmVuZCgpKTsKICAgICBpdC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7CiAgICAgaXQt
PnZhbHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9m
ZnNldCk7CkBAIC05NCw4ICs5NCw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZVRpbGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zCiAKIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBj
b25zdAogewotICAgIEhhc2hNYXA8aW50LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxpbnQs
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxl
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVu
ZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGl0LT52YWx1ZS50
ZXh0dXJlKCk7CiAgICAgICAgIGlmICh0ZXh0dXJlKQogICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmU7CkBAIC0xNDMsOSArMTQzLDkgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKICAgICBWZWN0
b3I8VGV4dHVyZU1hcHBlclRpbGUqPiBwcmV2aW91c1RpbGVzVG9QYWludDsKIAogICAgIC8vIFdl
IGhhdmUgdG8gZG8gdGhpcyBldmVyeSB0aW1lIHdlIHBhaW50LCBpbiBjYXNlIHRoZSBvcGFjaXR5
IGhhcyBjaGFuZ2VkLgotICAgIEhhc2hNYXA8aW50LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRp
bGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOworICAgIEhhc2hNYXA8dWludDMyX3Qs
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5k
KCk7CiAgICAgRmxvYXRSZWN0IGNvdmVyZWRSZWN0OwotICAgIGZvciAoSGFzaE1hcDxpbnQsIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlJiB0aWxl
ID0gaXQtPnZhbHVlOwogICAgICAgICBpZiAoIXRpbGUudGV4dHVyZSgpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xNzYsMTMgKzE3NiwxMyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAog
CiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQogewotICAgIEhhc2hTZXQ8aW50Pjo6aXRlcmF0b3Ig
dGlsZXNUb1JlbW92ZUVuZCA9IG1fdGlsZXNUb1JlbW92ZS5lbmQoKTsKLSAgICBmb3IgKEhhc2hT
ZXQ8aW50Pjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzVG9SZW1vdmUuYmVnaW4oKTsgaXQgIT0gdGls
ZXNUb1JlbW92ZUVuZDsgKytpdCkKKyAgICBIYXNoU2V0PHVpbnQzMl90Pjo6aXRlcmF0b3IgdGls
ZXNUb1JlbW92ZUVuZCA9IG1fdGlsZXNUb1JlbW92ZS5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8
dWludDMyX3Q+OjppdGVyYXRvciBpdCA9IG1fdGlsZXNUb1JlbW92ZS5iZWdpbigpOyBpdCAhPSB0
aWxlc1RvUmVtb3ZlRW5kOyArK2l0KQogICAgICAgICBtX3RpbGVzLnJlbW92ZSgqaXQpOwogICAg
IG1fdGlsZXNUb1JlbW92ZS5jbGVhcigpOwogCi0gICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIHRpbGVzRW5kID0gbV90aWxlcy5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hNYXA8aW50LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRv
ciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gdGlsZXNFbmQ7ICsraXQpCisgICAgSGFzaE1h
cDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgdGlsZXNF
bmQgPSBtX3RpbGVzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9
IHRpbGVzRW5kOyArK2l0KQogICAgICAgICBpdC0+dmFsdWUuc3dhcEJ1ZmZlcnModGV4dHVyZU1h
cHBlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDQwMzhhMzcuLmNkMTUxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuaApAQCAtNTcsMTAgKzU3LDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUgewogcHVibGljOgotICAgIHZvaWQgY3JlYXRlVGlsZShpbnQsIGZsb2F0KTsKLSAgICB2b2lk
IHJlbW92ZVRpbGUoaW50KTsKKyAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBm
bG9hdCk7CisgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCBy
ZW1vdmVBbGxUaWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVT
dXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUo
dWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk7
IH0KICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIq
KTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dDsKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICB7IH0KICAgICB2b2lkIHBhaW50VGls
ZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlKj4mLCBX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpOwogCi0gICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT4g
bV90aWxlczsKLSAgICBIYXNoU2V0PGludD4gbV90aWxlc1RvUmVtb3ZlOworICAgIEhhc2hNYXA8
dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT4gbV90aWxlczsKKyAgICBIYXNo
U2V0PHVpbnQzMl90PiBtX3RpbGVzVG9SZW1vdmU7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1f
c2l6ZTsKICAgICBmbG9hdCBtX3NjYWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggOGZiMTJiOS4uMTQzOTZmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTYxLDIwICs2
MSwyMCBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmRpc3BhdGNoVXBkYXRlKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogICAgIG1fcmVuZGVyZXItPmFwcGVuZFVw
ZGF0ZShmdW5jdGlvbik7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3Jl
YXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVGlsZUZvckxheWVy
KFdlYkxheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5m
bykKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRl
VGlsZSwgbV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwgdGlsZUlELCB1cGRhdGVJbmZvLnNjYWxl
RmFjdG9yKSk7CiAgICAgdXBkYXRlVGlsZUZvckxheWVyKGxheWVySUQsIHRpbGVJRCwgdGlsZVJl
Y3QsIHVwZGF0ZUluZm8pOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVw
ZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgSW50UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCit2
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcihXZWJMYXll
cklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgU3VyZmFj
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodXBkYXRlSW5mby5hdGxhc0lEKTsK
ICAgICBBU1NFUlQoaXQgIT0gbV9zdXJmYWNlcy5lbmQoKSk7CiAgICAgZGlzcGF0Y2hVcGRhdGUo
YmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUsIG1fcmVuZGVyZXIuZ2V0KCksIGxh
eWVySUQsIHRpbGVJRCwgTGF5ZXJUcmVlUmVuZGVyZXI6OlRpbGVVcGRhdGUodXBkYXRlSW5mby51
cGRhdGVSZWN0LCB0aWxlUmVjdCwgaXQtPnZhbHVlLCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQp
KSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVGlsZUZvckxh
eWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIoV2ViTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxl
SUQpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92
ZVRpbGUsIG1fcmVuZGVyZXIuZ2V0KCksIGxheWVySUQsIHRpbGVJRCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGZiNThiMWEuLjIzMDVm
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAg
LTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNv
dmVyZWRSZWN0KTsKLSAgICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50
IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
Jik7Ci0gICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwotICAg
IHZvaWQgcmVtb3ZlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKTsKKyAgICB2
b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihXZWJMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOworICAgIHZvaWQg
dXBkYXRlVGlsZUZvckxheWVyKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CisgICAgdm9pZCByZW1v
dmVUaWxlRm9yTGF5ZXIoV2ViTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKTsKICAgICB2b2lkIGNy
ZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5k
bGUmKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKTsKICAgICB2b2lk
IGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDQyYzY5YmIuLjM1YzE5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsOSArMzAsOSBAQCBt
ZXNzYWdlcyAtPiBMYXllclRyZWVDb29yZGluYXRvclByb3h5IHsKICNlbmRpZgogICAgIFNldFJv
b3RDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBvc2l0aW5nTGF5
ZXIodWludDMyX3QgaWQpCi0gICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQs
IGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVw
ZGF0ZUluZm8gdXBkYXRlSW5mbykKLSAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5
ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpTdXJm
YWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQotICAgIFJlbW92ZVRpbGVGb3JMYXllcih1aW50MzJf
dCBsYXllcklELCBpbnQgdGlsZUlEKQorICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBs
YXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktp
dDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKKyAgICBVcGRhdGVUaWxlRm9yTGF5ZXIo
dWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVS
ZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCisgICAgUmVtb3ZlVGls
ZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkKICAgICBDcmVhdGVV
cGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUg
aGFuZGxlKQogICAgIFJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQogICAgIENyZWF0ZUlt
YWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCmluZGV4IDcxYzRiY2IuLjljN2M1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpy
ZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBncmFwaGljcwog
ICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwogfQogCi12
b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50
IHRpbGVJRCwgZmxvYXQgc2NhbGUpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxl
KFdlYkxheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBmbG9hdCBzY2FsZSkKIHsKICAg
ICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChsYXllcklEKTsKICAgICBBU1NFUlQo
bGF5ZXIpOwpAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0
ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlELCBmbG9hdCBzY2FsZSkKICAgICBy
ZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShsYXllcik7CiB9CiAKLXZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQor
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVySUQsIHVp
bnQzMl90IHRpbGVJRCkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChs
YXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlE
KQogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5hZGQoYmFja2luZ1N0b3Jl
KTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZShXZWJMYXllcklEIGxh
eWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUmIHVwZGF0ZSkKK3ZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxl
SUQsIGNvbnN0IFRpbGVVcGRhdGUmIHVwZGF0ZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXll
ciA9IGxheWVyQnlJRChsYXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggOTQ2YWM2ZC4uYTAzYzk4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCkBAIC0xMDAsOSArMTAwLDkgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwogI2VuZGlmCiAKLSAgICB2b2lkIGNy
ZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBmbG9hdCBzY2FsZSk7Ci0gICAgdm9pZCByZW1vdmVU
aWxlKFdlYkxheWVySUQsIGludCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGlu
dCwgY29uc3QgVGlsZVVwZGF0ZSYpOworICAgIHZvaWQgY3JlYXRlVGlsZShXZWJMYXllcklELCB1
aW50MzJfdCB0aWxlSUQsIGZsb2F0IHNjYWxlKTsKKyAgICB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5
ZXJJRCwgdWludDMyX3QgdGlsZUlEKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwg
dWludDMyX3QgdGlsZUlELCBjb25zdCBUaWxlVXBkYXRlJik7CiAgICAgdm9pZCBmbHVzaExheWVy
Q2hhbmdlcygpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpOwogICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
MzQ5OTQ4ZS4uNjY4OTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03MjcsMTkgKzcyNywxOSBAQCBQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgSQogICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRl
bnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IDAgOiBTaGFyZWFibGVCaXRtYXA6OlN1
cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYg
dXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZVJlY3QpCit2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1
cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxl
UmVjdCkKIHsKICAgICBpZiAobV9jb29yZGluYXRvcikKICAgICAgICAgbV9jb29yZGluYXRvci0+
Y3JlYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3Qg
U3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQor
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlE
LCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QpCiB7CiAgICAgaWYgKG1fY29vcmRpbmF0b3IpCiAgICAgICAgIG1fY29vcmRpbmF0b3It
PnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKLXZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCit2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpCiB7
CiAgICAgaWYgKG1fY29vcmRpbmF0b3IpCiAgICAgICAgIG1fY29vcmRpbmF0b3ItPnJlbW92ZVRp
bGUoaWQoKSwgdGlsZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggMTUxN2FlNS4uZmQ4MGM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
QEAgLTUzLDkgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIC8vIENvb3JkaW5hdGVkVGlsZUNsaWVu
dAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQsIGNv
bnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBT
dXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3Qg
U3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3Qg
U3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkgPSAwOwog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNv
bnN0ID0gMDsKQEAgLTE1Miw5ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDb2xvciB0
aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
Ly8gQ29vcmRpbmF0ZWRUaWxlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoaW50
IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3Qm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShpbnQgdGlsZUlELCBjb25z
dCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKGludCB0aWxlSUQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpTdXJm
YWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6U3VyZmFjZVVwZGF0
ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVRpbGUodWludDMyX3QgdGlsZUlEKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIGludCYg
YXRsYXNJRCwgSW50UG9pbnQmKSBPVkVSUklERTsKIAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3Io
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDU0OGQ0OWQuLjc5OGQyYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAt
MzcsMTkgKzM3LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorc3RhdGljIGNvbnN0IHVpbnQzMl90IEludmFsaWRDb29yZGluYXRlZFRpbGVJRCA9
IDA7CisKIENvb3JkaW5hdGVkVGlsZTo6Q29vcmRpbmF0ZWRUaWxlKENvb3JkaW5hdGVkVGlsZUNs
aWVudCogY2xpZW50LCBUaWxlZEJhY2tpbmdTdG9yZSogdGlsZWRCYWNraW5nU3RvcmUsIGNvbnN0
IENvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAg
ICwgbV90aWxlZEJhY2tpbmdTdG9yZSh0aWxlZEJhY2tpbmdTdG9yZSkKICAgICAsIG1fY29vcmRp
bmF0ZSh0aWxlQ29vcmRpbmF0ZSkKICAgICAsIG1fcmVjdCh0aWxlZEJhY2tpbmdTdG9yZS0+dGls
ZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlKSkKLSAgICAsIG1fSUQoMCkKKyAgICAs
IG1fSUQoSW52YWxpZENvb3JkaW5hdGVkVGlsZUlEKQogICAgICwgbV9kaXJ0eVJlY3QobV9yZWN0
KQogewogfQogCiBDb29yZGluYXRlZFRpbGU6On5Db29yZGluYXRlZFRpbGUoKQogewotICAgIGlm
IChtX0lEKQorICAgIGlmIChtX0lEICE9IEludmFsaWRDb29yZGluYXRlZFRpbGVJRCkKICAgICAg
ICAgbV9jbGllbnQtPnJlbW92ZVRpbGUobV9JRCk7CiB9CiAKQEAgLTg1LDkgKzg3LDEyIEBAIFZl
Y3RvcjxJbnRSZWN0PiBDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIoKQogICAgIHVw
ZGF0ZUluZm8uc2NhbGVGYWN0b3IgPSBtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxl
KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKIAotICAgIHN0YXRpYyBpbnQgaWQg
PSAwOwotICAgIGlmICghbV9JRCkgewotICAgICAgICBtX0lEID0gKytpZDsKKyAgICBzdGF0aWMg
dWludDMyX3QgaWQgPSAxOworICAgIGlmIChtX0lEID09IEludmFsaWRDb29yZGluYXRlZFRpbGVJ
RCkgeworICAgICAgICBtX0lEID0gaWQrKzsKKyAgICAgICAgLy8gV2UgbWF5IGdldCBhbiBpbnZh
bGlkIElEIGR1ZSB0byB3cmFwLWFyb3VuZCBvbiBvdmVyZmxvdy4KKyAgICAgICAgaWYgKG1fSUQg
PT0gSW52YWxpZENvb3JkaW5hdGVkVGlsZUlEKQorICAgICAgICAgICAgbV9JRCA9IGlkKys7CiAg
ICAgICAgIG1fY2xpZW50LT5jcmVhdGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8sIG1fcmVjdCk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8s
IG1fcmVjdCk7CkBAIC0xMDMsNyArMTA4LDcgQEAgdm9pZCBDb29yZGluYXRlZFRpbGU6OnN3YXBC
YWNrQnVmZmVyVG9Gcm9udCgpCiAKIGJvb2wgQ29vcmRpbmF0ZWRUaWxlOjppc1JlYWR5VG9QYWlu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV9JRDsKKyAgICByZXR1cm4gbV9JRCAhPSBJbnZh
bGlkQ29vcmRpbmF0ZWRUaWxlSUQ7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRUaWxlOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGls
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRUaWxlLmgKaW5kZXggZGIzMTVhZC4uYjExOTE3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRUaWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJp
dmF0ZToKICAgICBDb29yZGluYXRlIG1fY29vcmRpbmF0ZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IG1fcmVjdDsKIAotICAgIGludCBtX0lEOworICAgIHVpbnQzMl90IG1fSUQ7CiAgICAgV2ViQ29y
ZTo6SW50UmVjdCBtX2RpcnR5UmVjdDsKIAogICAgIE93blB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gbV9sb2NhbEJ1ZmZlcjsKQEAgLTc1LDkgKzc1LDkgQEAgcHJpdmF0ZToKIGNsYXNzIENvb3Jk
aW5hdGVkVGlsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRUaWxl
Q2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoaW50IHRpbGVJRCwgY29u
c3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlVGlsZShpbnQgdGlsZUlEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUodWlu
dDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlE
LCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSA9IDA7CiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50
VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6Oklu
dFBvaW50JikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IDE3NmRjZjYuLjE1NWE1ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTYz
OCwxOSArNjM4LDE5IEBAIGJvb2wgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGlu
YXRvcjo6Y3JlYXRlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFN1
cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxl
UmVjdCkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCBs
YXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJ
bmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKIHsKICAgICBtX3Nob3VsZFN5
bmNGcmFtZSA9IHRydWU7CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVD
b29yZGluYXRvclByb3h5OjpDcmVhdGVUaWxlRm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlELCB0aWxl
UmVjdCwgdXBkYXRlSW5mbykpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjp1cGRh
dGVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQordm9p
ZCBMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRlVGlsZShXZWJMYXllcklEIGxheWVySUQsIHVp
bnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0g
dHJ1ZTsKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OlVwZGF0ZVRpbGVGb3JMYXllcihsYXllcklELCB0aWxlSUQsIHRpbGVSZWN0LCB1cGRh
dGVJbmZvKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVRpbGUoV2Vi
TGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkKIHsKICAgICBp
ZiAobV9pc1B1cmdpbmcpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCmluZGV4IGYwNGI1MDguLjRkMjk1MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApA
QCAtNzgsOSArNzgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFj
dG9yRGlkQ2hhbmdlKCkgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCwgY29u
c3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCk7CisgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJm
YWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGlsZShXZWJMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VV
cGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVUaWxlKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3Jl
cygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>