<?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>80899</bug_id>
          
          <creation_ts>2012-03-12 15:17:24 -0700</creation_ts>
          <short_desc>[chromium] Make damage tracker accumulate damage until explicitly cleared</short_desc>
          <delta_ts>2012-04-11 12:14:31 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576600</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-12 15:17:24 -0700</bug_when>
    <thetext>There may be some reasons (to be determined) that this is necessary soon.  Otherwise, it is probably a good idea to do this anyway down the road.

Instead of assuming that every update on damage tracker is guaranteed to be presented to the front buffer, we should accumulate damage rects, and only explicitly reset the damage tracker when we know it has be presented (i.e. where swapBuffers is finally performed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576670</commentid>
    <comment_count>1</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-12 16:09:32 -0700</bug_when>
    <thetext>Looks like aura flashes aren&apos;t due to this swap. So this isn&apos;t on the hot-list any more.

Lets do this though, its a cleaner architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578168</commentid>
    <comment_count>2</comment_count>
      <attachid>131787</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-13 22:28:46 -0700</bug_when>
    <thetext>Created attachment 131787
This should be the right fix, but no unit test yet

Let me know if we need to push this and I&apos;ll write a unit test to land it asap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578171</commentid>
    <comment_count>3</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-13 22:37:19 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Let me know if we need to push this and I&apos;ll write a unit test to land it asap

@piman, wdyt? Aura-blocker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578214</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-03-14 00:37:32 -0700</bug_when>
    <thetext>This in itself is not a blocker. It may hide/workaround some problems, but I don&apos;t feel strongly about this specifically to rush it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585765</commentid>
    <comment_count>5</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-22 15:18:50 -0700</bug_when>
    <thetext>
I&apos;m getting some hints that we should push this for m19, so that threaded animation will work?  If that&apos;s true, here&apos;s the patch (coming in just a moment).

It should be noted that eventually we should explicitly separate the concepts of scissor rect and partial swap rect, but this patch is for anyone&apos;s immediate needs.

For reviewers: to understand my changes on the unit test, note that there is a strong pattern in most the tests:
   1. clearDamageForAllSurfaces() // this is what is new for this patch
   2. Apply the changes that are to be tested for that frame
   3. emulateDrawingOneFrame()
   4. verify the resulting damage rect.

Hopefully that will make it easier to understand what&apos;s going on at a glance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585766</commentid>
    <comment_count>6</comment_count>
      <attachid>133359</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-22 15:19:18 -0700</bug_when>
    <thetext>Created attachment 133359
Patch with updated unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585982</commentid>
    <comment_count>7</comment_count>
      <attachid>133359</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-22 19:08:13 -0700</bug_when>
    <thetext>Comment on attachment 133359
Patch with updated unit tests

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Before this patch, the damage tracker requires that every time the
&gt; +        backbuffer is drawn to, that change must be presented with
&gt; +        swapBuffers or postSubBuffer. This behavior is undesired; there
&gt; +        are reasons we don&apos;t want to present anything to the front buffer,
&gt; +        even though we may draw to the back buffer (for example, readback
&gt; +        for the thumbnailer.)

We call CCLTHI::swapBuffers() during readback for the thumbnailer, and thus will clear the damage rect there.  Is that intended, given this comment?

&gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:242
&gt; +    clearDamageForAllSurfaces(root.get());
&gt;      child-&gt;setUpdateRect(FloatRect(10, 11, 12, 13));
&gt;      emulateDrawingOneFrame(root.get());

Can you just wrap clearDamageForAllSurfaces into emulateDrawingOneFrame and have some emulatePrepareOneFrameWithoutDrawing for the one corner case that you don&apos;t need it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586061</commentid>
    <comment_count>8</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-22 21:10:31 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 133359 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133359&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        Before this patch, the damage tracker requires that every time the
&gt; &gt; +        backbuffer is drawn to, that change must be presented with
&gt; &gt; +        swapBuffers or postSubBuffer. This behavior is undesired; there
&gt; &gt; +        are reasons we don&apos;t want to present anything to the front buffer,
&gt; &gt; +        even though we may draw to the back buffer (for example, readback
&gt; &gt; +        for the thumbnailer.)
&gt; 
&gt; We call CCLTHI::swapBuffers() during readback for the thumbnailer, and thus will clear the damage rect there.  Is that intended, given this comment?

Sure, I can remove that.  or, I could modify this to say &quot;single-threaded readback&quot; and remove swapBuffers from the compositeAndReadback single-threaded path, since it will no longer be necessary after this bug.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:242
&gt; &gt; +    clearDamageForAllSurfaces(root.get());
&gt; &gt;      child-&gt;setUpdateRect(FloatRect(10, 11, 12, 13));
&gt; &gt;      emulateDrawingOneFrame(root.get());
&gt; 
&gt; Can you just wrap clearDamageForAllSurfaces into emulateDrawingOneFrame and have some emulatePrepareOneFrameWithoutDrawing for the one corner case that you don&apos;t need it?

Actually, no, that won&apos;t work.  emulateDrawingOneFrame is what will cause damage, and we need to access that damage and verify it in the tests before we clear it.    I did try making a different wrapper, though, getCurrentDamageAndClearDamage().  However, I found that was (1) more error-prone because we may not need to access all surfaces for the test (and thus forgetting to clear them, and (2) cause some messy logic to clear damage rects at the beginning of every test case.  It turned out to be more uniform and less error-prone to make the clearDamageForAllSurfaces wrapper this way.

Hope that&apos;s OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586073</commentid>
    <comment_count>9</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-22 21:35:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;m getting some hints that we should push this for m19, so that threaded animation will work?  If that&apos;s true, here&apos;s the patch (coming in just a moment).

Spoke with Dana recently, it looks like the reason this might have been needed for m19 is no longer an issue.   Let&apos;s wait until next week after m19 branches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600477</commentid>
    <comment_count>10</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-04-11 12:14:31 -0700</bug_when>
    <thetext>This approach is obsolete - instead, we will take the approach in https://bugs.webkit.org/show_bug.cgi?id=82011 which does the same thing but will be a more intuitive and testable solution.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131787</attachid>
            <date>2012-03-13 22:28:46 -0700</date>
            <delta_ts>2012-03-22 15:19:15 -0700</delta_ts>
            <desc>This should be the right fix, but no unit test yet</desc>
            <filename>bug-80899-20120313222843.patch</filename>
            <type>text/plain</type>
            <size>3900</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNw
cAppbmRleCA2YTA2MmNhY2E3Y2M1ODc1ZjJjOTI1OTk4NTZiNmE1ZWM4ZTUzYzc5Li40ODAwMzE5
ZDc1ZDdkMmU4YTlmM2I5M2E3NTk4OGYxN2I2YmIwOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIENDRGFtYWdlVHJhY2tlcjo6dXBk
YXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZQog
ICAgICAgICBtX2ZvcmNlRnVsbERhbWFnZU5leHRVcGRhdGUgPSBmYWxzZTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBGSVhNRTogY2FuIHdlIG5lZWQgdG8gY2xhbXAgdGhpcyBkYW1hZ2UgdG8g
dGhlIHN1cmZhY2UncyBjb250ZW50IHJlY3Q/IChhZmZlY3RzIHBlcmZvcm1hbmNlLCBidXQgbm90
IGNvcnJlY3RuZXNzKQotICAgICAgICBtX2N1cnJlbnREYW1hZ2VSZWN0ID0gZGFtYWdlRnJvbUFj
dGl2ZUxheWVyczsKKyAgICAgICAgbV9jdXJyZW50RGFtYWdlUmVjdC51bml0ZUlmTm9uWmVybyhk
YW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKTsKICAgICAgICAgbV9jdXJyZW50RGFtYWdlUmVjdC51bml0
ZUlmTm9uWmVybyhkYW1hZ2VGcm9tU3VyZmFjZU1hc2spOwogICAgICAgICBtX2N1cnJlbnREYW1h
Z2VSZWN0LnVuaXRlSWZOb25aZXJvKGRhbWFnZUZyb21MZWZ0b3ZlclJlY3RzKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RhbWFnZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oCmluZGV4IDdhNjI5YzQ3ODEyODFiZTRkZmExYzQ5ZGQx
M2IxMWU0Zjk1NTBmNzYuLjkxNDYxNmUxM2JjNzJmYmE3OTM5MjdhYTg5NDU4M2ZhYjJiNTkwNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGFtYWdlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxDQ0RhbWFnZVRyYWNrZXI+IGNyZWF0ZSgpOwogICAgIH5D
Q0RhbWFnZVRyYWNrZXIoKTsKIAorICAgIHZvaWQgY2xlYXJEYW1hZ2UoKSB7IG1fY3VycmVudERh
bWFnZVJlY3QgPSBGbG9hdFJlY3QoKTsgfQogICAgIHZvaWQgZm9yY2VGdWxsRGFtYWdlTmV4dFVw
ZGF0ZSgpIHsgbV9mb3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlID0gdHJ1ZTsgfQogICAgIHZvaWQg
dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5
ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQsIENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJm
YWNlTWFza0xheWVyKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnREYW1hZ2VSZWN0KCkg
eyByZXR1cm4gbV9jdXJyZW50RGFtYWdlUmVjdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAppbmRleCA1YzdmNTY1ZjdkMTJjMWI2ODU1OTBlZDE2NzczZGEyYzBmZWE4
NjVkLi5iOWM1YzlhZmM0YTRjZTFlZmFhMjRhOGQwYWU0NDQ5MDhkZDMxNGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzk0LDEwICszOTQsMjUgQEAgVGV4
dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVy
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSA6IDA7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6Y2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogbGF5ZXIpCit7
CisgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpCisgICAgICAgIGxheWVyLT5yZW5kZXJT
dXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y2xlYXJEYW1hZ2UoKTsKKworICAgIC8vIFJlY3Vy
c2l2ZWx5IGNsZWFyIGRhbWFnZSBmb3IgYW55IGV4aXN0aW5nIHN1cmZhY2UuCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAg
Y2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhsYXllci0+Y2hpbGRyZW4oKVtpXS5nZXQoKSk7Cit9
CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VS
VChtX2xheWVyUmVuZGVyZXIpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+c3dhcEJ1ZmZlcnMoZW5j
bG9zaW5nSW50UmVjdChtX3Jvb3REYW1hZ2VSZWN0KSk7CisKKyAgICAvLyBOb3cgdGhhdCB3ZSBr
bm93IHdlIGhhdmUgcHJlc2VudGVkIHRvIHRoZSBmcm9udCBidWZmZXIsIHdlIHNob3VsZCByZXNl
dCBkYW1hZ2UgdHJhY2tpbmcuCisgICAgLy8gSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
KGkuZS4gZ2xvYmFsIHJvb3QtbGV2ZWwgc2Npc3NvciBhcHBsaWVzIHRvIGFsbCBzdXJmYWNlcyks
IGl0IGlzCisgICAgLy8gbmVjZXNzYXJ5IHRvIGNsZWFyIGRhbWFnZSBmb3IgYWxsIHN1cmZhY2Vz
IGhlcmUsIG5vdCBqdXN0IHRoZSByb290IHN1cmZhY2UuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxT
dXJmYWNlcyhyb290TGF5ZXIoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZGlk
TG9zZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGRj
MDVkYTgzNGE0NzRmMmEwMzA2ODU1NTg2OGMxNGU4MDMyYWNjNDcuLjQ5MDdiN2E2ZjY5NmY3Yzdh
OTQ3NzFmZjYxNzc0NmFmNmZhNDE2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKQEAgLTEzNiw2ICsxMzYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGFuaW1hdGVQ
YWdlU2NhbGUoZG91YmxlIG1vbm90b25pY1RpbWUpOwogCisgICAgdm9pZCBjbGVhckRhbWFnZUZv
ckFsbFN1cmZhY2VzKENDTGF5ZXJJbXBsKik7CisKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5n
LgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBk
b3VibGUgd2FsbENsb2NrVGltZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133359</attachid>
            <date>2012-03-22 15:19:18 -0700</date>
            <delta_ts>2012-03-22 19:08:13 -0700</delta_ts>
            <desc>Patch with updated unit tests</desc>
            <filename>bug-80899-20120322151917.patch</filename>
            <type>text/plain</type>
            <size>24825</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU5ZDUwODZhYWU5NTQ2
Y2YzZGJkMGUzMjA2OWQ4Yjg3MTI3N2Y2ZS4uOTM5NmNmOWNjMTdiNTViMGRjNjUwNTMxNjgyMjk0
MmUyNzIyYTM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDEyLTAzLTIyICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0g
TWFrZSBkYW1hZ2UgdHJhY2tlciBhY2N1bXVsYXRlIGRhbWFnZSB1bnRpbCBleHBsaWNpdGx5IGNs
ZWFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5p
dCB0ZXN0cyB1cGRhdGVkLCBhbmQgbmV3IG9uZSBhZGRlZCBpbiBDQ0RhbWFnZVRyYWNrZXJUZXN0
LmNwcC4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGRhbWFnZSB0cmFja2VyIHJl
cXVpcmVzIHRoYXQgZXZlcnkgdGltZSB0aGUKKyAgICAgICAgYmFja2J1ZmZlciBpcyBkcmF3biB0
bywgdGhhdCBjaGFuZ2UgbXVzdCBiZSBwcmVzZW50ZWQgd2l0aAorICAgICAgICBzd2FwQnVmZmVy
cyBvciBwb3N0U3ViQnVmZmVyLiBUaGlzIGJlaGF2aW9yIGlzIHVuZGVzaXJlZDsgdGhlcmUKKyAg
ICAgICAgYXJlIHJlYXNvbnMgd2UgZG9uJ3Qgd2FudCB0byBwcmVzZW50IGFueXRoaW5nIHRvIHRo
ZSBmcm9udCBidWZmZXIsCisgICAgICAgIGV2ZW4gdGhvdWdoIHdlIG1heSBkcmF3IHRvIHRoZSBi
YWNrIGJ1ZmZlciAoZm9yIGV4YW1wbGUsIHJlYWRiYWNrCisgICAgICAgIGZvciB0aGUgdGh1bWJu
YWlsZXIuKQorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgcG9zc2libGUgdG8gYWNjdW11
bGF0ZSBkYW1hZ2Ugb3ZlciBtYW55CisgICAgICAgIGZyYW1lcywgc28gdGhhdCB0aGUgcGFydGlh
bCBzd2FwIHJlY3QgaXMgbm90IHdyb25nIHdoZW4gaXQgZmluYWxseQorICAgICAgICBwcmVzZW50
cyB0aGUgbW9zdCByZWNlbnQgYmFjay1idWZmZXIgdG8gdGhlIGZyb250LgorCisgICAgICAgIEl0
IHNob3VsZCBiZSBub3RlZCB0aGF0IGV2ZW50dWFsbHkgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgc2Vw
YXJhdGUKKyAgICAgICAgdGhlIGNvbmNlcHRzIG9mIHNjaXNzb3IgcmVjdCBhbmQgcGFydGlhbCBz
d2FwIHJlY3QsIGJ1dCB0aGlzIHBhdGNoCisgICAgICAgIGlzIGZvciBtb3JlIGltbWVkaWF0ZSBu
ZWVkcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OnVwZGF0ZURh
bWFnZVRyYWNraW5nU3RhdGUpOiBDaGFuZ2VkCisgICAgICAgIGJlaGF2aW9yIHNvIHRoYXQgbV9j
dXJyZW50RGFtYWdlUmVjdCBpcyBub3QgZXhwbGljaXRseSBjbGVhcmVkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OmNsZWFyRGFtYWdlKToKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2xlYXJEYW1hZ2VGb3JBbGxTdXJm
YWNlcyk6IEEgbmV3CisgICAgICAgIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJlY3Vyc2l2ZWx5IGNs
ZWFycyBhbnkgcmVuZGVyIHN1cmZhY2VzIHRoYXQKKyAgICAgICAgZXhpc3QgaW4gdGhlIHRyZWUu
CisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6c3dhcEJ1ZmZlcnMpOiBBbGwgZGFtYWdlIHRyYWNrZXJzCisgICAgICAgIHNob3VsZCBi
ZSBleHBsaWNpdGx5IGNsZWFyZWQgd2hlbiB3ZSBoYXZlIGZpbmFsbHkgcHJlc2VudGVkIHRoZQor
ICAgICAgICBiYWNrLWJ1ZmZlciB0byB0aGUgZnJvbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3RJbXBsKToKKworMjAxMi0wMy0yMiAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdo
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NEYW1hZ2VUcmFja2Vy
IHJvYnVzdCB0byBlbXB0eSBsYXllciBsaXN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4MzEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA2NWUwZjg4ZWM2OGRlMmU0OWJhNmNhM2Q0OTczNzhhMmM3ZDg0OGY3Li5iZTE4YWQ5MzljYTcw
OTA0MGYyNTY1MTIyN2M0MWFkZTAwY2QxNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDIxIEBACiAyMDEyLTAzLTIyICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hy
b21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBkYW1hZ2UgdHJhY2tlciBhY2N1
bXVsYXRlIGRhbWFnZSB1bnRpbCBleHBsaWNpdGx5IGNsZWFyZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBzZXZlcmFsIHRlc3RzIHNvIHRo
YXQgdGhleSBleHBsaWNpdGx5IGNsZWFyIGRhbWFnZSBhcyBwZXIKKyAgICAgICAgdGhlIG5ldyBk
YW1hZ2UgdHJhY2tlciBiZWhhdmlvci4gQ3JlYXRlZCBhIG5ldyB0ZXN0IHRoYXQgdmVyaWZpZXMK
KyAgICAgICAgZGFtYWdlIHRyYWNraW5nIGRvZXMgYWNjdW11bGF0ZSB3aGVuIGl0cyBub3QgZXhw
bGljaXRseSBjbGVhcmVkLgorCisgICAgICAgICogdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyk6Cisg
ICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKwor
MjAxMi0wMy0yMiAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBbY2hyb21pdW1dIE1ha2UgQ0NEYW1hZ2VUcmFja2VyIHJvYnVzdCB0byBlbXB0eSBsYXll
ciBsaXN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODE4MzEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKaW5kZXggNjZkYTRkZTg1NmQy
YzRjMzcyYmRiZGU4YWQwYzRiZTM5ZjZlNjk1ZC4uZjYwMTEwODk0YmRlNTFhMzU0NDQxYjAxN2I0
MWRjNzEzZWI3ZWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBDQ0RhbWFnZVRyYWNrZXI6OnVwZGF0ZURhbWFnZVRyYWNraW5nU3Rh
dGUoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWUKICAgICAgICAgbV9mb3JjZUZ1bGxE
YW1hZ2VOZXh0VXBkYXRlID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6
IGNhbiB3ZSBjbGFtcCB0aGlzIGRhbWFnZSB0byB0aGUgc3VyZmFjZSdzIGNvbnRlbnQgcmVjdD8g
KGFmZmVjdHMgcGVyZm9ybWFuY2UsIGJ1dCBub3QgY29ycmVjdG5lc3MpCi0gICAgICAgIG1fY3Vy
cmVudERhbWFnZVJlY3QgPSBkYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzOworICAgICAgICBtX2N1cnJl
bnREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKGRhbWFnZUZyb21BY3RpdmVMYXllcnMpOwogICAg
ICAgICBtX2N1cnJlbnREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKGRhbWFnZUZyb21TdXJmYWNl
TWFzayk7CiAgICAgICAgIG1fY3VycmVudERhbWFnZVJlY3QudW5pdGVJZk5vblplcm8oZGFtYWdl
RnJvbUxlZnRvdmVyUmVjdHMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgKaW5k
ZXggZjFjZmQ0ZjczNjA2ODQ0NjQxMTRlYTRjZjJiZThmZThkMDc0NWEzNi4uYWRiMTZjYmQ4ZWFl
NTczOGMxZmUyY2JjZTMwYTM0N2M5ZWQwYzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2Vy
LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRGFt
YWdlVHJhY2tlcj4gY3JlYXRlKCk7CiAgICAgfkNDRGFtYWdlVHJhY2tlcigpOwogCisgICAgdm9p
ZCBjbGVhckRhbWFnZSgpIHsgbV9jdXJyZW50RGFtYWdlUmVjdCA9IEZsb2F0UmVjdCgpOyB9CiAg
ICAgdm9pZCBmb3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlKCkgeyBtX2ZvcmNlRnVsbERhbWFnZU5l
eHRVcGRhdGUgPSB0cnVlOyB9CiAgICAgdm9pZCB1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNv
bnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5
ZXJJRCwgYm9vbCB0YXJnZXRTdXJmYWNlUHJvcGVydHlDaGFuZ2VkT25seUZyb21EZXNjZW5kYW50
LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlQ29udGVudFJlY3QsIENDTGF5ZXJJbXBsKiB0
YXJnZXRTdXJmYWNlTWFza0xheWVyKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnREYW1h
Z2VSZWN0KCkgeyByZXR1cm4gbV9jdXJyZW50RGFtYWdlUmVjdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA5YzdjM2VkYzY1Y2UxNjQzN2QyNjU1NjAxZDUz
YmZkMGZlYWJlMTM5Li5lZDhmZDk3NDRhNDNjMTQ2YzYwOTVjYjUwYTUzOTM2MTRlZWIwZDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDIyLDEwICs0MjIs
MjUgQEAgVGV4dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXll
clJlbmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSA6IDA7CiB9CiAKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCog
bGF5ZXIpCit7CisgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpCisgICAgICAgIGxheWVy
LT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y2xlYXJEYW1hZ2UoKTsKKworICAg
IC8vIFJlY3Vyc2l2ZWx5IGNsZWFyIGRhbWFnZSBmb3IgYW55IGV4aXN0aW5nIHN1cmZhY2UuCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkK
KyAgICAgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhsYXllci0+Y2hpbGRyZW4oKVtpXS5n
ZXQoKSk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewog
ICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+c3dhcEJ1
ZmZlcnMoZW5jbG9zaW5nSW50UmVjdChtX3Jvb3REYW1hZ2VSZWN0KSk7CisKKyAgICAvLyBOb3cg
dGhhdCB3ZSBrbm93IHdlIGhhdmUgcHJlc2VudGVkIHRvIHRoZSBmcm9udCBidWZmZXIsIHdlIHNo
b3VsZCByZXNldCBkYW1hZ2UgdHJhY2tpbmcuCisgICAgLy8gSW4gdGhlIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gKGkuZS4gZ2xvYmFsIHJvb3QtbGV2ZWwgc2Npc3NvciBhcHBsaWVzIHRvIGFsbCBz
dXJmYWNlcyksIGl0IGlzCisgICAgLy8gbmVjZXNzYXJ5IHRvIGNsZWFyIGRhbWFnZSBmb3IgYWxs
IHN1cmZhY2VzIGhlcmUsIG5vdCBqdXN0IHRoZSByb290IHN1cmZhY2UuCisgICAgY2xlYXJEYW1h
Z2VGb3JBbGxTdXJmYWNlcyhyb290TGF5ZXIoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6ZGlkTG9zZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CmluZGV4IGUwYzZlNzNhMzM0MjBkZDQ3ZDA5NTQyODYyY2I5YTQ4YTBhZDFjYjAuLjlmZGVmZTBh
NDIzMmJhZWFkZTIwYzU2MWQwYmU2N2RhNGY0OTAwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKQEAgLTE1MSw2ICsxNTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBh
bmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKICAgICB2b2lkIGFuaW1hdGVH
ZXN0dXJlcyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKKyAgICB2b2lkIGNsZWFyRGFtYWdlRm9y
QWxsU3VyZmFjZXMoQ0NMYXllckltcGwqKTsKKwogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3Rpbmcu
CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUsIGRv
dWJsZSB3YWxsQ2xvY2tUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKaW5kZXggMDlkZWI5NjVlYjJjMDYyNWZmZjNl
ODYzZGMzMWJkOGFlNmZkOTAwZi4uNzJmMTY1ZmRiZTk1YjA3MGNkZWMzOTVhNjg5NWIyNDcxMjU0
YjdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRy
YWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdl
VHJhY2tlclRlc3QuY3BwCkBAIC03Niw2ICs3NiwxNiBAQCB2b2lkIGVtdWxhdGVEcmF3aW5nT25l
RnJhbWUoQ0NMYXllckltcGwqIHJvb3QpCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2lu
Z0ZvclN1YnRyZWUoKTsKIH0KIAordm9pZCBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKENDTGF5
ZXJJbXBsKiBsYXllcikKK3sKKyAgICBpZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKKyAgICAg
ICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jbGVhckRhbWFnZSgp
OworCisgICAgLy8gUmVjdXJzaXZlbHkgY2xlYXIgZGFtYWdlIGZvciBhbnkgZXhpc3Rpbmcgc3Vy
ZmFjZS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUo
KTsgKytpKQorICAgICAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKGxheWVyLT5jaGlsZHJl
bigpW2ldLmdldCgpKTsKK30KKwogUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRy
ZWVXaXRoT25lU3VyZmFjZSgpCiB7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgxKTsKQEAgLTIxNyw2ICsyMjcsNyBAQCBURVNUX0YoQ0NEYW1hZ2VU
cmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVXBkYXRlUmVjdHMpCiAKICAgICAvLyBDQVNFIDE6
IFNldHRpbmcgdGhlIHVwZGF0ZSByZWN0IHNob3VsZCBjYXVzZSB0aGUgY29ycmVzcG9uZGluZyBk
YW1hZ2UgdG8gdGhlIHN1cmZhY2UuCiAgICAgLy8KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZh
Y2VzKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxkLT5zZXRVcGRhdGVSZWN0KEZsb2F0UmVjdCgxMCwg
MTEsIDEyLCAxMykpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAK
QEAgLTIyNiw2ICsyMzcsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFt
YWdlRm9yVXBkYXRlUmVjdHMpCiAKICAgICAvLyBDQVNFIDI6IFRoZSBzYW1lIHVwZGF0ZSByZWN0
IHR3aWNlIGluIGEgcm93IHN0aWxsIHByb2R1Y2VzIHRoZSBzYW1lIGRhbWFnZS4KICAgICAvLwor
ICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgY2hpbGQtPnNl
dFVwZGF0ZVJlY3QoRmxvYXRSZWN0KDEwLCAxMSwgMTIsIDEzKSk7CiAgICAgZW11bGF0ZURyYXdp
bmdPbmVGcmFtZShyb290LmdldCgpKTsKICAgICByb290RGFtYWdlUmVjdCA9IHJvb3QtPnJlbmRl
clN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwpAQCAtMjMz
LDYgKzI0NSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JV
cGRhdGVSZWN0cykKIAogICAgIC8vIENBU0UgMzogU2V0dGluZyBhIGRpZmZlcmVudCB1cGRhdGUg
cmVjdCBzaG91bGQgY2F1c2UgZGFtYWdlIG9uIHRoZSBuZXcgdXBkYXRlIHJlZ2lvbiwgYnV0IG5v
IGFkZGl0aW9uYWwgZXhwb3NlZCBvbGQgcmVnaW9uLgogICAgIC8vCisgICAgY2xlYXJEYW1hZ2VG
b3JBbGxTdXJmYWNlcyhyb290LmdldCgpKTsKICAgICBjaGlsZC0+c2V0VXBkYXRlUmVjdChGbG9h
dFJlY3QoMjAsIDI1LCAxLCAyKSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290Lmdl
dCgpKTsKIApAQCAtMjQ4LDYgKzI2MSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2
ZXJpZnlEYW1hZ2VGb3JQcm9wZXJ0eUNoYW5nZXMpCiAKICAgICAvLyBDQVNFIDE6IFRoZSBsYXll
cidzIHByb3BlcnR5IGNoYW5nZWQgZmxhZyB0YWtlcyBwcmlvcml0eSBvdmVyIHVwZGF0ZSByZWN0
LgogICAgIC8vCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290LmdldCgpKTsKICAg
ICBjaGlsZC0+c2V0VXBkYXRlUmVjdChGbG9hdFJlY3QoMTAsIDExLCAxMiwgMTMpKTsKICAgICBj
aGlsZC0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5n
ZXQoKSk7CkBAIC0yNjYsMTAgKzI4MCwxMiBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwg
dmVyaWZ5RGFtYWdlRm9yUHJvcGVydHlDaGFuZ2VzKQogICAgIC8vICAgICAgICAgbm90IGp1c3Qg
dGhlIHVwZGF0ZVJlY3QuCiAKICAgICAvLyBDeWNsZSBvbmUgZnJhbWUgb2Ygbm8gY2hhbmdlLCBq
dXN0IHRvIHNhbml0eSBjaGVjayB0aGF0IHRoZSBuZXh0IHJlY3QgaXMgbm90IGJlY2F1c2Ugb2Yg
dGhlIG9sZCBkYW1hZ2Ugc3RhdGUuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290
LmdldCgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogICAgIEVY
UEVDVF9UUlVFKHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50
RGFtYWdlUmVjdCgpLmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGVuLCB0ZXN0IHRoZSBhY3R1YWwg
bGF5ZXIgbW92ZW1lbnQuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290LmdldCgp
KTsKICAgICBjaGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyMDAsIDIzMCkpOwogICAgIGVt
dWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKQEAgLTI5Myw2ICszMDksNyBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVHJhbnNmb3JtZWRMYXll
cikKICAgICAvLyBOb3RlIGNhcmVmdWxseSwgdGhlIGFuY2hvciBpcyBhY3R1YWxseSBwYXJ0IG9m
IGxheWVyLT5wb3NpdGlvbigpLiBCeSBzZXR0aW5nIGFuY2hvcgogICAgIC8vIHRvICgwLjUsIDAu
NSksIHRoZSBsYXllcidzIHBvc2l0aW9uICgxMDAsIDEwMCkgbm93IHJlZmVycyB0byB0aGUgY2Vu
dGVyIG9mIHRoZQogICAgIC8vIGxheWVyLCBub3QgdGhlIGNvcm5lci4gVGhpcyBtZWFucyB0aGUg
bGF5ZXIgaGFzIGFjdHVhbGx5IGNoYW5nZWQgcG9zaXRpb24uCisgICAgY2xlYXJEYW1hZ2VGb3JB
bGxTdXJmYWNlcyhyb290LmdldCgpKTsKICAgICBjaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLjUsIDAuNSkpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7
CiAKQEAgLTMwMiw2ICszMTksNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5
RGFtYWdlRm9yVHJhbnNmb3JtZWRMYXllcikKIAogICAgIC8vIFdpdGggdGhlIGFuY2hvciBvbiB0
aGUgbGF5ZXIncyBjZW50ZXIsIG5vdyB3ZSBjYW4gdGVzdCB0aGUgcm90YXRpb24gbW9yZQogICAg
IC8vIGludHVpdGl2ZWx5LCBzaW5jZSBpdCBhcHBsaWVzIGFib3V0IHRoZSBsYXllcidzIGFuY2hv
ci4KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxk
LT5zZXRUcmFuc2Zvcm0ocm90YXRpb24pOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9v
dC5nZXQoKSk7CiAKQEAgLTMyMCw2ICszMzgsOSBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdMYXllcikKICAgICBPd25QdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsK
ICAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAor
ICAgIC8vIENBU0UgMTogQWRkaW5nIGEgbmV3IGxheWVyIHNob3VsZCBjYXVzZSB0aGUgYXBwcm9w
cmlhdGUgZGFtYWdlLgorICAgIC8vCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290
LmdldCgpKTsKICAgICB7CiAgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgzKTsKICAgICAgICAgY2hpbGQyLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDQwMCwgMzgwKSk7CkBAIC0zMjgsOSArMzQ5LDYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tl
clRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJlbW92aW5nTGF5ZXIpCiAgICAgICAgIGNo
aWxkMi0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgICAgICByb290LT5hZGRDaGlsZChjaGls
ZDIucmVsZWFzZSgpKTsKICAgICB9Ci0KLSAgICAvLyBDQVNFIDE6IEFkZGluZyBhIG5ldyBsYXll
ciBzaG91bGQgY2F1c2UgdGhlIGFwcHJvcHJpYXRlIGRhbWFnZS4KLSAgICAvLwogICAgIGVtdWxh
dGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgLSBh
bGwgMyBsYXllcnMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIHJlbmRlciBzdXJmYWNlOyByZW5kZXIg
c3VyZmFjZXMgYXJlIHRlc3RlZCBlbHNld2hlcmUuCkBAIC0zNDMsMTAgKzM2MSwxMiBAQCBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdM
YXllcikKICAgICAvLyAgICAgICAgIGxhc3QgdXBkYXRlIHJlY3QuCiAKICAgICAvLyBBZHZhbmNl
IG9uZSBmcmFtZSB3aXRob3V0IGRhbWFnZSBzbyB0aGF0IHdlIGtub3cgdGhlIGRhbWFnZSByZWN0
IGlzIG5vdCBsZWZ0b3ZlciBmcm9tIHRoZSBwcmV2aW91cyBjYXNlLgorICAgIGNsZWFyRGFtYWdl
Rm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShy
b290LmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShyb290LT5yZW5kZXJTdXJmYWNlKCktPmRhbWFn
ZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKS5pc0VtcHR5KCkpOwogCiAgICAgLy8gVGhl
biwgdGVzdCByZW1vdmluZyBjaGlsZDEuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhy
b290LmdldCgpKTsKICAgICBjaGlsZDEtPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICBlbXVsYXRl
RHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogICAgIHJvb3REYW1hZ2VSZWN0ID0gcm9vdC0+
cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBA
IC0zNTgsNiArMzc4LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFn
ZUZvck11bHRpcGxlTGF5ZXJzKQogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwogICAgIENDTGF5ZXJJbXBsKiBjaGls
ZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCisgICAgLy8gSW4gdGhpcyB0ZXN0IHdl
IGRvbid0IHdhbnQgdGhlIGFib3ZlIHRyZWUgbWFuaXB1bGF0aW9uIHRvIGJlIGNvbnNpZGVyZWQg
cGFydCBvZiB0aGUgc2FtZSBmcmFtZS4KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJv
b3QuZ2V0KCkpOwogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDIgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDMpOwogICAgICAgICBjaGlsZDItPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoNDAwLCAzODApKTsKQEAgLTM2NywxMyArMzg5LDEyIEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNdWx0aXBsZUxheWVycykKICAgICAgICAgcm9vdC0+
YWRkQ2hpbGQoY2hpbGQyLnJlbGVhc2UoKSk7CiAgICAgfQogICAgIENDTGF5ZXJJbXBsKiBjaGls
ZDIgPSByb290LT5jaGlsZHJlbigpWzFdLmdldCgpOwotCi0gICAgLy8gSW4gdGhpcyB0ZXN0IHdl
IGRvbid0IHdhbnQgdGhlIGFib3ZlIHRyZWUgbWFuaXB1bGF0aW9uIHRvIGJlIGNvbnNpZGVyZWQg
cGFydCBvZiB0aGUgc2FtZSBmcmFtZS4KICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3Qu
Z2V0KCkpOwogCiAgICAgLy8gRGFtYWdpbmcgdHdvIGxheWVycyBzaW11bHRhbmVvdXNseSBzaG91
bGQgY2F1c2UgY29tYmluZWQgZGFtYWdlLgogICAgIC8vIC0gY2hpbGQxIHVwZGF0ZSByZWN0IGlu
IHN1cmZhY2Ugc3BhY2U6IEZsb2F0UmVjdCgxMDAsIDEwMCwgMSwgMik7CiAgICAgLy8gLSBjaGls
ZDIgdXBkYXRlIHJlY3QgaW4gc3VyZmFjZSBzcGFjZTogRmxvYXRSZWN0KDQwMCwgMzgwLCAzLCA0
KTsKKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxk
MS0+c2V0VXBkYXRlUmVjdChGbG9hdFJlY3QoMCwgMCwgMSwgMikpOwogICAgIGNoaWxkMi0+c2V0
VXBkYXRlUmVjdChGbG9hdFJlY3QoMCwgMCwgMywgNCkpOwogICAgIGVtdWxhdGVEcmF3aW5nT25l
RnJhbWUocm9vdC5nZXQoKSk7CkBAIC0zOTIsNiArNDEzLDcgQEAgVEVTVF9GKENDRGFtYWdlVHJh
Y2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck5lc3RlZFN1cmZhY2VzKQogCiAgICAgLy8gQ0FTRSAx
OiBEYW1hZ2UgdG8gYSBkZXNjZW5kYW50IHN1cmZhY2Ugc2hvdWxkIHByb3BhZ2F0ZSBwcm9wZXJs
eSB0byBhbmNlc3RvciBzdXJmYWNlLgogICAgIC8vCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJm
YWNlcyhyb290LmdldCgpKTsKICAgICBncmFuZENoaWxkMS0+c2V0T3BhY2l0eSgwLjUpOwogICAg
IGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgY2hpbGREYW1hZ2VSZWN0
ID0gY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFn
ZVJlY3QoKTsKQEAgLTQwMiw2ICs0MjQsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwg
dmVyaWZ5RGFtYWdlRm9yTmVzdGVkU3VyZmFjZXMpCiAgICAgLy8gQ0FTRSAyOiBTYW1lIGFzIHBy
ZXZpb3VzIGNhc2UsIGJ1dCB3aXRoIGFkZGl0aW9uYWwgZGFtYWdlIGVsc2V3aGVyZSB0aGF0IHNo
b3VsZCBiZSBwcm9wZXJseSB1bmlvbmVkLgogICAgIC8vIC0gY2hpbGQxIHN1cmZhY2UgZGFtYWdl
IGluIHJvb3Qgc3VyZmFjZSBzcGFjZTogRmxvYXRSZWN0KDMwMCwgMzAwLCA2LCA4KTsKICAgICAv
LyAtIGNoaWxkMiBkYW1hZ2UgaW4gcm9vdCBzdXJmYWNlIHNwYWNlOiBGbG9hdFJlY3QoMTEsIDEx
LCAxOCwgMTgpOworICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAg
ICAgZ3JhbmRDaGlsZDEtPnNldE9wYWNpdHkoMC43KTsKICAgICBjaGlsZDItPnNldE9wYWNpdHko
MC43KTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwpAQCAtNDI2LDYg
KzQ0OSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JTdXJm
YWNlQ2hhbmdlRnJvbURlc2NlbmRhbnRMYXllcikKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VS
ZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIAorICAgIGNsZWFyRGFtYWdlRm9y
QWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgZ3JhbmRDaGlsZDEtPnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQoMTk1LCAyMDUpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0
KCkpOwogICAgIGNoaWxkRGFtYWdlUmVjdCA9IGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1h
Z2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBAIC00NTcsNiArNDgxLDcgQEAgVEVT
VF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclN1cmZhY2VDaGFuZ2VGcm9t
QW5jZXN0b3JMYXllcikKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAgIEZsb2F0
UmVjdCByb290RGFtYWdlUmVjdDsKIAorICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9v
dC5nZXQoKSk7CiAgICAgY2hpbGQxLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDUwLCA1MCkpOwog
ICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgY2hpbGREYW1hZ2VS
ZWN0ID0gY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERh
bWFnZVJlY3QoKTsKQEAgLTQ4MCw2ICs1MDUsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdSZW5kZXJTdXJmYWNlcykKIAogICAg
IC8vIENBU0UgMTogSWYgYSBkZXNjZW5kYW50IHN1cmZhY2UgZGlzYXBwZWFycywgaXRzIGVudGly
ZSBvbGQgYXJlYSBiZWNvbWVzIGV4cG9zZWQuCiAgICAgLy8KKyAgICBjbGVhckRhbWFnZUZvckFs
bFN1cmZhY2VzKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxkMS0+c2V0T3BhY2l0eSgxKTsKICAgICBl
bXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCkBAIC00OTMsMTEgKzUxOSwxMyBA
QCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVt
b3ZpbmdSZW5kZXJTdXJmYWNlcykKICAgICAvLyBDQVNFIDI6IElmIGEgZGVzY2VuZGFudCBzdXJm
YWNlIGFwcGVhcnMsIGl0cyBlbnRpcmUgb2xkIGFyZWEgYmVjb21lcyBleHBvc2VkLgogCiAgICAg
Ly8gQ3ljbGUgb25lIGZyYW1lIG9mIG5vIGNoYW5nZSwganVzdCB0byBzYW5pdHkgY2hlY2sgdGhh
dCB0aGUgbmV4dCByZWN0IGlzIG5vdCBiZWNhdXNlIG9mIHRoZSBvbGQgZGFtYWdlIHN0YXRlLgor
ICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgZW11bGF0ZURy
YXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKICAgICByb290RGFtYWdlUmVjdCA9IHJvb3QtPnJl
bmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwogICAg
IEVYUEVDVF9UUlVFKHJvb3REYW1hZ2VSZWN0LmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGVuIGNo
YW5nZSB0aGUgdHJlZSBzbyB0aGF0IHRoZSByZW5kZXIgc3VyZmFjZSBpcyBhZGRlZCBiYWNrLgor
ICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgY2hpbGQxLT5z
ZXRPcGFjaXR5KDAuNSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsK
IApAQCAtNTIxLDYgKzU0OSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlO
b0RhbWFnZVdoZW5Ob3RoaW5nQ2hhbmdlZCkKIAogICAgIC8vIENBU0UgMTogSWYgbm90aGluZyBj
aGFuZ2VzLCB0aGUgZGFtYWdlIHJlY3Qgc2hvdWxkIGJlIGVtcHR5LgogICAgIC8vCisgICAgY2xl
YXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290LmdldCgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09u
ZUZyYW1lKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxkRGFtYWdlUmVjdCA9IGNoaWxkMS0+cmVuZGVy
U3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAgICAgcm9v
dERhbWFnZVJlY3QgPSByb290LT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3Vy
cmVudERhbWFnZVJlY3QoKTsKQEAgLTUyOSw2ICs1NTgsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFj
a2VyVGVzdCwgdmVyaWZ5Tm9EYW1hZ2VXaGVuTm90aGluZ0NoYW5nZWQpCiAKICAgICAvLyBDQVNF
IDI6IElmIG5vdGhpbmcgY2hhbmdlcyB0d2ljZSBpbiBhIHJvdywgdGhlIGRhbWFnZSByZWN0IHNo
b3VsZCBzdGlsbCBiZSBlbXB0eS4KICAgICAvLworICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFj
ZXMocm9vdC5nZXQoKSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsK
ICAgICBjaGlsZERhbWFnZVJlY3QgPSBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJh
Y2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwogICAgIHJvb3REYW1hZ2VSZWN0ID0gcm9vdC0+
cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBA
IC01NDUsNiArNTc1LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeU5vRGFt
YWdlRm9yVXBkYXRlUmVjdFRoYXREb2VzTm90RHJhd0NvbnRlbnQpCiAKICAgICAvLyBJbiBvdXIg
c3BlY2lmaWMgdHJlZSwgdGhlIHVwZGF0ZSByZWN0IG9mIGNoaWxkMSBzaG91bGQgbm90IGNhdXNl
IGFueSBkYW1hZ2UgdG8gYW55CiAgICAgLy8gc3VyZmFjZSBiZWNhdXNlIGl0IGRvZXMgbm90IGFj
dHVhbGx5IGRyYXcgY29udGVudC4KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3Qu
Z2V0KCkpOwogICAgIGNoaWxkMS0+c2V0VXBkYXRlUmVjdChGbG9hdFJlY3QoMCwgMCwgMSwgMikp
OwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgY2hpbGREYW1h
Z2VSZWN0ID0gY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVu
dERhbWFnZVJlY3QoKTsKQEAgLTU2Niw2ICs1OTcsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2Vy
VGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKICAgICAvLyBGb3IgdGhpcyB0ZXN0IGNhc2Us
IHdlIG1vZGlmeSBncmFuZENoaWxkMiwgYW5kIGFkZCBncmFuZENoaWxkMyB0byBleHRlbmQgdGhl
IGJvdW5kcwogICAgIC8vIG9mIGNoaWxkMSdzIHN1cmZhY2UuIFRoaXMgd2F5LCB3ZSBjYW4gdGVz
dCByZWZsZWN0aW9uIGNoYW5nZXMgd2l0aG91dCBjaGFuZ2luZwogICAgIC8vIGNvbnRlbnRCb3Vu
ZHMgb2YgdGhlIHN1cmZhY2UuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290Lmdl
dCgpKTsKICAgICBncmFuZENoaWxkMi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxODAsIDE4MCkp
OwogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMyA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoNik7CkBAIC01ODAsNiArNjEyLDcgQEAgVEVTVF9GKENDRGFtYWdlVHJh
Y2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2EpCiAKICAgICAvLyBDQVNFIDE6IGFkZGlu
ZyBhIHJlZmxlY3Rpb24gYWJvdXQgdGhlIGxlZnQgZWRnZSBvZiBncmFuZENoaWxkMS4KICAgICAv
LworICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgewogICAg
ICAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoNyk7CiAgICAgICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxv
YXRQb2ludDo6emVybygpKTsKQEAgLTYwMyw2ICs2MzYsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFj
a2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKIAogICAgIC8vIENBU0UgMjogbW92aW5n
IHRoZSBkZXNjZW5kYW50IHN1cmZhY2Ugc2hvdWxkIGNhdXNlIGJvdGggdGhlIG9yaWdpbmFsIGFu
ZCByZWZsZWN0ZWQKICAgICAvLyAgICAgICAgIGFyZWFzIHRvIGJlIGRhbWFnZWQgb24gdGhlIHRh
cmdldC4KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3QuZ2V0KCkpOwogICAgIElu
dFJlY3Qgb2xkQ29udGVudFJlY3QgPSBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJl
Y3QoKTsKICAgICBncmFuZENoaWxkMS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxOTUuMCwgMjA1
LjApKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwpAQCAtNjIyLDYg
KzY1Niw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBs
aWNhKQogCiAgICAgLy8gQ0FTRSAzOiByZW1vdmluZyB0aGUgcmVmbGVjdGlvbiBzaG91bGQgY2F1
c2UgdGhlIGVudGlyZSByZWdpb24gaW5jbHVkaW5nIHJlZmxlY3Rpb24KICAgICAvLyAgICAgICAg
IHRvIGRhbWFnZSB0aGUgdGFyZ2V0IHN1cmZhY2UuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJm
YWNlcyhyb290LmdldCgpKTsKICAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKG51bGxw
dHIpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgQVNTRVJU
X0VRKG9sZENvbnRlbnRSZWN0LndpZHRoKCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5jb250
ZW50UmVjdCgpLndpZHRoKCkpOwpAQCAtNjQzLDYgKzY3OCw4IEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogICAgIC8vIEluIHRoZSBjdXJyZW50IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBkYW1hZ2UgdHJhY2tlciwgY2hhbmdlcyB0byBtYXNrIGxheWVy
cyBzaG91bGQKICAgICAvLyBkYW1hZ2UgdGhlIGVudGlyZSBjb3JyZXNwb25kaW5nIHN1cmZhY2Uu
CiAKKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3QuZ2V0KCkpOworCiAgICAgLy8g
U2V0IHVwIHRoZSBtYXNrIGxheWVyLgogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBtYXNrTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwpAQCAtNjcwLDYgKzcwNyw3IEBA
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogCiAgICAg
Ly8gQ0FTRSAxOiB0aGUgdXBkYXRlUmVjdCBvbiBhIG1hc2sgbGF5ZXIgc2hvdWxkIGRhbWFnZSB0
aGUgZW50aXJlIHRhcmdldCBzdXJmYWNlLgogICAgIC8vCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxT
dXJmYWNlcyhyb290LmdldCgpKTsKICAgICBtYXNrTGF5ZXItPnNldFVwZGF0ZVJlY3QoRmxvYXRS
ZWN0KDEsIDIsIDMsIDQpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkp
OwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3QgPSBjaGlsZC0+cmVuZGVyU3VyZmFjZSgp
LT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBAIC02NzksMTEgKzcxNywx
MyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTWFzaykKICAg
ICAvLwogCiAgICAgLy8gQWR2YW5jZSBvbmUgZnJhbWUgd2l0aG91dCBkYW1hZ2Ugc28gdGhhdCB3
ZSBrbm93IHRoZSBkYW1hZ2UgcmVjdCBpcyBub3QgbGVmdG92ZXIgZnJvbSB0aGUgcHJldmlvdXMg
Y2FzZS4KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3QuZ2V0KCkpOwogICAgIGVt
dWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgY2hpbGREYW1hZ2VSZWN0ID0g
Y2hpbGQtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVj
dCgpOwogICAgIEVYUEVDVF9UUlVFKGNoaWxkRGFtYWdlUmVjdC5pc0VtcHR5KCkpOwogCiAgICAg
Ly8gVGhlbiB0ZXN0IHRoZSBwcm9wZXJ0eSBjaGFuZ2UuCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxT
dXJmYWNlcyhyb290LmdldCgpKTsKICAgICBtYXNrTGF5ZXItPnNldE9wYWNpdHkoMC41KTsKICAg
ICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxkRGFtYWdlUmVj
dCA9IGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFn
ZVJlY3QoKTsKQEAgLTY5MywxMSArNzMzLDEzIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0
LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogICAgIC8vCiAKICAgICAvLyBBZHZhbmNlIG9uZSBmcmFt
ZSB3aXRob3V0IGRhbWFnZSBzbyB0aGF0IHdlIGtub3cgdGhlIGRhbWFnZSByZWN0IGlzIG5vdCBs
ZWZ0b3ZlciBmcm9tIHRoZSBwcmV2aW91cyBjYXNlLgorICAgIGNsZWFyRGFtYWdlRm9yQWxsU3Vy
ZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgp
KTsKICAgICBjaGlsZERhbWFnZVJlY3QgPSBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VU
cmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAgICAgRVhQRUNUX1RSVUUoY2hpbGREYW1h
Z2VSZWN0LmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGVuIHRlc3QgbWFzayByZW1vdmFsLgorICAg
IGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgY2hpbGQtPnNldE1h
c2tMYXllcihudWxscHRyKTsKICAgICBBU1NFUlRfVFJVRShjaGlsZC0+bGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoKSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKQEAgLTcx
OCw2ICs3NjAsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9y
UmVwbGljYU1hc2spCiAgICAgLy8gQ2hhbmdlcyB0byBhIHJlcGxpY2EncyBtYXNrIHNob3VsZCBu
b3QgZGFtYWdlIHRoZSBvcmlnaW5hbCBzdXJmYWNlLCBiZWNhdXNlIGl0IGlzCiAgICAgLy8gbm90
IG1hc2tlZC4gQnV0IGl0IGRvZXMgZGFtYWdlIHRoZSBhbmNlc3RvciB0YXJnZXQgc3VyZmFjZS4K
IAorICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CisKICAgICAvLyBD
cmVhdGUgYSByZWZsZWN0aW9uIGFib3V0IHRoZSBsZWZ0IGVkZ2Ugb2YgZ3JhbmRDaGlsZDEuCiAg
ICAgewogICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxUmVwbGljYSA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoNik7CkBAIC03NDYsNiArNzkwLDcgQEAgVEVTVF9GKENDRGFtYWdl
VHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2FNYXNrKQogICAgIEFTU0VSVF9UUlVF
KGdyYW5kQ2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwogCiAgICAgLy8gQ0FTRSAxOiBhIHByb3Bl
cnR5IGNoYW5nZSBvbiB0aGUgbWFzayBzaG91bGQgZGFtYWdlIG9ubHkgdGhlIHJlZmxlY3RlZCBy
ZWdpb24gb24gdGhlIHRhcmdldCBzdXJmYWNlLgorICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFj
ZXMocm9vdC5nZXQoKSk7CiAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0T3BhY2l0eSgwLjYpOwog
ICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKQEAgLTc1Nyw2ICs4MDIs
NyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYU1h
c2spCiAKICAgICAvLyBDQVNFIDI6IHJlbW92aW5nIHRoZSByZXBsaWNhIG1hc2sgZGFtYWdlcyBv
bmx5IHRoZSByZWZsZWN0ZWQgcmVnaW9uIG9uIHRoZSB0YXJnZXQgc3VyZmFjZS4KICAgICAvLwor
ICAgIGNsZWFyRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7CiAgICAgZ3JhbmRDaGls
ZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIobnVsbHB0cik7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVG
cmFtZShyb290LmdldCgpKTsKIApAQCAtNzc1LDYgKzgyMSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VXaGVuRm9yY2VkRnVsbERhbWFnZSkKICAgICAvLyBDYXNl
IDE6IFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgdHJhY2tlciBpcyBmb3JjZWQgdG8g
aGF2ZSBmdWxsIGRhbWFnZSwgdGhhdAogICAgIC8vICAgICAgICAgaXQgdGFrZXMgcHJpb3JpdHkg
b3ZlciBhbnkgb3RoZXIgcGFydGlhbCBkYW1hZ2UuCiAgICAgLy8KKyAgICBjbGVhckRhbWFnZUZv
ckFsbFN1cmZhY2VzKHJvb3QuZ2V0KCkpOwogICAgIGNoaWxkLT5zZXRVcGRhdGVSZWN0KEZsb2F0
UmVjdCgxMCwgMTEsIDEyLCAxMykpOwogICAgIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdl
VHJhY2tlcigpLT5mb3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlKCk7CiAgICAgZW11bGF0ZURyYXdp
bmdPbmVGcmFtZShyb290LmdldCgpKTsKQEAgLTc4NCw2ICs4MzEsNyBAQCBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlV2hlbkZvcmNlZEZ1bGxEYW1hZ2UpCiAgICAgLy8g
Q2FzZSAyOiBBbiBhZGRpdGlvbmFsIHNhbml0eSBjaGVjayB0aGF0IGZvcmNpbmcgZnVsbCBkYW1h
Z2Ugd29ya3MgZXZlbiB3aGVuIG5vdGhpbmcKICAgICAvLyAgICAgICAgIG9uIHRoZSBsYXllciB0
cmVlIGNoYW5nZWQuCiAgICAgLy8KKyAgICBjbGVhckRhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3Qu
Z2V0KCkpOwogICAgIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5mb3Jj
ZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlKCk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290
LmdldCgpKTsKICAgICByb290RGFtYWdlUmVjdCA9IHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+ZGFt
YWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwpAQCAtODA3LDQgKzg1NSwyNiBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yRW1wdHlMYXllckxpc3Qp
CiAgICAgRVhQRUNUX1RSVUUoZGFtYWdlUmVjdC5pc0VtcHR5KCkpOwogfQogCitURVNUX0YoQ0NE
YW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlQWNjdW11bGF0ZXNVbnRpbFJlc2V0KQorewor
ICAgIC8vIElmIGRhbWFnZSBpcyBub3QgY2xlYXJlZCwgaXQgc2hvdWxkIGFjY3VtdWxhdGUuCisK
KyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigp
WzBdLmdldCgpOworCisgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290LmdldCgpKTsK
KyAgICBjaGlsZC0+c2V0VXBkYXRlUmVjdChGbG9hdFJlY3QoMTAsIDExLCAxLCAyKSk7CisgICAg
ZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKKworICAgIC8vIFNhbml0eSBjaGVj
ayBkYW1hZ2UgYWZ0ZXIgdGhlIGZpcnN0IGZyYW1lOyB0aGlzIGlzbnQgdGhlIGFjdHVhbCB0ZXN0
IHlldC4KKyAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3QgPSByb290LT5yZW5kZXJTdXJmYWNl
KCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKKyAgICBFWFBFQ1RfRkxP
QVRfUkVDVF9FUShGbG9hdFJlY3QoMTEwLCAxMTEsIDEsIDIpLCByb290RGFtYWdlUmVjdCk7CisK
KyAgICAvLyBOZXcgZGFtYWdlLCB3aXRob3V0IGhhdmluZyBjbGVhcmVkIHRoZSBwcmV2aW91cyBk
YW1hZ2UsIHNob3VsZCBiZSB1bmlvbmVkIHRvIHRoZSBwcmV2aW91cyBvbmUuCisgICAgY2hpbGQt
PnNldFVwZGF0ZVJlY3QoRmxvYXRSZWN0KDIwLCAyNSwgMSwgMikpOworICAgIGVtdWxhdGVEcmF3
aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CisgICAgcm9vdERhbWFnZVJlY3QgPSByb290LT5yZW5k
ZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKKyAgICBF
WFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMTEwLCAxMTEsIDExLCAxNiksIHJvb3REYW1h
Z2VSZWN0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>
<flag name="review"
          id="137323"
          type_id="1"
          status="-"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>