<?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>73184</bug_id>
          
          <creation_ts>2011-11-27 20:41:30 -0800</creation_ts>
          <short_desc>Out-of-band text tracks must load with the default origin behaviour set to fail.</short_desc>
          <delta_ts>2011-12-05 07:41:25 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509549</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-27 20:41:30 -0800</bug_when>
    <thetext>http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#sourcing-out-of-band-text-tracks says:

If URL is not the empty string, and its origin is the same as the media element&apos;s Document&apos;s origin, then fetch URL, from the media element&apos;s Document&apos;s origin, with the force same-origin flag set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509550</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-11-27 20:41:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/10489317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510958</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-29 11:42:51 -0800</bug_when>
    <thetext>Actually, the current version of the spec mentions CORS:

If URL is not the empty string, perform a potentially CORS-enabled fetch of URL, with the mode being the state of the media element&apos;s crossorigin content attribute, the origin being the origin of the media element&apos;s Document, and the default origin behaviour set to fail.

The resource obtained in this fashion, if any, contains the text track data. If any data is obtained, it is by definition CORS-same-origin (cross-origin resources that are not suitably CORS-enabled do not get this far).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510959</commentid>
    <comment_count>3</comment_count>
      <attachid>117011</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-29 11:43:35 -0800</bug_when>
    <thetext>Created attachment 117011
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511038</commentid>
    <comment_count>4</comment_count>
      <attachid>117011</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-29 13:08:22 -0800</bug_when>
    <thetext>Comment on attachment 117011
Proposed patch

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

Most cached resources do there cross origin checks in CachedResourceLoader::canRequest() (e.g. XSLTStyleSheet), can we do it for TextTracks there too?

&gt; Source/WebCore/html/HTMLTrackElement.cpp:243
&gt; +    if (!document()-&gt;contentSecurityPolicy()-&gt;allowMediaFromSource(url)) {
&gt; +        DEFINE_STATIC_LOCAL(String, consoleMessage, (&quot;Cross-origin image load denied by Content Security Policy.&quot;));
&gt; +        document()-&gt;addConsoleMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, consoleMessage);
&gt; +        LOG(Media, &quot;HTMLTrackElement::canLoadUrl(%s) -&gt; rejected by Content Security Policy&quot;, urlForLogging(url).utf8().data());
&gt; +        return false;

CSP denying the load is not the same</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511156</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-29 15:28:37 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 117011 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117011&amp;action=review
&gt; 
&gt; Most cached resources do there cross origin checks in CachedResourceLoader::canRequest() (e.g. XSLTStyleSheet), can we do it for TextTracks there too?
&gt; 
I modeled this after ImageLoader because it was the only other element I found that used the element&apos;s &quot;crossorigin&quot; attribute. It does the check in ImageLoader::updateFromElement before it asks the cached resource loader to load the image.

In order to move the check down into CachedResourceLoader::canRequest I will have to change CachedResourceLoader::requestResource so it has the &apos;crossorgin&apos; attribute value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511666</commentid>
    <comment_count>6</comment_count>
      <attachid>117011</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 05:44:20 -0800</bug_when>
    <thetext>Comment on attachment 117011
Proposed patch

Attachment 117011 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10697165

New failing tests:
media/track/track-add-track.html
http/tests/security/text-track-crossorigin.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511861</commentid>
    <comment_count>7</comment_count>
      <attachid>117216</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-30 10:27:30 -0800</bug_when>
    <thetext>Created attachment 117216
Updated patch

Updated the test results and fixed comment logged when CSP denies a load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515073</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-05 07:41:25 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/101999</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117011</attachid>
            <date>2011-11-29 11:43:35 -0800</date>
            <delta_ts>2011-11-30 10:27:30 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_xss_7.txt</filename>
            <type>text/plain</type>
            <size>27007</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTM2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTI5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1iYW5kIHRl
eHQgdHJhY2tzIG1heSBvbmx5IGxvYWQgZnJvbSBzYW1lIG9yaWdpbiBhcyB0aGUgbWVkaWEgZWxl
bWVudCdzIERvY3VtZW50J3Mgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFjay1jcm9z
c29yaWdpbi5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dXJsRm9yTG9nZ2luZyk6IERlYnVnLW9ubHkgZnVuY3Rpb24gZm9yIGxv
Z2dpbmcgdXJscy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxl
TG9hZCk6IENhbGwgY2FuTG9hZFVybCgpIGJlZm9yZSBwYXNzaW5nIGNvbnRyb2wgb2ZmIHRvCisg
ICAgICAgICAgICB0aGUgVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpjYW5Mb2FkVXJsKTogRG9uJ3QgYXNrIEhUTUxNZWRpYUVsZW1lbnQgdG8gdmFsaWRhdGUgdGhl
IHVybCwgdGhlCisgICAgICAgICAgICByZXF1aXJlbWVudHMgZm9yIDx0cmFjaz4gYXJlIGRpZmZl
cmVudCBmcm9tIDx2aWRlbz4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpk
aWRDb21wbGV0ZUxvYWQpOiBDaGFuZ2UgYm9vbCBwYXJhbSB0byBlbnVtLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUp
OiBOZXcsIHJldHVybiBwYXJlbnQgJ2Nyb3Nzb3JpZ2luJyAKKyAgICAgICAgICAgIGF0dHJpYnV0
ZSB2YWx1ZS4KKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuaDoKKworICAgICAgICAq
IGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVU
ZXh0VHJhY2s6OnNjaGVkdWxlTG9hZCk6IEFkZCBjb21tZW50cyBmcm9tIHRoZSBzcGVjLgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKTogQWx3YXlz
IGNhbmNlbCBwZW5kaW5nIGxvYWRzLiBMZXQgdGhlIGNhbGxlciBrbm93IAorICAgICAgICAgICAg
aWYgdGhlIGxvYWRlciByZWZ1c2VzIHRoZSB1cmwgaW1tZWRpYXRlbHkuCisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQpOiBUaGUgPHRyYWNrPiBk
ZWFscyB3aXRoIHJlYWR5U3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6Y3VlTG9hZGluZ0NvbXBsZXRlZCk6IEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9h
ZCB0YWtlcworICAgICAgICAgICAgYW4gZW51bSwgbm90IGEgYm9vbC4KKworICAgICAgICAqIGxv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9h
ZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCk6IE5ldywgbG9nIHRoZSBlcnJvciBhbmQgc2V0
IG1fc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKTogQ2hlY2sgZm9yIENPUlMgZmFpbHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0xvYWRlcjo6bG9hZCk6IFRha2UgbWVkaWEgZWxlbWVudCBjcm9zcy1vcmlnaW4gYXR0cmlidXRl
IGFzIGEgcGFyYW0gc28gd2UKKyAgICAgICAgICAgIGNhbiBtYWtlIHRoZSBjb3JyZWN0IGNoZWNr
cy4KKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmg6CisKIDIwMTEtMTEtMjkgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGludHJvZHVjZSBnZW5lcmljIGNhcGFiaWxpdGllcyBjb25jZXB0LCBtaWdyYXRlIGRlYnVn
Z2VyIGRvbWFpbiB0byBnZW5lcmljIGNhcGFiaWxpdGllcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTAxMzY5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVt
ZW50LmgiCiAKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKQEAgLTQxLDYgKzQyLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAorI2lmICFMT0dfRElTQUJMRUQKK3N0YXRpYyBTdHJpbmcgdXJs
Rm9yTG9nZ2luZyhjb25zdCBLVVJMJiB1cmwpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OworICAgIAorICAgIGlmICh1cmwuc3Ry
aW5nKCkubGVuZ3RoKCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKKyAgICAgICAgcmV0
dXJuIHVybC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBt
YXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKK30KKyNlbmRpZgorICAgIAogaW5s
aW5lIEhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiAgICAgLCBtX3JlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6Tk9ORSkK
QEAgLTE5MywxMCArMjA1LDIxIEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2NoZWR1bGVMb2Fk
KCkKICAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoc3JjQXR0cikpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGVuc3VyZVRyYWNrKCktPnNjaGVkdWxlTG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0
ZShzcmNBdHRyKSk7CisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4
dCB0cmFja3MKKworICAgIC8vIDEuIFNldCB0aGUgdGV4dCB0cmFjayByZWFkaW5lc3Mgc3RhdGUg
dG8gbG9hZGluZy4KKyAgICBzZXRSZWFkeVN0YXRlKEhUTUxUcmFja0VsZW1lbnQ6OkxPQURJTkcp
OworCisgICAgS1VSTCB1cmwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAg
ICBpZiAoIWNhbkxvYWRVcmwodXJsKSkgeworICAgICAgICBkaWRDb21wbGV0ZUxvYWQoZW5zdXJl
VHJhY2soKSwgSFRNTFRyYWNrRWxlbWVudDo6RmFpbHVyZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBlbnN1cmVUcmFjaygpLT5zY2hlZHVsZUxvYWQodXJsKTsKIH0KIAotYm9vbCBI
VE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwgY29uc3QgS1VS
TCYgdXJsKQorYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwNSwxOCArMjI4LDUyIEBAIGJv
b2wgSFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybChMb2FkYWIKICAgICBpZiAoIXBhcmVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJlbnQtPmlzU2FmZVRvTG9hZFVS
TCh1cmwsIEhUTUxNZWRpYUVsZW1lbnQ6OkNvbXBsYWluKSkKKyAgICAvLyA0LjguMTAuMTIuMyBT
b3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworCisgICAgLy8gNC4gRG93bmxvYWQ6IElm
IFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgcGVyZm9ybSBhIHBvdGVudGlhbGx5IENPUlMt
ZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdpdGggdGhlCisgICAgLy8gbW9kZSBiZWluZyB0aGUgc3Rh
dGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZSwg
dGhlIG9yaWdpbiBiZWluZyB0aGUKKyAgICAvLyBvcmlnaW4gb2YgdGhlIG1lZGlhIGVsZW1lbnQn
cyBEb2N1bWVudCwgYW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBiZWhhdmlvdXIgc2V0IHRvIGZhaWwu
CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291
cmNlKHVybCkpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVN
ZXNzYWdlLCAoIkNyb3NzLW9yaWdpbiBpbWFnZSBsb2FkIGRlbmllZCBieSBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeS4iKSk7CisgICAgICAgIGRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpT
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xl
TWVzc2FnZSk7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRV
cmwoJXMpIC0+IHJlamVjdGVkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IiwgdXJsRm9yTG9n
Z2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
ICAgIAogICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1cmwuc3RyaW5nKCkpOwog
fQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRU
cmFjayosIGJvb2wgbG9hZGluZ0ZhaWxlZCkKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6ZGlkQ29t
cGxldGVMb2FkKExvYWRhYmxlVGV4dFRyYWNrKiwgTG9hZFN0YXR1cyBzdGF0dXMpCiB7Ci0gICAg
bG9hZGluZ0ZhaWxlZCA/IHNldFJlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6VFJBQ0tfRVJS
T1IpIDogc2V0UmVhZHlTdGF0ZShIVE1MVHJhY2tFbGVtZW50OjpMT0FERUQpOwotCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGxvYWRp
bmdGYWlsZWQgPyBldmVudE5hbWVzKCkuZXJyb3JFdmVudCA6IGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKKworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91
dC1vZi1iYW5kIHRleHQgdHJhY2tzIChjb250aW51ZWQpCisgICAgCisgICAgLy8gNC4gRG93bmxv
YWQ6IC4uLgorICAgIC8vIElmIHRoZSBmZXRjaGluZyBhbGdvcml0aG0gZmFpbHMgZm9yIGFueSBy
ZWFzb24gKG5ldHdvcmsgZXJyb3IsIHRoZSBzZXJ2ZXIgcmV0dXJucyBhbiBlcnJvciAKKyAgICAv
LyBjb2RlLCBhIGNyb3NzLW9yaWdpbiBjaGVjayBmYWlscywgZXRjKSwgb3IgaWYgVVJMIGlzIHRo
ZSBlbXB0eSBzdHJpbmcgb3IgaGFzIHRoZSB3cm9uZyBvcmlnaW4gCisgICAgLy8gYXMgZGV0ZXJt
aW5lZCBieSB0aGUgY29uZGl0aW9uIGF0IHRoZSBzdGFydCBvZiB0aGlzIHN0ZXAsIG9yIGlmIHRo
ZSBmZXRjaGVkIHJlc291cmNlIGlzIG5vdCBpbgorICAgIC8vIGEgc3VwcG9ydGVkIGZvcm1hdCwg
dGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyc3QgY2hhbmdlIHRoZSB0ZXh0IHRyYWNrIHJlYWRpbmVz
cyBzdGF0ZSB0byBmYWlsZWQKKyAgICAvLyB0byBsb2FkIGFuZCB0aGVuIGZpcmUgYSBzaW1wbGUg
ZXZlbnQgbmFtZWQgZXJyb3IgYXQgdGhlIHRyYWNrIGVsZW1lbnQ7IGFuZCB0aGVuLCBvbmNlIHRo
YXQgdGFzaworICAgIC8vIGlzIHF1ZXVlZCwgbW92ZSBvbiB0byB0aGUgc3RlcCBiZWxvdyBsYWJl
bGVkIG1vbml0b3JpbmcuCisKKyAgICBpZiAoc3RhdHVzID09IEZhaWx1cmUpIHsKKyAgICAgICAg
c2V0UmVhZHlTdGF0ZShIVE1MVHJhY2tFbGVtZW50OjpUUkFDS19FUlJPUik7CisgICAgICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2Us
IGZhbHNlKSwgZWMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhlIGZl
dGNoaW5nIGFsZ29yaXRobSBkb2VzIG5vdCBmYWlsLCB0aGVuIHRoZSBmaW5hbCB0YXNrIHRoYXQg
aXMgcXVldWVkIGJ5IHRoZSBuZXR3b3JraW5nCisgICAgLy8gdGFzayBzb3VyY2UgbXVzdCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAgICAgMS4gQ2hhbmdlIHRoZSB0ZXh0IHRyYWNr
IHJlYWRpbmVzcyBzdGF0ZSB0byBsb2FkZWQuCisgICAgc2V0UmVhZHlTdGF0ZShIVE1MVHJhY2tF
bGVtZW50OjpMT0FERUQpOworCisgICAgLy8gICAgIDIuIElmIHRoZSBmaWxlIHdhcyBzdWNjZXNz
ZnVsbHkgcHJvY2Vzc2VkLCBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWQgYXQgdGhlIAor
ICAgIC8vICAgICAgICB0cmFjayBlbGVtZW50LgorICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CiB9CiAKIHZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQpAQCAt
MjI1LDcgKzI4MiwxNSBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldFJlYWR5U3RhdGUoUmVh
CiAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQogICAg
ICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChtX3RyYWNrLmdl
dCgpKTsKIH0KKworY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVHJhY2tFbGVtZW50OjptZWRpYUVs
ZW1lbnRDcm9zc09yaWdpbkF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKEhUTUxNZWRpYUVs
ZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT5m
YXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKICAgICAKKyAgICBy
ZXR1cm4gbnVsbEF0b207Cit9CisKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrS2lu
ZENoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCog
cGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuaAkocmV2aXNpb24gMTAxMzY5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDExICs2MCwxNCBAQCBwdWJsaWM6
CiAgICAgVGV4dFRyYWNrKiB0cmFjaygpOwogICAgIAogICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7
Ci0gICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBL
VVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRUcmFj
ayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLyk7CisKKyAgICBlbnVtIExvYWRTdGF0dXMgeyBG
YWlsdXJlLCBTdWNjZXNzIH07CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlTG9hZChMb2Fk
YWJsZVRleHRUcmFjayosIExvYWRTdGF0dXMpOwogICAgIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0
ZShSZWFkeVN0YXRlKTsKIAorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFFbGVtZW50Q3Jv
c3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIVE1MVHJhY2tFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxU
cmFja0VsZW1lbnQoKTsKQEAgLTkyLDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
Pik7CiAKICAgICBMb2FkYWJsZVRleHRUcmFjayogZW5zdXJlVHJhY2soKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuTG9hZFVybChjb25zdCBLVVJMJik7CiAKICAgICBIVE1MVHJhY2tFbGVtZW50OjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IG1f
dHJhY2s7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAko
cmV2aXNpb24gMTAxMzY5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDI4ICs1NywzNiBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxl
TG9hZChjb25zdCBLVVJMJiB1cmwpCiB7CisgICAgaWYgKHVybCA9PSBtX3VybCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0
cmFja3MgKGNvbnRpbnVlZCkKKworICAgIC8vIDIuIExldCBVUkwgYmUgdGhlIHRyYWNrIFVSTCBv
ZiB0aGUgdHJhY2sgZWxlbWVudC4KICAgICBtX3VybCA9IHVybDsKKyAgICAKKyAgICAvLyAzLiBB
c3luY2hyb25vdXNseSBydW4gdGhlIHJlbWFpbmluZyBzdGVwcywgd2hpbGUgY29udGludWluZyB3
aXRoIHdoYXRldmVyIHRhc2sgCisgICAgLy8gd2FzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0
aGUgdGV4dCB0cmFjayBvciBjaGFuZ2luZyB0aGUgdGV4dCB0cmFjayBtb2RlLgogICAgIGlmICgh
bV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90
KDApOwogfQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZChUaW1lcjxM
b2FkYWJsZVRleHRUcmFjaz4qKQogewotICAgIGlmICghbV90cmFja0VsZW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fdHJhY2tFbGVtZW50LT5zZXRSZWFkeVN0YXRlKEhUTUxUcmFja0Vs
ZW1lbnQ6OkxPQURJTkcpOwotICAgIAogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2Fk
ZXItPmNhbmNlbExvYWQoKTsKIAotICAgIGlmICghbV90cmFja0VsZW1lbnQtPmNhbkxvYWRVcmwo
dGhpcywgbV91cmwpKSB7Ci0gICAgICAgIG1fdHJhY2tFbGVtZW50LT5zZXRSZWFkeVN0YXRlKEhU
TUxUcmFja0VsZW1lbnQ6OlRSQUNLX0VSUk9SKTsKKyAgICBpZiAoIW1fdHJhY2tFbGVtZW50KQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0
LW9mLWJhbmQgdGV4dCB0cmFja3MgKGNvbnRpbnVlZCkKKworICAgIC8vIDQuIERvd25sb2FkOiBJ
ZiBVUkwgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JT
LWVuYWJsZWQgZmV0Y2ggb2YgVVJMLCB3aXRoIHRoZQorICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0
YXRlIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUs
IHRoZSBvcmlnaW4gYmVpbmcgdGhlCisgICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50
J3MgRG9jdW1lbnQsIGFuZCB0aGUgZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWls
LgogICAgIG1fbG9hZGVyID0gVGV4dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgc3RhdGljX2Nh
c3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KG1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7
Ci0gICAgbV9sb2FkZXItPmxvYWQobV91cmwpOworICAgIGlmICghbV9sb2FkZXItPmxvYWQobV91
cmwsIG1fdHJhY2tFbGVtZW50LT5tZWRpYUVsZW1lbnRDcm9zc09yaWdpbkF0dHJpYnV0ZSgpKSkK
KyAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZCh0aGlzLCBIVE1MVHJhY2tF
bGVtZW50OjpGYWlsdXJlKTsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2
YWlsYWJsZShUZXh0VHJhY2tMb2FkZXIqIGxvYWRlcikKQEAgLTEwMywxMCArMTExLDYgQEAgdm9p
ZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZQogdm9pZCBMb2FkYWJsZVRleHRU
cmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fbG9hZGVyID09IGxvYWRlcik7Ci0gICAgCi0gICAgaWYg
KCFtX3RyYWNrRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdHJhY2tFbGVtZW50LT5z
ZXRSZWFkeVN0YXRlKEhUTUxUcmFja0VsZW1lbnQ6OkxPQURJTkcpOwogfQogCiB2b2lkIExvYWRh
YmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciogbG9hZGVy
LCBib29sIGxvYWRpbmdGYWlsZWQpCkBAIC0xMTUsNyArMTE5LDggQEAgdm9pZCBMb2FkYWJsZVRl
eHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZQogCiAgICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fdHJhY2tFbGVtZW50LT5kaWRDb21wbGV0ZUxvYWQodGhpcywg
bG9hZGluZ0ZhaWxlZCk7CisKKyAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKHRo
aXMsIGxvYWRpbmdGYWlsZWQgPyBIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlIDogSFRNTFRyYWNr
RWxlbWVudDo6U3VjY2Vzcyk7CiB9CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmZpcmVDdWVD
aGFuZ2VFdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcAkocmV2aXNpb24gMTAxMzY5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBACiAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFRleHRUcmFjay5oIgor
I2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKIApAQCAtMTM5LDE0ICsxNDEsMzEgQEAgdm9pZCBUZXh0
VHJhY2tMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKENhYwogICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJl
c291cmNlKTsKIH0KIAordm9pZCBUZXh0VHJhY2tMb2FkZXI6OmNvcnNQb2xpY3lQcmV2ZW50ZWRM
b2FkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
ICgiQ3Jvc3Mtb3JpZ2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJl
c291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSk7CisgICAgbV9zdGF0ZSA9IEZhaWxlZDsK
K30KKwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRDdWVEYXRhID09IHJlc291cmNlKTsK
IAotICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJlc291cmNlKTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKQorICAgICAgICAmJiAhZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzb3VyY2UtPnJlc3BvbnNlKCkudXJsKCkp
CisgICAgICAgICYmICFyZXNvdXJjZS0+cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpKSkgewogCi0gICAgaWYgKG1fc3RhdGUgIT0gRmFpbGVkKQotICAg
ICAgICBtX3N0YXRlID0gcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSA/IEZhaWxlZCA6IEZpbmlz
aGVkOworICAgICAgICBjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpOworICAgIH0KKworICAgIGlm
IChtX3N0YXRlICE9IEZhaWxlZCkgeworICAgICAgICBwcm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJj
ZSk7CisgICAgICAgIGlmIChtX3N0YXRlICE9IEZhaWxlZCkKKyAgICAgICAgICAgIG1fc3RhdGUg
PSByZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpID8gRmFpbGVkIDogRmluaXNoZWQ7CisgICAgfQog
CiAgICAgaWYgKCFtX2N1ZUxvYWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2N1ZUxvYWRU
aW1lci5zdGFydE9uZVNob3QoMCk7CkBAIC0xNTQsMTcgKzE3MywyOSBAQCB2b2lkIFRleHRUcmFj
a0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjCiAgICAgY2FuY2VsTG9hZCgpOwogfQogCi1ib29s
IFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCitib29sIFRleHRUcmFja0xv
YWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
KQogeworICAgIGNhbmNlbExvYWQoKTsKKwogICAgIGlmICghbV9jbGllbnQtPnNob3VsZExvYWRD
dWVzKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY2FuY2VsTG9hZCgp
OwotICAgIAorCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1ZVJl
cXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkpOworCisgICAgaWYgKCFjcm9zc09yaWdp
bk1vZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jcm9zc09yaWdpbk1vZGUgPSBjcm9zc09yaWdp
bk1vZGU7CisgICAgICAgIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMgPSBlcXVh
bElnbm9yaW5nQ2FzZShjcm9zc09yaWdpbk1vZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93
U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgICAg
IHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKGN1ZVJlcXVlc3QsIGRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBDcm9zcy1vcmlnaW4gcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBDT1JTLWVuYWJs
ZWQgbWF5IG5vdCBsb2FkLgorICAgICAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5SZXF1ZXN0KHVybCkpIHsKKyAgICAgICAgICAgIGNvcnNQb2xpY3lQcmV2ZW50ZWRMb2Fk
KCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBtX2NhY2hlZEN1ZURhdGEgPSBzdGF0aWNfY2FzdDxD
YWNoZWRUZXh0VHJhY2sqPihjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFRleHRUcmFjayhj
dWVSZXF1ZXN0KSk7CiAgICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDEwMTM2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRlcigpOwog
ICAgIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJik7CisgICAgYm9vbCBsb2FkKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSk7CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KCk7CiAgICAgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBv
dXRwdXRDdWVzKTsKICAgICAKQEAgLTc4LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIHByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBjdWVMb2Fk
VGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMb2FkZXI+Kik7CisgICAgdm9pZCBjb3JzUG9saWN5
UHJldmVudGVkTG9hZCgpOwogCiAgICAgZW51bSBTdGF0ZSB7IElkbGUsIExvYWRpbmcsIEZpbmlz
aGVkLCBGYWlsZWQgfTsKICAgICAKQEAgLTg2LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0VHJhY2s+IG1fY2FjaGVkQ3VlRGF0YTsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgVGlt
ZXI8VGV4dFRyYWNrTG9hZGVyPiBtX2N1ZUxvYWRUaW1lcjsKKyAgICBTdHJpbmcgbV9jcm9zc09y
aWdpbk1vZGU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICB1bnNpZ25lZCBtX3BhcnNlT2Zmc2V0
OwogICAgIGJvb2wgbV9uZXdDdWVzQXZhaWxhYmxlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxMzY4
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMTEtMjkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3V0LW9mLWJhbmQgdGV4dCB0cmFja3MgbWF5IG9ubHkgbG9hZCBmcm9tIHNhbWUg
b3JpZ2luIGFzIHRoZSBtZWRpYSBlbGVtZW50J3MgRG9jdW1lbnQncyBvcmlnaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3Jlc291cmNlcy9jYXB0aW9ucy13aXRoLWFjY2Vzcy1jb250cm9sLWhlYWRlcnMucGhwOiBB
ZGRlZAorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25zLnZ0
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nz
b3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9Ta2lwcGVkOiBTa2lwIG5ldyB0ZXN0LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lw
cGVkOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2lu
L1NraXBwZWQ6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6IERp
dHRvLgorCiAyMDExLTExLTI5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBHVEsgZmFzdC8gcmViYXNlbGluZSBhZnRlciByMTAx
MzQzLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNy
b3Nzb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3RleHQtdHJhY2stY3Jvc3NvcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nz
b3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE6IENyb3NzLW9yaWdpbiBpbWFnZSBsb2FkIGRlbmllZCBieSBDcm9z
cy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTogQ3Jvc3Mtb3JpZ2luIGltYWdlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4KK1Rlc3RzIGxvYWRpbmcgY3Jvc3MtZG9tYWluIDx0cmFjaz4uCisK
K0xvYWRpbmcgd2l0aG91dCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gaGVhZGVyLCBubyAi
Y3Jvc3NvcmlnaW4iIGF0dHJpYnV0ZSBvbiA8dmlkZW8+CitFVkVOVChlcnJvcikKK1BBU1M6IHNo
b3VsZExvYWQgc2hvdWxkIGJlICdmYWxzZScgYW5kIGlzLgorUEFTUzogZXZlbnQudGFyZ2V0IHNo
b3VsZCBiZSAnW29iamVjdCBIVE1MVHJhY2tFbGVtZW50XScgYW5kIGlzLgorUEFTUzogdHJhY2tF
bGVtZW50LnJlYWR5U3RhdGUgc2hvdWxkIGJlICczJyBhbmQgaXMuCisKKworTG9hZGluZyB3aXRo
b3V0IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiBoZWFkZXIsIHNldHRpbmcgdmlkZW8uY3Jv
c3NvcmlnaW4gdG8gImFub255bW91cyIKK0VWRU5UKGVycm9yKQorUEFTUzogc2hvdWxkTG9hZCBz
aG91bGQgYmUgJ2ZhbHNlJyBhbmQgaXMuCitQQVNTOiBldmVudC50YXJnZXQgc2hvdWxkIGJlICdb
b2JqZWN0IEhUTUxUcmFja0VsZW1lbnRdJyBhbmQgaXMuCitQQVNTOiB0cmFja0VsZW1lbnQucmVh
ZHlTdGF0ZSBzaG91bGQgYmUgJzMnIGFuZCBpcy4KKworCitMb2FkaW5nIHdpdGggQWNjZXNzLUNv
bnRyb2wtQWxsb3ctT3JpZ2luIGhlYWRlciwgbGVhdmluZyB2aWRlby5jcm9zc29yaWdpbiBhcyAi
YW5vbnltb3VzIgorRVZFTlQobG9hZCkKK1BBU1M6IHNob3VsZExvYWQgc2hvdWxkIGJlICd0cnVl
JyBhbmQgaXMuCitQQVNTOiBldmVudC50YXJnZXQgc2hvdWxkIGJlICdbb2JqZWN0IEhUTUxUcmFj
a0VsZW1lbnRdJyBhbmQgaXMuCitQQVNTOiB0cmFja0VsZW1lbnQucmVhZHlTdGF0ZSBzaG91bGQg
YmUgJzInIGFuZCBpcy4KKworCitMb2FkaW5nIHdpdGggQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3Jp
Z2luIGFuZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyBoZWFkZXJzLCBzZXR0aW5n
IHZpZGVvLmNyb3Nzb3JpZ2luIHRvICJ1c2UtY3JlZGVudGlhbHMiCitFVkVOVChsb2FkKQorUEFT
Uzogc2hvdWxkTG9hZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KK1BBU1M6IGV2ZW50LnRhcmdl
dCBzaG91bGQgYmUgJ1tvYmplY3QgSFRNTFRyYWNrRWxlbWVudF0nIGFuZCBpcy4KK1BBU1M6IHRy
YWNrRWxlbWVudC5yZWFkeVN0YXRlIHNob3VsZCBiZSAnMicgYW5kIGlzLgorCisKK0VORCBPRiBU
RVNUCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFjay1j
cm9zc29yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvdGV4dC10cmFjay1jcm9zc29yaWdpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Jvc3MtZnJhbWUtYWNjZXNz
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAgdmFyIHNob3Vs
ZExvYWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHZhciBjb3VudGVyID0gMDsKKworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGxvZyhtc2cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4i
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0xvYWRlZCgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nKCdFVkVOVChsb2FkKScpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCdzaG91bGRMb2FkJywgdHJ1ZSk7CisKKyAgICAgICAgICAgICAg
ICB0cmFja0VsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cmFjaycpWzBdOwor
ICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
J3ZpZGVvJylbMF07CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnRhcmdldCcsIHRy
YWNrRWxlbWVudCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrRWxlbWVudC5yZWFk
eVN0YXRlJywgSFRNTFRyYWNrRWxlbWVudC5MT0FERUQpOworCisgICAgICAgICAgICAgICAgbG9n
KCc8YnI+Jyk7CisgICAgICAgICAgICAgICAgc3dpdGNoKGNvdW50ZXIpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIGxvZygnTG9hZGluZyA8Yj53aXRoPC9i
PiBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gYW5kIEFjY2Vzcy1Db250cm9sLUFsbG93LUNy
ZWRlbnRpYWxzIGhlYWRlcnMsIHNldHRpbmcgdmlkZW8uY3Jvc3NvcmlnaW4gdG8gInVzZS1jcmVk
ZW50aWFscyInKTsKKyAgICAgICAgICAgICAgICAgICAgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY2FwdGlvbnMtd2l0aC1hY2Nlc3MtY29udHJvbC1oZWFk
ZXJzLnBocD9vcmlnaW49MTtjcmVkZW50aWFscz0xIjsKKyAgICAgICAgICAgICAgICAgICAgdHJh
Y2tFbGVtZW50LnNldEF0dHJpYnV0ZSgnY3Jvc3NvcmlnaW4nLCAndXNlLWNyZWRlbnRpYWxzJyk7
CisgICAgICAgICAgICAgICAgICAgIHRyYWNrRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVy
bCk7CisgICAgICAgICAgICAgICAgICAgICsrY291bnRlcjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIGxv
ZygiRU5EIE9GIFRFU1QiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrRXJyb3IoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGxvZygnRVZFTlQoZXJyb3IpJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3No
b3VsZExvYWQnLCBmYWxzZSk7CisKKyAgICAgICAgICAgICAgICB0cmFja0VsZW1lbnQgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cmFjaycpWzBdOworICAgICAgICAgICAgICAgIHZpZGVv
RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ZpZGVvJylbMF07CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnRhcmdldCcsIHRyYWNrRWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrRWxlbWVudC5yZWFkeVN0YXRlJywgSFRNTFRyYWNrRWxl
bWVudC5FUlJPUik7CisKKyAgICAgICAgICAgICAgICBsb2coJzxicj4nKTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2goY291bnRlcikgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAg
ICAgICAgICAgICAgbG9nKCdMb2FkaW5nIDxiPndpdGhvdXQ8L2I+IEFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbiBoZWFkZXIsIHNldHRpbmcgdmlkZW8uY3Jvc3NvcmlnaW4gdG8gImFub255bW91
cyInKTsKKyAgICAgICAgICAgICAgICAgICAgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvY2FwdGlvbnMtd2l0aC1hY2Nlc3MtY29udHJvbC1oZWFkZXJzLnBo
cD9jb3VudD0iICsgY291bnRlcjsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnNl
dEF0dHJpYnV0ZSgnY3Jvc3NvcmlnaW4nLCAnYW5vbnltb3VzJyk7CisgICAgICAgICAgICAgICAg
ICAgIHRyYWNrRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpOworICAgICAgICAgICAgICAg
ICAgICB0cmFja0VsZW1lbnQuc2V0QXR0cmlidXRlKCdzcmMnLCB1cmwpOworICAgICAgICAgICAg
ICAgICAgICArK2NvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICBsb2coJ0xvYWRpbmcgPGI+d2l0
aDwvYj4gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIGhlYWRlciwgbGVhdmluZyB2aWRlby5j
cm9zc29yaWdpbiBhcyAiYW5vbnltb3VzIicpOworICAgICAgICAgICAgICAgICAgICB1cmwgPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jYXB0aW9ucy13aXRoLWFj
Y2Vzcy1jb250cm9sLWhlYWRlcnMucGhwP29yaWdpbj0xIjsKKyAgICAgICAgICAgICAgICAgICAg
dHJhY2tFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3JjJywgdXJsKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkTG9hZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICsrY291bnRlcjsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB0cmFja0VsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cmFj
aycpWzBdOworICAgICAgICAgICAgICAgIGxvZygnTG9hZGluZyA8Yj53aXRob3V0PC9iPiBBY2Nl
c3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gaGVhZGVyLCBubyAiY3Jvc3NvcmlnaW4iIGF0dHJpYnV0
ZSBvbiAmbHQ7dmlkZW8mZ3Q7Jyk7CisgICAgICAgICAgICAgICAgdmFyIHVybCA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25zLXdpdGgtYWNjZXNzLWNv
bnRyb2wtaGVhZGVycy5waHAiCisgICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50LnNldEF0dHJp
YnV0ZSgnc3JjJywgdXJsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdHMg
bG9hZGluZyBjcm9zcy1kb21haW4gJmx0O3RyYWNrJmd0Oy48L3A+CisgICAgICAgIDx2aWRlbyA+
CisgICAgICAgICAgICA8dHJhY2sga2luZD0iY2FwdGlvbnMiIG9uZXJyb3I9InRyYWNrRXJyb3Io
KSIgb25sb2FkPSJ0cmFja0xvYWRlZCgpIiA+CisgICAgICAgIDwvdmlkZW8+CisgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25zLXdpdGgtYWNjZXNz
LWNvbnRyb2wtaGVhZGVycy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvY2FwdGlvbnMtd2l0aC1hY2Nlc3MtY29udHJvbC1oZWFkZXJz
LnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVz
b3VyY2VzL2NhcHRpb25zLXdpdGgtYWNjZXNzLWNvbnRyb2wtaGVhZGVycy5waHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTggQEAKKzw/cGhwCisKKyAgICAkb3JpZ2luID0gJF9HRVRbIm9yaWdp
biJdOworICAgICRjcmVkZW50aWFscyA9ICRfR0VUWyJjcmVkZW50aWFscyJdOworCisgICAgaWYg
KCRvcmlnaW4pCisgICAgICAgIGhlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICBpZiAoJGNyZWRlbnRpYWxzKQorICAgICAgICBo
ZWFkZXIoIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlIik7CisgICAgCisg
ICAgJG5hbWUgPSAnY2FwdGlvbnMudnR0JzsKKyAgICAkZnAgPSBmb3BlbigkbmFtZSwgJ3JiJyk7
CisgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvdnR0Iik7CisgICAgaGVhZGVyKCJDb250
ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRuYW1lKSk7CisgICAgCisgICAgZnBhc3N0aHJ1KCRm
cCk7CisgICAgZXhpdDsKKz8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9jYXB0aW9ucy52dHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY2FwdGlvbnMudnR0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY2FwdGlvbnMudnR0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitXRUJWVFQgRklMRQorCisxCiswMDowMDowMC4wMDAg
LS0+IDAwOjAwOjEwLjUwMAorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsCisKKzIKKzAwOjAw
OjExLjAwMCAtLT4gMDA6MjA6MDAuNTAwCitjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCAK
KworMworMDA6MDA6MjEuMDAwIC0tPiAwMDozMDowMC41MDAKK3NlZCBkaWFtIG5vbnVtbXkgbmli
aCBldWlzbW9kIHRpbmNpZHVudCB1dCBsYW9yZWV0IGRvbG9yZSBtYWduYSBhbGlxdWFtIGVyYXQg
dm9sdXRwYXQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAkocmV2aXNpb24gMTAxMzY4
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTEwOTcsNiArMTA5Nyw4IEBAIHdlYmF1ZGlvCiAKICMgVGhlIEVGTCBwb3J0IGhhcyBubyBzdXBw
b3J0IGZvciA8dHJhY2s+IHdpdGggKi52dHQKIG1lZGlhL3RyYWNrCitmYXN0L2V2ZW50cy9jb25z
dHJ1Y3RvcnMvdHJhY2stZXZlbnQtY29uc3RydWN0b3IuaHRtbAoraHR0cC90ZXN0cy9zZWN1cml0
eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLmh0bWwKIAogIyBUaGUgRUZMIHBvcnQgaGFzIG5vIHN1
cHBvcnQgZm9yIGxvYWRpbmcgYSBQREYgYXMgYW4gaW1hZ2UKIGZhc3QvaW1hZ2VzL3BkZi1hcy1i
YWNrZ3JvdW5kLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiAx
MDEzNjgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5
KQpAQCAtMzYxLDYgKzM2MSw3IEBAIHdlYmF1ZGlvCiAjIFZJREVPX1RSQUNLIGlzIGRpc2FibGVk
IGZvciBub3cKIG1lZGlhL3RyYWNrCiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvdHJhY2stZXZl
bnQtY29uc3RydWN0b3IuaHRtbAoraHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nz
b3JpZ2luLmh0bWwKIAogIyBDU1MgRmlsdGVycyBpcyBkaXNhYmxlZAogY3NzMy9maWx0ZXJzCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gMTAxMzY4KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw2ICs0Mzgs
NyBAQCBmYXN0L2RvbS9NaWNyb0RhdGEKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQzNjY4CiBtZWRpYS90cmFjawogZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3Ry
YWNrLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFj
ay1jcm9zc29yaWdpbi5odG1sCiAKICMgVGVzdHMgZm9yIE1lZGlhU291cmNlIEFQSS4gRmVhdHVy
ZSBpcyBub3QgeWV0IGZ1bmN0aW9uYWwuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDczMQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiAx
MDEzNjgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDM1LDYgKzI0MzUsNyBAQCBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMu
aHRtbAogCiAjIHRyYWNrIG5vdCBmdW5jdGlvbmFsIHlldC4KIGZhc3QvZXZlbnRzL2NvbnN0cnVj
dG9ycy90cmFjay1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L3Rl
eHQtdHJhY2stY3Jvc3NvcmlnaW4uaHRtbAogCiAjIFNraXAgYmVjYXVzZSB0aGlzIHBsYXRmb3Jt
IGRvZXMgbm90IHN1cHBvcnQgYSBwYWdpbmcgbW91c2Ugd2hlZWwgZXZlbnQKIGZhc3QvZXZlbnRz
L3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXgtaW4tbm9uLXNjcm9sbGluZy1kaXYuaHRtbApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDEwMTM2OCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE5LDYgKzE0
MTksNyBAQCBmYXN0L211dGF0aW9uCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MzY2OAogbWVkaWEvdHJhY2sKIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy90cmFj
ay1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L3RleHQtdHJhY2st
Y3Jvc3NvcmlnaW4uaHRtbAogCiAjIFRlc3RzIGZvciBNZWRpYVNvdXJjZSBBUEkuIEZlYXR1cmUg
aXMgbm90IHlldCBmdW5jdGlvbmFsLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ3MzEKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAko
cmV2aXNpb24gMTAxMzY4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZAkod29ya2luZyBjb3B5KQpAQCAtMTkzNSw2ICsxOTM1LDcgQEAgZmFzdC9tdXRhdGlvbgogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM2NjgKIG1lZGlhL3RyYWNr
CiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvdHJhY2stZXZlbnQtY29uc3RydWN0b3IuaHRtbAor
aHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLmh0bWwKIAogIyBUZXN0
cyBmb3IgTWVkaWFTb3VyY2UgQVBJLiBGZWF0dXJlIGlzIG5vdCB5ZXQgZnVuY3Rpb25hbC4KICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMxCg==
</data>
<flag name="commit-queue"
          id="116522"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117216</attachid>
            <date>2011-11-30 10:27:30 -0800</date>
            <delta_ts>2011-12-04 14:11:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_xss_7.txt</filename>
            <type>text/plain</type>
            <size>28526</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTI3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTMwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1iYW5kIHRl
eHQgdHJhY2tzIG1heSBvbmx5IGxvYWQgZnJvbSBzYW1lIG9yaWdpbiBhcyB0aGUgbWVkaWEgZWxl
bWVudCdzIERvY3VtZW50J3Mgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFjay1jcm9z
c29yaWdpbi5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dXJsRm9yTG9nZ2luZyk6IERlYnVnLW9ubHkgZnVuY3Rpb24gZm9yIGxv
Z2dpbmcgdXJscy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxl
TG9hZCk6IENhbGwgY2FuTG9hZFVybCgpIGJlZm9yZSBwYXNzaW5nIGNvbnRyb2wgb2ZmIHRvCisg
ICAgICAgICAgICB0aGUgVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpjYW5Mb2FkVXJsKTogRG9uJ3QgYXNrIEhUTUxNZWRpYUVsZW1lbnQgdG8gdmFsaWRhdGUgdGhl
IHVybCwgdGhlCisgICAgICAgICAgICByZXF1aXJlbWVudHMgZm9yIDx0cmFjaz4gYXJlIGRpZmZl
cmVudCBmcm9tIDx2aWRlbz4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpk
aWRDb21wbGV0ZUxvYWQpOiBDaGFuZ2UgYm9vbCBwYXJhbSB0byBlbnVtLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUp
OiBOZXcsIHJldHVybiBwYXJlbnQgJ2Nyb3Nzb3JpZ2luJyAKKyAgICAgICAgICAgIGF0dHJpYnV0
ZSB2YWx1ZS4KKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuaDoKKworICAgICAgICAq
IGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVU
ZXh0VHJhY2s6OnNjaGVkdWxlTG9hZCk6IEFkZCBjb21tZW50cyBmcm9tIHRoZSBzcGVjLgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKTogQWx3YXlz
IGNhbmNlbCBwZW5kaW5nIGxvYWRzLiBMZXQgdGhlIGNhbGxlciBrbm93IAorICAgICAgICAgICAg
aWYgdGhlIGxvYWRlciByZWZ1c2VzIHRoZSB1cmwgaW1tZWRpYXRlbHkuCisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQpOiBUaGUgPHRyYWNrPiBk
ZWFscyB3aXRoIHJlYWR5U3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6Y3VlTG9hZGluZ0NvbXBsZXRlZCk6IEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9h
ZCB0YWtlcworICAgICAgICAgICAgYW4gZW51bSwgbm90IGEgYm9vbC4KKworICAgICAgICAqIGxv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9h
ZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCk6IE5ldywgbG9nIHRoZSBlcnJvciBhbmQgc2V0
IG1fc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKTogQ2hlY2sgZm9yIENPUlMgZmFpbHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0xvYWRlcjo6bG9hZCk6IFRha2UgbWVkaWEgZWxlbWVudCBjcm9zcy1vcmlnaW4gYXR0cmlidXRl
IGFzIGEgcGFyYW0gc28gd2UKKyAgICAgICAgICAgIGNhbiBtYWtlIHRoZSBjb3JyZWN0IGNoZWNr
cy4KKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmg6CisKIDIwMTEtMTEtMjggIEZh
ZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IEFzcGVjdCBS
YXRpbyBQcm9wZXJ0eSBJbmhlcml0YW5jZSBBbmQgTWFrZSB0aGUgQ29tcHV0ZWQgVmFsdWUgRXF1
YWwgdGhlIFNwZWNpZmllZCBWYWx1ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDEyNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKIAorI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDEs
NiArNDIsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCisjaWYgIUxPR19ESVNBQkxFRAorc3RhdGljIFN0cmluZyB1cmxGb3JMb2dnaW5nKGNv
bnN0IEtVUkwmIHVybCkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVVSTExl
bmd0aEZvckxvZ2dpbmcgPSAxMjg7CisgICAgCisgICAgaWYgKHVybC5zdHJpbmcoKS5sZW5ndGgo
KSA8IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKQorICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpOworICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5n
dGhGb3JMb2dnaW5nKSArICIuLi4iOworfQorI2VuZGlmCisgICAgCiBpbmxpbmUgSFRNTFRyYWNr
RWxlbWVudDo6SFRNTFRyYWNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
ICAgICAsIG1fcmVhZHlTdGF0ZShIVE1MVHJhY2tFbGVtZW50OjpOT05FKQpAQCAtMTkzLDEwICsy
MDUsMjEgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogICAgIGlmICgh
ZmFzdEhhc0F0dHJpYnV0ZShzcmNBdHRyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5zdXJl
VHJhY2soKS0+c2NoZWR1bGVMb2FkKGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpKTsK
KyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworCisg
ICAgLy8gMS4gU2V0IHRoZSB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0ZSB0byBsb2FkaW5nLgor
ICAgIHNldFJlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6TE9BRElORyk7CisKKyAgICBLVVJM
IHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgIGlmICghY2FuTG9h
ZFVybCh1cmwpKSB7CisgICAgICAgIGRpZENvbXBsZXRlTG9hZChlbnN1cmVUcmFjaygpLCBIVE1M
VHJhY2tFbGVtZW50OjpGYWlsdXJlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVu
c3VyZVRyYWNrKCktPnNjaGVkdWxlTG9hZCh1cmwpOwogfQogCi1ib29sIEhUTUxUcmFja0VsZW1l
bnQ6OmNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJiB1cmwpCitib29s
IEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA1LDE4ICsyMjgsNTIgQEAgYm9vbCBIVE1MVHJhY2tF
bGVtZW50OjpjYW5Mb2FkVXJsKExvYWRhYgogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIXBhcmVudC0+aXNTYWZlVG9Mb2FkVVJMKHVybCwgSFRNTE1l
ZGlhRWxlbWVudDo6Q29tcGxhaW4pKQorICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1v
Zi1iYW5kIHRleHQgdHJhY2tzCisKKyAgICAvLyA0LiBEb3dubG9hZDogSWYgVVJMIGlzIG5vdCB0
aGUgZW1wdHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkgQ09SUy1lbmFibGVkIGZldGNo
IG9mIFVSTCwgd2l0aCB0aGUKKyAgICAvLyBtb2RlIGJlaW5nIHRoZSBzdGF0ZSBvZiB0aGUgbWVk
aWEgZWxlbWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLCB0aGUgb3JpZ2luIGJl
aW5nIHRoZQorICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIERvY3VtZW50LCBh
bmQgdGhlIGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8gZmFpbC4KKyAgICBpZiAodXJs
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkgewor
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiVGV4
dCB0cmFjayBsb2FkIGRlbmllZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iKSk7CisgICAg
ICAgIGRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSk7CisgICAgICAgIExP
RyhNZWRpYSwgIkhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoJXMpIC0+IHJlamVjdGVkIGJ5
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIHJldHVybiBkaXNw
YXRjaEJlZm9yZUxvYWRFdmVudCh1cmwuc3RyaW5nKCkpOwogfQogCi12b2lkIEhUTUxUcmFja0Vs
ZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgbG9hZGluZ0Zh
aWxlZCkKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6ZGlkQ29tcGxldGVMb2FkKExvYWRhYmxlVGV4
dFRyYWNrKiwgTG9hZFN0YXR1cyBzdGF0dXMpCiB7Ci0gICAgbG9hZGluZ0ZhaWxlZCA/IHNldFJl
YWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6VFJBQ0tfRVJST1IpIDogc2V0UmVhZHlTdGF0ZShI
VE1MVHJhY2tFbGVtZW50OjpMT0FERUQpOwotCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGxvYWRpbmdGYWlsZWQgPyBldmVudE5hbWVz
KCkuZXJyb3JFdmVudCA6IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVj
KTsKKworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tz
IChjb250aW51ZWQpCisgICAgCisgICAgLy8gNC4gRG93bmxvYWQ6IC4uLgorICAgIC8vIElmIHRo
ZSBmZXRjaGluZyBhbGdvcml0aG0gZmFpbHMgZm9yIGFueSByZWFzb24gKG5ldHdvcmsgZXJyb3Is
IHRoZSBzZXJ2ZXIgcmV0dXJucyBhbiBlcnJvciAKKyAgICAvLyBjb2RlLCBhIGNyb3NzLW9yaWdp
biBjaGVjayBmYWlscywgZXRjKSwgb3IgaWYgVVJMIGlzIHRoZSBlbXB0eSBzdHJpbmcgb3IgaGFz
IHRoZSB3cm9uZyBvcmlnaW4gCisgICAgLy8gYXMgZGV0ZXJtaW5lZCBieSB0aGUgY29uZGl0aW9u
IGF0IHRoZSBzdGFydCBvZiB0aGlzIHN0ZXAsIG9yIGlmIHRoZSBmZXRjaGVkIHJlc291cmNlIGlz
IG5vdCBpbgorICAgIC8vIGEgc3VwcG9ydGVkIGZvcm1hdCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8g
Zmlyc3QgY2hhbmdlIHRoZSB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0ZSB0byBmYWlsZWQKKyAg
ICAvLyB0byBsb2FkIGFuZCB0aGVuIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgZXJyb3IgYXQg
dGhlIHRyYWNrIGVsZW1lbnQ7IGFuZCB0aGVuLCBvbmNlIHRoYXQgdGFzaworICAgIC8vIGlzIHF1
ZXVlZCwgbW92ZSBvbiB0byB0aGUgc3RlcCBiZWxvdyBsYWJlbGVkIG1vbml0b3JpbmcuCisKKyAg
ICBpZiAoc3RhdHVzID09IEZhaWx1cmUpIHsKKyAgICAgICAgc2V0UmVhZHlTdGF0ZShIVE1MVHJh
Y2tFbGVtZW50OjpUUkFDS19FUlJPUik7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSwgZWMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhlIGZldGNoaW5nIGFsZ29yaXRobSBkb2Vz
IG5vdCBmYWlsLCB0aGVuIHRoZSBmaW5hbCB0YXNrIHRoYXQgaXMgcXVldWVkIGJ5IHRoZSBuZXR3
b3JraW5nCisgICAgLy8gdGFzayBzb3VyY2UgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
KyAgICAvLyAgICAgMS4gQ2hhbmdlIHRoZSB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0ZSB0byBs
b2FkZWQuCisgICAgc2V0UmVhZHlTdGF0ZShIVE1MVHJhY2tFbGVtZW50OjpMT0FERUQpOworCisg
ICAgLy8gICAgIDIuIElmIHRoZSBmaWxlIHdhcyBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkLCBmaXJl
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWQgYXQgdGhlIAorICAgIC8vICAgICAgICB0cmFjayBl
bGVtZW50LgorICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9h
ZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6
c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQpAQCAtMjI1LDcgKzI4MiwxNSBAQCB2b2lk
IEhUTUxUcmFja0VsZW1lbnQ6OnNldFJlYWR5U3RhdGUoUmVhCiAgICAgaWYgKEhUTUxNZWRpYUVs
ZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gcGFyZW50LT50
ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChtX3RyYWNrLmdldCgpKTsKIH0KKworY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MVHJhY2tFbGVtZW50OjptZWRpYUVsZW1lbnRDcm9zc09yaWdpbkF0dHJp
YnV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlh
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT5mYXN0R2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKICAgICAKKyAgICByZXR1cm4gbnVsbEF0b207Cit9CisK
IHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0
cmFjaykKIHsKICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAkocmV2aXNpb24g
MTAxMjc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDExICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgVGV4dFRyYWNrKiB0cmFj
aygpOwogICAgIAogICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7Ci0gICAgdmlydHVhbCBib29sIGNh
bkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0Zh
aWxlZCAqLyk7CisKKyAgICBlbnVtIExvYWRTdGF0dXMgeyBGYWlsdXJlLCBTdWNjZXNzIH07Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRUcmFjayosIExvYWRT
dGF0dXMpOwogICAgIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKIAorICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBIVE1MVHJhY2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxUcmFja0VsZW1lbnQoKTsKQEAgLTky
LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
KFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKICAgICBMb2FkYWJsZVRl
eHRUcmFjayogZW5zdXJlVHJhY2soKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChjb25z
dCBLVVJMJik7CiAKICAgICBIVE1MVHJhY2tFbGVtZW50OjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKICAgICBSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IG1fdHJhY2s7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTAxMjc2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDI4ICs1NywzNiBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjbGVhckNsaWVudCgp
CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9hZChjb25zdCBLVVJMJiB1cmwp
CiB7CisgICAgaWYgKHVybCA9PSBtX3VybCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC44
LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MgKGNvbnRpbnVlZCkKKwor
ICAgIC8vIDIuIExldCBVUkwgYmUgdGhlIHRyYWNrIFVSTCBvZiB0aGUgdHJhY2sgZWxlbWVudC4K
ICAgICBtX3VybCA9IHVybDsKKyAgICAKKyAgICAvLyAzLiBBc3luY2hyb25vdXNseSBydW4gdGhl
IHJlbWFpbmluZyBzdGVwcywgd2hpbGUgY29udGludWluZyB3aXRoIHdoYXRldmVyIHRhc2sgCisg
ICAgLy8gd2FzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgdGV4dCB0cmFjayBvciBjaGFu
Z2luZyB0aGUgdGV4dCB0cmFjayBtb2RlLgogICAgIGlmICghbV9sb2FkVGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIExvYWRh
YmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4qKQog
ewotICAgIGlmICghbV90cmFja0VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJh
Y2tFbGVtZW50LT5zZXRSZWFkeVN0YXRlKEhUTUxUcmFja0VsZW1lbnQ6OkxPQURJTkcpOwotICAg
IAogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbExvYWQoKTsKIAot
ICAgIGlmICghbV90cmFja0VsZW1lbnQtPmNhbkxvYWRVcmwodGhpcywgbV91cmwpKSB7Ci0gICAg
ICAgIG1fdHJhY2tFbGVtZW50LT5zZXRSZWFkeVN0YXRlKEhUTUxUcmFja0VsZW1lbnQ6OlRSQUNL
X0VSUk9SKTsKKyAgICBpZiAoIW1fdHJhY2tFbGVtZW50KQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3Mg
KGNvbnRpbnVlZCkKKworICAgIC8vIDQuIERvd25sb2FkOiBJZiBVUkwgaXMgbm90IHRoZSBlbXB0
eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JTLWVuYWJsZWQgZmV0Y2ggb2YgVVJM
LCB3aXRoIHRoZQorICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0YXRlIG9mIHRoZSBtZWRpYSBlbGVt
ZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUsIHRoZSBvcmlnaW4gYmVpbmcgdGhl
CisgICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgRG9jdW1lbnQsIGFuZCB0aGUg
ZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWlsLgogICAgIG1fbG9hZGVyID0gVGV4
dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCo+KG1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7Ci0gICAgbV9sb2FkZXItPmxvYWQo
bV91cmwpOworICAgIGlmICghbV9sb2FkZXItPmxvYWQobV91cmwsIG1fdHJhY2tFbGVtZW50LT5t
ZWRpYUVsZW1lbnRDcm9zc09yaWdpbkF0dHJpYnV0ZSgpKSkKKyAgICAgICAgbV90cmFja0VsZW1l
bnQtPmRpZENvbXBsZXRlTG9hZCh0aGlzLCBIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlKTsKIH0K
IAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZShUZXh0VHJhY2tMb2Fk
ZXIqIGxvYWRlcikKQEAgLTEwMywxMCArMTExLDYgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6
bmV3Q3Vlc0F2YWlsYWJsZQogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0
ZWQoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIs
IG1fbG9hZGVyID09IGxvYWRlcik7Ci0gICAgCi0gICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fdHJhY2tFbGVtZW50LT5zZXRSZWFkeVN0YXRlKEhUTUxUcmFj
a0VsZW1lbnQ6OkxPQURJTkcpOwogfQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2Fk
aW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciogbG9hZGVyLCBib29sIGxvYWRpbmdGYWlsZWQp
CkBAIC0xMTUsNyArMTE5LDggQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0Nv
bXBsZQogCiAgICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
dHJhY2tFbGVtZW50LT5kaWRDb21wbGV0ZUxvYWQodGhpcywgbG9hZGluZ0ZhaWxlZCk7CisKKyAg
ICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKHRoaXMsIGxvYWRpbmdGYWlsZWQgPyBI
VE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlIDogSFRNTFRyYWNrRWxlbWVudDo6U3VjY2Vzcyk7CiB9
CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkocmV2aXNpb24gMTAxMjc2
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDkgKzMxLDExIEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkNhY2hlZFRleHRUcmFjay5oIgorI2luY2x1ZGUgIkNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIu
aCIKIApAQCAtMTM5LDE0ICsxNDEsMzEgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKENhYwogICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJlc291cmNlKTsKIH0KIAordm9pZCBU
ZXh0VHJhY2tMb2FkZXI6OmNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiQ3Jvc3Mtb3JpZ2luIHRleHQg
dHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5
LiIpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25z
b2xlTWVzc2FnZSk7CisgICAgbV9zdGF0ZSA9IEZhaWxlZDsKK30KKwogdm9pZCBUZXh0VHJhY2tM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBB
U1NFUlQobV9jYWNoZWRDdWVEYXRhID09IHJlc291cmNlKTsKIAotICAgIHByb2Nlc3NOZXdDdWVE
YXRhKHJlc291cmNlKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFtX2Nyb3NzT3JpZ2lu
TW9kZS5pc051bGwoKQorICAgICAgICAmJiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3QocmVzb3VyY2UtPnJlc3BvbnNlKCkudXJsKCkpCisgICAgICAgICYmICFyZXNvdXJj
ZS0+cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSkg
ewogCi0gICAgaWYgKG1fc3RhdGUgIT0gRmFpbGVkKQotICAgICAgICBtX3N0YXRlID0gcmVzb3Vy
Y2UtPmVycm9yT2NjdXJyZWQoKSA/IEZhaWxlZCA6IEZpbmlzaGVkOworICAgICAgICBjb3JzUG9s
aWN5UHJldmVudGVkTG9hZCgpOworICAgIH0KKworICAgIGlmIChtX3N0YXRlICE9IEZhaWxlZCkg
eworICAgICAgICBwcm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJjZSk7CisgICAgICAgIGlmIChtX3N0
YXRlICE9IEZhaWxlZCkKKyAgICAgICAgICAgIG1fc3RhdGUgPSByZXNvdXJjZS0+ZXJyb3JPY2N1
cnJlZCgpID8gRmFpbGVkIDogRmluaXNoZWQ7CisgICAgfQogCiAgICAgaWYgKCFtX2N1ZUxvYWRU
aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7
CkBAIC0xNTQsMTcgKzE3MywyOSBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjCiAgICAgY2FuY2VsTG9hZCgpOwogfQogCi1ib29sIFRleHRUcmFja0xvYWRlcjo6bG9h
ZChjb25zdCBLVVJMJiB1cmwpCitib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQogeworICAgIGNhbmNlbExvYWQo
KTsKKwogICAgIGlmICghbV9jbGllbnQtPnNob3VsZExvYWRDdWVzKHRoaXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY2FuY2VsTG9hZCgpOwotICAgIAorCiAgICAgQVNTRVJU
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7Ci0gICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1ZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKHVybCkpOworCisgICAgaWYgKCFjcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpIHsKKyAg
ICAgICAgbV9jcm9zc09yaWdpbk1vZGUgPSBjcm9zc09yaWdpbk1vZGU7CisgICAgICAgIFN0b3Jl
ZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMgPSBlcXVhbElnbm9yaW5nQ2FzZShjcm9zc09y
aWdpbk1vZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBE
b05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nl
c3NDb250cm9sKGN1ZVJlcXVlc3QsIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBhbGxvd0Ny
ZWRlbnRpYWxzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBDcm9zcy1vcmlnaW4gcmVzb3Vy
Y2VzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBDT1JTLWVuYWJsZWQgbWF5IG5vdCBsb2FkLgorICAg
ICAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCkpIHsK
KyAgICAgICAgICAgIGNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsK
ICAgICBtX2NhY2hlZEN1ZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNoZWRUZXh0VHJhY2sqPihjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFRleHRUcmFjayhjdWVSZXF1ZXN0KSk7CiAgICAgaWYg
KG1fY2FjaGVkQ3VlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmgJKHJldmlzaW9uIDEwMTI3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRlcigpOwogICAgIAotICAgIGJvb2wgbG9hZChj
b25zdCBLVVJMJik7CisgICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNy
b3NzT3JpZ2luTW9kZSk7CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBnZXROZXdD
dWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICAgICAKQEAg
LTc4LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHByb2Nlc3NOZXdDdWVEYXRh
KENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBjdWVMb2FkVGltZXJGaXJlZChUaW1lcjxUZXh0
VHJhY2tMb2FkZXI+Kik7CisgICAgdm9pZCBjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpOwogCiAg
ICAgZW51bSBTdGF0ZSB7IElkbGUsIExvYWRpbmcsIEZpbmlzaGVkLCBGYWlsZWQgfTsKICAgICAK
QEAgLTg2LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRUZXh0VHJhY2s+IG1fY2FjaGVkQ3VlRGF0YTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgVGltZXI8VGV4dFRyYWNrTG9hZGVyPiBt
X2N1ZUxvYWRUaW1lcjsKKyAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7CiAgICAgU3RhdGUg
bV9zdGF0ZTsKICAgICB1bnNpZ25lZCBtX3BhcnNlT2Zmc2V0OwogICAgIGJvb2wgbV9uZXdDdWVz
QXZhaWxhYmxlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxMjc2KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMzAgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLWJhbmQg
dGV4dCB0cmFja3MgbWF5IG9ubHkgbG9hZCBmcm9tIHNhbWUgb3JpZ2luIGFzIHRoZSBtZWRpYSBl
bGVtZW50J3MgRG9jdW1lbnQncyBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jYXB0aW9u
cy13aXRoLWFjY2Vzcy1jb250cm9sLWhlYWRlcnMucGhwOiBBZGRlZAorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25zLnZ0dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nzb3Jp
Z2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1l
eHBlY3RlZC50eHQ6IFVwZGF0ZWQgcmVzdWx0cy4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFj
ay1hZGQtdHJhY2suaHRtbDogcmVhZHlTdGF0ZSBjaGFuZ2VzIGFzIHNvb24gYXMgdGhlIHRyYWNr
IHVybCBpcyBzZXQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6IFNraXAgbmV3IHRl
c3QuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9Ta2lwcGVkOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVk
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDogRGl0dG8uCisKIDIwMTEtMTEtMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IEFzcGVjdCBSYXRp
byBQcm9wZXJ0eSBJbmhlcml0YW5jZSBBbmQgTWFrZSB0aGUgQ29tcHV0ZWQgVmFsdWUgRXF1YWwg
dGhlIFNwZWNpZmllZCBWYWx1ZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3RleHQtdHJhY2stY3Jvc3NvcmlnaW4tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS90
ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IENyb3NzLW9yaWdpbiB0ZXh0IHRyYWNr
IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAxOiBDcm9zcy1vcmlnaW4gdGV4dCB0cmFjayBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuCitUZXN0cyBsb2FkaW5n
IGNyb3NzLWRvbWFpbiA8dHJhY2s+LgorCitMb2FkaW5nIHdpdGhvdXQgQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luIGhlYWRlciwgbm8gImNyb3Nzb3JpZ2luIiBhdHRyaWJ1dGUgb24gPHZpZGVv
PgorRVZFTlQoZXJyb3IpCitQQVNTOiBzaG91bGRMb2FkIHNob3VsZCBiZSAnZmFsc2UnIGFuZCBp
cy4KK1BBU1M6IGV2ZW50LnRhcmdldCBzaG91bGQgYmUgJ1tvYmplY3QgSFRNTFRyYWNrRWxlbWVu
dF0nIGFuZCBpcy4KK1BBU1M6IHRyYWNrRWxlbWVudC5yZWFkeVN0YXRlIHNob3VsZCBiZSAnMycg
YW5kIGlzLgorCisKK0xvYWRpbmcgd2l0aG91dCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4g
aGVhZGVyLCBzZXR0aW5nIHZpZGVvLmNyb3Nzb3JpZ2luIHRvICJhbm9ueW1vdXMiCitFVkVOVChl
cnJvcikKK1BBU1M6IHNob3VsZExvYWQgc2hvdWxkIGJlICdmYWxzZScgYW5kIGlzLgorUEFTUzog
ZXZlbnQudGFyZ2V0IHNob3VsZCBiZSAnW29iamVjdCBIVE1MVHJhY2tFbGVtZW50XScgYW5kIGlz
LgorUEFTUzogdHJhY2tFbGVtZW50LnJlYWR5U3RhdGUgc2hvdWxkIGJlICczJyBhbmQgaXMuCisK
KworTG9hZGluZyB3aXRoIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiBoZWFkZXIsIGxlYXZp
bmcgdmlkZW8uY3Jvc3NvcmlnaW4gYXMgImFub255bW91cyIKK0VWRU5UKGxvYWQpCitQQVNTOiBz
aG91bGRMb2FkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgorUEFTUzogZXZlbnQudGFyZ2V0IHNo
b3VsZCBiZSAnW29iamVjdCBIVE1MVHJhY2tFbGVtZW50XScgYW5kIGlzLgorUEFTUzogdHJhY2tF
bGVtZW50LnJlYWR5U3RhdGUgc2hvdWxkIGJlICcyJyBhbmQgaXMuCisKKworTG9hZGluZyB3aXRo
IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiBhbmQgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3Jl
ZGVudGlhbHMgaGVhZGVycywgc2V0dGluZyB2aWRlby5jcm9zc29yaWdpbiB0byAidXNlLWNyZWRl
bnRpYWxzIgorRVZFTlQobG9hZCkKK1BBU1M6IHNob3VsZExvYWQgc2hvdWxkIGJlICd0cnVlJyBh
bmQgaXMuCitQQVNTOiBldmVudC50YXJnZXQgc2hvdWxkIGJlICdbb2JqZWN0IEhUTUxUcmFja0Vs
ZW1lbnRdJyBhbmQgaXMuCitQQVNTOiB0cmFja0VsZW1lbnQucmVhZHlTdGF0ZSBzaG91bGQgYmUg
JzInIGFuZCBpcy4KKworCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3RleHQtdHJhY2stY3Jvc3NvcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3RleHQtdHJhY2stY3Jvc3NvcmlnaW4uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10
cmFjay1jcm9zc29yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2Nyb3NzLWZyYW1lLWFjY2Vzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisKKyAgICAgICAgICAgIHZhciBzaG91bGRMb2FkID0gZmFsc2U7CisgICAgICAgICAgICB2YXIg
Y291bnRlciA9IDA7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
aW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gdHJhY2tMb2FkZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxv
ZygnRVZFTlQobG9hZCknKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc2hvdWxkTG9hZCcs
IHRydWUpOworCisgICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgndHJhY2snKVswXTsKKyAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd2aWRlbycpWzBdOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdldmVudC50YXJnZXQnLCB0cmFja0VsZW1lbnQpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCd0cmFja0VsZW1lbnQucmVhZHlTdGF0ZScsIEhUTUxUcmFja0VsZW1lbnQuTE9BREVE
KTsKKworICAgICAgICAgICAgICAgIGxvZygnPGJyPicpOworICAgICAgICAgICAgICAgIHN3aXRj
aChjb3VudGVyKSB7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAg
ICBsb2coJ0xvYWRpbmcgPGI+d2l0aDwvYj4gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIGFu
ZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyBoZWFkZXJzLCBzZXR0aW5nIHZpZGVv
LmNyb3Nzb3JpZ2luIHRvICJ1c2UtY3JlZGVudGlhbHMiJyk7CisgICAgICAgICAgICAgICAgICAg
IHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25z
LXdpdGgtYWNjZXNzLWNvbnRyb2wtaGVhZGVycy5waHA/b3JpZ2luPTE7Y3JlZGVudGlhbHM9MSI7
CisgICAgICAgICAgICAgICAgICAgIHRyYWNrRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Nyb3Nzb3Jp
Z2luJywgJ3VzZS1jcmVkZW50aWFscycpOworICAgICAgICAgICAgICAgICAgICB0cmFja0VsZW1l
bnQuc2V0QXR0cmlidXRlKCdzcmMnLCB1cmwpOworICAgICAgICAgICAgICAgICAgICArK2NvdW50
ZXI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAz
OgorICAgICAgICAgICAgICAgICAgICBsb2coIkVORCBPRiBURVNUIik7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0Vycm9yKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2coJ0VWRU5UKGVycm9yKScpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdzaG91bGRMb2FkJywgZmFsc2UpOworCisgICAgICAgICAg
ICAgICAgdHJhY2tFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHJhY2snKVsw
XTsKKyAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCd2aWRlbycpWzBdOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdldmVudC50YXJnZXQn
LCB0cmFja0VsZW1lbnQpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFja0VsZW1lbnQu
cmVhZHlTdGF0ZScsIEhUTUxUcmFja0VsZW1lbnQuRVJST1IpOworCisgICAgICAgICAgICAgICAg
bG9nKCc8YnI+Jyk7CisgICAgICAgICAgICAgICAgc3dpdGNoKGNvdW50ZXIpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIGxvZygnTG9hZGluZyA8Yj53aXRo
b3V0PC9iPiBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gaGVhZGVyLCBzZXR0aW5nIHZpZGVv
LmNyb3Nzb3JpZ2luIHRvICJhbm9ueW1vdXMiJyk7CisgICAgICAgICAgICAgICAgICAgIHVybCA9
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25zLXdpdGgt
YWNjZXNzLWNvbnRyb2wtaGVhZGVycy5waHA/Y291bnQ9IiArIGNvdW50ZXI7CisgICAgICAgICAg
ICAgICAgICAgIHZpZGVvRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Nyb3Nzb3JpZ2luJywgJ2Fub255
bW91cycpOworICAgICAgICAgICAgICAgICAgICB0cmFja0VsZW1lbnQucmVtb3ZlQXR0cmlidXRl
KCdzcmMnKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50LnNldEF0dHJpYnV0ZSgn
c3JjJywgdXJsKTsKKyAgICAgICAgICAgICAgICAgICAgKytjb3VudGVyOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAg
ICAgICAgbG9nKCdMb2FkaW5nIDxiPndpdGg8L2I+IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdp
biBoZWFkZXIsIGxlYXZpbmcgdmlkZW8uY3Jvc3NvcmlnaW4gYXMgImFub255bW91cyInKTsKKyAg
ICAgICAgICAgICAgICAgICAgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY2FwdGlvbnMtd2l0aC1hY2Nlc3MtY29udHJvbC1oZWFkZXJzLnBocD9vcmlnaW49
MSI7CisgICAgICAgICAgICAgICAgICAgIHRyYWNrRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3NyYycs
IHVybCk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZExvYWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFy
dCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50ID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgndHJhY2snKVswXTsKKyAgICAgICAgICAgICAgICBsb2coJ0xv
YWRpbmcgPGI+d2l0aG91dDwvYj4gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIGhlYWRlciwg
bm8gImNyb3Nzb3JpZ2luIiBhdHRyaWJ1dGUgb24gJmx0O3ZpZGVvJmd0OycpOworICAgICAgICAg
ICAgICAgIHZhciB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jYXB0aW9ucy13aXRoLWFjY2Vzcy1jb250cm9sLWhlYWRlcnMucGhwIgorICAgICAgICAgICAg
ICAgIHRyYWNrRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVybCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3Rh
cnQoKSI+CisgICAgICAgIDxwPlRlc3RzIGxvYWRpbmcgY3Jvc3MtZG9tYWluICZsdDt0cmFjayZn
dDsuPC9wPgorICAgICAgICA8dmlkZW8gPgorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRp
b25zIiBvbmVycm9yPSJ0cmFja0Vycm9yKCkiIG9ubG9hZD0idHJhY2tMb2FkZWQoKSIgPgorICAg
ICAgICA8L3ZpZGVvPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy9jYXB0aW9ucy13aXRoLWFjY2Vzcy1jb250cm9sLWhlYWRlcnMucGhwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25zLXdp
dGgtYWNjZXNzLWNvbnRyb2wtaGVhZGVycy5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jYXB0aW9ucy13aXRoLWFjY2Vzcy1jb250
cm9sLWhlYWRlcnMucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8P3BocAorCisg
ICAgJG9yaWdpbiA9ICRfR0VUWyJvcmlnaW4iXTsKKyAgICAkY3JlZGVudGlhbHMgPSAkX0dFVFsi
Y3JlZGVudGlhbHMiXTsKKworICAgIGlmICgkb3JpZ2luKQorICAgICAgICBoZWFkZXIoIkFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CisgICAgaWYg
KCRjcmVkZW50aWFscykKKyAgICAgICAgaGVhZGVyKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVk
ZW50aWFsczogdHJ1ZSIpOworICAgIAorICAgICRuYW1lID0gJ2NhcHRpb25zLnZ0dCc7CisgICAg
JGZwID0gZm9wZW4oJG5hbWUsICdyYicpOworICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0
L3Z0dCIpOworICAgIGhlYWRlcigiQ29udGVudC1MZW5ndGg6ICIgLiBmaWxlc2l6ZSgkbmFtZSkp
OworICAgIAorICAgIGZwYXNzdGhydSgkZnApOworICAgIGV4aXQ7Cis/PgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY2FwdGlvbnMudnR0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2NhcHRpb25z
LnZ0dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVz
b3VyY2VzL2NhcHRpb25zLnZ0dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorV0VCVlRU
IEZJTEUKKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDoxMC41MDAKK0xvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LAorCisyCiswMDowMDoxMS4wMDAgLS0+IDAwOjIwOjAwLjUwMAorY29uc2Vj
dGV0dWVyIGFkaXBpc2NpbmcgZWxpdCwgCisKKzMKKzAwOjAwOjIxLjAwMCAtLT4gMDA6MzA6MDAu
NTAwCitzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBk
b2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LgpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMDEyNzYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBSVU4odHJhY2tFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVuCiBSVU4odmlkZW8uYXBwZW5kQ2hpbGQodHJhY2tFbGVt
ZW50KSkKIFJVTih0cmFja0VsZW1lbnQuc3JjID0gJ2NhcHRpb25zLXdlYnZ0dC90YzAwNC13ZWJ2
dHQtZmlsZS52dHQnKQogRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICcxJykg
T0sKLUVYUEVDVEVEICh0cmFja0VsZW1lbnQucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCitFWFBFQ1RF
RCAodHJhY2tFbGVtZW50LnJlYWR5U3RhdGUgPT0gJzEnKSBPSwogRVZFTlQoYWRkdHJhY2spCiBF
WFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0IFRleHRUcmFja0xpc3RdJykgT0sKIEVY
UEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sK
SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sCShy
ZXZpc2lvbiAxMDEyNzYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJh
Y2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogCiAgICAgICAgICAgICAg
ICAgcnVuKCJ0cmFja0VsZW1lbnQuc3JjID0gJ2NhcHRpb25zLXdlYnZ0dC90YzAwNC13ZWJ2dHQt
ZmlsZS52dHQnIik7CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJh
Y2tzLmxlbmd0aCIsIDEpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tFbGVt
ZW50LnJlYWR5U3RhdGUiLCBIVE1MVHJhY2tFbGVtZW50Lk5PTkUpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidHJhY2tFbGVtZW50LnJlYWR5U3RhdGUiLCBIVE1MVHJhY2tFbGVtZW50
LkxPQURJTkcpOwogICAgICAgICAgICAgfQogCiAgICAgICAgIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1NraXBwZWQJKHJldmlzaW9uIDEwMTI3NikKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDYgKzEwOTcsOCBAQCB3
ZWJhdWRpbwogCiAjIFRoZSBFRkwgcG9ydCBoYXMgbm8gc3VwcG9ydCBmb3IgPHRyYWNrPiB3aXRo
ICoudnR0CiBtZWRpYS90cmFjaworZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3RyYWNrLWV2ZW50
LWNvbnN0cnVjdG9yLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFjay1jcm9zc29y
aWdpbi5odG1sCiAKICMgVGhlIEVGTCBwb3J0IGhhcyBubyBzdXBwb3J0IGZvciBsb2FkaW5nIGEg
UERGIGFzIGFuIGltYWdlCiBmYXN0L2ltYWdlcy9wZGYtYXMtYmFja2dyb3VuZC5odG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gMTAxMjc2KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw2ICszNjEsNyBA
QCB3ZWJhdWRpbwogIyBWSURFT19UUkFDSyBpcyBkaXNhYmxlZCBmb3Igbm93CiBtZWRpYS90cmFj
awogZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3RyYWNrLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwK
K2h0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFjay1jcm9zc29yaWdpbi5odG1sCiAKICMgQ1NT
IEZpbHRlcnMgaXMgZGlzYWJsZWQKIGNzczMvZmlsdGVycwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQJKHJldmlzaW9uIDEwMTI3NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00MzgsNiArNDM4LDcgQEAgZmFzdC9kb20vTWljcm9E
YXRhCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY2OAogbWVk
aWEvdHJhY2sKIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy90cmFjay1ldmVudC1jb25zdHJ1Y3Rv
ci5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L3RleHQtdHJhY2stY3Jvc3NvcmlnaW4uaHRtbAog
CiAjIFRlc3RzIGZvciBNZWRpYVNvdXJjZSBBUEkuIEZlYXR1cmUgaXMgbm90IHlldCBmdW5jdGlv
bmFsLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3MzEKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gMTAxMjc2KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjQxMiw2ICsyNDEyLDcg
QEAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwKIAogIyB0cmFjayBub3Qg
ZnVuY3Rpb25hbCB5ZXQuCiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvdHJhY2stZXZlbnQtY29u
c3RydWN0b3IuaHRtbAoraHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2lu
Lmh0bWwKIAogIyBTa2lwIGJlY2F1c2UgdGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IGEg
cGFnaW5nIG1vdXNlIHdoZWVsIGV2ZW50CiBmYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50
LXBhZ2luZy14LWluLW5vbi1zY3JvbGxpbmctZGl2Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCShyZXZpc2lvbiAxMDEyNzYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTQxOSw2ICsxNDE5LDcgQEAgZmFzdC9tdXRhdGlv
bgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM2NjgKIG1lZGlh
L3RyYWNrCiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvdHJhY2stZXZlbnQtY29uc3RydWN0b3Iu
aHRtbAoraHR0cC90ZXN0cy9zZWN1cml0eS90ZXh0LXRyYWNrLWNyb3Nzb3JpZ2luLmh0bWwKIAog
IyBUZXN0cyBmb3IgTWVkaWFTb3VyY2UgQVBJLiBGZWF0dXJlIGlzIG5vdCB5ZXQgZnVuY3Rpb25h
bC4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMxCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQJKHJldmlzaW9uIDEwMTI3NikKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTE5MzUsNiArMTkzNSw3IEBAIGZhc3QvbXV0YXRpb24KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNjY4CiBtZWRpYS90cmFjawogZmFzdC9ldmVudHMvY29uc3Ry
dWN0b3JzL3RyYWNrLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkv
dGV4dC10cmFjay1jcm9zc29yaWdpbi5odG1sCiAKICMgVGVzdHMgZm9yIE1lZGlhU291cmNlIEFQ
SS4gRmVhdHVyZSBpcyBub3QgeWV0IGZ1bmN0aW9uYWwuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NDczMQo=
</data>
<flag name="review"
          id="116588"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>