<?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>32230</bug_id>
          
          <creation_ts>2009-12-07 10:33:45 -0800</creation_ts>
          <short_desc>getComputedStyle() returns different values for different zoom levels</short_desc>
          <delta_ts>2013-01-02 17:50:48 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simo Kinnunen">sorccu</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>adammcraven</cc>
    
    <cc>arv</cc>
    
    <cc>bdakin</cc>
    
    <cc>brettw</cc>
    
    <cc>eric</cc>
    
    <cc>fberriman</cc>
    
    <cc>hyatt</cc>
    
    <cc>macpherson</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>169367</commentid>
    <comment_count>0</comment_count>
      <attachid>44419</attachid>
    <who name="Simo Kinnunen">sorccu</who>
    <bug_when>2009-12-07 10:33:45 -0800</bug_when>
    <thetext>Created attachment 44419
Test case

In WebKit, getComputedStyle() returns scaled values for properties such as font-size, width and height. This makes it impossible to rely on these values. The following might make it easier to understand:

(el.style.fontSize = &apos;20px&apos;) !== getComputedStyle(document.body, &apos;&apos;).fontSize // if zoom level != 1

What makes this especially troubling is this:

(document.body.style.fontSize = getComputedStyle(document.body, &apos;&apos;).fontSize) !== getComputedStyle(document.body, &apos;&apos;).fontSize // if zoom level != 1

Firefox and Opera always return the same value regardless of zoom level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191591</commentid>
    <comment_count>1</comment_count>
    <who name="Frances Berriman">fberriman</who>
    <bug_when>2010-02-18 07:28:24 -0800</bug_when>
    <thetext>Hi,

We&apos;ve identified the same problem within our unit and manual tests for appearance methods.  Firefox, Opera and IE all report the values accurately, but Webkit browsers will return a zoomed+orig value.  

For example, create 2 elements with text inside.  Set the first to be 16px in size, and then use JS to apply get element 1&apos;s font-size value and apply it to element 2.  When normal zoom, both elements will appear as 16px, but zoom the page by 1, and element 2 will be larger than element 1 in a webkit browser.  Of course, the issue becomes more pronounced the further the user zooms. 

Thanks,

Frances
http://bbc.co.uk/glow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215986</commentid>
    <comment_count>2</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-04-22 11:38:49 -0700</bug_when>
    <thetext>Bug 25750 solved the same problem regarding getBoundingClientRects so I&apos;m CC:ing some people from that list.

Gecko returns the same computed value no matter the zoom level so there should be no doubt what the right behavior is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236885</commentid>
    <comment_count>3</comment_count>
      <attachid>58483</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-11 10:16:14 -0700</bug_when>
    <thetext>Created attachment 58483
better test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273473</commentid>
    <comment_count>4</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-02 11:45:13 -0700</bug_when>
    <thetext>I looked at the code for this and I think a solution would be to replace all calls like this in CSSComputedStyleDeclaration.cpp

CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_PX);

with something like

createZoomAdjustedPixelValue(value, renderer)

which would call WebCore::adjustForLocalZoom on the value and then return a new CSSPrimitiveValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273479</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-02 11:57:11 -0700</bug_when>
    <thetext>Bug 42089 is somewhat related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277587</commentid>
    <comment_count>6</comment_count>
      <attachid>67278</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-10 18:23:19 -0700</bug_when>
    <thetext>Created attachment 67278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278506</commentid>
    <comment_count>7</comment_count>
      <attachid>67278</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-13 15:10:19 -0700</bug_when>
    <thetext>Comment on attachment 67278
Patch

Since the patch doesn’t apply, the EWS was unable to analyze it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278534</commentid>
    <comment_count>8</comment_count>
      <attachid>67278</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-13 15:37:34 -0700</bug_when>
    <thetext>Comment on attachment 67278
Patch

I&apos;ll upload a new patch without the merge conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279032</commentid>
    <comment_count>9</comment_count>
      <attachid>67576</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-14 11:06:44 -0700</bug_when>
    <thetext>Created attachment 67576
Fixed merge conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279034</commentid>
    <comment_count>10</comment_count>
      <attachid>67576</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-14 11:10:41 -0700</bug_when>
    <thetext>Comment on attachment 67576
Fixed merge conflicts

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

Great! I’m a little worried about the rounding caused by zooming and then scaling back, but I like how you are fitting this into the existing code.

&gt; WebCore/css/CSSComputedStyleDeclaration.cpp:336
&gt; +        // Needed because the pixel value truncates (rather than rounds) when scaling up.
&gt; +        if (zoomFactor &gt; 1)
&gt; +            value++;
I’m not sure this fudge factor is going to do the exact right thing in all cases. Is adding exactly one the right thing to do? Can we make a test case that is right on the edge of the rounding?

&gt; WebCore/css/CSSComputedStyleDeclaration.cpp:391
&gt; +        if (l.type() == WebCore::Fixed)
&gt; +          return zoomAdjustedPixelValue(l.value(), style);
Looks like the indentation is wrong here. The return should be indented four spaces.

I am not going to mark this review+ yet because that will cause the EWS bots to not process the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279266</commentid>
    <comment_count>11</comment_count>
      <attachid>67621</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-14 17:29:44 -0700</bug_when>
    <thetext>Created attachment 67621
Style fixes and reuse zoom adjusting code from RenderObject.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279267</commentid>
    <comment_count>12</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-14 17:32:13 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 67576 [details])
&gt; I’m not sure this fudge factor is going to do the exact right thing in all cases. Is adding exactly one the right thing to do? Can we make a test case that is right on the edge of the rounding?

This is the same code as used elsewhere for adjusting the zoom value. I refactored the code to use the same code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279384</commentid>
    <comment_count>13</comment_count>
      <attachid>67621</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-14 22:19:05 -0700</bug_when>
    <thetext>Comment on attachment 67621
Style fixes and reuse zoom adjusting code from RenderObject.h

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

Looks good.

&gt; WebCore/css/CSSComputedStyleDeclaration.cpp:341
&gt; +    double zoomFactor = style-&gt;effectiveZoom();
&gt; +    if (zoomFactor != 1)
&gt; +        value = value / zoomFactor;
&gt; +
&gt; +    return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER);
Why the if statement and special handling of 1? Is it a performance optimization? This would read better if it just said value / style-&gt;effectiveZoom() without a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279731</commentid>
    <comment_count>14</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-15 14:35:33 -0700</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/67568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279746</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-15 14:54:42 -0700</bug_when>
    <thetext>I think this broke http://trac.webkit.org/browser/trunk/LayoutTests/fast/css/textCapitalizeEdgeCases.html on Leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279756</commentid>
    <comment_count>16</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-09-15 15:10:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I think this broke http://trac.webkit.org/browser/trunk/LayoutTests/fast/css/textCapitalizeEdgeCases.html on Leopard.

I don&apos;t think it broke that one but I&apos;m currently fixing these 2 tests

animations/fill-mode-transform.html
editing/pasteboard/page-zoom.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279761</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-15 15:20:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67568 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290784</commentid>
    <comment_count>18</comment_count>
      <attachid>70033</attachid>
    <who name="Rob Brackett">rob</who>
    <bug_when>2010-10-06 20:52:24 -0700</bug_when>
    <thetext>Created attachment 70033
Occurrence of the bug after the first fix with display:none

This issue still occurs when an element (or its ancestor) has display:none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553565</commentid>
    <comment_count>19</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-09 15:25:36 -0800</bug_when>
    <thetext>Reopening to fix up more of the cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553566</commentid>
    <comment_count>20</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-09 15:25:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/9025697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553571</commentid>
    <comment_count>21</comment_count>
      <attachid>126390</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-09 15:35:35 -0800</bug_when>
    <thetext>Created attachment 126390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553587</commentid>
    <comment_count>22</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-09 16:05:15 -0800</bug_when>
    <thetext>Committed r107301: &lt;http://trac.webkit.org/changeset/107301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798676</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Craven">adammcraven</who>
    <bug_when>2013-01-02 08:26:50 -0800</bug_when>
    <thetext>I think there still might be a problem here... but this time with the computed value for &apos;left&apos;.

An example of the issue can be seen here: http://jsfiddle.net/sFYjc/2/

(The jQuery community has stumbled upon the issue a few times over the years... http://bugs.jquery.com/ticket/4993#comment:9 )

I am running Chrome 23.0.1271.97 m.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798678</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-02 08:28:55 -0800</bug_when>
    <thetext>Ideally we&apos;d open a new bug with a test case and it can be resolved there. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799143</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Craven">adammcraven</who>
    <bug_when>2013-01-02 17:50:48 -0800</bug_when>
    <thetext>No problem - done: https://bugs.webkit.org/show_bug.cgi?id=105979</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>44419</attachid>
            <date>2009-12-07 10:33:45 -0800</date>
            <delta_ts>2010-06-11 10:16:14 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>webkit-zoom-computedstyle.html</filename>
            <type>text/html</type>
            <size>1214</size>
            <attacher name="Simo Kinnunen">sorccu</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+Cgo8aHRtbD4KCgk8aGVhZD4KCQoJCTx0aXRsZT5XZWJLaXQ6IGdldENv
bXB1dGVkU3R5bGUoKSBhbmQgZnVsbC1wYWdlIHpvb208L3RpdGxlPgoJCQoJCTxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQkKCQkJd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewoJ
CQkJCgkJCQlmdW5jdGlvbiB1cGRhdGUoKSB7CgkJCQkKCQkJCQl2YXIgZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdGVlJyk7CgkJCQkJdmFyIHN0eWxlID0gZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgJycpOwoJCQkJCQkKCQkJCQlkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0LWZvbnRzaXplJykudmFsdWUgPSBzdHlsZS5mb250U2l6ZTsKCQkJ
CQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LXdpZHRoJykudmFsdWUgPSBzdHlsZS53
aWR0aDsKCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LWhlaWdodCcpLnZhbHVl
ID0gc3R5bGUuaGVpZ2h0OwoJCQkJfQoJCQkJCgkJCQl1cGRhdGUoKTsKCQkJCQoJCQkJc2V0SW50
ZXJ2YWwodXBkYXRlLCAxMDAwKTsKCQkKCQkJfTsKCQkJCgkJPC9zY3JpcHQ+CgoJPC9oZWFkPgoK
CTxib2R5PgoKCQk8aDI+VGVzdCBlbGVtZW50PC9oMj4KCgkJPGRpdiBpZD0idGVzdGVlIiBzdHls
ZT0iYm9yZGVyOiAxcHggc29saWQgcmVkOyBmb250LXNpemU6IDIwcHg7IHdpZHRoOiAyMDBweDsg
aGVpZ2h0OiAxMDBweDsiPkxvcmVtIGlwc3VtPC9kaXY+CgoJCTxoMj5UaGVzZSB2YWx1ZXMgc2hv
dWxkIG5vdCBjaGFuZ2Ugd2hpbGUgem9vbWluZyBpbi9vdXQ6PC9oMj4KCgkJPGRsPgoJCQk8ZHQ+
Z2V0Q29tcHV0ZWRTdHlsZSgpLmZvbnRTaXplPC9kdD4KCQkJPGRkPjxpbnB1dCBpZD0icmVzdWx0
LWZvbnRzaXplIiByZWFkb25seT0icmVhZG9ubHkiIC8+PC9kZD4KCQkJPGR0PmdldENvbXB1dGVk
U3R5bGUoKS53aWR0aDwvZHQ+CgkJCTxkZD48aW5wdXQgaWQ9InJlc3VsdC13aWR0aCIgcmVhZG9u
bHk9InJlYWRvbmx5IiAvPjwvZGQ+CgkJCTxkdD5nZXRDb21wdXRlZFN0eWxlKCkuaGVpZ2h0PC9k
dD4KCQkJPGRkPjxpbnB1dCBpZD0icmVzdWx0LWhlaWdodCIgcmVhZG9ubHk9InJlYWRvbmx5IiAv
PjwvZGQ+CgkJPC9kbD4KCgkJPGVtPih2YWx1ZXMgdXBkYXRlIGV2ZXJ5IDEwMDBtcyk8L2VtPgoK
CTwvYm9keT4KCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58483</attachid>
            <date>2010-06-11 10:16:14 -0700</date>
            <delta_ts>2010-06-11 10:16:14 -0700</delta_ts>
            <desc>better test case</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>443</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">Q29tcHV0ZWQgc3R5bGUgcmV0dXJuZWQgdG8gSmF2YVNjcmlwdCBzaG91bGQgbm90IGJlIHpvb21l
ZC4gVGhlIGNvbXB1dGVkIHdpZHRoIGFuZCBjbGllbnRXaWR0aCBiZWxvdyBzaG91bGQgYmUgZXF1
YWwuCjxkaXYgaWQ9Zm9vIHN0eWxlPSJ3aWR0aDoxMDBweDt6b29tOjIwMCU7Ym9yZGVyOjFweCBz
b2xpZCI+em9vbWVkIGRpdjwvZGl2Pgo8c2NyaXB0Pgp2YXIgZm9vID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ZvbycpOwp2YXIgY29tcHV0ZWRXaWR0aCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGZvbywgbnVsbClbJ3dpZHRoJ10KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnY29tcHV0ZWQgd2lkdGg6ICcgKyBjb21wdXRlZFdpZHRoICsgJyBj
bGllbnRXaWR0aDogJyArIGZvby5jbGllbnRXaWR0aCkpOwo8L3NjcmlwdD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67278</attachid>
            <date>2010-09-10 18:23:19 -0700</date>
            <delta_ts>2010-09-14 11:06:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32230-20100910182318.patch</filename>
            <type>text/plain</type>
            <size>37801</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMGRiMzA1NWZlZTc1OGY4ZDMyNTQyYTZmOWVjOGE4Mjk0ZGFlNmFiLi5hYTg0YjA4
ZDE4NzRkMzkwODlhZWI1NWQ3ZDE2MTA4NDZjMzc2MzkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDktMTAgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnZXRDb21wdXRlZFN0eWxl
KCkgcmV0dXJucyBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZmZXJlbnQgem9vbSBsZXZlbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMjMwCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9v
bS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9v
bS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0UHJvcGVydHkpOgorICAgICAgICAodGVzdFByb3Bl
cnR5VmFsdWUpOgorCiAyMDEwLTA5LTA4ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0
ZWQtc3R5bGUtd2l0aC16b29tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZjMDA4MmVmNGNi
ZWYzNGNlMTEwZDA0MmNjNzJhODM2OTNkNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRoLXpvb20tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1Rlc3RzIHRoYXQgY29tcHV0ZWQgc3R5bGUgaXMg
bm90IGFmZmVjdGVkIGJ5IHRoZSB6b29tIHZhbHVlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIC13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZywgdmFsdWU6ICI1
cHgiCitQQVNTIC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmcsIHZhbHVlOiAiNXB4Igor
UEFTUyAtd2Via2l0LWJveC1yZWZsZWN0LCB2YWx1ZTogImJlbG93IDVweCAtd2Via2l0LWdyYWRp
ZW50KGxpbmVhciwgMCUgMCUsIDAlIDEwMCUsIGZyb20odHJhbnNwYXJlbnQpLCB0byh3aGl0ZSkp
IDAgMCAwIDAgc3RyZXRjaCBzdHJldGNoIgorUEFTUyAtd2Via2l0LWJveC1zaGFkb3csIHZhbHVl
OiAicmdiKDI1NSwgMCwgMCkgNXB4IDVweCA1cHggNXB4IgorUEFTUyAtd2Via2l0LWNvbHVtbi1y
dWxlLXdpZHRoLCB2YWx1ZTogIjVweCIKK1BBU1MgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4s
IHZhbHVlOiAiNXB4IDVweCIKK1BBU1MgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCwgdmFsdWU6
ICI1cHgiCitQQVNTIC13ZWJraXQtdHJhbnNmb3JtLCB2YWx1ZTogIm1hdHJpeCgxLCAwLCAwLCAx
LCA1LCA1KSIKK1BBU1MgLXdlYmtpdC10cmFuc2Zvcm0sIHZhbHVlOiAibWF0cml4M2QoMSwgMCwg
MCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgNSwgNSwgNSwgMSkiCitQQVNTIC13ZWJraXQt
dHJhbnNmb3JtLW9yaWdpbiwgdmFsdWU6ICI1cHggNXB4IgorUEFTUyBib3JkZXItYm90dG9tLWxl
ZnQtcmFkaXVzLCB2YWx1ZTogIjVweCIKK1BBU1MgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMs
IHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItYm90dG9tLXdpZHRoLCB2YWx1ZTogIjVweCIKK1BB
U1MgYm9yZGVyLWxlZnQtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItcmlnaHQtd2lk
dGgsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItc3BhY2luZywgdmFsdWU6ICI1cHggNXB4Igor
UEFTUyBib3JkZXItdG9wLWxlZnQtcmFkaXVzLCB2YWx1ZTogIjVweCIKK1BBU1MgYm9yZGVyLXRv
cC1yaWdodC1yYWRpdXMsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItdG9wLXdpZHRoLCB2YWx1
ZTogIjVweCIKK1BBU1MgYm90dG9tLCB2YWx1ZTogIjVweCIKK1BBU1MgY2xpcCwgdmFsdWU6ICJy
ZWN0KDVweCA5NXB4IDk1cHggNXB4KSIKK1BBU1MgZm9udC1zaXplLCB2YWx1ZTogIjVweCIKK1BB
U1MgZm9udC1zaXplLCB2YWx1ZTogIjE2cHgiCitQQVNTIGhlaWdodCwgdmFsdWU6ICI1cHgiCitQ
QVNTIGxlZnQsIHZhbHVlOiAiNXB4IgorUEFTUyBsZXR0ZXItc3BhY2luZywgdmFsdWU6ICI1cHgi
CitQQVNTIGxpbmUtaGVpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2luLWJvdHRvbSwgdmFs
dWU6ICI1cHgiCitQQVNTIG1hcmdpbi1sZWZ0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2luLXJp
Z2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2luLXRvcCwgdmFsdWU6ICI1cHgiCitQQVNTIG91
dGxpbmUtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBwYWRkaW5nLWJvdHRvbSwgdmFsdWU6ICI1
cHgiCitQQVNTIHBhZGRpbmctbGVmdCwgdmFsdWU6ICI1cHgiCitQQVNTIHBhZGRpbmctcmlnaHQs
IHZhbHVlOiAiNXB4IgorUEFTUyBwYWRkaW5nLXRvcCwgdmFsdWU6ICI1cHgiCitQQVNTIHJpZ2h0
LCB2YWx1ZTogIjVweCIKK1BBU1MgdGV4dC1zaGFkb3csIHZhbHVlOiAicmdiKDI1NSwgMCwgMCkg
NXB4IDVweCA1cHgiCitQQVNTIHRvcCwgdmFsdWU6ICI1cHgiCitQQVNTIHdpZHRoLCB2YWx1ZTog
IjVweCIKK1BBU1Mgd29yZC1zcGFjaW5nLCB2YWx1ZTogIjVweCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9vbS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13
aXRoLXpvb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjdiMmFhNjFiYTdhYmRlZDU4ZmFiNjU5YzhhYjI5
MTIwNjQ5OWU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29t
cHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRoLXpvb20uaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdp
dGgtem9vbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0
LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9vbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDI4ZWRkODM0
YTU2OWI0ZmJhOGM2NDc4ZWU5ZTRjYzM2MzM3NjRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9zY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5
bGUtd2l0aC16b29tLmpzCkBAIC0wLDAgKzEsODIgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0
IGNvbXB1dGVkIHN0eWxlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgem9vbSB2YWx1ZScpOworCitm
dW5jdGlvbiB0ZXN0UHJvcGVydHkoZGF0YSkKK3sKKyAgICB2YXIgcHJvcCA9IGRhdGFbMF07Cisg
ICAgaWYgKGRhdGEubGVuZ3RoID09IDEpCisgICAgICBkYXRhLnB1c2goJzVweCcpOworCisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHRlc3RQcm9w
ZXJ0eVZhbHVlKHByb3AsIGRhdGFbaV0pOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFByb3Bl
cnR5VmFsdWUocHJvcCwgdmFsdWUpIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBlbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsg
d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OycgKworICAgICAgICAgICAgICAgICAgICAgICAn
b3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAxcHggc29saWQgcmVkOycgKworICAgICAgICAgICAg
ICAgICAgICAgICAnb3V0bGluZTogMXB4IHNvbGlkIGJsdWU7LXdlYmtpdC1jb2x1bW4tcnVsZTog
MXB4IHNvbGlkIHJlZCc7CisgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkocHJvcCwgdmFsdWUsICcn
KTsKKworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuem9vbSA9ICcnOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZWwpOworCisgICAgdmFyIHZhbHVlMSA9IGdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcCk7CisgICAgZG9jdW1lbnQuYm9keS5zdHls
ZS56b29tID0gMjsKKyAgICB2YXIgdmFsdWUyID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZShwcm9wKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZWwpOworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuem9vbSA9ICcnOworCisgICAgaWYgKHR5cGVv
ZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHZhbHVlMSA9PT0gdmFsdWUyKQorICAgICAgICB0ZXN0
UGFzc2VkKHByb3AgKyAnLCB2YWx1ZTogIicgKyB2YWx1ZTEgKyAnIicpOworICAgIGVsc2UKKyAg
ICAgICAgdGVzdEZhaWxlZChwcm9wICsgJywgdmFsdWUxOiAiJyArIHZhbHVlMSArICciLCB2YWx1
ZTI6ICInICsgdmFsdWUyICsgJyInKTsKK30KKwordmFyIHRlc3REYXRhID0gWworICAgIFsnLXdl
YmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nJ10sCisgICAgWyctd2Via2l0LWJvcmRlci12
ZXJ0aWNhbC1zcGFjaW5nJ10sCisgICAgWyctd2Via2l0LWJveC1yZWZsZWN0JywgJ2JlbG93IDVw
eCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHRy
YW5zcGFyZW50KSwgdG8od2hpdGUpKSddLAorICAgIFsnLXdlYmtpdC1ib3gtc2hhZG93JywgJzVw
eCA1cHggNXB4IDVweCByZWQnXSwKKyAgICBbJy13ZWJraXQtY29sdW1uLXJ1bGUtd2lkdGgnLCAn
NXB4J10sCisgICAgWyctd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbicsICc1cHggNXB4J10sCisg
ICAgWyctd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoJ10sCisgICAgWyctd2Via2l0LXRyYW5zZm9y
bScsICd0cmFuc2xhdGUoNXB4LCA1cHgpJywgJ3RyYW5zbGF0ZTNkKDVweCwgNXB4LCA1cHgpJ10s
CisgICAgWyctd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4nLCAnNXB4IDVweCddLAorICAgIFsnYm9y
ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyddLAorICAgIFsnYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRp
dXMnXSwKKyAgICBbJ2JvcmRlci1ib3R0b20td2lkdGgnXSwKKyAgICBbJ2JvcmRlci1sZWZ0LXdp
ZHRoJ10sCisgICAgWydib3JkZXItcmlnaHQtd2lkdGgnXSwKKyAgICBbJ2JvcmRlci1zcGFjaW5n
J10sCisgICAgWydib3JkZXItdG9wLWxlZnQtcmFkaXVzJ10sCisgICAgWydib3JkZXItdG9wLXJp
Z2h0LXJhZGl1cyddLAorICAgIFsnYm9yZGVyLXRvcC13aWR0aCddLAorICAgIFsnYm90dG9tJ10s
CisgICAgWydjbGlwJywgJ3JlY3QoNXB4IDk1cHggOTVweCA1cHgpJ10sCisgICAgWydmb250LXNp
emUnLCAnNXB4JywgJ21lZGl1bSddLAorICAgIFsnaGVpZ2h0J10sCisgICAgWydsZWZ0J10sCisg
ICAgWydsZXR0ZXItc3BhY2luZyddLAorICAgIFsnbGluZS1oZWlnaHQnXSwKKyAgICBbJ21hcmdp
bi1ib3R0b20nXSwKKyAgICBbJ21hcmdpbi1sZWZ0J10sCisgICAgWydtYXJnaW4tcmlnaHQnXSwK
KyAgICBbJ21hcmdpbi10b3AnXSwKKyAgICBbJ291dGxpbmUtd2lkdGgnXSwKKyAgICBbJ3BhZGRp
bmctYm90dG9tJ10sCisgICAgWydwYWRkaW5nLWxlZnQnXSwKKyAgICBbJ3BhZGRpbmctcmlnaHQn
XSwKKyAgICBbJ3BhZGRpbmctdG9wJ10sCisgICAgWydyaWdodCddLAorICAgIFsndGV4dC1zaGFk
b3cnLCAnNXB4IDVweCA1cHggcmVkJ10sCisgICAgWyd0b3AnXSwKKyAgICBbJ3dpZHRoJ10sCisg
ICAgWyd3b3JkLXNwYWNpbmcnXSwKK107CisKK3Rlc3REYXRhLmZvckVhY2godGVzdFByb3BlcnR5
KTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMTIwODYyZGFlZWZlYzQ2ODdlZjIx
MDUwZmVlMThjMDIwZWU3ZmYwLi43NjAwZDI2NTQ2N2U2ZWUwZWMwZDJiYmZiY2UzNjczNzJmNjU0
YWFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDEwLTA5LTEwICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgZ2V0Q29tcHV0ZWRTdHlsZSgpIHJldHVybnMgZGlmZmVyZW50IHZhbHVlcyBmb3IgZGlmZmVy
ZW50IHpvb20gbGV2ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjIzMAorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUv
Y29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmh0bWwKKworICAgICAgICBUaGlzIGFkanVzdHMgYWxs
IGNvbXB1dGVkIHB4IHZhbHVlcyB0byBiZSBhZGp1c3RlZCBieSB0aGUgZWZmZWN0aXZlIHpvb20s
IHdoaWNoIGxlYWRzIHRvIGNvbXB1dGVkIHN0eWxlIG5vdCBjaGFuZ2luZyB3aGVuCisgICAgICAg
IHRoZSB1c2VyIHpvb21zIGluIG9uIHRoZSB3ZWIgcGFnZS4KKworICAgICAgICAqIGNzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6em9vbUFkanVz
dGVkUGl4ZWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWROdW1iZXJWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvclJlZmxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UG9zaXRpb25PZmZzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlZFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldEZv
bnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNz
cy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKToKKwog
MjAxMC0wOS0wOCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCmluZGV4IGIxZThhYzQwMTU0YzA0ODJlM2JlOWRlNWMwMGRjYzdlZjkxYWYy
NzkuLmYxY2Q1YTAzNTZiOGU2ZGE4M2ViNzI5MTdiNWUzMjEwNGY1ZjIwMmUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzI3LDcgKzMyNywyOSBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShjb25z
dCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiAgICAgcmV0dXJuIENTU0JvcmRlckltYWdlVmFsdWU6
OmNyZWF0ZShpbWFnZVZhbHVlLCByZWN0LCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW1hZ2UuaG9yaXpv
bnRhbFJ1bGUoKSksIHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0
IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbikKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGludCB2YWx1ZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQoreworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHlsZSA/IHN0eWxlLT5l
ZmZlY3RpdmVab29tKCkgOiAxOworICAgIGlmICh6b29tRmFjdG9yICE9IDEpIHsKKyAgICAgICAg
Ly8gTmVlZGVkIGJlY2F1c2UgdGhlIHBpeGVsIHZhbHVlIHRydW5jYXRlcyAocmF0aGVyIHRoYW4g
cm91bmRzKSB3aGVuIHNjYWxpbmcgdXAuCisgICAgICAgIGlmICh6b29tRmFjdG9yID4gMSkKKyAg
ICAgICAgICAgIHZhbHVlKys7CisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZSAvIHpvb21GYWN0b3IpOworICAgIH0KKworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKworc3RhdGljIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHpvb21BZGp1c3RlZE51bWJlclZhbHVlKGRvdWJs
ZSB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAgIGRvdWJsZSB6b29tRmFj
dG9yID0gc3R5bGUgPyBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpIDogMTsKKyAgICBpZiAoem9vbUZh
Y3RvciAhPSAxKQorICAgICAgICB2YWx1ZSA9IHZhbHVlIC8gem9vbUZhY3RvcjsKKworICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclJl
ZmxlY3Rpb24oY29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCFyZWZsZWN0aW9uKQogICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKQEAgLTMzNiw3
ICszNTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9u
KGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbgogICAgIGlmIChyZWZsZWN0aW9uLT5v
ZmZzZXQoKS5pc1BlcmNlbnQoKSkKICAgICAgICAgb2Zmc2V0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyZWZsZWN0aW9uLT5vZmZzZXQoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgZWxzZQotICAgICAgICBvZmZzZXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHJlZmxlY3Rpb24tPm9mZnNldCgpLnZhbHVlKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBvZmZzZXQgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHJlZmxlY3Rpb24tPm9mZnNldCgpLnZhbHVlKCksIHN0eWxlKTsKICAgICAKICAgICByZXR1cm4g
Q1NTUmVmbGVjdFZhbHVlOjpjcmVhdGUocmVmbGVjdGlvbi0+ZGlyZWN0aW9uKCksIG9mZnNldC5y
ZWxlYXNlKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7CiB9
CkBAIC0zNjQsOCArMzg2LDExIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQb3Np
dGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IHByb3BlCiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoc3R5bGUtPnBvc2l0aW9uKCkgPT0gQWJzb2x1
dGVQb3NpdGlvbiB8fCBzdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKQorICAgIGlm
IChzdHlsZS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uIHx8IHN0eWxlLT5wb3NpdGlv
bigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgaWYgKGwudHlwZSgpID09IFdlYkNvcmU6
OkZpeGVkKQorICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGwudmFsdWUo
KSwgc3R5bGUpOwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShsKTsK
KyAgICB9CiAKICAgICBpZiAoc3R5bGUtPnBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbikK
ICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGVub3VnaCB0byBzaW1wbHkgcmV0dXJuICJhdXRv
IiB2YWx1ZXMgZm9yIG9uZSBvZmZzZXQgaWYgdGhlIG90aGVyIHNpZGUgaXMgZGVmaW5lZC4KQEAg
LTM4NCwyMiArNDA5LDIyIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3VycmVudENvbG9yT3JWYWxpZENvCiAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xvci5yZ2IoKSk7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShMZW5ndGhTaXpl
IHJhZGl1cykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3Ju
ZXJWYWx1ZShMZW5ndGhTaXplIHJhZGl1cywgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwogICAgIGlmIChyYWRpdXMud2lkdGgoKSA9PSByYWRpdXMuaGVpZ2h0KCkp
IHsKICAgICAgICAgaWYgKHJhZGl1cy53aWR0aCgpLnR5cGUoKSA9PSBQZXJjZW50KQogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLndpZHRoKCkucGVy
Y2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwotICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMud2lkdGgoKS52YWx1ZSgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUocmFkaXVzLndpZHRoKCkudmFsdWUoKSwgc3R5bGUuZ2V0KCkpOwogICAgIH0KICAgICBp
ZiAocmFkaXVzLndpZHRoKCkudHlwZSgpID09IFBlcmNlbnQpCiAgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnBlcmNlbnQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAgICAgZWxzZQotICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMud2lkdGgoKS52YWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZCh6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHJhZGl1cy53aWR0aCgpLnZhbHVlKCksIHN0eWxlLmdldCgpKSk7
CiAgICAgaWYgKHJhZGl1cy5oZWlnaHQoKS50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLmhlaWdodCgpLnBlcmNl
bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAgICAgZWxzZQotICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMuaGVpZ2h0
KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICBsaXN0LT5h
cHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyYWRpdXMuaGVpZ2h0KCkudmFsdWUoKSwgc3R5
bGUuZ2V0KCkpKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTQzOCw4ICs0
NjMsOCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgICAgICB0cmFuc2Zvcm1WYWwtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5iKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKICAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh0cmFuc2Zvcm0uZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikp
OwotICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHRyYW5zZm9ybS5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAg
IHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3Jt
LmYoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3Jt
VmFsLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFsdWUodHJhbnNmb3JtLmUoKSwgc3R5bGUp
KTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFsdWUo
dHJhbnNmb3JtLmYoKSwgc3R5bGUpKTsKICAgICB9IGVsc2UgewogICAgICAgICB0cmFuc2Zvcm1W
YWwgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y3JlYXRlKFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbik7CiAKQEAgLTQ1OCw5ICs0ODMsOSBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMzMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpKTsKICAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTM0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSk7CiAKLSAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSh0cmFuc2Zvcm0ubTQxKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7
Ci0gICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
dHJhbnNmb3JtLm00MigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgICAg
ICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9y
bS5tNDMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNm
b3JtVmFsLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFsdWUodHJhbnNmb3JtLm00MSgpLCBz
dHlsZSkpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZCh6b29tQWRqdXN0ZWROdW1iZXJW
YWx1ZSh0cmFuc2Zvcm0ubTQyKCksIHN0eWxlKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBw
ZW5kKHpvb21BZGp1c3RlZE51bWJlclZhbHVlKHRyYW5zZm9ybS5tNDMoKSwgc3R5bGUpKTsKICAg
ICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFu
c2Zvcm0ubTQ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgfQogCkBA
IC01NjgsMTAgKzU5MywxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nSwogICAgIGlmIChpbnQg
a2V5d29yZFNpemUgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29yZFNpemUoKSkKICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGNzc0lkZW50
aWZpZXJGb3JGb250U2l6ZUtleXdvcmQoa2V5d29yZFNpemUpKTsKIAotICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3R5bGUuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywgaW50IGlkKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGludCBp
ZCwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIGlmICghc2hhZG93KQogICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25l
KTsKQEAgLTU4MCwxMCArNjA1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0CiAKICAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogICAgIGZvciAoY29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9IHMt
Pm5leHQoKSkgewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHggPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHMtPngoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0g
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocy0+eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzLT5i
bHVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93
ID8gMCA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocy0+c3ByZWFkKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHggPSB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHMtPngoKSwgc3R5bGUpOworICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHkgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHMtPnkoKSwgc3R5bGUp
OworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXIgPSB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHMtPmJsdXIoKSwgc3R5bGUpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8gMCA6
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocy0+c3ByZWFkKCksIHN0eWxlKTsKICAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHlsZSA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlU
ZXh0U2hhZG93IHx8IHMtPnN0eWxlKCkgPT0gTm9ybWFsID8gMCA6IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSW5zZXQpOwogICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbG9yID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHMtPmNv
bG9yKCkucmdiKCkpOwogICAgICAgICBsaXN0LT5wcmVwZW5kKFNoYWRvd1ZhbHVlOjpjcmVhdGUo
eC5yZWxlYXNlKCksIHkucmVsZWFzZSgpLCBibHVyLnJlbGVhc2UoKSwgc3ByZWFkLnJlbGVhc2Uo
KSwgc3R5bGUucmVsZWFzZSgpLCBjb2xvci5yZWxlYXNlKCkpKTsKQEAgLTc0NywxNCArNzcyLDE0
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTZXBhcmF0ZSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmhv
cml6b250YWxCb3JkZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT52
ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmhvcml6
b250YWxCb3JkZXJTcGFjaW5nKCksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dmVydGljYWxCb3JkZXJTcGFjaW5n
KCksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAg
ICAgICAgIH0gIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+aG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgotICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnZlcnRpY2FsQm9yZGVyU3BhY2luZygpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgc3R5bGUuZ2V0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CiAgICAgICAgICAgICBy
ZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHlsZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xv
cihzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3Ip
LnJnYigpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUtPmJv
cmRlclRvcENvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xv
cjoKQEAgLTc3MiwxMyArNzk3LDEzIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm90dG9tOgogICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0
VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Qm90dG9tKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveEFsaWduOgpAQCAtODA0LDkgKzgyOSw5IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShp
bnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShi
b3hQYWNrKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UmVm
bGVjdDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZmxlY3Rpb24oc3R5bGUtPmJveFJl
ZmxlY3QoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWZsZWN0aW9uKHN0eWxlLT5i
b3hSZWZsZWN0KCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveFNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHlsZS0+Ym94
U2hhZG93KCksIHByb3BlcnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93
KHN0eWxlLT5ib3hTaGFkb3coKSwgcHJvcGVydHlJRCwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Y2FwdGlvblNpZGUoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlDbGVhcjoKQEAgLTgyNiw3ICs4NTEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Bl
cgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmNvbHVtblJ1bGVT
dHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoK
LSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5jb2x1
bW5SdWxlV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y29sdW1uUnVsZVdpZHRoKCksIHN0
eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW46CiAg
ICAgICAgICAgICBpZiAoc3R5bGUtPmNvbHVtblNwYW4oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBbGwpOwpAQCAt
ODc0LDcgKzg5OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1
cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTaXplOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUo
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKICAgICAgICAgICAgIGlmIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSXRhbGljKTsKQEAg
LTkwOCw3ICs5MzMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKICAgICAgICAgICAgIGlmIChyZW5kZXJl
cikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzaXpp
bmdCb3gocmVuZGVyZXIpLmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzaXppbmdCb3gocmVu
ZGVyZXIpLmhlaWdodCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+aGVpZ2h0KCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5oaWdobGlnaHQo
KSA9PSBudWxsQXRvbSkKQEAgLTkzMyw3ICs5NTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Bl
cgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKICAgICAgICAgICAgIGlm
ICghc3R5bGUtPmxldHRlclNwYWNpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmxldHRlclNwYWNpbmco
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+bGV0dGVyU3BhY2luZygpLCBzdHlsZS5nZXQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6CiAgICAgICAgICAgICBpZiAo
c3R5bGUtPmxpbmVDbGFtcCgpLmlzTm9uZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpAQCAtOTQ3LDgg
Kzk3Miw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICAgICAgLy8gZm9y
IGhvdyBoaWdoIHRvIGJlIGluIHBpeGVscyBkb2VzIGluY2x1ZGUgdGhpbmdzIGxpa2UgbWluaW11
bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4KICAgICAgICAgICAgICAgICAvLyBPbiB0
aGUgb3RoZXIgaGFuZCwgc2luY2UgZm9udC1zaXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBm
YWN0b3IsIHdlIHJlYWxseSBjYW4ndCBkbwogICAgICAgICAgICAgICAgIC8vIHRoYXQgaGVyZSBl
aXRoZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2VudCgpICogc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwot
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoLnZhbHVl
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0YXRpY19jYXN0PGludD4obGVuZ3RoLnBlcmNlbnQoKSAq
IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkpIC8gMTAwLCBzdHlsZS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShsZW5ndGgu
dmFsdWUoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZToKICAgICAgICAgICAgIGlmIChzdHlsZS0+bGlzdFN0eWxlSW1hZ2Uo
KSkKQEAgLTk2MSwyMiArOTg2LDIyIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Ub3A6CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvc2VkIHRv
IHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodG9SZW5kZXJCb3go
cmVuZGVyZXIpLT5tYXJnaW5Ub3AoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5tYXJnaW5Ub3AoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpblRvcCgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJl
bmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0byBy
ZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgotICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRvUmVuZGVyQm94KHJl
bmRlcmVyKS0+bWFyZ2luUmlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5tYXJnaW5SaWdodCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFyZ2luUmlnaHQoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvc2Vk
IHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodG9SZW5kZXJC
b3gocmVuZGVyZXIpLT5tYXJnaW5Cb3R0b20oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9SZW5kZXJC
b3gocmVuZGVyZXIpLT5tYXJnaW5Cb3R0b20oKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpbkJvdHRvbSgpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1
cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZp
ZWQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodG9S
ZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5MZWZ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVu
ZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luTGVmdCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFyZ2luTGVmdCgpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CiAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFycXVlZURpcmVj
dGlvbigpKTsKQEAgLTEwNTUsNyArMTA4MCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShzdHlsZS0+b3V0bGluZVN0eWxlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPm91dGxpbmVXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5vdXRsaW5lV2lkdGgo
KSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CiAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtYXgoc3R5bGUtPm92ZXJm
bG93WCgpLCBzdHlsZS0+b3ZlcmZsb3dZKCkpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WDoKQEAgLTEwNjQsMTkgKzEwODksMTkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIK
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5vdmVy
Zmxvd1koKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cGFk
ZGluZ1RvcChmYWxzZSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+
cGFkZGluZ1RvcChmYWxzZSksIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJl
bmRlcmVyLT5pc0JveCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cGFkZGluZ1JpZ2h0KGZhbHNlKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1
c3RlZFBpeGVsVmFsdWUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nUmlnaHQoZmFsc2Up
LCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShzdHlsZS0+cGFkZGluZ1JpZ2h0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFk
ZGluZ0JvdHRvbToKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3go
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1Jl
bmRlckJveChyZW5kZXJlciktPnBhZGRpbmdCb3R0b20oZmFsc2UpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBhZGRpbmdCb3R0b20oZmFsc2UpLCBzdHlsZS5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+
cGFkZGluZ0JvdHRvbSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0Ogog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+cGFkZGluZ0xlZnQoZmFsc2UpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChy
ZW5kZXJlciktPnBhZGRpbmdMZWZ0KGZhbHNlKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBhZGRpbmdMZWZ0KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CiAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGFnZUJyZWFrQWZ0ZXIoKSk7CkBA
IC0xMTA2LDcgKzExMzEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dEluZGVudDoKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN0eWxlLT50ZXh0SW5kZW50KCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHlsZS0+
dGV4dFNoYWRvdygpLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNo
YWRvdyhzdHlsZS0+dGV4dFNoYWRvdygpLCBwcm9wZXJ0eUlELCBzdHlsZS5nZXQoKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgogICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnRleHRSZW5k
ZXJpbmdNb2RlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OgpAQCAt
MTEyMiw3ICsxMTQ3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT50ZXh0U3Ryb2tlQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGg6Ci0gICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dGV4dFN0cm9r
ZVdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRleHRTdHJva2VXaWR0aCgpLCBzdHlsZS5n
ZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOgogICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRleHRUcmFuc2Zvcm0o
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6CkBAIC0xMTYyLDEyICsxMTg3LDEyIEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzdHlsZS0+d2lkb3dzKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgogICAgICAgICAgICAgaWYgKHJl
bmRlcmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHNpemluZ0JveChyZW5kZXJlcikud2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc2l6aW5nQm94
KHJlbmRlcmVyKS53aWR0aCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+d2lkdGgoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXb3JkQnJlYWs6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS0+d29yZEJyZWFrKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29y
ZFNwYWNpbmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+d29yZFNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+d29yZFNwYWNpbmcoKSwg
c3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CiAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+d29yZFdyYXAoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6CkBAIC0xMjA2LDEwICsx
MjMxLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAKICAgICAgICAgICAgICAgICByZWdp
b24tPm1fbGFiZWwgPSBzdHlsZVJlZ2lvbi5sYWJlbDsKICAgICAgICAgICAgICAgICBMZW5ndGhC
b3ggb2Zmc2V0ID0gc3R5bGVSZWdpb24ub2Zmc2V0OwotICAgICAgICAgICAgICAgIHJlZ2lvbi0+
c2V0VG9wKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUob2Zmc2V0LnRvcCgpLnZhbHVlKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgICAgICByZWdpb24tPnNldFJp
Z2h0KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUob2Zmc2V0LnJpZ2h0KCkudmFsdWUoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0Qm90
dG9tKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUob2Zmc2V0LmJvdHRvbSgpLnZhbHVlKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgICAgICByZWdpb24tPnNldExl
ZnQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShvZmZzZXQubGVmdCgpLnZhbHVlKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgICAgICAgICByZWdpb24tPnNldFRvcCh6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9mZnNldC50b3AoKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0UmlnaHQoem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShvZmZzZXQucmlnaHQoKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAg
IHJlZ2lvbi0+c2V0Qm90dG9tKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUob2Zmc2V0LmJvdHRvbSgp
LnZhbHVlKCksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRMZWZ0
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWUob2Zmc2V0LmxlZnQoKS52YWx1ZSgpLCBzdHlsZS5nZXQo
KSkpOwogICAgICAgICAgICAgICAgIHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSA9IChzdHlsZVJlZ2lv
bi50eXBlID09IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUpOwogICAgICAgICAgICAg
ICAgIHJlZ2lvbi0+bV9pc0NpcmNsZSA9IChzdHlsZVJlZ2lvbi50eXBlID09IFN0eWxlRGFzaGJv
YXJkUmVnaW9uOjpDaXJjbGUpOwogCkBAIC0xMzMwLDggKzEzNTUsOCBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
aW50IHByb3BlcgogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJl
cikgewogICAgICAgICAgICAgICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsK
LSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0aCgpKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxj
TWluVmFsdWUoYm94LmhlaWdodCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjTWluVmFsdWUoYm94LndpZHRoKCkpLCBzdHlsZS5nZXQo
KSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgpKSwg
c3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblgoKSkpOwpAQCAtMTM0OCwyMSArMTM3MywyMSBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUoaW50IHByb3BlcgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoK
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT51c2Vy
U2VsZWN0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1
czoKLSAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+
Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJS
YWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICAg
ICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29y
bmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMo
KSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkpOworICAgICAgICAgICAg
cmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiB7CiAgICAgICAg
ICAgICBpZiAoIXN0eWxlLT5oYXNDbGlwKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAg
ICBSZWZQdHI8UmVjdD4gcmVjdCA9IFJlY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgcmVjdC0+
c2V0VG9wKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmNsaXAoKS50b3AoKS52YWx1
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICByZWN0LT5zZXRS
aWdodChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5jbGlwKCkucmlnaHQoKS52YWx1
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICByZWN0LT5zZXRC
b3R0b20oQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Y2xpcCgpLmJvdHRvbSgpLnZh
bHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgIHJlY3QtPnNl
dExlZnQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Y2xpcCgpLmxlZnQoKS52YWx1
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICByZWN0LT5zZXRU
b3Aoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y2xpcCgpLnRvcCgpLnZhbHVlKCksIHN0
eWxlLmdldCgpKSk7CisgICAgICAgICAgICByZWN0LT5zZXRSaWdodCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlKHN0eWxlLT5jbGlwKCkucmlnaHQoKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAg
ICAgICAgICAgcmVjdC0+c2V0Qm90dG9tKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmNs
aXAoKS5ib3R0b20oKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgcmVjdC0+
c2V0TGVmdCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5jbGlwKCkubGVmdCgpLnZhbHVl
KCksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyZWN0LnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybToKQEAgLTEzNzEsMTUgKzEzOTYsMTUgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGludCBwcm9wZXIKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7
Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKS5jYWxjTWluVmFsdWUoYm94LndpZHRoKCkpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWlu
VmFsdWUoYm94LmhlaWdodCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFu
c2Zvcm1PcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0aCgpKSwgc3R5bGUuZ2V0KCkpKTsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHls
ZS0+dHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNNaW5WYWx1ZShib3guaGVpZ2h0KCkpLCBzdHlsZS5n
ZXQoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9
IDApCi0gICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSkpOwogICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1P
cmlnaW5ZKCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPnRyYW5zZm9ybU9yaWdpbloo
KSAhPSAwKQotICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgpKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggODE2ZDE1YWE3
MmRiODMzY2NlOTkyNWEwMTQ1YTQxYmZhNTVkYjRiMS4uMGNlZDE3YWJmNGNkNTMyOGRkNWMyOTAx
YTgyYThhZjdlNzdiY2Y5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyByZW1v
dmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBpbnQpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBpbnQsIFJl
bmRlclN0eWxlKikgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Vy
cmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsK
ICAgICAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL1NWR0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNDEwZWVkZTMyZWJmNGEyNjYzNTY1ZjU3
MTBjNzQ2YWEwZmM0YzliOC4uMGNmNjE4MTM3NWU4ZWViOWQ5N2Y3MzJjYmVhNGQzMGE4ZjEzZWFl
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0xODAsNyArMTgwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm8KICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTdmdT
aGFkb3c6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3ZnU3R5bGUtPnNoYWRv
dygpLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdmdT
dHlsZS0+c2hhZG93KCksIHByb3BlcnR5SUQsIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVZlY3RvckVmZmVjdDoKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHN2Z1N0eWxlLT52ZWN0b3JFZmZlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXJrZXI6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67576</attachid>
            <date>2010-09-14 11:06:44 -0700</date>
            <delta_ts>2010-09-14 17:29:41 -0700</delta_ts>
            <desc>Fixed merge conflicts</desc>
            <filename>bug-32230-20100914110643.patch</filename>
            <type>text/plain</type>
            <size>38039</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NTMwMWRhMGFlZDRhZDliNjAzZGVlYWM1MDA1MTZiYzZiMWEwNmZjLi5kMzU0NjVj
ZjIxNDQ5MTc0ZmUyYzU1NzkyNTdmZWExNWNkZDM3N2IyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDktMTQgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnZXRDb21wdXRlZFN0eWxl
KCkgcmV0dXJucyBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZmZXJlbnQgem9vbSBsZXZlbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMjMwCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9v
bS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9v
bS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0UHJvcGVydHkpOgorICAgICAgICAodGVzdFByb3Bl
cnR5VmFsdWUpOgorCiAyMDEwLTA5LTE0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUt
d2l0aC16b29tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjZjMDA4MmVmNGNiZWYzNGNlMTEwZDA0MmNjNzJhODM2OTNkNzQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13
aXRoLXpvb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1Rlc3RzIHRoYXQgY29tcHV0
ZWQgc3R5bGUgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSB6b29tIHZhbHVlCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIC13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2lu
ZywgdmFsdWU6ICI1cHgiCitQQVNTIC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmcsIHZh
bHVlOiAiNXB4IgorUEFTUyAtd2Via2l0LWJveC1yZWZsZWN0LCB2YWx1ZTogImJlbG93IDVweCAt
d2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCUgMCUsIDAlIDEwMCUsIGZyb20odHJhbnNwYXJlbnQp
LCB0byh3aGl0ZSkpIDAgMCAwIDAgc3RyZXRjaCBzdHJldGNoIgorUEFTUyAtd2Via2l0LWJveC1z
aGFkb3csIHZhbHVlOiAicmdiKDI1NSwgMCwgMCkgNXB4IDVweCA1cHggNXB4IgorUEFTUyAtd2Vi
a2l0LWNvbHVtbi1ydWxlLXdpZHRoLCB2YWx1ZTogIjVweCIKK1BBU1MgLXdlYmtpdC1wZXJzcGVj
dGl2ZS1vcmlnaW4sIHZhbHVlOiAiNXB4IDVweCIKK1BBU1MgLXdlYmtpdC10ZXh0LXN0cm9rZS13
aWR0aCwgdmFsdWU6ICI1cHgiCitQQVNTIC13ZWJraXQtdHJhbnNmb3JtLCB2YWx1ZTogIm1hdHJp
eCgxLCAwLCAwLCAxLCA1LCA1KSIKK1BBU1MgLXdlYmtpdC10cmFuc2Zvcm0sIHZhbHVlOiAibWF0
cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgNSwgNSwgNSwgMSkiCitQ
QVNTIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiwgdmFsdWU6ICI1cHggNXB4IgorUEFTUyBib3Jk
ZXItYm90dG9tLWxlZnQtcmFkaXVzLCB2YWx1ZTogIjVweCIKK1BBU1MgYm9yZGVyLWJvdHRvbS1y
aWdodC1yYWRpdXMsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItYm90dG9tLXdpZHRoLCB2YWx1
ZTogIjVweCIKK1BBU1MgYm9yZGVyLWxlZnQtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBib3Jk
ZXItcmlnaHQtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItc3BhY2luZywgdmFsdWU6
ICI1cHggNXB4IgorUEFTUyBib3JkZXItdG9wLWxlZnQtcmFkaXVzLCB2YWx1ZTogIjVweCIKK1BB
U1MgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItdG9w
LXdpZHRoLCB2YWx1ZTogIjVweCIKK1BBU1MgYm90dG9tLCB2YWx1ZTogIjVweCIKK1BBU1MgY2xp
cCwgdmFsdWU6ICJyZWN0KDVweCA5NXB4IDk1cHggNXB4KSIKK1BBU1MgZm9udC1zaXplLCB2YWx1
ZTogIjVweCIKK1BBU1MgZm9udC1zaXplLCB2YWx1ZTogIjE2cHgiCitQQVNTIGhlaWdodCwgdmFs
dWU6ICI1cHgiCitQQVNTIGxlZnQsIHZhbHVlOiAiNXB4IgorUEFTUyBsZXR0ZXItc3BhY2luZywg
dmFsdWU6ICI1cHgiCitQQVNTIGxpbmUtaGVpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2lu
LWJvdHRvbSwgdmFsdWU6ICI1cHgiCitQQVNTIG1hcmdpbi1sZWZ0LCB2YWx1ZTogIjVweCIKK1BB
U1MgbWFyZ2luLXJpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2luLXRvcCwgdmFsdWU6ICI1
cHgiCitQQVNTIG91dGxpbmUtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBwYWRkaW5nLWJvdHRv
bSwgdmFsdWU6ICI1cHgiCitQQVNTIHBhZGRpbmctbGVmdCwgdmFsdWU6ICI1cHgiCitQQVNTIHBh
ZGRpbmctcmlnaHQsIHZhbHVlOiAiNXB4IgorUEFTUyBwYWRkaW5nLXRvcCwgdmFsdWU6ICI1cHgi
CitQQVNTIHJpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgdGV4dC1zaGFkb3csIHZhbHVlOiAicmdi
KDI1NSwgMCwgMCkgNXB4IDVweCA1cHgiCitQQVNTIHRvcCwgdmFsdWU6ICI1cHgiCitQQVNTIHdp
ZHRoLCB2YWx1ZTogIjVweCIKK1BBU1Mgd29yZC1zcGFjaW5nLCB2YWx1ZTogIjVweCIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdp
dGgtem9vbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS13aXRoLXpvb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjdiMmFhNjFiYTdhYmRlZDU4
ZmFiNjU5YzhhYjI5MTIwNjQ5OWU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRoLXpvb20uaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5bGUt
d2l0aC16b29tLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1
dGVkLXN0eWxlLXdpdGgtem9vbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9vbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZWE4NWMwYmE2NzE4Y2Q0OTI5YjQ0M2I3YTJhNWMxMTU4M2NmMzRlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9zY3JpcHQtdGVzdHMv
Y29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmpzCkBAIC0wLDAgKzEsODMgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyB0aGF0IGNvbXB1dGVkIHN0eWxlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgem9vbSB2
YWx1ZScpOworCitmdW5jdGlvbiB0ZXN0UHJvcGVydHkoZGF0YSkKK3sKKyAgICB2YXIgcHJvcCA9
IGRhdGFbMF07CisgICAgaWYgKGRhdGEubGVuZ3RoID09IDEpCisgICAgICBkYXRhLnB1c2goJzVw
eCcpOworCisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHRlc3RQcm9wZXJ0eVZhbHVlKHByb3AsIGRhdGFbaV0pOworICAgIH0KK30KKworZnVuY3Rp
b24gdGVzdFByb3BlcnR5VmFsdWUocHJvcCwgdmFsdWUpCit7CisgICAgdmFyIGVsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZWwuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlv
bjogYWJzb2x1dGU7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgJ292ZXJmbG93OiBoaWRkZW47IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsnICsK
KyAgICAgICAgICAgICAgICAgICAgICAgJ291dGxpbmU6IDFweCBzb2xpZCBibHVlOy13ZWJraXQt
Y29sdW1uLXJ1bGU6IDFweCBzb2xpZCByZWQnOworICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KHBy
b3AsIHZhbHVlLCAnJyk7CisKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnpvb20gPSAnJzsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTsKKworICAgIHZhciB2YWx1ZTEgPSBnZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApOworICAgIGRvY3Vt
ZW50LmJvZHkuc3R5bGUuem9vbSA9IDI7CisgICAgdmFyIHZhbHVlMiA9IGdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcCk7CisKKyAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGVsKTsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnpvb20gPSAnJzsKKwor
ICAgIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB2YWx1ZTEgPT09IHZhbHVlMikK
KyAgICAgICAgdGVzdFBhc3NlZChwcm9wICsgJywgdmFsdWU6ICInICsgdmFsdWUxICsgJyInKTsK
KyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQocHJvcCArICcsIHZhbHVlMTogIicgKyB2YWx1
ZTEgKyAnIiwgdmFsdWUyOiAiJyArIHZhbHVlMiArICciJyk7Cit9CisKK3ZhciB0ZXN0RGF0YSA9
IFsKKyAgICBbJy13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZyddLAorICAgIFsnLXdl
YmtpdC1ib3JkZXItdmVydGljYWwtc3BhY2luZyddLAorICAgIFsnLXdlYmtpdC1ib3gtcmVmbGVj
dCcsICdiZWxvdyA1cHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJv
dHRvbSwgZnJvbSh0cmFuc3BhcmVudCksIHRvKHdoaXRlKSknXSwKKyAgICBbJy13ZWJraXQtYm94
LXNoYWRvdycsICc1cHggNXB4IDVweCA1cHggcmVkJ10sCisgICAgWyctd2Via2l0LWNvbHVtbi1y
dWxlLXdpZHRoJywgJzVweCddLAorICAgIFsnLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4nLCAn
NXB4IDVweCddLAorICAgIFsnLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCddLAorICAgIFsnLXdl
YmtpdC10cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDVweCwgNXB4KScsICd0cmFuc2xhdGUzZCg1cHgs
IDVweCwgNXB4KSddLAorICAgIFsnLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luJywgJzVweCA1cHgn
XSwKKyAgICBbJ2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMnXSwKKyAgICBbJ2JvcmRlci1ib3R0
b20tcmlnaHQtcmFkaXVzJ10sCisgICAgWydib3JkZXItYm90dG9tLXdpZHRoJ10sCisgICAgWydi
b3JkZXItbGVmdC13aWR0aCddLAorICAgIFsnYm9yZGVyLXJpZ2h0LXdpZHRoJ10sCisgICAgWydi
b3JkZXItc3BhY2luZyddLAorICAgIFsnYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyddLAorICAgIFsn
Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXMnXSwKKyAgICBbJ2JvcmRlci10b3Atd2lkdGgnXSwKKyAg
ICBbJ2JvdHRvbSddLAorICAgIFsnY2xpcCcsICdyZWN0KDVweCA5NXB4IDk1cHggNXB4KSddLAor
ICAgIFsnZm9udC1zaXplJywgJzVweCcsICdtZWRpdW0nXSwKKyAgICBbJ2hlaWdodCddLAorICAg
IFsnbGVmdCddLAorICAgIFsnbGV0dGVyLXNwYWNpbmcnXSwKKyAgICBbJ2xpbmUtaGVpZ2h0J10s
CisgICAgWydtYXJnaW4tYm90dG9tJ10sCisgICAgWydtYXJnaW4tbGVmdCddLAorICAgIFsnbWFy
Z2luLXJpZ2h0J10sCisgICAgWydtYXJnaW4tdG9wJ10sCisgICAgWydvdXRsaW5lLXdpZHRoJ10s
CisgICAgWydwYWRkaW5nLWJvdHRvbSddLAorICAgIFsncGFkZGluZy1sZWZ0J10sCisgICAgWydw
YWRkaW5nLXJpZ2h0J10sCisgICAgWydwYWRkaW5nLXRvcCddLAorICAgIFsncmlnaHQnXSwKKyAg
ICBbJ3RleHQtc2hhZG93JywgJzVweCA1cHggNXB4IHJlZCddLAorICAgIFsndG9wJ10sCisgICAg
Wyd3aWR0aCddLAorICAgIFsnd29yZC1zcGFjaW5nJ10sCitdOworCit0ZXN0RGF0YS5mb3JFYWNo
KHRlc3RQcm9wZXJ0eSk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc5MDFiM2I0
YmZmNTg5MzZlN2M1MGY0MTk2YzlmMzlhNWEwYTRlZS4uYWU2ZGU4OWIyYTAwZjU4MDA0OTA3ZjI4
OGQzN2E2Mjk3NDU1NjhhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wOS0xNCAgRXJpayBBcnZpZHNz
b24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGdldENvbXB1dGVkU3R5bGUoKSByZXR1cm5zIGRpZmZlcmVudCB2YWx1
ZXMgZm9yIGRpZmZlcmVudCB6b29tIGxldmVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyMzAKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9vbS5odG1sCisKKyAgICAgICAgVGhp
cyBhZGp1c3RzIGFsbCBjb21wdXRlZCBweCB2YWx1ZXMgdG8gYmUgYWRqdXN0ZWQgYnkgdGhlIGVm
ZmVjdGl2ZSB6b29tLCB3aGljaCBsZWFkcyB0byBjb21wdXRlZCBzdHlsZSBub3QgY2hhbmdpbmcg
d2hlbgorICAgICAgICB0aGUgdXNlciB6b29tcyBpbiBvbiB0aGUgd2ViIHBhZ2UuCisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Onpvb21BZGp1c3RlZFBpeGVsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6em9vbUFkanVz
dGVkTnVtYmVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JSZWZsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFBvc2l0aW9uT2Zmc2V0VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZWRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp2YWx1ZUZvclNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoK
KyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U1ZHUHJvcGVydHlD
U1NWYWx1ZSk6CisKIDIwMTAtMDktMTQgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCBmaXggY2hyb21pdW0gY29tcGlsZS4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDBlZjc3MjExOTA2YmM5OGYx
YjZhNTI5MjhkODFlMGU1ODg5NTkyOGUuLjY3YzI4MjRhYjBhYmI1YTUxZWNmYzA0NzNjODU4YjE1
ZjkxNzJkMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMzI3LDcgKzMyNywyOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVG
b3JOaW5lUGllY2VJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiAgICAgcmV0dXJu
IENTU0JvcmRlckltYWdlVmFsdWU6OmNyZWF0ZShpbWFnZVZhbHVlLCByZWN0LCB2YWx1ZUZvclJl
cGVhdFJ1bGUoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSksIHZhbHVlRm9yUmVwZWF0UnVsZShpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFs
dWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbikKK3N0YXRp
YyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGlu
dCB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAgIGZsb2F0IHpvb21GYWN0
b3IgPSBzdHlsZSA/IHN0eWxlLT5lZmZlY3RpdmVab29tKCkgOiAxOworICAgIGlmICh6b29tRmFj
dG9yICE9IDEpIHsKKyAgICAgICAgLy8gTmVlZGVkIGJlY2F1c2UgdGhlIHBpeGVsIHZhbHVlIHRy
dW5jYXRlcyAocmF0aGVyIHRoYW4gcm91bmRzKSB3aGVuIHNjYWxpbmcgdXAuCisgICAgICAgIGlm
ICh6b29tRmFjdG9yID4gMSkKKyAgICAgICAgICAgIHZhbHVlKys7CisgICAgICAgIHZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAvIHpvb21GYWN0b3IpOworICAgIH0KKworICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHpvb21BZGp1
c3RlZE51bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQor
eworICAgIGRvdWJsZSB6b29tRmFjdG9yID0gc3R5bGUgPyBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgp
IDogMTsKKyAgICBpZiAoem9vbUZhY3RvciAhPSAxKQorICAgICAgICB2YWx1ZSA9IHZhbHVlIC8g
em9vbUZhY3RvcjsKKworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVl
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZs
ZWN0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCFyZWZsZWN0aW9u
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVOb25lKTsKQEAgLTMzNiw3ICszNTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbgog
ICAgIGlmIChyZWZsZWN0aW9uLT5vZmZzZXQoKS5pc1BlcmNlbnQoKSkKICAgICAgICAgb2Zmc2V0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZWZsZWN0aW9uLT5vZmZzZXQoKS5wZXJjZW50
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgZWxzZQotICAgICAg
ICBvZmZzZXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlZmxlY3Rpb24tPm9mZnNldCgp
LnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBvZmZzZXQgPSB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlZmxlY3Rpb24tPm9mZnNldCgpLnZhbHVlKCksIHN0eWxl
KTsKICAgICAKICAgICByZXR1cm4gQ1NTUmVmbGVjdFZhbHVlOjpjcmVhdGUocmVmbGVjdGlvbi0+
ZGlyZWN0aW9uKCksIG9mZnNldC5yZWxlYXNlKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVm
bGVjdGlvbi0+bWFzaygpKSk7CiB9CkBAIC0zNjQsOCArMzg2LDExIEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwg
aW50IHByb3BlCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoc3R5bGUt
PnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBzdHlsZS0+cG9zaXRpb24oKSA9PSBG
aXhlZFBvc2l0aW9uKQorICAgIGlmIChzdHlsZS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0
aW9uIHx8IHN0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgaWYg
KGwudHlwZSgpID09IFdlYkNvcmU6OkZpeGVkKQorICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKGwudmFsdWUoKSwgc3R5bGUpOwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShsKTsKKyAgICB9CiAKICAgICBpZiAoc3R5bGUtPnBvc2l0aW9uKCkg
PT0gUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGVub3VnaCB0
byBzaW1wbHkgcmV0dXJuICJhdXRvIiB2YWx1ZXMgZm9yIG9uZSBvZmZzZXQgaWYgdGhlIG90aGVy
IHNpZGUgaXMgZGVmaW5lZC4KQEAgLTM4NCwyMiArNDA5LDIyIEBAIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3VycmVudENvbG9yT3JW
YWxpZENvCiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xvci5y
Z2IoKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXND
b3JuZXJWYWx1ZShMZW5ndGhTaXplIHJhZGl1cykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShMZW5ndGhTaXplIHJhZGl1cywgUmVmUHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChyYWRpdXMud2lkdGgo
KSA9PSByYWRpdXMuaGVpZ2h0KCkpIHsKICAgICAgICAgaWYgKHJhZGl1cy53aWR0aCgpLnR5cGUo
KSA9PSBQZXJjZW50KQogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUocmFkaXVzLndpZHRoKCkucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpOwotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMu
d2lkdGgoKS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocmFkaXVzLndpZHRoKCkudmFsdWUoKSwgc3R5bGUu
Z2V0KCkpOwogICAgIH0KICAgICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgpID09IFBlcmNlbnQp
CiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53
aWR0aCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAg
ICAgZWxzZQotICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShy
YWRpdXMud2lkdGgoKS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJhZGl1cy53aWR0aCgpLnZh
bHVlKCksIHN0eWxlLmdldCgpKSk7CiAgICAgaWYgKHJhZGl1cy5oZWlnaHQoKS50eXBlKCkgPT0g
UGVyY2VudCkKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
cmFkaXVzLmhlaWdodCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFKSk7CiAgICAgZWxzZQotICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYWRpdXMuaGVpZ2h0KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyYWRpdXMu
aGVpZ2h0KCkudmFsdWUoKSwgc3R5bGUuZ2V0KCkpKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CiB9CiAKQEAgLTQzOCw4ICs0NjMsOCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y29tcHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZAogICAg
ICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5z
Zm9ybS5iKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgICAgIHRyYW5z
Zm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmMoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICAgICAgdHJhbnNmb3JtVmFsLT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0uZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7Ci0gICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodHJhbnNmb3JtLmYoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
KTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFsdWUo
dHJhbnNmb3JtLmUoKSwgc3R5bGUpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoem9v
bUFkanVzdGVkTnVtYmVyVmFsdWUodHJhbnNmb3JtLmYoKSwgc3R5bGUpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICB0cmFuc2Zvcm1WYWwgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y3JlYXRl
KFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbik7CiAK
QEAgLTQ1OCw5ICs0ODMsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRU
cmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgICAgICB0cmFu
c2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMzMo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICAgICAgdHJhbnNmb3JtVmFs
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTM0KCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAKLSAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBl
bmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTQxKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm00MigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tNDMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFs
dWUodHJhbnNmb3JtLm00MSgpLCBzdHlsZSkpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVu
ZCh6b29tQWRqdXN0ZWROdW1iZXJWYWx1ZSh0cmFuc2Zvcm0ubTQyKCksIHN0eWxlKSk7CisgICAg
ICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKHpvb21BZGp1c3RlZE51bWJlclZhbHVlKHRyYW5zZm9y
bS5tNDMoKSwgc3R5bGUpKTsKICAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTQ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKSk7CiAgICAgfQogCkBAIC01ODMsNyArNjA4LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVy
cmluZ0sKICAgICBpZiAoaW50IGtleXdvcmRTaXplID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LmtleXdvcmRTaXplKCkpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3b3JkKGtleXdvcmRTaXplKSk7
CiAKLSAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgpKTsKIH0KIAogYm9vbCBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkgY29uc3QKQEAg
LTU5OCw3ICs2MjMsNyBAQCBib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dXNlRml4
ZWRGb250RGVmYXVsdFNpemUoKSBjb25zdAogICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkudXNlRml4ZWREZWZhdWx0U2l6ZSgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvdywgaW50IGlkKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3csIGludCBpZCwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIGlmICghc2hhZG93
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVOb25lKTsKQEAgLTYwNywxMCArNjMyLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0
CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoY29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsg
czsgcyA9IHMtPm5leHQoKSkgewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHgg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHMtPngoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUocy0+eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShzLT5ibHVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlU
ZXh0U2hhZG93ID8gMCA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocy0+c3ByZWFkKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHggPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHMtPngoKSwgc3R5bGUpOworICAgICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHkgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHMtPnko
KSwgc3R5bGUpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXIgPSB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHMtPmJsdXIoKSwgc3R5bGUpOworICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hh
ZG93ID8gMCA6IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocy0+c3ByZWFkKCksIHN0eWxlKTsKICAg
ICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHlsZSA9IHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlUZXh0U2hhZG93IHx8IHMtPnN0eWxlKCkgPT0gTm9ybWFsID8gMCA6IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSW5zZXQpOwogICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNv
bG9yKHMtPmNvbG9yKCkucmdiKCkpOwogICAgICAgICBsaXN0LT5wcmVwZW5kKFNoYWRvd1ZhbHVl
OjpjcmVhdGUoeC5yZWxlYXNlKCksIHkucmVsZWFzZSgpLCBibHVyLnJlbGVhc2UoKSwgc3ByZWFk
LnJlbGVhc2UoKSwgc3R5bGUucmVsZWFzZSgpLCBjb2xvci5yZWxlYXNlKCkpKTsKQEAgLTc3NCwx
NCArNzk5LDE0IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTZXBhcmF0ZSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOiB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5
bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dmVydGljYWxCb3Jk
ZXJTcGFjaW5nKCksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxl
YXNlKCk7CiAgICAgICAgIH0gIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
SG9yaXpvbnRhbFNwYWNpbmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShz
dHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgotICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnZlcnRpY2FsQm9yZGVyU3Bh
Y2luZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgc3R5
bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CiAgICAg
ICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHlsZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVDb2xvcihzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IpLnJnYigpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwg
c3R5bGUtPmJvcmRlclRvcENvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRDb2xvcjoKQEAgLTc5OSwxMyArODI0LDEzIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgogICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0
aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Qm90dG9tKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgpAQCAtODMxLDkgKzg1Niw5IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShib3hQYWNrKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm94UmVmbGVjdDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZmxlY3Rpb24oc3R5
bGUtPmJveFJlZmxlY3QoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWZsZWN0aW9u
KHN0eWxlLT5ib3hSZWZsZWN0KCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhz
dHlsZS0+Ym94U2hhZG93KCksIHByb3BlcnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
Rm9yU2hhZG93KHN0eWxlLT5ib3hTaGFkb3coKSwgcHJvcGVydHlJRCwgc3R5bGUuZ2V0KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CiAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Y2FwdGlvblNpZGUoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKQEAgLTg1Myw3ICs4NzgsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
aW50IHByb3BlcgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxl
OgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmNv
bHVtblJ1bGVTdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0
eWxlLT5jb2x1bW5SdWxlV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y29sdW1uUnVsZVdp
ZHRoKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blNwYW46CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmNvbHVtblNwYW4oKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVB
bGwpOwpAQCAtOTAxLDcgKzkyNiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAg
ICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTaXplOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0
eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSXRh
bGljKTsKQEAgLTkzNSw3ICs5NjAsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
Tm9ybWFsKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKICAgICAgICAgICAgIGlm
IChyZW5kZXJlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShzaXppbmdCb3gocmVuZGVyZXIpLmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzaXpp
bmdCb3gocmVuZGVyZXIpLmhlaWdodCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+aGVpZ2h0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5o
aWdobGlnaHQoKSA9PSBudWxsQXRvbSkKQEAgLTk2MCw3ICs5ODUsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
aW50IHByb3BlcgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKICAgICAg
ICAgICAgIGlmICghc3R5bGUtPmxldHRlclNwYWNpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOwot
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmxldHRl
clNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+bGV0dGVyU3BhY2luZygpLCBzdHlsZS5n
ZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6CiAgICAgICAg
ICAgICBpZiAoc3R5bGUtPmxpbmVDbGFtcCgpLmlzTm9uZSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpA
QCAtOTc0LDggKzk5OSw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICAg
ICAgLy8gZm9yIGhvdyBoaWdoIHRvIGJlIGluIHBpeGVscyBkb2VzIGluY2x1ZGUgdGhpbmdzIGxp
a2UgbWluaW11bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4KICAgICAgICAgICAgICAg
ICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgc2luY2UgZm9udC1zaXplIGRvZXNuJ3QgaW5jbHVkZSB0
aGUgem9vbSBmYWN0b3IsIHdlIHJlYWxseSBjYW4ndCBkbwogICAgICAgICAgICAgICAgIC8vIHRo
YXQgaGVyZSBlaXRoZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2VudCgpICogc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpOwotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVu
Z3RoLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0YXRpY19jYXN0PGludD4obGVuZ3RoLnBl
cmNlbnQoKSAqIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkpIC8gMTAw
LCBzdHlsZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShsZW5ndGgudmFsdWUoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToKICAgICAgICAgICAgIGlmIChzdHlsZS0+bGlzdFN0
eWxlSW1hZ2UoKSkKQEAgLTk4OCwyMiArMTAxMywyMiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Bl
cgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgogICAgICAgICAgICAgaWYgKHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBT
dXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lm
aWVkLgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRv
UmVuZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVu
ZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luVG9wKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXJnaW5Ub3AoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3Vw
cG9zZWQgdG8gcmV0dXJuIHRoZSBwZXJjZW50YWdlIGlmIHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmll
ZC4KLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1Jl
bmRlckJveChyZW5kZXJlciktPm1hcmdpblJpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVu
ZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luUmlnaHQoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpblJpZ2h0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgogICAgICAgICAgICAgaWYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3Bl
Y2lmaWVkLgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luQm90dG9tKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luQm90dG9tKCksIHN0eWxlLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXJnaW5C
b3R0b20oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3
YXMgc3BlY2lmaWVkLgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luTGVmdCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZSh0b1JlbmRlckJveChyZW5kZXJlciktPm1hcmdpbkxlZnQoKSwgc3R5bGUuZ2V0KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdp
bkxlZnQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9u
OgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1h
cnF1ZWVEaXJlY3Rpb24oKSk7CkBAIC0xMDgyLDcgKzExMDcsNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50
IHByb3BlcgogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm91dGxpbmVTdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU91dGxpbmVXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLT5vdXRsaW5lV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+b3V0
bGluZVdpZHRoKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJm
bG93OgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobWF4KHN0
eWxlLT5vdmVyZmxvd1goKSwgc3R5bGUtPm92ZXJmbG93WSgpKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd1g6CkBAIC0xMDkxLDE5ICsxMTE2LDE5IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShp
bnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+b3ZlcmZsb3dZKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1JlbmRlckJveChyZW5k
ZXJlciktPnBhZGRpbmdUb3AoZmFsc2UpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChy
ZW5kZXJlciktPnBhZGRpbmdUb3AoZmFsc2UpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGFkZGluZ1RvcCgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBhZGRpbmdSaWdodChm
YWxzZSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgICAgIHJldHVy
biB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cGFkZGluZ1Jp
Z2h0KGZhbHNlKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBhZGRpbmdSaWdodCgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhZGRpbmdCb3R0b206CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPmlzQm94KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nQm90dG9tKGZhbHNlKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nQm90dG9tKGZhbHNlKSwg
c3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoc3R5bGUtPnBhZGRpbmdCb3R0b20oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRk
aW5nTGVmdDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1JlbmRl
ckJveChyZW5kZXJlciktPnBhZGRpbmdMZWZ0KGZhbHNlKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9S
ZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nTGVmdChmYWxzZSksIHN0eWxlLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5wYWRkaW5n
TGVmdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBhZ2VCcmVha0Fm
dGVyKCkpOwpAQCAtMTEzMyw3ICsxMTU4LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dGV4dEluZGVudCgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFk
b3coc3R5bGUtPnRleHRTaGFkb3coKSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4g
dmFsdWVGb3JTaGFkb3coc3R5bGUtPnRleHRTaGFkb3coKSwgcHJvcGVydHlJRCwgc3R5bGUuZ2V0
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
ZmxvdzoKQEAgLTExNDksNyArMTE3NCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CiAgICAgICAgICAgICBy
ZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+dGV4dFN0
cm9rZUNvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUt
PnRleHRTdHJva2VXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgo
KSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToK
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50ZXh0
VHJhbnNmb3JtKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgpAQCAtMTE4OSwxMiAr
MTIxNCwxMiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndpZG93cygpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShzaXppbmdCb3gocmVuZGVyZXIpLndpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHNpemluZ0JveChyZW5kZXJlcikud2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndpZHRoKCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndvcmRCcmVhaygpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdvcmRTcGFjaW5nOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoc3R5bGUtPndvcmRTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPndvcmRT
cGFjaW5nKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFw
OgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndv
cmRXcmFwKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgpAQCAt
MTIzMywxMCArMTI1OCwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogCiAgICAgICAgICAg
ICAgICAgcmVnaW9uLT5tX2xhYmVsID0gc3R5bGVSZWdpb24ubGFiZWw7CiAgICAgICAgICAgICAg
ICAgTGVuZ3RoQm94IG9mZnNldCA9IHN0eWxlUmVnaW9uLm9mZnNldDsKLSAgICAgICAgICAgICAg
ICByZWdpb24tPnNldFRvcChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG9mZnNldC50b3AoKS52
YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICAgICAgcmVn
aW9uLT5zZXRSaWdodChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG9mZnNldC5yaWdodCgpLnZh
bHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgICAgICByZWdp
b24tPnNldEJvdHRvbShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG9mZnNldC5ib3R0b20oKS52
YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICAgICAgcmVn
aW9uLT5zZXRMZWZ0KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUob2Zmc2V0LmxlZnQoKS52YWx1
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICAgICAgcmVnaW9u
LT5zZXRUb3Aoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShvZmZzZXQudG9wKCkudmFsdWUoKSwgc3R5
bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICByZWdpb24tPnNldFJpZ2h0KHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUob2Zmc2V0LnJpZ2h0KCkudmFsdWUoKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICByZWdpb24tPnNldEJvdHRvbSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9mZnNl
dC5ib3R0b20oKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIHJlZ2lv
bi0+c2V0TGVmdCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9mZnNldC5sZWZ0KCkudmFsdWUoKSwg
c3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICByZWdpb24tPm1faXNSZWN0YW5nbGUgPSAo
c3R5bGVSZWdpb24udHlwZSA9PSBTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xlKTsKICAg
ICAgICAgICAgICAgICByZWdpb24tPm1faXNDaXJjbGUgPSAoc3R5bGVSZWdpb24udHlwZSA9PSBT
dHlsZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xlKTsKIApAQCAtMTM1Nyw4ICsxMzgyLDggQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChy
ZW5kZXJlcik7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lk
dGgoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmln
aW5ZKCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0aCgpKSwg
c3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJveC5o
ZWlnaHQoKSksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkpKTsKQEAgLTEzNzUsMjEgKzE0MDAsMjEgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJTZWxlY3Q6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+dXNlclNlbGVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUxlZnRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFs
dWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRp
dXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCBzdHls
ZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzOgotICAgICAg
ICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVy
VG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDog
ewogICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xpcCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOwog
ICAgICAgICAgICAgUmVmUHRyPFJlY3Q+IHJlY3QgPSBSZWN0OjpjcmVhdGUoKTsKLSAgICAgICAg
ICAgIHJlY3QtPnNldFRvcChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5jbGlwKCku
dG9wKCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAgICAgICAg
cmVjdC0+c2V0UmlnaHQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Y2xpcCgpLnJp
Z2h0KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAgICAgICAg
cmVjdC0+c2V0Qm90dG9tKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmNsaXAoKS5i
b3R0b20oKS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAg
ICByZWN0LT5zZXRMZWZ0KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmNsaXAoKS5s
ZWZ0KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAg
cmVjdC0+c2V0VG9wKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmNsaXAoKS50b3AoKS52
YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgcmVjdC0+c2V0UmlnaHQoem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y2xpcCgpLnJpZ2h0KCkudmFsdWUoKSwgc3R5bGUuZ2V0
KCkpKTsKKyAgICAgICAgICAgIHJlY3QtPnNldEJvdHRvbSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHN0eWxlLT5jbGlwKCkuYm90dG9tKCkudmFsdWUoKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAg
ICAgIHJlY3QtPnNldExlZnQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y2xpcCgpLmxl
ZnQoKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUocmVjdC5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CkBAIC0xMzk4LDE1ICsxNDIzLDE1IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAg
aWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCBib3ggPSBzaXppbmdCb3go
cmVuZGVyZXIpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0
aCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5Z
KCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
KTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShz
dHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIHN0eWxl
LmdldCgpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgp
KSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPnRyYW5zZm9ybU9y
aWdpblooKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgpKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkpKTsKICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+
dHJhbnNmb3JtT3JpZ2luWSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLT50cmFuc2Zv
cm1PcmlnaW5aKCkgIT0gMCkKLSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCBzdHlsZS5nZXQo
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaCBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IGQ0YjdkZjI0NGVlZDY1MzFjODVlNmU2YzNiN2IxZjNmNmNmZjU2ZDYuLjcxOGViMmRmYWIzY2Q5
ZmJmYTUzMzBjZDdhY2M1YTAyMjY5YWE1YzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBT
dHJpbmcgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgaW50KSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRh
KiwgaW50LCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9y
JikgY29uc3Q7CiAgICAgCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nz
cy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDQxMGVlZGUzMmViZjRh
MjY2MzU2NWY1NzEwYzc0NmFhMGZjNGM5YjguLjBjZjYxODEzNzVlOGVlYjlkOTdmNzMyY2JlYTRk
MzBhOGYxM2VhZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U1ZHUHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U3ZnU2hhZG93OgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN2Z1N0
eWxlLT5zaGFkb3coKSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JT
aGFkb3coc3ZnU3R5bGUtPnNoYWRvdygpLCBwcm9wZXJ0eUlELCBzdHlsZSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS0+dmVjdG9yRWZmZWN0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5TWFya2VyOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67621</attachid>
            <date>2010-09-14 17:29:44 -0700</date>
            <delta_ts>2012-02-09 15:35:30 -0800</delta_ts>
            <desc>Style fixes and reuse zoom adjusting code from RenderObject.h</desc>
            <filename>bug-32230-20100914172943.patch</filename>
            <type>text/plain</type>
            <size>39494</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NTMwMWRhMGFlZDRhZDliNjAzZGVlYWM1MDA1MTZiYzZiMWEwNmZjLi5kMzU0NjVj
ZjIxNDQ5MTc0ZmUyYzU1NzkyNTdmZWExNWNkZDM3N2IyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDktMTQgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnZXRDb21wdXRlZFN0eWxl
KCkgcmV0dXJucyBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZmZXJlbnQgem9vbSBsZXZlbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMjMwCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9v
bS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9v
bS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0UHJvcGVydHkpOgorICAgICAgICAodGVzdFByb3Bl
cnR5VmFsdWUpOgorCiAyMDEwLTA5LTE0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUt
d2l0aC16b29tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjZjMDA4MmVmNGNiZWYzNGNlMTEwZDA0MmNjNzJhODM2OTNkNzQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13
aXRoLXpvb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1Rlc3RzIHRoYXQgY29tcHV0
ZWQgc3R5bGUgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSB6b29tIHZhbHVlCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIC13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2lu
ZywgdmFsdWU6ICI1cHgiCitQQVNTIC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmcsIHZh
bHVlOiAiNXB4IgorUEFTUyAtd2Via2l0LWJveC1yZWZsZWN0LCB2YWx1ZTogImJlbG93IDVweCAt
d2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCUgMCUsIDAlIDEwMCUsIGZyb20odHJhbnNwYXJlbnQp
LCB0byh3aGl0ZSkpIDAgMCAwIDAgc3RyZXRjaCBzdHJldGNoIgorUEFTUyAtd2Via2l0LWJveC1z
aGFkb3csIHZhbHVlOiAicmdiKDI1NSwgMCwgMCkgNXB4IDVweCA1cHggNXB4IgorUEFTUyAtd2Vi
a2l0LWNvbHVtbi1ydWxlLXdpZHRoLCB2YWx1ZTogIjVweCIKK1BBU1MgLXdlYmtpdC1wZXJzcGVj
dGl2ZS1vcmlnaW4sIHZhbHVlOiAiNXB4IDVweCIKK1BBU1MgLXdlYmtpdC10ZXh0LXN0cm9rZS13
aWR0aCwgdmFsdWU6ICI1cHgiCitQQVNTIC13ZWJraXQtdHJhbnNmb3JtLCB2YWx1ZTogIm1hdHJp
eCgxLCAwLCAwLCAxLCA1LCA1KSIKK1BBU1MgLXdlYmtpdC10cmFuc2Zvcm0sIHZhbHVlOiAibWF0
cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgNSwgNSwgNSwgMSkiCitQ
QVNTIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiwgdmFsdWU6ICI1cHggNXB4IgorUEFTUyBib3Jk
ZXItYm90dG9tLWxlZnQtcmFkaXVzLCB2YWx1ZTogIjVweCIKK1BBU1MgYm9yZGVyLWJvdHRvbS1y
aWdodC1yYWRpdXMsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItYm90dG9tLXdpZHRoLCB2YWx1
ZTogIjVweCIKK1BBU1MgYm9yZGVyLWxlZnQtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBib3Jk
ZXItcmlnaHQtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItc3BhY2luZywgdmFsdWU6
ICI1cHggNXB4IgorUEFTUyBib3JkZXItdG9wLWxlZnQtcmFkaXVzLCB2YWx1ZTogIjVweCIKK1BB
U1MgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsIHZhbHVlOiAiNXB4IgorUEFTUyBib3JkZXItdG9w
LXdpZHRoLCB2YWx1ZTogIjVweCIKK1BBU1MgYm90dG9tLCB2YWx1ZTogIjVweCIKK1BBU1MgY2xp
cCwgdmFsdWU6ICJyZWN0KDVweCA5NXB4IDk1cHggNXB4KSIKK1BBU1MgZm9udC1zaXplLCB2YWx1
ZTogIjVweCIKK1BBU1MgZm9udC1zaXplLCB2YWx1ZTogIjE2cHgiCitQQVNTIGhlaWdodCwgdmFs
dWU6ICI1cHgiCitQQVNTIGxlZnQsIHZhbHVlOiAiNXB4IgorUEFTUyBsZXR0ZXItc3BhY2luZywg
dmFsdWU6ICI1cHgiCitQQVNTIGxpbmUtaGVpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2lu
LWJvdHRvbSwgdmFsdWU6ICI1cHgiCitQQVNTIG1hcmdpbi1sZWZ0LCB2YWx1ZTogIjVweCIKK1BB
U1MgbWFyZ2luLXJpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgbWFyZ2luLXRvcCwgdmFsdWU6ICI1
cHgiCitQQVNTIG91dGxpbmUtd2lkdGgsIHZhbHVlOiAiNXB4IgorUEFTUyBwYWRkaW5nLWJvdHRv
bSwgdmFsdWU6ICI1cHgiCitQQVNTIHBhZGRpbmctbGVmdCwgdmFsdWU6ICI1cHgiCitQQVNTIHBh
ZGRpbmctcmlnaHQsIHZhbHVlOiAiNXB4IgorUEFTUyBwYWRkaW5nLXRvcCwgdmFsdWU6ICI1cHgi
CitQQVNTIHJpZ2h0LCB2YWx1ZTogIjVweCIKK1BBU1MgdGV4dC1zaGFkb3csIHZhbHVlOiAicmdi
KDI1NSwgMCwgMCkgNXB4IDVweCA1cHgiCitQQVNTIHRvcCwgdmFsdWU6ICI1cHgiCitQQVNTIHdp
ZHRoLCB2YWx1ZTogIjVweCIKK1BBU1Mgd29yZC1zcGFjaW5nLCB2YWx1ZTogIjVweCIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdp
dGgtem9vbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS13aXRoLXpvb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjdiMmFhNjFiYTdhYmRlZDU4
ZmFiNjU5YzhhYjI5MTIwNjQ5OWU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRoLXpvb20uaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5bGUt
d2l0aC16b29tLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1
dGVkLXN0eWxlLXdpdGgtem9vbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0eWxlLXdpdGgtem9vbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNWFkOWQ0YTAwNGU4NzA1ZjczNmMxOTQ1OTM0YmZhZTVjMTUwYjYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9zY3JpcHQtdGVzdHMv
Y29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmpzCkBAIC0wLDAgKzEsODMgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyB0aGF0IGNvbXB1dGVkIHN0eWxlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgem9vbSB2
YWx1ZScpOworCitmdW5jdGlvbiB0ZXN0UHJvcGVydHkoZGF0YSkKK3sKKyAgICB2YXIgcHJvcCA9
IGRhdGFbMF07CisgICAgaWYgKGRhdGEubGVuZ3RoID09IDEpCisgICAgICAgIGRhdGEucHVzaCgn
NXB4Jyk7CisKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgdGVzdFByb3BlcnR5VmFsdWUocHJvcCwgZGF0YVtpXSk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0UHJvcGVydHlWYWx1ZShwcm9wLCB2YWx1ZSkKK3sKKyAgICB2YXIgZWwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBlbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0
aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OycgKworICAgICAgICAg
ICAgICAgICAgICAgICAnb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAxcHggc29saWQgcmVkOycg
KworICAgICAgICAgICAgICAgICAgICAgICAnb3V0bGluZTogMXB4IHNvbGlkIGJsdWU7LXdlYmtp
dC1jb2x1bW4tcnVsZTogMXB4IHNvbGlkIHJlZCc7CisgICAgZWwuc3R5bGUuc2V0UHJvcGVydHko
cHJvcCwgdmFsdWUsICcnKTsKKworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuem9vbSA9ICcnOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpOworCisgICAgdmFyIHZhbHVlMSA9IGdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcCk7CisgICAgZG9j
dW1lbnQuYm9keS5zdHlsZS56b29tID0gMjsKKyAgICB2YXIgdmFsdWUyID0gZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wKTsKKworICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZWwpOworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuem9vbSA9ICcnOwor
CisgICAgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHZhbHVlMSA9PT0gdmFsdWUy
KQorICAgICAgICB0ZXN0UGFzc2VkKHByb3AgKyAnLCB2YWx1ZTogIicgKyB2YWx1ZTEgKyAnIicp
OworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChwcm9wICsgJywgdmFsdWUxOiAiJyArIHZh
bHVlMSArICciLCB2YWx1ZTI6ICInICsgdmFsdWUyICsgJyInKTsKK30KKwordmFyIHRlc3REYXRh
ID0gWworICAgIFsnLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nJ10sCisgICAgWyct
d2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nJ10sCisgICAgWyctd2Via2l0LWJveC1yZWZs
ZWN0JywgJ2JlbG93IDVweCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQg
Ym90dG9tLCBmcm9tKHRyYW5zcGFyZW50KSwgdG8od2hpdGUpKSddLAorICAgIFsnLXdlYmtpdC1i
b3gtc2hhZG93JywgJzVweCA1cHggNXB4IDVweCByZWQnXSwKKyAgICBbJy13ZWJraXQtY29sdW1u
LXJ1bGUtd2lkdGgnLCAnNXB4J10sCisgICAgWyctd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbics
ICc1cHggNXB4J10sCisgICAgWyctd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoJ10sCisgICAgWyct
d2Via2l0LXRyYW5zZm9ybScsICd0cmFuc2xhdGUoNXB4LCA1cHgpJywgJ3RyYW5zbGF0ZTNkKDVw
eCwgNXB4LCA1cHgpJ10sCisgICAgWyctd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4nLCAnNXB4IDVw
eCddLAorICAgIFsnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyddLAorICAgIFsnYm9yZGVyLWJv
dHRvbS1yaWdodC1yYWRpdXMnXSwKKyAgICBbJ2JvcmRlci1ib3R0b20td2lkdGgnXSwKKyAgICBb
J2JvcmRlci1sZWZ0LXdpZHRoJ10sCisgICAgWydib3JkZXItcmlnaHQtd2lkdGgnXSwKKyAgICBb
J2JvcmRlci1zcGFjaW5nJ10sCisgICAgWydib3JkZXItdG9wLWxlZnQtcmFkaXVzJ10sCisgICAg
Wydib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyddLAorICAgIFsnYm9yZGVyLXRvcC13aWR0aCddLAor
ICAgIFsnYm90dG9tJ10sCisgICAgWydjbGlwJywgJ3JlY3QoNXB4IDk1cHggOTVweCA1cHgpJ10s
CisgICAgWydmb250LXNpemUnLCAnNXB4JywgJ21lZGl1bSddLAorICAgIFsnaGVpZ2h0J10sCisg
ICAgWydsZWZ0J10sCisgICAgWydsZXR0ZXItc3BhY2luZyddLAorICAgIFsnbGluZS1oZWlnaHQn
XSwKKyAgICBbJ21hcmdpbi1ib3R0b20nXSwKKyAgICBbJ21hcmdpbi1sZWZ0J10sCisgICAgWydt
YXJnaW4tcmlnaHQnXSwKKyAgICBbJ21hcmdpbi10b3AnXSwKKyAgICBbJ291dGxpbmUtd2lkdGgn
XSwKKyAgICBbJ3BhZGRpbmctYm90dG9tJ10sCisgICAgWydwYWRkaW5nLWxlZnQnXSwKKyAgICBb
J3BhZGRpbmctcmlnaHQnXSwKKyAgICBbJ3BhZGRpbmctdG9wJ10sCisgICAgWydyaWdodCddLAor
ICAgIFsndGV4dC1zaGFkb3cnLCAnNXB4IDVweCA1cHggcmVkJ10sCisgICAgWyd0b3AnXSwKKyAg
ICBbJ3dpZHRoJ10sCisgICAgWyd3b3JkLXNwYWNpbmcnXSwKK107CisKK3Rlc3REYXRhLmZvckVh
Y2godGVzdFByb3BlcnR5KTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNzkwMWIz
YjRiZmY1ODkzNmU3YzUwZjQxOTZjOWYzOWE1YTBhNGVlLi4wMTk4MTBjNWE1NmI0OTEzNWEzNmVj
YjUyYzFiNmE4NGYyYTQzMGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTA5LTE0ICBFcmlrIEFydmlk
c3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSgpIHJldHVybnMgZGlmZmVyZW50IHZh
bHVlcyBmb3IgZGlmZmVyZW50IHpvb20gbGV2ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjIzMAorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aC16b29tLmh0bWwKKworICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWRO
dW1iZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvclJlZmxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0UG9zaXRpb25PZmZzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
ZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAg
ICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1Zh
bHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RGb3JBYnNvbHV0ZVpvb20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0Rm9yQWJzb2x1dGVab29tKToK
KwogMjAxMC0wOS0xNCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBjaHJvbWl1bSBjb21waWxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMGVmNzcyMTE5MDZiYzk4ZjFiNmE1MjkyOGQ4
MWUwZTU4ODk1OTI4ZS4uNTRhNGZiYzQ4ZGIxZWZiMDc3ZWE1ZDViN2NmNzk0MDY5Yzk5NTliMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMjcs
NyArMzI3LDIxIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVj
ZUltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKICAgICByZXR1cm4gQ1NTQm9yZGVy
SW1hZ2VWYWx1ZTo6Y3JlYXRlKGltYWdlVmFsdWUsIHJlY3QsIHZhbHVlRm9yUmVwZWF0UnVsZShp
bWFnZS5ob3Jpem9udGFsUnVsZSgpKSwgdmFsdWVGb3JSZXBlYXRSdWxlKGltYWdlLnZlcnRpY2Fs
UnVsZSgpKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxl
Y3Rpb24oY29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uKQoraW5saW5lIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGludCB2
YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGFkanVzdEZvckFic29sdXRlWm9vbSh2YWx1ZSwgc3R5bGUpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHpvb21BZGp1c3RlZE51bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQoreworICAgIGRvdWJsZSB6b29tRmFjdG9yID0gc3R5bGUtPmVmZmVj
dGl2ZVpvb20oKTsKKyAgICBpZiAoem9vbUZhY3RvciAhPSAxKQorICAgICAgICB2YWx1ZSA9IHZh
bHVlIC8gem9vbUZhY3RvcjsKKworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Cit9CisKK3N0YXRpYyBQYXNz
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29uc3QgU3R5bGVSZWZsZWN0aW9u
KiByZWZsZWN0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCFyZWZs
ZWN0aW9uKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb25lKTsKQEAgLTMzNiw3ICszNTAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVj
dGlvbgogICAgIGlmIChyZWZsZWN0aW9uLT5vZmZzZXQoKS5pc1BlcmNlbnQoKSkKICAgICAgICAg
b2Zmc2V0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZWZsZWN0aW9uLT5vZmZzZXQoKS5w
ZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgZWxzZQot
ICAgICAgICBvZmZzZXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlZmxlY3Rpb24tPm9m
ZnNldCgpLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBvZmZz
ZXQgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlZmxlY3Rpb24tPm9mZnNldCgpLnZhbHVlKCks
IHN0eWxlKTsKICAgICAKICAgICByZXR1cm4gQ1NTUmVmbGVjdFZhbHVlOjpjcmVhdGUocmVmbGVj
dGlvbi0+ZGlyZWN0aW9uKCksIG9mZnNldC5yZWxlYXNlKCksIHZhbHVlRm9yTmluZVBpZWNlSW1h
Z2UocmVmbGVjdGlvbi0+bWFzaygpKSk7CiB9CkBAIC0zNjQsOCArMzc4LDExIEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlKiBz
dHlsZSwgaW50IHByb3BlCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAo
c3R5bGUtPnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBzdHlsZS0+cG9zaXRpb24o
KSA9PSBGaXhlZFBvc2l0aW9uKQorICAgIGlmIChzdHlsZS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0
ZVBvc2l0aW9uIHx8IHN0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAg
ICAgaWYgKGwudHlwZSgpID09IFdlYkNvcmU6OkZpeGVkKQorICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUobC52YWx1ZSgpLCBzdHlsZSk7CiAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGwpOworICAgIH0KIAogICAgIGlmIChzdHlsZS0+cG9z
aXRpb24oKSA9PSBSZWxhdGl2ZVBvc2l0aW9uKQogICAgICAgICAvLyBGSVhNRTogSXQncyBub3Qg
ZW5vdWdoIHRvIHNpbXBseSByZXR1cm4gImF1dG8iIHZhbHVlcyBmb3Igb25lIG9mZnNldCBpZiB0
aGUgb3RoZXIgc2lkZSBpcyBkZWZpbmVkLgpAQCAtMzg0LDIyICs0MDEsMjIgQEAgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjdXJyZW50
Q29sb3JPclZhbGlkQ28KICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9y
KGNvbG9yLnJnYigpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldEJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlKExlbmd0aFNpemUgcmFkaXVzKQorc3RhdGljIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKExlbmd0aFNpemUgcmFkaXVzLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAocmFkaXVz
LndpZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKSB7CiAgICAgICAgIGlmIChyYWRpdXMud2lkdGgo
KS50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKTsKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
cmFkaXVzLndpZHRoKCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJhZGl1cy53aWR0aCgpLnZhbHVlKCks
IHN0eWxlKTsKICAgICB9CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpLnR5cGUoKSA9PSBQZXJjZW50
KQogICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMu
d2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOwog
ICAgIGVsc2UKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
cmFkaXVzLndpZHRoKCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyYWRpdXMud2lkdGgoKS52
YWx1ZSgpLCBzdHlsZSkpOwogICAgIGlmIChyYWRpdXMuaGVpZ2h0KCkudHlwZSgpID09IFBlcmNl
bnQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1
cy5oZWlnaHQoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkp
OwogICAgIGVsc2UKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUocmFkaXVzLmhlaWdodCgpLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocmFkaXVzLmhlaWdo
dCgpLnZhbHVlKCksIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCkBA
IC00MzgsOCArNDU1LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvbXB1dGVkVHJh
bnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmQKICAgICAgICAgdHJhbnNm
b3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0uYigpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwogICAgICAgICB0cmFuc2Zvcm1WYWwtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5jKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKLSAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh0cmFuc2Zvcm0uZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikp
OwotICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHRyYW5zZm9ybS5mKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAg
IHRyYW5zZm9ybVZhbC0+YXBwZW5kKHpvb21BZGp1c3RlZE51bWJlclZhbHVlKHRyYW5zZm9ybS5l
KCksIHN0eWxlKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKHpvb21BZGp1c3RlZE51
bWJlclZhbHVlKHRyYW5zZm9ybS5mKCksIHN0eWxlKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
dHJhbnNmb3JtVmFsID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24pOwogCkBAIC00NTgsOSAr
NDc1LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvbXB1dGVkVHJhbnNmb3JtKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmQKICAgICAgICAgdHJhbnNmb3JtVmFsLT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTMzKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm0zNCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOwogCi0gICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm00MSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tNDIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
KTsKLSAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh0cmFuc2Zvcm0ubTQzKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAg
ICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKHpvb21BZGp1c3RlZE51bWJlclZhbHVlKHRyYW5zZm9y
bS5tNDEoKSwgc3R5bGUpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoem9vbUFkanVz
dGVkTnVtYmVyVmFsdWUodHJhbnNmb3JtLm00MigpLCBzdHlsZSkpOworICAgICAgICB0cmFuc2Zv
cm1WYWwtPmFwcGVuZCh6b29tQWRqdXN0ZWROdW1iZXJWYWx1ZSh0cmFuc2Zvcm0ubTQzKCksIHN0
eWxlKSk7CiAgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodHJhbnNmb3JtLm00NCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwog
ICAgIH0KIApAQCAtNTgzLDcgKzYwMCw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLCiAgICAg
aWYgKGludCBrZXl3b3JkU2l6ZSA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6
ZSgpKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Y3NzSWRlbnRpZmllckZvckZvbnRTaXplS2V5d29yZChrZXl3b3JkU2l6ZSkpOwogCi0gICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNv
bXB1dGVkUGl4ZWxTaXplKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworCisgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1
dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgpKTsKIH0KIAogYm9vbCBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkgY29uc3QKQEAgLTU5OCw3ICs2
MTYsNyBAQCBib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dXNlRml4ZWRGb250RGVm
YXVsdFNpemUoKSBjb25zdAogICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudXNl
Rml4ZWREZWZhdWx0U2l6ZSgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywgaW50IGlkKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGludCBp
ZCwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIGlmICghc2hhZG93KQogICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25l
KTsKQEAgLTYwNywxMCArNjI1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0CiAKICAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogICAgIGZvciAoY29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9IHMt
Pm5leHQoKSkgewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHggPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHMtPngoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0g
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocy0+eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzLT5i
bHVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93
ID8gMCA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocy0+c3ByZWFkKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHggPSB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHMtPngoKSwgc3R5bGUpOworICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHkgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHMtPnkoKSwgc3R5bGUp
OworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXIgPSB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHMtPmJsdXIoKSwgc3R5bGUpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8gMCA6
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocy0+c3ByZWFkKCksIHN0eWxlKTsKICAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHlsZSA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlU
ZXh0U2hhZG93IHx8IHMtPnN0eWxlKCkgPT0gTm9ybWFsID8gMCA6IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSW5zZXQpOwogICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbG9yID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHMtPmNv
bG9yKCkucmdiKCkpOwogICAgICAgICBsaXN0LT5wcmVwZW5kKFNoYWRvd1ZhbHVlOjpjcmVhdGUo
eC5yZWxlYXNlKCksIHkucmVsZWFzZSgpLCBibHVyLnJlbGVhc2UoKSwgc3ByZWFkLnJlbGVhc2Uo
KSwgc3R5bGUucmVsZWFzZSgpLCBjb2xvci5yZWxlYXNlKCkpKTsKQEAgLTc3NCwxNCArNzkyLDE0
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTZXBhcmF0ZSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmhv
cml6b250YWxCb3JkZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT52
ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmhvcml6
b250YWxCb3JkZXJTcGFjaW5nKCksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dmVydGljYWxCb3JkZXJTcGFjaW5n
KCksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAg
ICAgICAgIH0gIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+aG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgotICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnZlcnRpY2FsQm9yZGVyU3BhY2luZygpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgc3R5bGUuZ2V0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CiAgICAgICAgICAgICBy
ZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHlsZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xv
cihzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3Ip
LnJnYigpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUtPmJv
cmRlclRvcENvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xv
cjoKQEAgLTc5OSwxMyArODE3LDEzIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm90dG9tOgogICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0
VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Qm90dG9tKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveEFsaWduOgpAQCAtODMxLDkgKzg0OSw5IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShp
bnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShi
b3hQYWNrKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UmVm
bGVjdDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZmxlY3Rpb24oc3R5bGUtPmJveFJl
ZmxlY3QoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWZsZWN0aW9uKHN0eWxlLT5i
b3hSZWZsZWN0KCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveFNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHlsZS0+Ym94
U2hhZG93KCksIHByb3BlcnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93
KHN0eWxlLT5ib3hTaGFkb3coKSwgcHJvcGVydHlJRCwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+Y2FwdGlvblNpZGUoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlDbGVhcjoKQEAgLTg1Myw3ICs4NzEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Bl
cgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmNvbHVtblJ1bGVT
dHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoK
LSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5jb2x1
bW5SdWxlV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y29sdW1uUnVsZVdpZHRoKCksIHN0
eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW46CiAg
ICAgICAgICAgICBpZiAoc3R5bGUtPmNvbHVtblNwYW4oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBbGwpOwpAQCAt
OTAxLDcgKzkxOSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1
cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTaXplOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUo
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKICAgICAgICAgICAgIGlmIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSXRhbGljKTsKQEAg
LTkzNSw3ICs5NTMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKICAgICAgICAgICAgIGlmIChyZW5kZXJl
cikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzaXpp
bmdCb3gocmVuZGVyZXIpLmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzaXppbmdCb3gocmVu
ZGVyZXIpLmhlaWdodCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+aGVpZ2h0KCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5oaWdobGlnaHQo
KSA9PSBudWxsQXRvbSkKQEAgLTk2MCw3ICs5NzgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Bl
cgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKICAgICAgICAgICAgIGlm
ICghc3R5bGUtPmxldHRlclNwYWNpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmxldHRlclNwYWNpbmco
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+bGV0dGVyU3BhY2luZygpLCBzdHlsZS5nZXQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6CiAgICAgICAgICAgICBpZiAo
c3R5bGUtPmxpbmVDbGFtcCgpLmlzTm9uZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpAQCAtOTc0LDgg
Kzk5Miw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICAgICAgLy8gZm9y
IGhvdyBoaWdoIHRvIGJlIGluIHBpeGVscyBkb2VzIGluY2x1ZGUgdGhpbmdzIGxpa2UgbWluaW11
bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4KICAgICAgICAgICAgICAgICAvLyBPbiB0
aGUgb3RoZXIgaGFuZCwgc2luY2UgZm9udC1zaXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBm
YWN0b3IsIHdlIHJlYWxseSBjYW4ndCBkbwogICAgICAgICAgICAgICAgIC8vIHRoYXQgaGVyZSBl
aXRoZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2VudCgpICogc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwot
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoLnZhbHVl
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0YXRpY19jYXN0PGludD4obGVuZ3RoLnBlcmNlbnQoKSAq
IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkpIC8gMTAwLCBzdHlsZS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShsZW5ndGgu
dmFsdWUoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZToKICAgICAgICAgICAgIGlmIChzdHlsZS0+bGlzdFN0eWxlSW1hZ2Uo
KSkKQEAgLTk4OCwyMiArMTAwNiwyMiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYm
IHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0
byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgotICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRvUmVuZGVyQm94
KHJlbmRlcmVyKS0+bWFyZ2luVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAg
ICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJl
bmRlcmVyKS0+bWFyZ2luVG9wKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXJnaW5Ub3AoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiBy
ZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9zZWQgdG8g
cmV0dXJuIHRoZSBwZXJjZW50YWdlIGlmIHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmllZC4KLSAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1JlbmRlckJveChy
ZW5kZXJlciktPm1hcmdpblJpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAg
ICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJl
bmRlcmVyKS0+bWFyZ2luUmlnaHQoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpblJpZ2h0KCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgogICAgICAgICAgICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3Nl
ZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgot
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRvUmVuZGVy
Qm94KHJlbmRlcmVyKS0+bWFyZ2luQm90dG9tKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVy
Qm94KHJlbmRlcmVyKS0+bWFyZ2luQm90dG9tKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgogICAgICAgICAgICAgaWYgKHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBT
dXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lm
aWVkLgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRv
UmVuZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luTGVmdCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1Jl
bmRlckJveChyZW5kZXJlciktPm1hcmdpbkxlZnQoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpbkxlZnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcnF1ZWVEaXJl
Y3Rpb24oKSk7CkBAIC0xMDgyLDcgKzExMDAsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Blcgog
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoc3R5bGUtPm91dGxpbmVTdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHN0eWxlLT5vdXRsaW5lV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+b3V0bGluZVdpZHRo
KCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgogICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobWF4KHN0eWxlLT5vdmVy
Zmxvd1goKSwgc3R5bGUtPm92ZXJmbG93WSgpKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlP
dmVyZmxvd1g6CkBAIC0xMDkxLDE5ICsxMTA5LDE5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+b3Zl
cmZsb3dZKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBh
ZGRpbmdUb3AoZmFsc2UpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlcikt
PnBhZGRpbmdUb3AoZmFsc2UpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGFkZGluZ1RvcCgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiBy
ZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBhZGRpbmdSaWdodChmYWxzZSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cGFkZGluZ1JpZ2h0KGZhbHNl
KSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoc3R5bGUtPnBhZGRpbmdSaWdodCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBh
ZGRpbmdCb3R0b206CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodG9S
ZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nQm90dG9tKGZhbHNlKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nQm90dG9tKGZhbHNlKSwgc3R5bGUuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUt
PnBhZGRpbmdCb3R0b20oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b1JlbmRlckJveChyZW5k
ZXJlciktPnBhZGRpbmdMZWZ0KGZhbHNlKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9SZW5kZXJCb3go
cmVuZGVyZXIpLT5wYWRkaW5nTGVmdChmYWxzZSksIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5wYWRkaW5nTGVmdCgpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgogICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBhZ2VCcmVha0FmdGVyKCkpOwpA
QCAtMTEzMyw3ICsxMTUxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzdHlsZS0+dGV4dEluZGVudCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRTaGFkb3c6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUt
PnRleHRTaGFkb3coKSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JT
aGFkb3coc3R5bGUtPnRleHRTaGFkb3coKSwgcHJvcGVydHlJRCwgc3R5bGUuZ2V0KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS50ZXh0UmVu
ZGVyaW5nTW9kZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKQEAg
LTExNDksNyArMTE2Nyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CiAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+dGV4dFN0cm9rZUNvbG9y
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOgotICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRleHRTdHJv
a2VXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVy
biB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSwgc3R5bGUu
Z2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50ZXh0VHJhbnNmb3Jt
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgpAQCAtMTE4OSwxMiArMTIwNywxMiBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndpZG93cygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKICAgICAgICAgICAgIGlmIChy
ZW5kZXJlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzaXppbmdCb3gocmVuZGVyZXIpLndpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHNpemluZ0Jv
eChyZW5kZXJlcikud2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndpZHRoKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V29yZEJyZWFrOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoc3R5bGUtPndvcmRCcmVhaygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdv
cmRTcGFjaW5nOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPndvcmRTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAg
ICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPndvcmRTcGFjaW5nKCks
IHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgogICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPndvcmRXcmFwKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgpAQCAtMTIzMywxMCAr
MTI1MSwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogCiAgICAgICAgICAgICAgICAgcmVn
aW9uLT5tX2xhYmVsID0gc3R5bGVSZWdpb24ubGFiZWw7CiAgICAgICAgICAgICAgICAgTGVuZ3Ro
Qm94IG9mZnNldCA9IHN0eWxlUmVnaW9uLm9mZnNldDsKLSAgICAgICAgICAgICAgICByZWdpb24t
PnNldFRvcChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG9mZnNldC50b3AoKS52YWx1ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRS
aWdodChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG9mZnNldC5yaWdodCgpLnZhbHVlKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgICAgICByZWdpb24tPnNldEJv
dHRvbShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG9mZnNldC5ib3R0b20oKS52YWx1ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRM
ZWZ0KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUob2Zmc2V0LmxlZnQoKS52YWx1ZSgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRUb3Ao
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShvZmZzZXQudG9wKCkudmFsdWUoKSwgc3R5bGUuZ2V0KCkp
KTsKKyAgICAgICAgICAgICAgICByZWdpb24tPnNldFJpZ2h0KHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUob2Zmc2V0LnJpZ2h0KCkudmFsdWUoKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICByZWdpb24tPnNldEJvdHRvbSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9mZnNldC5ib3R0b20o
KS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0TGVm
dCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9mZnNldC5sZWZ0KCkudmFsdWUoKSwgc3R5bGUuZ2V0
KCkpKTsKICAgICAgICAgICAgICAgICByZWdpb24tPm1faXNSZWN0YW5nbGUgPSAoc3R5bGVSZWdp
b24udHlwZSA9PSBTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xlKTsKICAgICAgICAgICAg
ICAgICByZWdpb24tPm1faXNDaXJjbGUgPSAoc3R5bGVSZWdpb24udHlwZSA9PSBTdHlsZURhc2hi
b2FyZFJlZ2lvbjo6Q2lyY2xlKTsKIApAQCAtMTM1Nyw4ICsxMzc1LDggQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGludCBwcm9wZXIKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7
Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2Fs
Y01pblZhbHVlKGJveC5oZWlnaHQoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+
cGVyc3BlY3RpdmVPcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0aCgpKSwgc3R5bGUuZ2V0
KCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSks
IHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+
cGVyc3BlY3RpdmVPcmlnaW5YKCkpKTsKQEAgLTEzNzUsMjEgKzEzOTMsMjEgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6
CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dXNl
clNlbGVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVy
UmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUu
Z2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJh
ZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCBzdHlsZS5n
ZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzOgotICAg
ICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJU
b3BMZWZ0UmFkaXVzKCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5l
clZhbHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlLmdldCgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgICAgICAgICAgcmV0
dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1
cygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHls
ZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q2xpcDogewogICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xpcCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgUmVmUHRyPFJlY3Q+IHJlY3QgPSBSZWN0OjpjcmVh
dGUoKTsKLSAgICAgICAgICAgIHJlY3QtPnNldFRvcChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHN0eWxlLT5jbGlwKCkudG9wKCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkp
OwotICAgICAgICAgICAgcmVjdC0+c2V0UmlnaHQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+Y2xpcCgpLnJpZ2h0KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkp
OwotICAgICAgICAgICAgcmVjdC0+c2V0Qm90dG9tKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPmNsaXAoKS5ib3R0b20oKS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KSk7Ci0gICAgICAgICAgICByZWN0LT5zZXRMZWZ0KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPmNsaXAoKS5sZWZ0KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkp
OworICAgICAgICAgICAgcmVjdC0+c2V0VG9wKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUt
PmNsaXAoKS50b3AoKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgcmVjdC0+
c2V0UmlnaHQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y2xpcCgpLnJpZ2h0KCkudmFs
dWUoKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHJlY3QtPnNldEJvdHRvbSh6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5jbGlwKCkuYm90dG9tKCkudmFsdWUoKSwgc3R5bGUuZ2V0
KCkpKTsKKyAgICAgICAgICAgIHJlY3QtPnNldExlZnQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShz
dHlsZS0+Y2xpcCgpLmxlZnQoKS52YWx1ZSgpLCBzdHlsZS5nZXQoKSkpOwogICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVjdC5yZWxlYXNlKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CkBAIC0xMzk4LDE1
ICsxNDE2LDE1IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCBi
b3ggPSBzaXppbmdCb3gocmVuZGVyZXIpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY01p
blZhbHVlKGJveC53aWR0aCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50
cmFuc2Zvcm1PcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gu
d2lkdGgoKSksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFs
dWUoYm94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5
bGUtPnRyYW5zZm9ybU9yaWdpblooKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCks
IHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5YKCkpKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpKSk7CiAgICAgICAgICAgICAgICAgaWYg
KHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKLSAgICAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdp
blooKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2lu
WigpLCBzdHlsZS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGxp
c3QucmVsZWFzZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCmluZGV4IGQ0YjdkZjI0NGVlZDY1MzFjODVlNmU2YzNiN2IxZjNmNmNmZjU2ZDYu
LjcxOGViMmRmYWIzY2Q5ZmJmYTUzMzBjZDdhY2M1YTAyMjY5YWE1YzIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SWQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJik7CiAK
LSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRh
KiwgaW50KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhj
b25zdCBTaGFkb3dEYXRhKiwgaW50LCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJTdHls
ZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CiAgICAgCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAgYi9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IDQxMGVlZGUzMmViZjRhMjY2MzU2NWY1NzEwYzc0NmFhMGZjNGM5YjguLjBjZjYxODEzNzVlOGVl
YjlkOTdmNzMyY2JlYTRkMzBhOGYxM2VhZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL1NWR0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U1ZHUHJvcGVydHlDU1NW
YWx1ZShpbnQgcHJvCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93OgotICAgICAgICAgICAgcmV0dXJuIHZhbHVl
Rm9yU2hhZG93KHN2Z1N0eWxlLT5zaGFkb3coKSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JTaGFkb3coc3ZnU3R5bGUtPnNoYWRvdygpLCBwcm9wZXJ0eUlELCBzdHls
ZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS0+dmVjdG9yRWZmZWN0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAppbmRleCBiZTE0MzUxMjkyNTNkMzM1NWE4NjFkZGU3MDIwMGY0Zjk0Y2RhZTg4Li5mMmNhNDcx
OTdlNjY5ODdkYjM1YmU4MDZkMDg4MDRlZGQ5ZmRjYTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtOTg5LDE0ICs5ODksNyBAQCBpbmxpbmUgdm9pZCBtYWtlTWF0cml4UmVuZGVyYWJs
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBib29sIGhhczNEUmVuZGVyaQogCiBpbmxp
bmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiB7Ci0gICAgZG91YmxlIHpvb21GYWN0b3IgPSByZW5kZXJlci0+c3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpOwotICAgIGlmICh6b29tRmFjdG9yID09IDEpCi0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICAvLyBOZWVkZWQgYmVjYXVzZSBjb21wdXRlTGVuZ3RoSW50IHRydW5jYXRlcyAo
cmF0aGVyIHRoYW4gcm91bmRzKSB3aGVuIHNjYWxpbmcgdXAuCi0gICAgaWYgKHpvb21GYWN0b3Ig
PiAxKQotICAgICAgICB2YWx1ZSsrOwotCi0gICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29u
dmVyc2lvbjxpbnQsIElOVF9NQVgsIElOVF9NSU4+KHZhbHVlIC8gem9vbUZhY3Rvcik7CisgICAg
cmV0dXJuIGFkanVzdEZvckFic29sdXRlWm9vbSh2YWx1ZSwgcmVuZGVyZXItPnN0eWxlKCkpOwog
fQogCiBpbmxpbmUgdm9pZCBhZGp1c3RJbnRSZWN0Rm9yQWJzb2x1dGVab29tKEludFJlY3QmIHJl
Y3QsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAppbmRleCA0NzdhMjUyODAyYTA4YTlhN2E5NDMwNzlkNjQwZGUxZDkzNWM4MGMyLi45ZWRl
NGU2NGNiMjdkOTg3MDQyMTdjYTA4MWQ1ZmFlYjNiZDVmYzY2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEyMzksNiArMTIzOSwxOCBAQCBwcml2YXRlOgogICAgIENv
bnRlbnREYXRhKiBwcmVwYXJlVG9TZXRDb250ZW50KFN0cmluZ0ltcGwqLCBib29sIGFkZCk7CiB9
OwogCitpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICBkb3VibGUgem9vbUZhY3RvciA9IHN0eWxlLT5lZmZl
Y3RpdmVab29tKCk7CisgICAgaWYgKHpvb21GYWN0b3IgPT0gMSkKKyAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgIC8vIE5lZWRlZCBiZWNhdXNlIGNvbXB1dGVMZW5ndGhJbnQgdHJ1bmNhdGVzIChy
YXRoZXIgdGhhbiByb3VuZHMpIHdoZW4gc2NhbGluZyB1cC4KKyAgICBpZiAoem9vbUZhY3RvciA+
IDEpCisgICAgICAgIHZhbHVlKys7CisKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252
ZXJzaW9uPGludCwgSU5UX01BWCwgSU5UX01JTj4odmFsdWUgLyB6b29tRmFjdG9yKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVuZGVyU3R5bGVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>70033</attachid>
            <date>2010-10-06 20:52:24 -0700</date>
            <delta_ts>2010-10-06 20:52:24 -0700</delta_ts>
            <desc>Occurrence of the bug after the first fix with display:none</desc>
            <filename>getComputedStyleZoom.html</filename>
            <type>text/html</type>
            <size>1488</size>
            <attacher name="Rob Brackett">rob</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+Cjx0
aXRsZT5nZXRDb21wdXRlZFN0eWxlKCkgWm9vbSBhbmQgRGlzcGxheTogbm9uZTwvdGl0bGU+Cjxz
dHlsZT4KICAudGVzdF9kaXYgewogICAgem9vbTogMjsKICAgIHdpZHRoOiAzMDBweDsKICB9CiAg
CiAgI3pvb21lZF9hbmRfZGlzcGxheWVkIHsKICAgIGJhY2tncm91bmQ6ICNjY2M7CiAgfQogICN6
b29tZWRfYW5kX2hpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lOwogICAgYmFja2dyb3VuZDogb3Jh
bmdlOwogIH0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAKICA8ZGl2IGlkPSJ6b29tZWRfYW5k
X2Rpc3BsYXllZCIgY2xhc3M9InRlc3RfZGl2Ij4KICAgIFRoaXMgZGl2IGhhcyBhIHpvb20gdmFs
dWUgb2YgIjIuIiBJdCBoYXMgYSB3aWR0aCBvZiAzMDBweC4KICA8L2Rpdj4KICA8ZGl2IGlkPSJ6
b29tZWRfYW5kX2hpZGRlbiIgY2xhc3M9InRlc3RfZGl2Ij4KICAgIFRoaXMgZGl2IGlzIGhhcyBh
IHpvb20gdmFsdWUgb2YgIjIiIGFuZCBpcyBoaWRkZW4uIEl0IGhhcyBhIHdpZHRoIG9mIDMwMHB4
LgogIDwvZGl2PgogIAogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CiAgICB2YXIgem9vbWVkQW5kRGlzcGxheWVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInpvb21lZF9hbmRfZGlzcGxheWVkIiksCiAgICAgICAgem9vbWVkQW5kSGlkZGVuICAgID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInpvb21lZF9hbmRfaGlkZGVuIiksCiAgICAgICAgcmVu
ZGVyZWRXaWR0aCAgICAgID0gem9vbWVkQW5kRGlzcGxheWVkLnNjcm9sbFdpZHRoLAogICAgICAg
IGNvbXB1dGVkV2lkdGhEaXNwbGF5ZWQgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoem9vbWVkQW5kRGlzcGxheWVkKS53aWR0aCksCiAgICAgICAgY29t
cHV0ZWRXaWR0aEhpZGRlbiAgICA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZSh6b29tZWRBbmRIaWRkZW4pLndpZHRoKTsKICAgIAogICAgdmFyIG1lc3Nh
Z2UgPSBbCiAgICAgICgoY29tcHV0ZWRXaWR0aEhpZGRlbiA9PSBjb21wdXRlZFdpZHRoRGlzcGxh
eWVkICYmIGNvbXB1dGVkV2lkdGhEaXNwbGF5ZWQgPT0gcmVuZGVyZWRXaWR0aCkgPyAiRXZlcnl0
aGluZydzIGFsbCBnb29kISIgOiAiU29tZXRoaW5nJ3MgZmlzaHnigKYiKSwKICAgICAgIlxuVGhl
IGZvbGxvd2luZyBzaG91bGQgYm90aCBiZSAzMDA6IiwKICAgICAgIkNvbXB1dGVkIFN0eWxlIFdp
ZHRoOiAiICsgY29tcHV0ZWRXaWR0aERpc3BsYXllZCwKICAgICAgIkNvbXB1dGVkIFN0eWxlIFdp
ZHRoIHdoZW4gRGlzcGxheSBpcyAnbm9uZSc6ICIgKyBjb21wdXRlZFdpZHRoSGlkZGVuCiAgICBd
LmpvaW4oIlxuIik7CiAgICBhbGVydChtZXNzYWdlKTsKICA8L3NjcmlwdD4KCgoKPC9ib2R5Pgo8
L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126390</attachid>
            <date>2012-02-09 15:35:35 -0800</date>
            <delta_ts>2012-02-09 16:02:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32230-20120209153533.patch</filename>
            <type>text/plain</type>
            <size>20096</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzI5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAyLTA5ICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgZ2V0Q29tcHV0ZWRTdHls
ZSgpIHJldHVybnMgZGlmZmVyZW50IHZhbHVlcyBmb3IgZGlmZmVyZW50IHpvb20gbGV2ZWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjIzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS16b29tLWFuZC1iYWNrZ3JvdW5k
LXNpemUuaHRtbAorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsU2l6ZVRvQ1NTVmFsdWUpOiBQYXNzIGRvd24gdGhl
IFJlbmRlclN0eWxlIGZvciB1c2UgaW4gYWRqdXN0aW5nCisgICAgICAgIHZhbHVlcyB0byBhY2Nv
dW50IGZvciB6b29tLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogQWRqdXN0IGFkZGl0aW9uYWwKKyAgICAgICAgcHJv
cGVydGllcyB0aGF0IGFyZSBhZmZlY3RlZCBieSB6b29tLgorCiAyMDEyLTAyLTA5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgcm91bmRlZEludFBv
aW50IG1ldGhvZCBmb3IgTGF5b3V0UG9pbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMTA3MTU2KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMzMsNyArMTEzMyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBmaWxsUmVwZWF0VG8KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBmaWxsU2l6ZVRvQ1NTVmFsdWUoY29uc3QgRmlsbFNpemUm
IGZpbGxTaXplLCBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCkKK3N0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBmaWxsU2l6ZVRvQ1NTVmFsdWUoY29uc3QgRmlsbFNpemUmIGZpbGxTaXplLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlUG9vbCogY3NzVmFsdWVQb29sKQogewog
ICAgIGlmIChmaWxsU2l6ZS50eXBlID09IENvbnRhaW4pCiAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRhaW4pOwpAQCAtMTE0Miwx
MSArMTE0MiwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZmlsbFNpemVUb0NTCiAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUNvdmVyKTsKIAogICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodCgpLmlzQXV0bygpKQotICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShmaWxsU2l6ZS5zaXplLndpZHRo
KCkpOworICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChmaWxs
U2l6ZS5zaXplLndpZHRoKCksIHN0eWxlLCBjc3NWYWx1ZVBvb2wpOwogCiAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
LSAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShmaWxsU2l6ZS5zaXpl
LndpZHRoKCkpKTsKLSAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShm
aWxsU2l6ZS5zaXplLmhlaWdodCgpKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSwgY3NzVmFsdWVQ
b29sKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
ZmlsbFNpemUuc2l6ZS5oZWlnaHQoKSwgc3R5bGUsIGNzc1ZhbHVlUG9vbCkpOwogICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKIH0KIApAQCAtMTMyNCwxMSArMTMyNCwxMSBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrU2l6ZTogewogICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUgPyBzdHlsZS0+bWFza0xheWVy
cygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKICAgICAgICAgICAgIGlmICghbGF5ZXJz
LT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTaXplVG9DU1NWYWx1ZShsYXll
cnMtPnNpemUoKSwgY3NzVmFsdWVQb29sKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNp
emVUb0NTU1ZhbHVlKGxheWVycy0+c2l6ZSgpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsK
IAogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVy
KiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5u
ZXh0KCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbGxTaXplVG9DU1NWYWx1ZShj
dXJyTGF5ZXItPnNpemUoKSwgY3NzVmFsdWVQb29sKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGZpbGxTaXplVG9DU1NWYWx1ZShjdXJyTGF5ZXItPnNpemUoKSwgc3R5bGUuZ2V0KCks
IGNzc1ZhbHVlUG9vbCkpOwogCiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAg
ICAgICAgIH0KQEAgLTEzOTQsMTYgKzEzOTQsMTYgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uID8gc3R5bGUtPm1hc2tM
YXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgICAgICBpZiAoIWxh
eWVycy0+bmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShsYXllcnMtPnhQb3NpdGlv
bigpKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC0+Y3JlYXRl
VmFsdWUobGF5ZXJzLT55UG9zaXRpb24oKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGxheWVycy0+eFBvc2l0aW9uKCksIHN0
eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllcnMtPnlQb3NpdGlvbigpLCBzdHls
ZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHBvc2l0aW9uTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbkxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wtPmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+eFBvc2l0aW9uKCkpKTsKLSAgICAgICAgICAgICAg
ICBwb3NpdGlvbkxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKGN1cnJMYXll
ci0+eVBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbkxpc3QtPmFwcGVuZCh6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGN1cnJMYXllci0+eFBvc2l0aW9uKCksIHN0
eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbkxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGN1cnJMYXllci0+eFBvc2l0
aW9uKCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQocG9zaXRpb25MaXN0KTsKICAgICAgICAgICAgIH0KIApAQCAtMTc0MSwxOCArMTc0
MSwxOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAg
ICAgICBjb25zdCBMZW5ndGgmIG1heEhlaWdodCA9IHN0eWxlLT5tYXhIZWlnaHQoKTsKICAgICAg
ICAgICAgIGlmIChtYXhIZWlnaHQuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKG1heEhlaWdodCk7Cisg
ICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChtYXhIZWln
aHQsIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXhXaWR0aDogewogICAgICAgICAgICAgY29uc3QgTGVuZ3RoJiBtYXhXaWR0
aCA9IHN0eWxlLT5tYXhXaWR0aCgpOwogICAgICAgICAgICAgaWYgKG1heFdpZHRoLmlzVW5kZWZp
bmVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LT5jcmVhdGVWYWx1ZShtYXhXaWR0aCk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChtYXhXaWR0aCwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKLSAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKHN0eWxlLT5taW5IZWlnaHQoKSk7
CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHls
ZS0+bWluSGVpZ2h0KCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5TWluV2lkdGg6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLT5j
cmVhdGVWYWx1ZShzdHlsZS0+bWluV2lkdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWluV2lkdGgoKSwgc3R5bGUuZ2V0KCks
IGNzc1ZhbHVlUG9vbCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFsdWUoc3R5bGUtPm9wYWNpdHkoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
T3JwaGFuczoKQEAgLTE3NzYsMTkgKzE3NzYsMTkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlYwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKICAg
ICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlcikt
PnBhZGRpbmdUb3AoZmFsc2UpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKLSAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKHN0eWxlLT5wYWRkaW5nVG9wKCkp
OworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5
bGUtPnBhZGRpbmdUb3AoKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5wYWRkaW5nUmlnaHQoZmFsc2UpLCBzdHls
ZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wt
PmNyZWF0ZVZhbHVlKHN0eWxlLT5wYWRkaW5nUmlnaHQoKSk7CisgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGFkZGluZ1JpZ2h0KCksIHN0
eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGlu
Z0JvdHRvbToKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJv
eChyZW5kZXJlciktPnBhZGRpbmdCb3R0b20oZmFsc2UpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQ
b29sKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKHN0eWxl
LT5wYWRkaW5nQm90dG9tKCkpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBhZGRpbmdCb3R0b20oKSwgc3R5bGUuZ2V0KCksIGNzc1Zh
bHVlUG9vbCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBhZGRp
bmdMZWZ0KGZhbHNlKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShzdHlsZS0+cGFkZGluZ0xlZnQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+
cGFkZGluZ0xlZnQoKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wtPmNyZWF0ZVZhbHVlKHN0eWxlLT5wYWdlQnJlYWtBZnRlcigpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKQEAgLTE4MzksNyArMTgzOSw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShzdHlsZS0+dGV4dEluZGVudCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50
ZXh0SW5kZW50KCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhz
dHlsZS0+dGV4dFNoYWRvdygpLCBwcm9wZXJ0eUlELCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3Mjk3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDItMDkgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBnZXRDb21wdXRlZFN0eWxlKCkgcmV0dXJucyBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZm
ZXJlbnQgem9vbSBsZXZlbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtem9v
bS1hbmQtYmFja2dyb3VuZC1zaXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXpvb20tYW5kLWJhY2tncm91
bmQtc2l6ZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0wOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXBkYXRlIGJhc2VsaW5lcyBm
b3IgY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtY29udGVudC1mbGlwcGluZy5odG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUt
em9vbS1hbmQtYmFja2dyb3VuZC1zaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtem9vbS1h
bmQtYmFja2dyb3VuZC1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS16b29tLWFuZC1i
YWNrZ3JvdW5kLXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBA
QAorQ2hlY2tzIHRoYXQgZ2V0Q29tcHV0ZWRTdHlsZSgpIG9uIGEgem9vbWVkIGVsZW1lbnQgcmV0
dXJucyB0aGUgcmlnaHQgdGhpbmcuCitSZXN1bHRzIHdoaWxlIGRpc3BsYXk6YmxvY2sKKworUHJv
cGVydHkJUGFzcz8JU2V0IFZhbHVlCUNvbXB1dGVkIFZhbHVlCitiYWNrZ3JvdW5kLXBvc2l0aW9u
CVBBU1MJMTBweCAxMHB4CTEwcHggMTBweAorYmFja2dyb3VuZC1zaXplCVBBU1MJNDAwcHggMzAw
cHgJNDAwcHggMzAwcHgKKy13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZwlQQVNTCTEw
cHgJMTBweAorLXdlYmtpdC1ib3JkZXItdmVydGljYWwtc3BhY2luZwlQQVNTCTEwcHgJMTBweAor
Ym9yZGVyLXRvcC1zdHlsZQlQQVNTCXNvbGlkCXNvbGlkCitib3JkZXItdG9wLXdpZHRoCVBBU1MJ
MnB4CTJweAorYm9yZGVyLXJpZ2h0LXN0eWxlCVBBU1MJc29saWQJc29saWQKK2JvcmRlci1yaWdo
dC13aWR0aAlQQVNTCTJweAkycHgKK2JvcmRlci1ib3R0b20tc3R5bGUJUEFTUwlzb2xpZAlzb2xp
ZAorYm9yZGVyLWJvdHRvbS13aWR0aAlQQVNTCTJweAkycHgKK2JvcmRlci1sZWZ0LXN0eWxlCVBB
U1MJc29saWQJc29saWQKK2JvcmRlci1sZWZ0LXdpZHRoCVBBU1MJMnB4CTJweAorYm9yZGVyLXRv
cC1sZWZ0LXJhZGl1cwlQQVNTCTVweAk1cHgKK2JvcmRlci10b3AtcmlnaHQtcmFkaXVzCVBBU1MJ
NXB4CTVweAorYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cwlQQVNTCTVweAk1cHgKK2JvcmRlci1i
b3R0b20tcmlnaHQtcmFkaXVzCVBBU1MJNXB4CTVweAorb3V0bGluZS1zdHlsZQlQQVNTCXNvbGlk
CXNvbGlkCitvdXRsaW5lLXdpZHRoCVBBU1MJMnB4CTJweAorLXdlYmtpdC1jb2x1bW4tcnVsZS13
aWR0aAlQQVNTCTEwcHgJMTBweAorLXdlYmtpdC1jb2x1bW4tcnVsZS1zdHlsZQlQQVNTCXNvbGlk
CXNvbGlkCistd2Via2l0LWNvbHVtbi13aWR0aAlQQVNTCTgwcHgJODBweAorLXdlYmtpdC1jb2x1
bW4tZ2FwCVBBU1MJMjBweAkyMHB4Cistd2Via2l0LW1hcnF1ZWUtaW5jcmVtZW50CVBBU1MJMTBw
eAkxMHB4Cistd2Via2l0LW1hc2stcG9zaXRpb24JUEFTUwkxMHB4IDEwcHgJMTBweCAxMHB4Cist
d2Via2l0LW1hc2stc2l6ZQlQQVNTCTEwcHggMTBweAkxMHB4IDEwcHgKKy13ZWJraXQtcGVyc3Bl
Y3RpdmUJUEFTUwk0MDBweAk0MDBweAorLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4JUEFTUwky
MHB4IDIwcHgJMjBweCAyMHB4Cistd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoCVBBU1MJMnB4CTJw
eAorLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luCVBBU1MJMTBweCAxMHB4CTEwcHggMTBweAorcG9z
aXRpb24JUEFTUwlhYnNvbHV0ZQlhYnNvbHV0ZQorbGVmdAlQQVNTCTIwcHgJMjBweAordG9wCVBB
U1MJMjBweAkyMHB4CityaWdodAlQQVNTCTUwcHgJNTBweAorYm90dG9tCVBBU1MJNTBweAk1MHB4
Citmb250LXNpemUJUEFTUwkyMHB4CTIwcHgKK3dpZHRoCVBBU1MJNDAwcHgJNDAwcHgKK21heC13
aWR0aAlQQVNTCTkwMHB4CTkwMHB4CittaW4td2lkdGgJUEFTUwkyMDBweAkyMDBweAoraGVpZ2h0
CVBBU1MJMjUwcHgJMjUwcHgKK21heC1oZWlnaHQJUEFTUwk2MDBweAk2MDBweAorbWluLWhlaWdo
dAlQQVNTCTIwMHB4CTIwMHB4CitsZXR0ZXItc3BhY2luZwlQQVNTCTJweAkycHgKK3dvcmQtc3Bh
Y2luZwlQQVNTCTEwcHgJMTBweAorbWFyZ2luLXRvcAlQQVNTCTEwcHgJMTBweAorbWFyZ2luLXJp
Z2h0CVBBU1MJMTBweAkxMHB4CittYXJnaW4tYm90dG9tCVBBU1MJMTBweAkxMHB4CittYXJnaW4t
bGVmdAlQQVNTCTEwcHgJMTBweAorcGFkZGluZy10b3AJUEFTUwkxMHB4CTEwcHgKK3BhZGRpbmct
cmlnaHQJUEFTUwkxMHB4CTEwcHgKK3BhZGRpbmctYm90dG9tCVBBU1MJMTBweAkxMHB4CitwYWRk
aW5nLWxlZnQJUEFTUwkxMHB4CTEwcHgKK3RleHQtaW5kZW50CVBBU1MJMTBweAkxMHB4CitSZXN1
bHRzIHdoaWxlIGRpc3BsYXk6bm9uZQorCitIaWRkZW4gUHJvcGVydHkJUGFzcz8JU2V0IFZhbHVl
CUNvbXB1dGVkIFZhbHVlCitiYWNrZ3JvdW5kLXBvc2l0aW9uCVBBU1MJMTBweCAxMHB4CTEwcHgg
MTBweAorYmFja2dyb3VuZC1zaXplCVBBU1MJNDAwcHggMzAwcHgJNDAwcHggMzAwcHgKKy13ZWJr
aXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZwlQQVNTCTEwcHgJMTBweAorLXdlYmtpdC1ib3Jk
ZXItdmVydGljYWwtc3BhY2luZwlQQVNTCTEwcHgJMTBweAorYm9yZGVyLXRvcC1zdHlsZQlQQVNT
CXNvbGlkCXNvbGlkCitib3JkZXItdG9wLXdpZHRoCVBBU1MJMnB4CTJweAorYm9yZGVyLXJpZ2h0
LXN0eWxlCVBBU1MJc29saWQJc29saWQKK2JvcmRlci1yaWdodC13aWR0aAlQQVNTCTJweAkycHgK
K2JvcmRlci1ib3R0b20tc3R5bGUJUEFTUwlzb2xpZAlzb2xpZAorYm9yZGVyLWJvdHRvbS13aWR0
aAlQQVNTCTJweAkycHgKK2JvcmRlci1sZWZ0LXN0eWxlCVBBU1MJc29saWQJc29saWQKK2JvcmRl
ci1sZWZ0LXdpZHRoCVBBU1MJMnB4CTJweAorYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cwlQQVNTCTVw
eAk1cHgKK2JvcmRlci10b3AtcmlnaHQtcmFkaXVzCVBBU1MJNXB4CTVweAorYm9yZGVyLWJvdHRv
bS1sZWZ0LXJhZGl1cwlQQVNTCTVweAk1cHgKK2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzCVBB
U1MJNXB4CTVweAorb3V0bGluZS1zdHlsZQlQQVNTCXNvbGlkCXNvbGlkCitvdXRsaW5lLXdpZHRo
CVBBU1MJMnB4CTJweAorLXdlYmtpdC1jb2x1bW4tcnVsZS13aWR0aAlQQVNTCTEwcHgJMTBweAor
LXdlYmtpdC1jb2x1bW4tcnVsZS1zdHlsZQlQQVNTCXNvbGlkCXNvbGlkCistd2Via2l0LWNvbHVt
bi13aWR0aAlQQVNTCTgwcHgJODBweAorLXdlYmtpdC1jb2x1bW4tZ2FwCVBBU1MJMjBweAkyMHB4
Cistd2Via2l0LW1hcnF1ZWUtaW5jcmVtZW50CVBBU1MJMTBweAkxMHB4Cistd2Via2l0LW1hc2st
cG9zaXRpb24JUEFTUwkxMHB4IDEwcHgJMTBweCAxMHB4Cistd2Via2l0LW1hc2stc2l6ZQlQQVNT
CTEwcHggMTBweAkxMHB4IDEwcHgKKy13ZWJraXQtcGVyc3BlY3RpdmUJUEFTUwk0MDBweAk0MDBw
eAorLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4JUEFTUwkyMHB4IDIwcHgJMjBweCAyMHB4Cist
d2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoCVBBU1MJMnB4CTJweAorLXdlYmtpdC10cmFuc2Zvcm0t
b3JpZ2luCVBBU1MJMTBweCAxMHB4CTEwcHggMTBweAorcG9zaXRpb24JUEFTUwlhYnNvbHV0ZQlh
YnNvbHV0ZQorbGVmdAlQQVNTCTIwcHgJMjBweAordG9wCVBBU1MJMjBweAkyMHB4CityaWdodAlQ
QVNTCTUwcHgJNTBweAorYm90dG9tCVBBU1MJNTBweAk1MHB4Citmb250LXNpemUJUEFTUwkyMHB4
CTIwcHgKK3dpZHRoCVBBU1MJNDAwcHgJNDAwcHgKK21heC13aWR0aAlQQVNTCTkwMHB4CTkwMHB4
CittaW4td2lkdGgJUEFTUwkyMDBweAkyMDBweAoraGVpZ2h0CVBBU1MJMjUwcHgJMjUwcHgKK21h
eC1oZWlnaHQJUEFTUwk2MDBweAk2MDBweAorbWluLWhlaWdodAlQQVNTCTIwMHB4CTIwMHB4Cits
ZXR0ZXItc3BhY2luZwlQQVNTCTJweAkycHgKK3dvcmQtc3BhY2luZwlQQVNTCTEwcHgJMTBweAor
bWFyZ2luLXRvcAlQQVNTCTEwcHgJMTBweAorbWFyZ2luLXJpZ2h0CVBBU1MJMTBweAkxMHB4Citt
YXJnaW4tYm90dG9tCVBBU1MJMTBweAkxMHB4CittYXJnaW4tbGVmdAlQQVNTCTEwcHgJMTBweAor
cGFkZGluZy10b3AJUEFTUwkxMHB4CTEwcHgKK3BhZGRpbmctcmlnaHQJUEFTUwkxMHB4CTEwcHgK
K3BhZGRpbmctYm90dG9tCVBBU1MJMTBweAkxMHB4CitwYWRkaW5nLWxlZnQJUEFTUwkxMHB4CTEw
cHgKK3RleHQtaW5kZW50CVBBU1MJMTBweAkxMHB4CitUaGlzIGRpdiBoYXMgYSB6b29tIHZhbHVl
IG9mICIyLiIgSXQgaGFzIGEgd2lkdGggb2YgMzAwcHguIEl0cyBiYWNrZ3JvdW5kIHNpemUgaXM6
IDQwMHB4IGJ5IDMwMHB4LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9nZXRDb21wdXRlZFN0eWxlLXpvb20tYW5kLWJhY2tncm91bmQtc2l6ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0
ZWRTdHlsZS16b29tLWFuZC1iYWNrZ3JvdW5kLXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS16b29t
LWFuZC1iYWNrZ3JvdW5kLXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04IiAv
PgorPHRpdGxlPmdldENvbXB1dGVkU3R5bGUoKSBab29tIGFuZCBCYWNrZ3JvdW5kIFNpemU8L3Rp
dGxlPgorPHN0eWxlPgorICAjdGVzdF9hcmVhIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
IH0KKyAgLnRlc3RfZGl2IHsKKyAgICB6b29tOiAyOworICAgIHdpZHRoOiAzMDBweDsKKyAgfQor
ICAKKyAgI3pvb21lZF9hbmRfZGlzcGxheWVkIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgfQor
ICAjem9vbWVkX2FuZF9oaWRkZW4geworICAgIGRpc3BsYXk6IG5vbmU7CisgIH0KKyAgCisgICNy
ZXN1bHRzIHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICB9CisgICAgLnJlc3VsdHMgeworICAg
ICAgZmxvYXQ6IGxlZnQ7CisgICAgICBtYXJnaW4tcmlnaHQ6IDJlbTsKKyAgICB9CisgICAgICAu
cmVzdWx0cyB0YWJsZSB7CisgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CisgICAg
ICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICAgIH0KKyAgICAgIC5yZXN1bHRzIHRoIHsKKyAg
ICAgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICAgIH0KKyAgICAgIC5yZXN1bHRzIHRoLAorICAg
ICAgLnJlc3VsdHMgdGQgeworICAgICAgICBwYWRkaW5nOiAwIDFlbSAwIDA7CisgICAgICAgIGJv
cmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOworICAgICAgfQorICAgICAgLnJlc3VsdHMgLnRl
c3QtcGFzcyB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgIH0KKyAgICAgIC5yZXN1bHRz
IC50ZXN0LWZhaWwgeworICAgICAgICBjb2xvcjogcmVkOworICAgICAgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICBDaGVja3MgdGhhdCBnZXRDb21wdXRlZFN0eWxlKCkgb24gYSB6b29t
ZWQgZWxlbWVudCByZXR1cm5zIHRoZSByaWdodCB0aGluZy4gCisgIDxzZWN0aW9uIGlkPSJyZXN1
bHRzIj4KKyAgICA8c2VjdGlvbiBjbGFzcz0icmVzdWx0cyI+CisgICAgICA8aDI+UmVzdWx0cyB3
aGlsZSBkaXNwbGF5OmJsb2NrPC9oMj4KKyAgICAgIDx0YWJsZT4KKyAgICAgICAgPHRoZWFkPgor
ICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0aD5Qcm9wZXJ0eTwvdGg+CisgICAgICAgICAg
ICA8dGg+UGFzcz88L3RoPgorICAgICAgICAgICAgPHRoPlNldCBWYWx1ZTwvdGg+CisgICAgICAg
ICAgICA8dGg+Q29tcHV0ZWQgVmFsdWU8L3RoPgorICAgICAgICA8dGJvZHkgaWQ9InJlc3VsdHNf
Ym9keSI+CisgICAgICAgIDwvdGJvZHk+CisgICAgICA8L3RhYmxlPgorICAgIDwvc2VjdGlvbj4K
KyAgICAKKyAgICA8c2VjdGlvbiBjbGFzcz0icmVzdWx0cyI+CisgICAgICA8aDI+UmVzdWx0cyB3
aGlsZSBkaXNwbGF5Om5vbmU8L2gyPgorICAgICAgPHRhYmxlPgorICAgICAgICA8dGhlYWQ+Cisg
ICAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoPkhpZGRlbiBQcm9wZXJ0eTwvdGg+CisgICAg
ICAgICAgICA8dGg+UGFzcz88L3RoPgorICAgICAgICAgICAgPHRoPlNldCBWYWx1ZTwvdGg+Cisg
ICAgICAgICAgICA8dGg+Q29tcHV0ZWQgVmFsdWU8L3RoPgorICAgICAgICA8dGJvZHkgaWQ9InJl
c3VsdHNfaGlkZGVuX2JvZHkiPgorICAgICAgICA8L3Rib2R5PgorICAgICAgPC90YWJsZT4KKyAg
ICA8L3NlY3Rpb24+CisgIDwvc2VjdGlvbj4KKworICA8ZGl2IGlkPSJ0ZXN0X2FyZWEiPgorICAg
IDxkaXYgaWQ9Inpvb21lZF9hbmRfZGlzcGxheWVkIiBjbGFzcz0idGVzdF9kaXYiPgorICAgICAg
VGhpcyBkaXYgaGFzIGEgem9vbSB2YWx1ZSBvZiAiMi4iIEl0IGhhcyBhIHdpZHRoIG9mIDMwMHB4
LgorICAgICAgSXRzIGJhY2tncm91bmQgc2l6ZSBpczogNDAwcHggYnkgMzAwcHguCisgICAgPC9k
aXY+CisgICAgPGRpdiBpZD0iem9vbWVkX2FuZF9oaWRkZW4iIGNsYXNzPSJ0ZXN0X2RpdiI+Cisg
ICAgICBUaGlzIGRpdiBpcyBoYXMgYSB6b29tIHZhbHVlIG9mICIyIiBhbmQgaXMgaGlkZGVuLiBJ
dCBoYXMgYSB3aWR0aCBvZiAzMDBweC4KKyAgICAgIEl0cyBiYWNrZ3JvdW5kIHNpemUgaXM6IDQw
MHB4IGJ5IDMwMHB4LgorICAgIDwvZGl2PgorICA8L2Rpdj4KKyAgCisgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgIHZhciBwcm9wZXJ0aWVzVG9DaGVjayA9IHsKKyAgICAgICJiYWNrZ3Jv
dW5kLXBvc2l0aW9uIjogIjEwcHggMTBweCIsCisgICAgICAiYmFja2dyb3VuZC1zaXplIjogIjQw
MHB4IDMwMHB4IiwKKyAgICAgICItd2Via2l0LWJvcmRlci1ob3Jpem9udGFsLXNwYWNpbmciOiAi
MTBweCIsCisgICAgICAiLXdlYmtpdC1ib3JkZXItdmVydGljYWwtc3BhY2luZyI6ICIxMHB4IiwK
KyAgICAgIAorICAgICAgLy8gTmVlZCBzdHlsZSBvciB3aWR0aCB3b24ndCBiZSBhcHBsaWVkCisg
ICAgICAiYm9yZGVyLXRvcC1zdHlsZSI6ICJzb2xpZCIsCisgICAgICAiYm9yZGVyLXRvcC13aWR0
aCI6ICIycHgiLAorICAgICAgImJvcmRlci1yaWdodC1zdHlsZSI6ICJzb2xpZCIsCisgICAgICAi
Ym9yZGVyLXJpZ2h0LXdpZHRoIjogIjJweCIsCisgICAgICAiYm9yZGVyLWJvdHRvbS1zdHlsZSI6
ICJzb2xpZCIsCisgICAgICAiYm9yZGVyLWJvdHRvbS13aWR0aCI6ICIycHgiLAorICAgICAgImJv
cmRlci1sZWZ0LXN0eWxlIjogInNvbGlkIiwKKyAgICAgICJib3JkZXItbGVmdC13aWR0aCI6ICIy
cHgiLAorICAgICAgCisgICAgICAiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyI6ICI1cHgiLAorICAg
ICAgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIjogIjVweCIsCisgICAgICAiYm9yZGVyLWJvdHRv
bS1sZWZ0LXJhZGl1cyI6ICI1cHgiLAorICAgICAgImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVz
IjogIjVweCIsCisgICAgICAKKyAgICAgIC8vIE5lZWQgc3R5bGUgb3Igd2lkdGggd29uJ3QgYmUg
YXBwbGllZAorICAgICAgIm91dGxpbmUtc3R5bGUiOiAic29saWQiLAorICAgICAgIm91dGxpbmUt
d2lkdGgiOiAiMnB4IiwKKyAgICAgIAorICAgICAgLy8gTmVlZCBzdHlsZSBvciB3aWR0aCB3b24n
dCBiZSBhcHBsaWVkCisgICAgICAiLXdlYmtpdC1jb2x1bW4tcnVsZS13aWR0aCI6ICIxMHB4IiwK
KyAgICAgICItd2Via2l0LWNvbHVtbi1ydWxlLXN0eWxlIjogInNvbGlkIiwKKyAgICAgIAorICAg
ICAgIi13ZWJraXQtY29sdW1uLXdpZHRoIjogIjgwcHgiLAorICAgICAgIi13ZWJraXQtY29sdW1u
LWdhcCI6ICIyMHB4IiwKKyAgICAgIAorICAgICAgIi13ZWJraXQtbWFycXVlZS1pbmNyZW1lbnQi
OiAiMTBweCIsCisgICAgICAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uIjogIjEwcHggMTBweCIsCisg
ICAgICAiLXdlYmtpdC1tYXNrLXNpemUiOiAiMTBweCAxMHB4IiwKKyAgICAgICItd2Via2l0LXBl
cnNwZWN0aXZlIjogIjQwMHB4IiwKKyAgICAgICItd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbiI6
ICIyMHB4IDIwcHgiLAorICAgICAgIi13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgiOiAiMnB4IiwK
KyAgICAgICItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iOiAiMTBweCAxMHB4IiwKKyAgICAgIAor
ICAgICAgInBvc2l0aW9uIjoiYWJzb2x1dGUiLAorICAgICAgCisgICAgICAibGVmdCI6ICIyMHB4
IiwKKyAgICAgICJ0b3AiOiAiMjBweCIsCisgICAgICAicmlnaHQiOiAiNTBweCIsCisgICAgICAi
Ym90dG9tIjogIjUwcHgiLAorICAgICAgCisgICAgICAiZm9udC1zaXplIjogIjIwcHgiLAorICAg
ICAgIndpZHRoIjogIjQwMHB4IiwKKyAgICAgICJtYXgtd2lkdGgiOiAiOTAwcHgiLAorICAgICAg
Im1pbi13aWR0aCI6ICIyMDBweCIsCisgICAgICAiaGVpZ2h0IjogIjI1MHB4IiwKKyAgICAgICJt
YXgtaGVpZ2h0IjogIjYwMHB4IiwKKyAgICAgICJtaW4taGVpZ2h0IjogIjIwMHB4IiwKKyAgICAg
ICJsZXR0ZXItc3BhY2luZyI6ICIycHgiLAorICAgICAgIndvcmQtc3BhY2luZyI6ICIxMHB4IiwK
KyAgICAgIAorICAgICAgIm1hcmdpbi10b3AiOiAiMTBweCIsCisgICAgICAibWFyZ2luLXJpZ2h0
IjogIjEwcHgiLAorICAgICAgIm1hcmdpbi1ib3R0b20iOiAiMTBweCIsCisgICAgICAibWFyZ2lu
LWxlZnQiOiAiMTBweCIsCisgICAgICAKKyAgICAgICJwYWRkaW5nLXRvcCI6ICIxMHB4IiwKKyAg
ICAgICJwYWRkaW5nLXJpZ2h0IjogIjEwcHgiLAorICAgICAgInBhZGRpbmctYm90dG9tIjogIjEw
cHgiLAorICAgICAgInBhZGRpbmctbGVmdCI6ICIxMHB4IiwKKyAgICAgIAorICAgICAgInRleHQt
aW5kZW50IjogIjEwcHgiCisgICAgfTsKKyAgCisgIAorICAgIHZhciB6b29tZWRBbmREaXNwbGF5
ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiem9vbWVkX2FuZF9kaXNwbGF5ZWQiKSwKKyAg
ICAgICAgem9vbWVkQW5kSGlkZGVuICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInpvb21l
ZF9hbmRfaGlkZGVuIiksCisgICAgICAgIHRib2R5ICAgICAgICAgICAgICA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHRzX2JvZHkiKSwKKyAgICAgICAgdGJvZHlIaWRkZW4gICAgICAg
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHNfaGlkZGVuX2JvZHkiKSwKKyAgICAg
ICAgb3ZlcmFsbFBhc3MgICAgICAgID0gdHJ1ZSwKKyAgICAgICAgY29tcHV0ZWQ7CisgICAgCisg
ICAgdmFyIHRlc3RQcm9wZXJ0aWVzID0gZnVuY3Rpb24odGVzdEVsZW1lbnQsIHJlc3VsdEJvZHkp
IHsKKyAgICAgIC8vIEFwcGx5IHByb3BlcnRpZXMKKyAgICAgIGZvciAodmFyIHByb3BlcnR5IGlu
IHByb3BlcnRpZXNUb0NoZWNrKSB7CisgICAgICAgIHRlc3RFbGVtZW50LnN0eWxlW3Byb3BlcnR5
XSA9IHByb3BlcnRpZXNUb0NoZWNrW3Byb3BlcnR5XTsKKyAgICAgIH0KKyAgICAgIAorICAgICAg
Ly8gQ2hlY2sgcHJvcGVydGllcworICAgICAgdmFyIGNvbXB1dGVkID0gZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RWxlbWVudCkKKyAgICAgIGZvciAodmFyIHByb3Bl
cnR5IGluIHByb3BlcnRpZXNUb0NoZWNrKSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0g
cHJvcGVydGllc1RvQ2hlY2tbcHJvcGVydHldLAorICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9
IGNvbXB1dGVkW3Byb3BlcnR5XSwKKyAgICAgICAgICAgIHBhc3MgPSBjb21wdXRlZFZhbHVlID09
IG9yaWdpbmFsVmFsdWU7CisgICAgICAKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRyIiksCisgICAgICAgICAgICBwcm9wZXJ0eUNlbGwgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ0ZCIpLAorICAgICAgICAgICAgcGFzc0NlbGwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ZCIpLAorICAgICAgICAgICAgb3JpZ2luYWxDZWxsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKSwKKyAgICAgICAgICAgIGNvbXB1dGVkQ2VsbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRkIik7CisgICAgICAgICAgCisgICAgICAgIHByb3BlcnR5Q2VsbC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcm9wZXJ0eSkpOyAgICAKKyAgICAgICAgcGFz
c0NlbGwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFzcyA/ICJQQVNTIiA6
ICJGQUlMIikpOworICAgICAgICBvcmlnaW5hbENlbGwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUob3JpZ2luYWxWYWx1ZSkpOyAgICAKKyAgICAgICAgY29tcHV0ZWRDZWxsLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbXB1dGVkVmFsdWUpKTsKKyAgICAg
ICAgcm93LmFwcGVuZENoaWxkKHByb3BlcnR5Q2VsbCk7CisgICAgICAgIHJvdy5hcHBlbmRDaGls
ZChwYXNzQ2VsbCk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZChvcmlnaW5hbENlbGwpOworICAg
ICAgICByb3cuYXBwZW5kQ2hpbGQoY29tcHV0ZWRDZWxsKTsKKyAgICAgICAgcm93LmNsYXNzTmFt
ZSA9ICJ0ZXN0LSIgKyAocGFzcyA/ICJwYXNzIiA6ICJmYWlsIik7CisgICAgICAgIHJlc3VsdEJv
ZHkuYXBwZW5kQ2hpbGQocm93KTsKKyAgICAgIAorICAgICAgICBvdmVyYWxsUGFzcyA9IG92ZXJh
bGxQYXNzICYmIHBhc3M7CisgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB0ZXN0UHJvcGVydGll
cyh6b29tZWRBbmREaXNwbGF5ZWQsIHRib2R5KTsKKyAgICB0ZXN0UHJvcGVydGllcyh6b29tZWRB
bmRIaWRkZW4sIHRib2R5SGlkZGVuKTsKKyAgPC9zY3JpcHQ+CisKKworCis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="128196"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>