<?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>55267</bug_id>
          
          <creation_ts>2011-02-25 14:54:05 -0800</creation_ts>
          <short_desc>Add API to enumerate/delete files downloaded for &lt;audio&gt; and &lt;video&gt;</short_desc>
          <delta_ts>2011-03-07 10:16:55 -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>Media</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>358212</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-02-25 14:54:05 -0800</bug_when>
    <thetext>Because some media engines download files for &lt;audio&gt; and &lt;video&gt; directly, we need API so a browser can:

1. Get a list of the origins of all files in the media cache.
2. Delete all files in the media cache.
3. Delete all files in the media cache for a given origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358213</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-02-25 14:54:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/9049280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358240</commentid>
    <comment_count>2</comment_count>
      <attachid>83892</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-02-25 15:45:16 -0800</bug_when>
    <thetext>Created attachment 83892
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358243</commentid>
    <comment_count>3</comment_count>
      <attachid>83892</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-25 15:46:33 -0800</bug_when>
    <thetext>Comment on attachment 83892
Proposed patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2549
&gt; +void HTMLMediaElement::clearMediaCacheForSite(const String site)

Should be const String&amp; rather than just const String.

&gt; Source/WebCore/html/HTMLMediaElement.h:182
&gt; +    void clearMediaCacheForSite(const String);

Here too.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:731
&gt; +void MediaPlayer::clearMediaCacheForSite(const String site)

Here too.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:293
&gt; +    void clearMediaCacheForSite(const String);

Should be const String&amp; rather than just const String.

&gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:146
&gt; +    void clearMediaCacheForSite(const String) { }

Should be const String&amp; rather than just const String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358253</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-02-25 15:58:19 -0800</bug_when>
    <thetext>Oops, landed this when saw the r+ email - which arrived before the one suggesting changes. Will follow up with another check in shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358274</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-02-25 16:39:26 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79737 and http://trac.webkit.org/changeset/79744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363197</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-06 20:08:04 -0800</bug_when>
    <thetext>This patch wasn&apos;t quite right as it requires an instance of HTMLMediaElement and only works with one media engine. Instead, the methods on HTMLMediaElement should be static, and it should work with all installed media engines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363200</commentid>
    <comment_count>7</comment_count>
      <attachid>84916</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-06 20:21:36 -0800</bug_when>
    <thetext>Created attachment 84916
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363201</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-06 20:27:25 -0800</bug_when>
    <thetext>Attachment 84916 did not build on chromium:
Build output: http://queues.webkit.org/results/8101418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363206</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-06 20:43:08 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Attachment 84916 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/8101418

Oops, forgot a comma :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363207</commentid>
    <comment_count>10</comment_count>
      <attachid>84918</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-06 20:45:49 -0800</bug_when>
    <thetext>Created attachment 84918
Updated patch, with missing comma.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363382</commentid>
    <comment_count>11</comment_count>
      <attachid>84918</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-07 09:52:13 -0800</bug_when>
    <thetext>Comment on attachment 84918
Updated patch, with missing comma.

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:743
&gt; +    if (engines.isEmpty())
&gt; +        return;
&gt; +
&gt; +    unsigned count = engines.size();
&gt; +    for (unsigned ndx = 0; ndx &lt; count; ndx++) {
&gt; +        if (engines[ndx]-&gt;getSitesInMediaCache)
&gt; +            engines[ndx]-&gt;getSitesInMediaCache(sites);
&gt; +    }

No need for a special case for an empty vector.

Should use size_t instead of unsigned.

I would name the local variable “size” to echo the name of the function.

We normally use “i” rather than “ndx” for this sort of thing.

Same comments for the other two functions below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363391</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-07 10:16:55 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80473</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83892</attachid>
            <date>2011-02-25 15:45:16 -0800</date>
            <delta_ts>2011-03-06 20:21:36 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>4913</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NzMzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDItMjUgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0byBlbnVtZXJhdGUvZGVsZXRlIGZpbGVz
IGRvd25sb2FkZWQgZm9yIDxhdWRpbz4gYW5kIDx2aWRlbz4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MjY3CisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCB0aGlzIGlzIGp1c3QgdGhlIHBsdW1iaW5nLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFNpdGVz
SW5NZWRpYUNhY2hlKTogTmV3LCBjYWxsIHRocm91Z2ggdG8gTWVkaWFQbGF5ZXIuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUp
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IE5ldywgY2FsbCB0aHJvdWdoIHRvIG1l
ZGlhIGVuZ2luZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2Fj
aGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2Fj
aGVGb3JTaXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpnZXRTaXRl
c0luTWVkaWFDYWNoZSk6IERlY2xhcmUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNsZWFyTWVkaWFD
YWNoZUZvclNpdGUpOiBEaXR0by4KKwogMjAxMS0wMi0yNSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNzkzMjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTMzLDYgKzI1MzMsMjUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxh
eUxvYQogICAgICAgICBkb2N1bWVudCgpLT5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7
CiB9CiAgICAgCisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUo
VmVjdG9yPFN0cmluZz4mIHNpdGVzKQoreworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgbV9w
bGF5ZXItPmdldFNpdGVzSW5NZWRpYUNhY2hlKHNpdGVzKTsKK30KKwordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoKQoreworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAg
bV9wbGF5ZXItPmNsZWFyTWVkaWFDYWNoZSgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nIHNpdGUpCit7CisgICAgaWYgKG1f
cGxheWVyKQorICAgICAgICBtX3BsYXllci0+Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRlKTsK
K30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCShyZXZpc2lvbiA3OTMyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNvdXJjZVdpbGxCZVJlbW92ZWQoSFRNTFNvdXJjZUVsZW1lbnQqKTsKICAgICB2b2lkIHNv
dXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50Kik7CiAKKyAgICAvLyBNZWRpYSBjYWNoZSBt
YW5hZ2VtZW50LgorICAgIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4m
KTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZShjb25zdCBTdHJpbmcpOworICAgIAogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRN
TE1lZGlhRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gNzkzMjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
OCw2ICs3MTgsMjAgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZChUaW1lcgog
ICAgIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKTsKIH0KIAor
dm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNp
dGVzKQoreworICAgIG1fcHJpdmF0ZS0+Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoc2l0ZXMpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKQoreworICAgIG1fcHJpdmF0ZS0+
Y2xlYXJNZWRpYUNhY2hlKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUoY29uc3QgU3RyaW5nIHNpdGUpCit7CisgICAgbV9wcml2YXRlLT5jbGVhck1lZGlh
Q2FjaGVGb3JTaXRlKHNpdGUpOworfQogCiAvLyBDbGllbnQgY2FsbGJhY2tzLgogdm9pZCBNZWRp
YVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDc5MzI4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjg3LDYgKzI4NywxMSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVk
Qnl0ZUNvdW50KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkg
Y29uc3Q7CiAKKyAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgorICAgIHZvaWQgZ2V0U2l0
ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZSgpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcpOworICAg
IAogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCopOwogICAgIHZv
aWQgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAkocmV2aXNpb24gNzkzMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHZpZGVvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworICAgIHZvaWQgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKSB7IH0KKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZSgpIHsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcpIHsg
fQogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84916</attachid>
            <date>2011-03-06 20:21:36 -0800</date>
            <delta_ts>2011-03-06 20:45:49 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_2.txt</filename>
            <type>text/plain</type>
            <size>16135</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDMtMDYgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0byBlbnVtZXJhdGUvZGVsZXRlIGZpbGVz
IGRvd25sb2FkZWQgZm9yIDxhdWRpbz4gYW5kIDx2aWRlbz4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MjY3CisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCB0aGlzIGlzIGp1c3QgbW9yZSB0aGUgcGx1bWJpbmcuCisKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0
U2l0ZXNJbk1lZGlhQ2FjaGUpOiBNYWtlIHN0YXRpYywgY2FsbCBNZWRpYVBsYXllciBzdGF0aWMg
bWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNh
Y2hlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1l
ZGlhQ2FjaGVGb3JTaXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckZhY3Rvcnk6Ok1lZGlhUGxheWVyRmFjdG9yeSk6IEFk
ZCBuZXcgbWVkaWEgZW5naW5lIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6
YWRkTWVkaWFFbmdpbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpn
ZXRTaXRlc0luTWVkaWFDYWNoZSk6IENhbGwgc3RhdGljIG1ldGhvZCBvbiBhbGwgaW5zdGFsbGVk
IG1lZGlhIGVuZ2luZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlRm9yU2l0ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFVwZGF0ZSBmb3IgTWVkaWFF
bmdpbmVSZWdpc3RyYXIgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBob25vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVQaG9ub246OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF0Ojpy
ZWdpc3Rlck1lZGlhRW5naW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Ojpy
ZWdpc3Rlck1lZGlhRW5naW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IERpdHRvLgorCiAy
MDExLTAzLTA2ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA4MDQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NDYsMjAgKzI1NDYsMTcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykK
IHsKLSAgICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5nZXRTaXRlc0luTWVkaWFD
YWNoZShzaXRlcyk7CisgICAgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKHNpdGVz
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoKQogewotICAg
IGlmIChtX3BsYXllcikKLSAgICAgICAgbV9wbGF5ZXItPmNsZWFyTWVkaWFDYWNoZSgpOworICAg
IE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKIHsKLSAgICBp
ZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5jbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNp
dGUpOworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUpOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiA4MDM3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsMTEgKzE3Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZVdpbGxCZVJl
bW92ZWQoSFRNTFNvdXJjZUVsZW1lbnQqKTsKICAgICB2b2lkIHNvdXJjZVdhc0FkZGVkKEhUTUxT
b3VyY2VFbGVtZW50Kik7CiAKLSAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgotICAgIHZv
aWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZSgpOwotICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJp
bmcmKTsKLQogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAg
IC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCkBAIC0xOTcsNiAr
MTkyLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QmVoYXZpb3JSZXN0cmljdGlvbnMoQmVo
YXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSB7IG1fcmVzdHJpY3Rpb25zID0gcmVzdHJp
Y3Rpb25zOyB9CiAKKyAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgorICAgIHN0YXRpYyB2
b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CisgICAgc3RhdGljIHZv
aWQgY2xlYXJNZWRpYUNhY2hlKCk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZShjb25zdCBTdHJpbmcmKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlh
RWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gODA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxOSAr
MTUwLDI3IEBAIHN0YXRpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIGNyZWEKIHN0cnVj
dCBNZWRpYVBsYXllckZhY3RvcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyRmFjdG9yeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE1lZGlh
UGxheWVyRmFjdG9yeShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKSAKKyAgICBNZWRpYVBsYXllckZhY3RvcnkoQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcywKKyAgICAgICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBnZXRT
aXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNh
Y2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZSkgCiAgICAgICAgIDogY29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgICAgICwgZ2V0
U3VwcG9ydGVkVHlwZXMoZ2V0U3VwcG9ydGVkVHlwZXMpCi0gICAgICAgICwgc3VwcG9ydHNUeXBl
QW5kQ29kZWNzKHN1cHBvcnRzVHlwZUFuZENvZGVjcykgIAorICAgICAgICAsIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhzdXBwb3J0c1R5cGVBbmRDb2RlY3MpCisgICAgICAgICwgZ2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUpCisgICAgICAgICwgY2xlYXJNZWRpYUNhY2hl
KGNsZWFyTWVkaWFDYWNoZSkKKyAgICAgICAgLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUpCisKICAgICB7IAogICAgIH0KIAogICAgIENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyIGNvbnN0cnVjdG9yOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0
U3VwcG9ydGVkVHlwZXM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBl
QW5kQ29kZWNzOworICAgIE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGU7CisgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNh
Y2hlOworICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlhQ2Fj
aGVGb3JTaXRlOwogfTsKIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9y
dHNUeXBlKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwg
TWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiBzdGF0aWMgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9
IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKE1lZGlhUGxh
eWVyRmFjdG9yeSogY3VycmVudCk7CiAKQEAgLTE4NiwxMiArMTk0LDE0IEBAIHN0YXRpYyBWZWN0
b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Kj4mIGluc3QKICAgICByZXR1cm4gaW5zdGFsbGVkRW5naW5l
czsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSkKK3N0YXRpYyB2b2lkIGFk
ZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUsCisgICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBn
ZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSkKIHsKICAgICBBU1NFUlQoY29uc3RydWN0b3IpOwogICAgIEFTU0VSVChnZXRTdXBw
b3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0gICAgaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkuYXBwZW5kKG5ldyBNZWRpYVBsYXllckZhY3RvcnkoY29uc3RydWN0b3IsIGdl
dFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUpKTsKKworICAgIGluc3RhbGxlZE1lZGlhRW5n
aW5lcygpLmFwcGVuZChuZXcgTWVkaWFQbGF5ZXJGYWN0b3J5KGNvbnN0cnVjdG9yLCBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtNzIyLDE3ICs3MzIsNDEgQEAg
dm9pZCBNZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZChUaW1lcgogCiB2b2lkIE1lZGlhUGxh
eWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCiB7Ci0gICAg
bV9wcml2YXRlLT5nZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAgVmVjdG9yPE1lZGlh
UGxheWVyRmFjdG9yeSo+JiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CisgICAg
aWYgKGVuZ2luZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBj
b3VudCA9IGVuZ2luZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwg
Y291bnQ7IG5keCsrKSB7CisgICAgICAgIGlmIChlbmdpbmVzW25keF0tPmdldFNpdGVzSW5NZWRp
YUNhY2hlKQorICAgICAgICAgICAgZW5naW5lc1tuZHhdLT5nZXRTaXRlc0luTWVkaWFDYWNoZShz
aXRlcyk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKQog
ewotICAgIG1fcHJpdmF0ZS0+Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAgVmVjdG9yPE1lZGlhUGxh
eWVyRmFjdG9yeSo+JiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CisgICAgaWYg
KGVuZ2luZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBjb3Vu
dCA9IGVuZ2luZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwgY291
bnQ7IG5keCsrKSB7CisgICAgICAgIGlmIChlbmdpbmVzW25keF0tPmNsZWFyTWVkaWFDYWNoZSkK
KyAgICAgICAgICAgIGVuZ2luZXNbbmR4XS0+Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAgfQogfQog
CiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYg
c2l0ZSkKIHsKLSAgICBtX3ByaXZhdGUtPmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7Cisg
ICAgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeSo+JiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCk7CisgICAgaWYgKGVuZ2luZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBjb3VudCA9IGVuZ2luZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQg
bmR4ID0gMDsgbmR4IDwgY291bnQ7IG5keCsrKSB7CisgICAgICAgIGlmIChlbmdpbmVzW25keF0t
PmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpCisgICAgICAgICAgICBlbmdpbmVzW25keF0tPmNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpz
ZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nTW9kZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNp
b24gODA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTEgKzE1OSwxNCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyKCk7CiAKLSAgICAvLyBtZWRpYSBlbmdpbmUgc3VwcG9y
dAorICAgIC8vIE1lZGlhIGVuZ2luZSBzdXBwb3J0LgogICAgIGVudW0gU3VwcG9ydHNUeXBlIHsg
SXNOb3RTdXBwb3J0ZWQsIElzU3VwcG9ydGVkLCBNYXlCZVN1cHBvcnRlZCB9OwogICAgIHN0YXRp
YyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlw
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYp
OwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisgICAgc3RhdGljIHZvaWQgZ2V0U2l0
ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICBi
b29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwpAQCAtMjg3LDExICsyOTAsNiBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
dmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAKLSAgICAvLyBNZWRpYSBjYWNoZSBtYW5h
Z2VtZW50LgotICAgIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsK
LSAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZShjb25zdCBTdHJpbmcmKTsKLQogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShi
b29sKTsKIAogcHJpdmF0ZToKQEAgLTMyNSw4ICszMjMsMTIgQEAgcHJpdmF0ZToKIHR5cGVkZWYg
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiAoKkNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKShN
ZWRpYVBsYXllciopOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyko
SGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcyk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlKShWZWN0b3I8U3RyaW5nPiYpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUpKCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUpKGNvbnN0IFN0cmluZyYpOwogCi10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJl
Z2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKTsgCit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCAKKyAgICBNZWRpYUVuZ2luZUdldFNpdGVz
SW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JTaXRlKTsgCiAKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDgwMzcwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw3ICsyNzIsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihjcmVhdGUs
IGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUpOworICAgICAgICByZWdpc3RyYXIoY3Jl
YXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKIH0KIAogc3Rh
dGljIGJvb2wgZ3N0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0JKHJldmlzaW9uIDgwNDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDAsNyArMjAwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBNZWRpYVBsYXll
cgogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0g
ICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUp
OworICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0KE1lZGlhUGxheWVyKiBwbGF5ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJp
dmF0ZVBob25vbi5jcHAJKHJldmlzaW9uIDgwMzcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI2LDcgKzEyNiw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogTWVkaWFQ
bGF5ZXIKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRz
VHlwZSk7CisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIDAsIDAsIDApOwogfQogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAJ
KHJldmlzaW9uIDgwMzcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
TWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogTWVkaWFQbGF5ZXIKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSk7CisgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6Omdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiAmc3VwcG9ydGVkKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNw
cAkocmV2aXNpb24gODA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1l
ZGlhUGxheWVyCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlKTsKKyAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0
U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQoTWVkaWFQbGF5ZXIqIHBsYXllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCShyZXZpc2lvbiA4MDM3MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSogTWVkaWFQbGF5ZXIKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBp
ZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSk7CisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDApOwogfQogCiBNZWRpYVBsYXllclByaXZh
dGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDQ3KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0w
NiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRvIGVudW1lcmF0ZS9k
ZWxldGUgZmlsZXMgZG93bmxvYWRlZCBmb3IgPGF1ZGlvPiBhbmQgPHZpZGVvPgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUyNjcKKworICAgICAgICAq
IHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnJlZ2lzdGVyU2VsZik6IFVwZGF0ZSBmb3IgTWVkaWFFbmdp
bmVSZWdpc3RyYXIgY2hhbmdlLgorCiAyMDExLTAzLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
ODA0MzYuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDgwMzcwKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsMTAgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJl
Z2lzdGVyUwogICAgIGlmIChtX2lzRW5hYmxlZCkgewogICAgICAgICByZWdpc3RyYXIoV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUsCiAgICAgICAgICAgICAgICAgICBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OmdldFN1cHBvcnRlZFR5cGVzLAotICAgICAgICAgICAgICAgICAgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdXBwb3J0c1R5cGUpOworICAgICAgICAgICAgICAgICAg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdXBwb3J0c1R5cGUsCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgMCk7CiAgICAgfQog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84918</attachid>
            <date>2011-03-06 20:45:49 -0800</date>
            <delta_ts>2011-03-07 09:52:12 -0800</delta_ts>
            <desc>Updated patch, with missing comma.</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>16136</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDMtMDYgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0byBlbnVtZXJhdGUvZGVsZXRlIGZpbGVz
IGRvd25sb2FkZWQgZm9yIDxhdWRpbz4gYW5kIDx2aWRlbz4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MjY3CisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCB0aGlzIGlzIGp1c3QgbW9yZSB0aGUgcGx1bWJpbmcuCisKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0
U2l0ZXNJbk1lZGlhQ2FjaGUpOiBNYWtlIHN0YXRpYywgY2FsbCBNZWRpYVBsYXllciBzdGF0aWMg
bWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNh
Y2hlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1l
ZGlhQ2FjaGVGb3JTaXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckZhY3Rvcnk6Ok1lZGlhUGxheWVyRmFjdG9yeSk6IEFk
ZCBuZXcgbWVkaWEgZW5naW5lIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6
YWRkTWVkaWFFbmdpbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpn
ZXRTaXRlc0luTWVkaWFDYWNoZSk6IENhbGwgc3RhdGljIG1ldGhvZCBvbiBhbGwgaW5zdGFsbGVk
IG1lZGlhIGVuZ2luZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlRm9yU2l0ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFVwZGF0ZSBmb3IgTWVkaWFF
bmdpbmVSZWdpc3RyYXIgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBob25vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVQaG9ub246OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF0Ojpy
ZWdpc3Rlck1lZGlhRW5naW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Ojpy
ZWdpc3Rlck1lZGlhRW5naW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IERpdHRvLgorCiAy
MDExLTAzLTA2ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA4MDQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NDYsMjAgKzI1NDYsMTcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykK
IHsKLSAgICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5nZXRTaXRlc0luTWVkaWFD
YWNoZShzaXRlcyk7CisgICAgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKHNpdGVz
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoKQogewotICAg
IGlmIChtX3BsYXllcikKLSAgICAgICAgbV9wbGF5ZXItPmNsZWFyTWVkaWFDYWNoZSgpOworICAg
IE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKIHsKLSAgICBp
ZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5jbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNp
dGUpOworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUpOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiA4MDM3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsMTEgKzE3Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZVdpbGxCZVJl
bW92ZWQoSFRNTFNvdXJjZUVsZW1lbnQqKTsKICAgICB2b2lkIHNvdXJjZVdhc0FkZGVkKEhUTUxT
b3VyY2VFbGVtZW50Kik7CiAKLSAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgotICAgIHZv
aWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZSgpOwotICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJp
bmcmKTsKLQogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAg
IC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCkBAIC0xOTcsNiAr
MTkyLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QmVoYXZpb3JSZXN0cmljdGlvbnMoQmVo
YXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSB7IG1fcmVzdHJpY3Rpb25zID0gcmVzdHJp
Y3Rpb25zOyB9CiAKKyAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgorICAgIHN0YXRpYyB2
b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CisgICAgc3RhdGljIHZv
aWQgY2xlYXJNZWRpYUNhY2hlKCk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZShjb25zdCBTdHJpbmcmKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlh
RWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gODA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxOSAr
MTUwLDI3IEBAIHN0YXRpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIGNyZWEKIHN0cnVj
dCBNZWRpYVBsYXllckZhY3RvcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyRmFjdG9yeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE1lZGlh
UGxheWVyRmFjdG9yeShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKSAKKyAgICBNZWRpYVBsYXllckZhY3RvcnkoQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcywKKyAgICAgICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBnZXRT
aXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNh
Y2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZSkgCiAgICAgICAgIDogY29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgICAgICwgZ2V0
U3VwcG9ydGVkVHlwZXMoZ2V0U3VwcG9ydGVkVHlwZXMpCi0gICAgICAgICwgc3VwcG9ydHNUeXBl
QW5kQ29kZWNzKHN1cHBvcnRzVHlwZUFuZENvZGVjcykgIAorICAgICAgICAsIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhzdXBwb3J0c1R5cGVBbmRDb2RlY3MpCisgICAgICAgICwgZ2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUpCisgICAgICAgICwgY2xlYXJNZWRpYUNhY2hl
KGNsZWFyTWVkaWFDYWNoZSkKKyAgICAgICAgLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUpCisKICAgICB7IAogICAgIH0KIAogICAgIENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyIGNvbnN0cnVjdG9yOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0
U3VwcG9ydGVkVHlwZXM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBl
QW5kQ29kZWNzOworICAgIE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGU7CisgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNh
Y2hlOworICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlhQ2Fj
aGVGb3JTaXRlOwogfTsKIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9y
dHNUeXBlKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwg
TWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiBzdGF0aWMgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9
IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKE1lZGlhUGxh
eWVyRmFjdG9yeSogY3VycmVudCk7CiAKQEAgLTE4NiwxMiArMTk0LDE0IEBAIHN0YXRpYyBWZWN0
b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Kj4mIGluc3QKICAgICByZXR1cm4gaW5zdGFsbGVkRW5naW5l
czsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSkKK3N0YXRpYyB2b2lkIGFk
ZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUsCisgICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBn
ZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSkKIHsKICAgICBBU1NFUlQoY29uc3RydWN0b3IpOwogICAgIEFTU0VSVChnZXRTdXBw
b3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0gICAgaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkuYXBwZW5kKG5ldyBNZWRpYVBsYXllckZhY3RvcnkoY29uc3RydWN0b3IsIGdl
dFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUpKTsKKworICAgIGluc3RhbGxlZE1lZGlhRW5n
aW5lcygpLmFwcGVuZChuZXcgTWVkaWFQbGF5ZXJGYWN0b3J5KGNvbnN0cnVjdG9yLCBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtNzIyLDE3ICs3MzIsNDEgQEAg
dm9pZCBNZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZChUaW1lcgogCiB2b2lkIE1lZGlhUGxh
eWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCiB7Ci0gICAg
bV9wcml2YXRlLT5nZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAgVmVjdG9yPE1lZGlh
UGxheWVyRmFjdG9yeSo+JiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CisgICAg
aWYgKGVuZ2luZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBj
b3VudCA9IGVuZ2luZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwg
Y291bnQ7IG5keCsrKSB7CisgICAgICAgIGlmIChlbmdpbmVzW25keF0tPmdldFNpdGVzSW5NZWRp
YUNhY2hlKQorICAgICAgICAgICAgZW5naW5lc1tuZHhdLT5nZXRTaXRlc0luTWVkaWFDYWNoZShz
aXRlcyk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKQog
ewotICAgIG1fcHJpdmF0ZS0+Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAgVmVjdG9yPE1lZGlhUGxh
eWVyRmFjdG9yeSo+JiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CisgICAgaWYg
KGVuZ2luZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBjb3Vu
dCA9IGVuZ2luZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwgY291
bnQ7IG5keCsrKSB7CisgICAgICAgIGlmIChlbmdpbmVzW25keF0tPmNsZWFyTWVkaWFDYWNoZSkK
KyAgICAgICAgICAgIGVuZ2luZXNbbmR4XS0+Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAgfQogfQog
CiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYg
c2l0ZSkKIHsKLSAgICBtX3ByaXZhdGUtPmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7Cisg
ICAgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeSo+JiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCk7CisgICAgaWYgKGVuZ2luZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBjb3VudCA9IGVuZ2luZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQg
bmR4ID0gMDsgbmR4IDwgY291bnQ7IG5keCsrKSB7CisgICAgICAgIGlmIChlbmdpbmVzW25keF0t
PmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpCisgICAgICAgICAgICBlbmdpbmVzW25keF0tPmNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpz
ZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nTW9kZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNp
b24gODA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTEgKzE1OSwxNCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyKCk7CiAKLSAgICAvLyBtZWRpYSBlbmdpbmUgc3VwcG9y
dAorICAgIC8vIE1lZGlhIGVuZ2luZSBzdXBwb3J0LgogICAgIGVudW0gU3VwcG9ydHNUeXBlIHsg
SXNOb3RTdXBwb3J0ZWQsIElzU3VwcG9ydGVkLCBNYXlCZVN1cHBvcnRlZCB9OwogICAgIHN0YXRp
YyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlw
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYp
OwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisgICAgc3RhdGljIHZvaWQgZ2V0U2l0
ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICBi
b29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwpAQCAtMjg3LDExICsyOTAsNiBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
dmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAKLSAgICAvLyBNZWRpYSBjYWNoZSBtYW5h
Z2VtZW50LgotICAgIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsK
LSAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZShjb25zdCBTdHJpbmcmKTsKLQogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShi
b29sKTsKIAogcHJpdmF0ZToKQEAgLTMyNSw4ICszMjMsMTIgQEAgcHJpdmF0ZToKIHR5cGVkZWYg
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiAoKkNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKShN
ZWRpYVBsYXllciopOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyko
SGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcyk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlKShWZWN0b3I8U3RyaW5nPiYpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUpKCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUpKGNvbnN0IFN0cmluZyYpOwogCi10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJl
Z2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKTsgCit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCAKKyAgICBNZWRpYUVuZ2luZUdldFNpdGVz
SW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JTaXRlKTsgCiAKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDgwMzcwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw3ICsyNzIsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihjcmVhdGUs
IGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUpOworICAgICAgICByZWdpc3RyYXIoY3Jl
YXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKIH0KIAogc3Rh
dGljIGJvb2wgZ3N0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0JKHJldmlzaW9uIDgwNDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDAsNyArMjAwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBNZWRpYVBsYXll
cgogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0g
ICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUp
OworICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0KE1lZGlhUGxheWVyKiBwbGF5ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJp
dmF0ZVBob25vbi5jcHAJKHJldmlzaW9uIDgwMzcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI2LDcgKzEyNiw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogTWVkaWFQ
bGF5ZXIKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRz
VHlwZSk7CisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIDAsIDAsIDApOwogfQogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAJ
KHJldmlzaW9uIDgwMzcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
TWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogTWVkaWFQbGF5ZXIKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSk7CisgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6Omdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiAmc3VwcG9ydGVkKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNw
cAkocmV2aXNpb24gODA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1l
ZGlhUGxheWVyCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlKTsKKyAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0
U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQoTWVkaWFQbGF5ZXIqIHBsYXllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCShyZXZpc2lvbiA4MDM3MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSogTWVkaWFQbGF5ZXIKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBp
ZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSk7CisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDApOwogfQogCiBNZWRpYVBsYXllclByaXZh
dGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDQ3KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0w
NiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRvIGVudW1lcmF0ZS9k
ZWxldGUgZmlsZXMgZG93bmxvYWRlZCBmb3IgPGF1ZGlvPiBhbmQgPHZpZGVvPgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUyNjcKKworICAgICAgICAq
IHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnJlZ2lzdGVyU2VsZik6IFVwZGF0ZSBmb3IgTWVkaWFFbmdp
bmVSZWdpc3RyYXIgY2hhbmdlLgorCiAyMDExLTAzLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
ODA0MzYuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDgwMzcwKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsMTAgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJl
Z2lzdGVyUwogICAgIGlmIChtX2lzRW5hYmxlZCkgewogICAgICAgICByZWdpc3RyYXIoV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUsCiAgICAgICAgICAgICAgICAgICBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OmdldFN1cHBvcnRlZFR5cGVzLAotICAgICAgICAgICAgICAgICAgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdXBwb3J0c1R5cGUpOworICAgICAgICAgICAgICAgICAg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdXBwb3J0c1R5cGUsCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgIDApOwogICAgIH0K
IH0KIAo=
</data>
<flag name="review"
          id="76965"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>