<?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>83390</bug_id>
          
          <creation_ts>2012-04-06 13:56:08 -0700</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector.py: do not expose raw methods from generated types</short_desc>
          <delta_ts>2012-04-10 15:40:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72861</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597630</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-06 13:56:08 -0700</bug_when>
    <thetext>Generated types in InspectorTypeBuilder are public inherited from InspectorObject and InspectorArray. This opens all raw methods to any client.
The generated types should be inherited from intermediate types instead (private inheritance cannot be used because RefPtf won&apos;t work with it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597742</commentid>
    <comment_count>1</comment_count>
      <attachid>136075</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-06 15:38:07 -0700</bug_when>
    <thetext>Created attachment 136075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597798</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-06 16:26:13 -0700</bug_when>
    <thetext>Attachment 136075 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InspectorValues.cpp:668:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorValues.cpp:763:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598239</commentid>
    <comment_count>3</comment_count>
      <attachid>136075</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-09 05:34:20 -0700</bug_when>
    <thetext>Comment on attachment 136075
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        protected. InspectorObject and InspectorArray are reimplemented by &quot;public Morozov&quot; pattern.

This pattern doesn&apos;t seem to be used outside of post-Soviet countries, could you rephrase it?

&gt; Source/WebCore/inspector/InspectorValues.cpp:671
&gt; +    *output = reinterpret_cast&lt;InspectorObject*&gt;(this);

Why not static_cast as in other places?

&gt; Source/WebCore/inspector/InspectorValues.cpp:683
&gt; +    return reinterpret_cast&lt;InspectorObject*&gt;(this);

Same here and below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598330</commentid>
    <comment_count>4</comment_count>
      <attachid>136237</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-09 09:26:43 -0700</bug_when>
    <thetext>Created attachment 136237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598332</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-09 09:27:34 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        protected. InspectorObject and InspectorArray are reimplemented by &quot;public Morozov&quot; pattern.
&gt; 
&gt; This pattern doesn&apos;t seem to be used outside of post-Soviet countries, could you rephrase it?

Done

&gt; &gt; Source/WebCore/inspector/InspectorValues.cpp:671
&gt; &gt; +    *output = reinterpret_cast&lt;InspectorObject*&gt;(this);
&gt; Why not static_cast as in other places?

Done

&gt; &gt; Source/WebCore/inspector/InspectorValues.cpp:683
&gt; &gt; +    return reinterpret_cast&lt;InspectorObject*&gt;(this);
&gt; Same here and below.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598337</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 09:33:18 -0700</bug_when>
    <thetext>Attachment 136237 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InspectorValues.cpp:668:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorValues.cpp:763:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599333</commentid>
    <comment_count>7</comment_count>
      <attachid>136468</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-10 09:21:05 -0700</bug_when>
    <thetext>Created attachment 136468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599339</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 09:23:15 -0700</bug_when>
    <thetext>Attachment 136468 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InspectorValues.cpp:668:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorValues.cpp:763:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599736</commentid>
    <comment_count>9</comment_count>
      <attachid>136468</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 15:39:56 -0700</bug_when>
    <thetext>Comment on attachment 136468
Patch

Clearing flags on attachment: 136468

Committed r113783: &lt;http://trac.webkit.org/changeset/113783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599738</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 15:40:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136075</attachid>
            <date>2012-04-06 15:38:07 -0700</date>
            <delta_ts>2012-04-09 09:26:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83390-20120407023805.patch</filename>
            <type>text/plain</type>
            <size>42811</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBjNjhjNDA2YzIxZTFk
ZTVmMDRjMTQ4MWRhYTMwOWY4NTdjNTlkMC4uYTQxYTlhNDhjMGUyZmJiMjY1NWQ2OGI4YjU0MDI4
ZmFjOTNiN2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA0LTA2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBkbyBub3QgZXhwb3NlIHJhdyBtZXRob2RzIGZy
b20gZ2VuZXJhdGVkIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MzM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludGVybWVkaWF0ZSBjbGFzc2VzIEluc3BlY3Rvck9iamVjdEJhc2UgYW5kIElu
c3BlY3RvckFycmF5QmFzZSBhcmUgY3JlYXRlZC4gVGhleSBoYXZlIGFsbCByYXcgbWV0aG9zCisg
ICAgICAgIHByb3RlY3RlZC4gSW5zcGVjdG9yT2JqZWN0IGFuZCBJbnNwZWN0b3JBcnJheSBhcmUg
cmVpbXBsZW1lbnRlZCBieSAicHVibGljIE1vcm96b3YiIHBhdHRlcm4uCisKKyAgICAgICAgIk9w
ZW4gdHlwZXMiIGFyZSBsZWZ0IGluaGVyaXRpbmcgZnJvbSBJbnNwZWN0b3JPYmplY3QsIHBsdXMg
ZmllbGQgbmFtZSBjb25zdGFudHMgYXJlIGdlbmVyYXRlZCBmb3IKKyAgICAgICAgYW4gZWFzeSBy
YW5kb20gYWNjZXNzIHRvIGFsbCBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFsbCB0aGUgY2xpZW50
IGNvZGUgaXMgZml4ZWQgdG8gdXNlIHR5cGUtc2FmZSBBUEkgcmF0aGVyIHRoYW4gcmF3IGFjY2Vz
cyBtZXRob2RzIGluIGZ1bmN0aW9uIHBhcmFtZXRlcgorICAgICAgICBhbmQgcmV0dXJuIHR5cGVz
IGFuZCBib2RpZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKFJhd1R5cGVzLk9iamVjdCk6CisgICAgICAgIChSYXdUeXBlcy5PYmpl
Y3QuZ2V0X3NldHRlcl9uYW1lKToKKyAgICAgICAgKFJhd1R5cGVzLkFycmF5KToKKyAgICAgICAg
KFJhd1R5cGVzLkFycmF5LmdldF9zZXR0ZXJfbmFtZSk6CisgICAgICAgIChUeXBlQmluZGluZ3Mu
Y3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5nZXRfY29kZV9nZW5lcmF0b3Iu
Q29kZUdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAoQXJyYXkpOgor
ICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5k
X2dlbmVyYXRlX2FkX2hvYy5JbnRlcmZhY2VHZW5lcmF0ZUNvbnRleHQpOgorICAgICAgICAoR2Vu
ZXJhdG9yLnByb2Nlc3NfdHlwZXMuR2VuZXJhdGVDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZv
ckRPTUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50QnlVcmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlk
UGF1c2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZTo6c3R5bGVXaXRoUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjp+SW5zcGVj
dG9yT2JqZWN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjph
c09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpvcGVuQWNj
ZXNzb3JzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6Omdl
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck9iamVjdEJhc2U6Okluc3BlY3Rvck9iamVjdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjp+SW5zcGVjdG9yQXJyYXlCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OndyaXRlSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcnJheUJhc2U6Okluc3BlY3RvckFycmF5QmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JBcnJheUJhc2U6OmdldCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oOgorICAgICAgICAoSW5zcGVjdG9yT2JqZWN0QmFzZSk6CisgICAgICAgIChJbnNw
ZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JBcnJheUJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpsZW5ndGgpOgorICAgICAgICAoSW5z
cGVjdG9yQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
YmplY3RCYXNlOjpzZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpw
dXNoQm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJ
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoTnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKToKKwogMjAxMi0wNC0wNiAgWmFuIERvYmVy
c2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFtHdGtdIFVuc2tpcCB0aGUg
dmlkZW8gdHJhY2sgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggNjMwMWVjMTQzZGRmMDNlMjlkMTlkMGUxM2IwNzUw
MDJkYTJlYmI4Ni4uN2RmZmVlZjkyNzNiNGFjOGUxYWMyZGUzMjRjMmMxNGY4ODNiYWJhZSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHkKQEAgLTYxLDcgKzYxLDExIEBAIFRZUEVTX1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3pl
bnNldChbIlJ1bnRpbWUuUmVtb3RlT2JqZWN0IiwgIlJ1bnRpbWUuUHJvcGVyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgYmUgYSB0ZW1wb3Jh
cnkgaGFjay4gVGltZWxpbmVFdmVudCBzaG91bGQgYmUgY3JlYXRlZCB2aWEgZ2VuZXJhdGVkIEMr
KyBBUEkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaW1lbGlu
ZS5UaW1lbGluZUV2ZW50Il0pCiAKLVRZUEVTX1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NFVCA9IGZy
b3plbnNldChbIlRpbWVsaW5lLlRpbWVsaW5lRXZlbnQiXSkKK1RZUEVTX1dJVEhfT1BFTl9GSUVM
RF9MSVNUX1NFVCA9IGZyb3plbnNldChbIlRpbWVsaW5lLlRpbWVsaW5lRXZlbnQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluc3BlY3RvclN0eWxlU2hl
ZXQgbm90IG9ubHkgY3JlYXRlcyB0aGlzIHByb3BlcnR5IGJ1dCB3YW50cyB0byByZWFkIGl0IGFu
ZCBtb2RpZnkgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDU1MuQ1NTUHJvcGVydHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIEluc3BlY3RvclJlc291cmNlQWdlbnQgbmVlZHMgdG8gdXBkYXRlIG1pbWUtdHlw
ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ldHdvcmsu
UmVzcG9uc2UiXSkKIAogY21kbGluZV9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQog
Y21kbGluZV9wYXJzZXIuYWRkX29wdGlvbigiLS1vdXRwdXRfaF9kaXIiKQpAQCAtNDIyLDcgKzQy
Niw5IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAgICAgICAgIGRlZiBnZXRfZ2V0dGVyX25h
bWUoKToKICAgICAgICAgICAgIHJldHVybiAiT2JqZWN0IgogCi0gICAgICAgIGdldF9zZXR0ZXJf
bmFtZSA9IGdldF9nZXR0ZXJfbmFtZQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRl
ZiBnZXRfc2V0dGVyX25hbWUoKToKKyAgICAgICAgICAgIHJldHVybiAiVmFsdWUiCiAKICAgICAg
ICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2NfaW5pdGlhbGl6ZXIoKToKQEAgLTUw
Niw3ICs1MTIsOSBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogICAgICAgICBkZWYgZ2V0X2dl
dHRlcl9uYW1lKCk6CiAgICAgICAgICAgICByZXR1cm4gIkFycmF5IgogCi0gICAgICAgIGdldF9z
ZXR0ZXJfbmFtZSA9IGdldF9nZXR0ZXJfbmFtZQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAg
ICAgIGRlZiBnZXRfc2V0dGVyX25hbWUoKToKKyAgICAgICAgICAgIHJldHVybiAiVmFsdWUiCiAK
ICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2NfaW5pdGlhbGl6ZXIoKToK
QEAgLTExNDEsMTAgKzExNDksMTggQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlX2RhdGEgPSBjbGFzc19iaW5kaW5nX2Nscy5yZXNv
bHZlX2RhdGFfCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlci53cml0ZV9k
b2Mod3JpdGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc19uYW1lID0g
Zml4ZWRfdHlwZV9uYW1lLmNsYXNzX25hbWUKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpc19vcGVuX3R5cGUgPSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25h
bWUpIGluIFRZUEVTX1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NFVAorCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpeGVkX3R5cGVfbmFtZS5vdXRwdXRfY29tbWVudCh3cml0ZXIpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCJjbGFzcyAiKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1Ymxp
YyBJbnNwZWN0b3JPYmplY3Qge1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVyLmFwcGVuZCgiIDogcHVibGljICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIGlzX29wZW5fdHlwZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvck9iamVjdCIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3RCYXNlIikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIHtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCJwdWJsaWM6XG4iKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZF9ob2NfdHlwZV93cml0ZXIgPSB3cml0ZXIuaW5zZXJ0X3dyaXRlcigiICAg
ICIpCiAKQEAgLTExODQsNyArMTIwMCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAg
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwlcz4gcHRyKQorICAg
ICAgICBCdWlsZGVyKFBhc3NSZWZQdHI8LyolcyovSW5zcGVjdG9yT2JqZWN0PiBwdHIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBi
dWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICAgICAgbV9yZXN1bHQg
PSBwdHI7CkBAIC0xMjIyLDYgKzEyMzgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAg
IG9wZXJhdG9yIFJlZlB0cjwlcz4mICgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7CisgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
UmVmUHRyPCVzPio+KCZtX3Jlc3VsdCk7CiAgICAgICAgIH0KIApAQCAtMTIzMiw3ICsxMjQ5LDcg
QEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgIH07CiAKICIiIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlIChjbGFzc19uYW1lLCBjbGFzc19uYW1lLCBjbGFzc19uYW1lLCBjbGFz
c19uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2xhc3NfbmFtZSwg
Y2xhc3NfbmFtZSwgY2xhc3NfbmFtZSwgY2xhc3NfbmFtZSwgY2xhc3NfbmFtZSkpCiAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAvKlxuIikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgKiBTeW50
aGV0aWMgY29uc3RydWN0b3I6XG4iKQpAQCAtMTI0NCw5ICsxMjYxLDkgQEAgY2xhc3MgVHlwZUJp
bmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZV9t
dWx0aWxpbmUoCiAiIiIgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oYWRvcHRSZWYobmV3ICVz
KCkpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCkpOwogICAgIH0KLSIiIiAlIGNsYXNzX25hbWUpCisiIiIpCiAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB0eXBlZGVmIFR5cGVC
dWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7XG4iKQogCkBAIC0xMjY1LDcgKzEy
ODIsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgc2V0dGVyX25hbWUgaW4gSU5TUEVDVE9SX09CSkVDVF9TRVRURVJfTkFN
RVM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xp
bmUoIiAgICB1c2luZyBJbnNwZWN0b3JPYmplY3Q6OiVzO1xuXG4iICUgc2V0dGVyX25hbWUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAg
ICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjolcztcblxuIiAlIHNldHRlcl9uYW1lKQogCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsYXNzX2JpbmRpbmdfY2xzLm5lZWRf
dXNlcl9ydW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpXG4iICUgY2xhc3NfbmFtZSkKQEAgLTEyNzYs
OCArMTI5Myw4IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNpZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9O
QU1FKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUo
IiAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVlKG9iamVjdC5nZXQoKSk7XG4iKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xu
IiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgdHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNz
X25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGlu
ZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JXMqPihvYmplY3QuZ2V0KCkpO1xuIiAlIGNs
YXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0
b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNzX25hbWUpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8JXMqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNlKj4o
b2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgfVxuIikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIlxuIikKIApAQCAtMTMyMiw2ICsxMzM5
LDE3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBBU1NFUlQoZm91bmRQcm9w
ZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXplKCkpO1xuIikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgifVxuXG5cbiIpCiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfb3Blbl90eXBlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRleHQu
Y3BwX3dyaXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFw
cGVuZCgiXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5l
d2xpbmUoIiAgICAvLyBQcm9wZXJ0eSBuYW1lcyBmb3IgdHlwZSBnZW5lcmF0ZWQgYXMgb3Blbi5c
biIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJvcF9kYXRhIGlu
IHJlc29sdmVfZGF0YS5tYWluX3Byb3BlcnRpZXMgKyByZXNvbHZlX2RhdGEub3B0aW9uYWxfcHJv
cGVydGllczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wX25h
bWUgPSBwcm9wX2RhdGEucFsibmFtZSJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcF9maWVsZF9uYW1lID0gQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90
b191cHBlcihwcm9wX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgY29uc3QgY2hhciogJXM7XG4iICUgKHByb3Bf
ZmllbGRfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Bw
X3dyaXRlci5uZXdsaW5lKCJjb25zdCBjaGFyKiAlcyVzOjolcyA9IFwiJXNcIjtcbiIgJSAoaGVs
cGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUsIHByb3BfZmllbGRfbmFt
ZSwgcHJvcF9uYW1lKSkKKworCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5uZXdsaW5lKCJ9O1xuXG4iKQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN0YXRp
Y21ldGhvZApAQCAtMjIwNCwxOSArMjIzMiwyNCBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0
b3JBcnJheSB7CitjbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJhc2UgewogcHJp
dmF0ZToKICAgICBBcnJheSgpIHsgfQogCisgICAgSW5zcGVjdG9yQXJyYXkqIG9wZW5BY2Nlc3Nv
cnMoKSB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkgPT0g
c2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHRoaXMpOworICAgIH0KKwogcHVibGljOgogICAgIHZv
aWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZhbHVlKQogICAgIHsKLSAgICAgICAgQXJyYXlJdGVt
SGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcywgdmFsdWUpOworICAgICAgICBBcnJh
eUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJlZlB0cih0aGlzLT5vcGVuQWNjZXNzb3JzKCks
IHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIGFkZEl0ZW0oVCB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNoUmF3KHRoaXMsIHZhbHVlKTsKKyAg
ICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vz
c29ycygpLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4g
PiBjcmVhdGUoKQpAQCAtMjIzMyw3ICsyMjY2LDcgQEAgcHVibGljOgogICAgICAgICBhc3NlcnRD
b3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwogI2VuZGlmICAvLyAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3Rv
ckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QXJyYXk8VD4qPihhcnJheS5nZXQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJh
eTxUPio+KHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CiAg
ICAgfQogCiAjaWYgIiIiICsgVkFMSURBVE9SX0lGREVGX05BTUUgKyAiIiIKQEAgLTIyNTAsOSAr
MjI4Myw5IEBAIHB1YmxpYzoKIH07CiAKIHN0cnVjdCBTdHJ1Y3RJdGVtVHJhaXRzIHsKLSAgICBz
dGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVj
dG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIGFycmF5LT5wdXNoT2JqZWN0KHZhbHVlKTsKKyAgICAgICAgYXJyYXktPnB1c2hW
YWx1ZSh2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIyOTQs
OSArMjMyNyw5IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsKIHRl
bXBsYXRlPD4KIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7CiAgICAg
c3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9y
QXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCisgICAgICAg
IHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1
c2hPYmplY3QodmFsdWUpOworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9OwogfTsKQEAgLTIzMDYsNyArMjMzOSw3IEBAIHN0cnVjdCBBcnJheUl0
ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+ID4gewogICAgIHN0cnVjdCBUcmFpdHMgewog
ICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4gPiB2YWx1ZSkKICAgICAgICAgewotICAgICAg
ICAgICAgYXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7CisgICAgICAgICAgICBhcnJheS0+cHVzaFZh
bHVlKHZhbHVlKTsKICAgICAgICAgfQogICAgIH07CiB9OwpAQCAtMjM0OCw2ICsyMzgxLDggQEAg
U3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIH0gLy8gbmFtZXNwYWNl
IFR5cGVCdWlsZGVyCiAKKyRpbXBsQ29kZQorCiAjaWYgIiIiICsgVkFMSURBVE9SX0lGREVGX05B
TUUgKyAiIiIKIAogJHZhbGlkYXRvckNvZGUKQEAgLTI0NjcsNiArMjUwMiw3IEBAIGNsYXNzIEdl
bmVyYXRvcjoKICAgICB0eXBlX2J1aWxkZXJfZm9yd2FyZHMgPSBbXQogICAgIHZhbGlkYXRvcl9p
bXBsX2xpc3QgPSBbXQogICAgIHZhbGlkYXRvcl9pbXBsX3Jhd190eXBlc19saXN0ID0gW10KKyAg
ICB0eXBlX2J1aWxkZXJfaW1wbF9saXN0ID0gW10KIAogCiAgICAgQHN0YXRpY21ldGhvZApAQCAt
Mjc3Nyw2ICsyODEzLDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogCiAgICAgICAgIGNsYXNzIEludGVy
ZmFjZUdlbmVyYXRlQ29udGV4dDoKICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIgPSAibm90
IHN1cHBvcnRlZCBpbiBJbnRlcmZhY2VHZW5lcmF0ZUNvbnRleHQiCisgICAgICAgICAgICBjcHBf
d3JpdGVyID0gdmFsaWRhdG9yX3dyaXRlcgogCiAgICAgICAgIGZvciB0eXBlIGluIGFkX2hvY190
eXBlX2xpc3Q6CiAgICAgICAgICAgICBnZW5lcmF0b3IgPSB0eXBlLmdldF9jb2RlX2dlbmVyYXRv
cigpCkBAIC0yNzkxLDYgKzI4MjgsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAgICAgY2xh
c3MgR2VuZXJhdGVDb250ZXh0OgogICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9IFdyaXRl
cihHZW5lcmF0b3IudmFsaWRhdG9yX2ltcGxfbGlzdCwgIiIpCisgICAgICAgICAgICBjcHBfd3Jp
dGVyID0gV3JpdGVyKEdlbmVyYXRvci50eXBlX2J1aWxkZXJfaW1wbF9saXN0LCAiIikKIAogICAg
ICAgICBkZWYgZ2VuZXJhdGVfYWxsX2RvbWFpbnNfY29kZShvdXQsIHR5cGVfZGF0YV9jYWxsYmFj
ayk6CiAgICAgICAgICAgICB3cml0ZXIgPSBXcml0ZXIob3V0LCAiIikKQEAgLTI5MDUsNiArMjk0
Myw3IEBAIHR5cGVidWlsZGVyX2hfZmlsZS53cml0ZShUZW1wbGF0ZXMudHlwZWJ1aWxkZXJfaC5z
dWJzdGl0dXRlKE5vbmUsCiAKIHR5cGVidWlsZGVyX2NwcF9maWxlLndyaXRlKFRlbXBsYXRlcy50
eXBlYnVpbGRlcl9jcHAuc3Vic3RpdHV0ZShOb25lLAogICAgIGVudW1Db25zdGFudFZhbHVlcz1F
bnVtQ29uc3RhbnRzLmdldF9lbnVtX2NvbnN0YW50X2NvZGUoKSwKKyAgICBpbXBsQ29kZT1qb2lu
KGZsYXR0ZW5fbGlzdChHZW5lcmF0b3IudHlwZV9idWlsZGVyX2ltcGxfbGlzdCksICIiKSwKICAg
ICB2YWxpZGF0b3JDb2RlPWpvaW4oZmxhdHRlbl9saXN0KEdlbmVyYXRvci52YWxpZGF0b3JfaW1w
bF9saXN0KSwgIiIpKSkKIAogYmFja2VuZF9qc19maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5k
X2pzLnN1YnN0aXR1dGUoTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IGNlNDM3YmZkNTBkNzEzOTk1ZTkwMTVmMDE3NjkzNjM4MGVi
NTZjYTguLjg1NDE1Njg5MWY3NzUxZWFkOTJlODgxY2QwNmY4MTNhNGYyM2UzZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNTAzLDcg
KzUwMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAgICAgcmVzdWx0ID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG5vZGVzLT5sZW5ndGgoKTsgKytpKQotICAgICAgICByZXN1bHQtPnB1c2hOdW1iZXIocHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShpKSkpOworICAgICAgICByZXN1bHQtPmFkZEl0
ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShpKSkpOwogfQogCiBpbnQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkK
QEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3Rl
bmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbgogICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IHZlY3Rvci5zaXplKCk7ICsraikgewogICAgICAgICAgICAgY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gdmVjdG9yW2pdOwogICAgICAg
ICAgICAgaWYgKGxpc3RlbmVyLnVzZUNhcHR1cmUpCi0gICAgICAgICAgICAgICAgbGlzdGVuZXJz
QXJyYXktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBp
bmZvLmV2ZW50VHlwZSwgaW5mby5ub2RlKSk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXJzQXJy
YXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2
ZW50VHlwZSwgaW5mby5ub2RlKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc1NSw3ICs3NTUs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbgogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsg
aiA8IHZlY3Rvci5zaXplKCk7ICsraikgewogICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gdmVjdG9yW2pdOwogICAgICAgICAgICAgaWYgKCFsaXN0
ZW5lci51c2VDYXB0dXJlKQotICAgICAgICAgICAgICAgIGxpc3RlbmVyc0FycmF5LT5wdXNoT2Jq
ZWN0KGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaW5mby5ldmVudFR5cGUs
IGluZm8ubm9kZSkpOworICAgICAgICAgICAgICAgIGxpc3RlbmVyc0FycmF5LT5hZGRJdGVtKGJ1
aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaW5mby5ldmVudFR5cGUsIGluZm8u
bm9kZSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGQKICAgICByZXR1cm4gY2hpbGRyZW4ucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiBub2Rl
KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIE5vZGUqIG5vZGUpCiB7CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50
TGlzdGVuZXIgPSByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5saXN0ZW5lcjsKICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6RE9N
OjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCAzNGI0MWU2NGZiMjBlOGFmYzgyZGQ2ZGNlMzU3ODBkNjVl
ZTEyMGNmLi42Yjk2YzJiOWM3MTI4YjMzYzViNWE3YzZiOWM4YmM0MmQyNDdlZjdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBi
dWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqKTsKICAgICBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gYnVpbGRBcnJheUZvckVsZW1l
bnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJl
bihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVy
KGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIE5vZGUqKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlz
dGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKik7CiAKICAgICBO
b2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXgg
Y2U3NTNjYjIyY2M4MDg4NDY5Njk1MTIzMWJjNTA3NGU5YzE5Yzk1MC4uMjMxYWVlNTRmNWYyNDM3
NDk3ZmVkODA5OTdjMTdhZDIzNmYwZDI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMzA3LDggKzMwNyw4
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVu
dChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvCiAgICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBl
KSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgewogICAgICAgICAvLyBGb3Ig
aW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRo
ZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCiAgICAgICAgIC8vIFRh
cmdldCBub2RlIG1heSBiZSB1bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2gg
aXQgZmlyc3QuCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHRhcmdldE5vZGVPYmpl
Y3QgPSBtX2RvbUFnZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldE9iamVj
dCgidGFyZ2V0Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOworICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1fZG9tQWdl
bnQtPnJlc29sdmVOb2RlKHRhcmdldCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNl
T2JqZWN0R3JvdXApOworICAgICAgICBkZXNjcmlwdGlvbi0+c2V0VmFsdWUoInRhcmdldE5vZGUi
LCB0YXJnZXROb2RlT2JqZWN0KTsKIAogICAgICAgICAvLyBGaW5kIGJyZWFrcG9pbnQgb3duZXIg
bm9kZS4KICAgICAgICAgaWYgKCFpbnNlcnRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggOTI0YmUzODQyOWY3NDA5
NjIzYjI2Nzc5MmJhZDA0NTYzM2RjODhmOC4uMjVmYTNmYmFjNDIxZWQ0ZWEyNzNlZTIwNTg5ZWU1
NGI5YzgwMzJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjQyLDkgKzI0Miw5IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IGxpCiAgICAgZm9yIChTY3JpcHRzTWFwOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0cy5iZWdp
bigpOyBpdCAhPSBtX3NjcmlwdHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgaWYgKCFtYXRjaGVz
KGl0LT5zZWNvbmQudXJsLCB1cmwsIGlzUmVnZXgpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9p
bnQoYnJlYWtwb2ludElkLCBpdC0+Zmlyc3QsIGJyZWFrcG9pbnQpOworICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtw
b2ludChicmVha3BvaW50SWQsIGl0LT5maXJzdCwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChs
b2NhdGlvbikKLSAgICAgICAgICAgIGxvY2F0aW9ucy0+cHVzaE9iamVjdChsb2NhdGlvbik7Cisg
ICAgICAgICAgICBsb2NhdGlvbnMtPmFkZEl0ZW0obG9jYXRpb24pOwogICAgIH0KICAgICAqb3V0
QnJlYWtwb2ludElkID0gYnJlYWtwb2ludElkOwogfQpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcHRWYWx1CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRl
KTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAg
ICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6
RXhjZXB0aW9uOwotICAgICAgICAgICAgbV9icmVha0F1eERhdGEgPSBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KGV4Y2VwdGlvbiwgImJhY2t0cmFjZSIpOworICAgICAgICAgICAgbV9icmVha0F1
eERhdGEgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KGV4Y2VwdGlvbiwgImJhY2t0cmFjZSIp
LT5vcGVuQWNjZXNzb3JzKCk7CiAgICAgICAgICAgICAvLyBtX2JyZWFrQXV4RGF0YSBtaWdodCBi
ZSBudWxsIGFmdGVyIHRoaXMuCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDgyYzAxYjllYTE1ZDg5NGY3
ZjI4YjAxZmIxMTQxNTBkN2FhYWEzYjUuLmRmMDQwODM5YzhlNDg2NmE1YzFiY2M4NmQwNzMyNWMy
NzAxOGRlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC01ODYsMTQgKzU4NiwxMiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwog
ICAgIHJlc3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoY29u
dGVudCwgcXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBtYXRjaGVzQ291bnQpCitzdGF0
aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVj
dEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgbWF0Y2hlc0NvdW50KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5zZXRTdHJpbmcoImZy
YW1lSWQiLCBmcmFtZUlkKTsKLSAgICByZXN1bHQtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAg
ICByZXN1bHQtPnNldE51bWJlcigibWF0Y2hlc0NvdW50IiwgbWF0Y2hlc0NvdW50KTsKLQotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1
bHQ6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRVcmwodXJsKQorICAgICAgICAuc2V0RnJhbWVJZChm
cmFtZUlkKQorICAgICAgICAuc2V0TWF0Y2hlc0NvdW50KG1hdGNoZXNDb3VudCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gPiYgcmVzdWx0cykKQEAgLTYx
MiwxMyArNjEwLDEzIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNl
cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAgICAgICAgICBpZiAo
dGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSwgJmNvbnRlbnQpKSB7
CiAgICAgICAgICAgICAgICAgaW50IG1hdGNoZXNDb3VudCA9IENvbnRlbnRTZWFyY2hVdGlsczo6
Y291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMocmVnZXgsIGNvbnRlbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChtYXRjaGVzQ291bnQpCi0gICAgICAgICAgICAgICAgICAgIHNlYXJjaFJlc3Vs
dHMtPnB1c2hWYWx1ZShidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChmcmFtZUlkKGZyYW1lKSwg
Y2FjaGVkUmVzb3VyY2UtPnVybCgpLCBtYXRjaGVzQ291bnQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2VhcmNoUmVzdWx0cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChmcmFt
ZUlkKGZyYW1lKSwgY2FjaGVkUmVzb3VyY2UtPnVybCgpLCBtYXRjaGVzQ291bnQpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobWFpblJlc291cmNlQ29udGVudChmcmFt
ZSwgZmFsc2UsICZjb250ZW50KSkgewogICAgICAgICAgICAgaW50IG1hdGNoZXNDb3VudCA9IENv
bnRlbnRTZWFyY2hVdGlsczo6Y291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMocmVnZXgsIGNv
bnRlbnQpOwogICAgICAgICAgICAgaWYgKG1hdGNoZXNDb3VudCkKLSAgICAgICAgICAgICAgICBz
ZWFyY2hSZXN1bHRzLT5wdXNoVmFsdWUoYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoZnJhbWVJ
ZChmcmFtZSksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CisgICAg
ICAgICAgICAgICAgc2VhcmNoUmVzdWx0cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlYXJjaFJl
c3VsdChmcmFtZUlkKGZyYW1lKSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBtYXRjaGVzQ291
bnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODk4LDEzICs4OTYsMTMgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2Vu
dDo6YnVpbGRPYmplY3QKICAgICAgICAgc3VicmVzb3VyY2VzLT5hZGRJdGVtKHJlc291cmNlT2Jq
ZWN0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuQXJyYXk7
CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVS
ZXNvdXJjZVRyZWU+ID4gY2hpbGRyZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZy
YW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+
bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIWNoaWxkcmVuQXJyYXkpIHsKLSAgICAgICAg
ICAgIGNoaWxkcmVuQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQtPnNldEFycmF5KCJjaGlsZEZyYW1lcyIsIGNoaWxkcmVuQXJyYXkpOworICAgICAg
ICAgICAgY2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0
Q2hpbGRGcmFtZXMoY2hpbGRyZW5BcnJheSk7CiAgICAgICAgIH0KLSAgICAgICAgY2hpbGRyZW5B
cnJheS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckZyYW1lVHJlZShjaGlsZCkpOworICAgICAg
ICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKGNoaWxkKSk7
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMTcwMDIxMTdiNWFkMjY0
YTQwNmE5MTRkODcxMzFmOWY1MzQwMmM5ZS4uMGQwYzc5MzMwYzkyNDcwNDI5MDFhZjAzODhmYTc5
N2RhMjQ0ZTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lCiAgICAgICAgICAgICBjYWNoZWRSZXNvdXJjZVNpemUgPSBjYWNoZWRSZXNvdXJjZS0+
ZW5jb2RlZFNpemUoKTsKICAgICAgICAgICAgIC8vIFVzZSBtaW1lIHR5cGUgZnJvbSBjYWNoZWQg
cmVzb3VyY2UgaW4gY2FzZSB0aGUgb25lIGluIHJlc3BvbnNlIGlzIGVtcHR5LgogICAgICAgICAg
ICAgaWYgKHJlc291cmNlUmVzcG9uc2UgJiYgcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKCJtaW1lVHlwZSIs
IGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAgICAgICAgICAgICAg
IHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9u
c2U6Ok1pbWVUeXBlLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKIAog
ICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQs
IGNhY2hlZFJlc291cmNlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGVjNWI3N2U2YzJmMWE2ZjE5ZWYyZDhl
OGY4MmI1YTY5MTRmOThjNTAuLmFiODk2NjcyNTg5OGY5YTRjZGI1ODUxMWI1ZGNmNjUxMGYwNjE4
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4o
Q1NTUnVsZSogcnVsZSwgQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+KgogICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlVVJMID0gc3R5bGVTaGVldC0+ZmluYWxVUkwoKTsKICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVVJM
ID0gIiI7Ci0gICAgICAgICAgICAgICAgICAgIG1lZGlhQXJyYXktPnB1c2hPYmplY3QoYnVpbGRN
ZWRpYU9iamVjdChtZWRpYUxpc3QsIHN0eWxlU2hlZXQtPm93bmVyTm9kZSgpID8gTWVkaWFMaXN0
U291cmNlTGlua2VkU2hlZXQgOiBNZWRpYUxpc3RTb3VyY2VJbmxpbmVTaGVldCwgc291cmNlVVJM
KSk7CisgICAgICAgICAgICAgICAgICAgIG1lZGlhQXJyYXktPmFkZEl0ZW0oYnVpbGRNZWRpYU9i
amVjdChtZWRpYUxpc3QsIHN0eWxlU2hlZXQtPm93bmVyTm9kZSgpID8gTWVkaWFMaXN0U291cmNl
TGlua2VkU2hlZXQgOiBNZWRpYUxpc3RTb3VyY2VJbmxpbmVTaGVldCwgc291cmNlVVJMKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBhcmVudFJ1bGUgPSBzdHlsZVNoZWV0
LT5vd25lclJ1bGUoKTsKICAgICAgICAgICAgICAgICBpZiAocGFyZW50UnVsZSkKQEAgLTUxMCw3
ICs1MTAsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0
b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmV2aW91c1BhcnNlZE9rOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gYWN0aXZlSXQtPnNlY29uZC0+Z2V0Qm9vbGVh
bigicGFyc2VkT2siLCAmcHJldmlvdXNQYXJzZWRPayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+c2Vjb25kLT5nZXRCb29sZWFuKFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywgJnByZXZpb3VzUGFyc2VkT2spOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTUxOSw3ICs1MTksNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNv
bgogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgYWN0aXZlSXQtPnNlY29uZC0+c2V0U3RhdHVzKFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlKTsKLSAgICAgICAgICAgICAgICAgICAgYWN0aXZl
SXQtPnNlY29uZC0+cmVtb3ZlKCJzaG9ydGhhbmROYW1lIik7CisgICAgICAgICAgICAgICAgICAg
IGFjdGl2ZUl0LT5zZWNvbmQtPnJlbW92ZShUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6
U2hvcnRoYW5kTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlv
dXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTU0Niw3ICs1NDYsNyBA
QCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6
c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBzaG9ydGhhbmRFbnRyeSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZEVudHJ5LT5zZXRTdHJpbmcoIm5hbWUiLCBz
aG9ydGhhbmQpOwogICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRFbnRyeS0+c2V0U3RyaW5n
KCJ2YWx1ZSIsIHNob3J0aGFuZFZhbHVlKHNob3J0aGFuZCkpOwotICAgICAgICAgICAgICAgICAg
ICBzaG9ydGhhbmRFbnRyaWVzLT5wdXNoT2JqZWN0KHNob3J0aGFuZEVudHJ5LnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZEVudHJpZXMtPmFkZEl0ZW0oc2hvcnRoYW5k
RW50cnkucmVsZWFzZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5k
ZXggYjg5NTkzNzJiMGVmMzBiZGZmNWE4MDNlYWY5NzA5MDBmNzk4Nzc0MS4uYjZiM2MzY2RhNmZk
ZTBiODdiYzM4NzZmOTdiZjU1NzBmNTdhNjZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgZW51bSBUb2tlbiB7CiAg
ICAgT0JKRUNUX1BBSVJfU0VQQVJBVE9SLAogICAgIElOVkFMSURfVE9LRU4sCiB9OwotICAgIAor
CiBjb25zdCBjaGFyKiBjb25zdCBudWxsU3RyaW5nID0gIm51bGwiOwogY29uc3QgY2hhciogY29u
c3QgdHJ1ZVN0cmluZyA9ICJ0cnVlIjsKIGNvbnN0IGNoYXIqIGNvbnN0IGZhbHNlU3RyaW5nID0g
ImZhbHNlIjsKQEAgLTI0MSwxMSArMjQxLDExIEBAIFRva2VuIHBhcnNlVG9rZW4oY29uc3QgVUNo
YXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zdCBVQ2hhcioqIHRva2VuU3RhcnQsCiAg
ICAgY2FzZSAnOCc6CiAgICAgY2FzZSAnOSc6CiAgICAgY2FzZSAnLSc6Ci0gICAgICAgIGlmIChw
YXJzZU51bWJlclRva2VuKHN0YXJ0LCBlbmQsIHRva2VuRW5kKSkgCisgICAgICAgIGlmIChwYXJz
ZU51bWJlclRva2VuKHN0YXJ0LCBlbmQsIHRva2VuRW5kKSkKICAgICAgICAgICAgIHJldHVybiBO
VU1CRVI7Ci0gICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICBicmVhazsKICAgICBj
YXNlICciJzoKLSAgICAgICAgaWYgKHBhcnNlU3RyaW5nVG9rZW4oc3RhcnQgKyAxLCBlbmQsIHRv
a2VuRW5kKSkgCisgICAgICAgIGlmIChwYXJzZVN0cmluZ1Rva2VuKHN0YXJ0ICsgMSwgZW5kLCB0
b2tlbkVuZCkpCiAgICAgICAgICAgICByZXR1cm4gU1RSSU5HOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC02NjEsMjIgKzY2MSwyOSBAQCB2b2lkIEluc3BlY3RvclN0cmluZzo6d3JpdGVKU09O
KFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QKICAgICBkb3VibGVRdW90ZVN0cmluZyhtX3N0
cmluZ1ZhbHVlLCBvdXRwdXQpOwogfQogCi1JbnNwZWN0b3JPYmplY3Q6On5JbnNwZWN0b3JPYmpl
Y3QoKQorSW5zcGVjdG9yT2JqZWN0QmFzZTo6fkluc3BlY3Rvck9iamVjdEJhc2UoKQogewogfQog
Ci1ib29sIEluc3BlY3Rvck9iamVjdDo6YXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IG91dHB1dCkKK2Jvb2wgSW5zcGVjdG9yT2JqZWN0QmFzZTo6YXNPYmplY3QoUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIG91dHB1dCkKIHsKLSAgICAqb3V0cHV0ID0gdGhpczsKKyAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0
QmFzZSksIGNhbm5vdF9jYXN0KTsKKyAgICAqb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDxJbnNw
ZWN0b3JPYmplY3QqPih0aGlzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdDo6YXNPYmplY3QoKQorUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdEJhc2U6OmFzT2JqZWN0KCkKIHsKLSAgICBy
ZXR1cm4gdGhpczsKKyAgICByZXR1cm4gb3BlbkFjY2Vzc29ycygpOwogfQogCi1ib29sIEluc3Bl
Y3Rvck9iamVjdDo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkg
Y29uc3QKK0luc3BlY3Rvck9iamVjdCogSW5zcGVjdG9yT2JqZWN0QmFzZTo6b3BlbkFjY2Vzc29y
cygpCit7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvck9iamVjdCkgPT0gc2l6
ZW9mKEluc3BlY3Rvck9iamVjdEJhc2UpLCBjYW5ub3RfY2FzdCk7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SW5zcGVjdG9yT2JqZWN0Kj4odGhpcyk7Cit9CisKK2Jvb2wgSW5zcGVjdG9y
T2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkg
Y29uc3QKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOwog
ICAgIGlmICghdmFsdWUpCkBAIC02ODQsNyArNjkxLDcgQEAgYm9vbCBJbnNwZWN0b3JPYmplY3Q6
OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiBvdXRwdXQpIGNvbnN0CiAgICAg
cmV0dXJuIHZhbHVlLT5hc0Jvb2xlYW4ob3V0cHV0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JPYmpl
Y3Q6OmdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyogb3V0cHV0KSBjb25zdAor
Ym9vbCBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBT
dHJpbmcqIG91dHB1dCkgY29uc3QKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVl
ID0gZ2V0KG5hbWUpOwogICAgIGlmICghdmFsdWUpCkBAIC02OTIsNyArNjk5LDcgQEAgYm9vbCBJ
bnNwZWN0b3JPYmplY3Q6OmdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyogb3V0
cHV0KSBjb25zdAogICAgIHJldHVybiB2YWx1ZS0+YXNTdHJpbmcob3V0cHV0KTsKIH0KIAotUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdDo6Z2V0T2JqZWN0KGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0
b3JPYmplY3RCYXNlOjpnZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOwogICAgIGlmICgh
dmFsdWUpCkBAIC03MDAsNyArNzA3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IElu
c3BlY3Rvck9iamVjdDo6Z2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IEluc3BlY3Rvck9iamVjdDo6Z2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0QXJyYXkoY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHZhbHVlID0gZ2V0KG5hbWUpOwogICAgIGlmICghdmFsdWUpCkBAIC03MDgsNyArNzE1LDcgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yT2JqZWN0OjpnZXRBcnJheShjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlLT5hc0FycmF5KCk7CiB9CiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3Rvck9iamVjdDo6Z2V0KGNvbnN0IFN0
cmluZyYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3Rvck9i
amVjdEJhc2U6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgRGljdGlvbmFy
eTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGEuZmluZChuYW1lKTsKICAgICBpZiAoaXQgPT0g
bV9kYXRhLmVuZCgpKQpAQCAtNzE2LDcgKzcyMyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IEluc3BlY3Rvck9iamVjdDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnJlbW92ZShjb25z
dCBTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnJlbW92ZShjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgbV9kYXRhLnJlbW92ZShuYW1lKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fb3JkZXIuc2l6ZSgpOyArK2kpIHsKQEAgLTcyNyw3ICs3MzQsNyBAQCB2
b2lkIEluc3BlY3Rvck9iamVjdDo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiB9
CiAKLXZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0
KSBjb25zdAordm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRl
ciogb3V0cHV0KSBjb25zdAogewogICAgIG91dHB1dC0+YXBwZW5kKCd7Jyk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX29yZGVyLnNpemUoKTsgKytpKSB7CkBAIC03NDIsMjkgKzc0OSwz
MSBAQCB2b2lkIEluc3BlY3Rvck9iamVjdDo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1
dCkgY29uc3QKICAgICBvdXRwdXQtPmFwcGVuZCgnfScpOwogfQogCi1JbnNwZWN0b3JPYmplY3Q6
Okluc3BlY3Rvck9iamVjdCgpCitJbnNwZWN0b3JPYmplY3RCYXNlOjpJbnNwZWN0b3JPYmplY3RC
YXNlKCkKICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGVPYmplY3QpCiAgICAgLCBtX2RhdGEoKQog
ICAgICwgbV9vcmRlcigpCiB7CiB9CiAKLUluc3BlY3RvckFycmF5Ojp+SW5zcGVjdG9yQXJyYXko
KQorSW5zcGVjdG9yQXJyYXlCYXNlOjp+SW5zcGVjdG9yQXJyYXlCYXNlKCkKIHsKIH0KIAotYm9v
bCBJbnNwZWN0b3JBcnJheTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQp
Citib29sIEluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBvdXRwdXQpCiB7Ci0gICAgKm91dHB1dCA9IHRoaXM7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKEluc3BlY3RvckFycmF5QmFzZSkgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgY2Fubm90
X2Nhc3QpOworICAgICpvdXRwdXQgPSByZWludGVycHJldF9jYXN0PEluc3BlY3RvckFycmF5Kj4o
dGhpcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IEluc3BlY3RvckFycmF5Ojphc0FycmF5KCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IElu
c3BlY3RvckFycmF5QmFzZTo6YXNBcnJheSgpCiB7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3RvckFycmF5QmFzZSkgPT0gc2l6ZW9mKEluc3BlY3Rv
ckFycmF5KSwgY2Fubm90X2Nhc3QpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEluc3Bl
Y3RvckFycmF5Kj4odGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXJyYXk6OndyaXRlSlNPTihT
dHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0Cit2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6d3Jp
dGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QKIHsKICAgICBvdXRwdXQtPmFwcGVu
ZCgnWycpOwogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2RhdGEuYmVnaW4oKTsgaXQgIT0gbV9kYXRhLmVuZCgpOyArK2l0KSB7
CkBAIC03NzUsMTMgKzc4NCwxMyBAQCB2b2lkIEluc3BlY3RvckFycmF5Ojp3cml0ZUpTT04oU3Ry
aW5nQnVpbGRlciogb3V0cHV0KSBjb25zdAogICAgIG91dHB1dC0+YXBwZW5kKCddJyk7CiB9CiAK
LUluc3BlY3RvckFycmF5OjpJbnNwZWN0b3JBcnJheSgpCitJbnNwZWN0b3JBcnJheUJhc2U6Oklu
c3BlY3RvckFycmF5QmFzZSgpCiAgICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlQXJyYXkpCiAgICAg
LCBtX2RhdGEoKQogewogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JB
cnJheTo6Z2V0KHNpemVfdCBpbmRleCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3Bl
Y3RvckFycmF5QmFzZTo6Z2V0KHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQoaW5kZXggPCBt
X2RhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4gbV9kYXRhW2luZGV4XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBjOTFhZDgyZTY1YmRjMGYxZjlmZTE3
NzQ2MzA1YzlhM2RmZWI5ZTkxLi5kZTdhNDYzOTU5ODRlZWQ5YWJkNmNhMzJkZDAxOTcxNDBkMjdk
Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0x
NTcsNyArMTU3LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKIH07CiAK
LWNsYXNzIEluc3BlY3Rvck9iamVjdCA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBJ
bnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvclZhbHVlPiA+IERpY3Rp
b25hcnk7CiAKQEAgLTE2NSwxNCArMTY1LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERpY3Rp
b25hcnk6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5cGVkZWYgRGljdGlvbmFyeTo6Y29uc3Rf
aXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
c3BlY3Rvck9iamVjdCgpKTsKLSAgICB9Ci0gICAgfkluc3BlY3Rvck9iamVjdCgpOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGFzT2JqZWN0KCk7CisgICAgSW5zcGVj
dG9yT2JqZWN0KiBvcGVuQWNjZXNzb3JzKCk7CisKK3Byb3RlY3RlZDoKKyAgICB+SW5zcGVjdG9y
T2JqZWN0QmFzZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBvdXRwdXQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGFzT2JqZWN0KCk7CiAKICAgICB2b2lkIHNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sKTsKICAgICB2b2lkIHNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSk7
CkBAIC0yMDgsMjYgKzIwNyw1OSBAQCBwdWJsaWM6CiAgICAgaW50IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuc2l6ZSgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JPYmplY3Qo
KTsKKyAgICBJbnNwZWN0b3JPYmplY3RCYXNlKCk7CiAKIHByaXZhdGU6CiAgICAgRGljdGlvbmFy
eSBtX2RhdGE7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9vcmRlcjsKIH07CiAKLWNsYXNzIEluc3Bl
Y3RvckFycmF5IDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEluc3BlY3Rvck9iamVj
dCA6IHB1YmxpYyBJbnNwZWN0b3JPYmplY3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluc3BlY3Rvck9iamVjdCgpKTsKKyAgICB9CisKKyAgICB1c2luZyBJbnNw
ZWN0b3JPYmplY3RCYXNlOjphc09iamVjdDsKKworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJh
c2U6OnNldEJvb2xlYW47CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVy
OworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFN0cmluZzsKKyAgICB1c2luZyBJ
bnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZTsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RC
YXNlOjpzZXRPYmplY3Q7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXk7
CisKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kOworICAgIHVzaW5nIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OmdldEJvb2xlYW47CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0TnVtYmVyOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldFN0cmluZzsK
KyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRPYmplY3Q7CisgICAgdXNpbmcgSW5z
cGVjdG9yT2JqZWN0QmFzZTo6Z2V0QXJyYXk7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0OworCisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6cmVtb3ZlOworCisgICAg
dXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6YmVnaW47CisgICAgdXNpbmcgSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6ZW5kOworCisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2l6ZTsKK307
CisKKworY2xhc3MgSW5zcGVjdG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+ID46Oml0
ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5zcGVjdG9yQXJyYXkoKSk7Ci0gICAgfQotICAgIH5JbnNwZWN0b3JBcnJheSgp
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNBcnJheSgpOworCisg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNpemUoKTsgfQorCitw
cm90ZWN0ZWQ6CisgICAgfkluc3BlY3RvckFycmF5QmFzZSgpOwogCiAgICAgdmlydHVhbCBib29s
IGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFzQXJyYXkoKTsKIAogICAgIHZvaWQgcHVzaEJvb2xl
YW4oYm9vbCk7CiAgICAgdm9pZCBwdXNoSW50KGludCk7CkBAIC0yMzYsNyArMjY4LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgcHVzaFZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KTsKICAg
ICB2b2lkIHB1c2hPYmplY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKICAgICB2b2lk
IHB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5Pik7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNpemUoKTsgfQogCiAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gZ2V0KHNpemVfdCBpbmRleCk7CiAKQEAgLTI0OCw5MSArMjc5LDExNSBA
QCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmVuZCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JBcnJheSgpOworICAgIEluc3Bl
Y3RvckFycmF5QmFzZSgpOwogCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+ID4gbV9kYXRhOwogfTsKIAotaW5saW5lIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Ig
SW5zcGVjdG9yT2JqZWN0OjpmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKK2NsYXNzIEluc3BlY3Rv
ckFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckFycmF5KCkpOworICAgIH0KKworICAgIHVzaW5nIElu
c3BlY3RvckFycmF5QmFzZTo6YXNBcnJheTsKKworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFz
ZTo6cHVzaEJvb2xlYW47CisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50Owor
ICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaE51bWJlcjsKKyAgICB1c2luZyBJbnNw
ZWN0b3JBcnJheUJhc2U6OnB1c2hTdHJpbmc7CisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoVmFsdWU7CisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoT2JqZWN0Owor
ICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEFycmF5OworCisgICAgdXNpbmcgSW5z
cGVjdG9yQXJyYXlCYXNlOjpnZXQ7CisKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OmJl
Z2luOworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6ZW5kOworfTsKKworCitpbmxpbmUg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6aXRlcmF0b3IgSW5zcGVjdG9yT2JqZWN0QmFzZTo6ZmluZChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fZGF0YS5maW5kKG5hbWUpOwogfQog
Ci1pbmxpbmUgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBJbnNwZWN0b3JPYmplY3Q6
OmZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAoraW5saW5lIEluc3BlY3Rvck9iamVjdEJh
c2U6OmNvbnN0X2l0ZXJhdG9yIEluc3BlY3Rvck9iamVjdEJhc2U6OmZpbmQoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGEuZmluZChuYW1lKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHZhbHVlKQogewogICAgIHNldFZhbHVlKG5hbWUsIElu
c3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JPYmplY3Q6OnNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSB2YWx1ZSkK
K2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE51bWJlcihjb25zdCBTdHJpbmcm
IG5hbWUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0
OjpzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JT
dHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
dmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogewogICAgIEFT
U0VSVCh2YWx1ZSk7CiAgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkp
CiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JPYmplY3Q6OnNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE9i
amVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVl
KS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIGlmIChtX2RhdGEuc2V0KG5h
bWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpCiB7
CiAgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6OnB1c2hJbnQoaW50IHZhbHVlKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50KGludCB2YWx1ZSkKIHsKICAgICBt
X2RhdGEuYXBwZW5kKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6cHVzaE51bWJlcihkb3VibGUgdmFsdWUpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hOdW1iZXIoZG91YmxlIHZhbHVlKQogewog
ICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5OjpwdXNoU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBtX2RhdGEuYXBwZW5kKEluc3BlY3RvclN0cmluZzo6Y3Jl
YXRlKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5OjpwdXNoVmFsdWUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKIHsK
ICAgICBBU1NFUlQodmFsdWUpOwogICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOwogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6cHVzaE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3Qo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7
CiAgICAgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFy
cmF5OjpwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIG1fZGF0YS5hcHBlbmQodmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcAppbmRleCA2ZmJhZWEyMWE4Mjg5MzFjY2QxMmI5MDk2YjIyYzVhZmQ5MzZhNmExLi4x
NTJiZTNhZWZmMWIyMDcyNmYxYmIxZDM2MTE4YTRlYWEzY2VhNjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVHZW5lcmljUmVjb3JkKGRvdWJsZSBzdAogICAgIGlmIChtYXhDYWxsU3RhY2tEZXB0
aCkgewogICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKG1heENhbGxTdGFja0RlcHRoLCB0cnVlKTsKICAgICAgICAgaWYgKHN0
YWNrVHJhY2UgJiYgc3RhY2tUcmFjZS0+c2l6ZSgpKQotICAgICAgICAgICAgcmVjb3JkLT5zZXRB
cnJheSgic3RhY2tUcmFjZSIsIHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7Cisg
ICAgICAgICAgICByZWNvcmQtPnNldFZhbHVlKCJzdGFja1RyYWNlIiwgc3RhY2tUcmFjZS0+YnVp
bGRJbnNwZWN0b3JBcnJheSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136237</attachid>
            <date>2012-04-09 09:26:43 -0700</date>
            <delta_ts>2012-04-10 09:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83390-20120409202641.patch</filename>
            <type>text/plain</type>
            <size>42906</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkyM2Y4NmVhMTA5Yjky
OWYwZjgwYjFkMjVjNzg4ZTMyZWI2M2JjZi4uNWM5NDc4NjY3YjFiYzU4ZGRhOWM5MWVlYzZjMWIx
MGYyMWQ5OGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA0LTA2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBkbyBub3QgZXhwb3NlIHJhdyBtZXRob2RzIGZy
b20gZ2VuZXJhdGVkIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MzM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludGVybWVkaWF0ZSBjbGFzc2VzIEluc3BlY3Rvck9iamVjdEJhc2UgYW5kIElu
c3BlY3RvckFycmF5QmFzZSBhcmUgY3JlYXRlZC4gVGhleSBoYXZlIGFsbCByYXcgbWV0aG9zCisg
ICAgICAgIHByb3RlY3RlZC4gSW5zcGVjdG9yT2JqZWN0IGFuZCBJbnNwZWN0b3JBcnJheSBub3cg
aW5oZXJpdCB0aGUgY29ycmVzcG9uZGluZyBiYXNlIGNsYXNzZXMgd2l0aCBleHBvc2luZworICAg
ICAgICBhbGwgdGhlaXIgcHJvdGVjdGVkIG1ldGhvZHMuCisKKyAgICAgICAgIk9wZW4gdHlwZXMi
IGFyZSBsZWZ0IGluaGVyaXRpbmcgZnJvbSBJbnNwZWN0b3JPYmplY3QsIHBsdXMgZmllbGQgbmFt
ZSBjb25zdGFudHMgYXJlIGdlbmVyYXRlZCBmb3IKKyAgICAgICAgYW4gZWFzeSByYW5kb20gYWNj
ZXNzIHRvIGFsbCBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFsbCB0aGUgY2xpZW50IGNvZGUgaXMg
Zml4ZWQgdG8gdXNlIHR5cGUtc2FmZSBBUEkgcmF0aGVyIHRoYW4gcmF3IGFjY2VzcyBtZXRob2Rz
IGluIGZ1bmN0aW9uIHBhcmFtZXRlcgorICAgICAgICBhbmQgcmV0dXJuIHR5cGVzIGFuZCBib2Rp
ZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAg
ICAgICAgKFJhd1R5cGVzLk9iamVjdCk6CisgICAgICAgIChSYXdUeXBlcy5PYmplY3QuZ2V0X3Nl
dHRlcl9uYW1lKToKKyAgICAgICAgKFJhd1R5cGVzLkFycmF5KToKKyAgICAgICAgKFJhd1R5cGVz
LkFycmF5LmdldF9zZXR0ZXJfbmFtZSk6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5
cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5nZXRfY29kZV9nZW5lcmF0b3IuQ29kZUdlbmVy
YXRvci5nZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAoQXJyYXkpOgorICAgICAgICAo
R2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRl
X2FkX2hvYy5JbnRlcmZhY2VHZW5lcmF0ZUNvbnRleHQpOgorICAgICAgICAoR2VuZXJhdG9yLnBy
b2Nlc3NfdHlwZXMuR2VuZXJhdGVDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1
ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxN
ZWRpYUxpc3RDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjp+SW5zcGVjdG9yT2JqZWN0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpvcGVuQWNjZXNzb3JzKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OmdldEFycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck9iamVjdEJhc2U6Okluc3BlY3Rvck9iamVjdEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXJyYXlCYXNlOjp+SW5zcGVjdG9yQXJyYXlCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBcnJheUJhc2U6OndyaXRlSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JB
cnJheUJhc2U6Okluc3BlY3RvckFycmF5QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcnJheUJhc2U6OmdldCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
OgorICAgICAgICAoSW5zcGVjdG9yT2JqZWN0QmFzZSk6CisgICAgICAgIChJbnNwZWN0b3JPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JBcnJheUJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpsZW5ndGgpOgorICAgICAgICAoSW5zcGVjdG9yQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck9iamVjdEJhc2U6OnNldFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNl
OjpzZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0
QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVh
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoTnVtYmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQXJyYXlCYXNlOjpwdXNoQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVHZW5lcmljUmVjb3JkKToKKwogMjAxMi0wNC0wMyAgSm9jZWx5biBUdXJjb3R0ZSAg
PGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFdlYlNvY2tldFNlcnZlcjog
SG9ub3VyIFdlYlNvY2tldEZyYW1lOjptYXNrZWQgaW4gbWFrZUZyYW1lRGF0YQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCA2
MzAxZWMxNDNkZGYwM2UyOWQxOWQwZTEzYjA3NTAwMmRhMmViYjg2Li41YTVhZmZkNGJlNTJkYjlm
YjAzMTE1MTk3MjU3YmQzNzBiZWFiMDU5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNjEsNyArNjEsMTEgQEAgVFlQRVNf
V0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJvemVuc2V0KFsiUnVudGltZS5SZW1vdGVPYmplY3Qi
LCAiUnVudGltZS5Qcm9wZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyBUaGlzIHNob3VsZCBiZSBhIHRlbXBvcmFyeSBoYWNrLiBUaW1lbGluZUV2ZW50IHNob3Vs
ZCBiZSBjcmVhdGVkIHZpYSBnZW5lcmF0ZWQgQysrIEFQSS4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlRpbWVsaW5lLlRpbWVsaW5lRXZlbnQiXSkKIAotVFlQRVNf
V0lUSF9PUEVOX0ZJRUxEX0xJU1RfU0VUID0gZnJvemVuc2V0KFsiVGltZWxpbmUuVGltZWxpbmVF
dmVudCJdKQorVFlQRVNfV0lUSF9PUEVOX0ZJRUxEX0xJU1RfU0VUID0gZnJvemVuc2V0KFsiVGlt
ZWxpbmUuVGltZWxpbmVFdmVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgSW5zcGVjdG9yU3R5bGVTaGVldCBub3Qgb25seSBjcmVhdGVzIHRoaXMgcHJv
cGVydHkgYnV0IHdhbnRzIHRvIHJlYWQgaXQgYW5kIG1vZGlmeSBpdC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNTUy5DU1NQcm9wZXJ0eSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCBuZWVkcyB0byB1cGRhdGUgbWltZS10eXBlLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTmV0d29yay5SZXNwb25zZSJdKQogCiBjbWRsaW5lX3BhcnNl
ciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCiBjbWRsaW5lX3BhcnNlci5hZGRfb3B0aW9uKCIt
LW91dHB1dF9oX2RpciIpCkBAIC00MjIsNyArNDI2LDkgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0
KToKICAgICAgICAgZGVmIGdldF9nZXR0ZXJfbmFtZSgpOgogICAgICAgICAgICAgcmV0dXJuICJP
YmplY3QiCiAKLSAgICAgICAgZ2V0X3NldHRlcl9uYW1lID0gZ2V0X2dldHRlcl9uYW1lCisgICAg
ICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGdldF9zZXR0ZXJfbmFtZSgpOgorICAgICAg
ICAgICAgcmV0dXJuICJWYWx1ZSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRl
ZiBnZXRfY19pbml0aWFsaXplcigpOgpAQCAtNTA2LDcgKzUxMiw5IEBAIGNsYXNzIFJhd1R5cGVz
KG9iamVjdCk6CiAgICAgICAgIGRlZiBnZXRfZ2V0dGVyX25hbWUoKToKICAgICAgICAgICAgIHJl
dHVybiAiQXJyYXkiCiAKLSAgICAgICAgZ2V0X3NldHRlcl9uYW1lID0gZ2V0X2dldHRlcl9uYW1l
CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGdldF9zZXR0ZXJfbmFtZSgpOgor
ICAgICAgICAgICAgcmV0dXJuICJWYWx1ZSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ICAgIGRlZiBnZXRfY19pbml0aWFsaXplcigpOgpAQCAtMTE0MSwxMCArMTE0OSwxOCBAQCBjbGFz
cyBUeXBlQmluZGluZ3M6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVf
ZGF0YSA9IGNsYXNzX2JpbmRpbmdfY2xzLnJlc29sdmVfZGF0YV8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscGVyLndyaXRlX2RvYyh3cml0ZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzX25hbWUgPSBmaXhlZF90eXBlX25hbWUuY2xhc3NfbmFtZQor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX29wZW5fdHlwZSA9IChjb250ZXh0
X2RvbWFpbl9uYW1lICsgIi4iICsgY2xhc3NfbmFtZSkgaW4gVFlQRVNfV0lUSF9PUEVOX0ZJRUxE
X0xJU1RfU0VUCisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRfdHlwZV9u
YW1lLm91dHB1dF9jb21tZW50KHdyaXRlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLm5ld2xpbmUoImNsYXNzICIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5hcHBlbmQoY2xhc3NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLmFwcGVuZCgiIDogcHVibGljIEluc3BlY3Rvck9iamVjdCB7XG4iKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIgOiBwdWJsaWMgIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfb3Blbl90eXBlOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yT2Jq
ZWN0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvck9iamVjdEJh
c2UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIge1xu
IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoInB1Ymxp
YzpcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlX3dyaXRl
ciA9IHdyaXRlci5pbnNlcnRfd3JpdGVyKCIgICAgIikKIApAQCAtMTE4NCw3ICsxMjAwLDcgQEAg
Y2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVp
bGRlcihQYXNzUmVmUHRyPCVzPiBwdHIpCisgICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwvKiVz
Ki9JbnNwZWN0b3JPYmplY3Q+IHB0cikKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9z
dGF0ZSk7CiAgICAgICAgICAgICBtX3Jlc3VsdCA9IHB0cjsKQEAgLTEyMjIsNiArMTIzOCw3IEBA
IGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgb3BlcmF0b3IgUmVmUHRyPCVzPiYgKCkKICAg
ICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0
LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKICAgICAgICAg
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxSZWZQdHI8JXM+Kj4oJm1fcmVzdWx0KTsKICAg
ICAgICAgfQogCkBAIC0xMjMyLDcgKzEyNDksNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAg
fTsKIAogIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNsYXNzX25hbWUs
IGNsYXNzX25hbWUsIGNsYXNzX25hbWUsIGNsYXNzX25hbWUpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlIChjbGFzc19uYW1lLCBjbGFzc19uYW1lLCBjbGFzc19uYW1lLCBjbGFz
c19uYW1lLCBjbGFzc19uYW1lKSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgIC8qXG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIubmV3bGluZSgiICAgICAqIFN5bnRoZXRpYyBjb25zdHJ1Y3RvcjpcbiIpCkBAIC0x
MjQ0LDkgKzEyNjEsOSBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lX211bHRpbGluZSgKICIiIiAgICBzdGF0aWMgQnVp
bGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVy
PE5vRmllbGRzU2V0PihhZG9wdFJlZihuZXcgJXMoKSkpOworICAgICAgICByZXR1cm4gQnVpbGRl
cjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQotIiIiICUg
Y2xhc3NfbmFtZSkKKyIiIikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZXIubmV3bGluZSgiICAgIHR5cGVkZWYgVHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRl
bVRyYWl0cztcbiIpCiAKQEAgLTEyNjUsNyArMTI4Miw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoK
IAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZXR0ZXJfbmFtZSBp
biBJTlNQRUNUT1JfT0JKRUNUX1NFVFRFUl9OQU1FUzoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHVzaW5nIEluc3BlY3Rvck9iamVj
dDo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6
OiVzO1xuXG4iICUgc2V0dGVyX25hbWUpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgY2xhc3NfYmluZGluZ19jbHMubmVlZF91c2VyX3J1bnRpbWVfY2FzdF86CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPCVzPiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1
ZSlcbiIgJSBjbGFzc19uYW1lKQpAQCAtMTI3Niw4ICsxMjkzLDggQEAgY2xhc3MgVHlwZUJpbmRp
bmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgi
I2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUo
b2JqZWN0LmdldCgpKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCB0
eXBlX2Nhc3RfcHJvYmxlbSk7XG4iICUgY2xhc3NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDwlcyo+KG9iamVjdC5nZXQoKSk7XG4iICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJv
YmxlbSk7XG4iICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0YXRp
Y19jYXN0PEluc3BlY3Rvck9iamVjdEJhc2UqPihvYmplY3QuZ2V0KCkpKTtcbiIgJSBjbGFzc19u
YW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUo
IiAgICB9XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFw
cGVuZCgiXG4iKQogCkBAIC0xMzIyLDYgKzEzMzksMTcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIu
bmV3bGluZSgiICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUo
KSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dy
aXRlci5uZXdsaW5lKCJ9XG5cblxuIikKIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBpc19vcGVuX3R5cGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfd3JpdGVyID0gZ2VuZXJhdGVfY29udGV4dC5jcHBfd3JpdGVyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJcbiIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIC8vIFByb3BlcnR5IG5hbWVz
IGZvciB0eXBlIGdlbmVyYXRlZCBhcyBvcGVuLlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciBwcm9wX2RhdGEgaW4gcmVzb2x2ZV9kYXRhLm1haW5fcHJvcGVydGll
cyArIHJlc29sdmVfZGF0YS5vcHRpb25hbF9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3BfbmFtZSA9IHByb3BfZGF0YS5wWyJuYW1lIl0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wX2ZpZWxkX25hbWUgPSBD
YXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKHByb3BfbmFtZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRp
YyBjb25zdCBjaGFyKiAlcztcbiIgJSAocHJvcF9maWVsZF9uYW1lKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfd3JpdGVyLm5ld2xpbmUoImNvbnN0IGNoYXIq
ICVzJXM6OiVzID0gXCIlc1wiO1xuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1w
bCwgY2xhc3NfbmFtZSwgcHJvcF9maWVsZF9uYW1lLCBwcm9wX25hbWUpKQorCisKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIn07XG5cbiIpCiAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAc3RhdGljbWV0aG9kCkBAIC0yMjA0LDE5ICsyMjMyLDI0
IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXIgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNsYXNzIEFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5IHsKK2NsYXNzIEFycmF5IDogcHVi
bGljIEluc3BlY3RvckFycmF5QmFzZSB7CiBwcml2YXRlOgogICAgIEFycmF5KCkgeyB9CiAKKyAg
ICBJbnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpIHsKKyAgICAgICAgQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKEluc3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2Fz
dCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19j
YXN0PEluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKKyAgICB9CisKIHB1YmxpYzoKICAgICB2
b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxUPiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFycmF5SXRl
bUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNoUmVmUHRyKHRoaXMsIHZhbHVlKTsKKyAgICAgICAgQXJy
YXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcy0+b3BlbkFjY2Vzc29ycygp
LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRJdGVtKFQgdmFsdWUpCiAgICAgewotICAg
ICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNoUmF3KHRoaXMtPm9wZW5BY2Nl
c3NvcnMoKSwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+
ID4gY3JlYXRlKCkKQEAgLTIyMzMsNyArMjI2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgYXNzZXJ0
Q29ycmVjdFZhbHVlKGFycmF5LmdldCgpKTsKICNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXk8VD4pID09IHNpemVvZihJbnNwZWN0
b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFycmF5PFQ+Kj4oYXJyYXkuZ2V0KCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwog
ICAgIH0KIAogI2lmICIiIiArIFZBTElEQVRPUl9JRkRFRl9OQU1FICsgIiIiCkBAIC0yMjUwLDkg
KzIyODMsOSBAQCBwdWJsaWM6CiB9OwogCiBzdHJ1Y3QgU3RydWN0SXRlbVRyYWl0cyB7Ci0gICAg
c3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3Bl
Y3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAg
ewotICAgICAgICBhcnJheS0+cHVzaE9iamVjdCh2YWx1ZSk7CisgICAgICAgIGFycmF5LT5wdXNo
VmFsdWUodmFsdWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMjk0
LDkgKzIzMjcsOSBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7CiB0
ZW1wbGF0ZTw+CiBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvck9iamVjdD4gewogICAg
IHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rv
ckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQorICAgICAg
ICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5w
dXNoT2JqZWN0KHZhbHVlKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwog
ICAgICAgICB9CiAgICAgfTsKIH07CkBAIC0yMzA2LDcgKzIzMzksNyBAQCBzdHJ1Y3QgQXJyYXlJ
dGVtSGVscGVyPFR5cGVCdWlsZGVyOjpBcnJheTxUPiA+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsK
ICAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+ID4gdmFsdWUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGFycmF5LT5wdXNoQXJyYXkodmFsdWUpOworICAgICAgICAgICAgYXJyYXktPnB1c2hW
YWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogfTsKQEAgLTIzNDgsNiArMjM4MSw4IEBA
IFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiB9IC8vIG5hbWVzcGFj
ZSBUeXBlQnVpbGRlcgogCiskaW1wbENvZGUKKwogI2lmICIiIiArIFZBTElEQVRPUl9JRkRFRl9O
QU1FICsgIiIiCiAKICR2YWxpZGF0b3JDb2RlCkBAIC0yNDY3LDYgKzI1MDIsNyBAQCBjbGFzcyBH
ZW5lcmF0b3I6CiAgICAgdHlwZV9idWlsZGVyX2ZvcndhcmRzID0gW10KICAgICB2YWxpZGF0b3Jf
aW1wbF9saXN0ID0gW10KICAgICB2YWxpZGF0b3JfaW1wbF9yYXdfdHlwZXNfbGlzdCA9IFtdCisg
ICAgdHlwZV9idWlsZGVyX2ltcGxfbGlzdCA9IFtdCiAKIAogICAgIEBzdGF0aWNtZXRob2QKQEAg
LTI3NzcsNiArMjgxMyw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKIAogICAgICAgICBjbGFzcyBJbnRl
cmZhY2VHZW5lcmF0ZUNvbnRleHQ6CiAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyID0gIm5v
dCBzdXBwb3J0ZWQgaW4gSW50ZXJmYWNlR2VuZXJhdGVDb250ZXh0IgorICAgICAgICAgICAgY3Bw
X3dyaXRlciA9IHZhbGlkYXRvcl93cml0ZXIKIAogICAgICAgICBmb3IgdHlwZSBpbiBhZF9ob2Nf
dHlwZV9saXN0OgogICAgICAgICAgICAgZ2VuZXJhdG9yID0gdHlwZS5nZXRfY29kZV9nZW5lcmF0
b3IoKQpAQCAtMjc5MSw2ICsyODI4LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogCiAgICAgICAgIGNs
YXNzIEdlbmVyYXRlQ29udGV4dDoKICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIgPSBXcml0
ZXIoR2VuZXJhdG9yLnZhbGlkYXRvcl9pbXBsX2xpc3QsICIiKQorICAgICAgICAgICAgY3BwX3dy
aXRlciA9IFdyaXRlcihHZW5lcmF0b3IudHlwZV9idWlsZGVyX2ltcGxfbGlzdCwgIiIpCiAKICAg
ICAgICAgZGVmIGdlbmVyYXRlX2FsbF9kb21haW5zX2NvZGUob3V0LCB0eXBlX2RhdGFfY2FsbGJh
Y2spOgogICAgICAgICAgICAgd3JpdGVyID0gV3JpdGVyKG91dCwgIiIpCkBAIC0yOTA1LDYgKzI5
NDMsNyBAQCB0eXBlYnVpbGRlcl9oX2ZpbGUud3JpdGUoVGVtcGxhdGVzLnR5cGVidWlsZGVyX2gu
c3Vic3RpdHV0ZShOb25lLAogCiB0eXBlYnVpbGRlcl9jcHBfZmlsZS53cml0ZShUZW1wbGF0ZXMu
dHlwZWJ1aWxkZXJfY3BwLnN1YnN0aXR1dGUoTm9uZSwKICAgICBlbnVtQ29uc3RhbnRWYWx1ZXM9
RW51bUNvbnN0YW50cy5nZXRfZW51bV9jb25zdGFudF9jb2RlKCksCisgICAgaW1wbENvZGU9am9p
bihmbGF0dGVuX2xpc3QoR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9pbXBsX2xpc3QpLCAiIiksCiAg
ICAgdmFsaWRhdG9yQ29kZT1qb2luKGZsYXR0ZW5fbGlzdChHZW5lcmF0b3IudmFsaWRhdG9yX2lt
cGxfbGlzdCksICIiKSkpCiAKIGJhY2tlbmRfanNfZmlsZS53cml0ZShUZW1wbGF0ZXMuYmFja2Vu
ZF9qcy5zdWJzdGl0dXRlKE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCBjZTQzN2JmZDUwZDcxMzk5NWU5MDE1ZjAxNzY5MzYzODBl
YjU2Y2E4Li44NTQxNTY4OTFmNzc1MWVhZDkyZTg4MWNkMDZmODEzYTRmMjNlM2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTUwMyw3
ICs1MDMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgIHJlc3VsdCA9IFR5cGVCdWls
ZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBub2Rlcy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LT5wdXNoTnVtYmVyKHB1c2hO
b2RlUGF0aFRvRnJvbnRlbmQobm9kZXMtPml0ZW0oaSkpKTsKKyAgICAgICAgcmVzdWx0LT5hZGRJ
dGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXMtPml0ZW0oaSkpKTsKIH0KIAogaW50IElu
c3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gp
CkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG4KICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCB2ZWN0b3Iuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGNv
bnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IHZlY3RvcltqXTsKICAgICAg
ICAgICAgIGlmIChsaXN0ZW5lci51c2VDYXB0dXJlKQotICAgICAgICAgICAgICAgIGxpc3RlbmVy
c0FycmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwg
aW5mby5ldmVudFR5cGUsIGluZm8ubm9kZSkpOworICAgICAgICAgICAgICAgIGxpc3RlbmVyc0Fy
cmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaW5mby5l
dmVudFR5cGUsIGluZm8ubm9kZSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03NTUsNyArNzU1
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG4KICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCB2ZWN0b3Iuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IHZlY3RvcltqXTsKICAgICAgICAgICAgIGlmICghbGlz
dGVuZXIudXNlQ2FwdHVyZSkKLSAgICAgICAgICAgICAgICBsaXN0ZW5lcnNBcnJheS0+cHVzaE9i
amVjdChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGluZm8uZXZlbnRUeXBl
LCBpbmZvLm5vZGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lcnNBcnJheS0+YWRkSXRlbShi
dWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGluZm8uZXZlbnRUeXBlLCBpbmZv
Lm5vZGUpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyODMsNyArMTI4Myw3IEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkCiAgICAgcmV0dXJuIGNoaWxkcmVuLnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogbm9k
ZSkKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBOb2RlKiBub2RlKQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyID0gcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIubGlzdGVuZXI7CiAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gVHlwZUJ1aWxkZXI6OkRP
TTo6RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKaW5kZXggMzRiNDFlNjRmYjIwZThhZmM4MmRkNmRjZTM1NzgwZDY1
ZWUxMjBjZi4uNmI5NmMyYjljNzEyOGIzM2M1YjVhN2M2YjljOGJjNDJkMjQ3ZWY3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTIyNyw3ICsy
MjcsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4g
YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7CiAgICAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0g
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5l
cihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBOb2RlKik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExp
c3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSopOwogCiAgICAg
Tm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IGNlNzUzY2IyMmNjODA4ODQ2OTY5NTEyMzFiYzUwNzRlOWMxOWM5NTAuLjIzMWFlZTU0ZjVmMjQz
NzQ5N2ZlZDgwOTk3YzE3YWQyMzZmMGQyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMwNyw4ICszMDcs
OCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZl
bnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwbwogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlw
ZSkgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9y
IGluaGVyaXRhYmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0
aGUgc2FtZSBhcyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBU
YXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNo
IGl0IGZpcnN0LgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB0YXJnZXROb2RlT2Jq
ZWN0ID0gbV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRPYmpl
Y3QoInRhcmdldE5vZGUiLCB0YXJnZXROb2RlT2JqZWN0KTsKKyAgICAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFn
ZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFj
ZU9iamVjdEdyb3VwKTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnNldFZhbHVlKCJ0YXJnZXROb2Rl
IiwgdGFyZ2V0Tm9kZU9iamVjdCk7CiAKICAgICAgICAgLy8gRmluZCBicmVha3BvaW50IG93bmVy
IG5vZGUuCiAgICAgICAgIGlmICghaW5zZXJ0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDkyNGJlMzg0MjlmNzQw
OTYyM2IyNjc3OTJiYWQwNDU2MzNkYzg4ZjguLjI1ZmEzZmJhYzQyMWVkNGVhMjczZWUyMDU4OWVl
NTRiOWM4MDMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI0Miw5ICsyNDIsOSBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBsaQogICAgIGZvciAoU2NyaXB0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdHMuYmVn
aW4oKTsgaXQgIT0gbV9zY3JpcHRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICghbWF0Y2hl
cyhpdC0+c2Vjb25kLnVybCwgdXJsLCBpc1JlZ2V4KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3Bv
aW50KGJyZWFrcG9pbnRJZCwgaXQtPmZpcnN0LCBicmVha3BvaW50KTsKKyAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludElkLCBpdC0+Zmlyc3QsIGJyZWFrcG9pbnQpOwogICAgICAgICBpZiAo
bG9jYXRpb24pCi0gICAgICAgICAgICBsb2NhdGlvbnMtPnB1c2hPYmplY3QobG9jYXRpb24pOwor
ICAgICAgICAgICAgbG9jYXRpb25zLT5hZGRJdGVtKGxvY2F0aW9uKTsKICAgICB9CiAgICAgKm91
dEJyZWFrcG9pbnRJZCA9IGJyZWFrcG9pbnRJZDsKIH0KQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0VmFsdQogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAg
ICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246
OkV4Y2VwdGlvbjsKLSAgICAgICAgICAgIG1fYnJlYWtBdXhEYXRhID0gaW5qZWN0ZWRTY3JpcHQu
d3JhcE9iamVjdChleGNlcHRpb24sICJiYWNrdHJhY2UiKTsKKyAgICAgICAgICAgIG1fYnJlYWtB
dXhEYXRhID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChleGNlcHRpb24sICJiYWNrdHJhY2Ui
KS0+b3BlbkFjY2Vzc29ycygpOwogICAgICAgICAgICAgLy8gbV9icmVha0F1eERhdGEgbWlnaHQg
YmUgbnVsbCBhZnRlciB0aGlzLgogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA4MmMwMWI5ZWExNWQ4OTRm
N2YyOGIwMWZiMTE0MTUwZDdhYWFhM2I1Li5kZjA0MDgzOWM4ZTQ4NjZhNWMxYmNjODZkMDczMjVj
MjcwMThkZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcApAQCAtNTg2LDE0ICs1ODYsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGMK
ICAgICByZXN1bHRzID0gQ29udGVudFNlYXJjaFV0aWxzOjpzZWFyY2hJblRleHRCeUxpbmVzKGNv
bnRlbnQsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQorc3Rh
dGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmpl
Y3RGb3JTZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVy
bCwgaW50IG1hdGNoZXNDb3VudCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJm
cmFtZUlkIiwgZnJhbWVJZCk7Ci0gICAgcmVzdWx0LT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0g
ICAgcmVzdWx0LT5zZXROdW1iZXIoIm1hdGNoZXNDb3VudCIsIG1hdGNoZXNDb3VudCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVz
dWx0OjpjcmVhdGUoKQorICAgICAgICAuc2V0VXJsKHVybCkKKyAgICAgICAgLnNldEZyYW1lSWQo
ZnJhbWVJZCkKKyAgICAgICAgLnNldE1hdGNoZXNDb3VudChtYXRjaGVzQ291bnQpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+ID4mIHJlc3VsdHMpCkBAIC02
MTIsMTMgKzYxMCwxMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJj
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbgogICAgICAgICAgICAgaWYg
KHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UsICZjb250ZW50KSkg
ewogICAgICAgICAgICAgICAgIGludCBtYXRjaGVzQ291bnQgPSBDb250ZW50U2VhcmNoVXRpbHM6
OmNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKHJlZ2V4LCBjb250ZW50KTsKICAgICAgICAg
ICAgICAgICBpZiAobWF0Y2hlc0NvdW50KQotICAgICAgICAgICAgICAgICAgICBzZWFyY2hSZXN1
bHRzLT5wdXNoVmFsdWUoYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoZnJhbWVJZChmcmFtZSks
IGNhY2hlZFJlc291cmNlLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CisgICAgICAgICAgICAgICAg
ICAgIHNlYXJjaFJlc3VsdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoZnJh
bWVJZChmcmFtZSksIGNhY2hlZFJlc291cmNlLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1haW5SZXNvdXJjZUNvbnRlbnQoZnJh
bWUsIGZhbHNlLCAmY29udGVudCkpIHsKICAgICAgICAgICAgIGludCBtYXRjaGVzQ291bnQgPSBD
b250ZW50U2VhcmNoVXRpbHM6OmNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKHJlZ2V4LCBj
b250ZW50KTsKICAgICAgICAgICAgIGlmIChtYXRjaGVzQ291bnQpCi0gICAgICAgICAgICAgICAg
c2VhcmNoUmVzdWx0cy0+cHVzaFZhbHVlKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGZyYW1l
SWQoZnJhbWUpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIG1hdGNoZXNDb3VudCkpOworICAg
ICAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWFyY2hS
ZXN1bHQoZnJhbWVJZChmcmFtZSksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgbWF0Y2hlc0Nv
dW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5OCwxMyArODk2LDEzIEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmJ1aWxkT2JqZWN0CiAgICAgICAgIHN1YnJlc291cmNlcy0+YWRkSXRlbShyZXNvdXJjZU9i
amVjdCk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbkFycmF5
OworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlPiA+IGNoaWxkcmVuQXJyYXk7CiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBm
cmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkt
Pm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7Ci0gICAgICAg
ICAgICBjaGlsZHJlbkFycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgcmVzdWx0LT5zZXRBcnJheSgiY2hpbGRGcmFtZXMiLCBjaGlsZHJlbkFycmF5KTsKKyAgICAg
ICAgICAgIGNoaWxkcmVuQXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBh
Z2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICByZXN1bHQtPnNl
dENoaWxkRnJhbWVzKGNoaWxkcmVuQXJyYXkpOwogICAgICAgICB9Ci0gICAgICAgIGNoaWxkcmVu
QXJyYXktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoY2hpbGQpKTsKKyAgICAg
ICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckZyYW1lVHJlZShjaGlsZCkp
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDE3MDAyMTE3YjVhZDI2
NGE0MDZhOTE0ZDg3MTMxZjlmNTM0MDJjOWUuLjBkMGM3OTMzMGM5MjQ3MDQyOTAxYWYwMzg4ZmE3
OTdkYTI0NGU0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZQogICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VTaXplID0gY2FjaGVkUmVzb3VyY2Ut
PmVuY29kZWRTaXplKCk7CiAgICAgICAgICAgICAvLyBVc2UgbWltZSB0eXBlIGZyb20gY2FjaGVk
IHJlc291cmNlIGluIGNhc2UgdGhlIG9uZSBpbiByZXNwb25zZSBpcyBlbXB0eS4KICAgICAgICAg
ICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZygibWltZVR5cGUi
LCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3Bv
bnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAK
ICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElk
LCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBlYzViNzdlNmMyZjFhNmYxOWVmMmQ4
ZThmODJiNWE2OTE0Zjk4YzUwLi5hYjg5NjY3MjU4OThmOWE0Y2RiNTg1MTFiNWRjZjY1MTBmMDYx
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWlu
KENTU1J1bGUqIHJ1bGUsIEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPioKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTCA9IHN0eWxlU2hlZXQtPmZpbmFsVVJMKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVS
TCA9ICIiOwotICAgICAgICAgICAgICAgICAgICBtZWRpYUFycmF5LT5wdXNoT2JqZWN0KGJ1aWxk
TWVkaWFPYmplY3QobWVkaWFMaXN0LCBzdHlsZVNoZWV0LT5vd25lck5vZGUoKSA/IE1lZGlhTGlz
dFNvdXJjZUxpbmtlZFNoZWV0IDogTWVkaWFMaXN0U291cmNlSW5saW5lU2hlZXQsIHNvdXJjZVVS
TCkpOworICAgICAgICAgICAgICAgICAgICBtZWRpYUFycmF5LT5hZGRJdGVtKGJ1aWxkTWVkaWFP
YmplY3QobWVkaWFMaXN0LCBzdHlsZVNoZWV0LT5vd25lck5vZGUoKSA/IE1lZGlhTGlzdFNvdXJj
ZUxpbmtlZFNoZWV0IDogTWVkaWFMaXN0U291cmNlSW5saW5lU2hlZXQsIHNvdXJjZVVSTCkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwYXJlbnRSdWxlID0gc3R5bGVTaGVl
dC0+b3duZXJSdWxlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFJ1bGUpCkBAIC01MTAs
NyArNTEwLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVj
dG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJldmlvdXNQYXJzZWRPazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT5zZWNvbmQtPmdldEJvb2xl
YW4oInBhcnNlZE9rIiwgJnByZXZpb3VzUGFyc2VkT2spOworICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gYWN0aXZlSXQtPnNlY29uZC0+Z2V0Qm9vbGVhbihUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UGFyc2VkT2ssICZwcmV2aW91c1BhcnNlZE9rKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC01MTksNyArNTE5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBj
b24KIAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmFjdGl2YXRlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGFjdGl2ZUl0LT5zZWNvbmQtPnNldFN0YXR1cyhUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGFjdGl2
ZUl0LT5zZWNvbmQtPnJlbW92ZSgic2hvcnRoYW5kTmFtZSIpOworICAgICAgICAgICAgICAgICAg
ICBhY3RpdmVJdC0+c2Vjb25kLT5yZW1vdmUoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6
OlNob3J0aGFuZE5hbWUpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZp
b3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01NDYsNyArNTQ2LDcg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6
OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gc2hvcnRoYW5kRW50cnkgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRFbnRyeS0+c2V0U3RyaW5nKCJuYW1lIiwg
c2hvcnRoYW5kKTsKICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kRW50cnktPnNldFN0cmlu
ZygidmFsdWUiLCBzaG9ydGhhbmRWYWx1ZShzaG9ydGhhbmQpKTsKLSAgICAgICAgICAgICAgICAg
ICAgc2hvcnRoYW5kRW50cmllcy0+cHVzaE9iamVjdChzaG9ydGhhbmRFbnRyeS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRFbnRyaWVzLT5hZGRJdGVtKHNob3J0aGFu
ZEVudHJ5LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmlu
ZGV4IGI4OTU5MzcyYjBlZjMwYmRmZjVhODAzZWFmOTcwOTAwZjc5ODc3NDEuLmU4ODYxYzBmYTVi
MTA0Y2I2ZDUxNDMyZDhhZDFiOGI1YjYyYWUxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGVudW0gVG9rZW4gewog
ICAgIE9CSkVDVF9QQUlSX1NFUEFSQVRPUiwKICAgICBJTlZBTElEX1RPS0VOLAogfTsKLSAgICAK
KwogY29uc3QgY2hhciogY29uc3QgbnVsbFN0cmluZyA9ICJudWxsIjsKIGNvbnN0IGNoYXIqIGNv
bnN0IHRydWVTdHJpbmcgPSAidHJ1ZSI7CiBjb25zdCBjaGFyKiBjb25zdCBmYWxzZVN0cmluZyA9
ICJmYWxzZSI7CkBAIC0yNDEsMTEgKzI0MSwxMSBAQCBUb2tlbiBwYXJzZVRva2VuKGNvbnN0IFVD
aGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUNoYXIqKiB0b2tlblN0YXJ0LAog
ICAgIGNhc2UgJzgnOgogICAgIGNhc2UgJzknOgogICAgIGNhc2UgJy0nOgotICAgICAgICBpZiAo
cGFyc2VOdW1iZXJUb2tlbihzdGFydCwgZW5kLCB0b2tlbkVuZCkpIAorICAgICAgICBpZiAocGFy
c2VOdW1iZXJUb2tlbihzdGFydCwgZW5kLCB0b2tlbkVuZCkpCiAgICAgICAgICAgICByZXR1cm4g
TlVNQkVSOwotICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSAnIic6Ci0gICAgICAgIGlmIChwYXJzZVN0cmluZ1Rva2VuKHN0YXJ0ICsgMSwgZW5kLCB0
b2tlbkVuZCkpIAorICAgICAgICBpZiAocGFyc2VTdHJpbmdUb2tlbihzdGFydCArIDEsIGVuZCwg
dG9rZW5FbmQpKQogICAgICAgICAgICAgcmV0dXJuIFNUUklORzsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtNjYxLDIyICs2NjEsMjkgQEAgdm9pZCBJbnNwZWN0b3JTdHJpbmc6OndyaXRlSlNP
TihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0CiAgICAgZG91YmxlUXVvdGVTdHJpbmcobV9z
dHJpbmdWYWx1ZSwgb3V0cHV0KTsKIH0KIAotSW5zcGVjdG9yT2JqZWN0Ojp+SW5zcGVjdG9yT2Jq
ZWN0KCkKK0luc3BlY3Rvck9iamVjdEJhc2U6On5JbnNwZWN0b3JPYmplY3RCYXNlKCkKIHsKIH0K
IAotYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBvdXRwdXQpCitib29sIEluc3BlY3Rvck9iamVjdEJhc2U6OmFzT2JqZWN0KFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRwdXQpCiB7Ci0gICAgKm91dHB1dCA9IHRoaXM7CisgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvck9iamVjdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVj
dEJhc2UpLCBjYW5ub3RfY2FzdCk7CisgICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PEluc3BlY3Rv
ck9iamVjdCo+KHRoaXMpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdCgpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yT2JqZWN0QmFzZTo6YXNPYmplY3QoKQogewotICAgIHJldHVy
biB0aGlzOworICAgIHJldHVybiBvcGVuQWNjZXNzb3JzKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9y
T2JqZWN0OjpnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0cHV0KSBjb25z
dAorSW5zcGVjdG9yT2JqZWN0KiBJbnNwZWN0b3JPYmplY3RCYXNlOjpvcGVuQWNjZXNzb3JzKCkK
K3sKKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSA9PSBzaXplb2Yo
SW5zcGVjdG9yT2JqZWN0QmFzZSksIGNhbm5vdF9jYXN0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zcGVjdG9yT2JqZWN0Kj4odGhpcyk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOwogICAgIGlmICgh
dmFsdWUpCkBAIC02ODQsNyArNjkxLDcgQEAgYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmdldEJvb2xl
YW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiBvdXRwdXQpIGNvbnN0CiAgICAgcmV0dXJuIHZh
bHVlLT5hc0Jvb2xlYW4ob3V0cHV0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmdldFN0
cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNw
ZWN0b3JPYmplY3RCYXNlOjpnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcqIG91
dHB1dCkgY29uc3QKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5h
bWUpOwogICAgIGlmICghdmFsdWUpCkBAIC02OTIsNyArNjk5LDcgQEAgYm9vbCBJbnNwZWN0b3JP
YmplY3Q6OmdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyogb3V0cHV0KSBjb25z
dAogICAgIHJldHVybiB2YWx1ZS0+YXNTdHJpbmcob3V0cHV0KTsKIH0KIAotUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdDo6Z2V0T2JqZWN0KGNvbnN0IFN0cmluZyYg
bmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JPYmplY3RC
YXNlOjpnZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOwogICAgIGlmICghdmFsdWUpCkBA
IC03MDAsNyArNzA3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9i
amVjdDo6Z2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gdmFs
dWUtPmFzT2JqZWN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3Rv
ck9iamVjdDo6Z2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0QXJyYXkoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAogewogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0g
Z2V0KG5hbWUpOwogICAgIGlmICghdmFsdWUpCkBAIC03MDgsNyArNzE1LDcgQEAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yT2JqZWN0OjpnZXRBcnJheShjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlLT5hc0FycmF5KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3Rvck9iamVjdDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3Rvck9iamVjdEJhc2U6
OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgRGljdGlvbmFyeTo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2RhdGEuZmluZChuYW1lKTsKICAgICBpZiAoaXQgPT0gbV9kYXRhLmVu
ZCgpKQpAQCAtNzE2LDcgKzcyMyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3Bl
Y3Rvck9iamVjdDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gaXQt
PnNlY29uZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnJlbW92ZShjb25zdCBTdHJpbmcm
IG5hbWUpCit2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgbV9kYXRhLnJlbW92ZShuYW1lKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fb3JkZXIuc2l6ZSgpOyArK2kpIHsKQEAgLTcyNyw3ICs3MzQsNyBAQCB2b2lkIEluc3Bl
Y3Rvck9iamVjdDo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdAor
dm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0
KSBjb25zdAogewogICAgIG91dHB1dC0+YXBwZW5kKCd7Jyk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX29yZGVyLnNpemUoKTsgKytpKSB7CkBAIC03NDIsMjkgKzc0OSwzMSBAQCB2b2lk
IEluc3BlY3Rvck9iamVjdDo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QK
ICAgICBvdXRwdXQtPmFwcGVuZCgnfScpOwogfQogCi1JbnNwZWN0b3JPYmplY3Q6Okluc3BlY3Rv
ck9iamVjdCgpCitJbnNwZWN0b3JPYmplY3RCYXNlOjpJbnNwZWN0b3JPYmplY3RCYXNlKCkKICAg
ICA6IEluc3BlY3RvclZhbHVlKFR5cGVPYmplY3QpCiAgICAgLCBtX2RhdGEoKQogICAgICwgbV9v
cmRlcigpCiB7CiB9CiAKLUluc3BlY3RvckFycmF5Ojp+SW5zcGVjdG9yQXJyYXkoKQorSW5zcGVj
dG9yQXJyYXlCYXNlOjp+SW5zcGVjdG9yQXJyYXlCYXNlKCkKIHsKIH0KIAotYm9vbCBJbnNwZWN0
b3JBcnJheTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpCitib29sIElu
c3BlY3RvckFycmF5QmFzZTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQp
CiB7Ci0gICAgKm91dHB1dCA9IHRoaXM7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3Bl
Y3RvckFycmF5QmFzZSkgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgY2Fubm90X2Nhc3QpOwor
ICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHRoaXMpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JBcnJh
eTo6YXNBcnJheSgpCitQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JBcnJheUJh
c2U6OmFzQXJyYXkoKQogewotICAgIHJldHVybiB0aGlzOworICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihJbnNwZWN0b3JBcnJheUJhc2UpID09IHNpemVvZihJbnNwZWN0b3JBcnJheSksIGNhbm5v
dF9jYXN0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPih0aGlzKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JBcnJheTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1
dCkgY29uc3QKK3ZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRl
ciogb3V0cHV0KSBjb25zdAogewogICAgIG91dHB1dC0+YXBwZW5kKCdbJyk7CiAgICAgZm9yIChW
ZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0
YS5iZWdpbigpOyBpdCAhPSBtX2RhdGEuZW5kKCk7ICsraXQpIHsKQEAgLTc3NSwxMyArNzg0LDEz
IEBAIHZvaWQgSW5zcGVjdG9yQXJyYXk6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQp
IGNvbnN0CiAgICAgb3V0cHV0LT5hcHBlbmQoJ10nKTsKIH0KIAotSW5zcGVjdG9yQXJyYXk6Oklu
c3BlY3RvckFycmF5KCkKK0luc3BlY3RvckFycmF5QmFzZTo6SW5zcGVjdG9yQXJyYXlCYXNlKCkK
ICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGVBcnJheSkKICAgICAsIG1fZGF0YSgpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5OjpnZXQoc2l6ZV90IGlu
ZGV4KQorUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQXJyYXlCYXNlOjpnZXQo
c2l6ZV90IGluZGV4KQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZGF0YS5zaXplKCkpOwogICAg
IHJldHVybiBtX2RhdGFbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oCmluZGV4IGM5MWFkODJlNjViZGMwZjFmOWZlMTc3NDYzMDVjOWEzZGZlYjllOTEu
LmRlN2E0NjM5NTk4NGVlZDlhYmQ2Y2EzMmRkMDE5NzE0MGQyN2RjY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX3N0cmluZ1ZhbHVlOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0IDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdEJhc2Ug
OiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+ID4gRGljdGlvbmFyeTsKIApAQCAtMTY1LDE0
ICsxNjUsMTMgQEAgcHVibGljOgogICAgIHR5cGVkZWYgRGljdGlvbmFyeTo6aXRlcmF0b3IgaXRl
cmF0b3I7CiAgICAgdHlwZWRlZiBEaWN0aW9uYXJ5Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVy
YXRvcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yT2JqZWN0KCkpOwot
ICAgIH0KLSAgICB+SW5zcGVjdG9yT2JqZWN0KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKTsKKyAgICBJbnNwZWN0b3JPYmplY3QqIG9wZW5BY2Nl
c3NvcnMoKTsKKworcHJvdGVjdGVkOgorICAgIH5JbnNwZWN0b3JPYmplY3RCYXNlKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKTsKIAog
ICAgIHZvaWQgc2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wpOwogICAgIHZvaWQg
c2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlKTsKQEAgLTIwOCwyNiArMjA3LDU5
IEBAIHB1YmxpYzoKICAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zaXplKCk7
IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3Rvck9iamVjdCgpOworICAgIEluc3BlY3Rvck9i
amVjdEJhc2UoKTsKIAogcHJpdmF0ZToKICAgICBEaWN0aW9uYXJ5IG1fZGF0YTsKICAgICBWZWN0
b3I8U3RyaW5nPiBtX29yZGVyOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXkgOiBwdWJsaWMg
SW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0IDogcHVibGljIEluc3BlY3Rv
ck9iamVjdEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVj
dG9yT2JqZWN0KCkpOworICAgIH0KKworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmFz
T2JqZWN0OworCisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0Qm9vbGVhbjsKKyAg
ICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXROdW1iZXI7CisgICAgdXNpbmcgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6c2V0U3RyaW5nOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6
OnNldFZhbHVlOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE9iamVjdDsKKyAg
ICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheTsKKworICAgIHVzaW5nIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OmZpbmQ7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0
Qm9vbGVhbjsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXROdW1iZXI7CisgICAg
dXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0U3RyaW5nOworICAgIHVzaW5nIEluc3BlY3Rv
ck9iamVjdEJhc2U6OmdldE9iamVjdDsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpn
ZXRBcnJheTsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXQ7CisKKyAgICB1c2lu
ZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmU7CisKKyAgICB1c2luZyBJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpiZWdpbjsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjplbmQ7CisKKyAg
ICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzaXplOworfTsKKworCitjbGFzcyBJbnNwZWN0
b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewogcHVibGljOgogICAgIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPjo6aXRlcmF0b3IgaXRlcmF0b3I7CiAg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPiA+Ojpjb25zdF9pdGVyYXRv
ciBjb25zdF9pdGVyYXRvcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JB
cnJheSgpKTsKLSAgICB9Ci0gICAgfkluc3BlY3RvckFycmF5KCk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0FycmF5KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB+SW5z
cGVjdG9yQXJyYXlCYXNlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+KiBvdXRwdXQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gYXNBcnJheSgpOwogCiAgICAgdm9pZCBwdXNoQm9vbGVhbihib29sKTsKICAgICB2b2lk
IHB1c2hJbnQoaW50KTsKQEAgLTIzNiw3ICsyNjgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXNo
VmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4pOwogICAgIHZvaWQgcHVzaE9iamVjdChQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwogICAgIHZvaWQgcHVzaEFycmF5KFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KTsKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuc2l6ZSgpOyB9CiAKICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBnZXQo
c2l6ZV90IGluZGV4KTsKIApAQCAtMjQ4LDkxICsyNzksMTE1IEBAIHB1YmxpYzoKICAgICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIEluc3BlY3RvckFycmF5KCk7CisgICAgSW5zcGVjdG9yQXJyYXlCYXNlKCk7CiAK
IHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPiBtX2RhdGE7CiB9
OwogCi1pbmxpbmUgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBJbnNwZWN0b3JPYmplY3Q6OmZp
bmQoY29uc3QgU3RyaW5nJiBuYW1lKQorY2xhc3MgSW5zcGVjdG9yQXJyYXkgOiBwdWJsaWMgSW5z
cGVjdG9yQXJyYXlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5z
cGVjdG9yQXJyYXkoKSk7CisgICAgfQorCisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjph
c0FycmF5OworCisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVhbjsKKyAg
ICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnQ7CisgICAgdXNpbmcgSW5zcGVjdG9y
QXJyYXlCYXNlOjpwdXNoTnVtYmVyOworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVz
aFN0cmluZzsKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hWYWx1ZTsKKyAgICB1
c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3Q7CisgICAgdXNpbmcgSW5zcGVjdG9y
QXJyYXlCYXNlOjpwdXNoQXJyYXk7CisKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6Omdl
dDsKKworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6YmVnaW47CisgICAgdXNpbmcgSW5z
cGVjdG9yQXJyYXlCYXNlOjplbmQ7Cit9OworCisKK2lubGluZSBJbnNwZWN0b3JPYmplY3RCYXNl
OjppdGVyYXRvciBJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICByZXR1cm4gbV9kYXRhLmZpbmQobmFtZSk7CiB9CiAKLWlubGluZSBJbnNwZWN0b3JP
YmplY3Q6OmNvbnN0X2l0ZXJhdG9yIEluc3BlY3Rvck9iamVjdDo6ZmluZChjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0CitpbmxpbmUgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Y29uc3RfaXRlcmF0b3Ig
SW5zcGVjdG9yT2JqZWN0QmFzZTo6ZmluZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZGF0YS5maW5kKG5hbWUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JP
YmplY3Q6OnNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHZhbHVlKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgdmFsdWUpCiB7CiAgICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6
Y3JlYXRlKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0TnVt
YmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVl
KQogewogICAgIHNldFZhbHVlKG5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1
ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFN0cmluZyhjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JP
YmplY3RCYXNlOjpzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIHNldFZhbHVlKG5hbWUsIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVl
KSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKK2lubGluZSB2b2lk
IEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBp
ZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5h
cHBlbmQobmFtZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0T2JqZWN0
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQogewogICAgIEFTU0VSVCh2
YWx1ZSk7CiAgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkpCiAgICAg
ICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmpl
Y3Q6OnNldEFycmF5KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50
cnkpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JBcnJheTo6cHVzaEJvb2xlYW4oYm9vbCB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaEJvb2xlYW4oYm9vbCB2YWx1ZSkKIHsKICAgICBtX2RhdGEuYXBwZW5k
KEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JBcnJheTo6cHVzaEludChpbnQgdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hJbnQoaW50IHZhbHVlKQogewogICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVj
dG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckFycmF5OjpwdXNoTnVtYmVyKGRvdWJsZSB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3RvckFy
cmF5QmFzZTo6cHVzaE51bWJlcihkb3VibGUgdmFsdWUpCiB7CiAgICAgbV9kYXRhLmFwcGVuZChJ
bnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9yQXJyYXk6OnB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6OnB1c2hWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFZhbHVl
KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7
CiAgICAgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFy
cmF5OjpwdXNoT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBtX2RhdGEuYXBwZW5k
KHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6OnB1c2hBcnJheShQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3RvckFycmF5
QmFzZTo6cHVzaEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDZmYmFl
YTIxYTgyODkzMWNjZDEyYjkwOTZiMjJjNWFmZDkzNmE2YTEuLjE1MmJlM2FlZmYxYjIwNzI2ZjFi
YjFkMzYxMThhNGVhYTNjZWE2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQoZG91YmxlIHN0CiAgICAgaWYgKG1heENhbGxTdGFja0RlcHRoKSB7CiAgICAgICAgIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobWF4
Q2FsbFN0YWNrRGVwdGgsIHRydWUpOwogICAgICAgICBpZiAoc3RhY2tUcmFjZSAmJiBzdGFja1Ry
YWNlLT5zaXplKCkpCi0gICAgICAgICAgICByZWNvcmQtPnNldEFycmF5KCJzdGFja1RyYWNlIiwg
c3RhY2tUcmFjZS0+YnVpbGRJbnNwZWN0b3JBcnJheSgpKTsKKyAgICAgICAgICAgIHJlY29yZC0+
c2V0VmFsdWUoInN0YWNrVHJhY2UiLCBzdGFja1RyYWNlLT5idWlsZEluc3BlY3RvckFycmF5KCkp
OwogICAgIH0KICAgICByZXR1cm4gcmVjb3JkLnJlbGVhc2UoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136468</attachid>
            <date>2012-04-10 09:21:05 -0700</date>
            <delta_ts>2012-04-10 15:39:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83390-20120410202103.patch</filename>
            <type>text/plain</type>
            <size>42907</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdlNmM0ZGQwY2QwNjJj
MGZlZWI4ZTI3OGUzZjE0NmIzZjlkMDM2MS4uNjQzYzUzZDczMTA2NzE4NjllYTkyMmExMDFiOGM3
ZDc3ZGFjZTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA0LTEwICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBkbyBub3QgZXhwb3NlIHJhdyBtZXRob2RzIGZy
b20gZ2VuZXJhdGVkIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MzM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludGVybWVkaWF0ZSBjbGFzc2VzIEluc3BlY3Rvck9iamVjdEJhc2UgYW5kIElu
c3BlY3RvckFycmF5QmFzZSBhcmUgY3JlYXRlZC4gVGhleSBoYXZlIGFsbCByYXcgbWV0aG9zCisg
ICAgICAgIHByb3RlY3RlZC4gSW5zcGVjdG9yT2JqZWN0IGFuZCBJbnNwZWN0b3JBcnJheSBub3cg
aW5oZXJpdCB0aGUgY29ycmVzcG9uZGluZyBiYXNlIGNsYXNzZXMgd2l0aCBleHBvc2luZworICAg
ICAgICBhbGwgdGhlaXIgcHJvdGVjdGVkIG1ldGhvZHMuCisKKyAgICAgICAgIk9wZW4gdHlwZXMi
IGFyZSBsZWZ0IGluaGVyaXRpbmcgZnJvbSBJbnNwZWN0b3JPYmplY3QsIHBsdXMgZmllbGQgbmFt
ZSBjb25zdGFudHMgYXJlIGdlbmVyYXRlZCBmb3IKKyAgICAgICAgYW4gZWFzeSByYW5kb20gYWNj
ZXNzIHRvIGFsbCBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFsbCB0aGUgY2xpZW50IGNvZGUgaXMg
Zml4ZWQgdG8gdXNlIHR5cGUtc2FmZSBBUEkgcmF0aGVyIHRoYW4gcmF3IGFjY2VzcyBtZXRob2Rz
IGluIGZ1bmN0aW9uIHBhcmFtZXRlcgorICAgICAgICBhbmQgcmV0dXJuIHR5cGVzIGFuZCBib2Rp
ZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAg
ICAgICAgKFJhd1R5cGVzLk9iamVjdCk6CisgICAgICAgIChSYXdUeXBlcy5PYmplY3QuZ2V0X3Nl
dHRlcl9uYW1lKToKKyAgICAgICAgKFJhd1R5cGVzLkFycmF5KToKKyAgICAgICAgKFJhd1R5cGVz
LkFycmF5LmdldF9zZXR0ZXJfbmFtZSk6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5
cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5nZXRfY29kZV9nZW5lcmF0b3IuQ29kZUdlbmVy
YXRvci5nZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAoQXJyYXkpOgorICAgICAgICAo
R2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRl
X2FkX2hvYy5JbnRlcmZhY2VHZW5lcmF0ZUNvbnRleHQpOgorICAgICAgICAoR2VuZXJhdG9yLnBy
b2Nlc3NfdHlwZXMuR2VuZXJhdGVDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1
ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxN
ZWRpYUxpc3RDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjp+SW5zcGVjdG9yT2JqZWN0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpvcGVuQWNjZXNzb3JzKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OmdldEFycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck9iamVjdEJhc2U6Okluc3BlY3Rvck9iamVjdEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXJyYXlCYXNlOjp+SW5zcGVjdG9yQXJyYXlCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBcnJheUJhc2U6OndyaXRlSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JB
cnJheUJhc2U6Okluc3BlY3RvckFycmF5QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcnJheUJhc2U6OmdldCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
OgorICAgICAgICAoSW5zcGVjdG9yT2JqZWN0QmFzZSk6CisgICAgICAgIChJbnNwZWN0b3JPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JBcnJheUJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpsZW5ndGgpOgorICAgICAgICAoSW5zcGVjdG9yQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck9iamVjdEJhc2U6OnNldFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNl
OjpzZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0
QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVh
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoTnVtYmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQXJyYXlCYXNlOjpwdXNoQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVHZW5lcmljUmVjb3JkKToKKwogMjAxMi0wNC0xMCAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIGVycm9y
IGEgc3RyaW5nIG9uIHRoZSBmcm9udC1lbmQgc2lkZSwgbm90IGFuIG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
NjMwMWVjMTQzZGRmMDNlMjlkMTlkMGUxM2IwNzUwMDJkYTJlYmI4Ni4uNWE1YWZmZDRiZTUyZGI5
ZmIwMzExNTE5NzI1N2JkMzcwYmVhYjA1OSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTYxLDcgKzYxLDExIEBAIFRZUEVT
X1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbIlJ1bnRpbWUuUmVtb3RlT2JqZWN0
IiwgIlJ1bnRpbWUuUHJvcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgVGhpcyBzaG91bGQgYmUgYSB0ZW1wb3JhcnkgaGFjay4gVGltZWxpbmVFdmVudCBzaG91
bGQgYmUgY3JlYXRlZCB2aWEgZ2VuZXJhdGVkIEMrKyBBUEkuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUaW1lbGluZS5UaW1lbGluZUV2ZW50Il0pCiAKLVRZUEVT
X1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NFVCA9IGZyb3plbnNldChbIlRpbWVsaW5lLlRpbWVsaW5l
RXZlbnQiXSkKK1RZUEVTX1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NFVCA9IGZyb3plbnNldChbIlRp
bWVsaW5lLlRpbWVsaW5lRXZlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIEluc3BlY3RvclN0eWxlU2hlZXQgbm90IG9ubHkgY3JlYXRlcyB0aGlzIHBy
b3BlcnR5IGJ1dCB3YW50cyB0byByZWFkIGl0IGFuZCBtb2RpZnkgaXQuCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDU1MuQ1NTUHJvcGVydHkiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluc3BlY3RvclJlc291cmNl
QWdlbnQgbmVlZHMgdG8gdXBkYXRlIG1pbWUtdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk5ldHdvcmsuUmVzcG9uc2UiXSkKIAogY21kbGluZV9wYXJz
ZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQogY21kbGluZV9wYXJzZXIuYWRkX29wdGlvbigi
LS1vdXRwdXRfaF9kaXIiKQpAQCAtNDIyLDcgKzQyNiw5IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVj
dCk6CiAgICAgICAgIGRlZiBnZXRfZ2V0dGVyX25hbWUoKToKICAgICAgICAgICAgIHJldHVybiAi
T2JqZWN0IgogCi0gICAgICAgIGdldF9zZXR0ZXJfbmFtZSA9IGdldF9nZXR0ZXJfbmFtZQorICAg
ICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBnZXRfc2V0dGVyX25hbWUoKToKKyAgICAg
ICAgICAgIHJldHVybiAiVmFsdWUiCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBk
ZWYgZ2V0X2NfaW5pdGlhbGl6ZXIoKToKQEAgLTUwNiw3ICs1MTIsOSBAQCBjbGFzcyBSYXdUeXBl
cyhvYmplY3QpOgogICAgICAgICBkZWYgZ2V0X2dldHRlcl9uYW1lKCk6CiAgICAgICAgICAgICBy
ZXR1cm4gIkFycmF5IgogCi0gICAgICAgIGdldF9zZXR0ZXJfbmFtZSA9IGdldF9nZXR0ZXJfbmFt
ZQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBnZXRfc2V0dGVyX25hbWUoKToK
KyAgICAgICAgICAgIHJldHVybiAiVmFsdWUiCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAg
ICAgICBkZWYgZ2V0X2NfaW5pdGlhbGl6ZXIoKToKQEAgLTExNDEsMTAgKzExNDksMTggQEAgY2xh
c3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl
X2RhdGEgPSBjbGFzc19iaW5kaW5nX2Nscy5yZXNvbHZlX2RhdGFfCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHBlci53cml0ZV9kb2Mod3JpdGVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGFzc19uYW1lID0gZml4ZWRfdHlwZV9uYW1lLmNsYXNzX25hbWUK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19vcGVuX3R5cGUgPSAoY29udGV4
dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25hbWUpIGluIFRZUEVTX1dJVEhfT1BFTl9GSUVM
RF9MSVNUX1NFVAorCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkX3R5cGVf
bmFtZS5vdXRwdXRfY29tbWVudCh3cml0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5uZXdsaW5lKCJjbGFzcyAiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1YmxpYyBJbnNwZWN0b3JPYmplY3Qge1xuIikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIDogcHVibGljICIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzX29wZW5fdHlwZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvck9i
amVjdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3RC
YXNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIHtc
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCJwdWJs
aWM6XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZF9ob2NfdHlwZV93cml0
ZXIgPSB3cml0ZXIuaW5zZXJ0X3dyaXRlcigiICAgICIpCiAKQEAgLTExODQsNyArMTIwMCw3IEBA
IGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1
aWxkZXIoUGFzc1JlZlB0cjwlcz4gcHRyKQorICAgICAgICBCdWlsZGVyKFBhc3NSZWZQdHI8Lyol
cyovSW5zcGVjdG9yT2JqZWN0PiBwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRf
c3RhdGUpOwogICAgICAgICAgICAgbV9yZXN1bHQgPSBwdHI7CkBAIC0xMjIyLDYgKzEyMzgsNyBA
QCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAgIG9wZXJhdG9yIFJlZlB0cjwlcz4mICgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1Nl
dCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAgICAgICAg
ICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmUHRyPCVzPio+KCZtX3Jlc3VsdCk7CiAg
ICAgICAgIH0KIApAQCAtMTIzMiw3ICsxMjQ5LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAg
IH07CiAKICIiIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjbGFzc19uYW1l
LCBjbGFzc19uYW1lLCBjbGFzc19uYW1lLCBjbGFzc19uYW1lKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSAoY2xhc3NfbmFtZSwgY2xhc3NfbmFtZSwgY2xhc3NfbmFtZSwgY2xh
c3NfbmFtZSwgY2xhc3NfbmFtZSkpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVyLm5ld2xpbmUoIiAgICAvKlxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgKiBTeW50aGV0aWMgY29uc3RydWN0b3I6XG4iKQpAQCAt
MTI0NCw5ICsxMjYxLDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZV9tdWx0aWxpbmUoCiAiIiIgICAgc3RhdGljIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRl
cjxOb0ZpZWxkc1NldD4oYWRvcHRSZWYobmV3ICVzKCkpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxk
ZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSIiIiAl
IGNsYXNzX25hbWUpCisiIiIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLm5ld2xpbmUoIiAgICB0eXBlZGVmIFR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0
ZW1UcmFpdHM7XG4iKQogCkBAIC0xMjY1LDcgKzEyODIsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6
CiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2V0dGVyX25hbWUg
aW4gSU5TUEVDVE9SX09CSkVDVF9TRVRURVJfTkFNRVM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB1c2luZyBJbnNwZWN0b3JPYmpl
Y3Q6OiVzO1xuXG4iICUgc2V0dGVyX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNl
OjolcztcblxuIiAlIHNldHRlcl9uYW1lKQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIGNsYXNzX2JpbmRpbmdfY2xzLm5lZWRfdXNlcl9ydW50aW1lX2Nhc3RfOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMg
UGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUpXG4iICUgY2xhc3NfbmFtZSkKQEAgLTEyNzYsOCArMTI5Myw4IEBAIGNsYXNzIFR5cGVCaW5k
aW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQo
IiNpZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVl
KG9iamVjdC5nZXQoKSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwg
dHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNzX25hbWUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8JXMqPihvYmplY3QuZ2V0KCkpO1xuIiAlIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3By
b2JsZW0pO1xuIiAlIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JXMqPihzdGF0
aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3Nf
bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5l
KCIgICAgfVxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5h
cHBlbmQoIlxuIikKIApAQCAtMTMyMiw2ICsxMzM5LDE3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVy
Lm5ld2xpbmUoIiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXpl
KCkpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93
cml0ZXIubmV3bGluZSgifVxuXG5cbiIpCiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgaXNfb3Blbl90eXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3BwX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRleHQuY3BwX3dyaXRlcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiXG4iKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAvLyBQcm9wZXJ0eSBuYW1l
cyBmb3IgdHlwZSBnZW5lcmF0ZWQgYXMgb3Blbi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgcHJvcF9kYXRhIGluIHJlc29sdmVfZGF0YS5tYWluX3Byb3BlcnRp
ZXMgKyByZXNvbHZlX2RhdGEub3B0aW9uYWxfcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9wX25hbWUgPSBwcm9wX2RhdGEucFsibmFtZSJdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcF9maWVsZF9uYW1lID0g
Q2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihwcm9wX25hbWUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0
aWMgY29uc3QgY2hhciogJXM7XG4iICUgKHByb3BfZmllbGRfbmFtZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3dyaXRlci5uZXdsaW5lKCJjb25zdCBjaGFy
KiAlcyVzOjolcyA9IFwiJXNcIjtcbiIgJSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2lt
cGwsIGNsYXNzX25hbWUsIHByb3BfZmllbGRfbmFtZSwgcHJvcF9uYW1lKSkKKworCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCJ9O1xuXG4iKQogCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQHN0YXRpY21ldGhvZApAQCAtMjIwNCwxOSArMjIzMiwy
NCBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheSB7CitjbGFzcyBBcnJheSA6IHB1
YmxpYyBJbnNwZWN0b3JBcnJheUJhc2UgewogcHJpdmF0ZToKICAgICBBcnJheSgpIHsgfQogCisg
ICAgSW5zcGVjdG9yQXJyYXkqIG9wZW5BY2Nlc3NvcnMoKSB7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nh
c3QpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNf
Y2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPih0aGlzKSk7CisgICAgfQorCiBwdWJsaWM6CiAgICAg
dm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8VD4gdmFsdWUpCiAgICAgewotICAgICAgICBBcnJheUl0
ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJlZlB0cih0aGlzLCB2YWx1ZSk7CisgICAgICAgIEFy
cmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMo
KSwgdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcywgdmFsdWUpOwor
ICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlzLT5vcGVuQWNj
ZXNzb3JzKCksIHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheTxU
PiA+IGNyZWF0ZSgpCkBAIC0yMjMzLDcgKzIyNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFzc2Vy
dENvcnJlY3RWYWx1ZShhcnJheS5nZXQoKSk7CiAjZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSW5zcGVj
dG9yQXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBcnJheTxUPio+KGFycmF5LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFy
cmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsK
ICAgICB9CiAKICNpZiAiIiIgKyBWQUxJREFUT1JfSUZERUZfTkFNRSArICIiIgpAQCAtMjI1MCw5
ICsyMjgzLDkgQEAgcHVibGljOgogfTsKIAogc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgewotICAg
IHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCisgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNw
ZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAg
IHsKLSAgICAgICAgYXJyYXktPnB1c2hPYmplY3QodmFsdWUpOworICAgICAgICBhcnJheS0+cHVz
aFZhbHVlKHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjI5
NCw5ICsyMzI3LDkgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4gewog
dGVtcGxhdGU8Pgogc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsKICAg
ICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKKyAgICAg
ICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+
cHVzaE9iamVjdCh2YWx1ZSk7CisgICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsK
ICAgICAgICAgfQogICAgIH07CiB9OwpAQCAtMjMwNiw3ICsyMzM5LDcgQEAgc3RydWN0IEFycmF5
SXRlbUhlbHBlcjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4gPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPiA+IHZhbHVlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZhbHVlKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXNo
VmFsdWUodmFsdWUpOwogICAgICAgICB9CiAgICAgfTsKIH07CkBAIC0yMzQ4LDYgKzIzODEsOCBA
QCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogfSAvLyBuYW1lc3Bh
Y2UgVHlwZUJ1aWxkZXIKIAorJGltcGxDb2RlCisKICNpZiAiIiIgKyBWQUxJREFUT1JfSUZERUZf
TkFNRSArICIiIgogCiAkdmFsaWRhdG9yQ29kZQpAQCAtMjQ2Nyw2ICsyNTAyLDcgQEAgY2xhc3Mg
R2VuZXJhdG9yOgogICAgIHR5cGVfYnVpbGRlcl9mb3J3YXJkcyA9IFtdCiAgICAgdmFsaWRhdG9y
X2ltcGxfbGlzdCA9IFtdCiAgICAgdmFsaWRhdG9yX2ltcGxfcmF3X3R5cGVzX2xpc3QgPSBbXQor
ICAgIHR5cGVfYnVpbGRlcl9pbXBsX2xpc3QgPSBbXQogCiAKICAgICBAc3RhdGljbWV0aG9kCkBA
IC0yNzc3LDYgKzI4MTMsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAgICAgY2xhc3MgSW50
ZXJmYWNlR2VuZXJhdGVDb250ZXh0OgogICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9ICJu
b3Qgc3VwcG9ydGVkIGluIEludGVyZmFjZUdlbmVyYXRlQ29udGV4dCIKKyAgICAgICAgICAgIGNw
cF93cml0ZXIgPSB2YWxpZGF0b3Jfd3JpdGVyCiAKICAgICAgICAgZm9yIHR5cGUgaW4gYWRfaG9j
X3R5cGVfbGlzdDoKICAgICAgICAgICAgIGdlbmVyYXRvciA9IHR5cGUuZ2V0X2NvZGVfZ2VuZXJh
dG9yKCkKQEAgLTI3OTEsNiArMjgyOCw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKIAogICAgICAgICBj
bGFzcyBHZW5lcmF0ZUNvbnRleHQ6CiAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyID0gV3Jp
dGVyKEdlbmVyYXRvci52YWxpZGF0b3JfaW1wbF9saXN0LCAiIikKKyAgICAgICAgICAgIGNwcF93
cml0ZXIgPSBXcml0ZXIoR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9pbXBsX2xpc3QsICIiKQogCiAg
ICAgICAgIGRlZiBnZW5lcmF0ZV9hbGxfZG9tYWluc19jb2RlKG91dCwgdHlwZV9kYXRhX2NhbGxi
YWNrKToKICAgICAgICAgICAgIHdyaXRlciA9IFdyaXRlcihvdXQsICIiKQpAQCAtMjkwNSw2ICsy
OTQzLDcgQEAgdHlwZWJ1aWxkZXJfaF9maWxlLndyaXRlKFRlbXBsYXRlcy50eXBlYnVpbGRlcl9o
LnN1YnN0aXR1dGUoTm9uZSwKIAogdHlwZWJ1aWxkZXJfY3BwX2ZpbGUud3JpdGUoVGVtcGxhdGVz
LnR5cGVidWlsZGVyX2NwcC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgZW51bUNvbnN0YW50VmFsdWVz
PUVudW1Db25zdGFudHMuZ2V0X2VudW1fY29uc3RhbnRfY29kZSgpLAorICAgIGltcGxDb2RlPWpv
aW4oZmxhdHRlbl9saXN0KEdlbmVyYXRvci50eXBlX2J1aWxkZXJfaW1wbF9saXN0KSwgIiIpLAog
ICAgIHZhbGlkYXRvckNvZGU9am9pbihmbGF0dGVuX2xpc3QoR2VuZXJhdG9yLnZhbGlkYXRvcl9p
bXBsX2xpc3QpLCAiIikpKQogCiBiYWNrZW5kX2pzX2ZpbGUud3JpdGUoVGVtcGxhdGVzLmJhY2tl
bmRfanMuc3Vic3RpdHV0ZShOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzg3OWY2Mzc4MjVlYWEwZmU1MzI1ZmU3ZjJjNTFjODEw
ZWExNTUwOC4uMzQ4YzY2MmRlOWI4MjdkMzU2N2Q2ZmRlYmI2MjhmZDExY2QxMjZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MDUs
NyArNTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICByZXN1bHQgPSBUeXBlQnVp
bGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgIHJlc3VsdC0+cHVzaE51bWJlcihwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CisgICAgICAgIHJlc3VsdC0+YWRk
SXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CiB9CiAKIGludCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNo
KQpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBuCiAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBj
b25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07CiAgICAg
ICAgICAgICBpZiAobGlzdGVuZXIudXNlQ2FwdHVyZSkKLSAgICAgICAgICAgICAgICBsaXN0ZW5l
cnNBcnJheS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIs
IGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lcnNB
cnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGluZm8u
ZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzU3LDcgKzc1
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBuCiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBjb25zdCBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07CiAgICAgICAgICAgICBpZiAoIWxp
c3RlbmVyLnVzZUNhcHR1cmUpCi0gICAgICAgICAgICAgICAgbGlzdGVuZXJzQXJyYXktPnB1c2hP
YmplY3QoYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2ZW50VHlw
ZSwgaW5mby5ub2RlKSk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXJzQXJyYXktPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2ZW50VHlwZSwgaW5m
by5ub2RlKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjg3LDcgKzEyODcsNyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZAogICAgIHJldHVybiBjaGlsZHJlbi5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5v
ZGUpCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgTm9kZSogbm9kZSkKIHsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmxpc3RlbmVyOwogICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpE
T006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDM0YjQxZTY0ZmIyMGU4YWZjODJkZDZkY2UzNTc4MGQ2
NWVlMTIwY2YuLjZiOTZjMmI5YzcxMjhiMzNjNWI1YTdjNmI5YzhiYzQyZDI0N2VmN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0yMjcsNyAr
MjI3LDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwogICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBidWlsZEFycmF5Rm9yRWxl
bWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxk
cmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwot
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVu
ZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgTm9kZSopOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRM
aXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqKTsKIAogICAg
IE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCBjZTc1M2NiMjJjYzgwODg0Njk2OTUxMjMxYmM1MDc0ZTljMTljOTUwLi4yMzFhZWU1NGY1ZjI0
Mzc0OTdmZWQ4MDk5N2MxN2FkMjM2ZjBkMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMDcsOCArMzA3
LDggQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2
ZW50KE5vZGUqIHRhcmdldCwgaW50IGJyZWFrcG8KICAgICBpZiAoKDEgPDwgYnJlYWtwb2ludFR5
cGUpICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrKSB7CiAgICAgICAgIC8vIEZv
ciBpbmhlcml0YWJsZSBicmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24ndCBhbHdheXMg
dGhlIHNhbWUgYXMgdGhlIG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2ludC4KICAgICAgICAgLy8g
VGFyZ2V0IG5vZGUgbWF5IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNvIHdlIG5lZWQgdG8gcHVz
aCBpdCBmaXJzdC4KLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdGFyZ2V0Tm9kZU9i
amVjdCA9IG1fZG9tQWdlbnQtPnJlc29sdmVOb2RlKHRhcmdldCwgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0T2Jq
ZWN0KCJ0YXJnZXROb2RlIiwgdGFyZ2V0Tm9kZU9iamVjdCk7CisgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21B
Z2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJh
Y2VPYmplY3RHcm91cCk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRWYWx1ZSgidGFyZ2V0Tm9k
ZSIsIHRhcmdldE5vZGVPYmplY3QpOwogCiAgICAgICAgIC8vIEZpbmQgYnJlYWtwb2ludCBvd25l
ciBub2RlLgogICAgICAgICBpZiAoIWluc2VydGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA5MjRiZTM4NDI5Zjc0
MDk2MjNiMjY3NzkyYmFkMDQ1NjMzZGM4OGY4Li4yNWZhM2ZiYWM0MjFlZDRlYTI3M2VlMjA1ODll
ZTU0YjljODAzMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yNDIsOSArMjQyLDkgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbGkKICAgICBmb3IgKFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmJl
Z2luKCk7IGl0ICE9IG1fc2NyaXB0cy5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoIW1hdGNo
ZXMoaXQtPnNlY29uZC51cmwsIHVybCwgaXNSZWdleCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtw
b2ludChicmVha3BvaW50SWQsIGl0LT5maXJzdCwgYnJlYWtwb2ludCk7CisgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnRJZCwgaXQtPmZpcnN0LCBicmVha3BvaW50KTsKICAgICAgICAgaWYg
KGxvY2F0aW9uKQotICAgICAgICAgICAgbG9jYXRpb25zLT5wdXNoT2JqZWN0KGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShsb2NhdGlvbik7CiAgICAgfQogICAgICpv
dXRCcmVha3BvaW50SWQgPSBicmVha3BvaW50SWQ7CiB9CkBAIC01NjgsNyArNTY4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IFNjcmlwdFZhbHUKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAg
ICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29u
OjpFeGNlcHRpb247Ci0gICAgICAgICAgICBtX2JyZWFrQXV4RGF0YSA9IGluamVjdGVkU2NyaXB0
LndyYXBPYmplY3QoZXhjZXB0aW9uLCAiYmFja3RyYWNlIik7CisgICAgICAgICAgICBtX2JyZWFr
QXV4RGF0YSA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoZXhjZXB0aW9uLCAiYmFja3RyYWNl
IiktPm9wZW5BY2Nlc3NvcnMoKTsKICAgICAgICAgICAgIC8vIG1fYnJlYWtBdXhEYXRhIG1pZ2h0
IGJlIG51bGwgYWZ0ZXIgdGhpcy4KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZTRkNmUxZGJlZDM2YzBk
ZjI1NjBkZDM4YjY2MjM3NzQxOGViODc0MC4uNDQ2ZGEwM2JmZGY3YzZmYmIxN2IyYzdjZGQ0NzQw
MGZmYWMxZTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKQEAgLTU4OSwxNCArNTg5LDEyIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBj
CiAgICAgcmVzdWx0cyA9IENvbnRlbnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhj
b250ZW50LCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkKK3N0
YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2Jq
ZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBtYXRjaGVzQ291bnQpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXN1bHQtPnNldFN0cmluZygi
ZnJhbWVJZCIsIGZyYW1lSWQpOwotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwot
ICAgIHJlc3VsdC0+c2V0TnVtYmVyKCJtYXRjaGVzQ291bnQiLCBtYXRjaGVzQ291bnQpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJl
c3VsdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFVybCh1cmwpCisgICAgICAgIC5zZXRGcmFtZUlk
KGZyYW1lSWQpCisgICAgICAgIC5zZXRNYXRjaGVzQ291bnQobWF0Y2hlc0NvdW50KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0PiA+JiByZXN1bHRzKQpAQCAt
NjE1LDEzICs2MTMsMTMgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3Vy
Y2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAgICAgICAgICAgIGlm
ICh0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlLCAmY29udGVudCkp
IHsKICAgICAgICAgICAgICAgICBpbnQgbWF0Y2hlc0NvdW50ID0gQ29udGVudFNlYXJjaFV0aWxz
Ojpjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhyZWdleCwgY29udGVudCk7CiAgICAgICAg
ICAgICAgICAgaWYgKG1hdGNoZXNDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgc2VhcmNoUmVz
dWx0cy0+cHVzaFZhbHVlKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGZyYW1lSWQoZnJhbWUp
LCBjYWNoZWRSZXNvdXJjZS0+dXJsKCksIG1hdGNoZXNDb3VudCkpOworICAgICAgICAgICAgICAg
ICAgICBzZWFyY2hSZXN1bHRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGZy
YW1lSWQoZnJhbWUpLCBjYWNoZWRSZXNvdXJjZS0+dXJsKCksIG1hdGNoZXNDb3VudCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChtYWluUmVzb3VyY2VDb250ZW50KGZy
YW1lLCBmYWxzZSwgJmNvbnRlbnQpKSB7CiAgICAgICAgICAgICBpbnQgbWF0Y2hlc0NvdW50ID0g
Q29udGVudFNlYXJjaFV0aWxzOjpjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhyZWdleCwg
Y29udGVudCk7CiAgICAgICAgICAgICBpZiAobWF0Y2hlc0NvdW50KQotICAgICAgICAgICAgICAg
IHNlYXJjaFJlc3VsdHMtPnB1c2hWYWx1ZShidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChmcmFt
ZUlkKGZyYW1lKSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBtYXRjaGVzQ291bnQpKTsKKyAg
ICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VhcmNo
UmVzdWx0KGZyYW1lSWQoZnJhbWUpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIG1hdGNoZXND
b3VudCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05MDMsMTMgKzkwMSwxMyBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFn
ZW50OjpidWlsZE9iamVjdAogICAgICAgICBzdWJyZXNvdXJjZXMtPmFkZEl0ZW0ocmVzb3VyY2VP
YmplY3QpOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW5BcnJh
eTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT4gPiBjaGlsZHJlbkFycmF5OwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
ZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2hpbGRyZW5BcnJheSkgewotICAgICAg
ICAgICAgY2hpbGRyZW5BcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+c2V0QXJyYXkoImNoaWxkRnJhbWVzIiwgY2hpbGRyZW5BcnJheSk7CisgICAg
ICAgICAgICBjaGlsZHJlbkFycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgcmVzdWx0LT5z
ZXRDaGlsZEZyYW1lcyhjaGlsZHJlbkFycmF5KTsKICAgICAgICAgfQotICAgICAgICBjaGlsZHJl
bkFycmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKGNoaWxkKSk7CisgICAg
ICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoY2hpbGQp
KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAxNzAwMjExN2I1YWQy
NjRhNDA2YTkxNGQ4NzEzMWY5ZjUzNDAyYzllLi4wZDBjNzkzMzBjOTI0NzA0MjkwMWFmMDM4OGZh
Nzk3ZGEyNDRlNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWUKICAgICAgICAgICAgIGNhY2hlZFJlc291cmNlU2l6ZSA9IGNhY2hlZFJlc291cmNl
LT5lbmNvZGVkU2l6ZSgpOwogICAgICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNhY2hl
ZCByZXNvdXJjZSBpbiBjYXNlIHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAgICAgICAg
ICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoIm1pbWVUeXBl
IiwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CisgICAgICAgICAgICAg
ICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNw
b25zZTo6TWltZVR5cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwog
CiAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVlc3RJ
ZCwgY2FjaGVkUmVzb3VyY2UpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggZWM1Yjc3ZTZjMmYxYTZmMTllZjJk
OGU4ZjgyYjVhNjkxNGY5OGM1MC4uYWI4OTY2NzI1ODk4ZjlhNGNkYjU4NTExYjVkY2Y2NTEwZjA2
MTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFp
bihDU1NSdWxlKiBydWxlLCBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4qCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2VVUkwgPSBzdHlsZVNoZWV0LT5maW5hbFVSTCgpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VV
UkwgPSAiIjsKLSAgICAgICAgICAgICAgICAgICAgbWVkaWFBcnJheS0+cHVzaE9iamVjdChidWls
ZE1lZGlhT2JqZWN0KG1lZGlhTGlzdCwgc3R5bGVTaGVldC0+b3duZXJOb2RlKCkgPyBNZWRpYUxp
c3RTb3VyY2VMaW5rZWRTaGVldCA6IE1lZGlhTGlzdFNvdXJjZUlubGluZVNoZWV0LCBzb3VyY2VV
UkwpKTsKKyAgICAgICAgICAgICAgICAgICAgbWVkaWFBcnJheS0+YWRkSXRlbShidWlsZE1lZGlh
T2JqZWN0KG1lZGlhTGlzdCwgc3R5bGVTaGVldC0+b3duZXJOb2RlKCkgPyBNZWRpYUxpc3RTb3Vy
Y2VMaW5rZWRTaGVldCA6IE1lZGlhTGlzdFNvdXJjZUlubGluZVNoZWV0LCBzb3VyY2VVUkwpKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGFyZW50UnVsZSA9IHN0eWxlU2hl
ZXQtPm93bmVyUnVsZSgpOwogICAgICAgICAgICAgICAgIGlmIChwYXJlbnRSdWxlKQpAQCAtNTEw
LDcgKzUxMCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3Bl
Y3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZXZpb3VzUGFyc2VkT2s7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+c2Vjb25kLT5nZXRCb29s
ZWFuKCJwYXJzZWRPayIsICZwcmV2aW91c1BhcnNlZE9rKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT5zZWNvbmQtPmdldEJvb2xlYW4oVHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlBhcnNlZE9rLCAmcHJldmlvdXNQYXJzZWRPayk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcyAmJiAhcHJldmlvdXNQYXJzZWRPaykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtNTE5LDcgKzUxOSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkg
Y29uCiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSW5hY3RpdmF0ZSkgewogICAgICAgICAg
ICAgICAgICAgICBhY3RpdmVJdC0+c2Vjb25kLT5zZXRTdGF0dXMoVHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAgICBhY3Rp
dmVJdC0+c2Vjb25kLT5yZW1vdmUoInNob3J0aGFuZE5hbWUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWN0aXZlSXQtPnNlY29uZC0+cmVtb3ZlKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
OjpTaG9ydGhhbmROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2
aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNTQ2LDcgKzU0Niw3
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxl
OjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHNob3J0aGFuZEVudHJ5ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kRW50cnktPnNldFN0cmluZygibmFtZSIs
IHNob3J0aGFuZCk7CiAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZEVudHJ5LT5zZXRTdHJp
bmcoInZhbHVlIiwgc2hvcnRoYW5kVmFsdWUoc2hvcnRoYW5kKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHNob3J0aGFuZEVudHJpZXMtPnB1c2hPYmplY3Qoc2hvcnRoYW5kRW50cnkucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShzaG9ydGhh
bmRFbnRyeS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApp
bmRleCBiODk1OTM3MmIwZWYzMGJkZmY1YTgwM2VhZjk3MDkwMGY3OTg3NzQxLi5lODg2MWMwZmE1
YjEwNGNiNmQ1MTQzMmQ4YWQxYjhiNWI2MmFlMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBlbnVtIFRva2VuIHsK
ICAgICBPQkpFQ1RfUEFJUl9TRVBBUkFUT1IsCiAgICAgSU5WQUxJRF9UT0tFTiwKIH07Ci0gICAg
CisKIGNvbnN0IGNoYXIqIGNvbnN0IG51bGxTdHJpbmcgPSAibnVsbCI7CiBjb25zdCBjaGFyKiBj
b25zdCB0cnVlU3RyaW5nID0gInRydWUiOwogY29uc3QgY2hhciogY29uc3QgZmFsc2VTdHJpbmcg
PSAiZmFsc2UiOwpAQCAtMjQxLDExICsyNDEsMTEgQEAgVG9rZW4gcGFyc2VUb2tlbihjb25zdCBV
Q2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDaGFyKiogdG9rZW5TdGFydCwK
ICAgICBjYXNlICc4JzoKICAgICBjYXNlICc5JzoKICAgICBjYXNlICctJzoKLSAgICAgICAgaWYg
KHBhcnNlTnVtYmVyVG9rZW4oc3RhcnQsIGVuZCwgdG9rZW5FbmQpKSAKKyAgICAgICAgaWYgKHBh
cnNlTnVtYmVyVG9rZW4oc3RhcnQsIGVuZCwgdG9rZW5FbmQpKQogICAgICAgICAgICAgcmV0dXJu
IE5VTUJFUjsKLSAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgJyInOgotICAgICAgICBpZiAocGFyc2VTdHJpbmdUb2tlbihzdGFydCArIDEsIGVuZCwg
dG9rZW5FbmQpKSAKKyAgICAgICAgaWYgKHBhcnNlU3RyaW5nVG9rZW4oc3RhcnQgKyAxLCBlbmQs
IHRva2VuRW5kKSkKICAgICAgICAgICAgIHJldHVybiBTVFJJTkc7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTY2MSwyMiArNjYxLDI5IEBAIHZvaWQgSW5zcGVjdG9yU3RyaW5nOjp3cml0ZUpT
T04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdAogICAgIGRvdWJsZVF1b3RlU3RyaW5nKG1f
c3RyaW5nVmFsdWUsIG91dHB1dCk7CiB9CiAKLUluc3BlY3Rvck9iamVjdDo6fkluc3BlY3Rvck9i
amVjdCgpCitJbnNwZWN0b3JPYmplY3RCYXNlOjp+SW5zcGVjdG9yT2JqZWN0QmFzZSgpCiB7CiB9
CiAKLWJvb2wgSW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogb3V0cHV0KQorYm9vbCBJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdChSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Piogb3V0cHV0KQogewotICAgICpvdXRwdXQgPSB0aGlzOworICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JPYmplY3QpID09IHNpemVvZihJbnNwZWN0b3JPYmpl
Y3RCYXNlKSwgY2Fubm90X2Nhc3QpOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxJbnNwZWN0
b3JPYmplY3QqPih0aGlzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdDo6YXNPYmplY3QoKQorUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdEJhc2U6OmFzT2JqZWN0KCkKIHsKLSAgICByZXR1
cm4gdGhpczsKKyAgICByZXR1cm4gb3BlbkFjY2Vzc29ycygpOwogfQogCi1ib29sIEluc3BlY3Rv
ck9iamVjdDo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29u
c3QKK0luc3BlY3Rvck9iamVjdCogSW5zcGVjdG9yT2JqZWN0QmFzZTo6b3BlbkFjY2Vzc29ycygp
Cit7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvck9iamVjdCkgPT0gc2l6ZW9m
KEluc3BlY3Rvck9iamVjdEJhc2UpLCBjYW5ub3RfY2FzdCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEluc3BlY3Rvck9iamVjdCo+KHRoaXMpOworfQorCitib29sIEluc3BlY3Rvck9iamVjdEJh
c2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiBvdXRwdXQpIGNvbnN0CiB7
CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChuYW1lKTsKICAgICBpZiAo
IXZhbHVlKQpAQCAtNjg0LDcgKzY5MSw3IEBAIGJvb2wgSW5zcGVjdG9yT2JqZWN0OjpnZXRCb29s
ZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0cHV0KSBjb25zdAogICAgIHJldHVybiB2
YWx1ZS0+YXNCb29sZWFuKG91dHB1dCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yT2JqZWN0OjpnZXRT
dHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcqIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5z
cGVjdG9yT2JqZWN0QmFzZTo6Z2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nKiBv
dXRwdXQpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChu
YW1lKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNjkyLDcgKzY5OSw3IEBAIGJvb2wgSW5zcGVjdG9y
T2JqZWN0OjpnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcqIG91dHB1dCkgY29u
c3QKICAgICByZXR1cm4gdmFsdWUtPmFzU3RyaW5nKG91dHB1dCk7CiB9CiAKLVBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JPYmplY3Q6OmdldE9iamVjdChjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yT2JqZWN0
QmFzZTo6Z2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChuYW1lKTsKICAgICBpZiAoIXZhbHVlKQpA
QCAtNzAwLDcgKzcwNyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JP
YmplY3Q6OmdldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIHZh
bHVlLT5hc09iamVjdCgpOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0
b3JPYmplY3Q6OmdldEFycmF5KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEFycmF5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKIHsKICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9
IGdldChuYW1lKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNzA4LDcgKzcxNSw3IEBAIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3Rvck9iamVjdDo6Z2V0QXJyYXkoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAogICAgIHJldHVybiB2YWx1ZS0+YXNBcnJheSgpOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JPYmplY3Q6OmdldChjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JPYmplY3RCYXNl
OjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIERpY3Rpb25hcnk6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9kYXRhLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IG1fZGF0YS5l
bmQoKSkKQEAgLTcxNiw3ICs3MjMsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNw
ZWN0b3JPYmplY3Q6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT2JqZWN0OjpyZW1vdmUoY29uc3QgU3RyaW5n
JiBuYW1lKQordm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIG1fZGF0YS5yZW1vdmUobmFtZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX29yZGVyLnNpemUoKTsgKytpKSB7CkBAIC03MjcsNyArNzM0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JPYmplY3Q6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQogfQogCi12b2lk
IEluc3BlY3Rvck9iamVjdDo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QK
K3ZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1
dCkgY29uc3QKIHsKICAgICBvdXRwdXQtPmFwcGVuZCgneycpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9vcmRlci5zaXplKCk7ICsraSkgewpAQCAtNzQyLDI5ICs3NDksMzEgQEAgdm9p
ZCBJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0
CiAgICAgb3V0cHV0LT5hcHBlbmQoJ30nKTsKIH0KIAotSW5zcGVjdG9yT2JqZWN0OjpJbnNwZWN0
b3JPYmplY3QoKQorSW5zcGVjdG9yT2JqZWN0QmFzZTo6SW5zcGVjdG9yT2JqZWN0QmFzZSgpCiAg
ICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlT2JqZWN0KQogICAgICwgbV9kYXRhKCkKICAgICAsIG1f
b3JkZXIoKQogewogfQogCi1JbnNwZWN0b3JBcnJheTo6fkluc3BlY3RvckFycmF5KCkKK0luc3Bl
Y3RvckFycmF5QmFzZTo6fkluc3BlY3RvckFycmF5QmFzZSgpCiB7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yQXJyYXk6OmFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KQorYm9vbCBJ
bnNwZWN0b3JBcnJheUJhc2U6OmFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0
KQogewotICAgICpvdXRwdXQgPSB0aGlzOworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNw
ZWN0b3JBcnJheUJhc2UpID09IHNpemVvZihJbnNwZWN0b3JBcnJheSksIGNhbm5vdF9jYXN0KTsK
KyAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPih0aGlzKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQXJy
YXk6OmFzQXJyYXkoKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQXJyYXlC
YXNlOjphc0FycmF5KCkKIHsKLSAgICByZXR1cm4gdGhpczsKKyAgICBDT01QSUxFX0FTU0VSVChz
aXplb2YoSW5zcGVjdG9yQXJyYXlCYXNlKSA9PSBzaXplb2YoSW5zcGVjdG9yQXJyYXkpLCBjYW5u
b3RfY2FzdCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5Kj4odGhpcyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXJyYXk6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRw
dXQpIGNvbnN0Cit2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxk
ZXIqIG91dHB1dCkgY29uc3QKIHsKICAgICBvdXRwdXQtPmFwcGVuZCgnWycpOwogICAgIGZvciAo
VmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Rh
dGEuYmVnaW4oKTsgaXQgIT0gbV9kYXRhLmVuZCgpOyArK2l0KSB7CkBAIC03NzUsMTMgKzc4NCwx
MyBAQCB2b2lkIEluc3BlY3RvckFycmF5Ojp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0
KSBjb25zdAogICAgIG91dHB1dC0+YXBwZW5kKCddJyk7CiB9CiAKLUluc3BlY3RvckFycmF5OjpJ
bnNwZWN0b3JBcnJheSgpCitJbnNwZWN0b3JBcnJheUJhc2U6Okluc3BlY3RvckFycmF5QmFzZSgp
CiAgICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlQXJyYXkpCiAgICAgLCBtX2RhdGEoKQogewogfQog
Ci1QYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JBcnJheTo6Z2V0KHNpemVfdCBp
bmRleCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5QmFzZTo6Z2V0
KHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2RhdGEuc2l6ZSgpKTsKICAg
ICByZXR1cm4gbV9kYXRhW2luZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaAppbmRleCBjOTFhZDgyZTY1YmRjMGYxZjlmZTE3NzQ2MzA1YzlhM2RmZWI5ZTkx
Li5kZTdhNDYzOTU5ODRlZWQ5YWJkNmNhMzJkZDAxOTcxNDBkMjdkY2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck9i
amVjdCA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3RCYXNl
IDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEluc3BlY3RvclZhbHVlPiA+IERpY3Rpb25hcnk7CiAKQEAgLTE2NSwx
NCArMTY1LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERpY3Rpb25hcnk6Oml0ZXJhdG9yIGl0
ZXJhdG9yOwogICAgIHR5cGVkZWYgRGljdGlvbmFyeTo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRl
cmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3Rvck9iamVjdCgpKTsK
LSAgICB9Ci0gICAgfkluc3BlY3Rvck9iamVjdCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGFzT2JqZWN0KCk7CisgICAgSW5zcGVjdG9yT2JqZWN0KiBvcGVuQWNj
ZXNzb3JzKCk7CisKK3Byb3RlY3RlZDoKKyAgICB+SW5zcGVjdG9yT2JqZWN0QmFzZSgpOwogCiAg
ICAgdmlydHVhbCBib29sIGFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQp
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGFzT2JqZWN0KCk7CiAK
ICAgICB2b2lkIHNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKTsKICAgICB2b2lk
IHNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSk7CkBAIC0yMDgsMjYgKzIwNyw1
OSBAQCBwdWJsaWM6CiAgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgp
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JPYmplY3QoKTsKKyAgICBJbnNwZWN0b3JP
YmplY3RCYXNlKCk7CiAKIHByaXZhdGU6CiAgICAgRGljdGlvbmFyeSBtX2RhdGE7CiAgICAgVmVj
dG9yPFN0cmluZz4gbV9vcmRlcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckFycmF5IDogcHVibGlj
IEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdCA6IHB1YmxpYyBJbnNwZWN0
b3JPYmplY3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3Bl
Y3Rvck9iamVjdCgpKTsKKyAgICB9CisKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjph
c09iamVjdDsKKworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW47Cisg
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyOworICAgIHVzaW5nIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OnNldFN0cmluZzsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNl
OjpzZXRWYWx1ZTsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRPYmplY3Q7Cisg
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXk7CisKKyAgICB1c2luZyBJbnNw
ZWN0b3JPYmplY3RCYXNlOjpmaW5kOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6Omdl
dEJvb2xlYW47CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0TnVtYmVyOworICAg
IHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldFN0cmluZzsKKyAgICB1c2luZyBJbnNwZWN0
b3JPYmplY3RCYXNlOjpnZXRPYmplY3Q7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6
Z2V0QXJyYXk7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0OworCisgICAgdXNp
bmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6cmVtb3ZlOworCisgICAgdXNpbmcgSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6YmVnaW47CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6ZW5kOworCisg
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2l6ZTsKK307CisKKworY2xhc3MgSW5zcGVj
dG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yOwog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPjo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9y
QXJyYXkoKSk7Ci0gICAgfQotICAgIH5JbnNwZWN0b3JBcnJheSgpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNBcnJheSgpOworCisgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNpemUoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgfklu
c3BlY3RvckFycmF5QmFzZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPElu
c3BlY3RvckFycmF5Piogb3V0cHV0KTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGFzQXJyYXkoKTsKIAogICAgIHZvaWQgcHVzaEJvb2xlYW4oYm9vbCk7CiAgICAgdm9p
ZCBwdXNoSW50KGludCk7CkBAIC0yMzYsNyArMjY4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcHVz
aFZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KTsKICAgICB2b2lkIHB1c2hPYmplY3Qo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKICAgICB2b2lkIHB1c2hBcnJheShQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5Pik7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnNpemUoKTsgfQogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZ2V0
KHNpemVfdCBpbmRleCk7CiAKQEAgLTI0OCw5MSArMjc5LDExNSBAQCBwdWJsaWM6CiAgICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBJbnNwZWN0b3JBcnJheSgpOworICAgIEluc3BlY3RvckFycmF5QmFzZSgpOwog
CiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+ID4gbV9kYXRhOwog
fTsKIAotaW5saW5lIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgSW5zcGVjdG9yT2JqZWN0Ojpm
aW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKK2NsYXNzIEluc3BlY3RvckFycmF5IDogcHVibGljIElu
c3BlY3RvckFycmF5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
c3BlY3RvckFycmF5KCkpOworICAgIH0KKworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6
YXNBcnJheTsKKworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEJvb2xlYW47Cisg
ICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50OworICAgIHVzaW5nIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaE51bWJlcjsKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1
c2hTdHJpbmc7CisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoVmFsdWU7CisgICAg
dXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoT2JqZWN0OworICAgIHVzaW5nIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaEFycmF5OworCisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpn
ZXQ7CisKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OmJlZ2luOworICAgIHVzaW5nIElu
c3BlY3RvckFycmF5QmFzZTo6ZW5kOworfTsKKworCitpbmxpbmUgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6aXRlcmF0b3IgSW5zcGVjdG9yT2JqZWN0QmFzZTo6ZmluZChjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgcmV0dXJuIG1fZGF0YS5maW5kKG5hbWUpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9y
T2JqZWN0Ojpjb25zdF9pdGVyYXRvciBJbnNwZWN0b3JPYmplY3Q6OmZpbmQoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAoraW5saW5lIEluc3BlY3Rvck9iamVjdEJhc2U6OmNvbnN0X2l0ZXJhdG9y
IEluc3BlY3Rvck9iamVjdEJhc2U6OmZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewog
ICAgIHJldHVybiBtX2RhdGEuZmluZChuYW1lKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
T2JqZWN0OjpzZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCB2YWx1ZSkKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIHZhbHVlKQogewogICAgIHNldFZhbHVlKG5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6
OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldE51
bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OnNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSB2YWx1
ZSkKIHsKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFs
dWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRTdHJpbmcoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
T2JqZWN0QmFzZTo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1
ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAg
aWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkpCiAgICAgICAgIG1fb3JkZXIu
YXBwZW5kKG5hbWUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldE9iamVj
dChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkK
K2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE9iamVjdChjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAg
ICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yT2Jq
ZWN0OjpzZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXkoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQodmFsdWUpOwogICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5pc05ld0Vu
dHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9yQXJyYXk6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JBcnJheUJhc2U6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpCiB7CiAgICAgbV9kYXRhLmFwcGVu
ZChJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9yQXJyYXk6OnB1c2hJbnQoaW50IHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
QXJyYXlCYXNlOjpwdXNoSW50KGludCB2YWx1ZSkKIHsKICAgICBtX2RhdGEuYXBwZW5kKEluc3Bl
Y3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JBcnJheTo6cHVzaE51bWJlcihkb3VibGUgdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hOdW1iZXIoZG91YmxlIHZhbHVlKQogewogICAgIG1fZGF0YS5hcHBlbmQo
SW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3RvckFycmF5OjpwdXNoU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBtX2RhdGEuYXBwZW5kKEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5OjpwdXNoVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hWYWx1
ZShQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUp
OwogICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JB
cnJheTo6cHVzaE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3QoUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgbV9kYXRhLmFwcGVu
ZCh2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5OjpwdXNoQXJyYXkoUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJh
eUJhc2U6OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQodmFsdWUpOwogICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCA2ZmJh
ZWEyMWE4Mjg5MzFjY2QxMmI5MDk2YjIyYzVhZmQ5MzZhNmExLi4xNTJiZTNhZWZmMWIyMDcyNmYx
YmIxZDM2MTE4YTRlYWEzY2VhNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVj
b3JkKGRvdWJsZSBzdAogICAgIGlmIChtYXhDYWxsU3RhY2tEZXB0aCkgewogICAgICAgICBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKG1h
eENhbGxTdGFja0RlcHRoLCB0cnVlKTsKICAgICAgICAgaWYgKHN0YWNrVHJhY2UgJiYgc3RhY2tU
cmFjZS0+c2l6ZSgpKQotICAgICAgICAgICAgcmVjb3JkLT5zZXRBcnJheSgic3RhY2tUcmFjZSIs
IHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CisgICAgICAgICAgICByZWNvcmQt
PnNldFZhbHVlKCJzdGFja1RyYWNlIiwgc3RhY2tUcmFjZS0+YnVpbGRJbnNwZWN0b3JBcnJheSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>