<?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>33840</bug_id>
          
          <creation_ts>2010-01-19 05:34:01 -0800</creation_ts>
          <short_desc>Provide a way to get page number with layoutTestController</short_desc>
          <delta_ts>2010-02-01 22:28:34 -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>Tools / Tests</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>9526</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Shinichiro Hamaji">hamaji</assigned_to>
          <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>182206</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-19 05:34:01 -0800</bug_when>
    <thetext>Currently, CSS property page-break-after and page-break-before are
implemented for value &quot;always&quot;, but they are not tested due to lack of
testing method for printing. I propose
layoutTestController.pageNumberForElementById to test them and future
change around printing.

Though we may eventually want to have another testing method to dump
pages as png image(s) (c.f., Bug 20011), this method will be also
useful as this can be used in dumpAsText() tests.

Patch will be coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182208</commentid>
    <comment_count>1</comment_count>
      <attachid>46901</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-19 05:39:20 -0800</bug_when>
    <thetext>Created attachment 46901
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182209</commentid>
    <comment_count>2</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-19 05:45:36 -0800</bug_when>
    <thetext>I checked I can compile this on Mac, Win, Gtk, and Qt. I&apos;d like to
postpone the actual implementation of the method for Win, Gtk, and Qt
after this patch is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183388</commentid>
    <comment_count>3</comment_count>
      <attachid>47157</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-21 16:52:32 -0800</bug_when>
    <thetext>Created attachment 47157
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183393</commentid>
    <comment_count>4</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-21 16:55:04 -0800</bug_when>
    <thetext>I found I didn&apos;t remove a fprintf before I submitted the previous patch. I also changed the place of pageNumberForElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184779</commentid>
    <comment_count>5</comment_count>
      <attachid>47157</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-26 15:06:03 -0800</bug_when>
    <thetext>Comment on attachment 47157
Patch v2

pageNumberForElement should take in a width/height, or maybe a Vector of IntSize&apos;s (since that&apos;s what other parts of this code use).

Otherwise I think this is a fantastic change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184953</commentid>
    <comment_count>6</comment_count>
      <attachid>47500</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-26 22:55:55 -0800</bug_when>
    <thetext>Created attachment 47500
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184956</commentid>
    <comment_count>7</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-26 23:04:56 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 47157 [details])
&gt; pageNumberForElement should take in a width/height, or maybe a Vector of
&gt; IntSize&apos;s (since that&apos;s what other parts of this code use).

Thanks for your review! I modified my patch so the new method may take width and height. I made them optional because some tests (e.g., tests for page-break-*) won&apos;t care the size of pages. We may eventually want to add other parameters  such as userScaleFactor, the size of physical pages (page size + margin size, they would be necessary once we implement media queries like &quot;@media print and (width: 21cm)&quot; http://www.w3.org/TR/css3-page/#page-size-media-query), and etc. I&apos;d like to avoid adding them for now because I didn&apos;t figure out sufficient set of such parameters yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185676</commentid>
    <comment_count>8</comment_count>
      <attachid>47500</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-28 18:15:08 -0800</bug_when>
    <thetext>Comment on attachment 47500
Patch v3

Oh.  I meant that the WebCore implementation function should take a width/height.  I care less about the JS function being able to.  :)  But it&apos;s fine that it does.  My concern was more about the fact that WebCore shouldn&apos;t know how large the page size DumpRenderTree uses is.  At least in the Mac DumpRenderTree the 600x800 size is held in some constants at the topof the files and could theoretically be changed at some later point. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185683</commentid>
    <comment_count>9</comment_count>
      <attachid>47500</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-28 18:24:49 -0800</bug_when>
    <thetext>Comment on attachment 47500
Patch v3

Why not use a FloatSize here?
 83 void PrintContext::computePageRectsWithPageSize(float pageWidth, float pageHeight, float userScaleFactor)

And what are the units?  Pixels?

85      float printedPagesHeight = 0.0;
 102     float printedPagesHeight = 0;
Is the compiler smart enough to amke that 0.0f?

Likewise here?
 92     if (userScaleFactor &lt;= 0) {
0.0f?
(the compiler may be smart, I don&apos;t know).

FloatRect?
 56     void computePageRectsWithPageSize(float pageWidth, float pageHeight, float userScaleFactor);

Why?
2   * Copyright (C) 2005, 2006 Apple Computer, Inc.  All rights reserved.
 2  * copyright (C) 2005, 2006 Apple Computer, Inc.  All rights reserved.

What do these defaults mean?
 469     float pageWidth = 982;
 470     float pageHeight = 1291;

I think it&apos;s a nice feature that pageNumberForElementById now takes a width/height, and I&apos;m glad they&apos;re not required.  I&apos;m not sure why the various tests use that feature, and I&apos;m also confused by the default values and the units.

r- mostly due to my confusion.  I think we need a few more uses of FloatSize, and we should consider making these variable names carry units in their name.  Like pageSizeInPixels?  or pageSizeInInches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185684</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-28 18:25:24 -0800</bug_when>
    <thetext>Again, I think this is a *fantastic* change.  I&apos;m very excited to see it land.  I&apos;m mostly confused by some of the details, and would like to sort that out before marking r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185701</commentid>
    <comment_count>11</comment_count>
      <attachid>47668</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-28 19:48:07 -0800</bug_when>
    <thetext>Created attachment 47668
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185702</commentid>
    <comment_count>12</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-28 19:49:56 -0800</bug_when>
    <thetext>Thanks for the review!

&gt; Why not use a FloatSize here?
&gt;  83 void PrintContext::computePageRectsWithPageSize(float pageWidth, float
&gt; pageHeight, float userScaleFactor)

Done.

&gt; And what are the units?  Pixels?

I added InPixels suffix for all value names in headers.

&gt; 85      float printedPagesHeight = 0.0;
&gt;  102     float printedPagesHeight = 0;
&gt; Is the compiler smart enough to amke that 0.0f?
&gt; 
&gt; Likewise here?
&gt;  92     if (userScaleFactor &lt;= 0) {
&gt; 0.0f?
&gt; (the compiler may be smart, I don&apos;t know).

Yes, it seems the compiler works for this case.

&gt; Why?
&gt; 2   * Copyright (C) 2005, 2006 Apple Computer, Inc.  All rights reserved.
&gt;  2  * copyright (C) 2005, 2006 Apple Computer, Inc.  All rights reserved.

I&apos;m not sure why this happened... Sorry, fixed.

&gt; What do these defaults mean?
&gt;  469     float pageWidth = 982;
&gt;  470     float pageHeight = 1291;

We chatted in #webkit and decided to use 800x600 as the default value. I put a FIXME here. I think we want to define this value in a header file (not sure, but maybe LayoutTestContoller.h ?) and share this value between all ports. But, I&apos;d like to do this refactoring later as this change will touch many files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186601</commentid>
    <comment_count>13</comment_count>
      <attachid>47668</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 15:33:10 -0800</bug_when>
    <thetext>Comment on attachment 47668
Patch v4

Why not FloatSize here?
 164 int PrintContext::pageNumberForElement(Element* element, float pageWidthInPixels, float pageHeightInPixels)

I guess DRT doesn&apos;t know how to use FloatSize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186650</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 16:12:24 -0800</bug_when>
    <thetext>Attachment 47668 was posted by a committer and has review+, assigning to Shinichiro Hamaji for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186709</commentid>
    <comment_count>15</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-02-01 17:07:28 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 47668 [details])
&gt; Why not FloatSize here?
&gt;  164 int PrintContext::pageNumberForElement(Element* element, float
&gt; pageWidthInPixels, float pageHeightInPixels)
&gt; 
&gt; I guess DRT doesn&apos;t know how to use FloatSize?

Yeah, I was unsure if it&apos;s OK to use FloatSize in WebKit directory. I&apos;ll modify the interface of PrintContext::pageNumberForElement before I land the patch. I still think we should not use WebCore class in the interface of WebKit API (except for WebCoreSuppport directory?) so I won&apos;t modify pageNumberForElement in WebCoreStatistics.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186811</commentid>
    <comment_count>16</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-02-01 22:28:34 -0800</bug_when>
    <thetext>Committed r54205: &lt;http://trac.webkit.org/changeset/54205&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46901</attachid>
            <date>2010-01-19 05:39:20 -0800</date>
            <delta_ts>2010-01-21 16:52:26 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-33840-20100119223918.patch</filename>
            <type>text/plain</type>
            <size>24194</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZDMxMmQ2Li5kMjc1NDk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEt
MTkgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdl
dCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoK
KyAgICAgICAgKiBwcmludGluZy9wYWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHByaW50aW5nL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwcmludGluZy9zY3JpcHQtdGVzdHMvcGFnZS1icmVhay1hbHdheXMuanM6IEFkZGVkLgor
ICAgICAgICAoY3JlYXRlUGFyYWdyYXBoKToKKwogMjAxMC0wMS0xOSAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCAwMGY4MjVlLi5i
MTE2NzBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTc4NCwzICs1Nzg0LDUgQEAg
c3ZnL3RleHQvc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IueGh0bWwKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODM1CiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5j
ZVJvb3QtZXZlbnQtYnViYmxpbmcueGh0bWwKIAorIyBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpLgorcHJpbnRpbmcvcGFnZS1icmVhay1h
bHdheXMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBjYmQ1ZTg4Li4zMWY4YzI4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMzYsNyArMzYsOCBAQCBmYXN0L2V2ZW50
cy9hdHRlbXB0LXNjcm9sbC13aXRoLW5vLXNjcm9sbGJhcnMuaHRtbAogc3ZnL2JhdGlrL3RleHQv
c21hbGxGb250cy5zdmcKIAogIyBzZWUgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAxMSAtLSBQcmludGluZyB0ZXN0cyBzaG91bGQgdXNlIEltYWdlRGlmZgot
cHJpbnRpbmcKK3ByaW50aW5nL2NvbXBvc2l0aW5nLWxheWVyLXByaW50aW5nLmh0bWwKK3ByaW50
aW5nL21lZGlhLXF1ZXJpZXMtcHJpbnQuaHRtbAogCiAjIFNraXAgYmVjYXVzZSBmaXggZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjc3MCB3YXMgcmV2ZXJ0ZWQK
IGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4u
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggYzkzMzgxZS4uYWZhMDk3YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MTAyLDMgKzUxMDIsNiBAQCBmYXN0L2Nzcy9ub24tc3Rh
bmRhcmQtY2hlY2tib3gtc2l6ZS5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzgzNAogY3NzMS9ib3hfcHJvcGVydGllcy9hY2lkX3Rlc3QuaHRtbAogZmFz
dC9mb3Jtcy90ZXh0YXJlYS1zY3JvbGxiYXItaGVpZ2h0Lmh0bWwKKworIyBJbXBsZW1lbnQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpLgorcHJpbnRpbmcv
cGFnZS1icmVhay1hbHdheXMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA5Yzdj
MTg2Li44ZjYzODZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtNDIyLDcgKzQyMiw4
IEBAIGFjY2Vzc2liaWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVudC5odG1sCiBhY2Nlc3NpYmlsaXR5
L3Zpc2libGUtZWxlbWVudHMuaHRtbAogCiAjIE5vIHN1cHBvcnQgZm9yIHByaW50LXRvLXBkZiBp
biBXaW5kb3dzIERSVAotcHJpbnRpbmcKK3ByaW50aW5nL2NvbXBvc2l0aW5nLWxheWVyLXByaW50
aW5nLmh0bWwKK3ByaW50aW5nL21lZGlhLXF1ZXJpZXMtcHJpbnQuaHRtbAogCiAjIE5vIHVwbG9h
ZCBwcm9ncmVzcyBldmVudHMgb24gd2luZG93cwogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91
cGxvYWQtb25sb2FkLWV2ZW50Lmh0bWwKQEAgLTc0MiwzICs3NDMsNiBAQCBzdmcvVzNDLVNWRy0x
LjEvZmlsdGVycy1jb252LTAxLWYuc3ZnCiAKICMgSnVzdCBuZWVkcyBwaXhlbCBhbmQgcmVuZGVy
aW5nIHJlc3VsdHMgZ2VuZXJhdGVkIGJ5IHNvbWVvbmUgd2l0aCB0aGlzIHBsYXRmb3JtOgogZmFz
dC9jc3Mvbm9uLXN0YW5kYXJkLWNoZWNrYm94LXNpemUuaHRtbAorCisjIEltcGxlbWVudCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkuCitwcmludGluZy9w
YWdlLWJyZWFrLWFsd2F5cy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdl
LWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzkxYTM1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2UtYnJlYWstYWx3YXlzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IGZvciBw
YWdlLWJyZWFrLWJlZm9yZTphbHdheXMgYW5kIHBhZ2UtYnJlYWstYWZ0ZXI6YWx3YXlzCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnZmlyc3RQYWdlJykgaXMgMAorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3NlY29uZFBhZ2UxJykgaXMgMQor
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3NlY29u
ZFBhZ2UyJykgaXMgMQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoJ3RoaXJkUGFnZScpIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLWJyZWFrLWFsd2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1h
bHdheXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Q5YWEzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMu
aHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Bh
Z2UtYnJlYWstYWx3YXlzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWNhYWM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCAr
MSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNh
bmRib3giPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcv
c2NyaXB0LXRlc3RzL3BhZ2UtYnJlYWstYWx3YXlzLmpzIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcv
c2NyaXB0LXRlc3RzL3BhZ2UtYnJlYWstYWx3YXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjFjNmU1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wcmlu
dGluZy9zY3JpcHQtdGVzdHMvcGFnZS1icmVhay1hbHdheXMuanMKQEAgLTAsMCArMSwyNCBAQAor
ZGVzY3JpcHRpb24oIlRlc3QgZm9yIHBhZ2UtYnJlYWstYmVmb3JlOmFsd2F5cyBhbmQgcGFnZS1i
cmVhay1hZnRlcjphbHdheXMiKTsKKworZnVuY3Rpb24gY3JlYXRlUGFyYWdyYXBoKGlkKQorewor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgIGVsZW1l
bnQuaWQgPSBpZDsKKyAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJmb29iYXIiKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNhbmRib3giKS5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworY3JlYXRlUGFy
YWdyYXBoKCJmaXJzdFBhZ2UiKTsKK2NyZWF0ZVBhcmFncmFwaCgic2Vjb25kUGFnZTEiKS5zdHls
ZS5wYWdlQnJlYWtCZWZvcmUgPSAiYWx3YXlzIjsKK2NyZWF0ZVBhcmFncmFwaCgic2Vjb25kUGFn
ZTIiKS5zdHlsZS5wYWdlQnJlYWtBZnRlciA9ICJhbHdheXMiOworY3JlYXRlUGFyYWdyYXBoKCJ0
aGlyZFBhZ2UiKS5zdHlsZS5wYWdlQnJlYWtCZWZvcmUgPSAiYWx3YXlzIjsKKworc2hvdWxkQmUo
ImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnZmlyc3RQYWdl
JykiLCAiMCIpOworc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZCgnc2Vjb25kUGFnZTEnKSIsICIxIik7CitzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCdzZWNvbmRQYWdlMicpIiwgIjEiKTsK
K3Nob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
J3RoaXJkUGFnZScpIiwgIjIiKTsKKworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2FuZGJveCIpKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDlhNjY0MWIuLjA2YjBhZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEtMTkgIFNoaW5p
Y2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCBwYWdlIG51
bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAgIFRlc3Q6IHByaW50aW5nL3Bh
Z2UtYnJlYWstYWx3YXlzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6cGFnZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKToKKyAgICAgICAgKiBwYWdl
L1ByaW50Q29udGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5oOgorCiAyMDEwLTAxLTE5ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAppbmRl
eCA3NjU5N2RmLi4zMDU3YWI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC00MTIsNiArNDEyLDcgQEAgX19aTjdX
ZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyRDFFdgogX19aTjdXZWJDb3JlMTlhcHBsaWNhdGlv
bklzU2FmYXJpRXYKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyNHNldEV4cGVj
dGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlQzJF
dgorX19aTjdXZWJDb3JlMjBwYWdlTnVtYmVyRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCiBfX1pO
N1dlYkNvcmUyMUphdmFTY3JpcHREZWJ1Z1NlcnZlcjIzcmVjb21waWxlQWxsSlNGdW5jdGlvbnNF
UE5TXzVUaW1lcklTMF9FRQogX19aTjdXZWJDb3JlMjFKYXZhU2NyaXB0RGVidWdTZXJ2ZXI2c2hh
cmVkRXYKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVL
ZXlEb3duRXZlbnRFTlMwXzRUeXBlRWIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGFhMzYyMzkuLmU5MzQ3YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMjA3OTcsNiArMjA3OTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQcmludENvbnRleHQuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQcmlu
dENvbnRleHQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcU2NyZWVuLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjYjc3ODguLjk1M2JjNzAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDc3LDYg
KzQwNzcsOCBAQAogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi87IH07CiAJCUI1
QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjM5MTAy
QjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJ
QjVDMTEyM0MxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjNBMTAy
QjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi87IH07CisJCUI3
NzZENDNCMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAv
KiBQcmludENvbnRleHQuaCAqLzsgfTsKKwkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFBy
aW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLzsgfTsK
IAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAv
KiBET01GaWxlLmggKi87IH07CiAJCUJDMDBGMDA1MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVG
RkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gKi87IH07CiAJCUJDMDBGMDA2MEUwQTE4
NTUwMEZEMDRFMyAvKiBET01GaWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBGMDAwMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTkyNzMsNiArOTI3NSw4IEBACiAJCUI1QTY4NDIzMEZGQUJF
QUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFNRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUMxMTIzOTEwMkI2
QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8q
IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByaW50Q29udGV4dC5oOyBwYXRoID0gcGFnZS9Q
cmludENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjc3NkQ0M0MxMTA0
NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBQcmludENvbnRleHQuY3BwOyBwYXRoID0gcGFnZS9QcmludENvbnRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRF
MyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAwRTBBMTg1
NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01GaWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwMTU5LDYgKzEwMTYzLDggQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktp
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjc3NkQ0
M0MxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi8sCisJCQkJQjc3NkQ0M0Ex
MTA0NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovLAogCQkJCTY1Qzk3QUYyMDhFQTkw
ODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0Yg
LyogV2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBE
ZXJpdmVkU291cmNlcy5tYWtlICovLApAQCAtMTgzNzYsNiArMTgzODIsNyBAQAogCQkJCTU5RTU2
MEE3MTEwNTMzNjYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU5QkMzOTNGMTEwNTRBMTMwMEZEODVEQiAvKiBKYXZhU3RyaW5nSlNDLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCNzc2RDQzQjExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIwNTQzLDYgKzIwNTUwLDcgQEAKIAkJCQk1OUE5RTdCMDExMDQ3NTg4MDBE
RkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5RTU2MEE5
MTEwNTMzNkYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTk5RTc1OTIxMTA1NUEyQTAwRDkwNEZBIC8qIEJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCNzc2RDQzRDExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCA0ZDNhODM5Li4zYjM1YzRkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcApAQCAtNDUsNiArNDUsMTEgQEAgaW50IFByaW50Q29udGV4dDo6cGFnZUNvdW50
KCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlUmVjdHMuc2l6ZSgpOwogfQogCitjb25zdCBJbnRS
ZWN0JiBQcmludENvbnRleHQ6OnBhZ2VSZWN0KGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhZ2VSZWN0c1twYWdlTnVtYmVyXTsKK30KKwogdm9pZCBQcmludENvbnRleHQ6
OmNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRl
ckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IsIGZsb2F0
JiBvdXRQYWdlSGVpZ2h0KQogewogICAgIG1fcGFnZVJlY3RzLmNsZWFyKCk7CkBAIC04Miw3ICs4
Nyw3IEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVj
dCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnCiAgICAgZmxvYXQgY3VyclBhZ2VXaWR0aCA9
IHBhZ2VXaWR0aCAvIHVzZXJTY2FsZUZhY3RvcjsKIAogICAgIC8vIGFsd2F5cyByZXR1cm4gYXQg
bGVhc3Qgb25lIHBhZ2UsIHNpbmNlIGVtcHR5IGZpbGVzIHNob3VsZCBwcmludCBhIGJsYW5rIHBh
Z2UKLSAgICBmbG9hdCBwcmludGVkUGFnZXNIZWlnaHQgPSAwLjA7CisgICAgZmxvYXQgcHJpbnRl
ZFBhZ2VzSGVpZ2h0ID0gMDsKICAgICBkbyB7CiAgICAgICAgIGZsb2F0IHByb3Bvc2VkQm90dG9t
ID0gc3RkOjptaW4oZG9jSGVpZ2h0LCBwcmludGVkUGFnZXNIZWlnaHQgKyBwYWdlSGVpZ2h0KTsK
ICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5hZGp1c3RQYWdlSGVpZ2h0KCZwcm9wb3NlZEJvdHRv
bSwgcHJpbnRlZFBhZ2VzSGVpZ2h0LCBwcm9wb3NlZEJvdHRvbSwgcHJpbnRlZFBhZ2VzSGVpZ2h0
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuaAppbmRleCAwYjNiMzAzLi5lNzZjMTFjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5o
CkBAIC0zNiw2ICszNiw3IEBAIHB1YmxpYzoKICAgICB+UHJpbnRDb250ZXh0KCk7CiAKICAgICBp
bnQgcGFnZUNvdW50KCkgY29uc3Q7CisgICAgY29uc3QgSW50UmVjdCYgcGFnZVJlY3QoaW50IHBh
Z2VOdW1iZXIpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0
UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwg
ZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdodCk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYTZmNTE0NC4uMWM0Mzg0YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklu
bGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJSZW5k
ZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAi
UmVuZGVySW5saW5lLmgiCkBAIC02MTMsNCArNjE0LDQ4IEBAIFN0cmluZyBjb3VudGVyVmFsdWVG
b3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNlKCk7
CiB9CiAKK3N0YXRpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCogZW5jbG9zaW5nQm94TW9kZWxPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisKKyAgICB3aGlsZSAob2JqZWN0ICYmICFvYmpl
Y3QtPmlzQm94TW9kZWxPYmplY3QoKSkKKyAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQo
KTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRvUmVu
ZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KTsKK30KKworaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIG5v
dCBmcmVlZCBkdXJpbmcgdGhlIGxheW91dC4KKyAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudFJl
ZihlbGVtZW50KTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKwor
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdChl
bGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIWJveCkKKyAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRvIGN1c3RvbWl6ZSB0aGVzZSB2YWx1ZXMgZnJv
bSBsYXlvdXRUZXN0Q29udHJvbGxlci4KKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcGFnZVdpZHRo
ID0gODAwOworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBwYWdlSGVpZ2h0ID0gNjAwOworCisgICAg
RmxvYXRSZWN0IHBhZ2VSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CisgICAgRnJh
bWUqIGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBQcmludENvbnRl
eHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKKyAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qu
d2lkdGgoKSk7CisgICAgZmxvYXQgYWN0dWFsUGFnZUhlaWdodCA9IDA7CisgICAgcHJpbnRDb250
ZXh0LmNvbXB1dGVQYWdlUmVjdHMocGFnZVJlY3QsIDAsIDAsIDEsIGFjdHVhbFBhZ2VIZWlnaHQp
OworCisgICAgaW50IHRvcCA9IGJveC0+b2Zmc2V0VG9wKCk7CisgICAgaW50IGxlZnQgPSBib3gt
Pm9mZnNldExlZnQoKTsKKyAgICBmb3IgKGludCBwYWdlTnVtYmVyID0gMDsgcGFnZU51bWJlciA8
IHByaW50Q29udGV4dC5wYWdlQ291bnQoKTsgcGFnZU51bWJlcisrKSB7CisgICAgICAgIGNvbnN0
IEludFJlY3QmIHBhZ2UgPSBwcmludENvbnRleHQucGFnZVJlY3QocGFnZU51bWJlcik7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAicGFnZSVkICVkeCVkKyVkKyVkIHZzICVkICVkXG4iLAorICAg
ICAgICAgICAgICAgIHBhZ2VOdW1iZXIsIHBhZ2UueCgpLCBwYWdlLnkoKSwgcGFnZS53aWR0aCgp
LCBwYWdlLmhlaWdodCgpLAorICAgICAgICAgICAgICAgIGxlZnQsIHRvcCk7CisgICAgICAgIGlm
IChwYWdlLngoKSA8PSBsZWZ0ICYmIGxlZnQgPCBwYWdlLnJpZ2h0KCkgJiYgcGFnZS55KCkgPD0g
dG9wICYmIHRvcCA8IHBhZ2UuYm90dG9tKCkpCisgICAgICAgICAgICByZXR1cm4gcGFnZU51bWJl
cjsKKyAgICB9CisgICAgcmV0dXJuIC0xOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmgKaW5kZXggYjAwZjdjOS4uYjEwMjlkOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaApAQCAtNDIsNiArNDIsOCBAQCBTdHJpbmcg
cXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKGNvbnN0IFN0cmluZyYpOwogCiBTdHJpbmcgY291
bnRlclZhbHVlRm9yRWxlbWVudChFbGVtZW50Kik7CiAKK2ludCBwYWdlTnVtYmVyRm9yRWxlbWVu
dChFbGVtZW50Kik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFJlbmRl
clRyZWVBc1RleHRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCAxNGVkZjFkLi40YzJiZjhjIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEwLTAxLTE5ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBh
IHdheSB0byBnZXQgcGFnZSBudW1iZXIgd2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NDAKKworICAgICAg
ICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDpdKToK
KwogMjAxMC0wMS0xOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlz
Yy9XZWJDb3JlU3RhdGlzdGljcy5oIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNz
LmgKaW5kZXggN2ExODlhZS4uOWNmYWQ0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLmgKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNz
LmgKQEAgLTg0LDQgKzg0LDUgQEAKIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYktpdERlYnVnKQog
LSAoTlNTdHJpbmcgKilyZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uOwogLSAoTlNT
dHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OworLSAo
aW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OwogQGVuZApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IGYyMDRkZGIuLjBjOTQwY2EgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTI1MCw0ICsyNTAsOSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVudChjb3Jl
KGVsZW1lbnQpKTsKIH0KIAorLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50
KillbGVtZW50Cit7CisgICAgcmV0dXJuIHBhZ2VOdW1iZXJGb3JFbGVtZW50KGNvcmUoZWxlbWVu
dCkpOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKaW5kZXggZjEwZTc0NS4uMDY5Mzk0NSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDEwLTAxLTE5ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJv
dmlkZSBhIHdheSB0byBnZXQgcGFnZSBudW1iZXIgd2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NDAKKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKwogMjAxMC0wMS0xOCAgQWRhbSBS
b2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIExheW91dFRlc3RDb250cm9s
bGVyIHN1cHBvcnQgZm9yIGNhbGxpbmcgbmV3IFdlYktpdCBTUEkgdG8KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlNzFj
ZDI5Li5lOTQwYjllIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00NjQsNiArNDY0LDIwIEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIG5vdGlmeURvbmVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQog
CitzdGF0aWMgSlNWYWx1ZVJlZiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gZWxlbWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgaWYgKCpleGNlcHRpb24p
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGludCBwYWdl
TnVtYmVyID0gY29udHJvbGxlci0+cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGVsZW1lbnRJZC5n
ZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHBhZ2VOdW1iZXIp
OworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBxdWV1ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGlt
cGxlbWVudGF0aW9uCkBAIC0xMjg5LDYgKzEzMDMsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAibm90aWZ5RG9u
ZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2Nh
bFJlc291cmNlIiwgcGF0aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VBbmltYXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXVzZVRy
YW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYzhkYTZhYi4uYjA0Y2ZhOSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGtlZXBXZWJIaXN0b3J5KCk7CiAg
ICAgdm9pZCBub3RpZnlEb25lKCk7CiAgICAgdm9pZCBvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJp
bmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CisgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVt
ZW50QnlJZChKU1N0cmluZ1JlZiBpZCk7CiAgICAgSlNTdHJpbmdSZWYgcGF0aFRvTG9jYWxSZXNv
dXJjZShKU0NvbnRleHRSZWYsIEpTU3RyaW5nUmVmIHVybCk7CiAgICAgdm9pZCBxdWV1ZUJhY2tO
YXZpZ2F0aW9uKGludCBob3dGYXJCYWNrd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUZvcndhcmROYXZp
Z2F0aW9uKGludCBob3dGYXJGb3J3YXJkKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGE3NGY3
YWQuLjFiYjllZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtMTQwLDYgKzE0MCwxMiBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgLy8gRklYTUU6
IGltcGxlbWVudAogfQogCitpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZChKU1N0cmluZ1JlZikKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIC0xOworfQorCiBzaXplX3QgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndlYkhpc3RvcnlJ
dGVtQ291bnQoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA1ZjAyMGZhLi5kNDE1YjlhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xNzYsNiArMTc2
LDE4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICB9
CiB9CiAKK2ludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KEpTU3RyaW5nUmVmIGlkKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9w
dENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOworICAg
IE5TU3RyaW5nICppZE5TID0gKE5TU3RyaW5nICopaWRDRi5nZXQoKTsKKworICAgIERPTUVsZW1l
bnQgKmVsZW1lbnQgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6aWRO
U107CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4g
W21haW5GcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50XTsKK30KKwogc2l6ZV90IExh
eW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICByZXR1cm4g
W1tbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldIGFsbEl0ZW1zXSBjb3VudF07CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAppbmRleCBiN2E2M2ZjLi4wOWJkNjQwIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKQEAgLTExMDQsMyArMTEwNCw4IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoSlNTdHJpCiAgICAg
cmV0dXJuIGNvdW50ZXJWYWx1ZUpTOwogfQogCitpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZikKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIC0xOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47157</attachid>
            <date>2010-01-21 16:52:32 -0800</date>
            <delta_ts>2010-01-26 22:55:49 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-33840-20100121165230.patch</filename>
            <type>text/plain</type>
            <size>23224</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZDMxMmQ2Li5lZWU1Nzc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEt
MjEgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdl
dCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoK
KyAgICAgICAgKiBwcmludGluZy9wYWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHByaW50aW5nL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwcmludGluZy9zY3JpcHQtdGVzdHMvcGFnZS1icmVhay1hbHdheXMuanM6IEFkZGVkLgor
ICAgICAgICAoY3JlYXRlUGFyYWdyYXBoKToKKwogMjAxMC0wMS0xOSAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCAwMGY4MjVlLi5i
MTE2NzBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTc4NCwzICs1Nzg0LDUgQEAg
c3ZnL3RleHQvc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IueGh0bWwKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODM1CiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5j
ZVJvb3QtZXZlbnQtYnViYmxpbmcueGh0bWwKIAorIyBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpLgorcHJpbnRpbmcvcGFnZS1icmVhay1h
bHdheXMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBjYmQ1ZTg4Li4zMWY4YzI4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMzYsNyArMzYsOCBAQCBmYXN0L2V2ZW50
cy9hdHRlbXB0LXNjcm9sbC13aXRoLW5vLXNjcm9sbGJhcnMuaHRtbAogc3ZnL2JhdGlrL3RleHQv
c21hbGxGb250cy5zdmcKIAogIyBzZWUgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAxMSAtLSBQcmludGluZyB0ZXN0cyBzaG91bGQgdXNlIEltYWdlRGlmZgot
cHJpbnRpbmcKK3ByaW50aW5nL2NvbXBvc2l0aW5nLWxheWVyLXByaW50aW5nLmh0bWwKK3ByaW50
aW5nL21lZGlhLXF1ZXJpZXMtcHJpbnQuaHRtbAogCiAjIFNraXAgYmVjYXVzZSBmaXggZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjc3MCB3YXMgcmV2ZXJ0ZWQK
IGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4u
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggYzkzMzgxZS4uYWZhMDk3YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MTAyLDMgKzUxMDIsNiBAQCBmYXN0L2Nzcy9ub24tc3Rh
bmRhcmQtY2hlY2tib3gtc2l6ZS5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzgzNAogY3NzMS9ib3hfcHJvcGVydGllcy9hY2lkX3Rlc3QuaHRtbAogZmFz
dC9mb3Jtcy90ZXh0YXJlYS1zY3JvbGxiYXItaGVpZ2h0Lmh0bWwKKworIyBJbXBsZW1lbnQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpLgorcHJpbnRpbmcv
cGFnZS1icmVhay1hbHdheXMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA5Yzdj
MTg2Li44ZjYzODZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtNDIyLDcgKzQyMiw4
IEBAIGFjY2Vzc2liaWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVudC5odG1sCiBhY2Nlc3NpYmlsaXR5
L3Zpc2libGUtZWxlbWVudHMuaHRtbAogCiAjIE5vIHN1cHBvcnQgZm9yIHByaW50LXRvLXBkZiBp
biBXaW5kb3dzIERSVAotcHJpbnRpbmcKK3ByaW50aW5nL2NvbXBvc2l0aW5nLWxheWVyLXByaW50
aW5nLmh0bWwKK3ByaW50aW5nL21lZGlhLXF1ZXJpZXMtcHJpbnQuaHRtbAogCiAjIE5vIHVwbG9h
ZCBwcm9ncmVzcyBldmVudHMgb24gd2luZG93cwogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91
cGxvYWQtb25sb2FkLWV2ZW50Lmh0bWwKQEAgLTc0MiwzICs3NDMsNiBAQCBzdmcvVzNDLVNWRy0x
LjEvZmlsdGVycy1jb252LTAxLWYuc3ZnCiAKICMgSnVzdCBuZWVkcyBwaXhlbCBhbmQgcmVuZGVy
aW5nIHJlc3VsdHMgZ2VuZXJhdGVkIGJ5IHNvbWVvbmUgd2l0aCB0aGlzIHBsYXRmb3JtOgogZmFz
dC9jc3Mvbm9uLXN0YW5kYXJkLWNoZWNrYm94LXNpemUuaHRtbAorCisjIEltcGxlbWVudCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkuCitwcmludGluZy9w
YWdlLWJyZWFrLWFsd2F5cy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdl
LWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzkxYTM1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2UtYnJlYWstYWx3YXlzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IGZvciBw
YWdlLWJyZWFrLWJlZm9yZTphbHdheXMgYW5kIHBhZ2UtYnJlYWstYWZ0ZXI6YWx3YXlzCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnZmlyc3RQYWdlJykgaXMgMAorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3NlY29uZFBhZ2UxJykgaXMgMQor
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3NlY29u
ZFBhZ2UyJykgaXMgMQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoJ3RoaXJkUGFnZScpIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLWJyZWFrLWFsd2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1h
bHdheXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Q5YWEzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMu
aHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Bh
Z2UtYnJlYWstYWx3YXlzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWNhYWM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCAr
MSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNh
bmRib3giPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcv
c2NyaXB0LXRlc3RzL3BhZ2UtYnJlYWstYWx3YXlzLmpzIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcv
c2NyaXB0LXRlc3RzL3BhZ2UtYnJlYWstYWx3YXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjFjNmU1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wcmlu
dGluZy9zY3JpcHQtdGVzdHMvcGFnZS1icmVhay1hbHdheXMuanMKQEAgLTAsMCArMSwyNCBAQAor
ZGVzY3JpcHRpb24oIlRlc3QgZm9yIHBhZ2UtYnJlYWstYmVmb3JlOmFsd2F5cyBhbmQgcGFnZS1i
cmVhay1hZnRlcjphbHdheXMiKTsKKworZnVuY3Rpb24gY3JlYXRlUGFyYWdyYXBoKGlkKQorewor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgIGVsZW1l
bnQuaWQgPSBpZDsKKyAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJmb29iYXIiKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNhbmRib3giKS5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworY3JlYXRlUGFy
YWdyYXBoKCJmaXJzdFBhZ2UiKTsKK2NyZWF0ZVBhcmFncmFwaCgic2Vjb25kUGFnZTEiKS5zdHls
ZS5wYWdlQnJlYWtCZWZvcmUgPSAiYWx3YXlzIjsKK2NyZWF0ZVBhcmFncmFwaCgic2Vjb25kUGFn
ZTIiKS5zdHlsZS5wYWdlQnJlYWtBZnRlciA9ICJhbHdheXMiOworY3JlYXRlUGFyYWdyYXBoKCJ0
aGlyZFBhZ2UiKS5zdHlsZS5wYWdlQnJlYWtCZWZvcmUgPSAiYWx3YXlzIjsKKworc2hvdWxkQmUo
ImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnZmlyc3RQYWdl
JykiLCAiMCIpOworc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZCgnc2Vjb25kUGFnZTEnKSIsICIxIik7CitzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCdzZWNvbmRQYWdlMicpIiwgIjEiKTsK
K3Nob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
J3RoaXJkUGFnZScpIiwgIjIiKTsKKworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2FuZGJveCIpKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDlhNjY0MWIuLjk3MjY1NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDEtMjEgIFNoaW5p
Y2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCBwYWdlIG51
bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAgIFRlc3Q6IHByaW50aW5nL3Bh
Z2UtYnJlYWstYWx3YXlzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uv
UHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6cGFnZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQpOgorICAgICAgICAqIHBh
Z2UvUHJpbnRDb250ZXh0Lmg6CisKIDIwMTAtMDEtMTkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9j
a0Bnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmlu
ZGV4IDc2NTk3ZGYuLjk4NTY5NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTI0Nyw2ICsyNDcsNyBAQCBfX1pO
N1dlYkNvcmUxMkljb25EYXRhYmFzZTRvcGVuRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEy
SWNvbkRhdGFiYXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlOXNldENsaWVu
dEVQTlNfMThJY29uRGF0YWJhc2VDbGllbnRFCiBfX1pON1dlYkNvcmUxMlBsdWdpbldpZGdldDE0
aW52YWxpZGF0ZVJlY3RFUktOU183SW50UmVjdEUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0
MjBwYWdlTnVtYmVyRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE2cmVwYWludFJlY3RhbmdsZUVSS05TXzdJbnRSZWN0RWIKIF9fWk43V2ViQ29yZTEy
UmVuZGVyV2lkZ2V0MTlzaG93U3Vic3RpdHV0ZUltYWdlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVJ
bWFnZUVFRQogX19aTjdXZWJDb3JlMTJTY2hlZHVsZVBhaXJDMUVQOU5TUnVuTG9vcFBLMTBfX0NG
U3RyaW5nCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJj
Yjc3ODguLmJjOWYwZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00MDc3LDYgKzQwNzcsOCBAQAogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyog
U1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5j
cHAgKi87IH07CiAJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcCAqLzsgfTsKIAkJQjVDMTEyM0MxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmggKi87IH07CisJCUI3MUZFNkRGMTEwOTFDQjMwMERBRUY3NyAvKiBQcmludENvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCNzc2RDQzRDExMDQ1Mjc1MDBCRUIwRUMgLyogUHJp
bnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovOyB9Owog
CQlCQzAwRjAwNDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8q
IERPTUZpbGUuaCAqLzsgfTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZG
RjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsKIAkJQkMwMEYwMDYwRTBBMTg1
NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJ
bnRlcm5hbC5oICovOyB9OwpAQCAtOTI3Myw2ICs5Mjc1LDggQEAKIAkJQjVBNjg0MjMwRkZBQkVB
QTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU1FMaXRlRmlsZVN5c3RlbS5jcHA7IHBhdGggPSBzcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjM5MTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUMxMTIzQTEwMkI2QzQ2MDAwOTY1NzggLyog
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRDb250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUz
IC8qIERPTUZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMg
LyogRE9NRmlsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUZpbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBGMDAwMEUwQTE4NTUw
MEZEMDRFMyAvKiBET01GaWxlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRmlsZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTQwMyw2ICsxMTQwNyw4IEBACiAJCQkJRkU4MEQ3QzAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uRXJyb3IuaWRsICovLAogCQkJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCAqLywKIAkJCQlGRTgwRDdDMzBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25PcHRpb25zLmggKi8sCisJCQkJQjc3NkQ0M0MxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50
Q29udGV4dC5jcHAgKi8sCisJCQkJQjc3NkQ0M0ExMTA0NTI1RDAwQkVCMEVDIC8qIFByaW50Q29u
dGV4dC5oICovLAogCQkJCUJDRUMwMUJBMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3BwICov
LAogCQkJCUJDRUMwMUJCMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaCAqLywKIAkJCQlCQ0VD
MDFCQzBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmlkbCAqLywKQEAgLTE4Mzc2LDYgKzE4Mzgy
LDcgQEAKIAkJCQk1OUU1NjBBNzExMDUzMzY2MDBBQTEyNTggLyogSmF2YUNsYXNzSlNDLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1OUJDMzkzRjExMDU0QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pT
Qy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRn
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDU0Myw2ICsyMDU1MCw3IEBACiAJCQkJNTlB
OUU3QjAxMTA0NzU4ODAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpTQy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1OUU1NjBBOTExMDUzMzZGMDBBQTEyNTggLyogSmF2YUNsYXNzSlNDLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTU5OUU3NTkyMTEwNTVBMkEwMEQ5MDRGQSAvKiBCcmlkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggNGQzYTgzOS4uY2Y4
MGIyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBAIGludCBQcmludENv
bnRleHQ6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZVJlY3RzLnNpemUoKTsK
IH0KIAorY29uc3QgSW50UmVjdCYgUHJpbnRDb250ZXh0OjpwYWdlUmVjdChpbnQgcGFnZU51bWJl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlUmVjdHNbcGFnZU51bWJlcl07Cit9CisKIHZv
aWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRS
ZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNj
YWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdodCkKIHsKICAgICBtX3BhZ2VSZWN0cy5jbGVh
cigpOwpAQCAtODIsNyArODcsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0
cyhjb25zdCBGbG9hdFJlY3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZwogICAgIGZsb2F0
IGN1cnJQYWdlV2lkdGggPSBwYWdlV2lkdGggLyB1c2VyU2NhbGVGYWN0b3I7CiAKICAgICAvLyBh
bHdheXMgcmV0dXJuIGF0IGxlYXN0IG9uZSBwYWdlLCBzaW5jZSBlbXB0eSBmaWxlcyBzaG91bGQg
cHJpbnQgYSBibGFuayBwYWdlCi0gICAgZmxvYXQgcHJpbnRlZFBhZ2VzSGVpZ2h0ID0gMC4wOwor
ICAgIGZsb2F0IHByaW50ZWRQYWdlc0hlaWdodCA9IDA7CiAgICAgZG8gewogICAgICAgICBmbG9h
dCBwcm9wb3NlZEJvdHRvbSA9IHN0ZDo6bWluKGRvY0hlaWdodCwgcHJpbnRlZFBhZ2VzSGVpZ2h0
ICsgcGFnZUhlaWdodCk7CiAgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+YWRqdXN0UGFnZUhlaWdo
dCgmcHJvcG9zZWRCb3R0b20sIHByaW50ZWRQYWdlc0hlaWdodCwgcHJvcG9zZWRCb3R0b20sIHBy
aW50ZWRQYWdlc0hlaWdodCk7CkBAIC0xMzQsNCArMTM5LDQ1IEBAIHZvaWQgUHJpbnRDb250ZXh0
OjplbmQoKQogICAgIG1fZnJhbWUtPnNldFByaW50aW5nKGZhbHNlLCAwLCAwLCB0cnVlKTsKIH0K
IAorc3RhdGljIFJlbmRlckJveE1vZGVsT2JqZWN0KiBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdChS
ZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKworICAgIHdoaWxlIChvYmplY3QgJiYgIW9iamVjdC0+
aXNCb3hNb2RlbE9iamVjdCgpKQorICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpOwor
ICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdG9SZW5kZXJC
b3hNb2RlbE9iamVjdChvYmplY3QpOworfQorCitpbnQgUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVy
Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxl
bWVudCBpcyBub3QgZnJlZWQgZHVyaW5nIHRoZSBsYXlvdXQuCisgICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnRSZWYoZWxlbWVudCk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CisKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gZW5jbG9zaW5nQm94TW9k
ZWxPYmplY3QoZWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFib3gpCisgICAgICAgIHJl
dHVybiAtMTsKKworICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBjdXN0b21pemUgdGhlc2Ug
dmFsdWVzIGZyb20gbGF5b3V0VGVzdENvbnRyb2xsZXIuCisgICAgc3RhdGljIGNvbnN0IGZsb2F0
IHBhZ2VXaWR0aCA9IDgwMDsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcGFnZUhlaWdodCA9IDYw
MDsKKworICAgIEZsb2F0UmVjdCBwYWdlUmVjdCgwLCAwLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQp
OworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAg
UHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CisgICAgcHJpbnRDb250ZXh0LmJlZ2lu
KHBhZ2VSZWN0LndpZHRoKCkpOworICAgIGZsb2F0IGFjdHVhbFBhZ2VIZWlnaHQgPSAwOworICAg
IHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzKHBhZ2VSZWN0LCAwLCAwLCAxLCBhY3R1YWxQ
YWdlSGVpZ2h0KTsKKworICAgIGludCB0b3AgPSBib3gtPm9mZnNldFRvcCgpOworICAgIGludCBs
ZWZ0ID0gYm94LT5vZmZzZXRMZWZ0KCk7CisgICAgZm9yIChpbnQgcGFnZU51bWJlciA9IDA7IHBh
Z2VOdW1iZXIgPCBwcmludENvbnRleHQucGFnZUNvdW50KCk7IHBhZ2VOdW1iZXIrKykgeworICAg
ICAgICBjb25zdCBJbnRSZWN0JiBwYWdlID0gcHJpbnRDb250ZXh0LnBhZ2VSZWN0KHBhZ2VOdW1i
ZXIpOworICAgICAgICBpZiAocGFnZS54KCkgPD0gbGVmdCAmJiBsZWZ0IDwgcGFnZS5yaWdodCgp
ICYmIHBhZ2UueSgpIDw9IHRvcCAmJiB0b3AgPCBwYWdlLmJvdHRvbSgpKQorICAgICAgICAgICAg
cmV0dXJuIHBhZ2VOdW1iZXI7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5oCmluZGV4IDBiM2IzMDMuLmJhY2I0ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuaAorKysgYi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkBAIC0zNiw2
ICszNyw3IEBAIHB1YmxpYzoKICAgICB+UHJpbnRDb250ZXh0KCk7CiAKICAgICBpbnQgcGFnZUNv
dW50KCkgY29uc3Q7CisgICAgY29uc3QgSW50UmVjdCYgcGFnZVJlY3QoaW50IHBhZ2VOdW1iZXIp
IGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJp
bnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNl
clNjYWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdodCk7CiAKQEAgLTQ3LDYgKzQ5LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBlbmQoKTsKIAorICAgIC8vIFVzZWQgYnkgbGF5b3V0IHRlc3Rz
LgorICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCopOworCiBwcm90
ZWN0ZWQ6CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVmVjdG9yPEludFJlY3Q+IG1fcGFnZVJl
Y3RzOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAxNGVkZjFkLi41YzZhNGQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAx
LTIxICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBn
ZXQgcGFnZSBudW1iZXIgd2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NDAKKworICAgICAgICAqIE1pc2Mv
V2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDpdKToKKwogMjAxMC0w
MS0xOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5oIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKaW5kZXgg
N2ExODlhZS4uOWNmYWQ0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLmgKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKQEAgLTg0
LDQgKzg0LDUgQEAKIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYktpdERlYnVnKQogLSAoTlNTdHJp
bmcgKilyZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uOwogLSAoTlNTdHJpbmcgKilj
b3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OworLSAoaW50KXBhZ2VO
dW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OwogQGVuZApkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IGYyMDRkZGIuLjg2YmY2ZWUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9XZWJLaXQvbWFjL01pc2Mv
V2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SWNvbkRhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QcmludENvbnRleHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJWaWV3Lmg+CiAKQEAgLTI1MCw0ICsyNTEsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKICAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVudChjb3JlKGVsZW1lbnQpKTsKIH0K
IAorLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50Cit7Cisg
ICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29yZShlbGVtZW50
KSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCBmMTBlNzQ1Li5kMTQ1Nzg2IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDEtMjEgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92
aWRlIGEgd2F5IHRvIGdldCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAocGFnZU51bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorCiAyMDEwLTAxLTE4ICBBZGFtIFJv
YmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgc3VwcG9ydCBmb3IgY2FsbGluZyBuZXcgV2ViS2l0IFNQSSB0bwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGU3MWNk
MjkuLmU5NDBiOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ2NCw2ICs0NjQsMjAgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgbm90aWZ5RG9uZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBpZiAoKmV4Y2VwdGlvbikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5
b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29u
dHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgaW50IHBhZ2VO
dW1iZXIgPSBjb250cm9sbGVyLT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoZWxlbWVudElkLmdl
dCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgcGFnZU51bWJlcik7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1w
bGVtZW50YXRpb24KQEAgLTEyODksNiArMTMwMyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJub3RpZnlEb25l
Iiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mQWN0aXZl
QW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCIsIHBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2Fs
UmVzb3VyY2UiLCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAicGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZUFuaW1hdGlvbkF0
VGltZU9uRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdXNlVHJh
bnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBjOGRhNmFiLi5iMDRjZmE5IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
QEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQga2VlcFdlYkhpc3RvcnkoKTsKICAg
ICB2b2lkIG5vdGlmeURvbmUoKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmlu
Z1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVlKTsKKyAgICBpbnQgcGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKICAgICBKU1N0cmluZ1JlZiBwYXRoVG9Mb2NhbFJlc291
cmNlKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYgdXJsKTsKICAgICB2b2lkIHF1ZXVlQmFja05h
dmlnYXRpb24oaW50IGhvd0ZhckJhY2t3YXJkKTsKICAgICB2b2lkIHF1ZXVlRm9yd2FyZE5hdmln
YXRpb24oaW50IGhvd0ZhckZvcndhcmQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggYTc0Zjdh
ZC4uMWJiOWVkYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0xNDAsNiArMTQwLDEyIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICAvLyBGSVhNRTog
aW1wbGVtZW50CiB9CiAKK2ludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gLTE7Cit9CisKIHNpemVfdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9yeUl0
ZW1Db3VudCgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDVmMDIwZmEuLmQ0MTViOWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTE3Niw2ICsxNzYs
MTggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIH0K
IH0KIAoraW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
SlNTdHJpbmdSZWYgaWQpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpZENGKEFkb3B0
Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkKSk7CisgICAg
TlNTdHJpbmcgKmlkTlMgPSAoTlNTdHJpbmcgKilpZENGLmdldCgpOworCisgICAgRE9NRWxlbWVu
dCAqZWxlbWVudCA9IFtbbWFpbkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVtZW50QnlJZDppZE5T
XTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBb
bWFpbkZyYW1lIHBhZ2VOdW1iZXJGb3JFbGVtZW50OmVsZW1lbnRdOworfQorCiBzaXplX3QgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OndlYkhpc3RvcnlJdGVtQ291bnQoKQogewogICAgIHJldHVybiBb
W1tXZWJIaXN0b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV0gYWxsSXRlbXNdIGNvdW50XTsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCmluZGV4IGI3YTYzZmMuLjA5YmQ2NDAgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcApAQCAtMTEwNCwzICsxMTA0LDggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91
dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChKU1N0cmkKICAgICBy
ZXR1cm4gY291bnRlclZhbHVlSlM7CiB9CiAKK2ludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gLTE7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47500</attachid>
            <date>2010-01-26 22:55:55 -0800</date>
            <delta_ts>2010-01-28 19:48:00 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-33840-20100126225553.patch</filename>
            <type>text/plain</type>
            <size>28714</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDNkNDM4Li5iZTQyNmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEt
MjYgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdl
dCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoK
KyAgICAgICAgKiBwcmludGluZy9wYWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcHJpbnRpbmcvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3NjcmlwdC10ZXN0cy9wYWdlLWJyZWFrLWFsd2F5cy5qczog
QWRkZWQuCisgICAgICAgIChjcmVhdGVQYXJhZ3JhcGgpOgorICAgICAgICAqIHByaW50aW5nL3Nj
cmlwdC10ZXN0cy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5qczogQWRkZWQuCisgICAgICAgIChj
cmVhdGVQYXJhZ3JhcGgpOgorCiAyMDEwLTAxLTI2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhh
dXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDQ1NTA5NmEuLjcwZTAzMTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC01NzgxLDMgKzU3ODEsNyBAQCBzY3JvbGxiYXJzL3Njcm9s
bGJhci1taWRkbGVjbGljay1ub3Bhc3RlLmh0bWwKIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzQwODYKIG1lZGlhL3ZpZGVvLXJldmVyc2UtcGxheS1kdXJhdGlv
bi5odG1sCisKKyMgSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoKS4KK3ByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWwKK3ByaW50aW5n
L3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5k
ZXggYmQyMGIxZi4uMjQ2MTQzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTM2LDcg
KzM2LDggQEAgZmFzdC9ldmVudHMvYXR0ZW1wdC1zY3JvbGwtd2l0aC1uby1zY3JvbGxiYXJzLmh0
bWwKIHN2Zy9iYXRpay90ZXh0L3NtYWxsRm9udHMuc3ZnCiAKICMgc2VlIGJ1ZyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTEgLS0gUHJpbnRpbmcgdGVzdHMgc2hv
dWxkIHVzZSBJbWFnZURpZmYKLXByaW50aW5nCitwcmludGluZy9jb21wb3NpdGluZy1sYXllci1w
cmludGluZy5odG1sCitwcmludGluZy9tZWRpYS1xdWVyaWVzLXByaW50Lmh0bWwKIAogIyBTa2lw
IGJlY2F1c2UgZml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjY3NzAgd2FzIHJldmVydGVkCiBjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9z
aXRlZC1pbnNpZGUtaGlkZGVuLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDBhNWYw
ZjMuLmQ5ZDhkNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtNTExMCwzICs1MTEwLDcg
QEAgaHR0cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1tYXNrLmh0bWwKIAogIyBza2lwIEdlb2xv
Y2F0aW9uIHRlc3RzCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZ2VvbG9jYXRp
b24uaHRtbAorCisjIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZv
ckVsZW1lbnRCeUlkKCkuCitwcmludGluZy9wYWdlLWJyZWFrLWFsd2F5cy5odG1sCitwcmludGlu
Zy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmlu
ZGV4IDM4YjM2ZGMuLmZkYmRjMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC00MjEs
NyArNDIxLDggQEAgYWNjZXNzaWJpbGl0eS90cmFuc2Zvcm1lZC1lbGVtZW50Lmh0bWwKIGFjY2Vz
c2liaWxpdHkvdmlzaWJsZS1lbGVtZW50cy5odG1sCiAKICMgTm8gc3VwcG9ydCBmb3IgcHJpbnQt
dG8tcGRmIGluIFdpbmRvd3MgRFJUCi1wcmludGluZworcHJpbnRpbmcvY29tcG9zaXRpbmctbGF5
ZXItcHJpbnRpbmcuaHRtbAorcHJpbnRpbmcvbWVkaWEtcXVlcmllcy1wcmludC5odG1sCiAKICMg
Tm8gdXBsb2FkIHByb2dyZXNzIGV2ZW50cyBvbiB3aW5kb3dzCiBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3VwbG9hZC1vbmxvYWQtZXZlbnQuaHRtbApAQCAtNzM2LDMgKzczNyw3IEBAIGZhc3Qv
Y3NzL25vbi1zdGFuZGFyZC1jaGVja2JveC1zaXplLmh0bWwKIAogIyBTa2lwIEdlb2xvY2F0aW9u
IHVudGlsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDAyNSBpcyBs
YW5kZWQKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1nZW9sb2NhdGlvbi5odG1s
CisKKyMgSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoKS4KK3ByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWwKK3ByaW50aW5nL3BhZ2VO
dW1lckZvckVsZW1lbnRCeUlkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5n
L3BhZ2UtYnJlYWstYWx3YXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2UtYnJlYWstYWx3YXlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43OTFhMzU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcv
cGFnZS1icmVhay1hbHdheXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgZm9y
IHBhZ2UtYnJlYWstYmVmb3JlOmFsd2F5cyBhbmQgcGFnZS1icmVhay1hZnRlcjphbHdheXMKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCdmaXJzdFBhZ2UnKSBpcyAwCitQQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnc2Vjb25kUGFnZTEnKSBpcyAx
CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnc2Vj
b25kUGFnZTInKSBpcyAxCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZCgndGhpcmRQYWdlJykgaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5n
L3BhZ2UtYnJlYWstYWx3YXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLWJyZWFr
LWFsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDlhYTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLWJyZWFrLWFsd2F5
cy5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
cGFnZS1icmVhay1hbHdheXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJ
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExMzgx
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1lckZvckVs
ZW1lbnRCeUlkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IGZvciBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoJ2ZpcnN0UGFnZScsIDEwMDAsIDEwMDApIGlzIDAKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCdzZWNvbmRQYWdlJywgMTAwMCwg
MTAwMCkgaXMgMQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoJ3RoaXJkUGFnZScsIDEwMDAsIDEwMDApIGlzIDIKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCd0aGlyZFBhZ2UyJywgMTAwMCwgMTAwMCkg
aXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYWU5OGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5odG1s
CkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcGFnZU51
bWVyRm9yRWxlbWVudEJ5SWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Y2FhYzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbApAQCAtMCww
ICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0i
c2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGlu
Zy9zY3JpcHQtdGVzdHMvcGFnZS1icmVhay1hbHdheXMuanMgYi9MYXlvdXRUZXN0cy9wcmludGlu
Zy9zY3JpcHQtdGVzdHMvcGFnZS1icmVhay1hbHdheXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWM2ZTVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3By
aW50aW5nL3NjcmlwdC10ZXN0cy9wYWdlLWJyZWFrLWFsd2F5cy5qcwpAQCAtMCwwICsxLDI0IEBA
CitkZXNjcmlwdGlvbigiVGVzdCBmb3IgcGFnZS1icmVhay1iZWZvcmU6YWx3YXlzIGFuZCBwYWdl
LWJyZWFrLWFmdGVyOmFsd2F5cyIpOworCitmdW5jdGlvbiBjcmVhdGVQYXJhZ3JhcGgoaWQpCit7
CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgZWxl
bWVudC5pZCA9IGlkOworICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoImZvb2JhciIpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2FuZGJveCIp
LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQorCitjcmVhdGVQ
YXJhZ3JhcGgoImZpcnN0UGFnZSIpOworY3JlYXRlUGFyYWdyYXBoKCJzZWNvbmRQYWdlMSIpLnN0
eWxlLnBhZ2VCcmVha0JlZm9yZSA9ICJhbHdheXMiOworY3JlYXRlUGFyYWdyYXBoKCJzZWNvbmRQ
YWdlMiIpLnN0eWxlLnBhZ2VCcmVha0FmdGVyID0gImFsd2F5cyI7CitjcmVhdGVQYXJhZ3JhcGgo
InRoaXJkUGFnZSIpLnN0eWxlLnBhZ2VCcmVha0JlZm9yZSA9ICJhbHdheXMiOworCitzaG91bGRC
ZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCdmaXJzdFBh
Z2UnKSIsICIwIik7CitzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZU51bWJlckZv
ckVsZW1lbnRCeUlkKCdzZWNvbmRQYWdlMScpIiwgIjEiKTsKK3Nob3VsZEJlKCJsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3NlY29uZFBhZ2UyJykiLCAiMSIp
Oworc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZCgndGhpcmRQYWdlJykiLCAiMiIpOworCitkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzYW5kYm94IikpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9w
YWdlTnVtZXJGb3JFbGVtZW50QnlJZC5qcyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10
ZXN0cy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44N2Q4OGVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRp
bmcvc2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzCkBAIC0wLDAgKzEsMzEg
QEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVy
Rm9yRWxlbWVudEJ5SWQoKSIpOworCitmdW5jdGlvbiBjcmVhdGVQYXJhZ3JhcGgoaWQpCit7Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVt
ZW50LmlkID0gaWQ7CisgICAgZWxlbWVudC53aWR0aCA9IDEwMDsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2FuZGJveCIpLmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBl
bGVtZW50OworfQorCit2YXIgZmlyc3RQYWdlID0gY3JlYXRlUGFyYWdyYXBoKCJmaXJzdFBhZ2Ui
KTsKK2ZpcnN0UGFnZS5zdHlsZS5oZWlnaHQgPSAxMDAwOworCit2YXIgc2Vjb25kUGFnZSA9IGNy
ZWF0ZVBhcmFncmFwaCgic2Vjb25kUGFnZSIpOworc2Vjb25kUGFnZS5zdHlsZS5oZWlnaHQgPSAx
MDAwOworCit2YXIgdGhpcmRQYWdlID0gY3JlYXRlUGFyYWdyYXBoKCJ0aGlyZFBhZ2UiKTsKK3Ro
aXJkUGFnZS5zdHlsZS5oZWlnaHQgPSAxMDA7CisKK3ZhciB0aGlyZFBhZ2UyID0gY3JlYXRlUGFy
YWdyYXBoKCJ0aGlyZFBhZ2UyIik7Cit0aGlyZFBhZ2UyLnN0eWxlLmhlaWdodCA9IDcwMDsKKwor
c2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgn
Zmlyc3RQYWdlJywgMTAwMCwgMTAwMCkiLCAiMCIpOworc2hvdWxkQmUoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnc2Vjb25kUGFnZScsIDEwMDAsIDEwMDAp
IiwgIjEiKTsKK3Nob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoJ3RoaXJkUGFnZScsIDEwMDAsIDEwMDApIiwgIjIiKTsKK3Nob3VsZEJlKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3RoaXJkUGFnZTInLCAx
MDAwLCAxMDAwKSIsICIyIik7CisKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNhbmRib3giKSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA0NDdkNGU1Li4xNDZmNDhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTAxLTI2ICBTaGluaWNo
aXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBnZXQgcGFnZSBudW1i
ZXIgd2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NDAKKworICAgICAgICBUZXN0OiBwcmludGluZy9wYWdl
LWJyZWFrLWFsd2F5cy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1By
aW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VSZWN0
KTogQWRkZWQgYSBnZXR0ZXIgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRl
eHQ6OmNvbXB1dGVQYWdlUmVjdHMpOiBNb3ZlIGl0cyBsb2dpYyBpbnRvIGNvbXB1dGVQYWdlUmVj
dHNXaXRoUGFnZVNpemUuCisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQ
YWdlUmVjdHNXaXRoUGFnZVNpemUpOiBGYWN0b3JlZCBvdXQgZnJvbSBjb21wdXRlUGFnZVJlY3Rz
IGZvciBwYWdlTnVtYmVyRm9yRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0Jv
eE1vZGVsT2JqZWN0KTogQWRkZWQgZm9yIHBhZ2VOdW1iZXJGb3JFbGVtZW50LgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudCk6IEFkZGVkIGZvciB0
ZXN0aW5nLgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0Lmg6CisKIDIwMTAtMDEtMjYgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAgYi9XZWJD
b3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggZTIzNDg2OC4uNjE2ODUyNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cApA
QCAtMjQ5LDYgKzI0OSw3IEBAIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlNG9wZW5FUktOU182
U3RyaW5nRQogX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2U1Y2xvc2VFdgogX19aTjdXZWJDb3Jl
MTJJY29uRGF0YWJhc2U5c2V0Q2xpZW50RVBOU18xOEljb25EYXRhYmFzZUNsaWVudEUKIF9fWk43
V2ViQ29yZTEyUGx1Z2luV2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQorX19a
TjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50RVBOU183RWxlbWVu
dEVmZgogX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU183
SW50UmVjdEViCiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDE5c2hvd1N1YnN0aXR1dGVJbWFn
ZUVOM1dURjEwUGFzc1JlZlB0cklOU181SW1hZ2VFRUUKIF9fWk43V2ViQ29yZTEyU2NoZWR1bGVQ
YWlyQzFFUDlOU1J1bkxvb3BQSzEwX19DRlN0cmluZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4MTkxOWQ4Li5iZjBiYmFiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA5OSw2ICs0MDk5LDggQEAKIAkJQjVB
Njg0MjQwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0MjMwRkZBQkVBQTAwRDI0
Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlCNUMxMTIzQjEwMkI2QzQ2MDAw
OTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyog
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi87IH07CiAJCUI1QzExMjNDMTAyQjZDNDYw
MDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUMxMTIzQTEwMkI2QzQ2MDAwOTY1NzggLyog
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovOyB9OworCQlCNzFGRTZERjExMDkxQ0IzMDBE
QUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQjc3NkQ0
M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUzIC8qIERP
TUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi87IH07CiAJCUJDMDBGMDA1MEUw
QTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0g
Ki87IH07CiAJCUJDMDBGMDA2MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBGMDAwMEUw
QTE4NTUwMEZEMDRFMyAvKiBET01GaWxlSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTkzMjQsNiArOTMy
Niw4IEBACiAJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0ZUZpbGVTeXN0ZW0u
Y3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVD
MTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMg
LyogUHJpbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNzc2RDQzQzExMDQ1Mjc1
MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01GaWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzAwRjAwMDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZpbGVJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0NzksNiArMTE0ODMsOCBAQAogCQkJCUZFODBEN0Mw
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCAqLywKIAkJCQlGRTgwRDdDMTBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi8sCiAJCQkJRkU4MEQ3
QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovLAorCQkJCUI3NzZENDND
MTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAorCQkJCUI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQlCQ0VDMDFCQTBDMjc0REFD
MDA5RjRFQzkgLyogU2NyZWVuLmNwcCAqLywKIAkJCQlCQ0VDMDFCQjBDMjc0REFDMDA5RjRFQzkg
LyogU2NyZWVuLmggKi8sCiAJCQkJQkNFQzAxQkMwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5p
ZGwgKi8sCkBAIC0xODQ4Miw2ICsxODQ4OCw3IEBACiAJCQkJOTNDNEY2RUIxMTA4RjlBNTAwOTlE
MERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MkZD
QUM0MTEwOTI3Q0UwMENDNDgyMSAvKiBKU1NWR0NvbnRleHRDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTlFODQyNjYxMTA5RTVBMjAwMDMwNUFEIC8qIEpOSUJyaWRnZUpTQy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yMDY2MSw2ICsyMDY2OCw4IEBACiAJCQkJNTlCNTk3NzMxMTA4NjU2
QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0M0RjZFQTEx
MDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1OUU4NDI2ODExMDlFNUFFMDAwMzA1QUQgLyogSk5JQnJpZGdlSlNDLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTU5OUU3NTkyMTEwNTVBMkEwMEQ5MDRGQSAvKiBCcmlkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggNGQzYTgzOS4uOTE0
MWQ1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBAIGludCBQcmludENv
bnRleHQ6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZVJlY3RzLnNpemUoKTsK
IH0KIAorY29uc3QgSW50UmVjdCYgUHJpbnRDb250ZXh0OjpwYWdlUmVjdChpbnQgcGFnZU51bWJl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlUmVjdHNbcGFnZU51bWJlcl07Cit9CisKIHZv
aWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRS
ZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNj
YWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdodCkKIHsKICAgICBtX3BhZ2VSZWN0cy5jbGVh
cigpOwpAQCAtNjAsMTEgKzY1LDYgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVj
dHMoY29uc3QgRmxvYXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWcKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2VyU2NhbGVGYWN0b3IgPD0gMCkgewotICAgICAg
ICBMT0dfRVJST1IoInVzZXJTY2FsZUZhY3RvciBoYXMgYmFkIHZhbHVlICUuMmYiLCB1c2VyU2Nh
bGVGYWN0b3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZmxvYXQgcmF0aW8gPSBw
cmludFJlY3QuaGVpZ2h0KCkgLyBwcmludFJlY3Qud2lkdGgoKTsKIAogICAgIGZsb2F0IHBhZ2VX
aWR0aCAgPSAoZmxvYXQpcm9vdC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpOwpAQCAtNzcsMTIgKzc3
LDI5IEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVj
dCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCwg
dXNlclNjYWxlRmFjdG9yKTsKK30KKwordm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVj
dHNXaXRoUGFnZVNpemUoZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0LCBmbG9hdCB1
c2VyU2NhbGVGYWN0b3IpCit7CisgICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyht
X2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJlcigpKTsKKworICAgIGlmICghcm9vdCkgeworICAg
ICAgICBMT0dfRVJST1IoImRvY3VtZW50IHRvIGJlIHByaW50ZWQgaGFzIG5vIHJlbmRlcmVyIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodXNlclNjYWxlRmFjdG9yIDw9IDAp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJ1c2VyU2NhbGVGYWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJm
IiwgdXNlclNjYWxlRmFjdG9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGZsb2F0
IGN1cnJQYWdlSGVpZ2h0ID0gcGFnZUhlaWdodCAvIHVzZXJTY2FsZUZhY3RvcjsKICAgICBmbG9h
dCBkb2NIZWlnaHQgPSByb290LT5sYXllcigpLT5oZWlnaHQoKTsKICAgICBmbG9hdCBjdXJyUGFn
ZVdpZHRoID0gcGFnZVdpZHRoIC8gdXNlclNjYWxlRmFjdG9yOwogCiAgICAgLy8gYWx3YXlzIHJl
dHVybiBhdCBsZWFzdCBvbmUgcGFnZSwgc2luY2UgZW1wdHkgZmlsZXMgc2hvdWxkIHByaW50IGEg
YmxhbmsgcGFnZQotICAgIGZsb2F0IHByaW50ZWRQYWdlc0hlaWdodCA9IDAuMDsKKyAgICBmbG9h
dCBwcmludGVkUGFnZXNIZWlnaHQgPSAwOwogICAgIGRvIHsKICAgICAgICAgZmxvYXQgcHJvcG9z
ZWRCb3R0b20gPSBzdGQ6Om1pbihkb2NIZWlnaHQsIHByaW50ZWRQYWdlc0hlaWdodCArIHBhZ2VI
ZWlnaHQpOwogICAgICAgICBtX2ZyYW1lLT52aWV3KCktPmFkanVzdFBhZ2VIZWlnaHQoJnByb3Bv
c2VkQm90dG9tLCBwcmludGVkUGFnZXNIZWlnaHQsIHByb3Bvc2VkQm90dG9tLCBwcmludGVkUGFn
ZXNIZWlnaHQpOwpAQCAtMTM0LDQgKzE1MSw0MCBAQCB2b2lkIFByaW50Q29udGV4dDo6ZW5kKCkK
ICAgICBtX2ZyYW1lLT5zZXRQcmludGluZyhmYWxzZSwgMCwgMCwgdHJ1ZSk7CiB9CiAKK3N0YXRp
YyBSZW5kZXJCb3hNb2RlbE9iamVjdCogZW5jbG9zaW5nQm94TW9kZWxPYmplY3QoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCit7CisKKyAgICB3aGlsZSAob2JqZWN0ICYmICFvYmplY3QtPmlzQm94TW9k
ZWxPYmplY3QoKSkKKyAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKKyAgICBpZiAo
IW9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxP
YmplY3Qob2JqZWN0KTsKK30KKworaW50IFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1l
bnQoRWxlbWVudCogZWxlbWVudCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQor
eworICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyBub3QgZnJlZWQgZHVyaW5nIHRoZSBs
YXlvdXQuCisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRSZWYoZWxlbWVudCk7CisgICAgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYm94ID0gZW5jbG9zaW5nQm94TW9kZWxPYmplY3QoZWxlbWVudC0+cmVuZGVyZXIoKSk7
CisgICAgaWYgKCFib3gpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KDAs
IDAsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CisgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4
dChmcmFtZSk7CisgICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCkpOworICAg
IHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHBhZ2VXaWR0aCwgcGFn
ZUhlaWdodCwgMSk7CisKKyAgICBpbnQgdG9wID0gYm94LT5vZmZzZXRUb3AoKTsKKyAgICBpbnQg
bGVmdCA9IGJveC0+b2Zmc2V0TGVmdCgpOworICAgIGZvciAoaW50IHBhZ2VOdW1iZXIgPSAwOyBw
YWdlTnVtYmVyIDwgcHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOyBwYWdlTnVtYmVyKyspIHsKKyAg
ICAgICAgY29uc3QgSW50UmVjdCYgcGFnZSA9IHByaW50Q29udGV4dC5wYWdlUmVjdChwYWdlTnVt
YmVyKTsKKyAgICAgICAgaWYgKHBhZ2UueCgpIDw9IGxlZnQgJiYgbGVmdCA8IHBhZ2UucmlnaHQo
KSAmJiBwYWdlLnkoKSA8PSB0b3AgJiYgdG9wIDwgcGFnZS5ib3R0b20oKSkKKyAgICAgICAgICAg
IHJldHVybiBwYWdlTnVtYmVyOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuaAppbmRleCAwYjNiMzAzLi4yZDk2ZTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMzYs
NiArMzcsNyBAQCBwdWJsaWM6CiAgICAgflByaW50Q29udGV4dCgpOwogCiAgICAgaW50IHBhZ2VD
b3VudCgpIGNvbnN0OworICAgIGNvbnN0IEludFJlY3QmIHBhZ2VSZWN0KGludCBwYWdlTnVtYmVy
KSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBGbG9hdFJlY3QmIHBy
aW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWlnaHQsIGZsb2F0IHVz
ZXJTY2FsZUZhY3RvciwgZmxvYXQmIG91dFBhZ2VIZWlnaHQpOwogCkBAIC00Nyw3ICs0OSwxMiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGVuZCgpOwogCisgICAgLy8gVXNlZCBieSBsYXlvdXQgdGVz
dHMuCisgICAgc3RhdGljIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudChFbGVtZW50KiwgZmxvYXQg
cGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKKwogcHJvdGVjdGVkOgorICAgIHZvaWQgY29t
cHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWln
aHQsIGZsb2F0IHVzZXJTY2FsZUZhY3Rvcik7CisKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBW
ZWN0b3I8SW50UmVjdD4gbV9wYWdlUmVjdHM7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxNmRhNzAzLi44MTkxYWQ4IDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAxLTI2ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFq
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBnZXQgcGFnZSBudW1iZXIgd2l0aCBsYXlvdXRUZXN0
Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4NDAKKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBwYWdlTnVt
YmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aDpdKToKKwogMjAxMC0wMS0yNSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZlYXR1cmVsZXNzIGJ1
aWxkIGZpeGVzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNz
LmggYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCA3YTE4OWFlLi4y
MDY4ZjI2IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAor
KysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBjb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTg0LDQgKzg0LDUgQEAKIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYktpdERl
YnVnKQogLSAoTlNTdHJpbmcgKilyZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uOwog
LSAoTlNTdHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50
OworLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OihmbG9h
dClwYWdlV2lkdGg6KGZsb2F0KXBhZ2VIZWlnaHQ7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0
YXRpc3RpY3MubW0KaW5kZXggZjIwNGRkYi4uMzUyY2MxNCAxMDA2NDQKLS0tIGEvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JY29uRGF0
YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGFnZUNhY2hlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZp
ZXcuaD4KIApAQCAtMjUwLDQgKzI1MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAg
IHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50KGNvcmUoZWxlbWVudCkpOwogfQogCistIChp
bnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VX
aWR0aDooZmxvYXQpcGFnZUhlaWdodAoreworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50KGNvcmUoZWxlbWVudCksIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7Cit9
CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwppbmRleCA0NDI3YTlkLi5mYzk5ZDgwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDEtMjYgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEg
d2F5IHRvIGdldCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAocGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorCiAyMDEwLTAxLTI1ICBDaHJpcyBKZXJkb25l
ayAgPGNqZXJkb25la0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNoaW5pY2hp
cm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGU3MWNkMjkuLmM5MWZmNWUgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ2NCw2
ICs0NjQsMzQgQEAgc3RhdGljIEpTVmFsdWVSZWYgbm90aWZ5RG9uZUNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1iZXJG
b3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBmbG9hdCBwYWdlV2lkdGggPSA5ODI7CisgICAgZmxvYXQgcGFnZUhlaWdodCA9IDEyOTE7Cisg
ICAgc3dpdGNoIChhcmd1bWVudENvdW50KSB7CisgICAgY2FzZSAxOgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIDM6CisgICAgICAgIHBhZ2VXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0PihKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICAgICAg
aWYgKCpleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisgICAgICAgIHBhZ2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGlm
ICgqZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgfQorCisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGVsZW1lbnRJZChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBh
cmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IGNv
bnRyb2xsZXItPnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChlbGVtZW50SWQuZ2V0KCksIHBhZ2VX
aWR0aCwgcGFnZUhlaWdodCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQs
IHBhZ2VOdW1iZXIpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBxdWV1ZUJhY2tOYXZpZ2F0aW9u
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMg
JiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xMjg5LDYgKzEzMTcsNyBAQCBKU1N0YXRpY0Z1
bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAg
eyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZl
cmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1
c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRp
b25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYzhkYTZhYi4u
NjQ1NDFiMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGtlZXBXZWJI
aXN0b3J5KCk7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAgICAgdm9pZCBvdmVycmlkZVByZWZl
cmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CisgICAgaW50IHBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9h
dCBwYWdlSGVpZ2h0KTsKICAgICBKU1N0cmluZ1JlZiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTQ29u
dGV4dFJlZiwgSlNTdHJpbmdSZWYgdXJsKTsKICAgICB2b2lkIHF1ZXVlQmFja05hdmlnYXRpb24o
aW50IGhvd0ZhckJhY2t3YXJkKTsKICAgICB2b2lkIHF1ZXVlRm9yd2FyZE5hdmlnYXRpb24oaW50
IGhvd0ZhckZvcndhcmQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggYTc0ZjdhZC4uYmFkMDlm
YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0xNDAsNiArMTQwLDEyIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CiB9CiAKK2ludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KEpTU3RyaW5nUmVmLCBmbG9hdCwgZmxvYXQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiAtMTsKK30KKwogc2l6ZV90IExheW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0
b3J5SXRlbUNvdW50KCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0g
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KaW5kZXggNWYwMjBmYS4uOGQ0NTU2MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTc2LDYg
KzE3NiwxOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjprZWVwV2ViSGlzdG9yeSgpCiAg
ICAgfQogfQogCitpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50
QnlJZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQor
eworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOworICAgIE5TU3RyaW5nICppZE5TID0g
KE5TU3RyaW5nICopaWRDRi5nZXQoKTsKKworICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbW21h
aW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6aWROU107CisgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gW21haW5GcmFtZSBwYWdlTnVt
YmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aDpwYWdlSGVpZ2h0XTsKK30KKwogc2l6ZV90
IExheW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICByZXR1
cm4gW1tbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldIGFsbEl0ZW1zXSBjb3VudF07
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAppbmRleCBiN2E2M2ZjLi40ZjVlOTI1IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKQEAgLTExMDQsMyArMTEwNCw4IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoSlNTdHJpCiAg
ICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUpTOwogfQogCitpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiwgZmxvYXQsIGZsb2F0KQorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gLTE7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47668</attachid>
            <date>2010-01-28 19:48:07 -0800</date>
            <delta_ts>2010-02-01 15:33:09 -0800</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-33840-20100128194805.patch</filename>
            <type>text/plain</type>
            <size>29264</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjNlYmQ5Li44YWYxODY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEt
MjggIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdl
dCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoK
KyAgICAgICAgKiBwcmludGluZy9wYWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcHJpbnRpbmcvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3NjcmlwdC10ZXN0cy9wYWdlLWJyZWFrLWFsd2F5cy5qczog
QWRkZWQuCisgICAgICAgIChjcmVhdGVQYXJhZ3JhcGgpOgorICAgICAgICAqIHByaW50aW5nL3Nj
cmlwdC10ZXN0cy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5qczogQWRkZWQuCisgICAgICAgIChj
cmVhdGVQYXJhZ3JhcGgpOgorCiAyMDEwLTAxLTI4ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxv
d3NraS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCmluZGV4IDg1ODlkOGYuLjMxMjc4NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9T
a2lwcGVkCkBAIC01Nzg1LDMgKzU3ODUsMTAgQEAgc2Nyb2xsYmFycy9zY3JvbGxiYXItbWlkZGxl
Y2xpY2stbm9wYXN0ZS5odG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0MjQ2CiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZy
YW1lcy5odG1sCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0
MDg2CittZWRpYS92aWRlby1yZXZlcnNlLXBsYXktZHVyYXRpb24uaHRtbAorCisjIEltcGxlbWVu
dCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkuCitwcmlu
dGluZy9wYWdlLWJyZWFrLWFsd2F5cy5odG1sCitwcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50
QnlJZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDQxMWZmYzYuLjg3ZDcxM2Qg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0zNiw3ICszNiw4IEBAIGZhc3QvZXZlbnRz
L2F0dGVtcHQtc2Nyb2xsLXdpdGgtbm8tc2Nyb2xsYmFycy5odG1sCiBzdmcvYmF0aWsvdGV4dC9z
bWFsbEZvbnRzLnN2ZwogCiAjIHNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMDExIC0tIFByaW50aW5nIHRlc3RzIHNob3VsZCB1c2UgSW1hZ2VEaWZmCi1w
cmludGluZworcHJpbnRpbmcvY29tcG9zaXRpbmctbGF5ZXItcHJpbnRpbmcuaHRtbAorcHJpbnRp
bmcvbWVkaWEtcXVlcmllcy1wcmludC5odG1sCiAKICMgU2tpcCBiZWNhdXNlIGZpeCBmb3IgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NzcwIHdhcyByZXZlcnRlZAog
Y29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBiYTA4ZjRmLi41NTRhNjU4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTUxMTUsMyArNTExNSw3IEBAIGh0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC0zMDcucGwKICMgc21hbGwgY2FwcyB2cy4gbm9ybWFsIHRleHQKICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0Mjg2CiBjc3MyLjEvdDE1MDUtYzUy
NC1mb250LXZhci0wMC1iLmh0bWwKKworIyBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpLgorcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMu
aHRtbAorcHJpbnRpbmcvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAppbmRleCAyMWI3N2FmLi43NjQwZWFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZApAQCAtNDIxLDcgKzQyMSw4IEBAIGFjY2Vzc2liaWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVu
dC5odG1sCiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtZWxlbWVudHMuaHRtbAogCiAjIE5vIHN1cHBv
cnQgZm9yIHByaW50LXRvLXBkZiBpbiBXaW5kb3dzIERSVAotcHJpbnRpbmcKK3ByaW50aW5nL2Nv
bXBvc2l0aW5nLWxheWVyLXByaW50aW5nLmh0bWwKK3ByaW50aW5nL21lZGlhLXF1ZXJpZXMtcHJp
bnQuaHRtbAogCiAjIE5vIHVwbG9hZCBwcm9ncmVzcyBldmVudHMgb24gd2luZG93cwogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC91cGxvYWQtb25sb2FkLWV2ZW50Lmh0bWwKQEAgLTczOSwzICs3
NDAsNyBAQCBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZ2VvbG9jYXRpb24uaHRt
bAogIyBOZWVkcyB0byBwYXNzIGNvb2tpZXMgdG8gdGhlIG1lZGlhIHBsYXllcgogIyBTZWUgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5NTQKIGh0dHAvdGVzdHMvbWVk
aWEvdmlkZW8tY29va2llLmh0bWwKKworIyBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpLgorcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMu
aHRtbAorcHJpbnRpbmcvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MWEzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wcmludGluZy9wYWdlLWJyZWFrLWFsd2F5cy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorVGVzdCBmb3IgcGFnZS1icmVhay1iZWZvcmU6YWx3YXlzIGFuZCBwYWdlLWJy
ZWFrLWFmdGVyOmFsd2F5cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBs
YXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ2ZpcnN0UGFnZScp
IGlzIDAKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KCdzZWNvbmRQYWdlMScpIGlzIDEKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZU51bWJl
ckZvckVsZW1lbnRCeUlkKCdzZWNvbmRQYWdlMicpIGlzIDEKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCd0aGlyZFBhZ2UnKSBpcyAyCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1hbHdheXMuaHRtbCBiL0xheW91dFRlc3Rz
L3ByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmNkOWFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50
aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9wYWdlLWJyZWFrLWFsd2F5cy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VO
dW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2VOdW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYTEzODFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMg
QEAKK1Rlc3QgZm9yIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZCgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgnZmlyc3RQYWdlJywgMTAwMCwgMTAwMCkg
aXMgMAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
J3NlY29uZFBhZ2UnLCAxMDAwLCAxMDAwKSBpcyAxCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgndGhpcmRQYWdlJywgMTAwMCwgMTAwMCkgaXMgMgor
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3RoaXJk
UGFnZTInLCAxMDAwLCAxMDAwKSBpcyAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFn
ZU51bWVyRm9yRWxlbWVudEJ5SWQuaHRtbCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1l
ckZvckVsZW1lbnRCeUlkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MGRhZTk4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1l
ckZvckVsZW1lbnRCeUlkLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3Njcmlw
dC10ZXN0cy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3Rz
L1RFTVBMQVRFLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljYWFj
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9U
RU1QTEFURS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pT
X0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9wYWdlLWJyZWFrLWFsd2F5cy5qcyBi
L0xheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9wYWdlLWJyZWFrLWFsd2F5cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzZlNWQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL3BhZ2UtYnJlYWstYWx3YXlz
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBwYWdlLWJyZWFrLWJl
Zm9yZTphbHdheXMgYW5kIHBhZ2UtYnJlYWstYWZ0ZXI6YWx3YXlzIik7CisKK2Z1bmN0aW9uIGNy
ZWF0ZVBhcmFncmFwaChpZCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInAiKTsKKyAgICBlbGVtZW50LmlkID0gaWQ7CisgICAgZWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiZm9vYmFyIikpOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzYW5kYm94IikuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgcmV0dXJuIGVs
ZW1lbnQ7Cit9CisKK2NyZWF0ZVBhcmFncmFwaCgiZmlyc3RQYWdlIik7CitjcmVhdGVQYXJhZ3Jh
cGgoInNlY29uZFBhZ2UxIikuc3R5bGUucGFnZUJyZWFrQmVmb3JlID0gImFsd2F5cyI7CitjcmVh
dGVQYXJhZ3JhcGgoInNlY29uZFBhZ2UyIikuc3R5bGUucGFnZUJyZWFrQWZ0ZXIgPSAiYWx3YXlz
IjsKK2NyZWF0ZVBhcmFncmFwaCgidGhpcmRQYWdlIikuc3R5bGUucGFnZUJyZWFrQmVmb3JlID0g
ImFsd2F5cyI7CisKK3Nob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoJ2ZpcnN0UGFnZScpIiwgIjAiKTsKK3Nob3VsZEJlKCJsYXlvdXRUZXN0Q29u
dHJvbGxlci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoJ3NlY29uZFBhZ2UxJykiLCAiMSIpOwor
c2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgn
c2Vjb25kUGFnZTInKSIsICIxIik7CitzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKCd0aGlyZFBhZ2UnKSIsICIyIik7CisKK2RvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNhbmRib3giKSk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvc2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzIGIvTGF5b3V0VGVz
dHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZDg4ZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvcGFnZU51bWVyRm9yRWxlbWVudEJ5
SWQuanMKQEAgLTAsMCArMSwzMSBAQAorZGVzY3JpcHRpb24oIlRlc3QgZm9yIGxheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIik7CisKK2Z1bmN0aW9uIGNyZWF0
ZVBhcmFncmFwaChpZCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgIGVsZW1lbnQuaWQgPSBpZDsKKyAgICBlbGVtZW50LndpZHRoID0gMTAw
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzYW5kYm94IikuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK3ZhciBmaXJzdFBhZ2UgPSBjcmVhdGVQ
YXJhZ3JhcGgoImZpcnN0UGFnZSIpOworZmlyc3RQYWdlLnN0eWxlLmhlaWdodCA9IDEwMDA7CisK
K3ZhciBzZWNvbmRQYWdlID0gY3JlYXRlUGFyYWdyYXBoKCJzZWNvbmRQYWdlIik7CitzZWNvbmRQ
YWdlLnN0eWxlLmhlaWdodCA9IDEwMDA7CisKK3ZhciB0aGlyZFBhZ2UgPSBjcmVhdGVQYXJhZ3Jh
cGgoInRoaXJkUGFnZSIpOwordGhpcmRQYWdlLnN0eWxlLmhlaWdodCA9IDEwMDsKKwordmFyIHRo
aXJkUGFnZTIgPSBjcmVhdGVQYXJhZ3JhcGgoInRoaXJkUGFnZTIiKTsKK3RoaXJkUGFnZTIuc3R5
bGUuaGVpZ2h0ID0gNzAwOworCitzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZU51
bWJlckZvckVsZW1lbnRCeUlkKCdmaXJzdFBhZ2UnLCAxMDAwLCAxMDAwKSIsICIwIik7CitzaG91
bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCdzZWNv
bmRQYWdlJywgMTAwMCwgMTAwMCkiLCAiMSIpOworc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgndGhpcmRQYWdlJywgMTAwMCwgMTAwMCkiLCAi
MiIpOworc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VOdW1iZXJGb3JFbGVtZW50
QnlJZCgndGhpcmRQYWdlMicsIDEwMDAsIDEwMDApIiwgIjIiKTsKKworZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2FuZGJveCIpKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxNTE3NDMuLmE0YTM5YzQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMDEtMjggIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEg
d2F5IHRvIGdldCBwYWdlIG51bWJlciB3aXRoIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg0MAorCisgICAgICAg
IFRlc3Q6IHByaW50aW5nL3BhZ2UtYnJlYWstYWx3YXlzLmh0bWwKKworICAgICAgICAqIFdlYkNv
cmUuYmFzZS5leHA6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
aW50Q29udGV4dDo6cGFnZVJlY3QpOiBBZGRlZCBhIGdldHRlciBmdW5jdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyk6IE1vdmUgaXRzIGxvZ2lj
IGludG8gY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBy
aW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZSk6IEZhY3RvcmVkIG91dCBm
cm9tIGNvbXB1dGVQYWdlUmVjdHMgZm9yIHBhZ2VOdW1iZXJGb3JFbGVtZW50LgorICAgICAgICAo
V2ViQ29yZTo6ZW5jbG9zaW5nQm94TW9kZWxPYmplY3QpOiBBZGRlZCBmb3IgcGFnZU51bWJlckZv
ckVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JF
bGVtZW50KTogQWRkZWQgZm9yIHRlc3RpbmcuCisgICAgICAgICogcGFnZS9QcmludENvbnRleHQu
aDoKKwogMjAxMC0wMS0yOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDhlYWJm
YWUuLmYyMDViMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTI0OSw2ICsyNDksNyBAQCBfX1pON1dlYkNvcmUx
Mkljb25EYXRhYmFzZTRvcGVuRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFi
YXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlOXNldENsaWVudEVQTlNfMThJ
Y29uRGF0YWJhc2VDbGllbnRFCiBfX1pON1dlYkNvcmUxMlBsdWdpbldpZGdldDE0aW52YWxpZGF0
ZVJlY3RFUktOU183SW50UmVjdEUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVt
YmVyRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFZmYKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJlY3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJX
aWRnZXQxOXNob3dTdWJzdGl0dXRlSW1hZ2VFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUltYWdlRUVF
CiBfX1pON1dlYkNvcmUxMlNjaGVkdWxlUGFpckMxRVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGIyNzZjNS4u
YzZlZTBjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQwOTksNiArNDA5OSw4IEBACiAJCUI1QTY4NDI0MEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVG
aWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLzsg
fTsKIAkJQjVDMTEyM0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVD
MTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICov
OyB9OwogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVD
MTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLzsg
fTsKKwkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3NkQ0M0ExMTA0NTI1RDAw
QkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUI3NzZENDNEMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3
NkQ0M0MxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi87IH07CiAJCUJDMDBG
MDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmls
ZS5oICovOyB9OwogCQlCQzAwRjAwNTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZGMEUwQTE4
NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovOyB9OwogCQlCQzAwRjAwNjBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzAwRjAwMDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFs
LmggKi87IH07CkBAIC05MzE5LDYgKzkzMjEsOCBAQAogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2
ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNwcDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2
NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNR
TFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Qjc3NkQ0M0ExMTA0NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcmludENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjc3NkQ0M0MxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludENvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9N
RmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01G
aWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUz
IC8qIERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01GaWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDY5LDYg
KzExNDczLDggQEAKIAkJCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJv
ci5pZGwgKi8sCiAJCQkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JD
YWxsYmFjay5oICovLAogCQkJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9w
dGlvbnMuaCAqLywKKwkJCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0
LmNwcCAqLywKKwkJCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0Lmgg
Ki8sCiAJCQkJQkNFQzAxQkEwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5jcHAgKi8sCiAJCQkJ
QkNFQzAxQkIwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oICovLAogCQkJCUJDRUMwMUJDMEMy
NzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaWRsICovLApAQCAtMTg0NjYsNiArMTg0NzIsNyBAQAog
CQkJCTU5RTg0MjY2MTEwOUU1QTIwMDAzMDVBRCAvKiBKTklCcmlkZ2VKU0MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3Jp
dGhtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxQUE4REExMTExMjM3RTAwMkFCMDZFIC8qIFNW
R0VsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjcxRkU2REYxMTA5MUNCMzAw
REFFRjc3IC8qIFByaW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDY0MSw2ICsyMDY0
OCw4IEBACiAJCQkJNTlCNTk3NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5M0M0RjZFQTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0
eVNjcm9sbGJhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OUU4NDI2ODExMDlFNUFFMDAwMzA1
QUQgLyogSk5JQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5OUU3NTkyMTEwNTVB
MkEwMEQ5MDRGQSAvKiBCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjc3NkQ0M0QxMTA0
NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5jcHAKaW5kZXggNGQzYTgzOS4uNmU5MmJlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAg
LTQ1LDYgKzQ1LDExIEBAIGludCBQcmludENvbnRleHQ6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFnZVJlY3RzLnNpemUoKTsKIH0KIAorY29uc3QgSW50UmVjdCYgUHJpbnRDb250
ZXh0OjpwYWdlUmVjdChpbnQgcGFnZU51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdl
UmVjdHNbcGFnZU51bWJlcl07Cit9CisKIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJl
Y3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0
IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdo
dCkKIHsKICAgICBtX3BhZ2VSZWN0cy5jbGVhcigpOwpAQCAtNjAsMTEgKzY1LDYgQEAgdm9pZCBQ
cmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBwcmludFJlY3Qs
IGZsb2F0IGhlYWRlckhlaWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2Vy
U2NhbGVGYWN0b3IgPD0gMCkgewotICAgICAgICBMT0dfRVJST1IoInVzZXJTY2FsZUZhY3RvciBo
YXMgYmFkIHZhbHVlICUuMmYiLCB1c2VyU2NhbGVGYWN0b3IpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgZmxvYXQgcmF0aW8gPSBwcmludFJlY3QuaGVpZ2h0KCkgLyBwcmludFJlY3Qu
d2lkdGgoKTsKIAogICAgIGZsb2F0IHBhZ2VXaWR0aCAgPSAoZmxvYXQpcm9vdC0+cmlnaHRMYXlv
dXRPdmVyZmxvdygpOwpAQCAtNzcsMTQgKzc3LDMxIEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21w
dXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWln
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmbG9hdCBjdXJyUGFnZUhlaWdodCA9IHBh
Z2VIZWlnaHQgLyB1c2VyU2NhbGVGYWN0b3I7CisgICAgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdl
U2l6ZShGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSwgdXNlclNjYWxlRmFjdG9yKTsK
K30KKwordm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29u
c3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzLCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IpCit7
CisgICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyhtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJlcigpKTsKKworICAgIGlmICghcm9vdCkgeworICAgICAgICBMT0dfRVJST1IoImRv
Y3VtZW50IHRvIGJlIHByaW50ZWQgaGFzIG5vIHJlbmRlcmVyIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAodXNlclNjYWxlRmFjdG9yIDw9IDApIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJ1c2VyU2NhbGVGYWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJmIiwgdXNlclNjYWxlRmFjdG9y
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZsb2F0IGN1cnJQYWdlSGVpZ2h0ID0g
cGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSAvIHVzZXJTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBk
b2NIZWlnaHQgPSByb290LT5sYXllcigpLT5oZWlnaHQoKTsKLSAgICBmbG9hdCBjdXJyUGFnZVdp
ZHRoID0gcGFnZVdpZHRoIC8gdXNlclNjYWxlRmFjdG9yOworICAgIGZsb2F0IGN1cnJQYWdlV2lk
dGggPSBwYWdlU2l6ZUluUGl4ZWxzLndpZHRoKCkgLyB1c2VyU2NhbGVGYWN0b3I7CiAKICAgICAv
LyBhbHdheXMgcmV0dXJuIGF0IGxlYXN0IG9uZSBwYWdlLCBzaW5jZSBlbXB0eSBmaWxlcyBzaG91
bGQgcHJpbnQgYSBibGFuayBwYWdlCi0gICAgZmxvYXQgcHJpbnRlZFBhZ2VzSGVpZ2h0ID0gMC4w
OworICAgIGZsb2F0IHByaW50ZWRQYWdlc0hlaWdodCA9IDA7CiAgICAgZG8gewotICAgICAgICBm
bG9hdCBwcm9wb3NlZEJvdHRvbSA9IHN0ZDo6bWluKGRvY0hlaWdodCwgcHJpbnRlZFBhZ2VzSGVp
Z2h0ICsgcGFnZUhlaWdodCk7CisgICAgICAgIGZsb2F0IHByb3Bvc2VkQm90dG9tID0gc3RkOjpt
aW4oZG9jSGVpZ2h0LCBwcmludGVkUGFnZXNIZWlnaHQgKyBwYWdlU2l6ZUluUGl4ZWxzLmhlaWdo
dCgpKTsKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5hZGp1c3RQYWdlSGVpZ2h0KCZwcm9wb3Nl
ZEJvdHRvbSwgcHJpbnRlZFBhZ2VzSGVpZ2h0LCBwcm9wb3NlZEJvdHRvbSwgcHJpbnRlZFBhZ2Vz
SGVpZ2h0KTsKICAgICAgICAgY3VyclBhZ2VIZWlnaHQgPSBtYXgoMS4wZiwgcHJvcG9zZWRCb3R0
b20gLSBwcmludGVkUGFnZXNIZWlnaHQpOwogCkBAIC0xMzQsNCArMTUxLDQwIEBAIHZvaWQgUHJp
bnRDb250ZXh0OjplbmQoKQogICAgIG1fZnJhbWUtPnNldFByaW50aW5nKGZhbHNlLCAwLCAwLCB0
cnVlKTsKIH0KIAorc3RhdGljIFJlbmRlckJveE1vZGVsT2JqZWN0KiBlbmNsb3NpbmdCb3hNb2Rl
bE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKworICAgIHdoaWxlIChvYmplY3QgJiYg
IW9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpKQorICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBh
cmVudCgpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmplY3QpOworfQorCitpbnQgUHJpbnRDb250ZXh0Ojpw
YWdlTnVtYmVyRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBmbG9hdCBwYWdlV2lkdGhJblBp
eGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUg
ZWxlbWVudCBpcyBub3QgZnJlZWQgZHVyaW5nIHRoZSBsYXlvdXQuCisgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnRSZWYoZWxlbWVudCk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CisKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gZW5jbG9zaW5nQm94
TW9kZWxPYmplY3QoZWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFib3gpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmZy
YW1lKCk7CisgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KDAsIDAsIHBhZ2VXaWR0aEluUGl4ZWxzLCBw
YWdlSGVpZ2h0SW5QaXhlbHMpOworICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJhbWUp
OworICAgIHByaW50Q29udGV4dC5iZWdpbihwYWdlUmVjdC53aWR0aCgpKTsKKyAgICBwcmludENv
bnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShGbG9hdFNpemUocGFnZVdpZHRoSW5Q
aXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyksIDEpOworCisgICAgaW50IHRvcCA9IGJveC0+b2Zm
c2V0VG9wKCk7CisgICAgaW50IGxlZnQgPSBib3gtPm9mZnNldExlZnQoKTsKKyAgICBmb3IgKGlu
dCBwYWdlTnVtYmVyID0gMDsgcGFnZU51bWJlciA8IHByaW50Q29udGV4dC5wYWdlQ291bnQoKTsg
cGFnZU51bWJlcisrKSB7CisgICAgICAgIGNvbnN0IEludFJlY3QmIHBhZ2UgPSBwcmludENvbnRl
eHQucGFnZVJlY3QocGFnZU51bWJlcik7CisgICAgICAgIGlmIChwYWdlLngoKSA8PSBsZWZ0ICYm
IGxlZnQgPCBwYWdlLnJpZ2h0KCkgJiYgcGFnZS55KCkgPD0gdG9wICYmIHRvcCA8IHBhZ2UuYm90
dG9tKCkpCisgICAgICAgICAgICByZXR1cm4gcGFnZU51bWJlcjsKKyAgICB9CisgICAgcmV0dXJu
IC0xOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggYi9X
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggMGIzYjMwMy4uNTdmYTFmYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuaApAQCAtMjUsOCArMjUsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBGbG9h
dFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OwogCkBAIC0zNiw2
ICszOCw3IEBAIHB1YmxpYzoKICAgICB+UHJpbnRDb250ZXh0KCk7CiAKICAgICBpbnQgcGFnZUNv
dW50KCkgY29uc3Q7CisgICAgY29uc3QgSW50UmVjdCYgcGFnZVJlY3QoaW50IHBhZ2VOdW1iZXIp
IGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJp
bnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNl
clNjYWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdodCk7CiAKQEAgLTQ3LDcgKzUwLDEyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZW5kKCk7CiAKKyAgICAvLyBVc2VkIGJ5IGxheW91dCB0ZXN0
cy4KKyAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqLCBmbG9hdCBw
YWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKKwogcHJvdGVjdGVk
OgorICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBGbG9hdFNpemUm
IHBhZ2VTaXplSW5QaXhlbHMsIGZsb2F0IHVzZXJTY2FsZUZhY3Rvcik7CisKICAgICBGcmFtZSog
bV9mcmFtZTsKICAgICBWZWN0b3I8SW50UmVjdD4gbV9wYWdlUmVjdHM7CiB9OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4YjYz
OGEwLi4zM2Y4NmQ5IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAxLTI4ICBTaGluaWNoaXJv
IEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBnZXQgcGFnZSBudW1iZXIg
d2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NDAKKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aDpdKToKKwogMjAx
MC0wMS0yOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNj
L1dlYkNvcmVTdGF0aXN0aWNzLmggYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
aAppbmRleCA3YTE4OWFlLi42YzQ1ZmI5IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2Vi
Q29yZVN0YXRpc3RpY3MuaAorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
aApAQCAtODQsNCArODQsNSBAQAogQGludGVyZmFjZSBXZWJGcmFtZSAoV2ViS2l0RGVidWcpCiAt
IChOU1N0cmluZyAqKXJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb247CiAtIChOU1N0
cmluZyAqKWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ7CistIChp
bnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VX
aWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CiBAZW5kCmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9XZWJLaXQvbWFjL01pc2Mv
V2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggZjIwNGRkYi4uNmNhZTRiMCAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1dlYktpdC9tYWMvTWlz
Yy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9JY29uRGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1ByaW50Q29udGV4dC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlclZpZXcuaD4KIApAQCAtMjUwLDQgKzI1MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50KGNvcmUoZWxlbWVudCkpOwog
fQogCistIChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6KGZs
b2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHMKK3sKKyAgICBy
ZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChjb3JlKGVsZW1lbnQpLCBw
YWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsKK30KKwogQGVuZApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDcxYWFmZTkuLmY3YzZhZGUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMS0yOCAgU2hp
bmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGUgYSB3YXkgdG8gZ2V0IHBhZ2Ug
bnVtYmVyIHdpdGggbGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODQwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZCk6CisKIDIwMTAtMDEtMjggIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGU3MWNk
MjkuLmJjYmEzNTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ2NCw2ICs0NjQsMzYgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgbm90aWZ5RG9uZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICAvLyBGSVhNRTogVGhlc2UgdmFsdWVzIHNo
b3VsZCBzeW5jIHdpdGggbWF4Vmlld1dpZHRoL0hlaWdodCBpbgorICAgIC8vICAgICAgICBEdW1w
UmVuZGVyVHJlZS5tbS4gRmFjdG9yIHRoZXNlIHZhbHVlcyBvdXQgdG8gc29tZXdoZXJlLgorICAg
IGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzID0gODAwOworICAgIGZsb2F0IHBhZ2VIZWlnaHRJblBp
eGVscyA9IDYwMDsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnQpIHsKKyAgICBjYXNlIDE6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgcGFnZVdpZHRoSW5QaXhlbHMgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwg
ZXhjZXB0aW9uKSk7CisgICAgICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgICAgICBwYWdlSGVpZ2h0SW5QaXhl
bHMgPSBzdGF0aWNfY2FzdDxmbG9hdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50
c1syXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisgICAgfQorCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVsZW1lbnRJZChBZG9wdCwg
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwor
ICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IGNvbnRyb2xsZXItPnBhZ2VOdW1iZXJGb3JFbGVt
ZW50QnlJZChlbGVtZW50SWQuZ2V0KCksIHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5Q
aXhlbHMpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBwYWdlTnVtYmVy
KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgcXVldWVCYWNrTmF2aWdhdGlvbkNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBp
bXBsZW1lbnRhdGlvbgpAQCAtMTI4OSw2ICsxMzE5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgIm5vdGlmeURv
bmUiLCBub3RpZnlEb25lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zIiwgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAib3ZlcnJpZGVQcmVmZXJlbmNlIiwgb3ZlcnJpZGVQcmVmZXJlbmNlQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAicGFnZU51bWJlckZvckVsZW1lbnRCeUlkIiwgcGFnZU51
bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF0aFRvTG9j
YWxSZXNvdXJjZSIsIHBhdGhUb0xvY2FsUmVzb3VyY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsIHBhdXNlQW5pbWF0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF1c2VU
cmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGM4ZGE2YWIuLmYzMGUyOTcgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgpOwog
ICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3Ry
aW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOworICAgIGludCBwYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBw
YWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIEpTU3RyaW5nUmVmIHBhdGhUb0xvY2FsUmVzb3VyY2Uo
SlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwogICAgIHZvaWQgcXVldWVCYWNrTmF2aWdh
dGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2aWdhdGlv
bihpbnQgaG93RmFyRm9yd2FyZCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBhNzRmN2FkLi5i
YWQwOWZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTE0MCw2ICsxNDAsMTIgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKIH0KIAoraW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoSlNTdHJpbmdSZWYsIGZsb2F0LCBmbG9hdCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIC0xOworfQorCiBzaXplX3QgTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondl
Ykhpc3RvcnlJdGVtQ291bnQoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQppbmRleCA1ZjAyMGZhLi42N2M4YzkxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0x
NzYsNiArMTc2LDE4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmtlZXBXZWJIaXN0b3J5
KCkKICAgICB9CiB9CiAKK2ludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQg
cGFnZUhlaWdodEluUGl4ZWxzKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOwor
ICAgIE5TU3RyaW5nICppZE5TID0gKE5TU3RyaW5nICopaWRDRi5nZXQoKTsKKworICAgIERPTUVs
ZW1lbnQgKmVsZW1lbnQgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6
aWROU107CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1
cm4gW21haW5GcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aEluUGl4
ZWxzOnBhZ2VIZWlnaHRJblBpeGVsc107Cit9CisKIHNpemVfdCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAgICAgcmV0dXJuIFtbW1dlYkhpc3Rvcnkgb3B0
aW9uYWxTaGFyZWRIaXN0b3J5XSBhbGxJdGVtc10gY291bnRdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAK
aW5kZXggYjdhNjNmYy4uNGY1ZTkyNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMTA0LDMg
KzExMDQsOCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKEpTU3RyaQogICAgIHJldHVybiBjb3VudGVyVmFs
dWVKUzsKIH0KIAoraW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoSlNTdHJpbmdSZWYsIGZsb2F0LCBmbG9hdCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIC0xOworfQo=
</data>
<flag name="review"
          id="30176"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>