<?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>136244</bug_id>
          
          <creation_ts>2014-08-25 20:29:41 -0700</creation_ts>
          <short_desc>Improve showRenderTree() output.</short_desc>
          <delta_ts>2014-08-29 10:55:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bjonesbe</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031298</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-08-25 20:29:41 -0700</bug_when>
    <thetext>The current output lacks dimension and inline information. (among other things)

current output (calling showRenderTreeForThis() from an lldb session):

RenderView 0x7fbb05c0da10
  RenderBlock 0x7fbb03c654c0           	HTML	0x7fbb03f3f640 (renderer 0x7fbb03c654c0)  (child needs style recalc)
    RenderBody 0x7fbb03c66320          	BODY	0x7fbb03ffa730 (renderer 0x7fbb03c66320)  CLASS=hp vasq (child needs style recalc)
      RenderBlock (relative positioned) 0x7fbb03c663e0	DIV	0x7fbb03ffa500 (renderer 0x7fbb03c663e0)  CLASS=ctr-p (child needs style recalc)
        RenderBlock 0x7fbb03c668a0     	DIV	0x7fbb03ffad00 (renderer 0x7fbb03c668a0) 
        RenderBlock (positioned) 0x7fbb03c67300	A	0x7fbb03f819a0 (renderer 0x7fbb03c67300)  STYLE=left:-1000em;position:absolute
          RenderText 0x7fbb03c677e0    	#text	0x7fbb03fbda30 &quot;Screen reader users, click here to turn off Google Instant.&quot;
        RenderBlock 0x7fbb058144b0     	DIV	0x7fbb03ffb3b0 (renderer 0x7fbb058144b0)  (child needs style recalc)
          RenderBlock (positioned) 0x7fbb058141c0	DIV	0x7fbb0a8036c0 (renderer 0x7fbb058141c0)  CLASS=gb_Dc gb_Lc gb_sb STYLE=min-width: 980px; (child needs style recalc)
            RenderFlexibleBox 0x7fbb05814fc0	DIV	0x7fbb03f9d4b0 (renderer 0x7fbb05814fc0)  CLASS=gb_Lb gb_Ic (child needs style recalc)
              RenderFlexibleBox 0x7fbb03c67840	DIV	0x7fbb03ff9d90 (renderer 0x7fbb03c67840)  CLASS=gb_Z gb_Ic gb_f gb_Hc gb_Lc STYLE=min-width: 295px;
                RenderFlexibleBox 0x7fbb03c6b8d0	DIV	0x7fbb03ff9e00 (renderer 0x7fbb03c6b8d0)  CLASS=gb_sc gb_f gb_Ic gb_Ac gb_h
                  RenderFlexibleBox 0x7fbb03c69ac0	DIV	0x7fbb03fcdff0 (renderer 0x7fbb03c69ac0)  CLASS=gb_e gb_f gb_g gb_Ic
                    RenderBlock 0x7fbb03c69cd0	A	0x7fbb03f84f40 (renderer 0x7fbb03c69cd0)  CLASS=gb_d gb_f
                      RenderText 0x7fbb03c6c0b0	#text	0x7fbb0a809e60 &quot;+You&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031303</commentid>
    <comment_count>1</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-08-25 20:34:08 -0700</bug_when>
    <thetext>proposed output:

has(L)ayer, (C)omposited, (D)irty layout, Dirty (S)tyle, (R)elative/Stick(Y)/A(B)solute/Fi(X)ed positioned, (O)verflow clipping, (A)nonymous, (G)enerated, (F)loating
LCD----G-  RenderView  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa782225b30)
L-D------    HTML RenderBlock  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa780450630) node-&gt;(0x7fa78044af30)
--D------      BODY RenderBody  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa780659110) node-&gt;(0x7fa780716450)
L-D-R----        DIV RenderBlock  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa7806566c0) node-&gt;(0x7fa780716800)
--D------          DIV RenderBlock  (0.00, 0.00) (1391.00, 0.00) renderer-&gt;(0x7fa78064b010) node-&gt;(0x7fa780717bb0)
L-D-B----          A RenderBlock  (-13000.00, 0.00) (330.00, 15.00) renderer-&gt;(0x7fa780641220) node-&gt;(0x7fa78071ec80)
--D------            #text RenderText renderer-&gt;(0x7fa7806574a0) node-&gt;(0x7fa78071e560) &quot;Screen reader users, click here to turn off Google Instant.&quot;
--D------          DIV RenderBlock  (0.00, 0.00) (1391.00, 60.00) renderer-&gt;(0x7fa780654d40) node-&gt;(0x7fa780659940)
L-D-B----            DIV RenderBlock  (0.00, 0.00) (1391.00, 60.00) renderer-&gt;(0x7fa780648a00) node-&gt;(0x7fa780643970)
L-D-R----              DIV RenderFlexibleBox  (0.00, 0.00) (1391.00, 60.00) renderer-&gt;(0x7fa7806431e0) node-&gt;(0x7fa780641820)
L-D-R----                DIV RenderFlexibleBox  (0.00, 0.00) (1391.00, 60.00) renderer-&gt;(0x7fa78064a8b0) node-&gt;(0x7fa780642bc0)
--D------                  DIV RenderFlexibleBox  (1065.06, 18.00) (181.59, 24.00) renderer-&gt;(0x7fa780649f60) node-&gt;(0x7fa78064b440)
--D------                    DIV RenderFlexibleBox  (0.00, 0.00) (60.00, 24.00) renderer-&gt;(0x7fa7806576a0) node-&gt;(0x7fa7806474f0)
L-D--O---                      A RenderBlock  (0.00, 0.00) (60.00, 24.00) renderer-&gt;(0x7fa780647db0) node-&gt;(0x7fa780643510)
---------                         RootInlineBox  (30.47, 4.00) (29.53, 15.00) (0x7fa78226b4d0)
---------                           InlineTextBox  (30.47, 4.00) (29.53, 15.00) (0x7fa78226b470) run(0, 4) &quot;+You&quot;
--D------                        #text RenderText renderer-&gt;(0x7fa780654750) node-&gt;(0x7fa7806436a0) &quot;+You&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031310</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-25 20:58:43 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; proposed output:
&gt; 
&gt; has(L)ayer, (C)omposited, (D)irty layout, Dirty (S)tyle, (R)elative/Stick(Y)/A(B)solute/Fi(X)ed positioned, (O)verflow clipping, (A)nonymous, (G)enerated, (F)loating
&gt; LCD----G-  RenderView  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa782225b30)
&gt; L-D------    HTML RenderBlock  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa780450630) node-&gt;(0x7fa78044af30)

I think it would be useful to separate the dirty flags from the rest, and order things differently. How about:

(R)elative/Stick(Y)/A(B)solute/Fi(X)ed positioned, (O)verflow clipping, (A)nonymous, (G)enerated, (F)loating has(L)ayer, (C)omposited [space] Dirty (S)tyle, (D)irty layout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031321</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-08-25 21:32:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; proposed output:
&gt; &gt; 
&gt; &gt; has(L)ayer, (C)omposited, (D)irty layout, Dirty (S)tyle, (R)elative/Stick(Y)/A(B)solute/Fi(X)ed positioned, (O)verflow clipping, (A)nonymous, (G)enerated, (F)loating
&gt; &gt; LCD----G-  RenderView  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa782225b30)
&gt; &gt; L-D------    HTML RenderBlock  (0.00, 0.00) (1391.00, 711.00) renderer-&gt;(0x7fa780450630) node-&gt;(0x7fa78044af30)
&gt; 
&gt; I think it would be useful to separate the dirty flags from the rest, and order things differently. How about:
&gt; 
&gt; (R)elative/Stick(Y)/A(B)solute/Fi(X)ed positioned, (O)verflow clipping, (A)nonymous, (G)enerated, (F)loating has(L)ayer, (C)omposited [space] Dirty (S)tyle, (D)irty layout

Good idea! I completely forgot about proper ordering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031435</commentid>
    <comment_count>4</comment_count>
      <attachid>237162</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-08-26 11:48:23 -0700</bug_when>
    <thetext>Created attachment 237162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031536</commentid>
    <comment_count>5</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-26 18:03:40 -0700</bug_when>
    <thetext>I looks like the class and style information is missing from the new dump. I have often found that information useful. Did you remove it deliberately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031546</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-08-26 18:42:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I looks like the class and style information is missing from the new dump. I have often found that information useful. Did you remove it deliberately?
Yes, I did. While I also find that info useful in certain scenarios, I think we should be using showNodeTree()/showNodeTreeForThis() to collect node related information instead.

There&apos;s also a showLineTree()/showLineTreeForThis() helper to display inline content. I decided to include that in the showRenderTree() printout as I believe inlines should be part of the render tree output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031899</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-27 21:20:18 -0700</bug_when>
    <thetext>I am also saddened by the removal of style and class information from the output of showRenderTreeForThis().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032069</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-28 14:03:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I am also saddened by the removal of style and class information from the output of showRenderTreeForThis().

Disregard this comment. It&apos;s seems sufficient to use showNodeTreeForThis() to see this information.

For some reason, I misread &quot;showNodeTreeForThis()&quot; as referring to Node::showTreeForThis() in comment 6 and thought it would be inconvenient in a debug session to have to explicitly call Node::showTreeForThis() on the renderer&apos;s node (RenderObject::m_node) as opposed to calling a function directly on a RenderObject to see a tree diagram with id and style information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032190</commentid>
    <comment_count>9</comment_count>
      <attachid>237162</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-29 10:55:51 -0700</bug_when>
    <thetext>Comment on attachment 237162
Patch

Clearing flags on attachment: 237162

Committed r173114: &lt;http://trac.webkit.org/changeset/173114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032191</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-29 10:55:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237162</attachid>
            <date>2014-08-26 11:48:23 -0700</date>
            <delta_ts>2014-08-29 10:55:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136244-20140826114816.patch</filename>
            <type>text/plain</type>
            <size>22420</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYxMjYwOWZmMzE1MDhh
NzEyZGUwODIxY2JjNmFjN2MyOGFhOGEwNy4uNTc3ZGM1N2I2ZDYyNDExM2NkZTIzYjk1ZmNkYmE2
Njg2MTVmMjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE0LTA4LTI2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBzaG93UmVuZGVy
VHJlZSgpIG91dHB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNjI0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBtb3JlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB0byBzaG93UmVuZGVyVHJlZSgp
LgorCisgICAgICAgIE5vdCB0ZXN0YWJsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzaG93TGluZVRyZWVGb3JUaGlz
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2hvd0xpbmVUcmVlQW5kTWFyayk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNob3dMaW5lQm94KToKKyAgICAgICAgKHNob3dO
b2RlVHJlZSk6CisgICAgICAgIChzaG93TGluZVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lQm94OjpzaG93Qm94KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lRmxvd0JveDo6c2hvd0xpbmVUcmVlQW5kTWFyayk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzaG93TGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzaG93Qm94KTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2hvd0xpbmVUcmVl
QW5kTWFyayk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OnNob3dMaW5lVHJlZUFuZE1hcmspOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3dSZW5kZXJUcmVlTGVnZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd05vZGVUcmVlRm9yVGhpcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJUcmVlRm9yVGhpcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dMaW5lVHJlZUZvclRoaXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpzaG93UmVnaW9uc0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd1JlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayk6CisgICAgICAgIChzaG93
Tm9kZVRyZWUpOgorICAgICAgICAoc2hvd0xpbmVUcmVlKToKKyAgICAgICAgKHNob3dSZW5kZXJU
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd1JlbmRlclRyZWVBbmRN
YXJrKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKwogMjAxNC0wOC0yNSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBSZW5kZXJPYmplY3Q6OnNo
b3dUcmVlKCkgYW5kIHNob3dUcmVlRm9yVGhpcygpIHRvIHNob3dOb2RlVHJlZSooKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKaW5kZXggMjNlODVhOGNmNTdlMjJkY2IwMTYx
NDE2MzA1MTA3NGU0OWQ1NDRkYS4uYzllNDQ4YTU1ZjVhNDg4NTVkYzdkZWRjYzlhYzkzMTIxY2U5
ZGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKQEAgLTk4LDMwICs5
OCwyNSBAQCB2b2lkIElubGluZUJveDo6c2hvd05vZGVUcmVlRm9yVGhpcygpIGNvbnN0CiAKIHZv
aWQgSW5saW5lQm94OjpzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3QKIHsKLSAgICBtX3JlbmRl
cmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zaG93TGluZVRyZWVBbmRNYXJrKHRoaXMsICIqIik7Cisg
ICAgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c2hvd0xpbmVUcmVlRm9yVGhpcygpOwog
fQogCi12b2lkIElubGluZUJveDo6c2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gq
IG1hcmtlZEJveDEsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMSwgY29uc3QgSW5saW5lQm94KiBt
YXJrZWRCb3gyLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDIsIGNvbnN0IFJlbmRlck9iamVjdCog
b2JqLCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIElubGluZUJveDo6c2hvd0xpbmVUcmVlQW5kTWFy
ayhjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIGlu
dCBwcmludGVkQ2hhcmFjdGVycyA9IDA7Ci0gICAgaWYgKHRoaXMgPT0gbWFya2VkQm94MSkKLSAg
ICAgICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50ZihzdGRlcnIsICIlcyIsIG1hcmtlZExh
YmVsMSk7Ci0gICAgaWYgKHRoaXMgPT0gbWFya2VkQm94MikKLSAgICAgICAgcHJpbnRlZENoYXJh
Y3RlcnMgKz0gZnByaW50ZihzdGRlcnIsICIlcyIsIG1hcmtlZExhYmVsMik7Ci0gICAgaWYgKCZt
X3JlbmRlcmVyID09IG9iaikKLSAgICAgICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50Zihz
dGRlcnIsICIqIik7Ci0gICAgZm9yICg7IHByaW50ZWRDaGFyYWN0ZXJzIDwgZGVwdGggKiAyOyBw
cmludGVkQ2hhcmFjdGVycysrKQotICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7Ci0KLSAgICBz
aG93Qm94KHByaW50ZWRDaGFyYWN0ZXJzKTsKKyAgICBzaG93TGluZUJveChtYXJrZWRCb3ggPT0g
dGhpcywgZGVwdGgpOwogfQogCi12b2lkIElubGluZUJveDo6c2hvd0JveChpbnQgcHJpbnRlZENo
YXJhY3RlcnMpIGNvbnN0Cit2b2lkIElubGluZUJveDo6c2hvd0xpbmVCb3goYm9vbCBtYXJrLCBp
bnQgZGVwdGgpIGNvbnN0CiB7Ci0gICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50ZihzdGRl
cnIsICIlc1x0JXAiLCBib3hOYW1lKCksIHRoaXMpOwotICAgIGZvciAoOyBwcmludGVkQ2hhcmFj
dGVycyA8IHNob3dUcmVlQ2hhcmFjdGVyT2Zmc2V0OyBwcmludGVkQ2hhcmFjdGVycysrKQorICAg
IGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLSAtLSIpOworICAgIGludCBwcmludGVkQ2hhcmFjdGVy
cyA9IDA7CisgICAgaWYgKG1hcmspIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIqIik7Cisg
ICAgICAgICsrcHJpbnRlZENoYXJhY3RlcnM7CisgICAgfQorICAgIHdoaWxlICgrK3ByaW50ZWRD
aGFyYWN0ZXJzIDw9IGRlcHRoICogMikKICAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOwotICAg
IGZwcmludGYoc3RkZXJyLCAiXHQlcyAlcFxuIiwgcmVuZGVyZXIoKS5yZW5kZXJOYW1lKCksICZy
ZW5kZXJlcigpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICAoJS4yZiwgJS4yZikgKCUuMmYs
ICUuMmYpICglcClcbiIsIGJveE5hbWUoKSwgeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpLCB0
aGlzKTsKIH0KIAogI2VuZGlmCkBAIC0zMzQsMTYgKzMyOSwxOCBAQCBMYXlvdXRQb2ludCBJbmxp
bmVCb3g6OmZsaXBGb3JXcml0aW5nTW9kZShjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAKICNp
Zm5kZWYgTkRFQlVHCiAKLXZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6OklubGluZUJv
eCogYikKK3ZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6OklubGluZUJveCogaW5saW5l
Qm94KQogewotICAgIGlmIChiKQotICAgICAgICBiLT5zaG93Tm9kZVRyZWVGb3JUaGlzKCk7Cisg
ICAgaWYgKCFpbmxpbmVCb3gpCisgICAgICAgIHJldHVybjsKKyAgICBpbmxpbmVCb3gtPnNob3dO
b2RlVHJlZUZvclRoaXMoKTsKIH0KIAotdm9pZCBzaG93TGluZVRyZWUoY29uc3QgV2ViQ29yZTo6
SW5saW5lQm94KiBiKQordm9pZCBzaG93TGluZVRyZWUoY29uc3QgV2ViQ29yZTo6SW5saW5lQm94
KiBpbmxpbmVCb3gpCiB7Ci0gICAgaWYgKGIpCi0gICAgICAgIGItPnNob3dMaW5lVHJlZUZvclRo
aXMoKTsKKyAgICBpZiAoIWlubGluZUJveCkKKyAgICAgICAgcmV0dXJuOworICAgIGlubGluZUJv
eC0+c2hvd0xpbmVUcmVlRm9yVGhpcygpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guaAppbmRleCAzMDc0MTdmYTc3ZjljODg1MzQxYjEwNWVhNGY2ZTAxNzQ2NmJi
M2Y2Li5iN2Y2Mzg3ZmMxOWM3YTdiNWNiNzQyNWRiZTVjNjQzMjQ5NGU0ZTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dOb2RlVHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lkIHNob3dMaW5lVHJlZUZv
clRoaXMoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0JveChpbnQgPSAwKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVC
b3gqID0gMCwgY29uc3QgY2hhciogPSAwLCBjb25zdCBJbmxpbmVCb3gqID0gMCwgY29uc3QgY2hh
ciogPSAwLCBjb25zdCBSZW5kZXJPYmplY3QqID0gMCwgaW50ID0gMCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiBtYXJrZWRCb3gs
IGludCBkZXB0aCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNob3dMaW5lQm94KGJvb2wgbWFy
aywgaW50IGRlcHRoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGJveE5hbWUoKSBj
b25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAKaW5kZXggYzU4ZTE0NmZjMzkxNWE2OWUzOTUwNTM4ZDFjOTQ2OWJjOGVmOWY5OC4uMjcyMmZj
MDM0ZWUxNzMxNTUyYjY3MzI4MWFiZjgxNzdkNWE2YWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTY0NSwxMSArMTY0NSwxMSBAQCBjb25zdCBj
aGFyKiBJbmxpbmVGbG93Qm94Ojpib3hOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIklubGluZUZs
b3dCb3giOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnNob3dMaW5lVHJlZUFuZE1hcmsoY29u
c3QgSW5saW5lQm94KiBtYXJrZWRCb3gxLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDEsIGNvbnN0
IElubGluZUJveCogbWFya2VkQm94MiwgY29uc3QgY2hhciogbWFya2VkTGFiZWwyLCBjb25zdCBS
ZW5kZXJPYmplY3QqIG9iaiwgaW50IGRlcHRoKSBjb25zdAordm9pZCBJbmxpbmVGbG93Qm94Ojpz
aG93TGluZVRyZWVBbmRNYXJrKGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgp
IGNvbnN0CiB7Ci0gICAgSW5saW5lQm94OjpzaG93TGluZVRyZWVBbmRNYXJrKG1hcmtlZEJveDEs
IG1hcmtlZExhYmVsMSwgbWFya2VkQm94MiwgbWFya2VkTGFiZWwyLCBvYmosIGRlcHRoKTsKKyAg
ICBJbmxpbmVCb3g6OnNob3dMaW5lVHJlZUFuZE1hcmsobWFya2VkQm94LCBkZXB0aCk7CiAgICAg
Zm9yIChjb25zdCBJbmxpbmVCb3gqIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBib3gt
Pm5leHRPbkxpbmUoKSkKLSAgICAgICAgYm94LT5zaG93TGluZVRyZWVBbmRNYXJrKG1hcmtlZEJv
eDEsIG1hcmtlZExhYmVsMSwgbWFya2VkQm94MiwgbWFya2VkTGFiZWwyLCBvYmosIGRlcHRoICsg
MSk7CisgICAgICAgIGJveC0+c2hvd0xpbmVUcmVlQW5kTWFyayhtYXJrZWRCb3gsIGRlcHRoICsg
MSk7CiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRleCBmNWQ1N2IxODUwY2Jl
ODkxOGNkMWM1NGVhMTcyN2M2OTNjOTNkZWJkLi5iOWZiZDhlYjkwYTVlMGE1MjJhMGYyNGVlNzY3
ZDRlNjgxZGE2OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgK
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCi0gICAg
dmlydHVhbCB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiA9IDAsIGNv
bnN0IGNoYXIqID0gMCwgY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0IGNoYXIqID0gMCwgY29u
c3QgUmVuZGVyT2JqZWN0KiA9IDAsIGludCA9IDApIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJrKGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBp
bnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogYm94TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAppbmRleCA1ODY0N2UxOTQ1ZWZmYTg2ZTQ1YjljOWQzZDUwNmJmZDFl
YmNjMWZlLi5iODBlNTc0ZDVmYmQ4NDY1ZDQ4NGI3MWRmOGYyZmVmODk0ZjU1NDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xNDM4LDIwICsxNDM4
LDIzIEBAIGNvbnN0IGNoYXIqIElubGluZVRleHRCb3g6OmJveE5hbWUoKSBjb25zdAogICAgIHJl
dHVybiAiSW5saW5lVGV4dEJveCI7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6c2hvd0JveChp
bnQgcHJpbnRlZENoYXJhY3RlcnMpIGNvbnN0Cit2b2lkIElubGluZVRleHRCb3g6OnNob3dMaW5l
Qm94KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogeworICAgIGZwcmludGYoc3RkZXJyLCAi
LS0tLS0tLSAtLSIpOworCisgICAgaW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKKyAgICBpZiAo
bWFyaykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIioiKTsKKyAgICAgICAgKytwcmludGVk
Q2hhcmFjdGVyczsKKyAgICB9CisgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVw
dGggKiAyKQorICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7CisKICAgICBTdHJpbmcgdmFsdWUg
PSByZW5kZXJlcigpLnRleHQoKTsKICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhzdGFydCgp
LCBsZW4oKSk7CiAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxcIik7CiAg
ICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJcXG4iKTsKLSAgICBwcmludGVkQ2hh
cmFjdGVycyArPSBmcHJpbnRmKHN0ZGVyciwgIiVzXHQlcCIsIGJveE5hbWUoKSwgdGhpcyk7Ci0g
ICAgZm9yICg7IHByaW50ZWRDaGFyYWN0ZXJzIDwgc2hvd1RyZWVDaGFyYWN0ZXJPZmZzZXQ7IHBy
aW50ZWRDaGFyYWN0ZXJzKyspCi0gICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKLSAgICBwcmlu
dGVkQ2hhcmFjdGVycyA9IGZwcmludGYoc3RkZXJyLCAiXHQlcyAlcCIsIHJlbmRlcmVyKCkucmVu
ZGVyTmFtZSgpLCAmcmVuZGVyZXIoKSk7Ci0gICAgY29uc3QgaW50IHJlbmRlcmVyQ2hhcmFjdGVy
T2Zmc2V0ID0gMjQ7Ci0gICAgZm9yICg7IHByaW50ZWRDaGFyYWN0ZXJzIDwgcmVuZGVyZXJDaGFy
YWN0ZXJPZmZzZXQ7IHByaW50ZWRDaGFyYWN0ZXJzKyspCi0gICAgICAgIGZwdXRjKCcgJywgc3Rk
ZXJyKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiglZCwlZCkgXCIlc1wiXG4iLCBzdGFydCgpLCBz
dGFydCgpICsgbGVuKCksIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgIGZwcmludGYoc3RkZXJy
LCAiJXMgICglLjJmLCAlLjJmKSAoJS4yZiwgJS4yZikgKCVwKSBydW4oJWQsICVkKSBcIiVzXCJc
biIsIGJveE5hbWUoKSwgeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpLCB0aGlzLCBzdGFydCgp
LCBzdGFydCgpICsgbGVuKCksIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IGUwNzQ2NjBmNWFkMWNm
ZjBhZWI3MDAxZjdkZjg1NjU5NDI4YWFjMTAuLjcyMWEzY2ZjYzhiZDFkZGY3YWI2OWZhYWI1ZGNk
MjZhMDRjMmNmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApA
QCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpcnR5T3duTGluZUJv
eGVzKCkgeyBkaXJ0eUxpbmVCb3hlcygpOyB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVh
bCB2b2lkIHNob3dCb3goaW50ID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBi
b3hOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNob3dMaW5lQm94KGJvb2wgbWFyaywg
aW50IGRlcHRoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IGJveE5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZDc3NzBkYjFkMjFhNmI0
MzM0M2Q0OTU5ZDhhNmI2ODFkYzNkNzNkYy4uMmU0ZWZiM2IxZjE5MThiMjlkYTBkNmE0YWM1OTc0
MTFmMjc4OTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC00MjA0LDExICs0MjA0LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2hlY2tQb3NpdGlvbmVkT2Jq
ZWN0c05lZWRMYXlvdXQoKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6c2hvd0xpbmVU
cmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gqLCBjb25zdCBjaGFyKiwgY29uc3QgSW5saW5lQm94
KiwgY29uc3QgY2hhciosIGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0Ci17Ci0gICAgc2hvd1Jl
bmRlck9iamVjdCgpOwotfQotCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBhMDg2M2JkOWFiY2I0MGFiYzVj
ZTQ3ZDI4MTc2YTU0NGRhZjZkMmJlLi5lZTcwZTc2M2JjOGUyYTAwMDVkYTM2YzE5ODc4NmFjNjJl
YTBiOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzAwLDcg
KzMwMCw2IEBAIHB1YmxpYzoKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGNoZWNrUG9zaXRp
b25lZE9iamVjdHNOZWVkTGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dMaW5lVHJlZUFu
ZE1hcmsoY29uc3QgSW5saW5lQm94KiA9IG51bGxwdHIsIGNvbnN0IGNoYXIqID0gbnVsbHB0ciwg
Y29uc3QgSW5saW5lQm94KiA9IG51bGxwdHIsIGNvbnN0IGNoYXIqID0gbnVsbHB0ciwgY29uc3Qg
UmVuZGVyT2JqZWN0KiA9IG51bGxwdHIpIGNvbnN0OwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA2NWI1OGQ1YjQxNDk1ZWEx
YzVhNzhiYTg5YWIwNGRlZDc1NDg2OTVkLi40NDE2NmEwNzE3NjI0MmYzODhkYTJjMWNkZDFmNGU4
NzkwMmMxZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcApAQCAtMzQ3NSwxMSArMzQ3NSwxMCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgUmVuZGVyQmxvY2tGbG93Ojpz
aG93TGluZVRyZWVBbmRNYXJrKGNvbnN0IElubGluZUJveCogbWFya2VkQm94MSwgY29uc3QgY2hh
ciogbWFya2VkTGFiZWwxLCBjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJveDIsIGNvbnN0IGNoYXIq
IG1hcmtlZExhYmVsMiwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmopIGNvbnN0Cit2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6c2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJv
eCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIFJlbmRlckJsb2NrOjpzaG93TGluZVRyZWVBbmRN
YXJrKG1hcmtlZEJveDEsIG1hcmtlZExhYmVsMSwgbWFya2VkQm94MiwgbWFya2VkTGFiZWwyLCBv
YmopOwogICAgIGZvciAoY29uc3QgUm9vdElubGluZUJveCogcm9vdCA9IGZpcnN0Um9vdEJveCgp
OyByb290OyByb290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkKLSAgICAgICAgcm9vdC0+c2hvd0xp
bmVUcmVlQW5kTWFyayhtYXJrZWRCb3gxLCBtYXJrZWRMYWJlbDEsIG1hcmtlZEJveDIsIG1hcmtl
ZExhYmVsMiwgb2JqLCAxKTsKKyAgICAgICAgcm9vdC0+c2hvd0xpbmVUcmVlQW5kTWFyayhtYXJr
ZWRCb3gsIGRlcHRoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmgKaW5kZXggZGVkOTIyMzU2YTE5ODg4YTJmYzA4MGNjYzg1MWM3NTNlNTdm
ODBkMC4uMTZkNzRjN2M1NTRlNDRlMGZkZTZhODE3ODU2MDgwMTgyYzY2MjM2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzY1LDcgKzM2NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuc3VyZUxpbmVCb3hlcygpOwogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZpcnR1YWwgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJrKGNvbnN0IElubGluZUJveCogPSBu
dWxscHRyLCBjb25zdCBjaGFyKiA9IG51bGxwdHIsIGNvbnN0IElubGluZUJveCogPSBudWxscHRy
LCBjb25zdCBjaGFyKiA9IG51bGxwdHIsIGNvbnN0IFJlbmRlck9iamVjdCogPSBudWxscHRyKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5l
Qm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIC8vIFJldHVy
bnMgdGhlIGxvZ2ljYWxPZmZzZXQgYXQgdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdlLiBJZiB0aGUg
b2Zmc2V0IHBhc3NlZCBpbiBpcyBhbHJlYWR5IGF0IHRoZSB0b3Agb2YgdGhlIGN1cnJlbnQgcGFn
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNTA4ZGQ2
YTE3OTY3NmQ5N2QzNGEwZjYxZTg5MjJiZjVhNmU5ZjkyOC4uMTUwMDAxNGNkYjRlMTEzMGE3NWYw
Yzc2NWRhOGE5MGVkNDAzYjIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTE0MTAsMjkgKzE0MTAsMzcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqLCBGbG8K
IAogI2lmbmRlZiBOREVCVUcKIAotdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dOb2RlVHJlZUZvclRo
aXMoKSBjb25zdAorc3RhdGljIHZvaWQgc2hvd1JlbmRlclRyZWVMZWdlbmQoKQogewotICAgIGlm
IChub2RlKCkpCi0gICAgICAgIG5vZGUoKS0+c2hvd1RyZWVGb3JUaGlzKCk7CisgICAgZnByaW50
ZihzdGRlcnIsICJcbihSKWVsYXRpdmUvQShCKXNvbHV0ZS9GaShYKWVkL1N0aWNrKFkpIHBvc2l0
aW9uZWQsIChPKXZlcmZsb3cgY2xpcHBpbmcsIChBKW5vbnltb3VzLCAoRyllbmVyYXRlZCwgKEYp
bG9hdGluZywgaGFzKEwpYXllciwgKEMpb21wb3NpdGVkLCAoRClpcnR5IGxheW91dCwgRGlydHkg
KFMpdHlsZVxuIik7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyVHJlZUZvclRo
aXMoKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OnNob3dOb2RlVHJlZUZvclRoaXMoKSBjb25z
dAogewotICAgIHNob3dSZW5kZXJUcmVlKHRoaXMsIDApOworICAgIGlmICghbm9kZSgpKQorICAg
ICAgICByZXR1cm47CisgICAgbm9kZSgpLT5zaG93VHJlZUZvclRoaXMoKTsKIH0KIAotdm9pZCBS
ZW5kZXJPYmplY3Q6OnNob3dMaW5lVHJlZUZvclRoaXMoKSBjb25zdAordm9pZCBSZW5kZXJPYmpl
Y3Q6OnNob3dSZW5kZXJUcmVlRm9yVGhpcygpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRhaW5pbmdC
bG9jaygpKQotICAgICAgICBjb250YWluaW5nQmxvY2soKS0+c2hvd0xpbmVUcmVlQW5kTWFyaygw
LCAwLCAwLCAwLCB0aGlzKTsKKyAgICBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJvb3Qg
PSB0aGlzOworICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKKyAgICAgICAgcm9vdCA9IHJvb3Qt
PnBhcmVudCgpOworICAgIHNob3dSZW5kZXJUcmVlTGVnZW5kKCk7CisgICAgcm9vdC0+c2hvd1Jl
bmRlclN1YlRyZWVBbmRNYXJrKHRoaXMsIDEpOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6c2hv
d1JlbmRlck9iamVjdCgpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6c2hvd0xpbmVUcmVlRm9y
VGhpcygpIGNvbnN0CiB7Ci0gICAgc2hvd1JlbmRlck9iamVjdCgwKTsKKyAgICBpZiAoIWlzUmVu
ZGVyQmxvY2tGbG93KCkpCisgICAgICAgIHJldHVybjsKKyAgICBzaG93UmVuZGVyVHJlZUxlZ2Vu
ZCgpOworICAgIHNob3dSZW5kZXJPYmplY3QoZmFsc2UsIDEpOworICAgIHRvUmVuZGVyQmxvY2tG
bG93KHRoaXMpLT5zaG93TGluZVRyZWVBbmRNYXJrKG51bGxwdHIsIDIpOwogfQogCi12b2lkIFJl
bmRlck9iamVjdDo6c2hvd1JlZ2lvbnNJbmZvcm1hdGlvbihpbnQmIHByaW50ZWRDaGFyYWN0ZXJz
KSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZWdpb25zSW5mb3JtYXRpb24oKSBjb25z
dAogewogICAgIEN1cnJlbnRSZW5kZXJGbG93VGhyZWFkRGlzYWJsZXIgZmxvd1RocmVhZERpc2Fi
bGVyKCZ2aWV3KCkpOwogCkBAIC0xNDQyLDQ5ICsxNDUwLDEyNiBAQCB2b2lkIFJlbmRlck9iamVj
dDo6c2hvd1JlZ2lvbnNJbmZvcm1hdGlvbihpbnQmIHByaW50ZWRDaGFyYWN0ZXJzKSBjb25zdAog
ICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBmbG93
VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24p
OwotICAgICAgICAgICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50ZihzdGRlcnIsICIgW1Jz
OiVwIFJlOiVwXSIsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgW1JzOiVwIFJlOiVwXSIsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogICAg
ICAgICB9CiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6c2hvd1JlbmRlck9iamVjdChp
bnQgcHJpbnRlZENoYXJhY3RlcnMpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6c2hvd1JlbmRl
ck9iamVjdChib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKIHsKLSAgICAvLyBBcyB0aGlzIGZ1
bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBkZWJ1Z2dpbmcsIHRoZQotICAgIC8v
IHRoaXMgcG9pbnRlciBtYXkgYmUgMC4KKyAgICAvLyBBcyB0aGlzIGZ1bmN0aW9uIGlzIGludGVu
ZGVkIHRvIGJlIHVzZWQgd2hlbiBkZWJ1Z2dpbmcsIHRoZSB0aGlzIHBvaW50ZXIgbWF5IGJlIDAu
CiAgICAgaWYgKCF0aGlzKSB7Ci0gICAgICAgIGZwdXRzKCIobnVsbClcbiIsIHN0ZGVycik7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiKG51bGwpXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHByaW50ZWRDaGFyYWN0ZXJzICs9IGZwcmludGYoc3RkZXJyLCAiJXMgJXAiLCBy
ZW5kZXJOYW1lKCksIHRoaXMpOwotICAgIHNob3dSZWdpb25zSW5mb3JtYXRpb24ocHJpbnRlZENo
YXJhY3RlcnMpOwotCi0gICAgaWYgKG5vZGUoKSkgewotICAgICAgICBpZiAocHJpbnRlZENoYXJh
Y3RlcnMpCi0gICAgICAgICAgICBmb3IgKDsgcHJpbnRlZENoYXJhY3RlcnMgPCBzaG93VHJlZUNo
YXJhY3Rlck9mZnNldDsgcHJpbnRlZENoYXJhY3RlcnMrKykKLSAgICAgICAgICAgICAgICBmcHV0
YygnICcsIHN0ZGVycik7Ci0gICAgICAgIGZwdXRjKCdcdCcsIHN0ZGVycik7Ci0gICAgICAgIG5v
ZGUoKS0+c2hvd05vZGUoKTsKKyAgICBpZiAoaXNQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgaWYg
KGlzUmVsUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgZnB1dGMoJ1InLCBzdGRlcnIpOworICAg
ICAgICBlbHNlIGlmIChpc1N0aWNreVBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGZwdXRjKCdZ
Jywgc3RkZXJyKTsKKyAgICAgICAgZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsK
KyAgICAgICAgICAgIGlmIChzdHlsZSgpLnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICBmcHV0YygnQicsIHN0ZGVycik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZnB1dGMoJ1gnLCBzdGRlcnIpOworICAgICAgICB9CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7Ci19CisgICAgICAgIGZwdXRjKCctJywgc3Rk
ZXJyKTsKKworICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKKyAgICAgICAgZnB1dGMoJ08nLCBz
dGRlcnIpOworICAgIGVsc2UKKyAgICAgICAgZnB1dGMoJy0nLCBzdGRlcnIpOworCisgICAgaWYg
KGlzQW5vbnltb3VzQmxvY2soKSkKKyAgICAgICAgZnB1dGMoJ0EnLCBzdGRlcnIpOworICAgIGVs
c2UKKyAgICAgICAgZnB1dGMoJy0nLCBzdGRlcnIpOworCisgICAgaWYgKGlzUHNldWRvRWxlbWVu
dCgpIHx8IGlzQW5vbnltb3VzKCkpCisgICAgICAgIGZwdXRjKCdHJywgc3RkZXJyKTsKKyAgICBl
bHNlCisgICAgICAgIGZwdXRjKCctJywgc3RkZXJyKTsKKworICAgIGlmIChpc0Zsb2F0aW5nKCkp
CisgICAgICAgIGZwdXRjKCdGJywgc3RkZXJyKTsKKyAgICBlbHNlCisgICAgICAgIGZwdXRjKCct
Jywgc3RkZXJyKTsKKworICAgIGlmIChoYXNMYXllcigpKQorICAgICAgICBmcHV0YygnTCcsIHN0
ZGVycik7CisgICAgZWxzZQorICAgICAgICBmcHV0YygnLScsIHN0ZGVycik7CisKKyAgICBpZiAo
aXNDb21wb3NpdGVkKCkpCisgICAgICAgIGZwdXRjKCdDJywgc3RkZXJyKTsKKyAgICBlbHNlCisg
ICAgICAgIGZwdXRjKCctJywgc3RkZXJyKTsKKworICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKKwor
ICAgIGlmIChuZWVkc0xheW91dCgpKQorICAgICAgICBmcHV0YygnRCcsIHN0ZGVycik7CisgICAg
ZWxzZQorICAgICAgICBmcHV0YygnLScsIHN0ZGVycik7CisKKyAgICBpZiAobm9kZSgpICYmIG5v
ZGUoKS0+bmVlZHNTdHlsZVJlY2FsYygpKQorICAgICAgICBmcHV0YygnUycsIHN0ZGVycik7Cisg
ICAgZWxzZQorICAgICAgICBmcHV0YygnLScsIHN0ZGVycik7CiAKLXZvaWQgUmVuZGVyT2JqZWN0
OjpzaG93UmVuZGVyVHJlZUFuZE1hcmsoY29uc3QgUmVuZGVyT2JqZWN0KiBtYXJrZWRPYmplY3Qx
LCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDEsIGNvbnN0IFJlbmRlck9iamVjdCogbWFya2VkT2Jq
ZWN0MiwgY29uc3QgY2hhciogbWFya2VkTGFiZWwyLCBpbnQgZGVwdGgpIGNvbnN0Ci17CiAgICAg
aW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKLSAgICBpZiAobWFya2VkT2JqZWN0MSA9PSB0aGlz
ICYmIG1hcmtlZExhYmVsMSkKLSAgICAgICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50Zihz
dGRlcnIsICIlcyIsIG1hcmtlZExhYmVsMSk7Ci0gICAgaWYgKG1hcmtlZE9iamVjdDIgPT0gdGhp
cyAmJiBtYXJrZWRMYWJlbDIpCi0gICAgICAgIHByaW50ZWRDaGFyYWN0ZXJzICs9IGZwcmludGYo
c3RkZXJyLCAiJXMiLCBtYXJrZWRMYWJlbDIpOwotICAgIGZvciAoOyBwcmludGVkQ2hhcmFjdGVy
cyA8IGRlcHRoICogMjsgcHJpbnRlZENoYXJhY3RlcnMrKykKKyAgICBpZiAobWFyaykgeworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIioiKTsKKyAgICAgICAgKytwcmludGVkQ2hhcmFjdGVyczsK
KyAgICB9CisKKyAgICB3aGlsZSAoKytwcmludGVkQ2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCiAg
ICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKIAotICAgIHNob3dSZW5kZXJPYmplY3QocHJpbnRl
ZENoYXJhY3RlcnMpOworICAgIGlmIChub2RlKCkpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
JXMgIiwgbm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgU3RyaW5nIG5h
bWUgPSByZW5kZXJOYW1lKCk7CisgICAgLy8gRklYTUU6IFJlbmRlcmVyJ3MgbmFtZSBzaG91bGQg
bm90IGluY2x1ZGUgcHJvcGVydHkgdmFsdWUgbGlzdGluZy4KKyAgICBpbnQgcG9zID0gbmFtZS5m
aW5kKCcoJyk7CisgICAgaWYgKHBvcyA+IDApCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMi
LCBuYW1lLmxlZnQocG9zIC0gMSkudXRmOCgpLmRhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChpc0Jv
eCgpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3godGhpcyk7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpIiwg
Ym94LT54KCkudG9GbG9hdCgpLCBib3gtPnkoKS50b0Zsb2F0KCksIGJveC0+d2lkdGgoKS50b0Zs
b2F0KCksIGJveC0+aGVpZ2h0KCkudG9GbG9hdCgpKTsKKyAgICB9CisKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIiByZW5kZXJlci0+KCVwKSIsIHRoaXMpOworICAgIGlmIChub2RlKCkpIHsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIgbm9kZS0+KCVwKSIsIG5vZGUoKSk7CisgICAgICAgIGlmIChu
b2RlKCktPmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gbm9kZSgp
LT5ub2RlVmFsdWUoKTsKKyAgICAgICAgICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwn
LCAiXFxcXCIpOworICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJc
XG4iKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIFwiJXNcIiIsIHZhbHVlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgc2hvd1JlZ2lvbnNJbmZvcm1hdGlv
bigpOworICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKK30KKwordm9pZCBSZW5kZXJPYmplY3Q6
OnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayhjb25zdCBSZW5kZXJPYmplY3QqIG1hcmtlZE9iamVj
dCwgaW50IGRlcHRoKSBjb25zdAorewogICAgIGlmICghdGhpcykKICAgICAgICAgcmV0dXJuOwog
CisgICAgc2hvd1JlbmRlck9iamVjdChtYXJrZWRPYmplY3QgPT0gdGhpcywgZGVwdGgpOworICAg
IGlmIChpc1JlbmRlckJsb2NrRmxvdygpKQorICAgICAgICB0b1JlbmRlckJsb2NrRmxvdyh0aGlz
KS0+c2hvd0xpbmVUcmVlQW5kTWFyayhudWxscHRyLCBkZXB0aCArIDEpOworCiAgICAgZm9yIChj
b25zdCBSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZFNsb3coKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxkLT5zaG93UmVuZGVyVHJlZUFu
ZE1hcmsobWFya2VkT2JqZWN0MSwgbWFya2VkTGFiZWwxLCBtYXJrZWRPYmplY3QyLCBtYXJrZWRM
YWJlbDIsIGRlcHRoICsgMSk7CisgICAgICAgIGNoaWxkLT5zaG93UmVuZGVyU3ViVHJlZUFuZE1h
cmsobWFya2VkT2JqZWN0LCBkZXB0aCArIDEpOwogfQogCiAjZW5kaWYgLy8gTkRFQlVHCkBAIC0y
NTEyLDI5ICsyNTk3LDIzIEBAIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBSZW5kZXJPYmplY3Q6
OmN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0CiAKIHZvaWQgc2hvd05vZGVU
cmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIGlmIChvYmpl
Y3QpCi0gICAgICAgIG9iamVjdC0+c2hvd05vZGVUcmVlRm9yVGhpcygpOworICAgIGlmICghb2Jq
ZWN0KQorICAgICAgICByZXR1cm47CisgICAgb2JqZWN0LT5zaG93Tm9kZVRyZWVGb3JUaGlzKCk7
CiB9CiAKIHZvaWQgc2hvd0xpbmVUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogb2Jq
ZWN0KQogewotICAgIGlmIChvYmplY3QpCi0gICAgICAgIG9iamVjdC0+c2hvd0xpbmVUcmVlRm9y
VGhpcygpOwotfQotCi12b2lkIHNob3dSZW5kZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9i
amVjdCogb2JqZWN0MSkKLXsKLSAgICBzaG93UmVuZGVyVHJlZShvYmplY3QxLCAwKTsKKyAgICBp
ZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIG9iamVjdC0+c2hvd0xpbmVUcmVlRm9y
VGhpcygpOwogfQogCi12b2lkIHNob3dSZW5kZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9i
amVjdCogb2JqZWN0MSwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBvYmplY3QyKQordm9p
ZCBzaG93UmVuZGVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsK
LSAgICBpZiAob2JqZWN0MSkgewotICAgICAgICBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
IHJvb3QgPSBvYmplY3QxOwotICAgICAgICB3aGlsZSAocm9vdC0+cGFyZW50KCkpCi0gICAgICAg
ICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7Ci0gICAgICAgIHJvb3QtPnNob3dSZW5kZXJUcmVl
QW5kTWFyayhvYmplY3QxLCAiKiIsIG9iamVjdDIsICItIiwgMCk7Ci0gICAgfQorICAgIGlmICgh
b2JqZWN0KQorICAgICAgICByZXR1cm47CisgICAgb2JqZWN0LT5zaG93UmVuZGVyVHJlZUZvclRo
aXMoKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
aW5kZXggNGQ5ZWE1OTlmZGU0YzAxYmEwZmFhMDk1MDNhMWIzOTk2Y2ZlZjdiYS4uYjFhODFjOTRh
N2EwMDMxYTIzNDNhNGJjYTRjY2U1NWRiZWVkMjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtMjg1LDEyICsyODUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
aG93UmVuZGVyVHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lkIHNob3dMaW5lVHJlZUZvclRo
aXMoKSBjb25zdDsKIAotICAgIHZvaWQgc2hvd1JlbmRlck9iamVjdCgpIGNvbnN0OwotICAgIC8v
IFdlIGRvbid0IG1ha2UgcHJpbnRlZENoYXJhY3RlcnMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHNv
IHRoYXQKLSAgICAvLyBzaG93UmVuZGVyT2JqZWN0IGNhbiBiZSBjYWxsZWQgZnJvbSBnZGIgZWFz
aWx5LgotICAgIHZvaWQgc2hvd1JlbmRlck9iamVjdChpbnQpIGNvbnN0OwotICAgIHZvaWQgc2hv
d1JlbmRlclRyZWVBbmRNYXJrKGNvbnN0IFJlbmRlck9iamVjdCogPSAwLCBjb25zdCBjaGFyKiA9
IDAsIGNvbnN0IFJlbmRlck9iamVjdCogPSAwLCBjb25zdCBjaGFyKiA9IDAsIGludCA9IDApIGNv
bnN0OwotICAgIHZvaWQgc2hvd1JlZ2lvbnNJbmZvcm1hdGlvbihpbnQmKSBjb25zdDsKKyAgICB2
b2lkIHNob3dSZW5kZXJPYmplY3QoYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZv
aWQgc2hvd1JlbmRlclN1YlRyZWVBbmRNYXJrKGNvbnN0IFJlbmRlck9iamVjdCogbWFya2VkT2Jq
ZWN0LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQgc2hvd1JlZ2lvbnNJbmZvcm1hdGlvbigp
IGNvbnN0OwogI2VuZGlmCiAKIHB1YmxpYzoKQEAgLTExNDEsMTAgKzExMzgsNyBAQCBpbmxpbmUg
Ym9vbCBSZW5kZXJPYmplY3Q6OmJhY2tncm91bmRJc0tub3duVG9CZU9ic2N1cmVkKCkKIC8vIE91
dHNpZGUgdGhlIFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSBn
ZGIuCiB2b2lkIHNob3dOb2RlVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqKTsKIHZv
aWQgc2hvd0xpbmVUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCopOwotdm9pZCBzaG93
UmVuZGVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIG9iamVjdDEpOwotLy8gV2Ug
ZG9uJ3QgbWFrZSBvYmplY3QyIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBzbyB0aGF0IHNob3dSZW5k
ZXJUcmVlCi0vLyBjYW4gYmUgY2FsbGVkIGZyb20gZ2RiIGVhc2lseS4KLXZvaWQgc2hvd1JlbmRl
clRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBvYmplY3QxLCBjb25zdCBXZWJDb3Jl
OjpSZW5kZXJPYmplY3QqIG9iamVjdDIpOwordm9pZCBzaG93UmVuZGVyVHJlZShjb25zdCBXZWJD
b3JlOjpSZW5kZXJPYmplY3QqKTsKICNlbmRpZgogCiAjZW5kaWYgLy8gUmVuZGVyT2JqZWN0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDhlNzUwM2Q1MWUy
NTQzOTVjOTRmODE0MjY0ZmJiZmI2NGUxYmIwMDAuLjM3ZmU1Y2NhZWJhN2Q0YmE3MjNiYWZhZmNl
ZGNjZDgxNzE0NDIyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aApAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBnZXRMb2dpY2FsRW5kQm94
V2l0aE5vZGUoSW5saW5lQm94KiYpIGNvbnN0OwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgY29u
c3QgY2hhciogYm94TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogI2VuZGlmCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>