<?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>103046</bug_id>
          
          <creation_ts>2012-11-22 03:06:22 -0800</creation_ts>
          <short_desc>[TexMap] Remove dependency of TextureMapperLayer on GraphicsLayerTextureMapper.</short_desc>
          <delta_ts>2012-12-10 23:48:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>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>102994</blocked>
    
    <blocked>103171</blocked>
    
    <blocked>104640</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>noam</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773782</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 03:06:22 -0800</bug_when>
    <thetext>It is a preparation patch for Threaded Coordinated Graphics on WK1.

We want to make TextureMapperLayer into an actor model. After making an actor
model, GraphicsLayerTextureMapper and LayerTreeRenderer will communicate with
TextureMapperLayer using message passing. In the first step, we want to hide
GraphicsLayerTextureMapper from TextureMapperLayer.

There are 2 kinds of dependencies of TextureMapperLayer in GraphicsLayerTextureMapper.
1. To query layer states
2. To paint layer contents

In this patch, we removed the second dependency. Currently, TextureMapperLayer
requests painting contents to GraphicsLayerTextureMapper in WK1 while
Coordinated Graphics prepares the contents in LayerTreeRenderer. This patch
makes WK1 prepare the contents in GraphicsLayerTextureMapper like
LayerTreeRenderer.

We will remove the first dependency in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773783</commentid>
    <comment_count>1</comment_count>
      <attachid>175636</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 03:12:40 -0800</bug_when>
    <thetext>Created attachment 175636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773833</commentid>
    <comment_count>2</comment_count>
      <attachid>175636</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-22 04:41:16 -0800</bug_when>
    <thetext>Comment on attachment 175636
Patch

Attachment 175636 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14966333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773889</commentid>
    <comment_count>3</comment_count>
      <attachid>175636</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-22 06:17:38 -0800</bug_when>
    <thetext>Comment on attachment 175636
Patch

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

Looks really good! Seems like it&apos;s missing some Timer.h includes though :)

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:57
&gt; +    , m_shouldManageBackingStore(true)

m_hasOwnBackingStore

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:475
&gt; +

Empty line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774132</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 16:38:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 175636 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175636&amp;action=review
&gt; 
&gt; Looks really good! Seems like it&apos;s missing some Timer.h includes though :)

Thanks for review! I just do as you said :) 
GraphicsLayerTextureMapper absolutely needs Timer.h, but it&apos;s interesting how only qt can build without Timer.h.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:57
&gt; &gt; +    , m_shouldManageBackingStore(true)
&gt; 
&gt; m_hasOwnBackingStore

Done 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:475
&gt; &gt; +
&gt; 
&gt; Empty line

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774134</commentid>
    <comment_count>5</comment_count>
      <attachid>175715</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 16:39:36 -0800</bug_when>
    <thetext>Created attachment 175715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774138</commentid>
    <comment_count>6</comment_count>
      <attachid>175715</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-22 16:44:01 -0800</bug_when>
    <thetext>Comment on attachment 175715
Patch

Attachment 175715 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14964571</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774153</commentid>
    <comment_count>7</comment_count>
      <attachid>175722</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 18:20:12 -0800</bug_when>
    <thetext>Created attachment 175722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774155</commentid>
    <comment_count>8</comment_count>
      <attachid>175722</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-22 18:23:42 -0800</bug_when>
    <thetext>Comment on attachment 175722
Patch

Attachment 175722 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14967551</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774157</commentid>
    <comment_count>9</comment_count>
      <attachid>175724</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 18:24:25 -0800</bug_when>
    <thetext>Created attachment 175724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774158</commentid>
    <comment_count>10</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 18:24:39 -0800</bug_when>
    <thetext>fixed gtk and efl build fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774595</commentid>
    <comment_count>11</comment_count>
      <attachid>175724</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 08:52:06 -0800</bug_when>
    <thetext>Comment on attachment 175724
Patch

Clearing flags on attachment: 175724

Committed r135620: &lt;http://trac.webkit.org/changeset/135620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774596</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 08:52:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774791</commentid>
    <comment_count>13</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-23 23:25:41 -0800</bug_when>
    <thetext>This bug causes Assertion fail. I&apos;m sorry.

I&apos;ll file Bug 103171.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175636</attachid>
            <date>2012-11-22 03:12:40 -0800</date>
            <delta_ts>2012-11-22 16:39:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103046-20121122201022.patch</filename>
            <type>text/plain</type>
            <size>27089</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBjN2I2MmI5MDE4YTNh
ZTNkMjEzYjJkNDZlMWZjNTM3Mjc5MTg0MS4uZGM3OGNkZjBkNzY0NDE0M2IxYjJkNWFhNWU4YjJj
OTE2YWI2ZmVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTExLTIyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBd
IFJlbW92ZSBkZXBlbmRlbmN5IG9mIFRleHR1cmVNYXBwZXJMYXllciBvbiBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzA0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVk
IEdyYXBoaWNzIG9uIFdLMS4KKworICAgICAgICBXZSB3YW50IHRvIG1ha2UgVGV4dHVyZU1hcHBl
ckxheWVyIGludG8gYW4gYWN0b3IgbW9kZWwuIEFmdGVyIG1ha2luZyBhbiBhY3RvcgorICAgICAg
ICBtb2RlbCwgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgYW5kIExheWVyVHJlZVJlbmRlcmVy
IHdpbGwgY29tbXVuaWNhdGUgd2l0aAorICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgdXNpbmcg
bWVzc2FnZSBwYXNzaW5nLiBJbiB0aGUgZmlyc3Qgc3RlcCwgd2Ugd2FudCB0byBoaWRlCisgICAg
ICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gVGV4dHVyZU1hcHBlckxheWVyLgor
CisgICAgICAgIFRoZXJlIGFyZSAyIGtpbmRzIG9mIGRlcGVuZGVuY2llcyBvZiBUZXh0dXJlTWFw
cGVyTGF5ZXIgaW4gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIDEuIFRvIHF1
ZXJ5IGxheWVyIHN0YXRlcworICAgICAgICAyLiBUbyBwYWludCBsYXllciBjb250ZW50cworCisg
ICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZWQgdGhlIHNlY29uZCBkZXBlbmRlbmN5LiBD
dXJyZW50bHksIFRleHR1cmVNYXBwZXJMYXllcgorICAgICAgICByZXF1ZXN0cyBwYWludGluZyBj
b250ZW50cyB0byBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBpbiBXSzEgd2hpbGUKKyAgICAg
ICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgcHJlcGFyZXMgdGhlIGNvbnRlbnRzIGluIExheWVyVHJl
ZVJlbmRlcmVyLiBUaGlzIHBhdGNoCisgICAgICAgIG1ha2VzIFdLMSBwcmVwYXJlIHRoZSBjb250
ZW50cyBpbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBsaWtlCisgICAgICAgIExheWVyVHJl
ZVJlbmRlcmVyLgorCisgICAgICAgIFdlIHdpbGwgcmVtb3ZlIHRoZSBmaXJzdCBkZXBlbmRlbmN5
IGluIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgbGF5
b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZEZsdXNoQ29tcG9zaXRp
bmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFNob3VsZE1hbmFnZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZVNlbGYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoVGV4dHVyZU1h
cHBlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6U3RhdGU6OlN0YXRlKToKKwogMjAxMi0xMS0yMCAgSmFtZXMgU2ltb25zZW4g
IDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Jlc291cmNlIFRpbWluZ10gUG9w
dWxhdGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZyBzdHJ1Y3RzIHdpdGggdGltaW5nIGRhdGEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1OGY5YjRiY2E0ZmI4OTkzMTgxY2FiODliYzQwNGE2NGVkZWYxNGRmLi42
ZmQ2Mjk4YjQzOTY0YmNmMTNlMTUyMzM0ZjlmMjBlOWI5ZWExZTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjIgQEAKIDIwMTItMTEtMjIgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIGRlcGVuZGVuY3kgb2YgVGV4dHVy
ZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciBjcmVhdGUgaXRzIG93biBiYWNraW5nCisgICAgICAgIHN0
b3JlLiBIb3dldmVyLCBMYXllclRyZWVSZW5kZXJlciBhbHNvIGNyZWF0ZXMgaXRzIG93biBiYWNr
aW5nIHN0b3JlLiBTbworICAgICAgICB3aGVuIExheWVyVHJlZVJlbmRlcmVyIHVzZXMgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIsCisgICAgICAgIExheWVyVHJlZVJlbmRlcmVyIG5lZWRzIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIHRvIG5vdCBjcmVhdGUgaXRzIG93bgorICAgICAgICBi
YWNraW5nIHN0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJl
cjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0
QmFja2luZ1N0b3JlKToKKworMjAxMi0xMS0yMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBj
b21wYW55MTAwLm5ldD4KKwogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogTGF5ZXJUcmVl
UmVuZGVyZXI6OnJlbW92ZVRpbGUoKSBkb2VzIG5vdCByZW1vdmUgdGlsZXMgYWN0dWFsbHkuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMzAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZmRkYjc4OTc1
NmE0NDVkNzk0ZTg4Mzg4YWFmYWZmNDZhZWNhNjg3ZS4uMDg4Y2NhNGY2ZmY1NDgwMzA4YzA4YmEz
MjJlNDljM2Y3NDhjOGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC0yMCw5ICsyMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckZhY3RvcnkuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKKyNp
ZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3
ICs1NCw5IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKDApCiAgICAgLCBtX25lZWRzRGlzcGxh
eShmYWxzZSkKKyAgICAsIG1fc2hvdWxkTWFuYWdlQmFja2luZ1N0b3JlKHRydWUpCiAgICAgLCBt
X2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKKyAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAg
ICwgbV9jb250ZW50c0xheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcih0aGlz
LCAmR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVk
KQogewpAQCAtNjEsMTMgKzcwLDYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdlTWFzayBjaGEKICAgICBjbGll
bnQoKS0+bm90aWZ5Rmx1c2hSZXF1aXJlZCh0aGlzKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6ZGlkU3luY2hyb25pemUoKQotewotICAgIG1fY2hhbmdlTWFzayA9IDA7
Ci0gICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKLSAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJ
bnRSZWN0KCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE5hbWUobmFtZSk7
CkBAIC0zNzcsNiArMzc5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNUb01lZGlhKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKgogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpCiB7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHRoaXMpOworICAgIGRp
ZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIu
aCkKQEAgLTM4NCw3ICszODcsMTIyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYp
CiB7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHRoaXMsIFRleHR1cmVNYXBw
ZXJMYXllcjo6VHJhdmVyc2VEZXNjZW5kYW50cyk7CisgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0
YXRlUmVjdXJzaXZlKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRp
ZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpCit7CisgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7Cisg
ICAgbV9jaGFuZ2VNYXNrID0gMDsKKyAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOworICAgIG1f
bmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCkKK3sKKyAgICBk
aWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
aWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIoY2hpbGRyZW4oKVtpXSktPmRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpOwor
ICAgIGlmIChtYXNrTGF5ZXIoKSkKKyAgICAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cihtYXNrTGF5ZXIoKSktPmRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpOworICAg
IGlmIChyZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cihyZXBsaWNhTGF5ZXIoKSktPmRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUo
KQoreworICAgIGlmICghbV9zaG91bGRNYW5hZ2VCYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX2xheWVyLT5zZXRCYWNraW5n
U3RvcmUobV9iYWNraW5nU3RvcmUpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKK3sKKyAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5n
U3RvcmUoKSkgeworICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KEZs
b2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSkpOworICAgIGlmICghbV9uZWVkc0Rp
c3BsYXkpCisgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50UmVjdChtX25l
ZWRzRGlzcGxheVJlY3QpKTsKKyAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRl
eHR1cmVNYXBwZXIoKTsKKyAgICBBU1NFUlQodGV4dHVyZU1hcHBlcik7CisKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CisKKyAgICAvLyBQYWludCB0aGUgZW50aXJlIGRpcnR5
IHJlY3QgaW50byBhbiBpbWFnZSBidWZmZXIuIFRoaXMgZW5zdXJlcyB3ZSBvbmx5IHBhaW50IG9u
Y2UuCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoZGlydHlSZWN0LnNpemUoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Cisg
ICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRleHREcmF3aW5n
TW9kZSgpKTsKKyAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJl
Y3QueSgpKTsKKyAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgZGlydHlS
ZWN0KTsKKworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKSB7CisgICAgICAgIGlu
Y3JlbWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4
dCk7CisgICAgfQorCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIEFTU0VS
VChkeW5hbWljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5n
U3RvcmUuZ2V0KCkpKTsKKyNlbmRpZgorICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29u
dGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UuZ2V0KCksIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisKKyAgICBiYWNr
aW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Cisg
ICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVi
dWdCb3JkZXJXaWR0aCk7CisKKyAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOworICAgIG1fbmVl
ZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRy
YXdzQ29udGVudCgpICYmIGNvbnRlbnRzQXJlVmlzaWJsZSgpICYmICFtX3NpemUuaXNFbXB0eSgp
OworfQorCisjaWYgVVNFKENBSVJPKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3sKKworICAgIGNh
aXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9f
c2F2ZShjcik7CisKKyAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIl
aSIsIHJlcGFpbnRDb3VudCgpKS51dGY4KCk7CisgICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShj
ciwgInNhbnMtc2VyaWYiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlH
SFRfQk9MRCk7CisgICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOworCisgICAgY2Fpcm9f
dGV4dF9leHRlbnRzX3QgcmVwYWludFRleHRFeHRlbnRzOworICAgIGNhaXJvX3RleHRfZXh0ZW50
cyhjciwgcmVwYWludENvdW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7CisKKyAgICBz
dGF0aWMgY29uc3QgaW50IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7CisgICAgc2V0U291
cmNlUkdCQUZyb21Db2xvcihjciwgaXNTaG93aW5nRGVidWdCb3JkZXIoKSA/IG1fZGVidWdCb3Jk
ZXJDb2xvciA6IENvbG9yKDAsIDI1NSwgMCwgMTI3KSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LCAwLCAwLAorICAgICAgICByZXBhaW50VGV4dEV4dGVudHMud2lkdGggKyAocmVwYWludENvdW50
Qm9yZGVyV2lkdGggKiAyKSwKKyAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIChy
ZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAg
IGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLCAxLCAxKTsKKyAgICBjYWlyb19tb3ZlX3RvKGNy
LCByZXBhaW50Q291bnRCb3JkZXJXaWR0aCwgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIHJl
cGFpbnRDb3VudEJvcmRlcldpZHRoKTsKKyAgICBjYWlyb19zaG93X3RleHQoY3IsIHJlcGFpbnRD
b3VudC5kYXRhKCkpOworCisgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CisjZWxzZQordm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKIAog
Ym9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9m
ZnNldCkKIHsKQEAgLTQyOSw3ICs1NDcsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclQKIAog
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29s
b3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKIHsKLSAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcihj
b2xvciwgd2lkdGgpOworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXll
ciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxl
c3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisg
ICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0g
d2lkdGggKiAyOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBiZWE4YzU0M2E3ZmExNTFkMTliOWQyMGQ5OTEw
ZTRjODQzOTNjMDQ1Li4yYzYyZTVjOTdlYmZkMmFiMDY5Mjg0ODkxYzgwYmY1Njg1M2MwNzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjgsOCArMjgsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKLWNs
YXNzIEJpdG1hcFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlTWFwcGVyOwogCiBjbGFzcyBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKQEAgLTc2LDcgKzc0
LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5nZU1hc2soKSBjb25zdCB7IHJldHVy
biBtX2NoYW5nZU1hc2s7IH0KLSAgICB2b2lkIGRpZFN5bmNocm9uaXplKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgSW50
U2l6ZSYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7CiAgICAgdmly
dHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7CkBAIC04NCw4
ICs4MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NM
YXllckFuaW1hdGlvbnMmKTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyLmdldCgpOyB9Ci0gICAgYm9vbCBuZWVkc0Rpc3BsYXkoKSBjb25z
dCB7IHJldHVybiBtX25lZWRzRGlzcGxheTsgfQotICAgIEludFJlY3QgbmVlZHNEaXNwbGF5UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QobV9uZWVkc0Rpc3BsYXlSZWN0KTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQg
d2lkdGgpOwogCkBAIC05MywyMiArODgsMzggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
ZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgogCisgICAgLy8gRklY
TUU6IEl0IHdpbGwgYmUgcmVtb3ZlZCBhZnRlciByZW1vdmluZyBkZXBlbmRlbmN5IG9mIExheWVy
VHJlZVJlbmRlcmVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgorICAgIHZvaWQgc2V0
U2hvdWxkTWFuYWdlQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX3Nob3VsZE1hbmFnZUJhY2tpbmdT
dG9yZSA9IGI7IH0KKwogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsg
bV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5n
U3RhdGUoKTsKKyAgICB2b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpOwor
ICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgdm9pZCBwcmVwYXJlQmFja2luZ1N0
b3JlKCk7CisgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3Q7CisgICAgdm9p
ZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBhbmltYXRp
b25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4qKTsK
IAogICAgIE93blB0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgTmF0
aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworCiAgICAgaW50IG1fY2hhbmdl
TWFzazsKICAgICBib29sIG1fbmVlZHNEaXNwbGF5OworICAgIGJvb2wgbV9zaG91bGRNYW5hZ2VC
YWNraW5nU3RvcmU7CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydDsKKworICAgIENvbG9yIG1f
ZGVidWdCb3JkZXJDb2xvcjsKKyAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CisKICAgICBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250ZW50c0xheWVyOwogICAgIEZsb2F0UmVj
dCBtX25lZWRzRGlzcGxheVJlY3Q7CiAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMgbV9hbmlt
YXRpb25zOwotICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI+Kik7CiAgICAgVGltZXI8R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI+IG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcAppbmRleCBmZTZiNmMwZTFlZTk1MDc1MjcxMDIwZTdhN2Q0NDUzOGMyZGJlODI4Li41
MGIzMmIzNjAyM2YzYmI1ZDlhYzJlNzhlMzYwZDQ1Njk1YmU4MGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcApAQCAtMjAsMTkgKzIwLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKIAotI2luY2x1ZGUgInN0ZGlvLmgiCi0KICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi0jaWYgVVNFKENB
SVJPKQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNyArMzEsNyBA
QCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIo
bGF5ZXIpLT5sYXllcigpIDogMDsKIH0KIAotVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnJvb3RMYXllcigpCitjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVN
YXBwZXJMYXllcjo6cm9vdExheWVyKCkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RUYXJnZXQp
CiAgICAgICAgIHJldHVybiBtX2VmZmVjdFRhcmdldC0+cm9vdExheWVyKCk7CkBAIC05NSw1NiAr
ODUsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNp
dmUoKQogICAgICAgICBzb3J0QnlaT3JkZXIobV9jaGlsZHJlbiwgMCwgbV9jaGlsZHJlbi5zaXpl
KCkpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6dXBkYXRlQmFja2luZ1N0b3JlKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBs
YXllcikKLXsKLSAgICBpZiAoIWxheWVyIHx8ICF0ZXh0dXJlTWFwcGVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIW1fc2hvdWxkVXBkYXRlQmFja2luZ1N0b3JlRnJvbUxheWVyKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fc3RhdGUuZHJhd3NDb250ZW50IHx8ICFtX3N0YXRl
LmNvbnRlbnRzVmlzaWJsZSB8fCBtX3NpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fYmFja2lu
Z1N0b3JlLmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnRSZWN0IGRp
cnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobGF5ZXJSZWN0KCkpOwotICAgIGlmICghbV9zdGF0
ZS5uZWVkc0Rpc3BsYXkpCi0gICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50
UmVjdChtX3N0YXRlLm5lZWRzRGlzcGxheVJlY3QpKTsKLSAgICBpZiAoZGlydHlSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAg
ICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0
ZSgpOwotCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOwotI2VuZGlm
Ci0KLSAgICAvLyBQYWludCB0aGUgZW50aXJlIGRpcnR5IHJlY3QgaW50byBhbiBpbWFnZSBidWZm
ZXIuIFRoaXMgZW5zdXJlcyB3ZSBvbmx5IHBhaW50IG9uY2UuCi0gICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZGlydHlSZWN0LnNpemUoKSk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsK
LSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXIt
PmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgY29udGV4dC0+c2V0VGV4dERyYXdp
bmdNb2RlKHRleHR1cmVNYXBwZXItPnRleHREcmF3aW5nTW9kZSgpKTsKLSAgICBjb250ZXh0LT50
cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICBsYXllci0+cGFp
bnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICBpZiAo
bGF5ZXItPmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpIHsKLSAgICAgICAgbGF5ZXItPmluY3Jl
bWVudFJlcGFpbnRDb3VudCgpOwotICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCwg
bGF5ZXIpOwotICAgIH0KLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+
Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBiYWNraW5nU3RvcmUt
PnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5
UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwot
Ci0gICAgYmFja2luZ1N0b3JlLT5zZXRTaG93RGVidWdCb3JkZXJzKGxheWVyLT5pc1Nob3dpbmdE
ZWJ1Z0JvcmRlcigpKTsKLSAgICBiYWNraW5nU3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdC
b3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRoKTsKLQotICAgIG1fc3RhdGUubmVlZHNEaXNw
bGF5ID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS5uZWVkc0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOwot
fQotCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnQoKQogewogICAgIGNvbXB1dGVUcmFu
c2Zvcm1zUmVjdXJzaXZlKCk7CkBAIC0xNzAsNiArMTEwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25z
KQogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOwogCiAgICAg
aWYgKG1fYmFja2luZ1N0b3JlKSB7CisgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVu
dCAmJiBtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSAmJiAhbV9zaXplLmlzRW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0
KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CiAgICAgfQpAQCAtNDA2LDkgKzM0
NywxNCBAQCBUZXh0dXJlTWFwcGVyTGF5ZXI6On5UZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAg
ICBtX3BhcmVudC0+bV9jaGlsZHJlbi5yZW1vdmUobV9wYXJlbnQtPm1fY2hpbGRyZW4uZmluZCh0
aGlzKSk7CiB9CiAKK1RleHR1cmVNYXBwZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6dGV4dHVyZU1h
cHBlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvb3RMYXllcigpLT5tX3RleHR1cmVNYXBwZXI7
Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWNzTGF5ZXIsIGludCBvcHRpb25zKQogewot
ICAgIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShncmFwaGljc0xheWVyLCByb290TGF5ZXIoKS0+bV90
ZXh0dXJlTWFwcGVyLCBvcHRpb25zKTsKKyAgICBmbHVzaENvbXBvc2l0aW5nU3RhdGUoZ3JhcGhp
Y3NMYXllciwgdGV4dHVyZU1hcHBlcigpLCBvcHRpb25zKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZVNlbGYoR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIqIGdyYXBoaWNzTGF5ZXIsIFRleHR1cmVNYXBwZXIqKQpAQCAtNDg5LDkgKzQzNSw2IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVTZWxmKEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBnCiAjZW5kaWYKICAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9
IGdyYXBoaWNzTGF5ZXItPmZpeGVkVG9WaWV3cG9ydCgpOwogCi0gICAgbV9zdGF0ZS5uZWVkc0Rp
c3BsYXkgPSBtX3N0YXRlLm5lZWRzRGlzcGxheSB8fCBncmFwaGljc0xheWVyLT5uZWVkc0Rpc3Bs
YXkoKTsKLSAgICBpZiAoIW1fc3RhdGUubmVlZHNEaXNwbGF5KQotICAgICAgICBtX3N0YXRlLm5l
ZWRzRGlzcGxheVJlY3QudW5pdGUoZ3JhcGhpY3NMYXllci0+bmVlZHNEaXNwbGF5UmVjdCgpKTsK
ICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAK
ICAgICBtX3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwpAQCAtNTM5
LDEwICs0ODIsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0
YXRlKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBncmFwaAogICAgIGlmICghdGV4dHVyZU1h
cHBlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGdyYXBoaWNzTGF5ZXIgJiYgIShvcHRp
b25zICYgQ29tcHV0YXRpb25zT25seSkpIHsKKyAgICBpZiAoZ3JhcGhpY3NMYXllciAmJiAhKG9w
dGlvbnMgJiBDb21wdXRhdGlvbnNPbmx5KSkKICAgICAgICAgZmx1c2hDb21wb3NpdGluZ1N0YXRl
U2VsZihncmFwaGljc0xheWVyLCB0ZXh0dXJlTWFwcGVyKTsKLSAgICAgICAgZ3JhcGhpY3NMYXll
ci0+ZGlkU3luY2hyb25pemUoKTsKLSAgICB9CiAKICAgICBpZiAoZ3JhcGhpY3NMYXllciAmJiBt
X3N0YXRlLm1hc2tMYXllcikgewogICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+Zmx1c2hDb21w
b3NpdGluZ1N0YXRlKHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllci0+
bWFza0xheWVyKCkpLCB0ZXh0dXJlTWFwcGVyKTsKQEAgLTU1Niw3ICs0OTcsNiBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKiBncmFwaAogICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+Zmx1c2hDb21w
b3NpdGluZ1N0YXRlKHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllci0+
cmVwbGljYUxheWVyKCkpLCB0ZXh0dXJlTWFwcGVyKTsKIAogICAgIHN5bmNBbmltYXRpb25zKCk7
Ci0gICAgdXBkYXRlQmFja2luZ1N0b3JlKHRleHR1cmVNYXBwZXIsIGdyYXBoaWNzTGF5ZXIpOwog
CiAgICAgaWYgKCEob3B0aW9ucyAmIFRyYXZlcnNlRGVzY2VuZGFudHMpKQogICAgICAgICBvcHRp
b25zID0gQ29tcHV0YXRpb25zT25seTsKQEAgLTU5OCw0OCArNTM4LDUgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNp
emUmIGRlbHRhKQogICAgIG1fdHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24o
KSk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBm
b3IgR3JhcGhpY3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQotICAgIC8vIGhhcmQg
dG8gc2VlIChzb21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVp
ciBzaXplIGhlcmUuCi0gICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7Ci0gICAgbV9kZWJ1
Z0JvcmRlcldpZHRoID0gd2lkdGggKiAyOwotfQotCi0jaWYgVVNFKENBSVJPKQotdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENT
dHJpbmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgbGF5ZXItPnJlcGFpbnRD
b3VudCgpKS51dGY4KCk7Ci0gICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShjciwgInNhbnMtc2Vy
aWYiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9MRCk7Ci0g
ICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOwotCi0gICAgY2Fpcm9fdGV4dF9leHRlbnRz
X3QgcmVwYWludFRleHRFeHRlbnRzOwotICAgIGNhaXJvX3RleHRfZXh0ZW50cyhjciwgcmVwYWlu
dENvdW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
aW50IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7Ci0gICAgc2V0U291cmNlUkdCQUZyb21D
b2xvcihjciwgbGF5ZXItPmlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPyBtX2RlYnVnQm9yZGVyQ29s
b3IgOiBDb2xvcigwLCAyNTUsIDAsIDEyNykpOwotICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwg
MCwKLSAgICAgICAgICAgICAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLndpZHRoICsgKHJlcGFp
bnRDb3VudEJvcmRlcldpZHRoICogMiksCi0gICAgICAgICAgICAgICAgICAgIHJlcGFpbnRUZXh0
RXh0ZW50cy5oZWlnaHQgKyAocmVwYWludENvdW50Qm9yZGVyV2lkdGggKiAyKSk7Ci0gICAgY2Fp
cm9fZmlsbChjcik7Ci0KLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMSwgMSwgMSk7Ci0g
ICAgY2Fpcm9fbW92ZV90byhjciwgcmVwYWludENvdW50Qm9yZGVyV2lkdGgsIHJlcGFpbnRUZXh0
RXh0ZW50cy5oZWlnaHQgKyByZXBhaW50Q291bnRCb3JkZXJXaWR0aCk7Ci0gICAgY2Fpcm9fc2hv
d190ZXh0KGNyLCByZXBhaW50Q291bnQuZGF0YSgpKTsKLQotICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OwotfQotI2Vsc2UKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpkcmF3UmVwYWludENvdW50ZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi0jZW5kaWYKLQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmgKaW5kZXggNWNkOTU5ZDYxM2Q4MzRhNDljYTk2MWUxNzMxOTgxMDNjNGMyYjA2OS4u
MjdhNzdmNmZlZjg2MmM4ZGE2NWU1YjQ4NWJjNmU3ODVkYjA2N2NhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaApAQCAtMjQsMjQgKzI0LDE1IEBACiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJB
bmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCi0jaW5jbHVk
ZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgotI2luY2x1
ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllcjsKLWNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKIGNsYXNzIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zIHsKQEAgLTEwNywxMyArOTgsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fY29udGVudHNM
YXllcigwKQogICAgICAgICAsIG1fb3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigwKQot
ICAgICAgICAsIG1fc2hvdWxkVXBkYXRlQmFja2luZ1N0b3JlRnJvbUxheWVyKHRydWUpCiAgICAg
ICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCi0gICAgICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDAp
CiAgICAgeyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyTGF5ZXIoKTsKIAorICAgIFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIoKSBjb25zdDsKICAgICB2b2lkIGZsdXNoQ29tcG9z
aXRpbmdTdGF0ZShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciosIGludCBzeW5jT3B0aW9ucyA9
IDApOwogICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyKiwgVGV4dHVyZU1hcHBlciosIGludCBzeW5jT3B0aW9ucyA9IDApOwogICAgIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5o
ZWlnaHQoKSk7IH0KQEAgLTEyNywxOCArMTE3LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFp
bnQoKTsKIAotICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlQmFja2luZ1N0b3JlRnJvbUxheWVyKGJv
b2wgYikgeyBtX3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllciA9IGI7IH0KLSAgICB2
b2lkIHNldEJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KKyAgICB2b2lkIHNldEJhY2tp
bmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSkgeyBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsgfQogICAgIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9iYWNraW5n
U3RvcmU7IH0KICAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwogCiAgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJik7CiAK
LSAgICB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpOwogICAg
IHZvaWQgYXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKIAogcHJpdmF0ZToKLSAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpOworICAgIGNvbnN0IFRleHR1cmVNYXBwZXJMYXll
ciogcm9vdExheWVyKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2
ZSgpOwogICAgIHZvaWQgY29tcHV0ZU92ZXJsYXBzSWZOZWVkZWQoKTsKICAgICB2b2lkIGNvbXB1
dGVUaWxlcygpOwpAQCAtMTYxLDkgKzE0OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludFNl
bGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQg
cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJik7Ci0gICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlciosIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7Ci0KLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRl
cihHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0xheWVyKik7CiAKICAgICAvLyBHcmFwaGljc0xh
eWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2b2lkIHNldEFuaW1hdGVkVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgc2V0VHJhbnNmb3JtKG1hdHJpeCk7IH0K
QEAgLTIwMiw3ICsxODcsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgZmxvYXQgbV9jZW50ZXJa
OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgYm9vbCBtX3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9y
ZUZyb21MYXllcjsKIAogICAgIHN0cnVjdCBTdGF0ZSB7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9z
OwpAQCAtMjEyLDcgKzE5Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkcmVuVHJhbnNmb3JtOwogICAgICAgICBmbG9hdCBvcGFjaXR5OwogICAgICAgICBG
bG9hdFJlY3QgY29udGVudHNSZWN0OwotICAgICAgICBGbG9hdFJlY3QgbmVlZHNEaXNwbGF5UmVj
dDsKICAgICAgICAgaW50IGRlc2NlbmRhbnRzV2l0aENvbnRlbnQ7CiAgICAgICAgIFRleHR1cmVN
YXBwZXJMYXllciogbWFza0xheWVyOwogICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJlcGxp
Y2FMYXllcjsKQEAgLTIyNyw3ICsyMTAsNiBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNvbnRl
bnRzT3BhcXVlIDogMTsKICAgICAgICAgYm9vbCBiYWNrZmFjZVZpc2liaWxpdHkgOiAxOwogICAg
ICAgICBib29sIHZpc2libGUgOiAxOwotICAgICAgICBib29sIG5lZWRzRGlzcGxheTogMTsKICAg
ICAgICAgYm9vbCBtaWdodEhhdmVPdmVybGFwcyA6IDE7CiAgICAgICAgIGJvb2wgbmVlZHNSZXBh
aW50OwogICAgICAgICBTdGF0ZSgpCkBAIC0yNDEsNyArMjIzLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAsIGJhY2tmYWNlVmlz
aWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQotICAgICAgICAgICAg
LCBuZWVkc0Rpc3BsYXkodHJ1ZSkKICAgICAgICAgICAgICwgbWlnaHRIYXZlT3ZlcmxhcHMoZmFs
c2UpCiAgICAgICAgICAgICAsIG5lZWRzUmVwYWludChmYWxzZSkKICAgICAgICAgewpAQCAtMjUz
LDggKzIzNCw2IEBAIHByaXZhdGU6CiAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMgbV9hbmlt
YXRpb25zOwogICAgIEZsb2F0U2l6ZSBtX3Njcm9sbFBvc2l0aW9uRGVsdGE7CiAgICAgYm9vbCBt
X2ZpeGVkVG9WaWV3cG9ydDsKLSAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7Ci0gICAgZmxv
YXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKaW5kZXggOTY1MTg3NjYxNDczMGExMzFjNTUxOWZmNzQ4N2Y0ZGZmNGJkZjE1YS4u
ZjA1NGRjYTE2NGVlYjEyZThkYjNkYTliZDVhYzdmNmIxNjk2NjEzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtODYsOSArODYsOCBAQCBMYXllclRyZWVSZW5kZXJl
cjo6fkxheWVyVHJlZVJlbmRlcmVyKCkKIAogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXll
clRyZWVSZW5kZXJlcjo6Y3JlYXRlTGF5ZXIoV2ViTGF5ZXJJRCkKIHsKLSAgICBHcmFwaGljc0xh
eWVyKiBuZXdMYXllciA9IG5ldyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcih0aGlzKTsKLSAg
ICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIobmV3TGF5
ZXIpOwotICAgIGxheWVyLT5zZXRTaG91bGRVcGRhdGVCYWNraW5nU3RvcmVGcm9tTGF5ZXIoZmFs
c2UpOworICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBuZXdMYXllciA9IG5ldyBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcih0aGlzKTsKKyAgICBuZXdMYXllci0+c2V0U2hvdWxkTWFu
YWdlQmFja2luZ1N0b3JlKGZhbHNlKTsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3TGF5ZXIpOwog
fQogCkBAIC00MTEsNyArNDEwLDcgQEAgUGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZT4gTGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZShHcmFwaGljc0wKICAgICBSZWZQ
dHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlKj4obGF5ZXItPmJhY2tpbmdTdG9yZSgpLmdldCgpKTsKICAg
ICBpZiAoIWJhY2tpbmdTdG9yZSkgewogICAgICAgICBiYWNraW5nU3RvcmUgPSBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7Ci0gICAgICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUo
YmFja2luZ1N0b3JlLmdldCgpKTsKKyAgICAgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZShiYWNr
aW5nU3RvcmUpOwogICAgIH0KICAgICBBU1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICByZXR1cm4g
YmFja2luZ1N0b3JlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175715</attachid>
            <date>2012-11-22 16:39:36 -0800</date>
            <delta_ts>2012-11-22 18:20:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103046-20121123093715.patch</filename>
            <type>text/plain</type>
            <size>27144</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmZjQ5MzI5NDYwYTk0
MTVlMDczNjM0ZjJiOTdiMDY1OTI3MmNlMy4uN2NhZjY5OTk1ZjZlMTI2NDg4NDQ0YmNhY2YwNTZj
NjIzOTVlZGNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTExLTIyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBd
IFJlbW92ZSBkZXBlbmRlbmN5IG9mIFRleHR1cmVNYXBwZXJMYXllciBvbiBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzA0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVk
IEdyYXBoaWNzIG9uIFdLMS4KKworICAgICAgICBXZSB3YW50IHRvIG1ha2UgVGV4dHVyZU1hcHBl
ckxheWVyIGludG8gYW4gYWN0b3IgbW9kZWwuIEFmdGVyIG1ha2luZyBhbiBhY3RvcgorICAgICAg
ICBtb2RlbCwgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgYW5kIExheWVyVHJlZVJlbmRlcmVy
IHdpbGwgY29tbXVuaWNhdGUgd2l0aAorICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgdXNpbmcg
bWVzc2FnZSBwYXNzaW5nLiBJbiB0aGUgZmlyc3Qgc3RlcCwgd2Ugd2FudCB0byBoaWRlCisgICAg
ICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gVGV4dHVyZU1hcHBlckxheWVyLgor
CisgICAgICAgIFRoZXJlIGFyZSAyIGtpbmRzIG9mIGRlcGVuZGVuY2llcyBvZiBUZXh0dXJlTWFw
cGVyTGF5ZXIgaW4gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIDEuIFRvIHF1
ZXJ5IGxheWVyIHN0YXRlcworICAgICAgICAyLiBUbyBwYWludCBsYXllciBjb250ZW50cworCisg
ICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZWQgdGhlIHNlY29uZCBkZXBlbmRlbmN5LiBD
dXJyZW50bHksIFRleHR1cmVNYXBwZXJMYXllcgorICAgICAgICByZXF1ZXN0cyBwYWludGluZyBj
b250ZW50cyB0byBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBpbiBXSzEgd2hpbGUKKyAgICAg
ICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgcHJlcGFyZXMgdGhlIGNvbnRlbnRzIGluIExheWVyVHJl
ZVJlbmRlcmVyLiBUaGlzIHBhdGNoCisgICAgICAgIG1ha2VzIFdLMSBwcmVwYXJlIHRoZSBjb250
ZW50cyBpbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBsaWtlCisgICAgICAgIExheWVyVHJl
ZVJlbmRlcmVyLgorCisgICAgICAgIFdlIHdpbGwgcmVtb3ZlIHRoZSBmaXJzdCBkZXBlbmRlbmN5
IGluIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgbGF5
b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZEZsdXNoQ29tcG9zaXRp
bmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldEhhc093bkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZVNlbGYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6U3RhdGU6OlN0YXRlKToKKwogMjAxMi0xMS0yMiAgRGFuIENhcm5leSAgPGRjYXJuZXlA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBbVjhdIGZpeCBET01XcmFwcGVyV29ybGQgZGVzdHJ1Y3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGY5MDJhNWY0MWVjNjNiZDFhODQ3OTcwNGM3OTY4M2YwZDQxNDRiOTQu
LjI0YmFjNzRmYzBjMjAyMDQwNTU1MjcwMGMyOWM4MDgzNzJiN2RmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwyMiBAQAogMjAxMi0xMS0yMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFwXSBSZW1vdmUgZGVwZW5kZW5jeSBvZiBUZXh0
dXJlTWFwcGVyTGF5ZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGNyZWF0ZSBpdHMgb3duIGJhY2tpbmcKKyAgICAgICAg
c3RvcmUuIEhvd2V2ZXIsIExheWVyVHJlZVJlbmRlcmVyIGFsc28gY3JlYXRlcyBpdHMgb3duIGJh
Y2tpbmcgc3RvcmUuIFNvCisgICAgICAgIHdoZW4gTGF5ZXJUcmVlUmVuZGVyZXIgdXNlcyBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciwKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgbmVlZHMg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgdG8gbm90IGNyZWF0ZSBpdHMgb3duCisgICAgICAg
IGJhY2tpbmcgc3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpn
ZXRCYWNraW5nU3RvcmUpOgorCisyMDEyLTExLTIyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBMYXllclRy
ZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSgpIGRvZXMgbm90IHJlbW92ZSB0aWxlcyBhY3R1YWxseS4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAzMAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBmZGRiNzg5
NzU2YTQ0NWQ3OTRlODgzODhhYWZhZmY0NmFlY2E2ODdlLi4zOWMwMmI0YTg4N2Q3NGUwZmI5Zjhm
MDJlOTRjMmI5MDJmZDY2Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTIwLDkgKzIwLDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyRmFjdG9yeS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
I2lmIFVTRShDQUlSTykKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3
LDcgKzU0LDkgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKICAgICAsIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soMCkKICAgICAsIG1fbmVlZHNEaXNw
bGF5KGZhbHNlKQorICAgICwgbV9oYXNPd25CYWNraW5nU3RvcmUodHJ1ZSkKICAgICAsIG1fZml4
ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBt
X2NvbnRlbnRzTGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiB7
CkBAIC02MSwxMyArNzAsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrIGNoYQogICAgIGNsaWVudCgp
LT5ub3RpZnlGbHVzaFJlcXVpcmVkKHRoaXMpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRTeW5jaHJvbml6ZSgpCi17Ci0gICAgbV9jaGFuZ2VNYXNrID0gMDsKLSAg
ICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwotICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJl
Y3QoKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TmFtZShuYW1lKTsKQEAg
LTM3Nyw2ICszNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkK
IHsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUodGhpcyk7CisgICAgZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpA
QCAtMzg0LDggKzM4NywxMjIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1
c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JikKIHsK
ICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUodGhpcywgVGV4dHVyZU1hcHBlckxh
eWVyOjpUcmF2ZXJzZURlc2NlbmRhbnRzKTsKKyAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVS
ZWN1cnNpdmUoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCkKK3sKKyAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBt
X2NoYW5nZU1hc2sgPSAwOworICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgbV9uZWVk
c0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmUoKQoreworICAgIGRpZEZs
dXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRy
ZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihj
aGlsZHJlbigpW2ldKS0+ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CisgICAg
aWYgKG1hc2tMYXllcigpKQorICAgICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG1h
c2tMYXllcigpKS0+ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CisgICAgaWYg
KHJlcGxpY2FMYXllcigpKQorICAgICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKHJl
cGxpY2FMYXllcigpKS0+ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCit7
CisgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2Jh
Y2tpbmdTdG9yZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBh
cmVCYWNraW5nU3RvcmUoKQoreworICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7
CisgICAgICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKSk7CisgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKKyAg
ICAgICAgZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KG1fbmVlZHNEaXNwbGF5
UmVjdCkpOworICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyID0gbV9sYXllci0+dGV4dHVyZU1hcHBl
cigpOworICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyKTsKKworICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUoKTsKKworICAgIC8vIFBhaW50IHRoZSBlbnRpcmUgZGlydHkgcmVjdCBpbnRv
IGFuIGltYWdlIGJ1ZmZlci4gVGhpcyBlbnN1cmVzIHdlIG9ubHkgcGFpbnQgb25jZS4KKyAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0
eVJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpOworICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
dGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0
LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwor
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOwor
ICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOworCisg
ICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgaW5jcmVtZW50UmVw
YWludENvdW50KCk7CisgICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKKyAgICB9
CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJUKGR5bmFtaWNf
Y2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQo
KSkpOworI2VuZGlmCisgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2Jh
Y2tpbmdTdG9yZS5nZXQoKSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0
dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6
OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKworICAgIGJhY2tpbmdTdG9yZS0+
c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKTsKKyAgICBiYWNraW5n
U3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldp
ZHRoKTsKKworICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgbV9uZWVkc0Rpc3BsYXlS
ZWN0ID0gSW50UmVjdCgpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZHJhd3NDb250ZW50
KCkgJiYgY29udGVudHNBcmVWaXNpYmxlKCkgJiYgIW1fc2l6ZS5pc0VtcHR5KCk7Cit9CisKKyNp
ZiBVU0UoQ0FJUk8pCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWlu
dENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CisK
KyAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIHJlcGFpbnRD
b3VudCgpKS51dGY4KCk7CisgICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShjciwgInNhbnMtc2Vy
aWYiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9MRCk7Cisg
ICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOworCisgICAgY2Fpcm9fdGV4dF9leHRlbnRz
X3QgcmVwYWludFRleHRFeHRlbnRzOworICAgIGNhaXJvX3RleHRfZXh0ZW50cyhjciwgcmVwYWlu
dENvdW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7CisKKyAgICBzdGF0aWMgY29uc3Qg
aW50IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7CisgICAgc2V0U291cmNlUkdCQUZyb21D
b2xvcihjciwgaXNTaG93aW5nRGVidWdCb3JkZXIoKSA/IG1fZGVidWdCb3JkZXJDb2xvciA6IENv
bG9yKDAsIDI1NSwgMCwgMTI3KSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLAorICAg
ICAgICByZXBhaW50VGV4dEV4dGVudHMud2lkdGggKyAocmVwYWludENvdW50Qm9yZGVyV2lkdGgg
KiAyKSwKKyAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIChyZXBhaW50Q291bnRC
b3JkZXJXaWR0aCAqIDIpKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJvX3NldF9z
b3VyY2VfcmdiKGNyLCAxLCAxLCAxKTsKKyAgICBjYWlyb19tb3ZlX3RvKGNyLCByZXBhaW50Q291
bnRCb3JkZXJXaWR0aCwgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIHJlcGFpbnRDb3VudEJv
cmRlcldpZHRoKTsKKyAgICBjYWlyb19zaG93X3RleHQoY3IsIHJlcGFpbnRDb3VudC5kYXRhKCkp
OworCisgICAgY2Fpcm9fcmVzdG9yZShjcik7Cit9CisjZWxzZQordm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKKwogYm9vbCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIWtleWZyYW1lc05hbWUuaXNFbXB0eSgpKTsKQEAgLTQyOSw3ICs1NDYsMTAgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmly
ZWQoVGltZXI8R3JhcGhpY3NMYXllclQKIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKIHsKLSAg
ICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcihjb2xvciwgd2lkdGgpOworICAgIC8vIFRoZSBkZWZh
dWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQor
ICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdl
IGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7
CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGggKiAyOwogfQogCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBi
ZWE4YzU0M2E3ZmExNTFkMTliOWQyMGQ5OTEwZTRjODQzOTNjMDQ1Li5hZjQ5NDA5NDM1ZWI5NjNi
ODRmOGU4MTBiYjdjNGYyMThjMzYxZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaApAQCAtMjUsMTEgKzI1LDEwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNs
aWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVy
LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBU
ZXh0dXJlTWFwcGVyTGF5ZXI7Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOwogY2xhc3MgVGV4dHVyZU1h
cHBlcjsKIAogY2xhc3MgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllciB7CkBAIC03Niw3ICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdlTWFzayk7CiAgICAgaW5saW5lIGludCBjaGFu
Z2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VNYXNrOyB9Ci0gICAgdm9pZCBkaWRTeW5j
aHJvbml6ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJp
bmcmLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmLCBkb3VibGUpOwpAQCAtODQsOCArODIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmlt
YXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CiAKICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQotICAgIGJv
b2wgbmVlZHNEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rpc3BsYXk7IH0KLSAgICBJ
bnRSZWN0IG5lZWRzRGlzcGxheVJlY3QoKSBjb25zdCB7IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0
KG1fbmVlZHNEaXNwbGF5UmVjdCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRl
cihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIApAQCAtOTMsMjIgKzg5LDM4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7
CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3Zp
bmcgZGVwZW5kZW5jeSBvZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci4KKyAgICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNP
d25CYWNraW5nU3RvcmUgPSBiOyB9CisKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29s
IGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9W
aWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIHZvaWQgZGlkRmx1c2hD
b21wb3NpdGluZ1N0YXRlKCk7CisgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVSZWN1
cnNpdmUoKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgcHJlcGFy
ZUJhY2tpbmdTdG9yZSgpOworICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0
OworICAgIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZv
aWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI+Kik7CiAKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xheWVyOwogICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdl
OwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKwogICAgIGlu
dCBtX2NoYW5nZU1hc2s7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheTsKKyAgICBib29sIG1faGFz
T3duQmFja2luZ1N0b3JlOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisKKyAgICBDb2xv
ciBtX2RlYnVnQm9yZGVyQ29sb3I7CisgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOworCiAg
ICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKICAgICBGbG9h
dFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1f
YW5pbWF0aW9uczsKLSAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiopOwogICAgIFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyPiBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKaW5kZXggZmU2YjZjMGUxZWU5NTA3NTI3MTAyMGU3YTdkNDQ1MzhjMmRiZTgy
OC4uNTBiMzJiMzYwMjNmM2JiNWQ5YWMyZTc4ZTM2MGQ0NTY5NWJlODBkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKQEAgLTIwLDE5ICsyMCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKLSNpbmNsdWRlICJzdGRpby5oIgot
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotI2lmIFVT
RShDQUlSTykKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzMx
LDcgQEAgVGV4dHVyZU1hcHBlckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKICAgICByZXR1cm4gbGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKGxheWVyKS0+bGF5ZXIoKSA6IDA7CiB9CiAKLVRleHR1cmVNYXBwZXJMYXllciogVGV4dHVy
ZU1hcHBlckxheWVyOjpyb290TGF5ZXIoKQorY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFy
Z2V0KQogICAgICAgICByZXR1cm4gbV9lZmZlY3RUYXJnZXQtPnJvb3RMYXllcigpOwpAQCAtOTUs
NTYgKzg1LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVj
dXJzaXZlKCkKICAgICAgICAgc29ydEJ5Wk9yZGVyKG1fY2hpbGRyZW4sIDAsIG1fY2hpbGRyZW4u
c2l6ZSgpKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnVwZGF0ZUJhY2tpbmdTdG9y
ZShUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ciogbGF5ZXIpCi17Ci0gICAgaWYgKCFsYXllciB8fCAhdGV4dHVyZU1hcHBlcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKCFtX3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3N0YXRlLmRyYXdzQ29udGVudCB8fCAhbV9z
dGF0ZS5jb250ZW50c1Zpc2libGUgfHwgbV9zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBtX2Jh
Y2tpbmdTdG9yZS5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW50UmVj
dCBkaXJ0eVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxheWVyUmVjdCgpKTsKLSAgICBpZiAoIW1f
c3RhdGUubmVlZHNEaXNwbGF5KQotICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVuY2xvc2lu
Z0ludFJlY3QobV9zdGF0ZS5uZWVkc0Rpc3BsYXlSZWN0KSk7Ci0gICAgaWYgKGRpcnR5UmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0g
ICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUoKTsKLQotI2lmIFBMQVRGT1JNKFFUKQotICAgIEFTU0VSVChkeW5hbWljX2Nhc3Q8VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpKTsKLSNl
bmRpZgotCi0gICAgLy8gUGFpbnQgdGhlIGVudGlyZSBkaXJ0eSByZWN0IGludG8gYW4gaW1hZ2Ug
YnVmZmVyLiBUaGlzIGVuc3VyZXMgd2Ugb25seSBwYWludCBvbmNlLgotICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5zaXpl
KCkpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFw
cGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNldFRleHRE
cmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAgY29udGV4
dC0+dHJhbnNsYXRlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgbGF5ZXIt
PnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotCi0gICAg
aWYgKGxheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKSB7Ci0gICAgICAgIGxheWVyLT5p
bmNyZW1lbnRSZXBhaW50Q291bnQoKTsKLSAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRl
eHQsIGxheWVyKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZm
ZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgYmFja2luZ1N0
b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBk
aXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRh
KTsKLQotICAgIGJhY2tpbmdTdG9yZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhsYXllci0+aXNTaG93
aW5nRGVidWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2Rl
YnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7Ci0KLSAgICBtX3N0YXRlLm5lZWRz
RGlzcGxheSA9IGZhbHNlOwotICAgIG1fc3RhdGUubmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3Qo
KTsKLX0KLQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50KCkKIHsKICAgICBjb21wdXRl
VHJhbnNmb3Jtc1JlY3Vyc2l2ZSgpOwpAQCAtMTcwLDYgKzExMCw3IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0
aW9ucykKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzayA9IG9wdGlvbnMubWFzazsKIAog
ICAgIGlmIChtX2JhY2tpbmdTdG9yZSkgeworICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0Nv
bnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc2l6ZS5pc0VtcHR5KCkpOwog
ICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVy
UmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOwogICAgIH0KQEAgLTQwNiw5
ICszNDcsMTQgQEAgVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKICAg
ICAgICAgbV9wYXJlbnQtPm1fY2hpbGRyZW4ucmVtb3ZlKG1fcGFyZW50LT5tX2NoaWxkcmVuLmZp
bmQodGhpcykpOwogfQogCitUZXh0dXJlTWFwcGVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnRleHR1
cmVNYXBwZXIoKSBjb25zdAoreworICAgIHJldHVybiByb290TGF5ZXIoKS0+bV90ZXh0dXJlTWFw
cGVyOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRl
KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBncmFwaGljc0xheWVyLCBpbnQgb3B0aW9ucykK
IHsKLSAgICBmbHVzaENvbXBvc2l0aW5nU3RhdGUoZ3JhcGhpY3NMYXllciwgcm9vdExheWVyKCkt
Pm1fdGV4dHVyZU1hcHBlciwgb3B0aW9ucyk7CisgICAgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGdy
YXBoaWNzTGF5ZXIsIHRleHR1cmVNYXBwZXIoKSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVTZWxmKEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKiBncmFwaGljc0xheWVyLCBUZXh0dXJlTWFwcGVyKikKQEAgLTQ4OSw5ICs0MzUs
NiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlU2VsZihH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZwogI2VuZGlmCiAgICAgbV9maXhlZFRvVmlld3Bv
cnQgPSBncmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKIAotICAgIG1fc3RhdGUubmVl
ZHNEaXNwbGF5ID0gbV9zdGF0ZS5uZWVkc0Rpc3BsYXkgfHwgZ3JhcGhpY3NMYXllci0+bmVlZHNE
aXNwbGF5KCk7Ci0gICAgaWYgKCFtX3N0YXRlLm5lZWRzRGlzcGxheSkKLSAgICAgICAgbV9zdGF0
ZS5uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKGdyYXBoaWNzTGF5ZXItPm5lZWRzRGlzcGxheVJlY3Qo
KSk7CiAgICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigp
OwogCiAgICAgbV90cmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKQEAg
LTUzOSwxMCArNDgyLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3JhcGgKICAgICBpZiAoIXRleHR1
cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChncmFwaGljc0xheWVyICYmICEo
b3B0aW9ucyAmIENvbXB1dGF0aW9uc09ubHkpKSB7CisgICAgaWYgKGdyYXBoaWNzTGF5ZXIgJiYg
IShvcHRpb25zICYgQ29tcHV0YXRpb25zT25seSkpCiAgICAgICAgIGZsdXNoQ29tcG9zaXRpbmdT
dGF0ZVNlbGYoZ3JhcGhpY3NMYXllciwgdGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIGdyYXBoaWNz
TGF5ZXItPmRpZFN5bmNocm9uaXplKCk7Ci0gICAgfQogCiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIg
JiYgbV9zdGF0ZS5tYXNrTGF5ZXIpIHsKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZSh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5
ZXItPm1hc2tMYXllcigpKSwgdGV4dHVyZU1hcHBlcik7CkBAIC01NTYsNyArNDk3LDYgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlciogZ3JhcGgKICAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZSh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5
ZXItPnJlcGxpY2FMYXllcigpKSwgdGV4dHVyZU1hcHBlcik7CiAKICAgICBzeW5jQW5pbWF0aW9u
cygpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSh0ZXh0dXJlTWFwcGVyLCBncmFwaGljc0xheWVy
KTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBUcmF2ZXJzZURlc2NlbmRhbnRzKSkKICAgICAgICAg
b3B0aW9ucyA9IENvbXB1dGF0aW9uc09ubHk7CkBAIC01OTgsNDggKzUzOCw1IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3QgRmxv
YXRTaXplJiBkZWx0YSkKICAgICBtX3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0
aW9uKCkpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdCb3JkZXIoY29u
c3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKLXsKLSAgICAvLyBUaGUgZGVmYXVsdCB2YWx1
ZXMgZm9yIEdyYXBoaWNzTGF5ZXIgZGVidWcgYm9yZGVycyBhcmUgYSBsaXR0bGUKLSAgICAvLyBo
YXJkIHRvIHNlZSAoc29tZSBsZXNzIHRoYW4gb25lIHBpeGVsIHdpZGUpLCBzbyB3ZSBkb3VibGUg
dGhlaXIgc2l6ZSBoZXJlLgotICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwotICAgIG1f
ZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoICogMjsKLX0KLQotI2lmIFVTRShDQUlSTykKLXZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLQotICAgIGNhaXJvX3QqIGNyID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAg
ICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIGxheWVyLT5yZXBh
aW50Q291bnQoKSkudXRmOCgpOwotICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3IsICJzYW5z
LXNlcmlmIiwgQ0FJUk9fRk9OVF9TTEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQp
OwotICAgIGNhaXJvX3NldF9mb250X3NpemUoY3IsIDE4KTsKLQotICAgIGNhaXJvX3RleHRfZXh0
ZW50c190IHJlcGFpbnRUZXh0RXh0ZW50czsKLSAgICBjYWlyb190ZXh0X2V4dGVudHMoY3IsIHJl
cGFpbnRDb3VudC5kYXRhKCksICZyZXBhaW50VGV4dEV4dGVudHMpOwotCi0gICAgc3RhdGljIGNv
bnN0IGludCByZXBhaW50Q291bnRCb3JkZXJXaWR0aCA9IDEwOwotICAgIHNldFNvdXJjZVJHQkFG
cm9tQ29sb3IoY3IsIGxheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRl
ckNvbG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3Is
IDAsIDAsCi0gICAgICAgICAgICAgICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChy
ZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAgICAgICAgICAgICAgICAgICByZXBhaW50
VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikpOwotICAg
IGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEp
OwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBhaW50
VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNhaXJv
X3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKLX0KLSNlbHNlCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCi0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCmluZGV4IDVjZDk1OWQ2MTNkODM0YTQ5Y2E5NjFlMTczMTk4MTAzYzRjMmIw
NjkuLjI3YTc3ZjZmZWY4NjJjOGRhNjVlNWI0ODViYzZlNzg1ZGIwNjdjYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmgKQEAgLTI0LDI0ICsyNCwxNSBAQAogCiAjaW5jbHVkZSAiRmlsdGVyT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oIgotI2lu
Y2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiSW50UG9pbnRIYXNoLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKLSNp
bmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKLSNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7Ci1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBjbGFz
cyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyB7CkBAIC0xMDcsMTMgKzk4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2NvbnRl
bnRzTGF5ZXIoMCkKICAgICAgICAgLCBtX29wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlcloo
MCkKLSAgICAgICAgLCBtX3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllcih0cnVlKQog
ICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQotICAgICAgICAsIG1fZGVidWdCb3JkZXJXaWR0
aCgwKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKKyAg
ICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBmbHVzaENv
bXBvc2l0aW5nU3RhdGUoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqLCBpbnQgc3luY09wdGlv
bnMgPSAwKTsKICAgICB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlciosIFRleHR1cmVNYXBwZXIqLCBpbnQgc3luY09wdGlvbnMgPSAwKTsKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCkpOyB9CkBAIC0xMjcsMTggKzExNywxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHBhaW50KCk7CiAKLSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXll
cihib29sIGIpIHsgbV9zaG91bGRVcGRhdGVCYWNraW5nU3RvcmVGcm9tTGF5ZXIgPSBiOyB9Ci0g
ICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlKSB7IG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOyB9CisgICAgdm9pZCBzZXRC
YWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KICAgICBQYXNzUmVmUHRy
PFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1fYmFj
a2luZ1N0b3JlOyB9CiAgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKIAog
ICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYp
OwogCi0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsK
ICAgICB2b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CiAKIHByaXZhdGU6Ci0gICAg
VGV4dHVyZU1hcHBlckxheWVyKiByb290TGF5ZXIoKTsKKyAgICBjb25zdCBUZXh0dXJlTWFwcGVy
TGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1
cnNpdmUoKTsKICAgICB2b2lkIGNvbXB1dGVPdmVybGFwc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBj
b21wdXRlVGlsZXMoKTsKQEAgLTE2MSw5ICsxNDksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFp
bnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50
U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2
b2lkIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYpOwotICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXIq
LCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciopOwotCi0gICAgdm9pZCBkcmF3UmVwYWludENv
dW50ZXIoR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3NMYXllciopOwogCiAgICAgLy8gR3JhcGhp
Y3NMYXllckFuaW1hdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBzZXRBbmltYXRlZFRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSB7IHNldFRyYW5zZm9ybShtYXRyaXgp
OyB9CkBAIC0yMDIsNyArMTg3LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGZsb2F0IG1fY2Vu
dGVyWjsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIGJvb2wgbV9zaG91bGRVcGRhdGVCYWNraW5n
U3RvcmVGcm9tTGF5ZXI7CiAKICAgICBzdHJ1Y3QgU3RhdGUgewogICAgICAgICBGbG9hdFBvaW50
IHBvczsKQEAgLTIxMiw3ICsxOTYsNiBAQCBwcml2YXRlOgogICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjaGlsZHJlblRyYW5zZm9ybTsKICAgICAgICAgZmxvYXQgb3BhY2l0eTsKICAgICAg
ICAgRmxvYXRSZWN0IGNvbnRlbnRzUmVjdDsKLSAgICAgICAgRmxvYXRSZWN0IG5lZWRzRGlzcGxh
eVJlY3Q7CiAgICAgICAgIGludCBkZXNjZW5kYW50c1dpdGhDb250ZW50OwogICAgICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcjsKICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBy
ZXBsaWNhTGF5ZXI7CkBAIC0yMjcsNyArMjEwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBj
b250ZW50c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsK
ICAgICAgICAgYm9vbCB2aXNpYmxlIDogMTsKLSAgICAgICAgYm9vbCBuZWVkc0Rpc3BsYXk6IDE7
CiAgICAgICAgIGJvb2wgbWlnaHRIYXZlT3ZlcmxhcHMgOiAxOwogICAgICAgICBib29sIG5lZWRz
UmVwYWludDsKICAgICAgICAgU3RhdGUoKQpAQCAtMjQxLDcgKzIyMyw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAsIGNvbnRlbnRzT3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBiYWNrZmFj
ZVZpc2liaWxpdHkoZmFsc2UpCiAgICAgICAgICAgICAsIHZpc2libGUodHJ1ZSkKLSAgICAgICAg
ICAgICwgbmVlZHNEaXNwbGF5KHRydWUpCiAgICAgICAgICAgICAsIG1pZ2h0SGF2ZU92ZXJsYXBz
KGZhbHNlKQogICAgICAgICAgICAgLCBuZWVkc1JlcGFpbnQoZmFsc2UpCiAgICAgICAgIHsKQEAg
LTI1Myw4ICsyMzQsNiBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1f
YW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwogICAgIGJv
b2wgbV9maXhlZFRvVmlld3BvcnQ7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwotICAg
IGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCmluZGV4IDk2NTE4NzY2MTQ3MzBhMTMxYzU1MTlmZjc0ODdmNGRmZjRiZGYx
NWEuLjUxNjdjZjJhZDMwZTYwOGNmZmMyYzEzY2U5ZTJhZjcxY2Y5NTZkNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTg2LDkgKzg2LDggQEAgTGF5ZXJUcmVlUmVu
ZGVyZXI6On5MYXllclRyZWVSZW5kZXJlcigpCiAKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4g
TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyKFdlYkxheWVySUQpCiB7Ci0gICAgR3JhcGhp
Y3NMYXllciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIodGhpcyk7
Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG5l
d0xheWVyKTsKLSAgICBsYXllci0+c2V0U2hvdWxkVXBkYXRlQmFja2luZ1N0b3JlRnJvbUxheWVy
KGZhbHNlKTsKKyAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogbmV3TGF5ZXIgPSBuZXcg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIodGhpcyk7CisgICAgbmV3TGF5ZXItPnNldEhhc093
bkJhY2tpbmdTdG9yZShmYWxzZSk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ld0xheWVyKTsKIH0K
IApAQCAtNDExLDcgKzQxMCw3IEBAIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IExheWVyVHJlZVJlbmRlcmVyOjpnZXRCYWNraW5nU3RvcmUoR3JhcGhpY3NMCiAgICAgUmVmUHRy
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7CiAgICAg
aWYgKCFiYWNraW5nU3RvcmUpIHsKICAgICAgICAgYmFja2luZ1N0b3JlID0gQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotICAgICAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKGJh
Y2tpbmdTdG9yZS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKTsKICAgICB9CiAgICAgQVNTRVJUKGJhY2tpbmdTdG9yZSk7CiAgICAgcmV0dXJuIGJh
Y2tpbmdTdG9yZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175722</attachid>
            <date>2012-11-22 18:20:12 -0800</date>
            <delta_ts>2012-11-22 18:24:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103046-20121123111751.patch</filename>
            <type>text/plain</type>
            <size>27150</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmZjQ5MzI5NDYwYTk0
MTVlMDczNjM0ZjJiOTdiMDY1OTI3MmNlMy4uN2NhZjY5OTk1ZjZlMTI2NDg4NDQ0YmNhY2YwNTZj
NjIzOTVlZGNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTExLTIyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBd
IFJlbW92ZSBkZXBlbmRlbmN5IG9mIFRleHR1cmVNYXBwZXJMYXllciBvbiBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzA0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVk
IEdyYXBoaWNzIG9uIFdLMS4KKworICAgICAgICBXZSB3YW50IHRvIG1ha2UgVGV4dHVyZU1hcHBl
ckxheWVyIGludG8gYW4gYWN0b3IgbW9kZWwuIEFmdGVyIG1ha2luZyBhbiBhY3RvcgorICAgICAg
ICBtb2RlbCwgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgYW5kIExheWVyVHJlZVJlbmRlcmVy
IHdpbGwgY29tbXVuaWNhdGUgd2l0aAorICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgdXNpbmcg
bWVzc2FnZSBwYXNzaW5nLiBJbiB0aGUgZmlyc3Qgc3RlcCwgd2Ugd2FudCB0byBoaWRlCisgICAg
ICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gVGV4dHVyZU1hcHBlckxheWVyLgor
CisgICAgICAgIFRoZXJlIGFyZSAyIGtpbmRzIG9mIGRlcGVuZGVuY2llcyBvZiBUZXh0dXJlTWFw
cGVyTGF5ZXIgaW4gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIDEuIFRvIHF1
ZXJ5IGxheWVyIHN0YXRlcworICAgICAgICAyLiBUbyBwYWludCBsYXllciBjb250ZW50cworCisg
ICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZWQgdGhlIHNlY29uZCBkZXBlbmRlbmN5LiBD
dXJyZW50bHksIFRleHR1cmVNYXBwZXJMYXllcgorICAgICAgICByZXF1ZXN0cyBwYWludGluZyBj
b250ZW50cyB0byBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBpbiBXSzEgd2hpbGUKKyAgICAg
ICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgcHJlcGFyZXMgdGhlIGNvbnRlbnRzIGluIExheWVyVHJl
ZVJlbmRlcmVyLiBUaGlzIHBhdGNoCisgICAgICAgIG1ha2VzIFdLMSBwcmVwYXJlIHRoZSBjb250
ZW50cyBpbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBsaWtlCisgICAgICAgIExheWVyVHJl
ZVJlbmRlcmVyLgorCisgICAgICAgIFdlIHdpbGwgcmVtb3ZlIHRoZSBmaXJzdCBkZXBlbmRlbmN5
IGluIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgbGF5
b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZEZsdXNoQ29tcG9zaXRp
bmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldEhhc093bkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZVNlbGYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6U3RhdGU6OlN0YXRlKToKKwogMjAxMi0xMS0yMiAgRGFuIENhcm5leSAgPGRjYXJuZXlA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBbVjhdIGZpeCBET01XcmFwcGVyV29ybGQgZGVzdHJ1Y3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGRhNTQ1Zjg1NmUzZDU4NGM3ZmRmMGEwZjU2YmRkOWEwYmNmOGY2MzAu
LjM1NDQ0NmJjNjcyZDFjZDJlZDk4ZTUxZDA5ZjkyNjNkMTg0ZDFkZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwyMiBAQAogMjAxMi0xMS0yMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFwXSBSZW1vdmUgZGVwZW5kZW5jeSBvZiBUZXh0
dXJlTWFwcGVyTGF5ZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGNyZWF0ZSBpdHMgb3duIGJhY2tpbmcKKyAgICAgICAg
c3RvcmUuIEhvd2V2ZXIsIExheWVyVHJlZVJlbmRlcmVyIGFsc28gY3JlYXRlcyBpdHMgb3duIGJh
Y2tpbmcgc3RvcmUuIFNvCisgICAgICAgIHdoZW4gTGF5ZXJUcmVlUmVuZGVyZXIgdXNlcyBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciwKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgbmVlZHMg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgdG8gbm90IGNyZWF0ZSBpdHMgb3duCisgICAgICAg
IGJhY2tpbmcgc3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpn
ZXRCYWNraW5nU3RvcmUpOgorCisyMDEyLTExLTIyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBMYXllclRy
ZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSgpIGRvZXMgbm90IHJlbW92ZSB0aWxlcyBhY3R1YWxseS4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAzMAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBmZGRiNzg5
NzU2YTQ0NWQ3OTRlODgzODhhYWZhZmY0NmFlY2E2ODdlLi5iNTEyMGEzMDIyNDM2MTM4OGM0Zjgw
MzhlYmE2YTY5ODQxZmYxMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTIwLDkgKzIwLDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyRmFjdG9yeS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
I2lmIFVTRShDQUlSTykKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3
LDcgKzU0LDkgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKICAgICAsIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soMCkKICAgICAsIG1fbmVlZHNEaXNw
bGF5KGZhbHNlKQorICAgICwgbV9oYXNPd25CYWNraW5nU3RvcmUodHJ1ZSkKICAgICAsIG1fZml4
ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBt
X2NvbnRlbnRzTGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiB7
CkBAIC02MSwxMyArNzAsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrIGNoYQogICAgIGNsaWVudCgp
LT5ub3RpZnlGbHVzaFJlcXVpcmVkKHRoaXMpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRTeW5jaHJvbml6ZSgpCi17Ci0gICAgbV9jaGFuZ2VNYXNrID0gMDsKLSAg
ICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwotICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJl
Y3QoKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TmFtZShuYW1lKTsKQEAg
LTM3Nyw2ICszNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkK
IHsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUodGhpcyk7CisgICAgZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpA
QCAtMzg0LDggKzM4NywxMjIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1
c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JikKIHsK
ICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUodGhpcywgVGV4dHVyZU1hcHBlckxh
eWVyOjpUcmF2ZXJzZURlc2NlbmRhbnRzKTsKKyAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVS
ZWN1cnNpdmUoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCkKK3sKKyAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBt
X2NoYW5nZU1hc2sgPSAwOworICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgbV9uZWVk
c0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmUoKQoreworICAgIGRpZEZs
dXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRy
ZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihj
aGlsZHJlbigpW2ldKS0+ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CisgICAg
aWYgKG1hc2tMYXllcigpKQorICAgICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG1h
c2tMYXllcigpKS0+ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CisgICAgaWYg
KHJlcGxpY2FMYXllcigpKQorICAgICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKHJl
cGxpY2FMYXllcigpKS0+ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCit7
CisgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2Jh
Y2tpbmdTdG9yZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBh
cmVCYWNraW5nU3RvcmUoKQoreworICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7
CisgICAgICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKSk7CisgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKKyAg
ICAgICAgZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KG1fbmVlZHNEaXNwbGF5
UmVjdCkpOworICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyID0gbV9sYXllci0+dGV4dHVyZU1hcHBl
cigpOworICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyKTsKKworICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUoKTsKKworICAgIC8vIFBhaW50IHRoZSBlbnRpcmUgZGlydHkgcmVjdCBpbnRv
IGFuIGltYWdlIGJ1ZmZlci4gVGhpcyBlbnN1cmVzIHdlIG9ubHkgcGFpbnQgb25jZS4KKyAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0
eVJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpOworICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
dGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0
LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwor
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOwor
ICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOworCisg
ICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgaW5jcmVtZW50UmVw
YWludENvdW50KCk7CisgICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKKyAgICB9
CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJUKGR5bmFtaWNf
Y2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQo
KSkpOworI2VuZGlmCisgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2Jh
Y2tpbmdTdG9yZS5nZXQoKSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0
dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6
OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKworICAgIGJhY2tpbmdTdG9yZS0+
c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKTsKKyAgICBiYWNraW5n
U3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldp
ZHRoKTsKKworICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgbV9uZWVkc0Rpc3BsYXlS
ZWN0ID0gSW50UmVjdCgpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZHJhd3NDb250ZW50
KCkgJiYgY29udGVudHNBcmVWaXNpYmxlKCkgJiYgIW1fc2l6ZS5pc0VtcHR5KCk7Cit9CisKKyNp
ZiBVU0UoQ0FJUk8pCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWlu
dENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CisK
KyAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIHRoaXMtPnJl
cGFpbnRDb3VudCgpKS51dGY4KCk7CisgICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShjciwgInNh
bnMtc2VyaWYiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9M
RCk7CisgICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOworCisgICAgY2Fpcm9fdGV4dF9l
eHRlbnRzX3QgcmVwYWludFRleHRFeHRlbnRzOworICAgIGNhaXJvX3RleHRfZXh0ZW50cyhjciwg
cmVwYWludENvdW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7CisKKyAgICBzdGF0aWMg
Y29uc3QgaW50IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7CisgICAgc2V0U291cmNlUkdC
QUZyb21Db2xvcihjciwgaXNTaG93aW5nRGVidWdCb3JkZXIoKSA/IG1fZGVidWdCb3JkZXJDb2xv
ciA6IENvbG9yKDAsIDI1NSwgMCwgMTI3KSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAw
LAorICAgICAgICByZXBhaW50VGV4dEV4dGVudHMud2lkdGggKyAocmVwYWludENvdW50Qm9yZGVy
V2lkdGggKiAyKSwKKyAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIChyZXBhaW50
Q291bnRCb3JkZXJXaWR0aCAqIDIpKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJv
X3NldF9zb3VyY2VfcmdiKGNyLCAxLCAxLCAxKTsKKyAgICBjYWlyb19tb3ZlX3RvKGNyLCByZXBh
aW50Q291bnRCb3JkZXJXaWR0aCwgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIHJlcGFpbnRD
b3VudEJvcmRlcldpZHRoKTsKKyAgICBjYWlyb19zaG93X3RleHQoY3IsIHJlcGFpbnRDb3VudC5k
YXRhKCkpOworCisgICAgY2Fpcm9fcmVzdG9yZShjcik7Cit9CisjZWxzZQordm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKKwogYm9vbCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlv
biogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9mZnNldCkK
IHsKICAgICBBU1NFUlQoIWtleWZyYW1lc05hbWUuaXNFbXB0eSgpKTsKQEAgLTQyOSw3ICs1NDYs
MTAgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRp
bWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclQKIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkK
IHsKLSAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcihjb2xvciwgd2lkdGgpOworICAgIC8vIFRo
ZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxp
dHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSks
IHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0g
Y29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGggKiAyOwogfQogCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApp
bmRleCBiZWE4YzU0M2E3ZmExNTFkMTliOWQyMGQ5OTEwZTRjODQzOTNjMDQ1Li5hZjQ5NDA5NDM1
ZWI5NjNiODRmOGU4MTBiYjdjNGYyMThjMzYxZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaApAQCAtMjUsMTEgKzI1LDEwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckxheWVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOwogY2xhc3MgVGV4
dHVyZU1hcHBlcjsKIAogY2xhc3MgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgOiBwdWJsaWMg
R3JhcGhpY3NMYXllciB7CkBAIC03Niw3ICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdlTWFzayk7CiAgICAgaW5saW5lIGlu
dCBjaGFuZ2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VNYXNrOyB9Ci0gICAgdm9pZCBk
aWRTeW5jaHJvbml6ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBBbmltYXRpb24qLCBjb25z
dCBTdHJpbmcmLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25z
dCBTdHJpbmcmLCBkb3VibGUpOwpAQCAtODQsOCArODIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CiAKICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQot
ICAgIGJvb2wgbmVlZHNEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rpc3BsYXk7IH0K
LSAgICBJbnRSZWN0IG5lZWRzRGlzcGxheVJlY3QoKSBjb25zdCB7IHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KG1fbmVlZHNEaXNwbGF5UmVjdCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1
Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIApAQCAtOTMsMjIgKzg5LDM4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJik7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIg
cmVtb3ZpbmcgZGVwZW5kZW5jeSBvZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci4KKyAgICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsg
bV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9CisKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9y
dChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZp
eGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIHZvaWQgZGlk
Rmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3Rh
dGVSZWN1cnNpdmUoKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQg
cHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgp
IGNvbnN0OworICAgIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCopOwor
ICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI+Kik7CiAKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xheWVy
OwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRl
ZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOwor
ICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKwog
ICAgIGludCBtX2NoYW5nZU1hc2s7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheTsKKyAgICBib29s
IG1faGFzT3duQmFja2luZ1N0b3JlOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisKKyAg
ICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7CisgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRo
OworCiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKICAg
ICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRp
b25zIG1fYW5pbWF0aW9uczsKLSAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRp
bWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiopOwogICAgIFRpbWVyPEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyPiBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZmU2YjZjMGUxZWU5NTA3NTI3MTAyMGU3YTdkNDQ1Mzhj
MmRiZTgyOC4uNTBiMzJiMzYwMjNmM2JiNWQ5YWMyZTc4ZTM2MGQ0NTY5NWJlODBkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIwLDE5ICsyMCw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKLSNpbmNsdWRlICJzdGRp
by5oIgotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQot
I2lmIFVTRShDQUlSTykKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQx
LDcgKzMxLDcgQEAgVGV4dHVyZU1hcHBlckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFw
aGljc0xheWVyKiBsYXllcikKICAgICByZXR1cm4gbGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKGxheWVyKS0+bGF5ZXIoKSA6IDA7CiB9CiAKLVRleHR1cmVNYXBwZXJMYXllciog
VGV4dHVyZU1hcHBlckxheWVyOjpyb290TGF5ZXIoKQorY29uc3QgVGV4dHVyZU1hcHBlckxheWVy
KiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZm
ZWN0VGFyZ2V0KQogICAgICAgICByZXR1cm4gbV9lZmZlY3RUYXJnZXQtPnJvb3RMYXllcigpOwpA
QCAtOTUsNTYgKzg1LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zv
cm1zUmVjdXJzaXZlKCkKICAgICAgICAgc29ydEJ5Wk9yZGVyKG1fY2hpbGRyZW4sIDAsIG1fY2hp
bGRyZW4uc2l6ZSgpKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnVwZGF0ZUJhY2tp
bmdTdG9yZShUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlciogbGF5ZXIpCi17Ci0gICAgaWYgKCFsYXllciB8fCAhdGV4dHVyZU1hcHBlcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21M
YXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3N0YXRlLmRyYXdzQ29udGVudCB8
fCAhbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgfHwgbV9zaXplLmlzRW1wdHkoKSkgewotICAgICAg
ICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
SW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxheWVyUmVjdCgpKTsKLSAgICBp
ZiAoIW1fc3RhdGUubmVlZHNEaXNwbGF5KQotICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVu
Y2xvc2luZ0ludFJlY3QobV9zdGF0ZS5uZWVkc0Rpc3BsYXlSZWN0KSk7Ci0gICAgaWYgKGRpcnR5
UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUoKTsKLQotI2lmIFBMQVRGT1JNKFFUKQotICAgIEFTU0VSVChkeW5hbWljX2Nh
c3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkp
KTsKLSNlbmRpZgotCi0gICAgLy8gUGFpbnQgdGhlIGVudGlyZSBkaXJ0eSByZWN0IGludG8gYW4g
aW1hZ2UgYnVmZmVyLiBUaGlzIGVuc3VyZXMgd2Ugb25seSBwYWludCBvbmNlLgotICAgIE93blB0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVj
dC5zaXplKCkpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5j
b250ZXh0KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0
dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNl
dFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAg
Y29udGV4dC0+dHJhbnNsYXRlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAg
bGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwot
Ci0gICAgaWYgKGxheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKSB7Ci0gICAgICAgIGxh
eWVyLT5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKLSAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVy
KGNvbnRleHQsIGxheWVyKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1h
Z2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgYmFj
a2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9z
aXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1h
Z2VEYXRhKTsKLQotICAgIGJhY2tpbmdTdG9yZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhsYXllci0+
aXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRl
cihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7Ci0KLSAgICBtX3N0YXRl
Lm5lZWRzRGlzcGxheSA9IGZhbHNlOwotICAgIG1fc3RhdGUubmVlZHNEaXNwbGF5UmVjdCA9IElu
dFJlY3QoKTsKLX0KLQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50KCkKIHsKICAgICBj
b21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgpOwpAQCAtMTcwLDYgKzExMCw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYgb3B0aW9ucykKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzayA9IG9wdGlvbnMubWFz
azsKIAogICAgIGlmIChtX2JhY2tpbmdTdG9yZSkgeworICAgICAgICBBU1NFUlQobV9zdGF0ZS5k
cmF3c0NvbnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc2l6ZS5pc0VtcHR5
KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIG1f
YmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIs
IGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOwogICAgIH0KQEAg
LTQwNiw5ICszNDcsMTQgQEAgVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVy
KCkKICAgICAgICAgbV9wYXJlbnQtPm1fY2hpbGRyZW4ucmVtb3ZlKG1fcGFyZW50LT5tX2NoaWxk
cmVuLmZpbmQodGhpcykpOwogfQogCitUZXh0dXJlTWFwcGVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnRleHR1cmVNYXBwZXIoKSBjb25zdAoreworICAgIHJldHVybiByb290TGF5ZXIoKS0+bV90ZXh0
dXJlTWFwcGVyOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGlu
Z1N0YXRlKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBncmFwaGljc0xheWVyLCBpbnQgb3B0
aW9ucykKIHsKLSAgICBmbHVzaENvbXBvc2l0aW5nU3RhdGUoZ3JhcGhpY3NMYXllciwgcm9vdExh
eWVyKCktPm1fdGV4dHVyZU1hcHBlciwgb3B0aW9ucyk7CisgICAgZmx1c2hDb21wb3NpdGluZ1N0
YXRlKGdyYXBoaWNzTGF5ZXIsIHRleHR1cmVNYXBwZXIoKSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVTZWxmKEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKiBncmFwaGljc0xheWVyLCBUZXh0dXJlTWFwcGVyKikKQEAgLTQ4OSw5
ICs0MzUsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRl
U2VsZihHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZwogI2VuZGlmCiAgICAgbV9maXhlZFRv
Vmlld3BvcnQgPSBncmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKIAotICAgIG1fc3Rh
dGUubmVlZHNEaXNwbGF5ID0gbV9zdGF0ZS5uZWVkc0Rpc3BsYXkgfHwgZ3JhcGhpY3NMYXllci0+
bmVlZHNEaXNwbGF5KCk7Ci0gICAgaWYgKCFtX3N0YXRlLm5lZWRzRGlzcGxheSkKLSAgICAgICAg
bV9zdGF0ZS5uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKGdyYXBoaWNzTGF5ZXItPm5lZWRzRGlzcGxh
eVJlY3QoKSk7CiAgICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1M
YXllcigpOwogCiAgICAgbV90cmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigp
KTsKQEAgLTUzOSwxMCArNDgyLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3JhcGgKICAgICBpZiAo
IXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChncmFwaGljc0xheWVy
ICYmICEob3B0aW9ucyAmIENvbXB1dGF0aW9uc09ubHkpKSB7CisgICAgaWYgKGdyYXBoaWNzTGF5
ZXIgJiYgIShvcHRpb25zICYgQ29tcHV0YXRpb25zT25seSkpCiAgICAgICAgIGZsdXNoQ29tcG9z
aXRpbmdTdGF0ZVNlbGYoZ3JhcGhpY3NMYXllciwgdGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIGdy
YXBoaWNzTGF5ZXItPmRpZFN5bmNocm9uaXplKCk7Ci0gICAgfQogCiAgICAgaWYgKGdyYXBoaWNz
TGF5ZXIgJiYgbV9zdGF0ZS5tYXNrTGF5ZXIpIHsKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXIt
PmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBo
aWNzTGF5ZXItPm1hc2tMYXllcigpKSwgdGV4dHVyZU1hcHBlcik7CkBAIC01NTYsNyArNDk3LDYg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlciogZ3JhcGgKICAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIt
PmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBo
aWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKSwgdGV4dHVyZU1hcHBlcik7CiAKICAgICBzeW5jQW5p
bWF0aW9ucygpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSh0ZXh0dXJlTWFwcGVyLCBncmFwaGlj
c0xheWVyKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBUcmF2ZXJzZURlc2NlbmRhbnRzKSkKICAg
ICAgICAgb3B0aW9ucyA9IENvbXB1dGF0aW9uc09ubHk7CkBAIC01OTgsNDggKzUzOCw1IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29u
c3QgRmxvYXRTaXplJiBkZWx0YSkKICAgICBtX3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3Rl
ZFBvc2l0aW9uKCkpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdCb3Jk
ZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKLXsKLSAgICAvLyBUaGUgZGVmYXVs
dCB2YWx1ZXMgZm9yIEdyYXBoaWNzTGF5ZXIgZGVidWcgYm9yZGVycyBhcmUgYSBsaXR0bGUKLSAg
ICAvLyBoYXJkIHRvIHNlZSAoc29tZSBsZXNzIHRoYW4gb25lIHBpeGVsIHdpZGUpLCBzbyB3ZSBk
b3VibGUgdGhlaXIgc2l6ZSBoZXJlLgotICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwot
ICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoICogMjsKLX0KLQotI2lmIFVTRShDQUlSTykK
LXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLQotICAgIGNhaXJvX3QqIGNy
ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7
Ci0KLSAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIGxheWVy
LT5yZXBhaW50Q291bnQoKSkudXRmOCgpOwotICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3Is
ICJzYW5zLXNlcmlmIiwgQ0FJUk9fRk9OVF9TTEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hU
X0JPTEQpOwotICAgIGNhaXJvX3NldF9mb250X3NpemUoY3IsIDE4KTsKLQotICAgIGNhaXJvX3Rl
eHRfZXh0ZW50c190IHJlcGFpbnRUZXh0RXh0ZW50czsKLSAgICBjYWlyb190ZXh0X2V4dGVudHMo
Y3IsIHJlcGFpbnRDb3VudC5kYXRhKCksICZyZXBhaW50VGV4dEV4dGVudHMpOwotCi0gICAgc3Rh
dGljIGNvbnN0IGludCByZXBhaW50Q291bnRCb3JkZXJXaWR0aCA9IDEwOwotICAgIHNldFNvdXJj
ZVJHQkFGcm9tQ29sb3IoY3IsIGxheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1
Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0
aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAgICAgICAgICAgICAgICAgICBy
ZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikp
OwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEs
IDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCBy
ZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAg
IGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19y
ZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6ZHJhd1JlcGFp
bnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NMYXllciogbGF5ZXIp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCi0KIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDVjZDk1OWQ2MTNkODM0YTQ5Y2E5NjFlMTczMTk4MTAz
YzRjMmIwNjkuLjI3YTc3ZjZmZWY4NjJjOGRhNjVlNWI0ODViYzZlNzg1ZGIwNjdjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTI0LDI0ICsyNCwxNSBAQAogCiAjaW5jbHVkZSAiRmls
dGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRyYW5zZm9ybS5o
IgotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiSW50UG9pbnRIYXNoLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIK
LSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7Ci1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7
CiBjbGFzcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9ucyB7CkBAIC0xMDcsMTMgKzk4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X2NvbnRlbnRzTGF5ZXIoMCkKICAgICAgICAgLCBtX29wYWNpdHkoMSkKICAgICAgICAgLCBtX2Nl
bnRlclooMCkKLSAgICAgICAgLCBtX3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllcih0
cnVlKQogICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQotICAgICAgICAsIG1fZGVidWdCb3Jk
ZXJXaWR0aCgwKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7
CiAKKyAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBm
bHVzaENvbXBvc2l0aW5nU3RhdGUoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqLCBpbnQgc3lu
Y09wdGlvbnMgPSAwKTsKICAgICB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlciosIFRleHR1cmVNYXBwZXIqLCBpbnQgc3luY09wdGlvbnMgPSAwKTsK
ICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fc2l6ZS53aWR0aCgp
LCBtX3NpemUuaGVpZ2h0KCkpOyB9CkBAIC0xMjcsMTggKzExNywxNiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHBhaW50KCk7CiAKLSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZy
b21MYXllcihib29sIGIpIHsgbV9zaG91bGRVcGRhdGVCYWNraW5nU3RvcmVGcm9tTGF5ZXIgPSBi
OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlKSB7IG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOyB9CisgICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KICAgICBQYXNz
UmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJu
IG1fYmFja2luZ1N0b3JlOyB9CiAgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUo
KTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0
U2l6ZSYpOwogCi0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdp
ZHRoKTsKICAgICB2b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CiAKIHByaXZhdGU6
Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiByb290TGF5ZXIoKTsKKyAgICBjb25zdCBUZXh0dXJl
TWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVRyYW5zZm9y
bXNSZWN1cnNpdmUoKTsKICAgICB2b2lkIGNvbXB1dGVPdmVybGFwc0lmTmVlZGVkKCk7CiAgICAg
dm9pZCBjb21wdXRlVGlsZXMoKTsKQEAgLTE2MSw5ICsxNDksNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lk
IHBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsK
ICAgICB2b2lkIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYpOwotICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKFRleHR1cmVN
YXBwZXIqLCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciopOwotCi0gICAgdm9pZCBkcmF3UmVw
YWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3NMYXllciopOwogCiAgICAgLy8g
R3JhcGhpY3NMYXllckFuaW1hdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBzZXRBbmltYXRlZFRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSB7IHNldFRyYW5zZm9ybSht
YXRyaXgpOyB9CkBAIC0yMDIsNyArMTg3LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGZsb2F0
IG1fY2VudGVyWjsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIGJvb2wgbV9zaG91bGRVcGRhdGVC
YWNraW5nU3RvcmVGcm9tTGF5ZXI7CiAKICAgICBzdHJ1Y3QgU3RhdGUgewogICAgICAgICBGbG9h
dFBvaW50IHBvczsKQEAgLTIxMiw3ICsxOTYsNiBAQCBwcml2YXRlOgogICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjaGlsZHJlblRyYW5zZm9ybTsKICAgICAgICAgZmxvYXQgb3BhY2l0eTsK
ICAgICAgICAgRmxvYXRSZWN0IGNvbnRlbnRzUmVjdDsKLSAgICAgICAgRmxvYXRSZWN0IG5lZWRz
RGlzcGxheVJlY3Q7CiAgICAgICAgIGludCBkZXNjZW5kYW50c1dpdGhDb250ZW50OwogICAgICAg
ICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcjsKICAgICAgICAgVGV4dHVyZU1hcHBlckxh
eWVyKiByZXBsaWNhTGF5ZXI7CkBAIC0yMjcsNyArMjEwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
Ym9vbCBjb250ZW50c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5
IDogMTsKICAgICAgICAgYm9vbCB2aXNpYmxlIDogMTsKLSAgICAgICAgYm9vbCBuZWVkc0Rpc3Bs
YXk6IDE7CiAgICAgICAgIGJvb2wgbWlnaHRIYXZlT3ZlcmxhcHMgOiAxOwogICAgICAgICBib29s
IG5lZWRzUmVwYWludDsKICAgICAgICAgU3RhdGUoKQpAQCAtMjQxLDcgKzIyMyw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAsIGNvbnRlbnRzT3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBi
YWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpCiAgICAgICAgICAgICAsIHZpc2libGUodHJ1ZSkKLSAg
ICAgICAgICAgICwgbmVlZHNEaXNwbGF5KHRydWUpCiAgICAgICAgICAgICAsIG1pZ2h0SGF2ZU92
ZXJsYXBzKGZhbHNlKQogICAgICAgICAgICAgLCBuZWVkc1JlcGFpbnQoZmFsc2UpCiAgICAgICAg
IHsKQEAgLTI1Myw4ICsyMzQsNiBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRp
b25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwog
ICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9y
OwotICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDk2NTE4NzY2MTQ3MzBhMTMxYzU1MTlmZjc0ODdmNGRm
ZjRiZGYxNWEuLjUxNjdjZjJhZDMwZTYwOGNmZmMyYzEzY2U5ZTJhZjcxY2Y5NTZkNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTg2LDkgKzg2LDggQEAgTGF5ZXJU
cmVlUmVuZGVyZXI6On5MYXllclRyZWVSZW5kZXJlcigpCiAKIFBhc3NPd25QdHI8R3JhcGhpY3NM
YXllcj4gTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyKFdlYkxheWVySUQpCiB7Ci0gICAg
R3JhcGhpY3NMYXllciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIo
dGhpcyk7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxh
eWVyKG5ld0xheWVyKTsKLSAgICBsYXllci0+c2V0U2hvdWxkVXBkYXRlQmFja2luZ1N0b3JlRnJv
bUxheWVyKGZhbHNlKTsKKyAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogbmV3TGF5ZXIg
PSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIodGhpcyk7CisgICAgbmV3TGF5ZXItPnNl
dEhhc093bkJhY2tpbmdTdG9yZShmYWxzZSk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ld0xheWVy
KTsKIH0KIApAQCAtNDExLDcgKzQxMCw3IEBAIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU+IExheWVyVHJlZVJlbmRlcmVyOjpnZXRCYWNraW5nU3RvcmUoR3JhcGhpY3NMCiAgICAg
UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2Fz
dDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7
CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKICAgICAgICAgYmFja2luZ1N0b3JlID0gQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotICAgICAgICBsYXllci0+c2V0QmFja2luZ1N0
b3JlKGJhY2tpbmdTdG9yZS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUo
YmFja2luZ1N0b3JlKTsKICAgICB9CiAgICAgQVNTRVJUKGJhY2tpbmdTdG9yZSk7CiAgICAgcmV0
dXJuIGJhY2tpbmdTdG9yZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175724</attachid>
            <date>2012-11-22 18:24:25 -0800</date>
            <delta_ts>2012-11-23 08:52:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103046-20121123112204.patch</filename>
            <type>text/plain</type>
            <size>27180</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmZjQ5MzI5NDYwYTk0
MTVlMDczNjM0ZjJiOTdiMDY1OTI3MmNlMy4uN2NhZjY5OTk1ZjZlMTI2NDg4NDQ0YmNhY2YwNTZj
NjIzOTVlZGNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTExLTIyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBd
IFJlbW92ZSBkZXBlbmRlbmN5IG9mIFRleHR1cmVNYXBwZXJMYXllciBvbiBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzA0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVk
IEdyYXBoaWNzIG9uIFdLMS4KKworICAgICAgICBXZSB3YW50IHRvIG1ha2UgVGV4dHVyZU1hcHBl
ckxheWVyIGludG8gYW4gYWN0b3IgbW9kZWwuIEFmdGVyIG1ha2luZyBhbiBhY3RvcgorICAgICAg
ICBtb2RlbCwgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgYW5kIExheWVyVHJlZVJlbmRlcmVy
IHdpbGwgY29tbXVuaWNhdGUgd2l0aAorICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgdXNpbmcg
bWVzc2FnZSBwYXNzaW5nLiBJbiB0aGUgZmlyc3Qgc3RlcCwgd2Ugd2FudCB0byBoaWRlCisgICAg
ICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gVGV4dHVyZU1hcHBlckxheWVyLgor
CisgICAgICAgIFRoZXJlIGFyZSAyIGtpbmRzIG9mIGRlcGVuZGVuY2llcyBvZiBUZXh0dXJlTWFw
cGVyTGF5ZXIgaW4gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIDEuIFRvIHF1
ZXJ5IGxheWVyIHN0YXRlcworICAgICAgICAyLiBUbyBwYWludCBsYXllciBjb250ZW50cworCisg
ICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZWQgdGhlIHNlY29uZCBkZXBlbmRlbmN5LiBD
dXJyZW50bHksIFRleHR1cmVNYXBwZXJMYXllcgorICAgICAgICByZXF1ZXN0cyBwYWludGluZyBj
b250ZW50cyB0byBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBpbiBXSzEgd2hpbGUKKyAgICAg
ICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgcHJlcGFyZXMgdGhlIGNvbnRlbnRzIGluIExheWVyVHJl
ZVJlbmRlcmVyLiBUaGlzIHBhdGNoCisgICAgICAgIG1ha2VzIFdLMSBwcmVwYXJlIHRoZSBjb250
ZW50cyBpbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBsaWtlCisgICAgICAgIExheWVyVHJl
ZVJlbmRlcmVyLgorCisgICAgICAgIFdlIHdpbGwgcmVtb3ZlIHRoZSBmaXJzdCBkZXBlbmRlbmN5
IGluIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgbGF5
b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZEZsdXNoQ29tcG9zaXRp
bmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldEhhc093bkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZVNlbGYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6U3RhdGU6OlN0YXRlKToKKwogMjAxMi0xMS0yMiAgRGFuIENhcm5leSAgPGRjYXJuZXlA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBbVjhdIGZpeCBET01XcmFwcGVyV29ybGQgZGVzdHJ1Y3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGRhNTQ1Zjg1NmUzZDU4NGM3ZmRmMGEwZjU2YmRkOWEwYmNmOGY2MzAu
LjM1NDQ0NmJjNjcyZDFjZDJlZDk4ZTUxZDA5ZjkyNjNkMTg0ZDFkZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwyMiBAQAogMjAxMi0xMS0yMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFwXSBSZW1vdmUgZGVwZW5kZW5jeSBvZiBUZXh0
dXJlTWFwcGVyTGF5ZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGNyZWF0ZSBpdHMgb3duIGJhY2tpbmcKKyAgICAgICAg
c3RvcmUuIEhvd2V2ZXIsIExheWVyVHJlZVJlbmRlcmVyIGFsc28gY3JlYXRlcyBpdHMgb3duIGJh
Y2tpbmcgc3RvcmUuIFNvCisgICAgICAgIHdoZW4gTGF5ZXJUcmVlUmVuZGVyZXIgdXNlcyBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciwKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgbmVlZHMg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgdG8gbm90IGNyZWF0ZSBpdHMgb3duCisgICAgICAg
IGJhY2tpbmcgc3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpn
ZXRCYWNraW5nU3RvcmUpOgorCisyMDEyLTExLTIyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBMYXllclRy
ZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSgpIGRvZXMgbm90IHJlbW92ZSB0aWxlcyBhY3R1YWxseS4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAzMAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBmZGRiNzg5
NzU2YTQ0NWQ3OTRlODgzODhhYWZhZmY0NmFlY2E2ODdlLi5iNDdkMDhlN2QzZjM3MmE0MGZjNDRj
OTQ1MzA2ZDQ0NWFjMjgyMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTIwLDkgKzIwLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyRmFjdG9yeS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzU1LDkgQEAgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGll
bnQqIGNsaWUKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2No
YW5nZU1hc2soMCkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQorICAgICwgbV9oYXNPd25C
YWNraW5nU3RvcmUodHJ1ZSkKICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICwg
bV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAsIG1f
YW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiB7CkBAIC02MSwxMyArNzEsNiBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpDaGFuZ2VNYXNrIGNoYQogICAgIGNsaWVudCgpLT5ub3RpZnlGbHVzaFJlcXVpcmVkKHRoaXMp
OwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRTeW5jaHJvbml6ZSgp
Ci17Ci0gICAgbV9jaGFuZ2VNYXNrID0gMDsKLSAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwot
ICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKLX0KLQogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgR3Jh
cGhpY3NMYXllcjo6c2V0TmFtZShuYW1lKTsKQEAgLTM3Nyw2ICszODAsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIqCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICBtX2xheWVyLT5mbHVzaENvbXBv
c2l0aW5nU3RhdGUodGhpcyk7CisgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAK
IC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMzg0LDggKzM4OCwxMjIgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0
aW5nU3RhdGUodGhpcywgVGV4dHVyZU1hcHBlckxheWVyOjpUcmF2ZXJzZURlc2NlbmRhbnRzKTsK
KyAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmUoKTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCkKK3sKKyAg
ICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBtX2NoYW5nZU1hc2sgPSAwOworICAgIG1fbmVl
ZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgbV9uZWVkc0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5n
U3RhdGVSZWN1cnNpdmUoKQoreworICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAg
dG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihjaGlsZHJlbigpW2ldKS0+ZGlkRmx1c2hDb21w
b3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CisgICAgaWYgKG1hc2tMYXllcigpKQorICAgICAgICB0
b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG1hc2tMYXllcigpKS0+ZGlkRmx1c2hDb21wb3Np
dGluZ1N0YXRlUmVjdXJzaXZlKCk7CisgICAgaWYgKHJlcGxpY2FMYXllcigpKQorICAgICAgICB0
b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKHJlcGxpY2FMYXllcigpKS0+ZGlkRmx1c2hDb21w
b3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCit7CisgICAgaWYgKCFtX2hhc093bkJhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAg
IG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQoreworICAgIGlm
ICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLmNs
ZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJbnRSZWN0IGRpcnR5UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKSk7
CisgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKKyAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChl
bmNsb3NpbmdJbnRSZWN0KG1fbmVlZHNEaXNwbGF5UmVjdCkpOworICAgIGlmIChkaXJ0eVJlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyID0gbV9sYXllci0+dGV4dHVyZU1hcHBlcigpOworICAgIEFTU0VSVCh0ZXh0dXJlTWFw
cGVyKTsKKworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIG1fYmFja2luZ1N0b3Jl
ID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKKworICAgIC8vIFBh
aW50IHRoZSBlbnRpcmUgZGlydHkgcmVjdCBpbnRvIGFuIGltYWdlIGJ1ZmZlci4gVGhpcyBlbnN1
cmVzIHdlIG9ubHkgcGFpbnQgb25jZS4KKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVy
ZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOworICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZGly
dHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOworICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRl
bnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOworCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkpIHsKKyAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7CisgICAgICAgIGRyYXdS
ZXBhaW50Q291bnRlcihjb250ZXh0KTsKKyAgICB9CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisjaWYgUExB
VEZPUk0oUVQpCisgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOworI2VuZGlmCisgICAgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CisgICAgYmFj
a2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9z
aXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1h
Z2VEYXRhKTsKKworICAgIGJhY2tpbmdTdG9yZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dp
bmdEZWJ1Z0JvcmRlcigpKTsKKyAgICBiYWNraW5nU3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVi
dWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRoKTsKKworICAgIG1fbmVlZHNEaXNwbGF5
ID0gZmFsc2U7CisgICAgbV9uZWVkc0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOworfQorCitib29s
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYgY29udGVudHNBcmVWaXNpYmxlKCkg
JiYgIW1fc2l6ZS5pc0VtcHR5KCk7Cit9CisKKyNpZiBVU0UoQ0FJUk8pCit2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQoreworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CisKKyAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9
IFN0cmluZzo6Zm9ybWF0KCIlaSIsIHRoaXMtPnJlcGFpbnRDb3VudCgpKS51dGY4KCk7CisgICAg
Y2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShjciwgInNhbnMtc2VyaWYiLCBDQUlST19GT05UX1NMQU5U
X05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9MRCk7CisgICAgY2Fpcm9fc2V0X2ZvbnRfc2l6
ZShjciwgMTgpOworCisgICAgY2Fpcm9fdGV4dF9leHRlbnRzX3QgcmVwYWludFRleHRFeHRlbnRz
OworICAgIGNhaXJvX3RleHRfZXh0ZW50cyhjciwgcmVwYWludENvdW50LmRhdGEoKSwgJnJlcGFp
bnRUZXh0RXh0ZW50cyk7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHJlcGFpbnRDb3VudEJvcmRl
cldpZHRoID0gMTA7CisgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgaXNTaG93aW5nRGVi
dWdCb3JkZXIoKSA/IG1fZGVidWdCb3JkZXJDb2xvciA6IENvbG9yKDAsIDI1NSwgMCwgMTI3KSk7
CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLAorICAgICAgICByZXBhaW50VGV4dEV4dGVu
dHMud2lkdGggKyAocmVwYWludENvdW50Qm9yZGVyV2lkdGggKiAyKSwKKyAgICAgICAgcmVwYWlu
dFRleHRFeHRlbnRzLmhlaWdodCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpKTsKKyAg
ICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLCAxLCAx
KTsKKyAgICBjYWlyb19tb3ZlX3RvKGNyLCByZXBhaW50Q291bnRCb3JkZXJXaWR0aCwgcmVwYWlu
dFRleHRFeHRlbnRzLmhlaWdodCArIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoKTsKKyAgICBjYWly
b19zaG93X3RleHQoY3IsIHJlcGFpbnRDb3VudC5kYXRhKCkpOworCisgICAgY2Fpcm9fcmVzdG9y
ZShjcik7Cit9CisjZWxzZQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1Jl
cGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCisjZW5kaWYKKwogYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IElu
dFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlm
cmFtZXNOYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKICAgICBBU1NFUlQoIWtleWZyYW1lc05h
bWUuaXNFbXB0eSgpKTsKQEAgLTQyOSw3ICs1NDcsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXll
clQKIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIoY29u
c3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKIHsKLSAgICBtX2xheWVyLT5zZXREZWJ1Z0Jv
cmRlcihjb2xvciwgd2lkdGgpOworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhp
Y3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChz
b21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhl
cmUuCisgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldp
ZHRoID0gd2lkdGggKiAyOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBiZWE4YzU0M2E3ZmExNTFkMTliOWQy
MGQ5OTEwZTRjODQzOTNjMDQ1Li5hZjQ5NDA5NDM1ZWI5NjNiODRmOGU4MTBiYjdjNGYyMThjMzYx
ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjUsMTEg
KzI1LDEwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7Ci1j
bGFzcyBCaXRtYXBUZXh0dXJlOwogY2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIgOiBwdWJsaWMgR3JhcGhpY3NMYXllciB7CkBAIC03Niw3ICs3
NSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6Q2hhbmdlTWFzayk7CiAgICAgaW5saW5lIGludCBjaGFuZ2VNYXNrKCkgY29uc3QgeyByZXR1
cm4gbV9jaGFuZ2VNYXNrOyB9Ci0gICAgdm9pZCBkaWRTeW5jaHJvbml6ZSgpOwogCiAgICAgdmly
dHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IElu
dFNpemUmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUpOwogICAgIHZp
cnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmLCBkb3VibGUpOwpAQCAtODQs
OCArODIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNz
TGF5ZXJBbmltYXRpb25zJik7CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQotICAgIGJvb2wgbmVlZHNEaXNwbGF5KCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0Rpc3BsYXk7IH0KLSAgICBJbnRSZWN0IG5lZWRzRGlzcGxheVJl
Y3QoKSBjb25zdCB7IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KG1fbmVlZHNEaXNwbGF5UmVjdCk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0
IHdpZHRoKTsKIApAQCAtOTMsMjIgKzg5LDM4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKIAorICAgIC8vIEZJ
WE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBvZiBMYXll
clRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KKyAgICB2b2lkIHNl
dEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9
CisKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1Zp
ZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpOworICAgIHZvaWQgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7Cisg
ICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmUoKTsKKyAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAg
IGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OworICAgIHZvaWQgZHJhd1JlcGFp
bnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRp
bWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+Kik7CiAKICAgICBPd25Q
dHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRy
IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKwogICAgIGludCBtX2NoYW5nZU1hc2s7CiAgICAg
Ym9vbCBtX25lZWRzRGlzcGxheTsKKyAgICBib29sIG1faGFzT3duQmFja2luZ1N0b3JlOwogICAg
IGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisKKyAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7
CisgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOworCiAgICAgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlS
ZWN0OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKLSAgICB2b2lk
IGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyPiopOwogICAgIFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiBtX2FuaW1hdGlv
blN0YXJ0ZWRUaW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZmU2
YjZjMGUxZWU5NTA3NTI3MTAyMGU3YTdkNDQ1MzhjMmRiZTgyOC4uNTBiMzJiMzYwMjNmM2JiNWQ5
YWMyZTc4ZTM2MGQ0NTY5NWJlODBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAg
LTIwLDE5ICsyMCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckxheWVyLmgiCiAKLSNpbmNsdWRlICJzdGRpby5oIgotCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIK
LSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotI2lmIFVTRShDQUlSTykKLSNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzMxLDcgQEAgVGV4dHVyZU1hcHBlckxh
eWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICByZXR1
cm4gbGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+bGF5ZXIoKSA6
IDA7CiB9CiAKLVRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpyb290TGF5
ZXIoKQorY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RM
YXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQogICAgICAgICByZXR1cm4g
bV9lZmZlY3RUYXJnZXQtPnJvb3RMYXllcigpOwpAQCAtOTUsNTYgKzg1LDYgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKICAgICAgICAgc29y
dEJ5Wk9yZGVyKG1fY2hpbGRyZW4sIDAsIG1fY2hpbGRyZW4uc2l6ZSgpKTsKIH0KIAotdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogbGF5ZXIpCi17Ci0gICAgaWYg
KCFsYXllciB8fCAhdGV4dHVyZU1hcHBlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFt
X3Nob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKCFtX3N0YXRlLmRyYXdzQ29udGVudCB8fCAhbV9zdGF0ZS5jb250ZW50c1Zpc2libGUg
fHwgbV9zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KGxheWVyUmVjdCgpKTsKLSAgICBpZiAoIW1fc3RhdGUubmVlZHNEaXNwbGF5KQot
ICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVuY2xvc2luZ0ludFJlY3QobV9zdGF0ZS5uZWVk
c0Rpc3BsYXlSZWN0KSk7Ci0gICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3Jl
ID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLQotI2lmIFBMQVRG
T1JNKFFUKQotICAgIEFTU0VSVChkeW5hbWljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpKTsKLSNlbmRpZgotCi0gICAgLy8gUGFpbnQg
dGhlIGVudGlyZSBkaXJ0eSByZWN0IGludG8gYW4gaW1hZ2UgYnVmZmVyLiBUaGlzIGVuc3VyZXMg
d2Ugb25seSBwYWludCBvbmNlLgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5zaXplKCkpOwotICAgIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgY29udGV4dC0+c2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFw
cGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1kaXJ0eVJl
Y3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgbGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNv
bnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotCi0gICAgaWYgKGxheWVyLT5pc1Nob3dpbmdS
ZXBhaW50Q291bnRlcigpKSB7Ci0gICAgICAgIGxheWVyLT5pbmNyZW1lbnRSZXBhaW50Q291bnQo
KTsKLSAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRleHQsIGxheWVyKTsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSk7Ci0gICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPiht
X2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0
ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLQotICAgIGJhY2tpbmdTdG9y
ZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhsYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0g
ICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVi
dWdCb3JkZXJXaWR0aCk7Ci0KLSAgICBtX3N0YXRlLm5lZWRzRGlzcGxheSA9IGZhbHNlOwotICAg
IG1fc3RhdGUubmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKLX0KLQogdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50KCkKIHsKICAgICBjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgp
OwpAQCAtMTcwLDYgKzExMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gbWFzayA9IG9wdGlvbnMubWFzazsKIAogICAgIGlmIChtX2JhY2tpbmdTdG9y
ZSkgeworICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQgJiYgbV9zdGF0ZS5jb250
ZW50c1Zpc2libGUgJiYgIW1fc2l6ZS5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVy
UmVjdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVy
ZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9w
YWNpdHksIG1hc2suZ2V0KCkpOwogICAgIH0KQEAgLTQwNiw5ICszNDcsMTQgQEAgVGV4dHVyZU1h
cHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKICAgICAgICAgbV9wYXJlbnQtPm1fY2hp
bGRyZW4ucmVtb3ZlKG1fcGFyZW50LT5tX2NoaWxkcmVuLmZpbmQodGhpcykpOwogfQogCitUZXh0
dXJlTWFwcGVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIoKSBjb25zdAorewor
ICAgIHJldHVybiByb290TGF5ZXIoKS0+bV90ZXh0dXJlTWFwcGVyOworfQorCiB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyKiBncmFwaGljc0xheWVyLCBpbnQgb3B0aW9ucykKIHsKLSAgICBmbHVzaENvbXBvc2l0
aW5nU3RhdGUoZ3JhcGhpY3NMYXllciwgcm9vdExheWVyKCktPm1fdGV4dHVyZU1hcHBlciwgb3B0
aW9ucyk7CisgICAgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGdyYXBoaWNzTGF5ZXIsIHRleHR1cmVN
YXBwZXIoKSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVTZWxmKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBncmFwaGljc0xh
eWVyLCBUZXh0dXJlTWFwcGVyKikKQEAgLTQ4OSw5ICs0MzUsNiBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlU2VsZihHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlciogZwogI2VuZGlmCiAgICAgbV9maXhlZFRvVmlld3BvcnQgPSBncmFwaGljc0xheWVyLT5m
aXhlZFRvVmlld3BvcnQoKTsKIAotICAgIG1fc3RhdGUubmVlZHNEaXNwbGF5ID0gbV9zdGF0ZS5u
ZWVkc0Rpc3BsYXkgfHwgZ3JhcGhpY3NMYXllci0+bmVlZHNEaXNwbGF5KCk7Ci0gICAgaWYgKCFt
X3N0YXRlLm5lZWRzRGlzcGxheSkKLSAgICAgICAgbV9zdGF0ZS5uZWVkc0Rpc3BsYXlSZWN0LnVu
aXRlKGdyYXBoaWNzTGF5ZXItPm5lZWRzRGlzcGxheVJlY3QoKSk7CiAgICAgbV9jb250ZW50c0xh
eWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV90cmFuc2Zvcm0u
c2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKQEAgLTUzOSwxMCArNDgyLDggQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlciogZ3JhcGgKICAgICBpZiAoIXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChncmFwaGljc0xheWVyICYmICEob3B0aW9ucyAmIENvbXB1dGF0aW9u
c09ubHkpKSB7CisgICAgaWYgKGdyYXBoaWNzTGF5ZXIgJiYgIShvcHRpb25zICYgQ29tcHV0YXRp
b25zT25seSkpCiAgICAgICAgIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZVNlbGYoZ3JhcGhpY3NMYXll
ciwgdGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIGdyYXBoaWNzTGF5ZXItPmRpZFN5bmNocm9uaXpl
KCk7Ci0gICAgfQogCiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIgJiYgbV9zdGF0ZS5tYXNrTGF5ZXIp
IHsKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh0b0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKSwgdGV4
dHVyZU1hcHBlcik7CkBAIC01NTYsNyArNDk3LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3JhcGgK
ICAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh0b0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKSwg
dGV4dHVyZU1hcHBlcik7CiAKICAgICBzeW5jQW5pbWF0aW9ucygpOwotICAgIHVwZGF0ZUJhY2tp
bmdTdG9yZSh0ZXh0dXJlTWFwcGVyLCBncmFwaGljc0xheWVyKTsKIAogICAgIGlmICghKG9wdGlv
bnMgJiBUcmF2ZXJzZURlc2NlbmRhbnRzKSkKICAgICAgICAgb3B0aW9ucyA9IENvbXB1dGF0aW9u
c09ubHk7CkBAIC01OTgsNDggKzUzOCw1IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRT
Y3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKICAgICBt
X3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQogCi12b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9h
dCB3aWR0aCkKLXsKLSAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIEdyYXBoaWNzTGF5ZXIg
ZGVidWcgYm9yZGVycyBhcmUgYSBsaXR0bGUKLSAgICAvLyBoYXJkIHRvIHNlZSAoc29tZSBsZXNz
IHRoYW4gb25lIHBpeGVsIHdpZGUpLCBzbyB3ZSBkb3VibGUgdGhlaXIgc2l6ZSBoZXJlLgotICAg
IG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdp
ZHRoICogMjsKLX0KLQotI2lmIFVTRShDQUlSTykKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpk
cmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0xheWVy
KiBsYXllcikKLXsKLQotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICBDU3RyaW5nIHJlcGFpbnRDb3Vu
dCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIGxheWVyLT5yZXBhaW50Q291bnQoKSkudXRmOCgpOwot
ICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3IsICJzYW5zLXNlcmlmIiwgQ0FJUk9fRk9OVF9T
TEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQpOwotICAgIGNhaXJvX3NldF9mb250
X3NpemUoY3IsIDE4KTsKLQotICAgIGNhaXJvX3RleHRfZXh0ZW50c190IHJlcGFpbnRUZXh0RXh0
ZW50czsKLSAgICBjYWlyb190ZXh0X2V4dGVudHMoY3IsIHJlcGFpbnRDb3VudC5kYXRhKCksICZy
ZXBhaW50VGV4dEV4dGVudHMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCByZXBhaW50Q291bnRC
b3JkZXJXaWR0aCA9IDEwOwotICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGxheWVyLT5p
c1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1
LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAgICAgICAg
ICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0
aCAqIDIpLAotICAgICAgICAgICAgICAgICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsg
KHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0g
ICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8o
Y3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsg
cmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWlu
dENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotI2VuZGlmCi0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDVj
ZDk1OWQ2MTNkODM0YTQ5Y2E5NjFlMTczMTk4MTAzYzRjMmIwNjkuLjI3YTc3ZjZmZWY4NjJjOGRh
NjVlNWI0ODViYzZlNzg1ZGIwNjdjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTI0
LDI0ICsyNCwxNSBAQAogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5j
bHVkZSAiSW50UG9pbnRIYXNoLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2lu
Y2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXI7Ci1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBjbGFzcyBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CkBAIC0xMDcsMTMg
Kzk4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAgICAg
LCBtX29wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKLSAgICAgICAgLCBtX3Nob3Vs
ZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllcih0cnVlKQogICAgICAgICAsIG1fdGV4dHVyZU1h
cHBlcigwKQotICAgICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgIHsgfQogCiAgICAg
dmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKKyAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIqLCBpbnQgc3luY09wdGlvbnMgPSAwKTsKICAgICB2b2lkIGZs
dXNoQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciosIFRleHR1cmVN
YXBwZXIqLCBpbnQgc3luY09wdGlvbnMgPSAwKTsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBJbnRTaXplKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOyB9CkBAIC0x
MjcsMTggKzExNywxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KCk7CiAKLSAgICB2b2lk
IHNldFNob3VsZFVwZGF0ZUJhY2tpbmdTdG9yZUZyb21MYXllcihib29sIGIpIHsgbV9zaG91bGRV
cGRhdGVCYWNraW5nU3RvcmVGcm9tTGF5ZXIgPSBiOyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlKSB7IG1fYmFja2luZ1N0
b3JlID0gYmFja2luZ1N0b3JlOyB9CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0
cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUpIHsgbV9iYWNraW5nU3Rv
cmUgPSBiYWNraW5nU3RvcmU7IH0KICAgICBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1fYmFja2luZ1N0b3JlOyB9CiAgICAgdm9p
ZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsUG9z
aXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgdm9pZCBzZXREZWJ1
Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKICAgICB2b2lkIGFwcGx5QW5pbWF0
aW9uc1JlY3Vyc2l2ZWx5KCk7CiAKIHByaXZhdGU6Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBy
b290TGF5ZXIoKTsKKyAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNv
bnN0OwogICAgIHZvaWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKICAgICB2b2lkIGNv
bXB1dGVPdmVybGFwc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBjb21wdXRlVGlsZXMoKTsKQEAgLTE2
MSw5ICsxNDksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRTZWxmKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50U2VsZkFuZENoaWxk
cmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwotICAgIHZv
aWQgdXBkYXRlQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlciopOwotCi0gICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0
KiwgR3JhcGhpY3NMYXllciopOwogCiAgICAgLy8gR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6Q2xp
ZW50CiAgICAgdm9pZCBzZXRBbmltYXRlZFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4KSB7IHNldFRyYW5zZm9ybShtYXRyaXgpOyB9CkBAIC0yMDIsNyArMTg3LDYg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGZsb2F0IG1fY2VudGVyWjsKICAgICBTdHJpbmcgbV9u
YW1lOwotICAgIGJvb2wgbV9zaG91bGRVcGRhdGVCYWNraW5nU3RvcmVGcm9tTGF5ZXI7CiAKICAg
ICBzdHJ1Y3QgU3RhdGUgewogICAgICAgICBGbG9hdFBvaW50IHBvczsKQEAgLTIxMiw3ICsxOTYs
NiBAQCBwcml2YXRlOgogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZHJlblRyYW5z
Zm9ybTsKICAgICAgICAgZmxvYXQgb3BhY2l0eTsKICAgICAgICAgRmxvYXRSZWN0IGNvbnRlbnRz
UmVjdDsKLSAgICAgICAgRmxvYXRSZWN0IG5lZWRzRGlzcGxheVJlY3Q7CiAgICAgICAgIGludCBk
ZXNjZW5kYW50c1dpdGhDb250ZW50OwogICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1hc2tM
YXllcjsKICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiByZXBsaWNhTGF5ZXI7CkBAIC0yMjcs
NyArMjEwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjb250ZW50c09wYXF1ZSA6IDE7CiAg
ICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsKICAgICAgICAgYm9vbCB2aXNpYmxl
IDogMTsKLSAgICAgICAgYm9vbCBuZWVkc0Rpc3BsYXk6IDE7CiAgICAgICAgIGJvb2wgbWlnaHRI
YXZlT3ZlcmxhcHMgOiAxOwogICAgICAgICBib29sIG5lZWRzUmVwYWludDsKICAgICAgICAgU3Rh
dGUoKQpAQCAtMjQxLDcgKzIyMyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGNvbnRlbnRz
T3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBiYWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpCiAg
ICAgICAgICAgICAsIHZpc2libGUodHJ1ZSkKLSAgICAgICAgICAgICwgbmVlZHNEaXNwbGF5KHRy
dWUpCiAgICAgICAgICAgICAsIG1pZ2h0SGF2ZU92ZXJsYXBzKGZhbHNlKQogICAgICAgICAgICAg
LCBuZWVkc1JlcGFpbnQoZmFsc2UpCiAgICAgICAgIHsKQEAgLTI1Myw4ICsyMzQsNiBAQCBwcml2
YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9h
dFNpemUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7
Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwotICAgIGZsb2F0IG1fZGVidWdCb3JkZXJX
aWR0aDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDk2
NTE4NzY2MTQ3MzBhMTMxYzU1MTlmZjc0ODdmNGRmZjRiZGYxNWEuLjUxNjdjZjJhZDMwZTYwOGNm
ZmMyYzEzY2U5ZTJhZjcxY2Y5NTZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5jcHAKQEAgLTg2LDkgKzg2LDggQEAgTGF5ZXJUcmVlUmVuZGVyZXI6On5MYXllclRyZWVSZW5k
ZXJlcigpCiAKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gTGF5ZXJUcmVlUmVuZGVyZXI6OmNy
ZWF0ZUxheWVyKFdlYkxheWVySUQpCiB7Ci0gICAgR3JhcGhpY3NMYXllciogbmV3TGF5ZXIgPSBu
ZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIodGhpcyk7Ci0gICAgVGV4dHVyZU1hcHBlckxh
eWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG5ld0xheWVyKTsKLSAgICBsYXllci0+
c2V0U2hvdWxkVXBkYXRlQmFja2luZ1N0b3JlRnJvbUxheWVyKGZhbHNlKTsKKyAgICBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIodGhpcyk7CisgICAgbmV3TGF5ZXItPnNldEhhc093bkJhY2tpbmdTdG9yZShmYWxzZSk7
CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ld0xheWVyKTsKIH0KIApAQCAtNDExLDcgKzQxMCw3IEBA
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IExheWVyVHJlZVJlbmRlcmVyOjpn
ZXRCYWNraW5nU3RvcmUoR3JhcGhpY3NMCiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlPiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZSo+
KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsK
ICAgICAgICAgYmFja2luZ1N0b3JlID0gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgp
OwotICAgICAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZS5nZXQoKSk7Cisg
ICAgICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKICAgICB9CiAgICAg
QVNTRVJUKGJhY2tpbmdTdG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdTdG9yZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>