<?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>83972</bug_id>
          
          <creation_ts>2012-04-13 21:19:21 -0700</creation_ts>
          <short_desc>[Chromium] Add TextureUploader which allows us to use persistent GC3D state for texture uploads.</short_desc>
          <delta_ts>2012-04-17 15:42:33 -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>WebKit Misc.</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>81004</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602620</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-13 21:19:21 -0700</bug_when>
    <thetext>This is an initial patch to start cleaning up how texture uploads are handled by CCTextureUpdater. It doesn&apos;t change the interaction with LayerTextureUpdater. It just creates a TextureUploader class that is similar to the current TextureCopier class and allows us to add persistent state to the upload machinery so that we can land: https://bugs.webkit.org/show_bug.cgi?id=81004

The plan is to follow up with patches that moves a lot of the upload logic from the LayerTextureUpdater and LayerTexureSubImage to this new TextureUploader class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602621</commentid>
    <comment_count>1</comment_count>
      <attachid>137197</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-13 21:33:22 -0700</bug_when>
    <thetext>Created attachment 137197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602627</commentid>
    <comment_count>2</comment_count>
      <attachid>137197</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 22:45:01 -0700</bug_when>
    <thetext>Comment on attachment 137197
Patch

Attachment 137197 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12405225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602733</commentid>
    <comment_count>3</comment_count>
      <attachid>137229</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-14 20:27:58 -0700</bug_when>
    <thetext>Created attachment 137229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603348</commentid>
    <comment_count>4</comment_count>
      <attachid>137229</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 12:42:55 -0700</bug_when>
    <thetext>Comment on attachment 137229
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TextureUploader.h:40
&gt; +class AcceleratedTextureUploader : public TextureUploader {

What would a non-accelerated TextureUploader be, out of curiosity?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603419</commentid>
    <comment_count>5</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-16 14:03:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 137229 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137229&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TextureUploader.h:40
&gt; &gt; +class AcceleratedTextureUploader : public TextureUploader {
&gt; 
&gt; What would a non-accelerated TextureUploader be, out of curiosity?

Heh, hard to say :) I think this will become SubImageTextureUploader as we move the LayerTexureSubImage logic into the uploader class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604414</commentid>
    <comment_count>6</comment_count>
      <attachid>137229</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 15:42:28 -0700</bug_when>
    <thetext>Comment on attachment 137229
Patch

Clearing flags on attachment: 137229

Committed r114450: &lt;http://trac.webkit.org/changeset/114450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604415</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 15:42:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137197</attachid>
            <date>2012-04-13 21:33:22 -0700</date>
            <delta_ts>2012-04-14 20:27:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83972-20120413213321.patch</filename>
            <type>text/plain</type>
            <size>15352</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I5ZmJhMzU4NDZhZTY5
NWI1M2UzZTU3MjNkMDM5YmYzZTc3MGY4OC4uZGYwNGY4N2M3Y2ZjNmRlMGU4YzkxMWIzNjg5OTgx
NjI1OGFiNzgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTEzICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
ZGQgVGV4dHVyZVVwbG9hZGVyIHdoaWNoIGFsbG93cyB1cyB0byB1c2UgcGVyc2lzdGVudCBHQzNE
IHN0YXRlIGZvciB0ZXh0dXJlIHVwbG9hZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBUZXh0dXJlVXBsb2FkZXIgY2xhc3MgdGhhdCBhbGxvd3Mg
dXMgdG8gYWRkIHBlcnNpc3RlbnQgR0MzRCBzdGF0ZSB0byB0aGUgdXBsb2FkIG1hY2hpbmVyeS4K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVVwbG9h
ZGVyKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlcjo6VGV4dHVyZVVw
bG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlcjo6flRleHR1cmVVcGxv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZVVwbG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgor
CiAyMDEyLTA0LTEzICBSb2IgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENocm9taXVtOiBTaG91bGQgZW5hYmxlIC13ZWJraXQtaW1hZ2Utc2V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggZTAwZWVlZjg2M2RkYTkzNTE4ZTE4MWJmZmE1NDdkNjliZmMxMjJiMS4uNTcwNDgwNWU4
ZmRkNTQwNmQ4MzYwMmQ0YmRlOTk4MmRkNzgyYmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU3
MSw2ICszNTcxLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFuc3BhcmVuY3lXaW4uY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGU4ZjZhNzRkMjdhMDJm
YzQyMDg0NjhlMGZlMmY1YWNmYWViNGQ2NWQuLjM5OWZlYmY3OGFjNzdiZThkMjRmYmU4YjMyZDRm
ZTBiYTE1NmJjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MTQyOCw2ICsxNDI4LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVT
aGFyZWRPYmplY3RzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4
dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5n
ZXQoKSk7CisgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSht
X2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVh
dGUobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJl
VXNhZ2VIaW50KQpAQCAtMTc1NCw2ICsxNzU1LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZl
cklkKQogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1l
YnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogICAgIG1fdGV4dHVyZUNvcGllci5j
bGVhcigpOworICAgIG1fdGV4dHVyZVVwbG9hZGVyLmNsZWFyKCk7CiAKICAgICByZWxlYXNlUmVu
ZGVyU3VyZmFjZVRleHR1cmVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CmluZGV4IGEwNWY5ZmQzMDY1YzUxNzhmNjQ2YTBkZWYxMDdjZjc3ZjViM2VhMWUuLmUyOTIzODY2
NzNlZjY5YTVkMWJkMzc4Y2YwMzBlZGUwMGZkNjRkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCisjaW5j
bHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiY2MvQ0NE
cmF3UXVhZC5oIgpAQCAtMTQ3LDYgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIFRleHR1cmVNYW5h
Z2VyKiByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQogICAgIFRleHR1cmVDb3BpZXIqIHRleHR1
cmVDb3BpZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KKyAgICBU
ZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZVVwbG9hZGVyLmdldCgpOyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRl
eHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yLmdldCgpOyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7
IH0KIApAQCAtMjY0LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwogICAgIE93blB0cjxBY2NlbGVy
YXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKKyAgICBPd25QdHI8VGV4dHVyZVVw
bG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKICAgICBPd25QdHI8VHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
VXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZVVwbG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmI0ZTAzM2I4ZTM1NGIxNmU4NzMwN2Yx
NWNjYjM4ZDA0OGNlNTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGV4dHVy
ZVVwbG9hZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVyZVVwbG9hZGVyOjpU
ZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAg
ICA6IG1fY29udGV4dChjb250ZXh0KQoreworfQorCitUZXh0dXJlVXBsb2FkZXI6On5UZXh0dXJl
VXBsb2FkZXIoKQoreworfQorCit2b2lkIFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZS0+dXBkYXRlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlVXBsb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGE4ZTg4YWYyYmU2ZDE0YjBiNGQ3NDJlYTgy
ZThkODJhNzk2NDUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVGV4dHVyZVVwbG9hZGVyX2gKKyNkZWZpbmUgVGV4dHVyZVVw
bG9hZGVyX2gKKworI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlVXBsb2FkZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRleHR1cmVVcGxvYWRlcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
VGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZVVwbG9hZGVy
KGNvbnRleHQpKTsKKyAgICB9CisgICAgdmlydHVhbCB+VGV4dHVyZVVwbG9hZGVyKCk7CisKKyAg
ICB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCk7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBU
ZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworCisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBiMTM5Y2Q0ZGFmNjNlZWZi
MWQ1NTQzYWIzNTNmMTJmNmRlY2RkOGZmLi5mYzk0N2IwZTU3ZTIyNjdhMTQzNDYxMGM5ZGZkZTE0
YWYyMDFkNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAt
MTk3LDcgKzE5Nyw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5D
b21taXQoKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICB1cGRhdGVyLnVwZGF0ZSht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVy
KCktPnRleHR1cmVDb3BpZXIoKSwgbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAg
ICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgbnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICBBU1NFUlQoIXVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMo
KSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVI
b3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAKaW5kZXggYTczMDRkNzE3YmJmMDMzYjBjN2QzMDE3YjQwZjg5ZGJhYWIy
M2NjZS4uZTE3NDNhOGM5ZmQ5YjQ3Mzk1M2NiY2Q1MmM5ZGMyNTc0NjNkYTFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJM
YXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNs
dWRlICJUZXh0dXJlQ29waWVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTkxLDEzICs5MiwxMyBAQCBib29sIENDVGV4dHVyZVVw
ZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUo
KSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSB8fCBtX2NvcHlFbnRyaWVzLnNpemUoKSB8fCBt
X21hbmFnZWRDb3B5RW50cmllcy5zaXplKCk7CiB9CiAKLWJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgc2l6ZV90IGNvdW50KQorYm9vbCBDQ1RleHR1
cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIq
IHVwbG9hZGVyLCBzaXplX3QgY291bnQpCiB7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIHNpemVf
dCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7
CiAgICAgZm9yIChpbmRleCA9IG1fZW50cnlJbmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRl
eCkgewogICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOwotICAg
ICAgICBlbnRyeS50ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgZW50cnku
c291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOworICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4
dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJjZVJlY3Qs
IGVudHJ5LmRlc3RSZWN0KTsKICAgICB9CiAKICAgICBib29sIG1vcmVVcGRhdGVzID0gbWF4SW5k
ZXggPCBtX2VudHJpZXMuc2l6ZSgpOwpAQCAtMTE1LDcgKzExNiw3IEBAIGJvb2wgQ0NUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvCiAKICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRpYWxFbnRyaWVz
LnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3BhcnRp
YWxFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgZW50cnkudGV4dHVyZS0+dXBkYXRlUmVjdChjb250
ZXh0LCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKKyAgICAg
ICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2Nh
dG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CiAgICAgfQogCiAgICAgZm9y
IChpbmRleCA9IDA7IGluZGV4IDwgbV9jb3B5RW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiNmZjMWEyNGI2OTg4MTQ2ZDY0YjViN2Q2
ZTE1NzQzZWJjY2Y0NDYyLi4wMTUwOGJmYTIyNDVlYjNlOGQ5MmMxMDFlMTYxMTFhYTA3M2RlZmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVDb3BpZXI7CitjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiAK
IGNsYXNzIENDVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgpAQCAtNDksNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAgLy8gVXBkYXRlIHNv
bWUgdGV4dHVyZXMuIFJldHVybnMgdHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vz
cy4KLSAgICBib29sIHVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBUZXh0dXJlQ29waWVyKiwgc2l6ZV90IGNvdW50KTsKKyAgICBib29sIHVwZGF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVw
bG9hZGVyKiwgc2l6ZV90IGNvdW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCAyMDMyNWVmZTAwODZmYjkyZTljNzM5YTUzYzg3NzA2MDM0
ZjA3ZTJhLi5lY2Y5NTVlYTY2YjNjMmE3MDk1MmI3ODdkMzU5NWVhMjkxNDc3NWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
LCB0aGlzLCAwKTsKICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigp
LT50ZXh0dXJlQ29waWVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCks
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCks
IHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137229</attachid>
            <date>2012-04-14 20:27:58 -0700</date>
            <delta_ts>2012-04-17 15:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83972-20120414202757.patch</filename>
            <type>text/plain</type>
            <size>27742</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBiOWI3ZWY4ZDZiNTMx
YWI5NTA5NDBlZGNhYWNlM2U1Y2RjOTE2Zi4uZTllMDNiNzcwMTBiYmJhYWQzNjM0YjIyNGNlMTk4
ZWIzZGIwOTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTE0ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
ZGQgVGV4dHVyZVVwbG9hZGVyIHdoaWNoIGFsbG93cyB1cyB0byB1c2UgcGVyc2lzdGVudCBHQzNE
IHN0YXRlIGZvciB0ZXh0dXJlIHVwbG9hZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBUZXh0dXJlVXBsb2FkZXIgY2xhc3MgdGhhdCBhbGxvd3Mg
dXMgdG8gYWRkIHBlcnNpc3RlbnQgR0MzRCBzdGF0ZSB0byB0aGUgdXBsb2FkIG1hY2hpbmVyeS4K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVVwbG9h
ZGVyKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVy
OjpBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVy
YXRlZFRleHR1cmVVcGxvYWRlcjo6fkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlVXBsb2FkZXI6On5UZXh0dXJlVXBsb2FkZXIpOgorICAg
ICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKwogMjAxMi0wNC0x
NCAgSm9lIFRob21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgVmlld3Bv
cnQtcGVyY2VudGFnZSBMZW5ndGggdW5pdHMgZG9lcyBub3Qgd29yayBmb3IgUmVwbGFjZWQgZWxl
bWVudHMgc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ODI5MjY3MTYzNzM2ODEx
ZGEzOWY3ZjgwMGM0M2VkZmU5NWU4YWY5Li41ZjVjMGE1OGE4MzM4MjA4YmYyNDVlMWM1ZmFiMjJk
ZTA0OTJjMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDEyLTA0LTE0ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBBZGQgVGV4dHVyZVVwbG9hZGVyIHdoaWNoIGFsbG93cyB1cyB0byB1c2Ug
cGVyc2lzdGVudCBHQzNEIHN0YXRlIGZvciB0ZXh0dXJlIHVwbG9hZHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oOgorICAgICAgICAoRmFrZVRleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChXZWJL
aXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXRUZXN0cyk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXVEY6OlRFU1QpOgorCiAyMDEyLTA0LTEzICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBBdm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRp
bGUgdXBkYXRlcyBmb3IgY2hlY2tlcmJvYXJkIHRpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFh
MjdkNjNiNjlkOTU4NjNkMTc1ZGJhNDhiYzM1NTQxMjFmOGI1ZDcuLjk2MDBlOGU3YmNmNzFmNDdl
ZjJmODhiMGFmMzAwNGI1NmRkZmM0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1NzEsNiArMzU3
MSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNv
cGllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVVcGxvYWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVVcGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhbnNwYXJlbmN5V2luLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3ZDY0MGE1N2UwMzkxZmY5NWM0OTI4
YWVhZWQ2YTkyNjBkZjVjYjk1Li41MmY1ZDdiZmQ5Nzg1MTM0MWU3NjExODlhY2JhNDNlYTE5M2Zl
NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEzOTksNiAr
MTM5OSw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2Jq
ZWN0cygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUo
KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3Bp
ZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwor
ICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpj
cmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0
dXJlVXNhZ2VIaW50KQpAQCAtMTcyNSw2ICsxNzI2LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1
ZmZlcklkKQogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZUZy
YW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogICAgIG1fdGV4dHVyZUNvcGll
ci5jbGVhcigpOworICAgIG1fdGV4dHVyZVVwbG9hZGVyLmNsZWFyKCk7CiAKICAgICByZWxlYXNl
UmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCmluZGV4IDY2MmQ5YzVhOTRkNzlhYWYzYjUzMGNiYWUzMWNhZDc0YmNmMjQ2ZDguLmUwMGE3
MWFjNjQ2ZTAxZTI4ZmRkMjBkOWVlYzY1Y2E0MDdmOTIyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCisj
aW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDSGVh
ZHNVcERpc3BsYXkuaCIKQEAgLTE0Niw2ICsxNDcsNyBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJl
TWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAgICBUZXh0dXJlQ29waWVyKiB0
ZXh0dXJlQ29waWVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9Cisg
ICAgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVVcGxvYWRlci5nZXQoKTsgfQogICAgIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZUFsbG9jYXRvci5nZXQoKTsgfQogICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLmdl
dCgpOyB9CiAKQEAgLTI2MCw2ICsyNjIsNyBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcjsKICAgICBPd25QdHI8QWNj
ZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3BpZXI7CisgICAgT3duUHRyPEFjY2Vs
ZXJhdGVkVGV4dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKICAgICBPd25QdHI8VHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKICAgICBP
d25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTZmZTBlMGNi
MjA2ZjAzYTA0M2UzZDY4ZTJlNTYxZTIxYzAxZGZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWNj
ZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKK3sKK30KKworQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6On5BY2NlbGVyYXRlZFRleHR1
cmVVcGxvYWRlcigpCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OnVw
bG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQoreworICAgIHRleHR1
cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVVcGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZlZDU0YTRhZWNjMDM0
ZmZhZTM2MmI5ZWIxYzNlMTlkYzg4YjBhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHR1cmVVcGxvYWRlcl9oCisjZGVm
aW5lIFRleHR1cmVVcGxvYWRlcl9oCisKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZVVwbG9hZGVyIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5UZXh0dXJlVXBsb2FkZXIoKSB7IH0KK307CisKK2NsYXNzIEFjY2Vs
ZXJhdGVkVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXIpOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUo
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXIoY29udGV4dCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcigpOworCisgICAg
dmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCk7CisKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPik7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4
IGIxMzljZDRkYWY2M2VlZmIxZDU1NDNhYjM1M2YxMmY2ZGVjZGQ4ZmYuLmZjOTQ3YjBlNTdlMjI2
N2ExNDM0NjEwYzlkZmRlMTRhZjIwMWQ3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojpkb0NvbW1pdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogICAgICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVn
aW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0gICAgICAg
IHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSk7CisgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9y
KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigp
LCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigp
LCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIEFTU0VSVCghdXBkYXRl
ci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlz
aWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCBhNzMwNGQ3MTdiYmYwMzNiMGM3
ZDMwMTdiNDBmODlkYmFhYjIzY2NlLi5lMTc0M2E4YzlmZDliNDczOTUzY2JjZDUyYzlkYzI1NzQ2
M2RhMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2Vk
VGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJl
VXBsb2FkZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtOTEsMTMgKzkyLDEzIEBA
IGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVy
biBtX2VudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIHx8IG1fY29weUVu
dHJpZXMuc2l6ZSgpIHx8IG1fbWFuYWdlZENvcHlFbnRyaWVzLnNpemUoKTsKIH0KIAotYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNvcGllciogY29waWVyLCBzaXplX3QgY291
bnQpCitib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIs
IFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXplX3Qg
aW5kZXg7CiAgICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBt
X2VudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGluZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8
IG1heEluZGV4OyArK2luZGV4KSB7CiAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50
cmllc1tpbmRleF07Ci0gICAgICAgIGVudHJ5LnRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwg
YWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgIHVw
bG9hZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwg
ZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOwogICAgIH0KIAogICAgIGJvb2wgbW9y
ZVVwZGF0ZXMgPSBtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCk7CkBAIC0xMTUsNyArMTE2LDcg
QEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG8KIAogICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8
IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIFVwZGF0ZUVudHJ5
JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNbaW5kZXhdOwotICAgICAgICBlbnRyeS50ZXh0dXJl
LT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgZW50cnkuc291cmNlUmVjdCwgZW50cnku
ZGVzdFJlY3QpOworICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVyZShjb250ZXh0LCBlbnRy
eS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsK
ICAgICB9CiAKICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX2NvcHlFbnRyaWVzLnNpemUo
KTsgKytpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGI2ZmMxYTI0
YjY5ODgxNDZkNjRiNWI3ZDZlMTU3NDNlYmNjZjQ0NjIuLjAxNTA4YmZhMjI0NWViM2U4ZDkyYzEw
MWUxNjExMWFhMDczZGVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVyZUNvcGllcjsKK2NsYXNzIFRl
eHR1cmVVcGxvYWRlcjsKIAogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CkBAIC00
OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAK
ICAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJucyB0cnVlIGlmIG1vcmUgdGV4dHVy
ZXMgbGVmdCB0byBwcm9jZXNzLgotICAgIGJvb2wgdXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVDb3BpZXIqLCBzaXplX3QgY291bnQpOworICAgIGJv
b2wgdXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVD
b3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBzaXplX3QgY291bnQpOwogCiAgICAgdm9pZCBjbGVh
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDIwMzI1ZWZlMDA4NmZiOTJl
OWM3MzlhNTNjODc3MDYwMzRmMDdlMmEuLmVjZjk1NWVhNjZiM2MyYTcwOTUyYjc4N2QzNTk1ZWEy
OTE0Nzc1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01MjcsNyArNTI3LDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBs
LT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFt
ZSk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCkt
PnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50
ZXh0dXJlVXBsb2FkZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKaW5kZXggOTdhMTMw
NDgzZGU0MjU3MDcxN2I0NjZiNzgxZDg5YzZlNmMwZDEyZS4uODg2M2RhYjVkYzhlNWRiMGRjNWVj
YmI4NTg0MzExMDE5NDc5OWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJU
aWxlZExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgpAQCAtMTU4LDUgKzE1OSwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiB9
OwogCitjbGFzcyBGYWtlVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVV
cGxvYWRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KK307CisKIH0KICNlbmRpZiAvLyBDQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGEwZjgwMDZlNDcyZTNmY2U4Yzk1
OGZkZmRmY2NmZTg3N2Q2MDczNzMuLjBiYWUyMjNkMGUxYjM5ODljMmU1MzQxMTIxZGY4M2M0ZTgz
YjczZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRM
YXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtODgsNiArODgsMTEgQEAgcHVibGljOgog
ICAgIE1PQ0tfTUVUSE9ENChjb3B5VGV4dHVyZSwgdm9pZChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYpKTsKIH07CiAKK2NsYXNzIE1vY2tUZXh0
dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKK3B1YmxpYzoKKyAgICBNT0NL
X01FVEhPRDUodXBsb2FkVGV4dHVyZSwgdm9pZChHcmFwaGljc0NvbnRleHQzRCosIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCwg
Y29uc3QgSW50UmVjdCkpOworfTsKKwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtVGVzdCA6
IHB1YmxpYyBUZXN0IHsKIHByb3RlY3RlZDoKICAgICB2b2lkIGZ1bGxMaWZlY3ljbGVUZXN0KGJv
b2wgdGhyZWFkZWQpCkBAIC0xMDIsNiArMTA3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIE1v
Y2tUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvck1vY2s7CiAgICAgICAgIE1vY2tUZXh0dXJlQ29w
aWVyIGNvcGllck1vY2s7CisgICAgICAgIE1vY2tUZXh0dXJlVXBsb2FkZXIgdXBsb2FkZXJNb2Nr
OwogICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAgICAgY29uc3QgSW50
U2l6ZSBzaXplKDMwMCwgMTUwKTsKQEAgLTE1Myw3ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NM
YXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NUZXh0
dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAg
ICAgICB1cGRhdGVyLnVwZGF0ZShpbXBsQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRvck1vY2ssICZj
b3BpZXJNb2NrLCAxKTsKKyAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKGltcGxDb250ZXh0Lmdl
dCgpLCAmYWxsb2NhdG9yTW9jaywgJmNvcGllck1vY2ssICZ1cGxvYWRlck1vY2ssIDEpOwogICAg
ICAgICAgICAgY2FudmFzLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAg
ICAgICAgICAgIGlmICh0aHJlYWRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDM2NTYzYjQ4NjNkZjUz
ZmJkN2JmOTIyOTZjMGNlOTU1NjMzNGEwNTYuLjViN2NiMGRmNzVjOTcyNDg5Y2JjMWNlMjQ3NzVi
YjRlOWM4ZjFiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTUwLDcgKzE1MCw2IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKIAogICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcjsKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAg
RmFrZVRleHR1cmVDb3BpZXIgY29waWVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4
MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CkBAIC0yNDgsNiArMjQ3LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxl
ZCkKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAgICAgRmFrZVRleHR1cmVBbGxvY2F0
b3IgYWxsb2NhdG9yOwogICAgIEZha2VUZXh0dXJlQ29waWVyIGNvcGllcjsKKyAgICBGYWtlVGV4
dHVyZVVwbG9hZGVyIHVwbG9hZGVyOwogCiAgICAgLy8gRm9yIHRoaXMgdGVzdCB3ZSBoYXZlIHR3
byBsYXllcnMuIGxheWVyMSBleGhhdXN0cyBtb3N0IHRleHR1cmUgbWVtb3J5LCBsZWF2aW5nIHJv
b20gZm9yIDIgbW9yZSB0aWxlcyBmcm9tCiAgICAgLy8gbGF5ZXIyLCBidXQgbm90IGFsbCB0aHJl
ZSB0aWxlcy4gRmlyc3Qgd2UgcGFpbnQgbGF5ZXIxLCBhbmQgb25lIHRpbGUgZnJvbSBsYXllcjIu
IFRoZW4gd2hlbiB3ZSBpZGxlIHBhaW50CkBAIC0yNzMsNyArMjczLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICBFWFBF
Q1RfVFJVRShsYXllcjItPm5lZWRzSWRsZVBhaW50KGxheWVyMlJlY3QpKTsKIAogICAgIC8vIENv
bW1pdCB0aGUgZnJhbWUgb3ZlciB0byBpbXBsLgotICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxv
Y2F0b3IsICZjb3BpZXIsIDUwMDApOworICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3Is
ICZjb3BpZXIsICZ1cGxvYWRlciwgNTAwMCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwyLmdldCgpKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIyLT5pZGxlVXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOwogCiAgICAgLy8gT2ggd2VsbCwg
Y29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2Nh
dG9yLCAmY29waWVyLCA1MDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAm
Y29waWVyLCAmdXBsb2FkZXIsIDUwMDApOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwxLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
Mi5nZXQoKSk7CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIGxheWVyMi0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOwogICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoKSwgMCk7CiAKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxs
b2NhdG9yLCAmY29waWVyLCA1MDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9y
LCAmY29waWVyLCAmdXBsb2FkZXIsIDUwMDApOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwxLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsMi5nZXQoKSk7CiAKQEAgLTY2OSwxMyArNjY5LDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcjsKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBmYWtlQWxsb2NhdG9yOwogICAgIEZha2VU
ZXh0dXJlQ29waWVyIGZha2VDb3BpZXI7CisgICAgRmFrZVRleHR1cmVVcGxvYWRlciBmYWtlVXBs
b2FkZXI7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3JlYXRlQ29t
cG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cygpKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlk
YXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwg
JmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShj
b250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIs
IDEwMDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
ICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC02
ODgsNyArNjg5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJv
bVByZXBhcmUpCiAgICAgLy8gSW52b2tlIHVwZGF0ZUxheWVyUmVjdCBhZ2Fpbi4gQXMgdGhlIGxh
eWVyIGlzIHZhbGlkIHVwZGF0ZUxheWVyUmVjdCBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAg
IC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRl
KGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7CisgICAg
dXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVy
LCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKICAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIAogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwpAQCAtNjk2LDEyICs2OTcsMTIgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVj
dCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICB1cGRhdGVy
LnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsIDEwMDAp
OworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFr
ZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhl
IGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUxheWVyUmVjdCBpbnZva2Vk
IGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwg
JmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShj
b250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIs
IDEwMDApOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZUNvdW50KCkpOwogfQogCkBAIC04ODksNiArODkwLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXI7CiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOwogICAgIEZha2VUZXh0
dXJlQ29waWVyIGNvcGllcjsKKyAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIHVwbG9hZGVyOwogCiAg
ICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsKQEAgLTg5OCwxMSArOTAw
LDExIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAg
ewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAg
T3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDApKSk7Ci0gICAgICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0
b3IsICZjb3BpZXIsIDQpOworICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAm
Y29waWVyLCAmdXBsb2FkZXIsIDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfVFJV
RSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgICAgICB1cGRhdGVyLnVwZGF0
ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA0KTsKKyAgICAgICAgdXBkYXRlci51cGRhdGUoMCwg
JmFsbG9jYXRvciwgJmNvcGllciwgJnVwbG9hZGVyLCA0KTsKICAgICAgICAgRVhQRUNUX0VRKDIs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAg
ICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CkBAIC05MTYs
MTEgKzkxOCwxMSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVz
KQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwotICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAm
YWxsb2NhdG9yLCAmY29waWVyLCA0KTsKKyAgICAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9j
YXRvciwgJmNvcGllciwgJnVwbG9hZGVyLCA0KTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAgICAgICAgdXBkYXRl
ci51cGRhdGUoMCwgJmFsbG9jYXRvciwgJmNvcGllciwgNCk7CisgICAgICAgIHVwZGF0ZXIudXBk
YXRlKDAsICZhbGxvY2F0b3IsICZjb3BpZXIsICZ1cGxvYWRlciwgNCk7CiAgICAgICAgIEVYUEVD
VF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7
CiAgICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpA
QCAtOTM0LDExICs5MzYsMTEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFs
VXBkYXRlcykKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycyh1cGRhdGVyKTsKLSAgICAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRv
ciwgJmNvcGllciwgNCk7CisgICAgICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZj
b3BpZXIsICZ1cGxvYWRlciwgNCk7CiAgICAgICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Ci0gICAgICAgIHVwZGF0ZXIudXBkYXRl
KDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDQpOworICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAm
YWxsb2NhdG9yLCAmY29waWVyLCAmdXBsb2FkZXIsIDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAg
ICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTk2MSwx
MSArOTYzLDExIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMp
CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICBP
d25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMCkpKTsKICAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlcik7Ci0gICAgICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3Bp
ZXIsIDQpOworICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCAm
dXBsb2FkZXIsIDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVy
Lmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxs
b2NhdG9yLCAmY29waWVyLCA0KTsKKyAgICAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRv
ciwgJmNvcGllciwgJnVwbG9hZGVyLCA0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>